316 DrawString(118, 215, rotation[_patches_newgame.heightmap_rotation], 0x10); |
316 DrawString(118, 215, rotation[_patches_newgame.heightmap_rotation], 0x10); |
317 } |
317 } |
318 |
318 |
319 break; |
319 break; |
320 case WE_CLICK: |
320 case WE_CLICK: |
321 switch (e->click.widget) { |
321 switch (e->we.click.widget) { |
322 case 0: DeleteWindow(w); break; |
322 case 0: DeleteWindow(w); break; |
323 case 3: case 4: case 5: case 6: |
323 case 3: case 4: case 5: case 6: |
324 SetNewLandscapeType(e->click.widget - 3); |
324 SetNewLandscapeType(e->we.click.widget - 3); |
325 break; |
325 break; |
326 case 7: case 8: // Mapsize X |
326 case 7: case 8: // Mapsize X |
327 ShowDropDownMenu(w, mapsizes, _patches_newgame.map_x - 6, 8, 0, 0); |
327 ShowDropDownMenu(w, mapsizes, _patches_newgame.map_x - 6, 8, 0, 0); |
328 break; |
328 break; |
329 case 9: case 10: // Mapsize Y |
329 case 9: case 10: // Mapsize Y |
351 } |
351 } |
352 break; |
352 break; |
353 case 18: case 20: // Year buttons |
353 case 18: case 20: // Year buttons |
354 /* Don't allow too fast scrolling */ |
354 /* Don't allow too fast scrolling */ |
355 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
355 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
356 HandleButtonClick(w, e->click.widget); |
356 HandleButtonClick(w, e->we.click.widget); |
357 SetWindowDirty(w); |
357 SetWindowDirty(w); |
358 |
358 |
359 _patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->click.widget - 19, MIN_YEAR, MAX_YEAR); |
359 _patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->we.click.widget - 19, MIN_YEAR, MAX_YEAR); |
360 } |
360 } |
361 _left_button_clicked = false; |
361 _left_button_clicked = false; |
362 break; |
362 break; |
363 case 19: // Year text |
363 case 19: // Year text |
364 WP(w, def_d).data_3 = START_DATE_QUERY; |
364 WP(w, def_d).data_3 = START_DATE_QUERY; |
366 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, WC_GENERATE_LANDSCAPE, mode, CS_NUMERAL); |
366 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, WC_GENERATE_LANDSCAPE, mode, CS_NUMERAL); |
367 break; |
367 break; |
368 case 21: case 23: // Snow line buttons |
368 case 21: case 23: // Snow line buttons |
369 /* Don't allow too fast scrolling */ |
369 /* Don't allow too fast scrolling */ |
370 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
370 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
371 HandleButtonClick(w, e->click.widget); |
371 HandleButtonClick(w, e->we.click.widget); |
372 SetWindowDirty(w); |
372 SetWindowDirty(w); |
373 |
373 |
374 _patches_newgame.snow_line_height = clamp(_patches_newgame.snow_line_height + e->click.widget - 22, 2, 13); |
374 _patches_newgame.snow_line_height = clamp(_patches_newgame.snow_line_height + e->we.click.widget - 22, 2, 13); |
375 } |
375 } |
376 _left_button_clicked = false; |
376 _left_button_clicked = false; |
377 break; |
377 break; |
378 case 22: // Snow line text |
378 case 22: // Snow line text |
379 WP(w, def_d).data_3 = SNOW_LINE_QUERY; |
379 WP(w, def_d).data_3 = SNOW_LINE_QUERY; |
427 * button can be used instead. */ |
427 * button can be used instead. */ |
428 _patches_newgame.generation_seed = minu(strtoul(_edit_str_buf, NULL, 10), MAX_UVALUE(uint32) - 1); |
428 _patches_newgame.generation_seed = minu(strtoul(_edit_str_buf, NULL, 10), MAX_UVALUE(uint32) - 1); |
429 break; |
429 break; |
430 |
430 |
431 case WE_DROPDOWN_SELECT: |
431 case WE_DROPDOWN_SELECT: |
432 switch (e->dropdown.button) { |
432 switch (e->we.dropdown.button) { |
433 case 8: _patches_newgame.map_x = e->dropdown.index + 6; break; |
433 case 8: _patches_newgame.map_x = e->we.dropdown.index + 6; break; |
434 case 10: _patches_newgame.map_y = e->dropdown.index + 6; break; |
434 case 10: _patches_newgame.map_y = e->we.dropdown.index + 6; break; |
435 case 12: |
435 case 12: |
436 _opt_newgame.diff.number_towns = e->dropdown.index; |
436 _opt_newgame.diff.number_towns = e->we.dropdown.index; |
437 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
437 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
438 DoCommandP(0, 2, _opt_newgame.diff.number_towns, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
438 DoCommandP(0, 2, _opt_newgame.diff.number_towns, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
439 break; |
439 break; |
440 case 14: |
440 case 14: |
441 _opt_newgame.diff.number_industries = e->dropdown.index; |
441 _opt_newgame.diff.number_industries = e->we.dropdown.index; |
442 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
442 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
443 DoCommandP(0, 3, _opt_newgame.diff.number_industries, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
443 DoCommandP(0, 3, _opt_newgame.diff.number_industries, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
444 break; |
444 break; |
445 case 25: |
445 case 25: |
446 _patches_newgame.tree_placer = e->dropdown.index; |
446 _patches_newgame.tree_placer = e->we.dropdown.index; |
447 break; |
447 break; |
448 case 27: |
448 case 27: |
449 if (mode == GLWP_HEIGHTMAP) { |
449 if (mode == GLWP_HEIGHTMAP) { |
450 _patches_newgame.heightmap_rotation = e->dropdown.index; |
450 _patches_newgame.heightmap_rotation = e->we.dropdown.index; |
451 } else { |
451 } else { |
452 _patches_newgame.land_generator = e->dropdown.index; |
452 _patches_newgame.land_generator = e->we.dropdown.index; |
453 } |
453 } |
454 break; |
454 break; |
455 // case 29: |
455 // case 29: |
456 case 28: |
456 case 28: |
457 _opt_newgame.diff.terrain_type = e->dropdown.index; |
457 _opt_newgame.diff.terrain_type = e->we.dropdown.index; |
458 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
458 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
459 DoCommandP(0, 12, _opt_newgame.diff.terrain_type, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
459 DoCommandP(0, 12, _opt_newgame.diff.terrain_type, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
460 break; |
460 break; |
461 // case 31: |
461 // case 31: |
462 case 29: |
462 case 29: |
463 _opt_newgame.diff.quantity_sea_lakes = e->dropdown.index; |
463 _opt_newgame.diff.quantity_sea_lakes = e->we.dropdown.index; |
464 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
464 if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0); |
465 DoCommandP(0, 13, _opt_newgame.diff.quantity_sea_lakes, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
465 DoCommandP(0, 13, _opt_newgame.diff.quantity_sea_lakes, NULL, CMD_CHANGE_DIFFICULTY_LEVEL); |
466 break; |
466 break; |
467 // case 33: |
467 // case 33: |
468 case 31: |
468 case 31: |
469 _patches_newgame.tgen_smoothness = e->dropdown.index; |
469 _patches_newgame.tgen_smoothness = e->we.dropdown.index; |
470 break; |
470 break; |
471 } |
471 } |
472 SetWindowDirty(w); |
472 SetWindowDirty(w); |
473 break; |
473 break; |
474 |
474 |
475 case WE_ON_EDIT_TEXT: { |
475 case WE_ON_EDIT_TEXT: { |
476 if (e->edittext.str != NULL) { |
476 if (e->we.edittext.str != NULL) { |
477 int32 value = atoi(e->edittext.str); |
477 int32 value = atoi(e->we.edittext.str); |
478 |
478 |
479 switch (WP(w, def_d).data_3) { |
479 switch (WP(w, def_d).data_3) { |
480 case START_DATE_QUERY: |
480 case START_DATE_QUERY: |
481 InvalidateWidget(w, 19); |
481 InvalidateWidget(w, 19); |
482 _patches_newgame.starting_year = clamp(value, MIN_YEAR, MAX_YEAR); |
482 _patches_newgame.starting_year = clamp(value, MIN_YEAR, MAX_YEAR); |
598 SetDParam(0, _patches_newgame.se_flat_world_height); |
598 SetDParam(0, _patches_newgame.se_flat_world_height); |
599 DrawStringCentered(303, 136, STR_FLAT_WORLD_HEIGHT_NUM, 0x10); |
599 DrawStringCentered(303, 136, STR_FLAT_WORLD_HEIGHT_NUM, 0x10); |
600 |
600 |
601 break; |
601 break; |
602 case WE_CLICK: |
602 case WE_CLICK: |
603 switch (e->click.widget) { |
603 switch (e->we.click.widget) { |
604 case 0: DeleteWindow(w); break; |
604 case 0: DeleteWindow(w); break; |
605 case 3: case 4: case 5: case 6: |
605 case 3: case 4: case 5: case 6: |
606 SetNewLandscapeType(e->click.widget - 3); |
606 SetNewLandscapeType(e->we.click.widget - 3); |
607 break; |
607 break; |
608 case 7: case 8: // Mapsize X |
608 case 7: case 8: // Mapsize X |
609 ShowDropDownMenu(w, mapsizes, _patches_newgame.map_x - 6, 8, 0, 0); |
609 ShowDropDownMenu(w, mapsizes, _patches_newgame.map_x - 6, 8, 0, 0); |
610 break; |
610 break; |
611 case 9: case 10: // Mapsize Y |
611 case 9: case 10: // Mapsize Y |
623 ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); |
623 ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); |
624 break; |
624 break; |
625 case 14: case 16: // Year buttons |
625 case 14: case 16: // Year buttons |
626 /* Don't allow too fast scrolling */ |
626 /* Don't allow too fast scrolling */ |
627 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
627 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
628 HandleButtonClick(w, e->click.widget); |
628 HandleButtonClick(w, e->we.click.widget); |
629 SetWindowDirty(w); |
629 SetWindowDirty(w); |
630 |
630 |
631 _patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->click.widget - 15, MIN_YEAR, MAX_YEAR); |
631 _patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->we.click.widget - 15, MIN_YEAR, MAX_YEAR); |
632 } |
632 } |
633 _left_button_clicked = false; |
633 _left_button_clicked = false; |
634 break; |
634 break; |
635 case 15: // Year text |
635 case 15: // Year text |
636 WP(w, def_d).data_3 = START_DATE_QUERY; |
636 WP(w, def_d).data_3 = START_DATE_QUERY; |
638 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, WC_GENERATE_LANDSCAPE, GLWP_SCENARIO, CS_NUMERAL); |
638 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, WC_GENERATE_LANDSCAPE, GLWP_SCENARIO, CS_NUMERAL); |
639 break; |
639 break; |
640 case 17: case 19: // Height level buttons |
640 case 17: case 19: // Height level buttons |
641 /* Don't allow too fast scrolling */ |
641 /* Don't allow too fast scrolling */ |
642 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
642 if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) { |
643 HandleButtonClick(w, e->click.widget); |
643 HandleButtonClick(w, e->we.click.widget); |
644 SetWindowDirty(w); |
644 SetWindowDirty(w); |
645 |
645 |
646 _patches_newgame.se_flat_world_height = clamp(_patches_newgame.se_flat_world_height + e->click.widget - 18, 0, 15); |
646 _patches_newgame.se_flat_world_height = clamp(_patches_newgame.se_flat_world_height + e->we.click.widget - 18, 0, 15); |
647 } |
647 } |
648 _left_button_clicked = false; |
648 _left_button_clicked = false; |
649 break; |
649 break; |
650 case 18: // Height level text |
650 case 18: // Height level text |
651 WP(w, def_d).data_3 = FLAT_WORLD_HEIGHT_QUERY; |
651 WP(w, def_d).data_3 = FLAT_WORLD_HEIGHT_QUERY; |
654 break; |
654 break; |
655 } |
655 } |
656 break; |
656 break; |
657 |
657 |
658 case WE_DROPDOWN_SELECT: |
658 case WE_DROPDOWN_SELECT: |
659 switch (e->dropdown.button) { |
659 switch (e->we.dropdown.button) { |
660 case 8: _patches_newgame.map_x = e->dropdown.index + 6; break; |
660 case 8: _patches_newgame.map_x = e->we.dropdown.index + 6; break; |
661 case 10: _patches_newgame.map_y = e->dropdown.index + 6; break; |
661 case 10: _patches_newgame.map_y = e->we.dropdown.index + 6; break; |
662 } |
662 } |
663 SetWindowDirty(w); |
663 SetWindowDirty(w); |
664 break; |
664 break; |
665 |
665 |
666 case WE_DESTROY: |
666 case WE_DESTROY: |
667 _goto_editor = false; |
667 _goto_editor = false; |
668 break; |
668 break; |
669 |
669 |
670 case WE_ON_EDIT_TEXT: { |
670 case WE_ON_EDIT_TEXT: { |
671 if (e->edittext.str != NULL) { |
671 if (e->we.edittext.str != NULL) { |
672 int32 value = atoi(e->edittext.str); |
672 int32 value = atoi(e->we.edittext.str); |
673 |
673 |
674 switch (WP(w, def_d).data_3) { |
674 switch (WP(w, def_d).data_3) { |
675 case START_DATE_QUERY: |
675 case START_DATE_QUERY: |
676 InvalidateWidget(w, 15); |
676 InvalidateWidget(w, 15); |
677 _patches_newgame.starting_year = clamp(value, MIN_YEAR, MAX_YEAR); |
677 _patches_newgame.starting_year = clamp(value, MIN_YEAR, MAX_YEAR); |