mirror of https://github.com/OpenTTD/OpenTTD
Merge d47951a0a6
into baced00e9f
commit
d6083d72ed
|
@ -49,6 +49,8 @@ static const uint CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY = 4; ///< Value for custom
|
|||
static const uint CUSTOM_SEA_LEVEL_MIN_PERCENTAGE = 1; ///< Minimum percentage a user can specify for custom sea level.
|
||||
static const uint CUSTOM_SEA_LEVEL_MAX_PERCENTAGE = 90; ///< Maximum percentage a user can specify for custom sea level.
|
||||
|
||||
static const uint CUSTOM_SNOW_LEVEL_NUMBER = 5; ///< Value for custom snow level in game creation settings
|
||||
|
||||
static constexpr uint MAP_HEIGHT_LIMIT_ORIGINAL = 15; ///< Original map height limit.
|
||||
|
||||
static const uint MAP_HEIGHT_LIMIT_AUTO_MINIMUM = 30; ///< When map height limit is auto, make this the lowest possible map height limit.
|
||||
|
|
|
@ -124,7 +124,7 @@ static constexpr NWidgetPart _nested_generate_landscape_widgets[] = {
|
|||
/* Labels on the left side (global column 3). */
|
||||
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL),
|
||||
NWidget(WWT_TEXT, INVALID_COLOUR), SetStringTip(STR_MAPGEN_SNOW_COVERAGE, STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1),
|
||||
NWidget(WWT_TEXT, INVALID_COLOUR), SetStringTip(STR_MAPGEN_SNOW_LINE_LEVEL, STR_CONFIG_SETTING_SNOW_LINE_LEVEL_HELPTEXT), SetFill(1, 1),
|
||||
NWidget(WWT_TEXT, INVALID_COLOUR), SetStringTip(STR_MAPGEN_DESERT_COVERAGE, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1),
|
||||
NWidget(NWID_SPACER), SetFill(1, 1),
|
||||
EndContainer(),
|
||||
|
@ -139,11 +139,9 @@ static constexpr NWidgetPart _nested_generate_landscape_widgets[] = {
|
|||
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
|
||||
/* Climate selector. */
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR),
|
||||
/* Snow coverage. */
|
||||
/* Snow line level. */
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetSpriteTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN_TOOLTIP), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetToolTip(STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1),
|
||||
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetSpriteTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP_TOOLTIP), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_SNOW_LINE_LEVEL_PULLDOWN), SetToolTip(STR_CONFIG_SETTING_SNOW_LINE_LEVEL_HELPTEXT), SetFill(1, 1),
|
||||
EndContainer(),
|
||||
/* Desert coverage. */
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
|
@ -259,7 +257,7 @@ static constexpr NWidgetPart _nested_heightmap_load_widgets[] = {
|
|||
/* Right half labels (global column 3) */
|
||||
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL),
|
||||
NWidget(WWT_TEXT, INVALID_COLOUR), SetStringTip(STR_MAPGEN_SNOW_COVERAGE, STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1),
|
||||
NWidget(WWT_TEXT, INVALID_COLOUR), SetStringTip(STR_MAPGEN_SNOW_LINE_LEVEL, STR_CONFIG_SETTING_SNOW_LINE_LEVEL_HELPTEXT), SetFill(1, 1),
|
||||
NWidget(WWT_TEXT, INVALID_COLOUR), SetStringTip(STR_MAPGEN_DESERT_COVERAGE, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1),
|
||||
NWidget(NWID_SPACER), SetFill(1, 1),
|
||||
EndContainer(),
|
||||
|
@ -273,11 +271,9 @@ static constexpr NWidgetPart _nested_heightmap_load_widgets[] = {
|
|||
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
|
||||
/* Climate selector. */
|
||||
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR),
|
||||
/* Snow coverage. */
|
||||
/* Snow line level. */
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetSpriteTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN_TOOLTIP), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetToolTip(STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1),
|
||||
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetSpriteTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP_TOOLTIP), SetFill(0, 1), SetAspect(WidgetDimensions::ASPECT_UP_DOWN_BUTTON),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_SNOW_LINE_LEVEL_PULLDOWN), SetToolTip(STR_CONFIG_SETTING_SNOW_LINE_LEVEL_HELPTEXT), SetFill(1, 1),
|
||||
EndContainer(),
|
||||
/* Desert coverage. */
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
|
@ -384,6 +380,7 @@ static const StringID _rotation[] = {STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CO
|
|||
static const StringID _num_towns[] = {STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, STR_NUM_CUSTOM};
|
||||
static const StringID _num_inds[] = {STR_FUNDING_ONLY, STR_MINIMAL, STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, STR_NUM_CUSTOM};
|
||||
static const StringID _variety[] = {STR_VARIETY_NONE, STR_VARIETY_VERY_LOW, STR_VARIETY_LOW, STR_VARIETY_MEDIUM, STR_VARIETY_HIGH, STR_VARIETY_VERY_HIGH};
|
||||
static const StringID _snow_levels[] = {STR_SNOW_LINE_LEVEL_VERY_LOW, STR_SNOW_LINE_LEVEL_LOW, STR_SNOW_LINE_LEVEL_MEDIUM, STR_SNOW_LINE_LEVEL_HIGH, STR_SNOW_LINE_LEVEL_VERY_HIGH, STR_SNOW_LINE_LEVEL_CUSTOM};
|
||||
|
||||
static_assert(std::size(_num_inds) == ID_END);
|
||||
|
||||
|
@ -426,7 +423,12 @@ struct GenerateLandscapeWindow : public Window {
|
|||
case WID_GL_MAPSIZE_X_PULLDOWN: return GetString(STR_JUST_INT, 1LL << _settings_newgame.game_creation.map_x);
|
||||
case WID_GL_MAPSIZE_Y_PULLDOWN: return GetString(STR_JUST_INT, 1LL << _settings_newgame.game_creation.map_y);
|
||||
case WID_GL_HEIGHTMAP_HEIGHT_TEXT: return GetString(STR_JUST_INT, _settings_newgame.game_creation.heightmap_height);
|
||||
case WID_GL_SNOW_COVERAGE_TEXT: return GetString(STR_MAPGEN_SNOW_COVERAGE_TEXT, _settings_newgame.game_creation.snow_coverage);
|
||||
case WID_GL_SNOW_LINE_LEVEL_PULLDOWN:
|
||||
if (_settings_newgame.game_creation.snow_line_level == CUSTOM_SNOW_LEVEL_NUMBER) {
|
||||
return GetString(STR_SNOW_LINE_LEVEL_CUSTOM_NUMBER, _settings_newgame.game_creation.snow_line_height);
|
||||
}
|
||||
return GetString(_snow_levels[_settings_newgame.game_creation.snow_line_level]);
|
||||
|
||||
case WID_GL_DESERT_COVERAGE_TEXT: return GetString(STR_MAPGEN_DESERT_COVERAGE_TEXT, _settings_newgame.game_creation.desert_coverage);
|
||||
|
||||
case WID_GL_TOWN_PULLDOWN:
|
||||
|
@ -523,7 +525,7 @@ struct GenerateLandscapeWindow : public Window {
|
|||
}
|
||||
|
||||
/* Disable snowline if not arctic */
|
||||
this->SetWidgetDisabledState(WID_GL_SNOW_COVERAGE_TEXT, _settings_newgame.game_creation.landscape != LandscapeType::Arctic);
|
||||
this->SetWidgetDisabledState(WID_GL_SNOW_LINE_LEVEL_PULLDOWN, _settings_newgame.game_creation.landscape != LandscapeType::Arctic);
|
||||
/* Disable desert if not tropic */
|
||||
this->SetWidgetDisabledState(WID_GL_DESERT_COVERAGE_TEXT, _settings_newgame.game_creation.landscape != LandscapeType::Tropic);
|
||||
|
||||
|
@ -545,8 +547,6 @@ struct GenerateLandscapeWindow : public Window {
|
|||
}
|
||||
this->SetWidgetDisabledState(WID_GL_START_DATE_DOWN, _settings_newgame.game_creation.starting_year <= CalendarTime::MIN_YEAR);
|
||||
this->SetWidgetDisabledState(WID_GL_START_DATE_UP, _settings_newgame.game_creation.starting_year >= CalendarTime::MAX_YEAR);
|
||||
this->SetWidgetDisabledState(WID_GL_SNOW_COVERAGE_DOWN, _settings_newgame.game_creation.snow_coverage <= 0 || _settings_newgame.game_creation.landscape != LandscapeType::Arctic);
|
||||
this->SetWidgetDisabledState(WID_GL_SNOW_COVERAGE_UP, _settings_newgame.game_creation.snow_coverage >= 100 || _settings_newgame.game_creation.landscape != LandscapeType::Arctic);
|
||||
this->SetWidgetDisabledState(WID_GL_DESERT_COVERAGE_DOWN, _settings_newgame.game_creation.desert_coverage <= 0 || _settings_newgame.game_creation.landscape != LandscapeType::Tropic);
|
||||
this->SetWidgetDisabledState(WID_GL_DESERT_COVERAGE_UP, _settings_newgame.game_creation.desert_coverage >= 100 || _settings_newgame.game_creation.landscape != LandscapeType::Tropic);
|
||||
|
||||
|
@ -586,8 +586,8 @@ struct GenerateLandscapeWindow : public Window {
|
|||
d = GetStringBoundingBox(GetString(STR_JUST_INT, GetParamMaxValue(MAX_MAP_SIZE)));
|
||||
break;
|
||||
|
||||
case WID_GL_SNOW_COVERAGE_TEXT:
|
||||
d = GetStringBoundingBox(GetString(STR_MAPGEN_SNOW_COVERAGE_TEXT, GetParamMaxValue(MAX_TILE_HEIGHT)));
|
||||
case WID_GL_SNOW_LINE_LEVEL_PULLDOWN:
|
||||
d = GetStringBoundingBox(GetString(STR_JUST_INT, GetParamMaxValue(MAX_SNOWLINE_HEIGHT)));
|
||||
break;
|
||||
|
||||
case WID_GL_DESERT_COVERAGE_TEXT:
|
||||
|
@ -738,21 +738,8 @@ struct GenerateLandscapeWindow : public Window {
|
|||
ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.starting_year), STR_MAPGEN_START_DATE_QUERY_CAPT, 8, this, CS_NUMERAL, QueryStringFlag::EnableDefault);
|
||||
break;
|
||||
|
||||
case WID_GL_SNOW_COVERAGE_DOWN:
|
||||
case WID_GL_SNOW_COVERAGE_UP: // Snow coverage buttons
|
||||
/* Don't allow too fast scrolling */
|
||||
if (!this->flags.Test(WindowFlag::Timeout) || this->timeout_timer <= 1) {
|
||||
this->HandleButtonClick(widget);
|
||||
|
||||
_settings_newgame.game_creation.snow_coverage = Clamp(_settings_newgame.game_creation.snow_coverage + (widget - WID_GL_SNOW_COVERAGE_TEXT) * 10, 0, 100);
|
||||
this->InvalidateData();
|
||||
}
|
||||
_left_button_clicked = false;
|
||||
break;
|
||||
|
||||
case WID_GL_SNOW_COVERAGE_TEXT: // Snow coverage text
|
||||
this->widget_id = WID_GL_SNOW_COVERAGE_TEXT;
|
||||
ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.snow_coverage), STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT, 4, this, CS_NUMERAL, QueryStringFlag::EnableDefault);
|
||||
case WID_GL_SNOW_LINE_LEVEL_PULLDOWN: // Snow line level
|
||||
ShowDropDownMenu(this, _snow_levels, _settings_newgame.game_creation.snow_line_level, WID_GL_SNOW_LINE_LEVEL_PULLDOWN, 0, 0);
|
||||
break;
|
||||
|
||||
case WID_GL_DESERT_COVERAGE_DOWN:
|
||||
|
@ -846,9 +833,9 @@ struct GenerateLandscapeWindow : public Window {
|
|||
void OnTimeout() override
|
||||
{
|
||||
if (mode == GLWM_HEIGHTMAP) {
|
||||
this->RaiseWidgetsWhenLowered(WID_GL_HEIGHTMAP_HEIGHT_DOWN, WID_GL_HEIGHTMAP_HEIGHT_UP, WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_COVERAGE_UP, WID_GL_SNOW_COVERAGE_DOWN, WID_GL_DESERT_COVERAGE_UP, WID_GL_DESERT_COVERAGE_DOWN);
|
||||
this->RaiseWidgetsWhenLowered(WID_GL_HEIGHTMAP_HEIGHT_DOWN, WID_GL_HEIGHTMAP_HEIGHT_UP, WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_DESERT_COVERAGE_UP, WID_GL_DESERT_COVERAGE_DOWN);
|
||||
} else {
|
||||
this->RaiseWidgetsWhenLowered(WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_COVERAGE_UP, WID_GL_SNOW_COVERAGE_DOWN, WID_GL_DESERT_COVERAGE_UP, WID_GL_DESERT_COVERAGE_DOWN);
|
||||
this->RaiseWidgetsWhenLowered(WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_DESERT_COVERAGE_UP, WID_GL_DESERT_COVERAGE_DOWN);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -863,6 +850,14 @@ struct GenerateLandscapeWindow : public Window {
|
|||
|
||||
case WID_GL_HEIGHTMAP_ROTATION_PULLDOWN: _settings_newgame.game_creation.heightmap_rotation = index; break;
|
||||
|
||||
case WID_GL_SNOW_LINE_LEVEL_PULLDOWN: // Snow line level
|
||||
if ((uint)index == CUSTOM_SNOW_LEVEL_NUMBER) {
|
||||
this->widget_id = widget;
|
||||
ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.snow_line_height), STR_MAPGEN_SNOW_LINE_LEVEL_QUERY_CAPT, 4, this, CS_NUMERAL, {});
|
||||
}
|
||||
_settings_newgame.game_creation.snow_line_level = index;
|
||||
break;
|
||||
|
||||
case WID_GL_TOWN_PULLDOWN:
|
||||
if ((uint)index == CUSTOM_TOWN_NUMBER_DIFFICULTY) {
|
||||
this->widget_id = widget;
|
||||
|
@ -922,7 +917,7 @@ struct GenerateLandscapeWindow : public Window {
|
|||
switch (this->widget_id) {
|
||||
case WID_GL_HEIGHTMAP_HEIGHT_TEXT: value = MAP_HEIGHT_LIMIT_AUTO_MINIMUM; break;
|
||||
case WID_GL_START_DATE_TEXT: value = CalendarTime::DEF_START_YEAR.base(); break;
|
||||
case WID_GL_SNOW_COVERAGE_TEXT: value = DEF_SNOW_COVERAGE; break;
|
||||
case WID_GL_SNOW_LINE_LEVEL_PULLDOWN: value = DEF_SNOWLINE_HEIGHT; break;
|
||||
case WID_GL_DESERT_COVERAGE_TEXT: value = DEF_DESERT_COVERAGE; break;
|
||||
case WID_GL_TOWN_PULLDOWN: value = 1; break;
|
||||
case WID_GL_INDUSTRY_PULLDOWN: value = 1; break;
|
||||
|
@ -943,9 +938,8 @@ struct GenerateLandscapeWindow : public Window {
|
|||
_settings_newgame.game_creation.starting_year = Clamp(TimerGameCalendar::Year(value), CalendarTime::MIN_YEAR, CalendarTime::MAX_YEAR);
|
||||
break;
|
||||
|
||||
case WID_GL_SNOW_COVERAGE_TEXT:
|
||||
this->SetWidgetDirty(WID_GL_SNOW_COVERAGE_TEXT);
|
||||
_settings_newgame.game_creation.snow_coverage = Clamp(value, 0, 100);
|
||||
case WID_GL_SNOW_LINE_LEVEL_PULLDOWN:
|
||||
_settings_newgame.game_creation.snow_line_height = Clamp(value, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT);
|
||||
break;
|
||||
|
||||
case WID_GL_DESERT_COVERAGE_TEXT:
|
||||
|
|
|
@ -1510,13 +1510,45 @@ static uint CalculateCoverageLine(uint coverage, uint edge_multiplier)
|
|||
return best_h;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current maximum height of the map.
|
||||
* @return The maximum height of the map.
|
||||
*/
|
||||
static uint GetMapMaxHeight()
|
||||
{
|
||||
uint max_height = 0;
|
||||
|
||||
for (const auto tile : Map::Iterate()) {
|
||||
uint h = TileHeight(tile);
|
||||
if (h > max_height) {
|
||||
max_height = h;
|
||||
}
|
||||
}
|
||||
|
||||
return max_height;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the line from which snow begins.
|
||||
*/
|
||||
static void CalculateSnowLine()
|
||||
{
|
||||
/* We do not have snow sprites on coastal tiles, so never allow "1" as height. */
|
||||
_settings_game.game_creation.snow_line_height = std::max(CalculateCoverageLine(_settings_game.game_creation.snow_coverage, 0), 2u);
|
||||
/* If snow_line_level is custom, then snow_line_height is already set
|
||||
* otherwise we have to calculate it
|
||||
*/
|
||||
if (_settings_game.game_creation.snow_line_level != CUSTOM_SNOW_LEVEL_NUMBER) {
|
||||
uint min_snow_line_height = 4; // Not too low to make room for farms
|
||||
uint max_snow_line_height = GetMapMaxHeight() - 2; // Not too high to make room for forests
|
||||
|
||||
uint max_height_diff = min_snow_line_height < max_snow_line_height
|
||||
? max_snow_line_height - min_snow_line_height
|
||||
: 0;
|
||||
|
||||
/* snow_line_level goes up to 4 so we divide by 5 to get a maximum ratio of 80% */
|
||||
uint height_diff = RoundDivSU(max_height_diff * _settings_game.game_creation.snow_line_level, 5);
|
||||
|
||||
_settings_game.game_creation.snow_line_height = min_snow_line_height + height_diff;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1217,6 +1217,15 @@ STR_TERRAIN_TYPE_ALPINIST :Alpinist
|
|||
STR_TERRAIN_TYPE_CUSTOM :Custom height
|
||||
STR_TERRAIN_TYPE_CUSTOM_VALUE :Custom height ({NUM})
|
||||
|
||||
###length 7
|
||||
STR_SNOW_LINE_LEVEL_VERY_LOW :Very Low
|
||||
STR_SNOW_LINE_LEVEL_LOW :Low
|
||||
STR_SNOW_LINE_LEVEL_MEDIUM :Medium
|
||||
STR_SNOW_LINE_LEVEL_HIGH :High
|
||||
STR_SNOW_LINE_LEVEL_VERY_HIGH :Very high
|
||||
STR_SNOW_LINE_LEVEL_CUSTOM :Custom
|
||||
STR_SNOW_LINE_LEVEL_CUSTOM_NUMBER :Custom ({NUM})
|
||||
|
||||
###length 4
|
||||
STR_CITY_APPROVAL_LENIENT :Lenient
|
||||
STR_CITY_APPROVAL_TOLERANT :Tolerant
|
||||
|
@ -1593,9 +1602,8 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how f
|
|||
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING2}
|
||||
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Choose at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage"
|
||||
|
||||
STR_CONFIG_SETTING_SNOW_COVERAGE :Snow coverage: {STRING2}
|
||||
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow
|
||||
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
|
||||
STR_CONFIG_SETTING_SNOW_LINE_LEVEL :Snow line level: {STRING2}
|
||||
STR_CONFIG_SETTING_SNOW_LINE_LEVEL_HELPTEXT :Choose the approximate height above which all tiles will be covered by snow in sub-arctic landscape. Snow also affects industry generation and town growth requirements.
|
||||
|
||||
STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING2}
|
||||
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Choose the approximate amount of desert on the tropical landscape. Desert also affects industry generation and town growth requirements. Only used during map generation
|
||||
|
@ -3352,10 +3360,7 @@ STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Highest
|
|||
STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Choose the highest peak that the game will attempt to create, measured in elevation above sea level
|
||||
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP_TOOLTIP :{BLACK}Increase the maximum height of highest peak on the map by one
|
||||
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN_TOOLTIP :{BLACK}Decrease the maximum height of highest peak on the map by one
|
||||
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Snow coverage:
|
||||
STR_MAPGEN_SNOW_COVERAGE_UP_TOOLTIP :{BLACK}Increase snow coverage by ten percent
|
||||
STR_MAPGEN_SNOW_COVERAGE_DOWN_TOOLTIP :{BLACK}Decrease snow coverage by ten percent
|
||||
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
|
||||
STR_MAPGEN_SNOW_LINE_LEVEL :{BLACK}Snow line level:
|
||||
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Desert coverage:
|
||||
STR_MAPGEN_DESERT_COVERAGE_UP_TOOLTIP :{BLACK}Increase desert coverage by ten percent
|
||||
STR_MAPGEN_DESERT_COVERAGE_DOWN_TOOLTIP :{BLACK}Decrease desert coverage by ten percent
|
||||
|
@ -3420,7 +3425,7 @@ STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x
|
|||
|
||||
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Target peak height
|
||||
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Highest peak
|
||||
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Snow coverage (in %)
|
||||
STR_MAPGEN_SNOW_LINE_LEVEL_QUERY_CAPT :{WHITE}Snow line height
|
||||
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Desert coverage (in %)
|
||||
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year
|
||||
|
||||
|
|
|
@ -66,6 +66,7 @@
|
|||
#include "../timer/timer_game_economy.h"
|
||||
#include "../timer/timer_game_tick.h"
|
||||
#include "../picker_func.h"
|
||||
#include "../genworld.h"
|
||||
|
||||
#include "saveload_internal.h"
|
||||
|
||||
|
@ -3397,6 +3398,11 @@ bool AfterLoadGame()
|
|||
}
|
||||
}
|
||||
|
||||
if (IsSavegameVersionBefore(SLV_SNOW_LINE_LEVEL)) {
|
||||
/* The snow line level replaces the snow coverage but the two do not map very well. */
|
||||
_settings_game.game_creation.snow_line_level = CUSTOM_SNOW_LEVEL_NUMBER;
|
||||
}
|
||||
|
||||
AfterLoadLabelMaps();
|
||||
AfterLoadCompanyStats();
|
||||
AfterLoadStoryBook();
|
||||
|
|
|
@ -143,7 +143,7 @@ const SaveLoadCompat _settings_sl_compat[] = {
|
|||
SLC_VAR("economy.fund_roads"),
|
||||
SLC_VAR("economy.give_money"),
|
||||
SLC_VAR("game_creation.snow_line_height"),
|
||||
SLC_VAR("game_creation.snow_coverage"),
|
||||
SLC_NULL(1, SLV_MAPGEN_SETTINGS_REVAMP, SLV_TABLE_CHUNKS),
|
||||
SLC_VAR("game_creation.desert_coverage"),
|
||||
SLC_NULL(4, SL_MIN_VERSION, SLV_144),
|
||||
SLC_VAR("game_creation.starting_year"),
|
||||
|
|
|
@ -405,6 +405,7 @@ enum SaveLoadVersion : uint16_t {
|
|||
|
||||
SLV_FACE_STYLES, ///< 355 PR#14319 Addition of face styles, replacing gender and ethnicity.
|
||||
SLV_INDUSTRY_NUM_VALID_HISTORY, ///< 356 PR#14416 Store number of valid history records for industries.
|
||||
SLV_SNOW_LINE_LEVEL, ///< 357 PR#14428 Replacement of snow coverage setting with snow line level setting
|
||||
|
||||
SL_MAX_VERSION, ///< Highest possible saveload version
|
||||
};
|
||||
|
|
|
@ -842,7 +842,7 @@ SettingsContainer &GetSettingsTree()
|
|||
genworld->Add(new SettingEntry("difficulty.terrain_type"));
|
||||
genworld->Add(new SettingEntry("game_creation.tgen_smoothness"));
|
||||
genworld->Add(new SettingEntry("game_creation.variety"));
|
||||
genworld->Add(new SettingEntry("game_creation.snow_coverage"));
|
||||
genworld->Add(new SettingEntry("game_creation.snow_line_level"));
|
||||
genworld->Add(new SettingEntry("game_creation.snow_line_height"));
|
||||
genworld->Add(new SettingEntry("game_creation.desert_coverage"));
|
||||
genworld->Add(new SettingEntry("game_creation.amount_of_rivers"));
|
||||
|
|
|
@ -363,8 +363,8 @@ struct GameCreationSettings {
|
|||
uint8_t map_y; ///< Y size of map
|
||||
uint8_t land_generator; ///< the landscape generator
|
||||
uint8_t oil_refinery_limit; ///< distance oil refineries allowed from map edge
|
||||
uint8_t snow_line_height; ///< the configured snow line height (deduced from "snow_coverage")
|
||||
uint8_t snow_coverage; ///< the amount of snow coverage on the map
|
||||
uint8_t snow_line_height; ///< the configured snow line height (deduced from "snow_line_level" unless it is set on "custom")
|
||||
uint8_t snow_line_level; ///< the approximate snow line level on the map
|
||||
uint8_t desert_coverage; ///< the amount of desert coverage on the map
|
||||
uint8_t heightmap_height; ///< highest mountain for heightmap (towards what it scales)
|
||||
uint8_t tgen_smoothness; ///< how rough is the terrain from 0-3
|
||||
|
|
|
@ -97,17 +97,17 @@ strval = STR_JUST_COMMA
|
|||
cat = SC_BASIC
|
||||
|
||||
[SDT_VAR]
|
||||
var = game_creation.snow_coverage
|
||||
var = game_creation.snow_line_level
|
||||
type = SLE_UINT8
|
||||
from = SLV_MAPGEN_SETTINGS_REVAMP
|
||||
flags = SettingFlag::NewgameOnly
|
||||
def = DEF_SNOW_COVERAGE
|
||||
from = SLV_SNOW_LINE_LEVEL
|
||||
flags = SettingFlag::GuiDropdown, SettingFlag::NewgameOnly
|
||||
def = 1
|
||||
min = 0
|
||||
max = 100
|
||||
interval = 10
|
||||
str = STR_CONFIG_SETTING_SNOW_COVERAGE
|
||||
strhelp = STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE
|
||||
max = 5
|
||||
interval = 1
|
||||
str = STR_CONFIG_SETTING_SNOW_LINE_LEVEL
|
||||
strhelp = STR_CONFIG_SETTING_SNOW_LINE_LEVEL_HELPTEXT
|
||||
strval = STR_SNOW_LINE_LEVEL_VERY_LOW
|
||||
cat = SC_BASIC
|
||||
|
||||
[SDT_VAR]
|
||||
|
|
|
@ -33,7 +33,6 @@ static const uint MIN_SNOWLINE_HEIGHT = 2; ///< Minimum snow
|
|||
static const uint DEF_SNOWLINE_HEIGHT = 10; ///< Default snowline height
|
||||
static const uint MAX_SNOWLINE_HEIGHT = (MAX_TILE_HEIGHT - 2); ///< Maximum allowed snowline height
|
||||
|
||||
static const uint DEF_SNOW_COVERAGE = 40; ///< Default snow coverage.
|
||||
static const uint DEF_DESERT_COVERAGE = 50; ///< Default desert coverage.
|
||||
|
||||
|
||||
|
|
|
@ -34,9 +34,7 @@ enum GenerateLandscapeWidgets : WidgetID {
|
|||
WID_GL_START_DATE_TEXT, ///< Start year.
|
||||
WID_GL_START_DATE_UP, ///< Increase start year.
|
||||
|
||||
WID_GL_SNOW_COVERAGE_DOWN, ///< Decrease snow coverage.
|
||||
WID_GL_SNOW_COVERAGE_TEXT, ///< Snow coverage.
|
||||
WID_GL_SNOW_COVERAGE_UP, ///< Increase snow coverage.
|
||||
WID_GL_SNOW_LINE_LEVEL_PULLDOWN, ///< Snow line level.
|
||||
|
||||
WID_GL_DESERT_COVERAGE_DOWN, ///< Decrease desert coverage.
|
||||
WID_GL_DESERT_COVERAGE_TEXT, ///< Desert coverage.
|
||||
|
|
Loading…
Reference in New Issue