#include <default_map_generator_job.hpp>
Public Types | |
typedef std::vector< std::vector< int > > | height_map |
typedef t_translation::ter_map | terrain_map |
Public Member Functions | |
default_map_generator_job () | |
default_map_generator_job (uint32_t seed) | |
std::string | default_generate_map (generator_data data, std::map< map_location, std::string > *labels, const config &cfg) |
Generate the map. More... | |
height_map | generate_height_map (size_t width, size_t height, size_t iterations, size_t hill_size, size_t island_size, size_t island_off_center) |
Generate a height-map. More... | |
height_map | generate_height_map (size_t width, size_t height, size_t iterations, size_t hill_size, size_t island_size, size_t center_x, size_t center_y) |
Private Member Functions | |
bool | generate_river_internal (const height_map &heights, terrain_map &terrain, int x, int y, std::vector< map_location > &river, std::set< map_location > &seen_locations, int river_uphill) |
River generation. More... | |
std::vector< map_location > | generate_river (const height_map &heights, terrain_map &terrain, int x, int y, int river_uphill) |
bool | generate_lake (t_translation::ter_map &terrain, int x, int y, int lake_fall_off, std::set< map_location > &locs_touched) |
Generate a lake. More... | |
map_location | random_point_at_side (std::size_t width, std::size_t height) |
Returns a random tile at one of the borders of a map that is of the given dimensions. More... | |
Private Attributes | |
std::mt19937 | rng_ |
const game_config_view & | game_config_ |
Definition at line 29 of file default_map_generator_job.hpp.
typedef std::vector<std::vector<int> > default_map_generator_job::height_map |
Definition at line 38 of file default_map_generator_job.hpp.
Definition at line 39 of file default_map_generator_job.hpp.
default_map_generator_job::default_map_generator_job | ( | ) |
Definition at line 231 of file default_map_generator_job.cpp.
default_map_generator_job::default_map_generator_job | ( | uint32_t | seed | ) |
Definition at line 237 of file default_map_generator_job.cpp.
std::string default_map_generator_job::default_generate_map | ( | generator_data | data, |
std::map< map_location, std::string > * | labels, | ||
const config & | cfg | ||
) |
Generate the map.
Definition at line 688 of file default_map_generator_job.cpp.
References _(), pathfind::a_star_search(), t_translation::ALL_FORESTS, t_translation::ALL_MOUNTAINS, t_translation::ALL_SWAMPS, config::append_attributes(), filesystem::base_name(), c, config::child_range(), data, dst, config::empty(), ERR_NG, utils::find(), config::find_child(), config::find_mandatory_child(), flood_name(), t_translation::FOREST, game_config_, lg::general(), generate_height_map(), generate_lake(), generate_river(), get_adjacent_tiles(), config::get_old_attribute(), t_translation::GRASS_LAND, h, config::has_attribute(), config::has_child(), t_translation::HILL, t_translation::HUMAN_CASTLE, t_translation::HUMAN_KEEP, i, is_even(), editor::is_valid_terrain(), loc, LOG_NG, log_scope, game_config_view::mandatory_child(), config::mandatory_child(), t_translation::MOUNTAIN, n, config::optional_child(), output_map(), place_village(), random_point_at_side(), rank_castle_location(), t_translation::read_list(), t_translation::read_terrain_code(), rng_, utils::split(), src, pathfind::plain_route::steps, t_translation::terrain_matches(), VALIDATE, t_translation::write_terrain_code(), map_location::x, and map_location::y.
Referenced by default_map_generator::generate_map(), and intf_default_generate().
height_map default_map_generator_job::generate_height_map | ( | size_t | width, |
size_t | height, | ||
size_t | iterations, | ||
size_t | hill_size, | ||
size_t | island_size, | ||
size_t | center_x, | ||
size_t | center_y | ||
) |
height_map default_map_generator_job::generate_height_map | ( | size_t | width, |
size_t | height, | ||
size_t | iterations, | ||
size_t | hill_size, | ||
size_t | island_size, | ||
size_t | island_off_center | ||
) |
Generate a height-map.
Basically we generate a lot of hills, each hill being centered at a certain point, with a certain radius - being a half sphere. Hills are combined additively to form a bumpy surface. The size of each hill varies randomly from 1-hill_size. We generate 'iterations' hills in total. The range of heights is normalized to 0-1000. 'island_size' controls whether or not the map should tend toward an island shape, and if so, how large the island should be. Hills with centers that are more than 'island_size' away from the center of the map will be inverted (i.e. be valleys). 'island_size' as 0 indicates no island.
Definition at line 256 of file default_map_generator_job.cpp.
Referenced by default_generate_map(), and intf_default_generate_height_map().
|
private |
Generate a lake.
It will create water at (x,y), and then have 'lake_fall_off' % chance to make another water tile in each of the directions n,s,e,w. In each of the directions it does make another water tile, it will have 'lake_fall_off'/2 % chance to make another water tile in each of the directions. This will continue recursively.
Definition at line 392 of file default_map_generator_job.cpp.
References t_translation::ter_map::h, rng_, t_translation::SHALLOW_WATER, and t_translation::ter_map::w.
Referenced by default_generate_map().
|
private |
Definition at line 491 of file default_map_generator_job.cpp.
References generate_river_internal().
Referenced by default_generate_map().
|
private |
River generation.
Rivers have a source, and then keep on flowing until they meet another body of water, which they flow into, or until they reach the edge of the map. Rivers will always flow downhill, except that they can flow a maximum of 'river_uphill' uphill. This is to represent the water eroding the higher ground lower.
Every possible path for a river will be attempted, in random order, and the first river path that can be found that makes the river flow into another body of water or off the map will be used.
If no path can be found, then the river's generation will be aborted, and false will be returned. true is returned if the river is generated successfully.
Definition at line 439 of file default_map_generator_job.cpp.
References t_translation::DEEP_WATER, get_adjacent_tiles(), i, loc, LOG_NG, rng_, t_translation::SHALLOW_WATER, gui2::tip_of_the_day::shuffle(), map_location::x, and map_location::y.
Referenced by generate_river().
|
private |
Returns a random tile at one of the borders of a map that is of the given dimensions.
Definition at line 507 of file default_map_generator_job.cpp.
References rng_.
Referenced by default_generate_map().
|
private |
Definition at line 62 of file default_map_generator_job.hpp.
Referenced by default_generate_map().
|
private |
Definition at line 61 of file default_map_generator_job.hpp.
Referenced by default_generate_map(), generate_height_map(), generate_lake(), generate_river_internal(), and random_point_at_side().