1
0
Fork 0

Compare commits

...

3 Commits

Author SHA1 Message Date
HyperJeanJean 01a517063a
Merge cd5d13a692 into 6b6caa6fa8 2025-07-16 04:48:57 +00:00
translators 6b6caa6fa8 Update: Translations from eints
chinese (traditional): 1 change by KogentaSan
greek: 1 change by gh658804
hungarian: 1 change by vargaviktor
russian: 1 change by Ln-Wolf
finnish: 1 change by hpiirai
catalan: 49 changes by J0anJosep
portuguese: 2 changes by jcteotonio
portuguese (brazilian): 1 change by pasantoro
polish: 1 change by pAter-exe
2025-07-16 04:46:46 +00:00
HyperJeanJean cd5d13a692 Change: Select snow line height by level instead of coverage
The snow coverage was too random, it could produce maps with snow
heights too low or too high with the exact same settings.

Now the snow line height is determined by choosing an aproxiamte level,
similar to the water level. A custom value can also be entered.
2025-07-14 14:41:28 +02:00
21 changed files with 159 additions and 82 deletions

View File

@ -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_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_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 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. static const uint MAP_HEIGHT_LIMIT_AUTO_MINIMUM = 30; ///< When map height limit is auto, make this the lowest possible map height limit.

View File

