174 case GLWP_SCENARIO: _switch_mode = SM_EDITOR; break; |
174 case GLWP_SCENARIO: _switch_mode = SM_EDITOR; break; |
175 default: NOT_REACHED(); return; |
175 default: NOT_REACHED(); return; |
176 } |
176 } |
177 } |
177 } |
178 |
178 |
179 static void HeightmapScaledTooMuchCallback(bool ok_clicked) |
179 static void HeightmapScaledTooMuchCallback(Window *w, bool confirmed) |
180 { |
180 { |
181 if (ok_clicked) { |
181 if (confirmed) StartGeneratingLandscape((glwp_modes)w->window_number); |
182 Window *w; |
|
183 glwp_modes mode = 0; |
|
184 for (mode = 0; mode < GLWP_END; mode++) { |
|
185 w = FindWindowById(WC_GENERATE_LANDSCAPE, mode); |
|
186 if (w != NULL) StartGeneratingLandscape(mode); |
|
187 } |
|
188 } |
|
189 } |
182 } |
190 |
183 |
191 void GenerateLandscapeWndProc(Window *w, WindowEvent *e) |
184 void GenerateLandscapeWndProc(Window *w, WindowEvent *e) |
192 { |
185 { |
193 static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID}; |
186 static const StringID mapsizes[] = {STR_64, STR_128, STR_256, STR_512, STR_1024, STR_2048, INVALID_STRING_ID}; |
328 break; |
321 break; |
329 case 17: // Generate |
322 case 17: // Generate |
330 if (mode == GLWP_HEIGHTMAP && ( |
323 if (mode == GLWP_HEIGHTMAP && ( |
331 _heightmap_x * 2 < (1U << _patches_newgame.map_x) || _heightmap_x / 2 > (1U << _patches_newgame.map_x) || |
324 _heightmap_x * 2 < (1U << _patches_newgame.map_x) || _heightmap_x / 2 > (1U << _patches_newgame.map_x) || |
332 _heightmap_y * 2 < (1U << _patches_newgame.map_y) || _heightmap_y / 2 > (1U << _patches_newgame.map_y))) { |
325 _heightmap_y * 2 < (1U << _patches_newgame.map_y) || _heightmap_y / 2 > (1U << _patches_newgame.map_y))) { |
333 ShowQuery(STR_HEIGHTMAP_SCALE_WARNING_CAPTION, STR_HEIGHTMAP_SCALE_WARNING_MESSAGE, HeightmapScaledTooMuchCallback, WC_GENERATE_LANDSCAPE, mode); |
326 ShowQuery( |
|
327 STR_HEIGHTMAP_SCALE_WARNING_CAPTION, |
|
328 STR_HEIGHTMAP_SCALE_WARNING_MESSAGE, |
|
329 w, |
|
330 HeightmapScaledTooMuchCallback); |
334 } else { |
331 } else { |
335 StartGeneratingLandscape(mode); |
332 StartGeneratingLandscape(mode); |
336 } |
333 } |
337 break; |
334 break; |
338 case 18: case 20: // Year buttons |
335 case 18: case 20: // Year buttons |
346 _left_button_clicked = false; |
343 _left_button_clicked = false; |
347 break; |
344 break; |
348 case 19: // Year text |
345 case 19: // Year text |
349 WP(w, def_d).data_3 = START_DATE_QUERY; |
346 WP(w, def_d).data_3 = START_DATE_QUERY; |
350 SetDParam(0, _patches_newgame.starting_year); |
347 SetDParam(0, _patches_newgame.starting_year); |
351 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, WC_GENERATE_LANDSCAPE, mode, CS_NUMERAL); |
348 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL); |
352 break; |
349 break; |
353 case 21: case 23: // Snow line buttons |
350 case 21: case 23: // Snow line buttons |
354 /* Don't allow too fast scrolling */ |
351 /* Don't allow too fast scrolling */ |
355 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
352 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
356 HandleButtonClick(w, e->we.click.widget); |
353 HandleButtonClick(w, e->we.click.widget); |
361 _left_button_clicked = false; |
358 _left_button_clicked = false; |
362 break; |
359 break; |
363 case 22: // Snow line text |
360 case 22: // Snow line text |
364 WP(w, def_d).data_3 = SNOW_LINE_QUERY; |
361 WP(w, def_d).data_3 = SNOW_LINE_QUERY; |
365 SetDParam(0, _patches_newgame.snow_line_height); |
362 SetDParam(0, _patches_newgame.snow_line_height); |
366 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_SNOW_LINE_QUERY_CAPT, 3, 100, WC_GENERATE_LANDSCAPE, mode, CS_NUMERAL); |
363 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_SNOW_LINE_QUERY_CAPT, 3, 100, w, CS_NUMERAL); |
367 break; |
364 break; |
368 case 24: case 25: // Tree placer |
365 case 24: case 25: // Tree placer |
369 ShowDropDownMenu(w, tree_placer, _patches_newgame.tree_placer, 25, 0, 0); |
366 ShowDropDownMenu(w, tree_placer, _patches_newgame.tree_placer, 25, 0, 0); |
370 break; |
367 break; |
371 case 26: case 27: // Landscape generator OR Heightmap rotation |
368 case 26: case 27: // Landscape generator OR Heightmap rotation |
605 _left_button_clicked = false; |
602 _left_button_clicked = false; |
606 break; |
603 break; |
607 case 15: // Year text |
604 case 15: // Year text |
608 WP(w, def_d).data_3 = START_DATE_QUERY; |
605 WP(w, def_d).data_3 = START_DATE_QUERY; |
609 SetDParam(0, _patches_newgame.starting_year); |
606 SetDParam(0, _patches_newgame.starting_year); |
610 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, WC_GENERATE_LANDSCAPE, GLWP_SCENARIO, CS_NUMERAL); |
607 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL); |
611 break; |
608 break; |
612 case 17: case 19: // Height level buttons |
609 case 17: case 19: // Height level buttons |
613 /* Don't allow too fast scrolling */ |
610 /* Don't allow too fast scrolling */ |
614 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
611 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
615 HandleButtonClick(w, e->we.click.widget); |
612 HandleButtonClick(w, e->we.click.widget); |
620 _left_button_clicked = false; |
617 _left_button_clicked = false; |
621 break; |
618 break; |
622 case 18: // Height level text |
619 case 18: // Height level text |
623 WP(w, def_d).data_3 = FLAT_WORLD_HEIGHT_QUERY; |
620 WP(w, def_d).data_3 = FLAT_WORLD_HEIGHT_QUERY; |
624 SetDParam(0, _patches_newgame.se_flat_world_height); |
621 SetDParam(0, _patches_newgame.se_flat_world_height); |
625 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_FLAT_WORLD_HEIGHT_QUERY_CAPT, 3, 100, WC_GENERATE_LANDSCAPE, GLWP_SCENARIO, CS_NUMERAL); |
622 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_FLAT_WORLD_HEIGHT_QUERY_CAPT, 3, 100, w, CS_NUMERAL); |
626 break; |
623 break; |
627 } |
624 } |
628 break; |
625 break; |
629 |
626 |
630 case WE_DROPDOWN_SELECT: |
627 case WE_DROPDOWN_SELECT: |
720 int timer; |
717 int timer; |
721 } tp_info; |
718 } tp_info; |
722 |
719 |
723 static tp_info _tp; |
720 static tp_info _tp; |
724 |
721 |
725 static void AbortGeneratingWorldCallback(bool ok_clicked) |
722 static void AbortGeneratingWorldCallback(Window *w, bool confirmed) |
726 { |
723 { |
727 if (ok_clicked) AbortGeneratingWorld(); |
724 if (confirmed) { |
728 else if (IsGeneratingWorld() && !IsGeneratingWorldAborted()) SetMouseCursor(SPR_CURSOR_ZZZ); |
725 AbortGeneratingWorld(); |
|
726 } else if (IsGeneratingWorld() && !IsGeneratingWorldAborted()) { |
|
727 SetMouseCursor(SPR_CURSOR_ZZZ); |
|
728 } |
729 } |
729 } |
730 |
730 |
731 static void ShowTerrainProgressProc(Window* w, WindowEvent* e) |
731 static void ShowTerrainProgressProc(Window* w, WindowEvent* e) |
732 { |
732 { |
733 switch (e->event) { |
733 switch (e->event) { |
734 case WE_CLICK: |
734 case WE_CLICK: |
735 switch (e->we.click.widget) { |
735 switch (e->we.click.widget) { |
736 case 2: |
736 case 2: |
737 if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE); |
737 if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE); |
738 ShowQuery(STR_GENERATION_ABORT_CAPTION, STR_GENERATION_ABORT_MESSAGE, AbortGeneratingWorldCallback, WC_GENERATE_PROGRESS_WINDOW, 0); |
738 ShowQuery( |
|
739 STR_GENERATION_ABORT_CAPTION, |
|
740 STR_GENERATION_ABORT_MESSAGE, |
|
741 w, |
|
742 AbortGeneratingWorldCallback |
|
743 ); |
739 break; |
744 break; |
740 } |
745 } |
741 break; |
746 break; |
742 |
747 |
743 case WE_PAINT: |
748 case WE_PAINT: |