Index: src/lang/swedish.txt =================================================================== --- src/lang/swedish.txt (revision 18797) +++ src/lang/swedish.txt (working copy) @@ -1140,6 +1140,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :{LTBLUE}Max avstånd ifrån kanten för oljeraffinaderier {ORANGE}{STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT :{LTBLUE}Snölinjeshöjd: {ORANGE}{STRING} +STR_CONFIG_SETTING_TREELINE_HEIGHT :{LTBLUE}Höjd för trädgräns: {ORANGE}{STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :{LTBLUE}Terrängens svårhetsgrad (TerraGenesis endast) : {ORANGE}{STRING} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Väldigt lätt STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Lätt @@ -2243,6 +2244,9 @@ STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snölinjens höjd: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Höj snölinjens höjd ett upp STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Sänk snölinjens höjd ett ner +STR_MAPGEN_TREE_LINE_HEIGHT :{BLACK}Trädgränsens höjd: +STR_MAPGEN_TREE_LINE_UP :{BLACK}Höj trädgränsen ett upp +STR_MAPGEN_TREE_LINE_DOWN :{BLACK}Sänk trädgränsen ett ner STR_MAPGEN_RANDOM_SEED :{BLACK}Slump-nummer: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Klicka för att mata in ett slump-nummer STR_MAPGEN_RANDOM :{BLACK}Slumpa @@ -2274,6 +2278,7 @@ STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Mata in ett slumpmässigt frö STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ändra snölinjens höjd +STR_MAPGEN_TREE_LINE_QUERY_CAPT :{WHITE}Ändra trädgränsens höjd STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ändra Startår # SE Map generation Index: src/lang/english.txt =================================================================== --- src/lang/english.txt (revision 18797) +++ src/lang/english.txt (working copy) @@ -1140,6 +1140,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :{LTBLUE}Max distance from edge for Oil Refineries {ORANGE}{STRING1} STR_CONFIG_SETTING_SNOWLINE_HEIGHT :{LTBLUE}Snow line height: {ORANGE}{STRING1} +STR_CONFIG_SETTING_TREELINE_HEIGHT :{LTBLUE}Tree line height: {ORANGE}{STRING1} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :{LTBLUE}Roughness of terrain (TerraGenesis only) : {ORANGE}{STRING1} STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth @@ -2244,6 +2245,9 @@ STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snow line height: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the snow line height one up STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height one down +STR_MAPGEN_TREE_LINE_HEIGHT :{BLACK}Tree line height: +STR_MAPGEN_TREE_LINE_UP :{BLACK}Move the tree line height one up +STR_MAPGEN_TREE_LINE_DOWN :{BLACK}Move the tree line height one down STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed: STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click to enter a random seed STR_MAPGEN_RANDOM :{BLACK}Randomise @@ -2275,6 +2279,7 @@ STR_MAPGEN_RANDOM_SEED_OSKTITLE :{BLACK}Enter a random seed STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Change snow line height +STR_MAPGEN_TREE_LINE_QUERY_CAPT :{WHITE}Change tree line height STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year # SE Map generation Index: src/genworld_gui.cpp =================================================================== --- src/genworld_gui.cpp (revision 18797) +++ src/genworld_gui.cpp (working copy) @@ -80,6 +80,10 @@ GLAND_SNOW_LEVEL_TEXT, GLAND_SNOW_LEVEL_UP, + GLAND_TREE_LEVEL_DOWN, + GLAND_TREE_LEVEL_TEXT, + GLAND_TREE_LEVEL_UP, + GLAND_TREE_PULLDOWN, GLAND_LANDSCAPE_PULLDOWN, GLAND_HEIGHTMAP_NAME_TEXT, @@ -157,6 +161,7 @@ NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TREE_LINE_HEIGHT, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SMOOTHNESS, STR_NULL), SetFill(1, 1), EndContainer(), @@ -173,6 +178,12 @@ NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_SNOW_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_LINE_UP), SetFill(0, 1), EndContainer(), + /* Tree line. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_TREE_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_TREE_LINE_DOWN), SetFill(0, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_TREE_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_TREE_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_TREE_LINE_UP), SetFill(0, 1), + EndContainer(), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_SMOOTHNESS_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), EndContainer(), @@ -266,6 +277,7 @@ NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE_LABEL, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1), NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TREE_LINE_HEIGHT, STR_NULL), SetFill(1, 1), EndContainer(), NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), NWidget(WWT_EMPTY, INVALID_COLOUR, GLAND_HEIGHTMAP_NAME_SPACER), SetFill(1, 0), @@ -280,6 +292,11 @@ NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_SNOW_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_LINE_UP), SetFill(0, 1), EndContainer(), + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_TREE_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_TREE_LINE_DOWN), SetFill(0, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_TREE_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_TREE_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_TREE_LINE_UP), SetFill(0, 1), + EndContainer(), EndContainer(), EndContainer(), NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_RANDOM_BUTTON), SetDataTip(STR_MAPGEN_RANDOM, STR_MAPGEN_RANDOM_HELP), SetFill(1, 0), @@ -366,6 +383,7 @@ case GLAND_MAPSIZE_X_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_x); break; case GLAND_MAPSIZE_Y_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_y); break; case GLAND_SNOW_LEVEL_TEXT: SetDParam(0, _settings_newgame.game_creation.snow_line_height); break; + case GLAND_TREE_LEVEL_TEXT: SetDParam(0, _settings_newgame.game_creation.tree_line_height); break; case GLAND_TOWN_PULLDOWN: SetDParam(0, _game_mode == GM_EDITOR ? STR_DISASTERS_OFF : _num_towns[_settings_newgame.difficulty.number_towns]); break; case GLAND_INDUSTRY_PULLDOWN: SetDParam(0, _game_mode == GM_EDITOR ? STR_DISASTERS_OFF : _num_inds[_settings_newgame.difficulty.number_industries]); break; case GLAND_LANDSCAPE_PULLDOWN: SetDParam(0, _landscape[_settings_newgame.game_creation.land_generator]); break; @@ -412,6 +430,11 @@ SetDParam(0, MAX_TILE_HEIGHT); *size = GetStringBoundingBox(STR_JUST_INT); break; + + case GLAND_TREE_LEVEL_TEXT: + SetDParam(0, MAX_TILE_HEIGHT); + *size = GetStringBoundingBox(STR_JUST_INT); + break; case GLAND_HEIGHTMAP_SIZE_TEXT: SetDParam(0, this->x); @@ -490,8 +513,9 @@ this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == 0 && (_settings_newgame.game_creation.landscape == LT_ARCTIC || _settings_newgame.game_creation.landscape == LT_TROPIC), GLAND_TERRAIN_PULLDOWN, GLAND_WATER_PULLDOWN, WIDGET_LIST_END); } - /* Disable snowline if not hilly */ + /* Disable snowline and treeline if not hilly */ this->SetWidgetDisabledState(GLAND_SNOW_LEVEL_TEXT, _settings_newgame.game_creation.landscape != LT_ARCTIC); + this->SetWidgetDisabledState(GLAND_TREE_LEVEL_TEXT, _settings_newgame.game_creation.landscape != LT_ARCTIC); /* Disable town, industry and trees in SE */ this->SetWidgetDisabledState(GLAND_TOWN_PULLDOWN, _game_mode == GM_EDITOR); this->SetWidgetDisabledState(GLAND_INDUSTRY_PULLDOWN, _game_mode == GM_EDITOR); @@ -501,6 +525,8 @@ this->SetWidgetDisabledState(GLAND_START_DATE_UP, _settings_newgame.game_creation.starting_year >= MAX_YEAR); this->SetWidgetDisabledState(GLAND_SNOW_LEVEL_DOWN, _settings_newgame.game_creation.snow_line_height <= MIN_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); this->SetWidgetDisabledState(GLAND_SNOW_LEVEL_UP, _settings_newgame.game_creation.snow_line_height >= MAX_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); + this->SetWidgetDisabledState(GLAND_TREE_LEVEL_DOWN, _settings_newgame.game_creation.tree_line_height <= MIN_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); + this->SetWidgetDisabledState(GLAND_TREE_LEVEL_UP, _settings_newgame.game_creation.tree_line_height >= MAX_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); this->SetWidgetLoweredState(GLAND_TEMPERATE, _settings_newgame.game_creation.landscape == LT_TEMPERATE); this->SetWidgetLoweredState(GLAND_ARCTIC, _settings_newgame.game_creation.landscape == LT_ARCTIC); @@ -600,6 +626,24 @@ ShowQueryString(STR_JUST_INT, STR_MAPGEN_SNOW_LINE_QUERY_CAPT, 3, 100, this, CS_NUMERAL, QSF_NONE); break; + case GLAND_TREE_LEVEL_DOWN: + case GLAND_TREE_LEVEL_UP: // Tree line buttons + /* Don't allow too fast scrolling */ + if ((this->flags4 & WF_TIMEOUT_MASK) <= WF_TIMEOUT_TRIGGER) { + this->HandleButtonClick(widget); + this->SetDirty(); + + _settings_newgame.game_creation.tree_line_height = Clamp(_settings_newgame.game_creation.tree_line_height + widget - GLAND_TREE_LEVEL_TEXT, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT); //TODO Find and make separate MIN/MAX values + } + _left_button_clicked = false; + break; + + case GLAND_TREE_LEVEL_TEXT: // Tree line text + this->widget_id = GLAND_TREE_LEVEL_TEXT; + SetDParam(0, _settings_newgame.game_creation.tree_line_height); + ShowQueryString(STR_JUST_INT, STR_MAPGEN_TREE_LINE_QUERY_CAPT, 3, 100, this, CS_NUMERAL, QSF_NONE); + break; + case GLAND_TREE_PULLDOWN: // Tree placer ShowDropDownMenu(this, _tree_placer, _settings_newgame.game_creation.tree_placer, GLAND_TREE_PULLDOWN, 0, 0); break; @@ -654,7 +698,7 @@ virtual void OnTimeout() { - static const int raise_widgets[] = {GLAND_START_DATE_DOWN, GLAND_START_DATE_UP, GLAND_SNOW_LEVEL_UP, GLAND_SNOW_LEVEL_DOWN, WIDGET_LIST_END}; + static const int raise_widgets[] = {GLAND_START_DATE_DOWN, GLAND_START_DATE_UP, GLAND_SNOW_LEVEL_UP, GLAND_SNOW_LEVEL_DOWN, GLAND_TREE_LEVEL_UP, GLAND_TREE_LEVEL_DOWN, WIDGET_LIST_END}; for (const int *widget = raise_widgets; *widget != WIDGET_LIST_END; widget++) { if (this->IsWidgetLowered(*widget)) { this->RaiseWidget(*widget); @@ -733,6 +777,7 @@ switch (this->widget_id) { case GLAND_START_DATE_TEXT: value = DEF_START_YEAR; break; case GLAND_SNOW_LEVEL_TEXT: value = DEF_SNOWLINE_HEIGHT; break; + case GLAND_TREE_LEVEL_TEXT: value = DEF_SNOWLINE_HEIGHT; break; //TODO Find the define and make my own case GLAND_TOWN_PULLDOWN: value = 1; break; // There's not really a default default: NOT_REACHED(); } @@ -749,6 +794,11 @@ _settings_newgame.game_creation.snow_line_height = Clamp(value, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT); break; + case GLAND_TREE_LEVEL_TEXT: + this->SetWidgetDirty(GLAND_TREE_LEVEL_TEXT); + _settings_newgame.game_creation.tree_line_height = Clamp(value, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT); //TODO MIN/MAX here too + break; + case GLAND_TOWN_PULLDOWN: _settings_newgame.game_creation.custom_town_number = Clamp(value, 1, CUSTOM_TOWN_MAX_NUMBER); break; Index: src/table/settings.h =================================================================== --- src/table/settings.h (revision 18797) +++ src/table/settings.h (working copy) @@ -429,6 +429,7 @@ SDT_CONDBOOL(GameSettings, economy.exclusive_rights, 79, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_SETTING_ALLOW_EXCLUSIVE, NULL), SDT_CONDBOOL(GameSettings, economy.give_money, 79, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_SETTING_ALLOW_GIVE_MONEY, NULL), SDT_VAR(GameSettings, game_creation.snow_line_height, SLE_UINT8, 0, 0, DEF_SNOWLINE_HEIGHT, MIN_SNOWLINE_HEIGHT, DEF_SNOWLINE_HEIGHT, 0, STR_CONFIG_SETTING_SNOWLINE_HEIGHT, NULL), + SDT_VAR(GameSettings, game_creation.tree_line_height, SLE_UINT8, 0, 0, DEF_SNOWLINE_HEIGHT, MIN_SNOWLINE_HEIGHT, DEF_SNOWLINE_HEIGHT, 0, STR_CONFIG_SETTING_TREELINE_HEIGHT,NULL), SDTC_VAR( gui.coloured_news_year, SLE_INT32, 0,NC, 2000,MIN_YEAR,MAX_YEAR,1,STR_CONFIG_SETTING_COLOURED_NEWS_YEAR, NULL), SDT_VAR(GameSettings, game_creation.starting_year, SLE_INT32, 0,NC,DEF_START_YEAR,MIN_YEAR,MAX_YEAR,1,STR_CONFIG_SETTING_STARTING_YEAR, NULL), SDT_CONDNULL( 4, 0, 104), Index: src/tree_cmd.cpp =================================================================== --- src/tree_cmd.cpp (revision 18797) +++ src/tree_cmd.cpp (working copy) @@ -69,7 +69,7 @@ case MP_CLEAR: return !IsBridgeAbove(tile) && !IsClearGround(tile, CLEAR_FIELDS) && GetRawClearGround(tile) != CLEAR_ROCKS && - (allow_desert || !IsClearGround(tile, CLEAR_DESERT)); + (allow_desert || !IsClearGround(tile, CLEAR_DESERT)) && TileHeight(tile) < _settings_game.game_creation.tree_line_height; default: return false; } Index: src/settings_type.h =================================================================== --- src/settings_type.h (revision 18797) +++ src/settings_type.h (working copy) @@ -160,6 +160,7 @@ byte land_generator; ///< the landscape generator byte oil_refinery_limit; ///< distance oil refineries allowed from map edge byte snow_line_height; ///< a number 0-15 that configured snow line height + byte tree_line_height; ///< a number 0-15 that configures tree line height byte tgen_smoothness; ///< how rough is the terrain from 0-3 byte tree_placer; ///< the tree placer algorithm byte heightmap_rotation; ///< rotation director for the heightmap