89 GLAND_WATER_PULLDOWN, |
89 GLAND_WATER_PULLDOWN, |
90 GLAND_SMOOTHNESS_TEXT, |
90 GLAND_SMOOTHNESS_TEXT, |
91 GLAND_SMOOTHNESS_PULLDOWN |
91 GLAND_SMOOTHNESS_PULLDOWN |
92 }; |
92 }; |
93 |
93 |
94 static const Widget _generate_landscape_widgets[] = { |
94 static const OldWidget _generate_landscape_widgets[] = { |
95 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
95 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
96 { WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_WORLD_GENERATION_CAPTION, STR_NULL}, |
96 { WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_WORLD_GENERATION_CAPTION, STR_NULL}, |
97 { WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 267, 0x0, STR_NULL}, |
97 { WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 267, 0x0, STR_NULL}, |
98 |
98 |
99 { WWT_IMGBTN_2, RESIZE_NONE, 12, 10, 86, 24, 78, SPR_SELECT_TEMPERATE, STR_030E_SELECT_TEMPERATE_LANDSCAPE}, |
99 { WWT_IMGBTN_2, RESIZE_NONE, 12, 10, 86, 24, 78, SPR_SELECT_TEMPERATE, STR_030E_SELECT_TEMPERATE_LANDSCAPE}, |
135 { WWT_PANEL, RESIZE_NONE, 12, 113, 219, 246, 257, 0x0, STR_NULL}, |
135 { WWT_PANEL, RESIZE_NONE, 12, 113, 219, 246, 257, 0x0, STR_NULL}, |
136 { WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 246, 257, STR_0225, STR_NULL}, // Map smoothness |
136 { WWT_TEXTBTN, RESIZE_NONE, 12, 220, 231, 246, 257, STR_0225, STR_NULL}, // Map smoothness |
137 { WIDGETS_END}, |
137 { WIDGETS_END}, |
138 }; |
138 }; |
139 |
139 |
140 static const Widget _heightmap_load_widgets[] = { |
140 static const OldWidget _heightmap_load_widgets[] = { |
141 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
141 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
142 { WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_WORLD_GENERATION_CAPTION, STR_NULL}, |
142 { WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_WORLD_GENERATION_CAPTION, STR_NULL}, |
143 { WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 235, 0x0, STR_NULL}, |
143 { WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 235, 0x0, STR_NULL}, |
144 |
144 |
145 { WWT_IMGBTN_2, RESIZE_NONE, 12, 10, 86, 24, 78, SPR_SELECT_TEMPERATE, STR_030E_SELECT_TEMPERATE_LANDSCAPE}, |
145 { WWT_IMGBTN_2, RESIZE_NONE, 12, 10, 86, 24, 78, SPR_SELECT_TEMPERATE, STR_030E_SELECT_TEMPERATE_LANDSCAPE}, |
195 case GLWP_SCENARIO: _switch_mode = SM_EDITOR; break; |
195 case GLWP_SCENARIO: _switch_mode = SM_EDITOR; break; |
196 default: NOT_REACHED(); |
196 default: NOT_REACHED(); |
197 } |
197 } |
198 } |
198 } |
199 |
199 |
200 static void HeightmapScaledTooMuchCallback(Window *w, bool confirmed) |
200 static void HeightmapScaledTooMuchCallback(BaseWindow *w, bool confirmed) |
201 { |
201 { |
202 if (confirmed) StartGeneratingLandscape((glwp_modes)w->window_number); |
202 if (confirmed) StartGeneratingLandscape((glwp_modes)w->window_number); |
203 } |
203 } |
204 |
204 |
205 static void GenerateLandscapeWndProc(Window *w, WindowEvent *e) |
205 static void GenerateLandscapeWndProc(BaseWindow *w, WindowEvent *e) |
206 { |
206 { |
207 static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID}; |
207 static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID}; |
208 static const StringID elevations[] = {STR_682A_VERY_FLAT, STR_682B_FLAT, STR_682C_HILLY, STR_682D_MOUNTAINOUS, INVALID_STRING_ID}; |
208 static const StringID elevations[] = {STR_682A_VERY_FLAT, STR_682B_FLAT, STR_682C_HILLY, STR_682D_MOUNTAINOUS, INVALID_STRING_ID}; |
209 static const StringID sea_lakes[] = {STR_VERY_LOW, STR_6820_LOW, STR_6821_MEDIUM, STR_6822_HIGH, INVALID_STRING_ID}; |
209 static const StringID sea_lakes[] = {STR_VERY_LOW, STR_6820_LOW, STR_6821_MEDIUM, STR_6822_HIGH, INVALID_STRING_ID}; |
210 static const StringID smoothness[] = {STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH, STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH, STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH, STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH, INVALID_STRING_ID}; |
210 static const StringID smoothness[] = {STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH, STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH, STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH, STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH, INVALID_STRING_ID}; |
524 /* If the function returns negative, it means there was a problem loading the heightmap */ |
524 /* If the function returns negative, it means there was a problem loading the heightmap */ |
525 if (!GetHeightmapDimensions(_file_to_saveload.name, &_heightmap_x, &_heightmap_y)) |
525 if (!GetHeightmapDimensions(_file_to_saveload.name, &_heightmap_x, &_heightmap_y)) |
526 return; |
526 return; |
527 } |
527 } |
528 |
528 |
529 Window *w = AllocateWindowDescFront((mode == GLWP_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc, mode); |
529 BaseWindow *w = BaseWindow::AllocateFront((mode == GLWP_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc, mode); |
530 |
530 |
531 if (w != NULL) InvalidateWindow(WC_GENERATE_LANDSCAPE, mode); |
531 if (w != NULL) InvalidateWindow(WC_GENERATE_LANDSCAPE, mode); |
532 } |
532 } |
533 |
533 |
534 void ShowGenerateLandscape(void) |
534 void ShowGenerateLandscape(void) |
572 CSCEN_FLAT_LAND_HEIGHT_TEXT, |
572 CSCEN_FLAT_LAND_HEIGHT_TEXT, |
573 CSCEN_FLAT_LAND_HEIGHT_UP |
573 CSCEN_FLAT_LAND_HEIGHT_UP |
574 }; |
574 }; |
575 |
575 |
576 |
576 |
577 static void CreateScenarioWndProc(Window *w, WindowEvent *e) |
577 static void CreateScenarioWndProc(BaseWindow *w, WindowEvent *e) |
578 { |
578 { |
579 static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID}; |
579 static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID}; |
580 |
580 |
581 switch (e->event) { |
581 switch (e->event) { |
582 case WE_CREATE: w->LowerWidget(_opt_newgame.landscape + CSCEN_TEMPERATE); break; |
582 case WE_CREATE: w->LowerWidget(_opt_newgame.landscape + CSCEN_TEMPERATE); break; |
686 break; |
686 break; |
687 } |
687 } |
688 } |
688 } |
689 } |
689 } |
690 |
690 |
691 static const Widget _create_scenario_widgets[] = { |
691 static const OldWidget _create_scenario_widgets[] = { |
692 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
692 { WWT_CLOSEBOX, RESIZE_NONE, 13, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
693 { WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_SE_CAPTION, STR_NULL}, |
693 { WWT_CAPTION, RESIZE_NONE, 13, 11, 337, 0, 13, STR_SE_CAPTION, STR_NULL}, |
694 { WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 169, 0x0, STR_NULL}, |
694 { WWT_PANEL, RESIZE_NONE, 13, 0, 337, 14, 169, 0x0, STR_NULL}, |
695 |
695 |
696 { WWT_IMGBTN_2, RESIZE_NONE, 12, 10, 86, 24, 78, SPR_SELECT_TEMPERATE, STR_030E_SELECT_TEMPERATE_LANDSCAPE}, |
696 { WWT_IMGBTN_2, RESIZE_NONE, 12, 10, 86, 24, 78, SPR_SELECT_TEMPERATE, STR_030E_SELECT_TEMPERATE_LANDSCAPE}, |
725 }; |
725 }; |
726 |
726 |
727 void ShowCreateScenario(void) |
727 void ShowCreateScenario(void) |
728 { |
728 { |
729 DeleteWindowByClass(WC_GENERATE_LANDSCAPE); |
729 DeleteWindowByClass(WC_GENERATE_LANDSCAPE); |
730 AllocateWindowDescFront(&_create_scenario_desc, GLWP_SCENARIO); |
730 BaseWindow::AllocateFront(&_create_scenario_desc, GLWP_SCENARIO); |
731 } |
731 } |
732 |
732 |
733 |
733 |
734 static const Widget _show_terrain_progress_widgets[] = { |
734 static const OldWidget _show_terrain_progress_widgets[] = { |
735 { WWT_CAPTION, RESIZE_NONE, 14, 0, 180, 0, 13, STR_GENERATION_WORLD, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
735 { WWT_CAPTION, RESIZE_NONE, 14, 0, 180, 0, 13, STR_GENERATION_WORLD, STR_018C_WINDOW_TITLE_DRAG_THIS}, |
736 { WWT_PANEL, RESIZE_NONE, 14, 0, 180, 14, 96, 0x0, STR_NULL}, |
736 { WWT_PANEL, RESIZE_NONE, 14, 0, 180, 14, 96, 0x0, STR_NULL}, |
737 { WWT_TEXTBTN, RESIZE_NONE, 15, 20, 161, 74, 85, STR_GENERATION_ABORT, STR_NULL}, // Abort button |
737 { WWT_TEXTBTN, RESIZE_NONE, 15, 20, 161, 74, 85, STR_GENERATION_ABORT, STR_NULL}, // Abort button |
738 { WIDGETS_END}, |
738 { WIDGETS_END}, |
739 }; |
739 }; |
746 int timer; |
746 int timer; |
747 } tp_info; |
747 } tp_info; |
748 |
748 |
749 static tp_info _tp; |
749 static tp_info _tp; |
750 |
750 |
751 static void AbortGeneratingWorldCallback(Window *w, bool confirmed) |
751 static void AbortGeneratingWorldCallback(BaseWindow *w, bool confirmed) |
752 { |
752 { |
753 if (confirmed) { |
753 if (confirmed) { |
754 AbortGeneratingWorld(); |
754 AbortGeneratingWorld(); |
755 } else if (IsGeneratingWorld() && !IsGeneratingWorldAborted()) { |
755 } else if (IsGeneratingWorld() && !IsGeneratingWorldAborted()) { |
756 SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE); |
756 SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE); |
757 } |
757 } |
758 } |
758 } |
759 |
759 |
760 static void ShowTerrainProgressProc(Window* w, WindowEvent* e) |
760 static void ShowTerrainProgressProc(BaseWindow* w, WindowEvent* e) |
761 { |
761 { |
762 switch (e->event) { |
762 switch (e->event) { |
763 case WE_CLICK: |
763 case WE_CLICK: |
764 switch (e->we.click.widget) { |
764 switch (e->we.click.widget) { |
765 case 2: |
765 case 2: |
819 /** |
819 /** |
820 * Show the window where a user can follow the process of the map generation. |
820 * Show the window where a user can follow the process of the map generation. |
821 */ |
821 */ |
822 void ShowGenerateWorldProgress(void) |
822 void ShowGenerateWorldProgress(void) |
823 { |
823 { |
824 AllocateWindowDescFront(&_show_terrain_progress_desc, 0); |
824 BaseWindow::AllocateFront(&_show_terrain_progress_desc, 0); |
825 } |
825 } |
826 |
826 |
827 static void _SetGeneratingWorldProgress(gwp_class cls, uint progress, uint total) |
827 static void _SetGeneratingWorldProgress(gwp_class cls, uint progress, uint total) |
828 { |
828 { |
829 static const int percent_table[GWP_CLASS_COUNT + 1] = {0, 5, 15, 20, 40, 60, 65, 80, 85, 99, 100 }; |
829 static const int percent_table[GWP_CLASS_COUNT + 1] = {0, 5, 15, 20, 40, 60, 65, 80, 85, 99, 100 }; |