summaryrefslogtreecommitdiff
path: root/src/genworld_gui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/genworld_gui.cpp')
-rw-r--r--src/genworld_gui.cpp112
1 files changed, 43 insertions, 69 deletions
diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp
index 3131b95f4..4250a37a4 100644
--- a/src/genworld_gui.cpp
+++ b/src/genworld_gui.cpp
@@ -46,7 +46,6 @@ typedef enum glwp_modes {
static uint _heightmap_x = 0;
static uint _heightmap_y = 0;
static StringID _heightmap_str = STR_NULL;
-static bool _goto_editor = false;
extern void SwitchMode(int new_mode);
@@ -57,8 +56,7 @@ static inline void SetNewLandscapeType(byte landscape)
InvalidateWindowClasses(WC_GENERATE_LANDSCAPE);
}
-// no longer static to allow calling from outside module
-const Widget _generate_landscape_widgets[] = {
+static const Widget _generate_landscape_widgets[] = {
{ WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_WORLD_GENERATION_CAPTION, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 267, 0x0, STR_NULL},
@@ -105,7 +103,7 @@ const Widget _generate_landscape_widgets[] = {
{ WIDGETS_END},
};
-const Widget _heightmap_load_widgets[] = {
+static const Widget _heightmap_load_widgets[] = {
{ WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_WORLD_GENERATION_CAPTION, STR_NULL},
{ WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 235, 0x0, STR_NULL},
@@ -148,13 +146,6 @@ const Widget _heightmap_load_widgets[] = {
static void StartGeneratingLandscape(glwp_modes mode)
{
- /* If we want to go to the editor, and aren't yet, we need to delay
- * it as long as possible, else it gives nasty side-effects (aborting
- * results in ending up in the SE, which you don't want. Therefor we
- * use this switch to do it at the very end.
- */
- if (_goto_editor) _game_mode = GM_EDITOR;
-
DeleteWindowByClass(WC_GENERATE_LANDSCAPE);
DeleteWindowByClass(WC_INDUSTRY_VIEW);
DeleteWindowByClass(WC_TOWN_VIEW);
@@ -168,10 +159,10 @@ static void StartGeneratingLandscape(glwp_modes mode)
SndPlayFx(SND_15_BEEP);
switch (mode) {
- case GLWP_GENERATE: _switch_mode = (_game_mode == GM_EDITOR) ? SM_GENRANDLAND : SM_NEWGAME; break;
- case GLWP_HEIGHTMAP: _switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_HEIGHTMAP : SM_START_HEIGHTMAP; break;
- case GLWP_SCENARIO: _switch_mode = SM_EDITOR; break;
- default: NOT_REACHED(); return;
+ case GLWP_GENERATE: _switch_mode = (_game_mode == GM_EDITOR) ? SM_GENRANDLAND : SM_NEWGAME; break;
+ case GLWP_HEIGHTMAP: _switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_HEIGHTMAP : SM_START_HEIGHTMAP; break;
+ case GLWP_SCENARIO: break;
+ default: NOT_REACHED();
}
}
@@ -180,7 +171,7 @@ static void HeightmapScaledTooMuchCallback(Window *w, bool confirmed)
if (confirmed) StartGeneratingLandscape((glwp_modes)w->window_number);
}
-void GenerateLandscapeWndProc(Window *w, WindowEvent *e)
+static void GenerateLandscapeWndProc(Window *w, WindowEvent *e)
{
static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID};
static const StringID elevations[] = {STR_682A_VERY_FLAT, STR_682B_FLAT, STR_682C_HILLY, STR_682D_MOUNTAINOUS, INVALID_STRING_ID};
@@ -471,7 +462,7 @@ void GenerateLandscapeWndProc(Window *w, WindowEvent *e)
}
}
-const WindowDesc _generate_landscape_desc = {
+static const WindowDesc _generate_landscape_desc = {
WDP_CENTER, WDP_CENTER, 338, 268,
WC_GENERATE_LANDSCAPE, WC_NONE,
WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
@@ -479,22 +470,19 @@ const WindowDesc _generate_landscape_desc = {
GenerateLandscapeWndProc,
};
-const WindowDesc _heightmap_load_desc = {
+static const WindowDesc _heightmap_load_desc = {
WDP_CENTER, WDP_CENTER, 338, 236,
WC_GENERATE_LANDSCAPE, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
+ WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
_heightmap_load_widgets,
GenerateLandscapeWndProc,
};
static void _ShowGenerateLandscape(glwp_modes mode)
{
- Window *w;
-
- /* Don't kill WC_GENERATE_LANDSCAPE:GLWP_SCENARIO, because it resets
- * _goto_editor, which we maybe need later on. */
DeleteWindowById(WC_GENERATE_LANDSCAPE, GLWP_GENERATE);
DeleteWindowById(WC_GENERATE_LANDSCAPE, GLWP_HEIGHTMAP);
+ DeleteWindowById(WC_GENERATE_LANDSCAPE, GLWP_SCENARIO);
/* Always give a new seed if not editor */
if (_game_mode != GM_EDITOR) _patches_newgame.generation_seed = InteractiveRandom();
@@ -510,12 +498,9 @@ static void _ShowGenerateLandscape(glwp_modes mode)
return;
}
- w = AllocateWindowDescFront((mode == GLWP_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc, mode);
-
- if (w != NULL) {
+ Window *w = AllocateWindowDescFront((mode == GLWP_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc, mode);
- InvalidateWindow(WC_GENERATE_LANDSCAPE, mode);
- }
+ if (w != NULL) InvalidateWindow(WC_GENERATE_LANDSCAPE, mode);
}
void ShowGenerateLandscape(void)
@@ -541,13 +526,12 @@ enum CreateScenarioWindowWidgets {
CSCEN_ARCTIC,
CSCEN_TROPICAL,
CSCEN_TOYLAND,
+ CSCEN_EMPTY_WORLD,
+ CSCEN_RANDOM_WORLD,
CSCEN_MAPSIZE_X_TEXT,
CSCEN_MAPSIZE_X_PULLDOWN,
CSCEN_MAPSIZE_Y_TEXT,
CSCEN_MAPSIZE_Y_PULLDOWN,
- CSCEN_EMPTY_WORLD,
- CSCEN_RANDOM_WORLD,
- CSCEN_HEIGHTMAP,
CSCEN_START_DATE_DOWN,
CSCEN_START_DATE_TEXT,
CSCEN_START_DATE_UP,
@@ -556,7 +540,8 @@ enum CreateScenarioWindowWidgets {
CSCEN_FLAT_LAND_HEIGHT_UP
};
-void CreateScenarioWndProc(Window *w, WindowEvent *e)
+
+static void CreateScenarioWndProc(Window *w, WindowEvent *e)
{
static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID};
@@ -575,23 +560,22 @@ void CreateScenarioWndProc(Window *w, WindowEvent *e)
SetWindowWidgetLoweredState(w, CSCEN_TOYLAND, _opt_newgame.landscape == LT_CANDY);
DrawWindowWidgets(w);
- DrawString( 12, 96, STR_MAPSIZE, 0);
- DrawString(167, 96, mapsizes[_patches_newgame.map_x - 6], 0x10);
- DrawString(216, 96, STR_BY, 0);
- DrawString(230, 96, mapsizes[_patches_newgame.map_y - 6], 0x10);
+ DrawStringRightAligned(211, 97, STR_MAPSIZE, 0);
+ DrawString( 221, 97, mapsizes[_patches_newgame.map_x - 6], 0x10);
+ DrawStringCentered( 272, 97, STR_BY, 0);
+ DrawString( 284, 97, mapsizes[_patches_newgame.map_y - 6], 0x10);
- DrawString(162, 118, STR_DATE, 0);
+ DrawStringRightAligned(211, 115, STR_DATE, 0);
SetDParam(0, ConvertYMDToDate(_patches_newgame.starting_year, 0, 1));
- DrawStringCentered(271, 118, STR_GENERATE_DATE, 0);
+ DrawStringCentered(271, 115, STR_GENERATE_DATE, 0);
- DrawString(162, 136, STR_FLAT_WORLD_HEIGHT, 0);
+ DrawStringRightAligned(278, 133, STR_FLAT_WORLD_HEIGHT, 0);
SetDParam(0, _patches_newgame.se_flat_world_height);
- DrawStringCentered(303, 136, STR_FLAT_WORLD_HEIGHT_NUM, 0x10);
+ DrawStringCentered(303, 133, STR_FLAT_WORLD_HEIGHT_NUM, 0x10);
break;
case WE_CLICK:
switch (e->we.click.widget) {
- case 0: DeleteWindow(w); break;
case CSCEN_TEMPERATE: case CSCEN_ARCTIC: case CSCEN_TROPICAL: case CSCEN_TOYLAND:
RaiseWindowWidget(w, _opt_newgame.landscape + CSCEN_TEMPERATE);
SetNewLandscapeType(e->we.click.widget - CSCEN_TEMPERATE);
@@ -606,13 +590,8 @@ void CreateScenarioWndProc(Window *w, WindowEvent *e)
StartGeneratingLandscape(GLWP_SCENARIO);
break;
case CSCEN_RANDOM_WORLD: // Generate
- _goto_editor = true;
ShowGenerateLandscape();
break;
- case CSCEN_HEIGHTMAP: // Heightmap
- _goto_editor = true;
- ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP);
- break;
case CSCEN_START_DATE_DOWN: case CSCEN_START_DATE_UP: // Year buttons
/* Don't allow too fast scrolling */
if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
@@ -648,16 +627,12 @@ void CreateScenarioWndProc(Window *w, WindowEvent *e)
case WE_DROPDOWN_SELECT:
switch (e->we.dropdown.button) {
- case CSCEN_MAPSIZE_X_PULLDOWN: _patches_newgame.map_x = e->we.dropdown.index + 6; break;
+ case CSCEN_MAPSIZE_X_PULLDOWN: _patches_newgame.map_x = e->we.dropdown.index + 6; break;
case CSCEN_MAPSIZE_Y_PULLDOWN: _patches_newgame.map_y = e->we.dropdown.index + 6; break;
}
SetWindowDirty(w);
break;
- case WE_DESTROY:
- _goto_editor = false;
- break;
-
case WE_ON_EDIT_TEXT: {
if (e->we.edittext.str != NULL) {
int32 value = atoi(e->we.edittext.str);
@@ -680,39 +655,38 @@ void CreateScenarioWndProc(Window *w, WindowEvent *e)
}
}
-const Widget _create_scenario_widgets[] = {
+static const Widget _create_scenario_widgets[] = {
{ WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
{ WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_SE_CAPTION, STR_NULL},
-{ WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 179, 0x0, STR_NULL},
+{ WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 169, 0x0, STR_NULL},
{ WWT_IMGBTN_2, RESIZE_NONE, 12, 10, 86, 24, 78, SPR_SELECT_TEMPERATE, STR_030E_SELECT_TEMPERATE_LANDSCAPE},
{ WWT_IMGBTN_2, RESIZE_NONE, 12, 90, 166, 24, 78, SPR_SELECT_SUB_ARCTIC, STR_030F_SELECT_SUB_ARCTIC_LANDSCAPE},
{ WWT_IMGBTN_2, RESIZE_NONE, 12, 170, 246, 24, 78, SPR_SELECT_SUB_TROPICAL, STR_0310_SELECT_SUB_TROPICAL_LANDSCAPE},
{ WWT_IMGBTN_2, RESIZE_NONE, 12, 250, 326, 24, 78, SPR_SELECT_TOYLAND, STR_0311_SELECT_TOYLAND_LANDSCAPE},
-{ WWT_PANEL, RESIZE_NONE, 12, 162, 197, 95, 106, 0x0, STR_NULL},
-{ WWT_TEXTBTN, RESIZE_NONE, 12, 198, 209, 95, 106, STR_0225, STR_NULL}, // Mapsize X
-{ WWT_PANEL, RESIZE_NONE, 12, 228, 263, 95, 106, 0x0, STR_NULL},
-{ WWT_TEXTBTN, RESIZE_NONE, 12, 264, 275, 95, 106, STR_0225, STR_NULL}, // Mapsize Y
+{ WWT_TEXTBTN, RESIZE_NONE, 6, 12, 115, 95, 124, STR_SE_FLAT_WORLD, STR_SE_FLAT_WORLD_TIP}, // Empty (sea-level) map
+{ WWT_TEXTBTN, RESIZE_NONE, 6, 12, 115, 131, 160, STR_SE_RANDOM_LAND, STR_022A_GENERATE_RANDOM_LAND}, // Generate
-{ WWT_TEXTBTN, RESIZE_NONE, 6, 12, 145, 117, 128, STR_SE_FLAT_WORLD, STR_SE_FLAT_WORLD_TIP}, // Empty (sea-level) map
-{ WWT_TEXTBTN, RESIZE_NONE, 6, 12, 145, 135, 146, STR_SE_RANDOM_LAND, STR_022A_GENERATE_RANDOM_LAND}, // Generate
-{ WWT_TEXTBTN, RESIZE_NONE, 6, 12, 145, 153, 164, STR_LOAD_GAME_HEIGHTMAP, STR_LOAD_SCEN_HEIGHTMAP}, // Heightmap
+{ WWT_PANEL, RESIZE_NONE, 12, 216, 251, 95, 106, 0x0, STR_NULL},
+{ WWT_TEXTBTN, RESIZE_NONE, 12, 252, 263, 95, 106, STR_0225, STR_NULL}, // Mapsize X
+{ WWT_PANEL, RESIZE_NONE, 12, 279, 314, 95, 106, 0x0, STR_NULL},
+{ WWT_TEXTBTN, RESIZE_NONE, 12, 315, 326, 95, 106, STR_0225, STR_NULL}, // Mapsize Y
-{ WWT_IMGBTN, RESIZE_NONE, 12, 216, 227, 117, 128, SPR_ARROW_DOWN, STR_029E_MOVE_THE_STARTING_DATE},
-{ WWT_PANEL, RESIZE_NONE, 12, 228, 314, 117, 128, 0x0, STR_NULL},
-{ WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 117, 128, SPR_ARROW_UP, STR_029F_MOVE_THE_STARTING_DATE},
+{ WWT_IMGBTN, RESIZE_NONE, 12, 216, 227, 113, 124, SPR_ARROW_DOWN, STR_029E_MOVE_THE_STARTING_DATE},
+{ WWT_PANEL, RESIZE_NONE, 12, 228, 314, 113, 124, 0x0, STR_NULL},
+{ WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 113, 124, SPR_ARROW_UP, STR_029F_MOVE_THE_STARTING_DATE},
-{ WWT_IMGBTN, RESIZE_NONE, 12, 282, 293, 135, 146, SPR_ARROW_DOWN, STR_FLAT_WORLD_HEIGHT_DOWN},
-{ WWT_PANEL, RESIZE_NONE, 12, 294, 314, 135, 146, 0x0, STR_NULL},
-{ WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 135, 146, SPR_ARROW_UP, STR_FLAT_WORLD_HEIGHT_UP},
+{ WWT_IMGBTN, RESIZE_NONE, 12, 282, 293, 131, 142, SPR_ARROW_DOWN, STR_FLAT_WORLD_HEIGHT_DOWN},
+{ WWT_PANEL, RESIZE_NONE, 12, 294, 314, 131, 142, 0x0, STR_NULL},
+{ WWT_IMGBTN, RESIZE_NONE, 12, 315, 326, 131, 142, SPR_ARROW_UP, STR_FLAT_WORLD_HEIGHT_UP},
{ WIDGETS_END},
};
-const WindowDesc _create_scenario_desc = {
- WDP_CENTER, WDP_CENTER, 338, 180,
+static const WindowDesc _create_scenario_desc = {
+ WDP_CENTER, WDP_CENTER, 338, 170,
WC_GENERATE_LANDSCAPE, WC_NONE,
- WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
+ WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_STD_BTN | WDF_UNCLICK_BUTTONS,
_create_scenario_widgets,
CreateScenarioWndProc,
};