mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-01-18 21:18:10 +00:00
Fix: for arctic and tropic, make sure we have at least a few hills (#8513)
Without hills, not all industries can be generated, which means that with a default configuration you get errors. This is far from optimal, of course. This now forces that there is at least some hills, even when you are using very-flat. This is a stopgap solution, but a proper solution requires a full rewrite of the terrain generator, which is not a 2 minute (or even 2 week) job. To make sure flat is still flat-ish, reduce the default snow-line-height to 10, making it look a lot better on smaller maps. This is a compromise between being able to have flat maps and still having all industries on arctic.
This commit is contained in:
parent
aac8c28d73
commit
7463c46a54
22
src/tgp.cpp
22
src/tgp.cpp
@ -234,7 +234,27 @@ static height_t TGPGetMaxHeight()
|
||||
{ 12, 19, 25, 31, 67, 75, 87 }, ///< Alpinist
|
||||
};
|
||||
|
||||
int max_height_from_table = max_height[_settings_game.difficulty.terrain_type][std::min(MapLogX(), MapLogY()) - MIN_MAP_SIZE_BITS];
|
||||
int map_size_bucket = std::min(MapLogX(), MapLogY()) - MIN_MAP_SIZE_BITS;
|
||||
int max_height_from_table = max_height[_settings_game.difficulty.terrain_type][map_size_bucket];
|
||||
|
||||
/* Arctic needs snow to have all industries, so make sure we allow TGP to generate this high. */
|
||||
if (_settings_game.game_creation.landscape == LT_ARCTIC) {
|
||||
max_height_from_table += _settings_newgame.game_creation.snow_line_height;
|
||||
/* Make flat a bit more flat by removing "very flat" from it, to somewhat compensate for the increase we just did. */
|
||||
if (_settings_game.difficulty.terrain_type > 0) {
|
||||
max_height_from_table -= max_height[_settings_game.difficulty.terrain_type - 1][map_size_bucket];
|
||||
}
|
||||
}
|
||||
/* Tropic needs tropical forest to have all industries, so make sure we allow TGP to generate this high.
|
||||
* Tropic forest always starts at 1/4th of the max height. */
|
||||
if (_settings_game.game_creation.landscape == LT_TROPIC) {
|
||||
max_height_from_table += CeilDiv(_settings_game.construction.max_heightlevel, 4);
|
||||
/* Make flat a bit more flat by removing "very flat" from it, to somewhat compensate for the increase we just did. */
|
||||
if (_settings_game.difficulty.terrain_type > 0) {
|
||||
max_height_from_table -= max_height[_settings_game.difficulty.terrain_type - 1][map_size_bucket];
|
||||
}
|
||||
}
|
||||
|
||||
return I2H(std::min<uint>(max_height_from_table, _settings_game.construction.max_heightlevel));
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ static const uint DEF_MAX_HEIGHTLEVEL = 30; ///< Default maxi
|
||||
static const uint MAX_MAX_HEIGHTLEVEL = MAX_TILE_HEIGHT; ///< Upper bound of maximum allowed heightlevel (in the construction settings)
|
||||
|
||||
static const uint MIN_SNOWLINE_HEIGHT = 2; ///< Minimum snowline height
|
||||
static const uint DEF_SNOWLINE_HEIGHT = 15; ///< Default snowline height
|
||||
static const uint DEF_SNOWLINE_HEIGHT = 10; ///< Default snowline height
|
||||
static const uint MAX_SNOWLINE_HEIGHT = (MAX_TILE_HEIGHT - 2); ///< Maximum allowed snowline height
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user