Freeciv-3.2
|
#include "fcintl.h"
#include "log.h"
#include "rand.h"
#include "support.h"
#include "map.h"
#include "packets.h"
#include "terrain.h"
#include "tile.h"
#include "mapgen_utils.h"
Go to the source code of this file.
Macros | |
#define | pmap(_tile) (placed_map[tile_index(_tile)]) |
Variables | |
static bool * | placed_map |
static Continent_id * | lake_surrounders = NULL |
static int * | continent_sizes = NULL |
static int * | ocean_sizes = NULL |
#define pmap | ( | _tile | ) | (placed_map[tile_index(_tile)]) |
Definition at line 66 of file mapgen_utils.c.
void adjust_int_map_filtered | ( | int * | int_map, |
int | int_map_min, | ||
int | int_map_max, | ||
void * | data, | ||
bool(*)(const struct tile *ptile, const void *data) | filter | ||
) |
Change the values of the integer map, so that they contain ranking of each tile scaled to [int_map_min .. int_map_max]. E.g. the lowest 20% of tiles will have values lower than int_map_min + 0.2 * (int_map_max - int_map_min).
If filter is non-null then it only tiles for which filter(ptile, data) is TRUE will be considered.
Definition at line 123 of file mapgen_utils.c.
Referenced by create_start_positions().
Number this tile and nearby tiles with the specified continent number 'nr'. Due to the number of recursion for large maps a non-recursive algorithm is utilised.
is_land tells us whether we are assigning continent numbers or ocean numbers.
Definition at line 290 of file mapgen_utils.c.
Referenced by assign_continent_numbers().
Assigns continent and ocean numbers to all tiles, and set map.num_continents and map.num_oceans. Recalculates continent and ocean sizes, and lake_surrounders[] arrays.
Continents have numbers 1 to map.num_continents inclusive. Oceans have (negative) numbers -1 to -map.num_oceans inclusive.
Definition at line 452 of file mapgen_utils.c.
Referenced by api_edit_change_terrain(), check_edited_tile_terrains(), check_terrain_change(), make_polar_land(), map_fractal_generate(), sg_load_map_tiles(), and sg_load_map_tiles().
Create a clean pmap
Definition at line 48 of file mapgen_utils.c.
Referenced by initworld(), make_huts(), make_land(), and make_rivers().
Free the pmap
Definition at line 58 of file mapgen_utils.c.
Referenced by make_huts(), make_land(), make_rivers(), mapgenerator2(), mapgenerator3(), and mapgenerator4().
Free resources allocated by the generator.
Definition at line 662 of file mapgen_utils.c.
Referenced by server_quit().
int get_continent_size | ( | Continent_id | id | ) |
Return size in tiles of the given continent (not ocean)
Definition at line 428 of file mapgen_utils.c.
Referenced by calculate_want_for_paratrooper(), initialize_isle_data(), and is_valid_start_pos().
int get_lake_surrounders | ( | Continent_id | cont | ) |
Get continent surrounding lake, or -1 if there is multiple continents.
Definition at line 420 of file mapgen_utils.c.
Referenced by is_claimable_ocean().
int get_ocean_size | ( | Continent_id | id | ) |
Return size in tiles of the given ocean. You should use positive ocean number.
Definition at line 438 of file mapgen_utils.c.
Referenced by is_claimable_ocean().
Is given native position normal position
Definition at line 179 of file mapgen_utils.c.
Mark tile terrain as placed.
Definition at line 79 of file mapgen_utils.c.
Referenced by fill_island(), initworld(), make_fracture_relief(), make_plain(), make_relief(), make_rivers(), place_terrain(), set_all_ocean_tiles_placed(), and set_placed_near_pos().
Mark tile terrain as not placed.
Definition at line 87 of file mapgen_utils.c.
Referenced by place_island().
Determines what is the most popular ocean type around (need 2/3 of the adjacent tiles).
Definition at line 586 of file mapgen_utils.c.
Referenced by smooth_water_depth().
Return most shallow ocean terrain type. Prefers not to return freshwater terrain, and will ignore 'frozen' rather than do so.
Definition at line 500 of file mapgen_utils.c.
Referenced by check_terrain_change(), and remove_tiny_islands().
Checks if land has not yet been placed on pmap at (x, y)
Definition at line 71 of file mapgen_utils.c.
Referenced by condition_filter(), fill_island(), make_fracture_relief(), make_plains(), make_relief(), make_terrains(), and place_terrain().
Picks an ocean terrain to match the given depth. Only considers terrains with/without Frozen flag depending on 'frozen'. Return NULL when there is no available ocean.
Definition at line 546 of file mapgen_utils.c.
Referenced by fair_map_island_new(), initworld(), make_land(), make_polar(), map_generate_fair_islands(), and smooth_water_depth().
struct extra_type * pick_resource | ( | const struct terrain * | pterrain | ) |
Pick a random resource to put on a tile of the given terrain type. May return NULL when there is no eligible resource.
Definition at line 800 of file mapgen_utils.c.
Referenced by add_resources(), and fair_map_make_resources().
struct terrain * pick_terrain | ( | enum mapgen_terrain_property | target, |
enum mapgen_terrain_property | prefer, | ||
enum mapgen_terrain_property | avoid | ||
) |
Pick a terrain based on the target property and a property to avoid.
If the target property is given, then all terrains with that property will be considered and one will be picked at random based on the amount of the property each terrain has. If no target property is given all terrains will be assigned equal likelihood.
If the preferred property is given, only terrains with (some of) that property will be chosen.
If the avoid property is given, then any terrain with (any of) that property will be avoided.
This function must always return a valid terrain.
Definition at line 725 of file mapgen_utils.c.
Referenced by fair_map_island_new(), fill_island(), make_fracture_relief(), make_plain(), make_polar(), make_relief(), make_terrains(), and pick_terrain().
struct terrain * pick_terrain_by_flag | ( | enum terrain_flag_id | flag | ) |
Return a random terrain that has the specified flag. Returns T_UNKNOWN when there is no matching terrain.
Definition at line 682 of file mapgen_utils.c.
Referenced by fair_map_island_new(), and make_rivers().
Return TRUE if initialized
Definition at line 40 of file mapgen_utils.c.
Referenced by create_placed_map(), destroy_placed_map(), and mapgenerator2().
Determines the minimal distance to the land.
Definition at line 571 of file mapgen_utils.c.
Referenced by smooth_water_depth().
Calculate lake_surrounders[] array
Definition at line 251 of file mapgen_utils.c.
Referenced by assign_continent_numbers().
Regenerate all oceanic tiles for small water bodies as lakes. Assumes assign_continent_numbers() and recalculate_lake_surrounders() have already been done! FIXME: insufficiently generalized, use terrain property.
Definition at line 350 of file mapgen_utils.c.
Referenced by map_fractal_generate().
Set all oceanics tiles in placed_map
Definition at line 95 of file mapgen_utils.c.
Referenced by make_land(), and make_rivers().
Set all nearby tiles as placed on pmap.
Definition at line 107 of file mapgen_utils.c.
Referenced by make_huts().
Apply a Gaussian diffusion filter on the map. The size of the map is MAP_INDEX_SIZE and the map is indexed by native_pos_to_index function. If zeroes_at_edges is set, any unreal position on diffusion has 0 value if zeroes_at_edges in unset the unreal position are not counted.
Definition at line 191 of file mapgen_utils.c.
Referenced by create_start_positions(), and make_random_hmap().
Makes a simple depth map for all ocean tiles based on their proximity to any land tiles and reassignes ocean terrain types based on their MG_OCEAN_DEPTH property values.
Definition at line 612 of file mapgen_utils.c.
Referenced by map_fractal_generate().
Definition at line 245 of file mapgen_utils.c.
Referenced by assign_continent_flood(), assign_continent_numbers(), generator_free(), and get_continent_size().
|
static |
Definition at line 244 of file mapgen_utils.c.
Referenced by generator_free(), get_lake_surrounders(), recalculate_lake_surrounders(), and regenerate_lakes().
Definition at line 246 of file mapgen_utils.c.
Referenced by assign_continent_flood(), assign_continent_numbers(), generator_free(), get_ocean_size(), and regenerate_lakes().
|
static |
Definition at line 35 of file mapgen_utils.c.
Referenced by create_placed_map(), destroy_placed_map(), and placed_map_is_initialized().