summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/genworld.h1
-rw-r--r--src/genworld_gui.cpp18
-rw-r--r--src/intro_gui.cpp2
3 files changed, 12 insertions, 9 deletions
diff --git a/src/genworld.h b/src/genworld.h
index 10fb569a1..922b51505 100644
--- a/src/genworld.h
+++ b/src/genworld.h
@@ -90,5 +90,6 @@ void PrepareGenerateWorldProgress(void);
void ShowGenerateWorldProgress(void);
void StartNewGameWithoutGUI(uint seed);
void ShowCreateScenario(void);
+void StartScenarioEditor(void);
#endif /* GENWORLD_H */
diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp
index 4250a37a4..5faa3e94a 100644
--- a/src/genworld_gui.cpp
+++ b/src/genworld_gui.cpp
@@ -144,24 +144,21 @@ static const Widget _heightmap_load_widgets[] = {
{ WIDGETS_END},
};
-static void StartGeneratingLandscape(glwp_modes mode)
+void StartGeneratingLandscape(glwp_modes mode)
{
- DeleteWindowByClass(WC_GENERATE_LANDSCAPE);
- DeleteWindowByClass(WC_INDUSTRY_VIEW);
- DeleteWindowByClass(WC_TOWN_VIEW);
- DeleteWindowByClass(WC_LAND_INFO);
+ DeleteAllNonVitalWindows();
- /* Copy all XXX_newgame to XXX */
+ /* Copy all XXX_newgame to XXX when coming from outside the editor */
UpdatePatches();
+ _opt = _opt_newgame;
_opt_ptr = &_opt;
- *_opt_ptr = _opt_newgame;
ResetGRFConfig(true);
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: break;
+ case GLWP_SCENARIO: _switch_mode = SM_EDITOR; break;
default: NOT_REACHED();
}
}
@@ -513,6 +510,11 @@ void ShowHeightmapLoad(void)
_ShowGenerateLandscape(GLWP_HEIGHTMAP);
}
+void StartScenarioEditor(void)
+{
+ StartGeneratingLandscape(GLWP_SCENARIO);
+}
+
void StartNewGameWithoutGUI(uint seed)
{
/* GenerateWorld takes care of the possible GENERATE_NEW_SEED value in 'seed' */
diff --git a/src/intro_gui.cpp b/src/intro_gui.cpp
index 1ac459eef..8cb217486 100644
--- a/src/intro_gui.cpp
+++ b/src/intro_gui.cpp
@@ -67,7 +67,7 @@ static void SelectGameWndProc(Window *w, WindowEvent *e)
case 3: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
case 4: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
case 5: ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); break;
- case 6: _switch_mode = SM_EDITOR; break;
+ case 6: StartScenarioEditor(); break;
case 7:
if (!_network_available) {
ShowErrorMessage(INVALID_STRING_ID, STR_NETWORK_ERR_NOTAVAILABLE, 0, 0);