@ -124,7 +124,7 @@ static constexpr NWidgetPart _nested_generate_landscape_widgets[] = {
/* Labels on the left side (global column 3). */ /* Labels on the left side (global column 3). */
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL), 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(WWT_TEXT, INVALID_COLOUR), SetStringTip(STR_MAPGEN_DESERT_COVERAGE, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(NWID_SPACER), SetFill(1, 1), NWidget(NWID_SPACER), SetFill(1, 1),
EndContainer(), EndContainer(),
@ -139,11 +139,9 @@ static constexpr NWidgetPart _nested_generate_landscape_widgets[] = {
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
/* Climate selector. */ /* Climate selector. */
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR),
/* Snow coverage. */ /* Snow line level. */
NWidget(NWID_HORIZONTAL), 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_DROPDOWN, COLOUR_ORANGE, WID_GL_SNOW_LINE_LEVEL_PULLDOWN), SetToolTip(STR_CONFIG_SETTING_SNOW_LINE_LEVEL_HELPTEXT), SetFill(1, 1),
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),
EndContainer(), EndContainer(),
/* Desert coverage. */ /* Desert coverage. */
NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL),
@ -259,7 +257,7 @@ static constexpr NWidgetPart _nested_heightmap_load_widgets[] = {
/* Right half labels (global column 3) */ /* Right half labels (global column 3) */
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL), 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(WWT_TEXT, INVALID_COLOUR), SetStringTip(STR_MAPGEN_DESERT_COVERAGE, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(NWID_SPACER), SetFill(1, 1), NWidget(NWID_SPACER), SetFill(1, 1),
EndContainer(), EndContainer(),
@ -273,11 +271,9 @@ static constexpr NWidgetPart _nested_heightmap_load_widgets[] = {
NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0), NWidget(NWID_VERTICAL, NWidContainerFlag::EqualSize), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
/* Climate selector. */ /* Climate selector. */
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR),
/* Snow coverage. */ /* Snow line level. */
NWidget(NWID_HORIZONTAL), 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_DROPDOWN, COLOUR_ORANGE, WID_GL_SNOW_LINE_LEVEL_PULLDOWN), SetToolTip(STR_CONFIG_SETTING_SNOW_LINE_LEVEL_HELPTEXT), SetFill(1, 1),
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),
EndContainer(), EndContainer(),
/* Desert coverage. */ /* Desert coverage. */
NWidget(NWID_HORIZONTAL), 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_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 _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 _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); 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_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_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_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_DESERT_COVERAGE_TEXT: return GetString(STR_MAPGEN_DESERT_COVERAGE_TEXT, _settings_newgame.game_creation.desert_coverage);
case WID_GL_TOWN_PULLDOWN: case WID_GL_TOWN_PULLDOWN:
@ -523,7 +525,7 @@ struct GenerateLandscapeWindow : public Window {
} }
/* Disable snowline if not arctic */ /* 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 */ /* Disable desert if not tropic */
this->SetWidgetDisabledState(WID_GL_DESERT_COVERAGE_TEXT, _settings_newgame.game_creation.landscape != LandscapeType::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_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_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_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); 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))); d = GetStringBoundingBox(GetString(STR_JUST_INT, GetParamMaxValue(MAX_MAP_SIZE)));
break; break;
case WID_GL_SNOW_COVERAGE_TEXT: case WID_GL_SNOW_LINE_LEVEL_PULLDOWN:
d = GetStringBoundingBox(GetString(STR_MAPGEN_SNOW_COVERAGE_TEXT, GetParamMaxValue(MAX_TILE_HEIGHT))); d = GetStringBoundingBox(GetString(STR_JUST_INT, GetParamMaxValue(MAX_SNOWLINE_HEIGHT)));
break; break;
case WID_GL_DESERT_COVERAGE_TEXT: 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); ShowQueryString(GetString(STR_JUST_INT, _settings_newgame.game_creation.starting_year), STR_MAPGEN_START_DATE_QUERY_CAPT, 8, this, CS_NUMERAL, QueryStringFlag::EnableDefault);
break; break;
case WID_GL_SNOW_COVERAGE_DOWN: case WID_GL_SNOW_LINE_LEVEL_PULLDOWN: // Snow line level
case WID_GL_SNOW_COVERAGE_UP: // Snow coverage buttons ShowDropDownMenu(this, _snow_levels, _settings_newgame.game_creation.snow_line_level, WID_GL_SNOW_LINE_LEVEL_PULLDOWN, 0, 0);
/* 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);
break; break;
case WID_GL_DESERT_COVERAGE_DOWN: case WID_GL_DESERT_COVERAGE_DOWN:
@ -846,9 +833,9 @@ struct GenerateLandscapeWindow : public Window {
void OnTimeout() override void OnTimeout() override
{ {
if (mode == GLWM_HEIGHTMAP) { 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 { } 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_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: case WID_GL_TOWN_PULLDOWN:
if ((uint)index == CUSTOM_TOWN_NUMBER_DIFFICULTY) { if ((uint)index == CUSTOM_TOWN_NUMBER_DIFFICULTY) {
this->widget_id = widget; this->widget_id = widget;
@ -922,7 +917,7 @@ struct GenerateLandscapeWindow : public Window {
switch (this->widget_id) { switch (this->widget_id) {
case WID_GL_HEIGHTMAP_HEIGHT_TEXT: value = MAP_HEIGHT_LIMIT_AUTO_MINIMUM; break; 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_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_DESERT_COVERAGE_TEXT: value = DEF_DESERT_COVERAGE; break;
case WID_GL_TOWN_PULLDOWN: value = 1; break; case WID_GL_TOWN_PULLDOWN: value = 1; break;
case WID_GL_INDUSTRY_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); _settings_newgame.game_creation.starting_year = Clamp(TimerGameCalendar::Year(value), CalendarTime::MIN_YEAR, CalendarTime::MAX_YEAR);
break; break;
case WID_GL_SNOW_COVERAGE_TEXT: case WID_GL_SNOW_LINE_LEVEL_PULLDOWN:
this->SetWidgetDirty(WID_GL_SNOW_COVERAGE_TEXT); _settings_newgame.game_creation.snow_line_height = Clamp(value, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT);
_settings_newgame.game_creation.snow_coverage = Clamp(value, 0, 100);
break; break;
case WID_GL_DESERT_COVERAGE_TEXT: case WID_GL_DESERT_COVERAGE_TEXT:

View File

@ -1510,13 +1510,45 @@ static uint CalculateCoverageLine(uint coverage, uint edge_multiplier)
return best_h; 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. * Calculate the line from which snow begins.
*/ */
static void CalculateSnowLine() static void CalculateSnowLine()
{ {
/* We do not have snow sprites on coastal tiles, so never allow "1" as height. */ /* If snow_line_level is custom, then snow_line_height is already set
_settings_game.game_creation.snow_line_height = std::max(CalculateCoverageLine(_settings_game.game_creation.snow_coverage, 0), 2u); * 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;
}
} }
/** /**

View File

@ -5002,6 +5002,7 @@ STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}O terren
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreno inclinado na direção errada STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreno inclinado na direção errada
STR_ERROR_CAN_T_DO_THIS :{WHITE}Não é possível fazer isto... STR_ERROR_CAN_T_DO_THIS :{WHITE}Não é possível fazer isto...
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}A construção precisa ser demolida primeiro STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}A construção precisa ser demolida primeiro
STR_ERROR_BUILDING_IS_PROTECTED :{WHITE}... construção é protegida
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Não é possível limpar esta área... STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Não é possível limpar esta área...
STR_ERROR_SITE_UNSUITABLE :{WHITE}... local não adequado STR_ERROR_SITE_UNSUITABLE :{WHITE}... local não adequado
STR_ERROR_ALREADY_BUILT :{WHITE}... já construído STR_ERROR_ALREADY_BUILT :{WHITE}... já construído

View File

@ -268,6 +268,7 @@ STR_UNITS_YEARS :{NUM}{NBSP}any{
STR_UNITS_PERIODS :{NUM}{NBSP}període{P "" s} STR_UNITS_PERIODS :{NUM}{NBSP}període{P "" s}
STR_LIST_SEPARATOR :,{SPACE} STR_LIST_SEPARATOR :,{SPACE}
STR_TRUNCATION_ELLIPSIS :...
# Common window strings # Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filtre: STR_LIST_FILTER_TITLE :{BLACK}Filtre:
@ -286,7 +287,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Tanca la
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Títol de la finestra: arrossegueu el títol per desplaçar la finestra. STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Títol de la finestra: arrossegueu el títol per desplaçar la finestra.
STR_TOOLTIP_SHADE :{BLACK}Ombra de la finestra: mostra només la barra de títol. STR_TOOLTIP_SHADE :{BLACK}Ombra de la finestra: mostra només la barra de títol.
STR_TOOLTIP_DEBUG :{BLACK}Mostra la informació de depuració NewGRF STR_TOOLTIP_DEBUG :{BLACK}Mostra la informació de depuració NewGRF
STR_TOOLTIP_DEFSIZE :{BLACK}Redimensiona la finestra a la mida predeterminada. Ctrl+Clic desa la mida actual com a predeterminada. STR_TOOLTIP_DEFSIZE :{BLACK}Redimensiona la finestra a la mida predeterminada. Amb Ctrl+Clic, es desa la mida actual com a predeterminada. Amb Ctrl+doble clic, es restableix als valors per defecte.
STR_TOOLTIP_STICKY :{BLACK}Marca aquesta finestra com a no eliminable per la tecla «Tanca totes les finestres». Ctrl+Clic per desar també l'estat predeterminat. STR_TOOLTIP_STICKY :{BLACK}Marca aquesta finestra com a no eliminable per la tecla «Tanca totes les finestres». Ctrl+Clic per desar també l'estat predeterminat.
STR_TOOLTIP_RESIZE :{BLACK}Clica i arrossega per redimensionar aquesta finestra STR_TOOLTIP_RESIZE :{BLACK}Clica i arrossega per redimensionar aquesta finestra
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Commuta entre la mida gran i petita de la finestra STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Commuta entre la mida gran i petita de la finestra
@ -1108,7 +1109,7 @@ STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :Informació add
STR_GAME_OPTIONS_ONLINE_CONTENT :Descarrega contingut STR_GAME_OPTIONS_ONLINE_CONTENT :Descarrega contingut
STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Comprova si hi ha continguts nous o actualitzats per a descarregar. STR_GAME_OPTIONS_ONLINE_CONTENT_TOOLTIP :Comprova si hi ha continguts nous o actualitzats per a descarregar.
STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :{LTBLUE}(no s'han instal·lat complements per a interactuar amb plataformes socials) STR_GAME_OPTIONS_SOCIAL_PLUGINS_NONE :(no s'han instal·lat complements per a interactuar amb plataformes socials)
STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{STRING} ({STRING}) STR_GAME_OPTIONS_SOCIAL_PLUGIN_TITLE :{STRING} ({STRING})
STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :Plataforma: STR_GAME_OPTIONS_SOCIAL_PLUGIN_PLATFORM :Plataforma:
@ -1226,7 +1227,7 @@ STR_CITY_APPROVAL_PERMISSIVE :Permissiva (les
STR_WARNING_NO_SUITABLE_AI :{WHITE}No hi ha cap IA disponible...{}Podeu descarregar-ne a través del «Contingut en línia». STR_WARNING_NO_SUITABLE_AI :{WHITE}No hi ha cap IA disponible...{}Podeu descarregar-ne a través del «Contingut en línia».
# Settings tree in the Game Options window # Settings tree in the Game Options window
STR_CONFIG_SETTING_FILTER_TITLE :{G=Masculin}{BLACK}Filtre: STR_CONFIG_SETTING_FILTER_TITLE :{G=Masculin}Filtre:
STR_CONFIG_SETTING_EXPAND_ALL :Desplega-ho tot STR_CONFIG_SETTING_EXPAND_ALL :Desplega-ho tot
STR_CONFIG_SETTING_COLLAPSE_ALL :Plega-ho tot STR_CONFIG_SETTING_COLLAPSE_ALL :Plega-ho tot
STR_CONFIG_SETTING_RESET_ALL :Restableix tots els valors STR_CONFIG_SETTING_RESET_ALL :Restableix tots els valors
@ -1302,6 +1303,9 @@ STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Tipus d'interè
STR_CONFIG_SETTING_RUNNING_COSTS :Costos d'utilització: {STRING} STR_CONFIG_SETTING_RUNNING_COSTS :Costos d'utilització: {STRING}
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Fixa el nivell de manteniment i els costos d'utilització dels vehicles i infraestructures STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Fixa el nivell de manteniment i els costos d'utilització dels vehicles i infraestructures
###length 3 ###length 3
STR_CONFIG_SETTING_RUNNING_COSTS_LOW :Baix
STR_CONFIG_SETTING_RUNNING_COSTS_MEDIUM :Mitjà
STR_CONFIG_SETTING_RUNNING_COSTS_HIGH :Alt
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Ritme de construcció: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Ritme de construcció: {STRING}
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limita la quantitat d'accions de construcció per part de les IA STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limita la quantitat d'accions de construcció per part de les IA
@ -1324,6 +1328,9 @@ STR_CONFIG_SETTING_SUBSIDY_DURATION_DISABLED :Sense subsidis
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costos de construcció: {STRING} STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Costos de construcció: {STRING}
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Fixa el nivell de construcció i els preus de compra STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Fixa el nivell de construcció i els preus de compra
###length 3 ###length 3
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_LOW :Baix
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_MEDIUM :Mitjà
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HIGH :Alt
STR_CONFIG_SETTING_RECESSIONS :Recessions: {STRING} STR_CONFIG_SETTING_RECESSIONS :Recessions: {STRING}
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si està activat, poden haver recessions periòdicament. Durant una recessió, tota la producció és significativament més baixa, tornant al nivell previ quan s'acabi el període de recessió. STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Si està activat, poden haver recessions periòdicament. Durant una recessió, tota la producció és significativament més baixa, tornant al nivell previ quan s'acabi el període de recessió.
@ -2079,9 +2086,9 @@ STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La classe de c
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Mode de distribució per altres classes de càrrega: {STRING} STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Mode de distribució per altres classes de càrrega: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimètric" vol dir que quantitats arbitràries de càrrega poden ser enviades en qualsevol sentit. "Manual" significa que no s'aplicarà cap distribució automàtica a aquestes càrregues. STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asimètric" vol dir que quantitats arbitràries de càrrega poden ser enviades en qualsevol sentit. "Manual" significa que no s'aplicarà cap distribució automàtica a aquestes càrregues.
###length 3 ###length 3
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manual STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :Manual
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimètric STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :Asimètric
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simètric STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :Simètric
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisió de la distribució: {STRING} STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Precisió de la distribució: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Com més alt el valor indicat, més temps de processador requerirà el càlcul del graf de distribució. Si requereix massa temps podeu notar ralentització. Si indiqueu un valor baix, però, la distribució serà poc acurada, i us podeu trobar que la càrrega no és enviada als llocs que espereu. STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Com més alt el valor indicat, més temps de processador requerirà el càlcul del graf de distribució. Si requereix massa temps podeu notar ralentització. Si indiqueu un valor baix, però, la distribució serà poc acurada, i us podeu trobar que la càrrega no és enviada als llocs que espereu.
@ -2331,16 +2338,19 @@ STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selecci
STR_FACE_LOAD :{BLACK}Carrega STR_FACE_LOAD :{BLACK}Carrega
STR_FACE_LOAD_TOOLTIP :{BLACK}Carrega la cara preferida STR_FACE_LOAD_TOOLTIP :{BLACK}Carrega la cara preferida
STR_FACE_LOAD_DONE :{WHITE}S'ha carregat la cara personalitzada des de l'arxiu de configuració de l'OpenTTD. STR_FACE_LOAD_DONE :{WHITE}S'ha carregat la cara personalitzada des de l'arxiu de configuració de l'OpenTTD.
STR_FACE_FACECODE :{BLACK}Número de la cara STR_FACE_FACECODE :{BLACK}Codi de la cara
STR_FACE_FACECODE_TOOLTIP :{BLACK}Veure i/o assigna el número de la cara del president STR_FACE_FACECODE_TOOLTIP :{BLACK}Veure i/o assigna el codi de la cara del president
STR_FACE_FACECODE_CAPTION :{WHITE}Veure i/o assigna el número de la cara del president STR_FACE_FACECODE_CAPTION :{WHITE}Veure i/o assigna el codi de la cara del president
STR_FACE_FACECODE_SET :{WHITE}El número de la nova cara ha estat assignat STR_FACE_FACECODE_SET :{WHITE}S'ha assignat el codi de la nova cara del president.
STR_FACE_FACECODE_ERR :{WHITE}No s'ha pogut assignar el número de cara del president - ha de ser un nombre entre 0 i 4,294,967,295! STR_FACE_FACECODE_ERR :{WHITE}No s'ha pogut assignar el codi de cara del president - ha de ser una etiqueta i nombre vàlids.
STR_FACE_SAVE :{BLACK}Desa STR_FACE_SAVE :{BLACK}Desa
STR_FACE_SAVE_TOOLTIP :{BLACK}Desa la cara preferida STR_FACE_SAVE_TOOLTIP :{BLACK}Desa la cara preferida
STR_FACE_SAVE_DONE :{WHITE}Es desarà aquesta cara personalitzada a l'arxiu de configuració de l'OpenTTD. STR_FACE_SAVE_DONE :{WHITE}Es desarà aquesta cara personalitzada a l'arxiu de configuració de l'OpenTTD.
STR_FACE_SETTING_TOGGLE :{STRING} {ORANGE}{STRING}
STR_FACE_SETTING_NUMERIC :{STRING} {ORANGE}{NUM} / {NUM}
STR_FACE_YES :Sí STR_FACE_YES :Sí
STR_FACE_NO :No STR_FACE_NO :No
STR_FACE_STYLE :Estil:
STR_FACE_HAIR :Cabell: STR_FACE_HAIR :Cabell:
STR_FACE_EYEBROWS :Celles: STR_FACE_EYEBROWS :Celles:
STR_FACE_EYECOLOUR :Color dels ulls: STR_FACE_EYECOLOUR :Color dels ulls:
@ -2813,6 +2823,10 @@ STR_PICKER_MODE_USED_TOOLTIP :Commuta entre m
STR_PICKER_MODE_SAVED :Desats STR_PICKER_MODE_SAVED :Desats
STR_PICKER_MODE_SAVED_TOOLTIP :Commuta entre mostrar tots o bé només els elements desats. STR_PICKER_MODE_SAVED_TOOLTIP :Commuta entre mostrar tots o bé només els elements desats.
STR_PICKER_PREVIEW_SHRINK :
STR_PICKER_PREVIEW_SHRINK_TOOLTIP :Redueix l'alçària de les vistes prèvies. Amb Ctrl+clic, es redueix fins al mínim.
STR_PICKER_PREVIEW_EXPAND :+
STR_PICKER_PREVIEW_EXPAND_TOOLTIP :Augmenta l'alçària de les vistes prèvies. Amb Ctrl+clic, s'augmenta fins al màxim.
STR_PICKER_STATION_CLASS_TOOLTIP :Trieu quina classe d'estació voleu veure. STR_PICKER_STATION_CLASS_TOOLTIP :Trieu quina classe d'estació voleu veure.
STR_PICKER_STATION_TYPE_TOOLTIP :Trieu quin tipus d'estació voleu construir. Amb Ctrl+clic, s'afegeix o es trau l'element de la llista de desats. STR_PICKER_STATION_TYPE_TOOLTIP :Trieu quin tipus d'estació voleu construir. Amb Ctrl+clic, s'afegeix o es trau l'element de la llista de desats.
@ -3053,6 +3067,11 @@ STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Seleccio
STR_FOUND_TOWN_CITY :{BLACK}Ciutat STR_FOUND_TOWN_CITY :{BLACK}Ciutat
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Les ciutats creixen més ràpid que els pobles{}Depenent de la configuració, són més grans quan es funden STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Les ciutats creixen més ràpid que els pobles{}Depenent de la configuració, són més grans quan es funden
STR_FOUND_TOWN_EXPAND_MODE :{YELLOW}Expansió de la població:
STR_FOUND_TOWN_EXPAND_BUILDINGS :Edificis
STR_FOUND_TOWN_EXPAND_BUILDINGS_TOOLTIP :Augmenta el nombre d'edificis de les poblacions.
STR_FOUND_TOWN_EXPAND_ROADS :Carreteres
STR_FOUND_TOWN_EXPAND_ROADS_TOOLTIP :Augmenta el nombre de carreteres de la població.
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Disposició de les carreteres de la població: STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Disposició de les carreteres de la població:
STR_FOUND_TOWN_SELECT_LAYOUT_TOOLTIP :{BLACK}Selecciona la disposició de les carreteres utilitzades per a aquesta població STR_FOUND_TOWN_SELECT_LAYOUT_TOOLTIP :{BLACK}Selecciona la disposició de les carreteres utilitzades per a aquesta població
@ -3677,6 +3696,10 @@ STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}Canvia e
STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Eixampla STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}Eixampla
STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Incrementa la mida de la població STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}Incrementa la mida de la població
STR_TOWN_VIEW_EXPAND_BUILDINGS_BUTTON :{BLACK}Expandeix els edificis
STR_TOWN_VIEW_EXPAND_BUILDINGS_TOOLTIP :{BLACK}Augmenta el nombre d'edificis de la població.
STR_TOWN_VIEW_EXPAND_ROADS_BUTTON :{BLACK}Expandeix les carreteres
STR_TOWN_VIEW_EXPAND_ROADS_TOOLTIP :{BLACK}Augmenta el nombre de carreteres de la població.
STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Esborra STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}Esborra
STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Esborra totalment aquesta població STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}Esborra totalment aquesta població
@ -4415,10 +4438,10 @@ STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Mostra l
STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Mostra les ordres de l'avió. Ctrl+Clic per mostrar l'horari de l'avió STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Mostra les ordres de l'avió. Ctrl+Clic per mostrar l'horari de l'avió
###length VEHICLE_TYPES ###length VEHICLE_TYPES
STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra els detalls del tren STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra els detalls del tren. Amb Ctrl+clic, es mostra el grup del tren.
STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra els detalls del vehicle STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra els detalls del vehicle. Amb Ctrl+clic, es mostra el grup del vehicle.
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra els detalls del vaixell STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra els detalls del vaixell. Amb Ctrl+clic, es mostra el grup del vaixell.
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra els detalls de l'avió STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra els detalls de l'aeronau. Amb Ctrl+clic, es mostra el grup de l'aeronau.
###length VEHICLE_TYPES ###length VEHICLE_TYPES
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Acció actual del tren - Feu clic per parar-lo o engegar-lo. STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Acció actual del tren - Feu clic per parar-lo o engegar-lo.
@ -4742,14 +4765,15 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Horari -
STR_TIMETABLE_NO_TRAVEL :Sense viatge STR_TIMETABLE_NO_TRAVEL :Sense viatge
STR_TIMETABLE_NOT_TIMETABLEABLE :Viatge (automàtic; programat per la següent ordre manual) STR_TIMETABLE_NOT_TIMETABLEABLE :Viatge (automàtic; programat per la següent ordre manual)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viatge (fora d'horari) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Viatge (fora d'horari)
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Viatja (sense horari) com a molt a {VELOCITY}
STR_TIMETABLE_TRAVEL_FOR :Viatge a {STRING} STR_TIMETABLE_TRAVEL_FOR :Viatge a {STRING}
STR_TIMETABLE_TRAVEL_FOR_SPEED :Viatja durant {STRING} com a molt a {VELOCITY} STR_TIMETABLE_TRAVEL_FOR_SPEED :Viatja durant {STRING} com a molt a {VELOCITY}
STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viatja (durant {STRING}, sense horari) STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Viatja (durant {STRING}, sense horari)
STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viatja (durant {STRING}, sense horari) com a molt a {VELOCITY} STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Viatja (durant {STRING}, sense horari) com a molt a {VELOCITY}
STR_TIMETABLE_STAY_FOR_ESTIMATED :{SPACE}(quedar-s'hi durant {STRING}, sense horari) STR_TIMETABLE_STAY_FOR_ESTIMATED :{SPACE}(quedar-s'hi durant {STRING}, sense horari)
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :{SPACE}(viatja durant {STRING}, sense horari) STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :{SPACE}(viatja durant {STRING}, sense horari)
STR_TIMETABLE_STAY_FOR :i estigues {STRING} STR_TIMETABLE_STAY_FOR :{SPACE}i estigues {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :i viatge per {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :{SPACE}i viatja durant {STRING}
STR_TIMETABLE_APPROX_TIME :{BLACK}L'horari trigara aproximadament {STRING} a completar-se. STR_TIMETABLE_APPROX_TIME :{BLACK}L'horari trigara aproximadament {STRING} a completar-se.
STR_TIMETABLE_TOTAL_TIME :{BLACK}L'horari tardarà {STRING} a complir-se STR_TIMETABLE_TOTAL_TIME :{BLACK}L'horari tardarà {STRING} a complir-se
@ -5897,3 +5921,11 @@ STR_SHIP :{BLACK}{SHIP}
STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY}) STR_TOOLBAR_RAILTYPE_VELOCITY :{STRING} ({VELOCITY})
STR_BADGE_NAME_LIST :{STRING}: {GOLD}{STRING} STR_BADGE_NAME_LIST :{STRING}: {GOLD}{STRING}
STR_BADGE_CONFIG_MENU_TOOLTIP :Obre la configuració d'insígnies
STR_BADGE_CONFIG_RESET :Restableix
STR_BADGE_CONFIG_ICONS :{WHITE}Icones d'insígnies
STR_BADGE_CONFIG_FILTERS :{WHITE}Filtres d'insígnies
STR_BADGE_CONFIG_PREVIEW :Imatge de previsualització
STR_BADGE_CONFIG_NAME :Nom
STR_BADGE_FILTER_ANY_LABEL :Qualsevol {STRING}
STR_BADGE_FILTER_IS_LABEL :{STRING} és {STRING}

View File

@ -1217,6 +1217,15 @@ STR_TERRAIN_TYPE_ALPINIST :Alpinist
STR_TERRAIN_TYPE_CUSTOM :Custom height STR_TERRAIN_TYPE_CUSTOM :Custom height
STR_TERRAIN_TYPE_CUSTOM_VALUE :Custom height ({NUM}) 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 ###length 4
STR_CITY_APPROVAL_LENIENT :Lenient STR_CITY_APPROVAL_LENIENT :Lenient
STR_CITY_APPROVAL_TOLERANT :Tolerant 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 :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_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_LINE_LEVEL :Snow line level: {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_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_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING2} 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 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_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_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_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_LINE_LEVEL :{BLACK}Snow line level:
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_DESERT_COVERAGE :{BLACK}Desert coverage: STR_MAPGEN_DESERT_COVERAGE :{BLACK}Desert coverage:
STR_MAPGEN_DESERT_COVERAGE_UP_TOOLTIP :{BLACK}Increase desert coverage by ten percent 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 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_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Target peak height
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Highest peak 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_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Desert coverage (in %)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year

View File

@ -5001,6 +5001,7 @@ STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Tarvitaa
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Maa viettää väärään suuntaan. STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Maa viettää väärään suuntaan.
STR_ERROR_CAN_T_DO_THIS :{WHITE}Ei onnistu... STR_ERROR_CAN_T_DO_THIS :{WHITE}Ei onnistu...
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Rakennus täytyy purkaa ensin. STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Rakennus täytyy purkaa ensin.
STR_ERROR_BUILDING_IS_PROTECTED :{WHITE}… rakennus on suojattu
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Aluetta ei voi tyhjentää... STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Aluetta ei voi tyhjentää...
STR_ERROR_SITE_UNSUITABLE :{WHITE}... maasto on sopimaton STR_ERROR_SITE_UNSUITABLE :{WHITE}... maasto on sopimaton
STR_ERROR_ALREADY_BUILT :{WHITE}... se on jo rakennettu STR_ERROR_ALREADY_BUILT :{WHITE}... se on jo rakennettu

View File

@ -5102,6 +5102,7 @@ STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Απαι
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Το έδαφος έχει λάθος κλίση STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Το έδαφος έχει λάθος κλίση
STR_ERROR_CAN_T_DO_THIS :{WHITE}Αυτό δεν γίνεται... STR_ERROR_CAN_T_DO_THIS :{WHITE}Αυτό δεν γίνεται...
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Το κτίριο πρέπει πρώτα να κατεδαφιστεί STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Το κτίριο πρέπει πρώτα να κατεδαφιστεί
STR_ERROR_BUILDING_IS_PROTECTED :{WHITE}... το κτίριο προστατεύεται
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Είναι αδύνατο να καθαριστεί αυτή η περιοχή... STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Είναι αδύνατο να καθαριστεί αυτή η περιοχή...
STR_ERROR_SITE_UNSUITABLE :{WHITE}... ακατάλληλη περιοχή STR_ERROR_SITE_UNSUITABLE :{WHITE}... ακατάλληλη περιοχή
STR_ERROR_ALREADY_BUILT :{WHITE}... ήδη κατασκευασμένο STR_ERROR_ALREADY_BUILT :{WHITE}... ήδη κατασκευασμένο

View File

@ -330,6 +330,7 @@ STR_UNITS_YEARS :{NUM}{NBSP}év
STR_UNITS_PERIODS :{NUM}{NBSP}időszak STR_UNITS_PERIODS :{NUM}{NBSP}időszak
STR_LIST_SEPARATOR :,{SPACE} STR_LIST_SEPARATOR :,{SPACE}
STR_TRUNCATION_ELLIPSIS :...
# Common window strings # Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Szűrő kifejezés: STR_LIST_FILTER_TITLE :{BLACK}Szűrő kifejezés:

View File

@ -5387,6 +5387,7 @@ STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Wymagany
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Teren pochylony w złym kierunku STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Teren pochylony w złym kierunku
STR_ERROR_CAN_T_DO_THIS :{WHITE}Nie można tego zrobić... STR_ERROR_CAN_T_DO_THIS :{WHITE}Nie można tego zrobić...
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Należy najpierw zburzyć budynek STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Należy najpierw zburzyć budynek
STR_ERROR_BUILDING_IS_PROTECTED :{WHITE}... budynek jest chroniony
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Nie można wyczyścić terenu... STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Nie można wyczyścić terenu...
STR_ERROR_SITE_UNSUITABLE :{WHITE}... nieodpowiednie miejsce STR_ERROR_SITE_UNSUITABLE :{WHITE}... nieodpowiednie miejsce
STR_ERROR_ALREADY_BUILT :{WHITE}... już zbudowano STR_ERROR_ALREADY_BUILT :{WHITE}... już zbudowano

View File

@ -647,7 +647,7 @@ STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP :{BLACK}Alternar
# Company league window # Company league window
STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Classificação de Empresas STR_COMPANY_LEAGUE_TABLE_CAPTION :{WHITE}Classificação de Empresas
STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} '{STRING}' STR_COMPANY_LEAGUE_COMPANY_NAME :{ORANGE}{COMPANY} {BLACK}{COMPANY_NUM} "{STRING}"
STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM} STR_COMPANY_LEAGUE_COMPANY_RANK :{YELLOW}#{NUM}
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Engenheiro STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Engenheiro
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Gestor de Tráfego STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Gestor de Tráfego
@ -5002,6 +5002,7 @@ STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}É neces
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreno inclinado na direcção incorrecta STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Terreno inclinado na direcção incorrecta
STR_ERROR_CAN_T_DO_THIS :{WHITE}Não é possível fazer isto... STR_ERROR_CAN_T_DO_THIS :{WHITE}Não é possível fazer isto...
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}O edifício deve ser demolido primeiro STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}O edifício deve ser demolido primeiro
STR_ERROR_BUILDING_IS_PROTECTED :{WHITE}... o edifício está protegido
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Não é possível limpar esta área... STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Não é possível limpar esta área...
STR_ERROR_SITE_UNSUITABLE :{WHITE}... sítio inadequado STR_ERROR_SITE_UNSUITABLE :{WHITE}... sítio inadequado
STR_ERROR_ALREADY_BUILT :{WHITE}... já está construído STR_ERROR_ALREADY_BUILT :{WHITE}... já está construído

View File

@ -5188,6 +5188,7 @@ STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}Необ
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Неверный уклон земли STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Неверный уклон земли
STR_ERROR_CAN_T_DO_THIS :{WHITE}Это невозможно... STR_ERROR_CAN_T_DO_THIS :{WHITE}Это невозможно...
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Сначала снесите здания STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Сначала снесите здания
STR_ERROR_BUILDING_IS_PROTECTED :{WHITE}... это здание защищено от изменений
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Невозможно расчистить данный участок... STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}Невозможно расчистить данный участок...
STR_ERROR_SITE_UNSUITABLE :{WHITE}... неподходящее место STR_ERROR_SITE_UNSUITABLE :{WHITE}... неподходящее место
STR_ERROR_ALREADY_BUILT :{WHITE}... уже построено STR_ERROR_ALREADY_BUILT :{WHITE}... уже построено

View File

@ -5001,6 +5001,7 @@ STR_ERROR_FLAT_LAND_REQUIRED :{WHITE}需要
STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}地面斜坡方向不對 STR_ERROR_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}地面斜坡方向不對
STR_ERROR_CAN_T_DO_THIS :{WHITE}不能執行以下動作... STR_ERROR_CAN_T_DO_THIS :{WHITE}不能執行以下動作...
STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}必須先摧毀建築物 STR_ERROR_BUILDING_MUST_BE_DEMOLISHED :{WHITE}必須先摧毀建築物
STR_ERROR_BUILDING_IS_PROTECTED :{WHITE}……建築物受到保護
STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}不能清除這個地段... STR_ERROR_CAN_T_CLEAR_THIS_AREA :{WHITE}不能清除這個地段...
STR_ERROR_SITE_UNSUITABLE :{WHITE}... 地點不適合 STR_ERROR_SITE_UNSUITABLE :{WHITE}... 地點不適合
STR_ERROR_ALREADY_BUILT :{WHITE}……經已建成 STR_ERROR_ALREADY_BUILT :{WHITE}……經已建成

View File

@ -66,6 +66,7 @@
#include "../timer/timer_game_economy.h" #include "../timer/timer_game_economy.h"
#include "../timer/timer_game_tick.h" #include "../timer/timer_game_tick.h"
#include "../picker_func.h" #include "../picker_func.h"
#include "../genworld.h"
#include "saveload_internal.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(); AfterLoadLabelMaps();
AfterLoadCompanyStats(); AfterLoadCompanyStats();
AfterLoadStoryBook(); AfterLoadStoryBook();

View File

@ -143,7 +143,7 @@ const SaveLoadCompat _settings_sl_compat[] = {
SLC_VAR("economy.fund_roads"), SLC_VAR("economy.fund_roads"),
SLC_VAR("economy.give_money"), SLC_VAR("economy.give_money"),
SLC_VAR("game_creation.snow_line_height"), 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_VAR("game_creation.desert_coverage"),
SLC_NULL(4, SL_MIN_VERSION, SLV_144), SLC_NULL(4, SL_MIN_VERSION, SLV_144),
SLC_VAR("game_creation.starting_year"), SLC_VAR("game_creation.starting_year"),

View File

@ -405,6 +405,7 @@ enum SaveLoadVersion : uint16_t {
SLV_FACE_STYLES, ///< 355 PR#14319 Addition of face styles, replacing gender and ethnicity. 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_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 SL_MAX_VERSION, ///< Highest possible saveload version
}; };

View File

@ -842,7 +842,7 @@ SettingsContainer &GetSettingsTree()
genworld->Add(new SettingEntry("difficulty.terrain_type")); genworld->Add(new SettingEntry("difficulty.terrain_type"));
genworld->Add(new SettingEntry("game_creation.tgen_smoothness")); genworld->Add(new SettingEntry("game_creation.tgen_smoothness"));
genworld->Add(new SettingEntry("game_creation.variety")); 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.snow_line_height"));
genworld->Add(new SettingEntry("game_creation.desert_coverage")); genworld->Add(new SettingEntry("game_creation.desert_coverage"));
genworld->Add(new SettingEntry("game_creation.amount_of_rivers")); genworld->Add(new SettingEntry("game_creation.amount_of_rivers"));

View File

@ -363,8 +363,8 @@ struct GameCreationSettings {
uint8_t map_y; ///< Y size of map uint8_t map_y; ///< Y size of map
uint8_t land_generator; ///< the landscape generator uint8_t land_generator; ///< the landscape generator
uint8_t oil_refinery_limit; ///< distance oil refineries allowed from map edge 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_line_height; ///< the configured snow line height (deduced from "snow_line_level" unless it is set on "custom")
uint8_t snow_coverage; ///< the amount of snow coverage on the map 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 desert_coverage; ///< the amount of desert coverage on the map
uint8_t heightmap_height; ///< highest mountain for heightmap (towards what it scales) uint8_t heightmap_height; ///< highest mountain for heightmap (towards what it scales)
uint8_t tgen_smoothness; ///< how rough is the terrain from 0-3 uint8_t tgen_smoothness; ///< how rough is the terrain from 0-3

View File

@ -97,17 +97,17 @@ strval = STR_JUST_COMMA
cat = SC_BASIC cat = SC_BASIC
[SDT_VAR] [SDT_VAR]
var = game_creation.snow_coverage var = game_creation.snow_line_level
type = SLE_UINT8 type = SLE_UINT8
from = SLV_MAPGEN_SETTINGS_REVAMP from = SLV_SNOW_LINE_LEVEL
flags = SettingFlag::NewgameOnly flags = SettingFlag::GuiDropdown, SettingFlag::NewgameOnly
def = DEF_SNOW_COVERAGE def = 1
min = 0 min = 0
max = 100 max = 5
interval = 10 interval = 1
str = STR_CONFIG_SETTING_SNOW_COVERAGE str = STR_CONFIG_SETTING_SNOW_LINE_LEVEL
strhelp = STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT strhelp = STR_CONFIG_SETTING_SNOW_LINE_LEVEL_HELPTEXT
strval = STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE strval = STR_SNOW_LINE_LEVEL_VERY_LOW
cat = SC_BASIC cat = SC_BASIC
[SDT_VAR] [SDT_VAR]

View File

@ -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 DEF_SNOWLINE_HEIGHT = 10; ///< Default snowline height
static const uint MAX_SNOWLINE_HEIGHT = (MAX_TILE_HEIGHT - 2); ///< Maximum allowed 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. static const uint DEF_DESERT_COVERAGE = 50; ///< Default desert coverage.

View File

@ -34,9 +34,7 @@ enum GenerateLandscapeWidgets : WidgetID {
WID_GL_START_DATE_TEXT, ///< Start year. WID_GL_START_DATE_TEXT, ///< Start year.
WID_GL_START_DATE_UP, ///< Increase start year. WID_GL_START_DATE_UP, ///< Increase start year.
WID_GL_SNOW_COVERAGE_DOWN, ///< Decrease snow coverage. WID_GL_SNOW_LINE_LEVEL_PULLDOWN, ///< Snow line level.
WID_GL_SNOW_COVERAGE_TEXT, ///< Snow coverage.
WID_GL_SNOW_COVERAGE_UP, ///< Increase snow coverage.
WID_GL_DESERT_COVERAGE_DOWN, ///< Decrease desert coverage. WID_GL_DESERT_COVERAGE_DOWN, ///< Decrease desert coverage.
WID_GL_DESERT_COVERAGE_TEXT, ///< Desert coverage. WID_GL_DESERT_COVERAGE_TEXT, ///< Desert coverage.