diff -r 9373964a54b1 -r f895bf254aa0 src/genworld_gui.cpp --- a/src/genworld_gui.cpp Tue May 18 01:10:23 2010 +0000 +++ b/src/genworld_gui.cpp Wed May 19 06:15:47 2010 +0200 @@ -21,6 +21,7 @@ #include "window_func.h" #include "date_func.h" #include "sound_func.h" +#include "saveload/saveload.h" #include "fios.h" #include "string_func.h" #include "widgets/dropdown_type.h" @@ -61,240 +62,295 @@ /** Widgets of GenerateLandscapeWindow */ enum GenerateLandscapeWindowWidgets { - GLAND_TEMPERATE, ///< Button with icon "Temperate" - GLAND_ARCTIC, ///< Button with icon "Arctic" - GLAND_TROPICAL, ///< Button with icon "Tropical" - GLAND_TOYLAND, ///< Button with icon "Toyland" + GLAND_TAB, ///< Tab pseudo widget (selection) - GLAND_MAPSIZE_X_PULLDOWN, ///< Dropdown 'map X size' - GLAND_MAPSIZE_Y_PULLDOWN, ///< Dropdown 'map Y size' + GLAND_TAB_MAP_TO_SETTINGS, ///< Tab button for 'settings' in map tab + GLAND_TAB_SETTINGS_TO_MAP, ///< Tab button for 'map' in settings tab - GLAND_TOWN_PULLDOWN, ///< Dropdown 'No. of towns' - GLAND_INDUSTRY_PULLDOWN, ///< Dropdown 'No. of industries' + GLAND_GENERATE_BUTTON, ///< 'Generate' button - GLAND_RANDOM_EDITBOX, ///< 'Random seed' editbox - GLAND_RANDOM_BUTTON, ///< 'Randomise' button + /* widgets for 'map' tab */ - GLAND_GENERATE_BUTTON, ///< 'Generate' button + GLAND_TEMPERATE, ///< Button with icon "Temperate" + GLAND_ARCTIC, ///< Button with icon "Arctic" + GLAND_TROPICAL, ///< Button with icon "Tropical" + GLAND_TOYLAND, ///< Button with icon "Toyland" - GLAND_START_DATE_DOWN, ///< Decrease start year - GLAND_START_DATE_TEXT, ///< Start year - GLAND_START_DATE_UP, ///< Increase start year - - GLAND_SNOW_LEVEL_DOWN, ///< Docrease snow level - GLAND_SNOW_LEVEL_TEXT, ///< Snow level - GLAND_SNOW_LEVEL_UP, ///< Increase snow level - - GLAND_TREE_PULLDOWN, ///< Dropdown 'Tree algorithm' - GLAND_LANDSCAPE_PULLDOWN, ///< Dropdown 'Land generator' + GLAND_TERRAIN_SOURCE, ///< Map source pseudo widget (selection) + GLAND_USE_TERRAGENESIS_BUTTON, ///< Use terragenesis button + GLAND_USE_ORIGINAL_BUTTON, ///< Use original terrain generator button + GLAND_USE_HEIGHTMAP_BUTTON, ///< Use heightmap button GLAND_HEIGHTMAP_NAME_TEXT, ///< Heightmap name GLAND_HEIGHTMAP_NAME_SPACER, ///< Spacer used for aligning items in the second column nicely GLAND_HEIGHTMAP_SIZE_TEXT, ///< Size of heightmap GLAND_HEIGHTMAP_ROTATION_PULLDOWN, ///< Dropdown 'Heightmap rotation' - GLAND_TERRAIN_PULLDOWN, ///< Dropdown 'Terrain type' - GLAND_WATER_PULLDOWN, ///< Dropdown 'Sea level' - GLAND_SMOOTHNESS_PULLDOWN, ///< Dropdown 'Smoothness' - GLAND_VARIETY_PULLDOWN, ///< Dropdown 'Variety distribution' + GLAND_SMOOTHNESS_PULLDOWN, ///< Dropdown 'Smoothness' + GLAND_VARIETY_PULLDOWN, ///< Dropdown 'Variety distribution' - GLAND_BORDERS_RANDOM, ///< 'Random'/'Manual' borders - GLAND_WATER_NW, ///< NW 'Water'/'Freeform' - GLAND_WATER_NE, ///< NE 'Water'/'Freeform' - GLAND_WATER_SE, ///< SE 'Water'/'Freeform' - GLAND_WATER_SW, ///< SW 'Water'/'Freeform' + GLAND_MAPSIZE_X_PULLDOWN, ///< Dropdown 'map X size' + GLAND_MAPSIZE_Y_PULLDOWN, ///< Dropdown 'map Y size' + + GLAND_SNOW_LEVEL_DOWN, ///< Docrease snow level + GLAND_SNOW_LEVEL_TEXT, ///< Snow level + GLAND_SNOW_LEVEL_UP, ///< Increase snow level + + GLAND_TERRAIN_PULLDOWN, ///< Dropdown 'Terrain type' + GLAND_WATER_PULLDOWN, ///< Dropdown 'Sea level' + GLAND_TREE_PULLDOWN, ///< Dropdown 'Tree algorithm' + + GLAND_RANDOM_EDITBOX, ///< 'Random seed' editbox + GLAND_RANDOM_BUTTON, ///< 'Randomise' button + + GLAND_BORDERS_RANDOM, ///< 'Random'/'Manual' borders + GLAND_WATER_NW, ///< NW 'Water'/'Freeform' + GLAND_WATER_NE, ///< NE 'Water'/'Freeform' + GLAND_WATER_SE, ///< SE 'Water'/'Freeform' + GLAND_WATER_SW, ///< SW 'Water'/'Freeform' + + /* widgets for 'settings' tab */ + + GLAND_START_DATE_DOWN, ///< Decrease start year + GLAND_START_DATE_TEXT, ///< Start year + GLAND_START_DATE_UP, ///< Increase start year + + GLAND_TOWN_PULLDOWN, ///< Dropdown 'No. of towns' + GLAND_INDUSTRY_PULLDOWN, ///< Dropdown 'No. of industries' }; /** Widgets of GenerateLandscapeWindow when generating world */ static const NWidgetPart _nested_generate_landscape_widgets[] = { + + /* Title bar */ NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_BROWN), NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_MAPGEN_WORLD_GENERATION_CAPTION, STR_NULL), EndContainer(), + + /* The main panel for the tabs and the bottom row with the 'generate' button */ NWidget(WWT_PANEL, COLOUR_BROWN), - NWidget(NWID_SPACER), SetMinimalSize(0, 10), - /* Landscape selection. */ - NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 10), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 11), - NWidget(NWID_HORIZONTAL), SetPIP(10, 5, 10), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), - /* Left column with labels. */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_LAND_GENERATOR, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TERRAIN_TYPE, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_RANDOM_SEED, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_SEA_LAKES, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TREE_PLACER, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_VARIETY, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BORDER_TYPE, STR_NULL), SetFill(1, 1), - EndContainer(), - /* Widgets at the right of the labels. */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - /* Mapsize X * Y. */ - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), + + /* Draw a small border around everything: top row */ + NWidget(NWID_SPACER), SetFill(1, 1), SetMinimalSize(0, 9), + NWidget(NWID_HORIZONTAL), + /* Draw a small border around everything: left column */ + NWidget(NWID_SPACER), SetFill(1, 0), SetMinimalSize(9, 0), + + /* Now follows the big tab thingy for all the things to be adjusted */ + NWidget(NWID_SELECTION, INVALID_COLOUR, GLAND_TAB), + + /* map tab */ + NWidget(WWT_TAB, COLOUR_BROWN), + /* Tab titles */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_LABEL, COLOUR_WHITE), SetDataTip(STR_MAPGEN_MAP, STR_NULL), SetFill(1, 1), SetPadding(1, 0, 0, 1), SetMinimalSize(15,15), + NWidget(WWT_TEXTBTN, COLOUR_BROWN, GLAND_TAB_MAP_TO_SETTINGS), SetDataTip(STR_MAPGEN_SETTINGS, STR_NULL), SetPadding(1, 1, 0, 0), SetFill(1, 0), SetMinimalSize(15,15), EndContainer(), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_LANDSCAPE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_EDITBOX, COLOUR_WHITE, GLAND_RANDOM_EDITBOX), SetDataTip(STR_MAPGEN_RANDOM_SEED_OSKTITLE, STR_MAPGEN_RANDOM_SEED_HELP), SetFill(1, 1), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_TREE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_VARIETY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_BORDERS_RANDOM), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - EndContainer(), - EndContainer(), - NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), + NWidget(NWID_SPACER), SetMinimalSize(0, 10), SetResize(1, 1), + /* Landscape selection. */ + NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 10), + NWidget(NWID_SPACER), SetFill(1, 0), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), + NWidget(NWID_SPACER), SetFill(1, 0), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), + NWidget(NWID_SPACER), SetFill(1, 0), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), + NWidget(NWID_SPACER), SetFill(1, 0), + NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), + NWidget(NWID_SPACER), SetFill(1, 0), + EndContainer(), + NWidget(NWID_SPACER), SetMinimalSize(0, 11), SetResize(1, 1), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 10, 10), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_USE_HEIGHTMAP_BUTTON), SetDataTip(STR_INTRO_PLAY_HEIGHTMAP, STR_INTRO_TOOLTIP_PLAY_HEIGHTMAP), SetFill(1, 1), SetPadding(0, 1, 0, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_USE_TERRAGENESIS_BUTTON), SetDataTip(STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS, STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS), SetFill(1, 1), SetPadding(0, 1, 0, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_USE_ORIGINAL_BUTTON), SetDataTip(STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL, STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL), SetFill(1, 1), SetPadding(0, 1, 0, 1), + EndContainer(), + + NWidget(NWID_SELECTION, INVALID_COLOUR, GLAND_TERRAIN_SOURCE), + + NWidget(NWID_VERTICAL), SetPIP(4, 0, 4), /* Heightmap */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 3, 10), + NWidget(WWT_TEXT), SetDataTip(STR_MAPGEN_HEIGHTMAP_NAME, STR_NULL), SetFill(1, 1), + NWidget(WWT_EMPTY, COLOUR_ORANGE, GLAND_HEIGHTMAP_NAME_TEXT), SetFill(1, 0), + NWidget(WWT_EMPTY, INVALID_COLOUR, GLAND_HEIGHTMAP_NAME_SPACER), SetFill(1, 0), + EndContainer(), + NWidget(NWID_SPACER), SetMinimalSize(0, 4), SetFill(1, 1), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 5, 10), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 3, 0), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE_LABEL, STR_NULL), SetFill(1, 1), + EndContainer(), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE, GLAND_HEIGHTMAP_SIZE_TEXT), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE, STR_NULL), SetFill(1, 0), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 3, 0), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_NULL), SetFill(1, 1), + EndContainer(), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + EndContainer(), + EndContainer(), + EndContainer(), + EndContainer(), + NWidget(NWID_VERTICAL), SetPIP(4, 0, 4), /* Original */ + EndContainer(), + NWidget(NWID_VERTICAL), SetPIP(4, 0, 4), /* Terragenesis */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 5, 10), + NWidget(NWID_VERTICAL), + EndContainer(), + NWidget(NWID_VERTICAL), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 3, 0), + NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_VARIETY, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SMOOTHNESS, STR_NULL), SetFill(1, 1), + EndContainer(), + NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_VARIETY_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(), + EndContainer(), + EndContainer(), + EndContainer(), + EndContainer(), + EndContainer(), /* end of differences between heightmap, original and terragenenesis generators */ + + /* Map size line in a separate set */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 5, 10), + NWidget(NWID_VERTICAL), SetPIP(4, 4, 4), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 3, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1), + NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), + EndContainer(), + EndContainer(), + EndContainer(), + NWidget(NWID_VERTICAL), SetPIP(4, 4, 4), + NWidget(NWID_HORIZONTAL), + NWidget(NWID_SPACER), SetFill(1, 1), SetResize(1, 1), + EndContainer(), + EndContainer(), + EndContainer(), + + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 5, 10), + NWidget(NWID_VERTICAL), SetPIP(0, 4, 0),/* left row of common widgets */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 3, 0), + /* Left column with labels. */ + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TERRAIN_TYPE, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_SEA_LAKES, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_RANDOM_SEED, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BORDER_TYPE, STR_NULL), SetFill(1, 1), + EndContainer(), + /* Widgets at the right of the labels. */ + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + /* Mapsize X * Y. */ + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + NWidget(WWT_EDITBOX, COLOUR_WHITE, GLAND_RANDOM_EDITBOX), SetDataTip(STR_MAPGEN_RANDOM_SEED_OSKTITLE, STR_MAPGEN_RANDOM_SEED_HELP), SetFill(1, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_BORDERS_RANDOM), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + EndContainer(), + EndContainer(), + EndContainer(), + NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), /* right row of common widgets */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(0, 3, 0), + NWidget(NWID_SPACER), SetMinimalSize(0, 11), SetResize(1, 1), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), /* Labels */ + 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_PLACER, STR_NULL), SetFill(1, 1), + EndContainer(), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), /* Buttons */ + /* Snow line. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1), + 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(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_TREE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + EndContainer(), + EndContainer(), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_RANDOM_BUTTON), SetDataTip(STR_MAPGEN_RANDOM, STR_MAPGEN_RANDOM_HELP), SetFill(1, 0), + EndContainer(), + EndContainer(), + + NWidget(NWID_SPACER), SetMinimalSize(0, 4), + /* Map borders buttons for each edge. */ + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), + NWidget(NWID_HORIZONTAL), SetPIP(0, 0, 3), + NWidget(NWID_SPACER), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHWEST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), + EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_WATER_NW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHWEST), SetFill(1, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_WATER_NE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHEAST), SetFill(1, 1), + NWidget(NWID_HORIZONTAL), SetPIP(3, 0, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHEAST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), + NWidget(NWID_SPACER), SetFill(1, 1), + EndContainer(), + EndContainer(), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), + NWidget(NWID_HORIZONTAL), SetPIP(0, 0, 3), + NWidget(NWID_SPACER), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHWEST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), + EndContainer(), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_WATER_SW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHWEST), SetFill(1, 1), + NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_WATER_SE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHEAST), SetFill(1, 1), + NWidget(NWID_HORIZONTAL), SetPIP(3, 0, 0), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHEAST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), + NWidget(NWID_SPACER), SetFill(1, 1), + EndContainer(), + EndContainer(), + NWidget(NWID_SPACER), SetMinimalSize(0, 9), SetFill(1, 1), + EndContainer(), /* map tab */ + + /* Settings tab */ + NWidget(WWT_TAB, COLOUR_BROWN), 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_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SMOOTHNESS, STR_NULL), SetFill(1, 1), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(WWT_TEXTBTN, COLOUR_BROWN, GLAND_TAB_SETTINGS_TO_MAP), SetDataTip(STR_MAPGEN_MAP, STR_NULL), SetPadding(1, 0, 0, 1), SetFill(1, 0), SetMinimalSize(15,15), + NWidget(WWT_LABEL, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SETTINGS, STR_NULL), SetPadding(1, 1, 0, 0), SetFill(1, 1), + EndContainer(), + + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 5, 10), + NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), + NWidget(NWID_VERTICAL), 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_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1), + NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1), + EndContainer(), + NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), + /* Starting date. */ + NWidget(NWID_HORIZONTAL), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), + NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_START_DATE_TEXT), SetDataTip(STR_BLACK_DATE_LONG, STR_NULL), SetFill(1, 0), + NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), + EndContainer(), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), + EndContainer(), + EndContainer(), + NWidget(NWID_SPACER), SetMinimalSize(1, 0), SetFill(1, 0), + EndContainer(), EndContainer(), - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - /* Starting date. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_START_DATE_TEXT), SetDataTip(STR_BLACK_DATE_LONG, STR_NULL), SetFill(1, 0), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), - EndContainer(), - /* Snow line. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1), - 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(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(), - EndContainer(), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_RANDOM_BUTTON), SetDataTip(STR_MAPGEN_RANDOM, STR_MAPGEN_RANDOM_HELP), SetFill(1, 0), - NWidget(NWID_SPACER), SetFill(1, 1), - NWidget(WWT_TEXTBTN, COLOUR_GREEN, GLAND_GENERATE_BUTTON), SetMinimalSize(84, 30), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 0), - EndContainer(), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 4), - /* Map borders buttons for each edge. */ - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), - NWidget(NWID_HORIZONTAL), SetPIP(0, 0, 3), - NWidget(NWID_SPACER), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHWEST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), - EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_WATER_NW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHWEST), SetFill(1, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_WATER_NE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_NORTHEAST), SetFill(1, 1), - NWidget(NWID_HORIZONTAL), SetPIP(3, 0, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NORTHEAST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), - NWidget(NWID_SPACER), SetFill(1, 1), - EndContainer(), - EndContainer(), - NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(10, 0, 10), - NWidget(NWID_HORIZONTAL), SetPIP(0, 0, 3), - NWidget(NWID_SPACER), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHWEST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), - EndContainer(), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_WATER_SW), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHWEST), SetFill(1, 1), - NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, GLAND_WATER_SE), SetDataTip(STR_JUST_STRING, STR_MAPGEN_SOUTHEAST), SetFill(1, 1), - NWidget(NWID_HORIZONTAL), SetPIP(3, 0, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SOUTHEAST, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(0, 1), - NWidget(NWID_SPACER), SetFill(1, 1), - EndContainer(), + NWidget(NWID_SPACER), SetMinimalSize(0, 9), SetFill(1, 1), + EndContainer(), /* settings tab */ + + EndContainer(), /* tabs */ + NWidget(NWID_SPACER), SetFill(1, 0), SetMinimalSize(9, 0), + EndContainer(), /* horizonal */ + + /* bottom line */ + NWidget(NWID_SPACER), SetMinimalSize(0, 4), SetFill(1, 1), + NWidget(NWID_HORIZONTAL), + NWidget(NWID_SPACER), SetMinimalSize(9, 10), SetFill(1, 1), + NWidget(WWT_TEXTBTN, COLOUR_GREEN, GLAND_GENERATE_BUTTON), SetMinimalSize(84, 30), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 0), + NWidget(NWID_SPACER), SetMinimalSize(9, 10), EndContainer(), NWidget(NWID_SPACER), SetMinimalSize(0, 9), SetFill(1, 1), - EndContainer(), -}; - -/** Widgets of GenerateLandscapeWindow when loading heightmap */ -static const NWidgetPart _nested_heightmap_load_widgets[] = { - /* Window header. */ - NWidget(NWID_HORIZONTAL), - NWidget(WWT_CLOSEBOX, COLOUR_BROWN), - NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_MAPGEN_WORLD_GENERATION_CAPTION, STR_NULL), - EndContainer(), - NWidget(WWT_PANEL, COLOUR_BROWN), - NWidget(NWID_SPACER), SetMinimalSize(0, 10), - /* Landscape selection. */ - NWidget(NWID_HORIZONTAL), SetPIP(10, 0, 10), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_TEMPERATE), SetDataTip(SPR_SELECT_TEMPERATE, STR_INTRO_TOOLTIP_TEMPERATE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_ARCTIC), SetDataTip(SPR_SELECT_SUB_ARCTIC, STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_TROPICAL), SetDataTip(SPR_SELECT_SUB_TROPICAL, STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - NWidget(WWT_IMGBTN_2, COLOUR_ORANGE, GLAND_TOYLAND), SetDataTip(SPR_SELECT_TOYLAND, STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE), - NWidget(NWID_SPACER), SetFill(1, 0), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 11), SetFill(0, 1), - NWidget(NWID_HORIZONTAL), SetPIP(10, 3, 10), - /* Labels at the left side. */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_NAME, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, 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_RANDOM_SEED, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TREE_PLACER, STR_NULL), SetFill(1, 1), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_NULL), SetFill(1, 1), - EndContainer(), - /* Widgets at the right of the labels. */ - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - NWidget(WWT_EMPTY, COLOUR_ORANGE, GLAND_HEIGHTMAP_NAME_TEXT), SetFill(1, 0), - /* Mapsize X * Y. */ - NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetPadding(1, 0, 0, 0), SetFill(1, 1), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 0), - EndContainer(), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_EDITBOX, COLOUR_WHITE, GLAND_RANDOM_EDITBOX), SetDataTip(STR_MAPGEN_RANDOM_SEED_OSKTITLE, STR_MAPGEN_RANDOM_SEED_HELP), SetFill(1, 1), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_TREE_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - NWidget(WWT_DROPDOWN, COLOUR_ORANGE, GLAND_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 0), - EndContainer(), - NWidget(NWID_VERTICAL), SetPIP(0, 4, 0), - NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0), - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - NWidget(WWT_EMPTY, INVALID_COLOUR, GLAND_HEIGHTMAP_NAME_SPACER), SetFill(1, 0), - 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), - EndContainer(), - NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0), - NWidget(WWT_EMPTY, INVALID_COLOUR, GLAND_HEIGHTMAP_NAME_SPACER), SetFill(1, 0), - NWidget(WWT_TEXT, COLOUR_ORANGE, GLAND_HEIGHTMAP_SIZE_TEXT), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE, STR_NULL), SetFill(1, 0), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_START_DATE_TEXT), SetDataTip(STR_BLACK_DATE_LONG, STR_NULL), SetFill(1, 0), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1), - EndContainer(), - NWidget(NWID_HORIZONTAL), - NWidget(WWT_IMGBTN, COLOUR_ORANGE, GLAND_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1), - 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(), - EndContainer(), - EndContainer(), - NWidget(WWT_TEXTBTN, COLOUR_ORANGE, GLAND_RANDOM_BUTTON), SetDataTip(STR_MAPGEN_RANDOM, STR_MAPGEN_RANDOM_HELP), SetFill(1, 0), - NWidget(WWT_TEXTBTN, COLOUR_GREEN, GLAND_GENERATE_BUTTON), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 1), - EndContainer(), - EndContainer(), - NWidget(NWID_SPACER), SetMinimalSize(0, 9), SetFill(1, 1), - EndContainer(), + EndContainer(), /* Main panel for everything */ }; static void StartGeneratingLandscape(GenenerateLandscapeWindowMode mode) @@ -337,12 +393,23 @@ static const StringID _smoothness[] = {STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH, INVALID_STRING_ID}; static const StringID _tree_placer[] = {STR_CONFIG_SETTING_TREE_PLACER_NONE, STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL, STR_CONFIG_SETTING_TREE_PLACER_IMPROVED, INVALID_STRING_ID}; static const StringID _rotation[] = {STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE, STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE, INVALID_STRING_ID}; -static const StringID _landscape[] = {STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL, STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS, INVALID_STRING_ID}; static const StringID _num_towns[] = {STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, STR_NUM_CUSTOM, INVALID_STRING_ID}; static const StringID _num_inds[] = {STR_NONE, STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, INVALID_STRING_ID}; static const StringID _variety[] = {STR_VARIETY_NONE, STR_VARIETY_VERY_LOW, STR_VARIETY_LOW, STR_VARIETY_MEDIUM, STR_VARIETY_HIGH, STR_VARIETY_VERY_HIGH, INVALID_STRING_ID}; struct GenerateLandscapeWindow : public QueryStringBaseWindow { + enum selection_plane { + SELPLANE_MAP = 0, ///< Show settings directly relating to the map and landscape + SELPLANE_SETTINGS = 1, ///< Show general game behaviour settings + }; + enum landscape_source_display { + USE_HEIGHTMAP = 0, ///< Use heightmap + USE_ORIGINAL = 1, ///< Use orignal land generator + USE_TERRAGENESIS = 2, ///< Use terragenesis land generator + }; + + int active_tab; + int landscape_source; uint widget_id; uint x; uint y; @@ -361,8 +428,10 @@ this->SetFocusedWidget(GLAND_RANDOM_EDITBOX); this->caption = STR_NULL; this->afilter = CS_NUMERAL; + this->active_tab = SELPLANE_MAP; this->mode = (GenenerateLandscapeWindowMode)this->window_number; + this->landscape_source = ((mode == GLWM_HEIGHTMAP) ? USE_HEIGHTMAP : (_settings_newgame.game_creation.land_generator == 0 ? USE_ORIGINAL : USE_TERRAGENESIS)); } @@ -375,7 +444,6 @@ case GLAND_SNOW_LEVEL_TEXT: SetDParam(0, _settings_newgame.game_creation.snow_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; case GLAND_TREE_PULLDOWN: SetDParam(0, _tree_placer[_settings_newgame.game_creation.tree_placer]); break; case GLAND_TERRAIN_PULLDOWN: SetDParam(0, _elevations[_settings_newgame.difficulty.terrain_type]); break; case GLAND_WATER_PULLDOWN: SetDParam(0, _sea_lakes[_settings_newgame.difficulty.quantity_sea_lakes]); break; @@ -428,7 +496,6 @@ case GLAND_TOWN_PULLDOWN: strs = _num_towns; break; case GLAND_INDUSTRY_PULLDOWN: strs = _num_inds; break; - case GLAND_LANDSCAPE_PULLDOWN: strs = _landscape; break; case GLAND_TREE_PULLDOWN: strs = _tree_placer; break; case GLAND_TERRAIN_PULLDOWN: strs = _elevations; break; case GLAND_WATER_PULLDOWN: strs = _sea_lakes; break; @@ -479,14 +546,30 @@ virtual void OnPaint() { - /* You can't select smoothness / non-water borders if not terragenesis */ + NWidgetStacked *wi = this->GetWidget(GLAND_TAB); + if (this->active_tab != wi->shown_plane) { + wi->SetDisplayedPlane(this->active_tab); + this->SetDirty(); + return; + } + wi = this->GetWidget(GLAND_TERRAIN_SOURCE); + if (this->landscape_source != wi->shown_plane) { + wi->SetDisplayedPlane(this->landscape_source); + this->SetDirty(); + return; + } + this->SetWidgetLoweredState(GLAND_USE_HEIGHTMAP_BUTTON, this->landscape_source == USE_HEIGHTMAP); + this->SetWidgetLoweredState(GLAND_USE_ORIGINAL_BUTTON, this->landscape_source == USE_ORIGINAL); + this->SetWidgetLoweredState(GLAND_USE_TERRAGENESIS_BUTTON, this->landscape_source == USE_TERRAGENESIS); + + /* You can't select smoothness / variety distribution / non-water borders if not terragenesis */ + this->SetWidgetDisabledState(GLAND_SMOOTHNESS_PULLDOWN, _settings_newgame.game_creation.land_generator == 0 || mode == GLWM_HEIGHTMAP); + this->SetWidgetDisabledState(GLAND_VARIETY_PULLDOWN, _settings_newgame.game_creation.land_generator == 0 || mode == GLWM_HEIGHTMAP); + + this->SetWidgetDisabledState(GLAND_BORDERS_RANDOM, _settings_newgame.game_creation.land_generator == 0 || !_settings_newgame.construction.freeform_edges); if (mode == GLWM_GENERATE) { - this->SetWidgetDisabledState(GLAND_SMOOTHNESS_PULLDOWN, _settings_newgame.game_creation.land_generator == 0); - this->SetWidgetDisabledState(GLAND_VARIETY_PULLDOWN, _settings_newgame.game_creation.land_generator == 0); - this->SetWidgetDisabledState(GLAND_BORDERS_RANDOM, _settings_newgame.game_creation.land_generator == 0 || !_settings_newgame.construction.freeform_edges); this->SetWidgetsDisabledState(_settings_newgame.game_creation.land_generator == 0 || !_settings_newgame.construction.freeform_edges || _settings_newgame.game_creation.water_borders == BORDERS_RANDOM, GLAND_WATER_NW, GLAND_WATER_NE, GLAND_WATER_SE, GLAND_WATER_SW, WIDGET_LIST_END); - this->SetWidgetLoweredState(GLAND_BORDERS_RANDOM, _settings_newgame.game_creation.water_borders == BORDERS_RANDOM); this->SetWidgetLoweredState(GLAND_WATER_NW, HasBit(_settings_newgame.game_creation.water_borders, BORDER_NW)); @@ -516,12 +599,47 @@ this->DrawWidgets(); - this->DrawEditBox(GLAND_RANDOM_EDITBOX); + /* We need to paint that over the text area - but only for the correct tab */ + if (active_tab == SELPLANE_MAP) this->DrawEditBox(GLAND_RANDOM_EDITBOX); + } virtual void OnClick(Point pt, int widget, int click_count) { switch (widget) { + case GLAND_USE_HEIGHTMAP_BUTTON: + /* Use the mode as a hack to determine whether a file was selected or not: + * First set the mode to invalid and see whether it changed: + * - If the mode is still invalid we don't change the mode to use a + * heightmap but remain in the currently selected mode + * - If the mode changed, a heightmap was selected and we use that */ + _file_to_saveload.mode = SL_INVALID; + ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); + if (_file_to_saveload.mode == SL_INVALID) break; + mode = GLWM_HEIGHTMAP; + this->landscape_source = USE_HEIGHTMAP; + Window::SetDirty(); + break; + case GLAND_USE_TERRAGENESIS_BUTTON: + mode = GLWM_GENERATE; + this->landscape_source = USE_TERRAGENESIS; + Window::SetDirty(); + break; + case GLAND_USE_ORIGINAL_BUTTON: + mode = GLWM_GENERATE; + this->landscape_source = USE_ORIGINAL; + Window::SetDirty(); + break; + + case GLAND_TAB_SETTINGS_TO_MAP: + this->active_tab = SELPLANE_MAP; + Window::SetDirty(); + break; + case GLAND_TAB_MAP_TO_SETTINGS: + this->active_tab = SELPLANE_SETTINGS; + Window::SetDirty(); + break; + case GLAND_TEMPERATE: case GLAND_ARCTIC: case GLAND_TROPICAL: @@ -611,10 +729,6 @@ ShowDropDownMenu(this, _tree_placer, _settings_newgame.game_creation.tree_placer, GLAND_TREE_PULLDOWN, 0, 0); break; - case GLAND_LANDSCAPE_PULLDOWN: // Landscape generator - ShowDropDownMenu(this, _landscape, _settings_newgame.game_creation.land_generator, GLAND_LANDSCAPE_PULLDOWN, 0, 0); - break; - case GLAND_HEIGHTMAP_ROTATION_PULLDOWN: // Heightmap rotation ShowDropDownMenu(this, _rotation, _settings_newgame.game_creation.heightmap_rotation, GLAND_HEIGHTMAP_ROTATION_PULLDOWN, 0, 0); break; @@ -695,7 +809,6 @@ case GLAND_TREE_PULLDOWN: _settings_newgame.game_creation.tree_placer = index; break; case GLAND_SMOOTHNESS_PULLDOWN: _settings_newgame.game_creation.tgen_smoothness = index; break; case GLAND_VARIETY_PULLDOWN: _settings_newgame.game_creation.variety = index; break; - case GLAND_LANDSCAPE_PULLDOWN: _settings_newgame.game_creation.land_generator = index; break; case GLAND_HEIGHTMAP_ROTATION_PULLDOWN: _settings_newgame.game_creation.heightmap_rotation = index; break; case GLAND_TOWN_PULLDOWN: @@ -778,7 +891,7 @@ WDP_CENTER, 0, 0, WC_GENERATE_LANDSCAPE, WC_NONE, WDF_UNCLICK_BUTTONS, - _nested_heightmap_load_widgets, lengthof(_nested_heightmap_load_widgets) + _nested_generate_landscape_widgets, lengthof(_nested_generate_landscape_widgets) ); static void _ShowGenerateLandscape(GenenerateLandscapeWindowMode mode) diff -r 9373964a54b1 -r f895bf254aa0 src/lang/english.txt --- a/src/lang/english.txt Tue May 18 01:10:23 2010 +0000 +++ b/src/lang/english.txt Wed May 19 06:15:47 2010 +0200 @@ -1148,8 +1148,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :{LTBLUE}Show town population in the town name label: {ORANGE}{STRING1} STR_CONFIG_SETTING_LAND_GENERATOR :{LTBLUE}Land generator: {ORANGE}{STRING1} -STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original -STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis +STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :{BLACK}Original +STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :{BLACK}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_ROUGHNESS_OF_TERRAIN :{LTBLUE}Roughness of terrain (TerraGenesis only) : {ORANGE}{STRING1} @@ -2249,6 +2249,12 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Enter a name for the savegame +# Game creation dialogue +STR_MAPGEN_MAP :{BLACK}Map +STR_MAPGEN_SETTINGS :{BLACK}Gameplay Settings +STR_MAPGEN_NEWGRF :{BLACK}NewGRF +STR_MAPGEN_AI :{BLACK}AI + # World generation STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}World Generation STR_MAPGEN_MAPSIZE :{BLACK}Map size: diff -r 9373964a54b1 -r f895bf254aa0 src/widget.cpp --- a/src/widget.cpp Tue May 18 01:10:23 2010 +0000 +++ b/src/widget.cpp Wed May 19 06:15:47 2010 +0200 @@ -201,6 +201,7 @@ void DrawFrameRect(int left, int top, int right, int bottom, Colours colour, FrameFlags flags) { uint dark = _colour_gradient[colour][3]; + uint darker = _colour_gradient[colour][4]; uint medium_dark = _colour_gradient[colour][5]; uint medium_light = _colour_gradient[colour][6]; uint light = _colour_gradient[colour][7]; @@ -215,7 +216,7 @@ GfxFillRect(left + 1, top, right, top, dark); GfxFillRect(right, top + 1, right, bottom - 1, light); GfxFillRect(left + 1, bottom, right, bottom, light); - interior = (flags & FR_DARKENED ? medium_dark : medium_light); + interior = (flags & FR_DARKENED ? medium_dark : (flags & FR_DARKER ? darker : medium_light)); } else { GfxFillRect(left, top, left, bottom - 1, light); GfxFillRect(left + 1, top, right - 1, top, light); @@ -276,6 +277,18 @@ } /** + * Draw a tab widget. + * @param r Rectangle of the background. + * @param colour Colour of the inset. + * @param str Text to draw. + */ +static inline void DrawTab(const Rect &r, Colours colour, StringID str) +{ + DrawFrameRect(r.left, r.top, r.right, r.bottom, colour, FR_LOWERED | FR_DARKER); + if (str != STR_NULL) DrawString(r.left + WD_INSET_LEFT, r.right - WD_INSET_RIGHT, r.top + WD_INSET_TOP, str); +} + +/** * Draw an inset widget. * @param r Rectangle of the background. * @param colour Colour of the inset. @@ -1409,7 +1422,7 @@ */ NWidgetBackground::NWidgetBackground(WidgetType tp, Colours colour, int index, NWidgetPIPContainer *child) : NWidgetCore(tp, colour, 1, 1, 0x0, STR_NULL) { - assert(tp == WWT_PANEL || tp == WWT_INSET || tp == WWT_FRAME); + assert(tp == WWT_PANEL || tp == WWT_INSET || tp == WWT_FRAME || tp == WWT_TAB); if (index >= 0) this->SetIndex(index); this->child = child; } @@ -1486,7 +1499,7 @@ Dimension fill = {this->fill_x, this->fill_y}; Dimension resize = {this->resize_x, this->resize_y}; if (w != NULL) { // A non-NULL window pointer acts as switch to turn dynamic widget size on. - if (this->type == WWT_FRAME || this->type == WWT_INSET) { + if (this->type == WWT_FRAME || this->type == WWT_INSET || this->type == WWT_TAB) { if (this->index >= 0) w->SetStringParameters(this->index); Dimension background = GetStringBoundingBox(this->widget_data); background.width += (this->type == WWT_FRAME) ? (WD_FRAMETEXT_LEFT + WD_FRAMERECT_RIGHT) : (WD_INSET_LEFT + WD_INSET_RIGHT); @@ -1553,6 +1566,11 @@ DrawInset(r, this->colour, this->widget_data); break; + case WWT_TAB: + if (this->index >= 0) w->SetStringParameters(this->index); + DrawTab(r, this->colour, this->widget_data); + break; + default: NOT_REACHED(); } @@ -2170,6 +2188,7 @@ case WWT_PANEL: case WWT_INSET: + case WWT_TAB: case WWT_FRAME: if (*dest != NULL) return num_used; *dest = new NWidgetBackground(parts->type, parts->u.widget.colour, parts->u.widget.index); @@ -2312,7 +2331,7 @@ /* If sub-widget is a container, recursively fill that container. */ WidgetType tp = sub_widget->type; if (fill_sub && (tp == NWID_HORIZONTAL || tp == NWID_HORIZONTAL_LTR || tp == NWID_VERTICAL - || tp == WWT_PANEL || tp == WWT_FRAME || tp == WWT_INSET || tp == NWID_SELECTION)) { + || tp == WWT_PANEL || tp == WWT_FRAME || tp == WWT_INSET || tp == WWT_TAB || tp == NWID_SELECTION)) { NWidgetBase *sub_ptr = sub_widget; int num_used = MakeWidgetTree(parts, count - total_used, &sub_ptr, biggest_index); parts += num_used; diff -r 9373964a54b1 -r f895bf254aa0 src/widget_type.h --- a/src/widget_type.h Tue May 18 01:10:23 2010 +0000 +++ b/src/widget_type.h Wed May 19 06:15:47 2010 +0200 @@ -48,6 +48,7 @@ WWT_PANEL, ///< Simple depressed panel WWT_INSET, ///< Pressed (inset) panel, most commonly used as combo box _text_ area + WWT_TAB, ///< Pressed (tab) panel with darker background than inset WWT_IMGBTN, ///< Button with image WWT_IMGBTN_2, ///< Button with diff image when clicked @@ -698,7 +699,7 @@ /** * Widget part function for denoting the end of a container - * (horizontal, vertical, WWT_FRAME, WWT_INSET, or WWT_PANEL). + * (horizontal, vertical, WWT_FRAME, WWT_INSET, WWT_TAB, or WWT_PANEL). * @ingroup NestedWidgetParts */ static inline NWidgetPart EndContainer() diff -r 9373964a54b1 -r f895bf254aa0 src/window_gui.h --- a/src/window_gui.h Tue May 18 01:10:23 2010 +0000 +++ b/src/window_gui.h Wed May 19 06:15:47 2010 +0200 @@ -28,6 +28,7 @@ FR_BORDERONLY = 1 << 4, ///< Draw border only, no background FR_LOWERED = 1 << 5, ///< If set the frame is lowered and the background colour brighter (ie. buttons when pressed) FR_DARKENED = 1 << 6, ///< If set the background is darker, allows for lowered frames with normal background colour when used with FR_LOWERED (ie. dropdown boxes) + FR_DARKER = 1 << 7, ///< Even darker background for tabs }; DECLARE_ENUM_AS_BIT_SET(FrameFlags)