197 case GLWP_SCENARIO: _switch_mode = SM_EDITOR; break; |
197 case GLWP_SCENARIO: _switch_mode = SM_EDITOR; break; |
198 default: NOT_REACHED(); |
198 default: NOT_REACHED(); |
199 } |
199 } |
200 } |
200 } |
201 |
201 |
202 static void HeightmapScaledTooMuchCallback(Window *w, bool confirmed) |
202 static void LandscapeGenerationCallback(Window *w, bool confirmed) |
203 { |
203 { |
204 if (confirmed) StartGeneratingLandscape((glwp_modes)w->window_number); |
204 if (confirmed) StartGeneratingLandscape((glwp_modes)w->window_number); |
205 } |
205 } |
206 |
206 |
207 static void GenerateLandscapeWndProc(Window *w, WindowEvent *e) |
207 static void GenerateLandscapeWndProc(Window *w, WindowEvent *e) |
352 snprintf(_genseed_buffer, lengthof(_genseed_buffer), "%u", _patches_newgame.generation_seed); |
352 snprintf(_genseed_buffer, lengthof(_genseed_buffer), "%u", _patches_newgame.generation_seed); |
353 UpdateTextBufferSize(&_genseed_query.text); |
353 UpdateTextBufferSize(&_genseed_query.text); |
354 SetWindowDirty(w); |
354 SetWindowDirty(w); |
355 break; |
355 break; |
356 case GLAND_GENERATE_BUTTON: // Generate |
356 case GLAND_GENERATE_BUTTON: // Generate |
357 if (mode == GLWP_HEIGHTMAP && ( |
357 |
358 _heightmap_x * 2 < (1U << _patches_newgame.map_x) || _heightmap_x / 2 > (1U << _patches_newgame.map_x) || |
358 UpdatePatches(); |
359 _heightmap_y * 2 < (1U << _patches_newgame.map_y) || _heightmap_y / 2 > (1U << _patches_newgame.map_y))) { |
359 |
|
360 if (_patches.town_layout == TL_NO_ROADS) { |
|
361 ShowQuery( |
|
362 STR_TOWN_LAYOUT_WARNING_CAPTION, |
|
363 STR_TOWN_LAYOUT_WARNING_MESSAGE, |
|
364 w, |
|
365 LandscapeGenerationCallback); |
|
366 } else if (mode == GLWP_HEIGHTMAP && |
|
367 (_heightmap_x * 2 < (1U << _patches_newgame.map_x) || |
|
368 _heightmap_x / 2 > (1U << _patches_newgame.map_x) || |
|
369 _heightmap_y * 2 < (1U << _patches_newgame.map_y) || |
|
370 _heightmap_y / 2 > (1U << _patches_newgame.map_y))) { |
360 ShowQuery( |
371 ShowQuery( |
361 STR_HEIGHTMAP_SCALE_WARNING_CAPTION, |
372 STR_HEIGHTMAP_SCALE_WARNING_CAPTION, |
362 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE, |
373 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE, |
363 w, |
374 w, |
364 HeightmapScaledTooMuchCallback); |
375 LandscapeGenerationCallback); |
|
376 |
365 } else { |
377 } else { |
366 StartGeneratingLandscape(mode); |
378 StartGeneratingLandscape(mode); |
367 } |
379 } |
368 break; |
380 break; |
369 case GLAND_START_DATE_DOWN: case GLAND_START_DATE_UP: // Year buttons |
381 case GLAND_START_DATE_DOWN: case GLAND_START_DATE_UP: // Year buttons |
543 _ShowGenerateLandscape(GLWP_HEIGHTMAP); |
555 _ShowGenerateLandscape(GLWP_HEIGHTMAP); |
544 } |
556 } |
545 |
557 |
546 void StartScenarioEditor() |
558 void StartScenarioEditor() |
547 { |
559 { |
|
560 if (_patches_newgame.town_layout == TL_NO_ROADS) { |
|
561 _patches_newgame.town_layout = TL_ORIGINAL; |
|
562 } |
|
563 |
548 StartGeneratingLandscape(GLWP_SCENARIO); |
564 StartGeneratingLandscape(GLWP_SCENARIO); |
549 } |
565 } |
550 |
566 |
551 void StartNewGameWithoutGUI(uint seed) |
567 void StartNewGameWithoutGUI(uint seed) |
552 { |
568 { |