src/genworld_gui.cpp
branchcpp_gui
changeset 6235 5077e6ed3788
parent 6152 42ce779b1765
child 6237 bce32e54c993
equal deleted inserted replaced
6234:42bf2d268a86 6235:5077e6ed3788
   326 		}
   326 		}
   327 
   327 
   328 		break;
   328 		break;
   329 	case WE_CLICK:
   329 	case WE_CLICK:
   330 		switch (e->we.click.widget) {
   330 		switch (e->we.click.widget) {
   331 		case 0: DeleteWindow(w); break;
   331 		case 0: w->Close(); break;
   332 		case GLAND_TEMPERATE: case GLAND_ARCTIC: case GLAND_TROPICAL: case GLAND_TOYLAND:
   332 		case GLAND_TEMPERATE: case GLAND_ARCTIC: case GLAND_TROPICAL: case GLAND_TOYLAND:
   333 			RaiseWindowWidget(w, _opt_newgame.landscape + GLAND_TEMPERATE);
   333 			RaiseWindowWidget(w, _opt_newgame.landscape + GLAND_TEMPERATE);
   334 			SetNewLandscapeType(e->we.click.widget - GLAND_TEMPERATE);
   334 			SetNewLandscapeType(e->we.click.widget - GLAND_TEMPERATE);
   335 			break;
   335 			break;
   336 		case GLAND_MAPSIZE_X_TEXT: case GLAND_MAPSIZE_X_PULLDOWN: // Mapsize X
   336 		case GLAND_MAPSIZE_X_TEXT: case GLAND_MAPSIZE_X_PULLDOWN: // Mapsize X
   347 			break;
   347 			break;
   348 		case GLAND_RANDOM_BUTTON: // Random seed
   348 		case GLAND_RANDOM_BUTTON: // Random seed
   349 			_patches_newgame.generation_seed = InteractiveRandom();
   349 			_patches_newgame.generation_seed = InteractiveRandom();
   350 			snprintf(_genseed_buffer, lengthof(_genseed_buffer), "%u", _patches_newgame.generation_seed);
   350 			snprintf(_genseed_buffer, lengthof(_genseed_buffer), "%u", _patches_newgame.generation_seed);
   351 			UpdateTextBufferSize(&_genseed_query.text);
   351 			UpdateTextBufferSize(&_genseed_query.text);
   352 			SetWindowDirty(w);
   352 			w->SetDirty();
   353 			break;
   353 			break;
   354 		case GLAND_GENERATE_BUTTON: // Generate
   354 		case GLAND_GENERATE_BUTTON: // Generate
   355 			if (mode == GLWP_HEIGHTMAP && (
   355 			if (mode == GLWP_HEIGHTMAP && (
   356 					_heightmap_x * 2 < (1U << _patches_newgame.map_x) || _heightmap_x / 2 > (1U << _patches_newgame.map_x) ||
   356 					_heightmap_x * 2 < (1U << _patches_newgame.map_x) || _heightmap_x / 2 > (1U << _patches_newgame.map_x) ||
   357 					_heightmap_y * 2 < (1U << _patches_newgame.map_y) || _heightmap_y / 2 > (1U << _patches_newgame.map_y))) {
   357 					_heightmap_y * 2 < (1U << _patches_newgame.map_y) || _heightmap_y / 2 > (1U << _patches_newgame.map_y))) {
   365 			}
   365 			}
   366 			break;
   366 			break;
   367 		case GLAND_START_DATE_DOWN: case GLAND_START_DATE_UP: // Year buttons
   367 		case GLAND_START_DATE_DOWN: case GLAND_START_DATE_UP: // Year buttons
   368 			/* Don't allow too fast scrolling */
   368 			/* Don't allow too fast scrolling */
   369 			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
   369 			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
   370 				HandleButtonClick(w, e->we.click.widget);
   370 				w->HandleButtonClick(e->we.click.widget);
   371 				SetWindowDirty(w);
   371 				w->SetDirty();
   372 
   372 
   373 				_patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->we.click.widget - GLAND_START_DATE_TEXT, MIN_YEAR, MAX_YEAR);
   373 				_patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->we.click.widget - GLAND_START_DATE_TEXT, MIN_YEAR, MAX_YEAR);
   374 			}
   374 			}
   375 			_left_button_clicked = false;
   375 			_left_button_clicked = false;
   376 			break;
   376 			break;
   380 			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
   380 			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
   381 			break;
   381 			break;
   382 		case GLAND_SNOW_LEVEL_DOWN: case GLAND_SNOW_LEVEL_UP: // Snow line buttons
   382 		case GLAND_SNOW_LEVEL_DOWN: case GLAND_SNOW_LEVEL_UP: // Snow line buttons
   383 			/* Don't allow too fast scrolling */
   383 			/* Don't allow too fast scrolling */
   384 			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
   384 			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
   385 				HandleButtonClick(w, e->we.click.widget);
   385 				w->HandleButtonClick(e->we.click.widget);
   386 				SetWindowDirty(w);
   386 				w->SetDirty();
   387 
   387 
   388 				_patches_newgame.snow_line_height = clamp(_patches_newgame.snow_line_height + e->we.click.widget - GLAND_SNOW_LEVEL_TEXT, 2, 13);
   388 				_patches_newgame.snow_line_height = clamp(_patches_newgame.snow_line_height + e->we.click.widget - GLAND_SNOW_LEVEL_TEXT, 2, 13);
   389 			}
   389 			}
   390 			_left_button_clicked = false;
   390 			_left_button_clicked = false;
   391 			break;
   391 			break;
   465 				_opt_newgame.diff.quantity_sea_lakes = e->we.dropdown.index;
   465 				_opt_newgame.diff.quantity_sea_lakes = e->we.dropdown.index;
   466 				if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
   466 				if (_opt_newgame.diff_level != 3) ShowErrorMessage(INVALID_STRING_ID, STR_DIFFICULTY_TO_CUSTOM, 0, 0);
   467 				DoCommandP(0, 13, _opt_newgame.diff.quantity_sea_lakes, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
   467 				DoCommandP(0, 13, _opt_newgame.diff.quantity_sea_lakes, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
   468 				break;
   468 				break;
   469 		}
   469 		}
   470 		SetWindowDirty(w);
   470 		w->SetDirty();
   471 		break;
   471 		break;
   472 
   472 
   473 	case WE_ON_EDIT_TEXT: {
   473 	case WE_ON_EDIT_TEXT: {
   474 		if (e->we.edittext.str != NULL) {
   474 		if (e->we.edittext.str != NULL) {
   475 			int32 value = atoi(e->we.edittext.str);
   475 			int32 value = atoi(e->we.edittext.str);
   483 				InvalidateWidget(w, GLAND_SNOW_LEVEL_TEXT);
   483 				InvalidateWidget(w, GLAND_SNOW_LEVEL_TEXT);
   484 				_patches_newgame.snow_line_height = clamp(value, 2, 13);
   484 				_patches_newgame.snow_line_height = clamp(value, 2, 13);
   485 				break;
   485 				break;
   486 			}
   486 			}
   487 
   487 
   488 			SetWindowDirty(w);
   488 			w->SetDirty();
   489 		}
   489 		}
   490 		break;
   490 		break;
   491 	}
   491 	}
   492 	}
   492 	}
   493 }
   493 }
   626 			ShowGenerateLandscape();
   626 			ShowGenerateLandscape();
   627 			break;
   627 			break;
   628 		case CSCEN_START_DATE_DOWN: case CSCEN_START_DATE_UP: // Year buttons
   628 		case CSCEN_START_DATE_DOWN: case CSCEN_START_DATE_UP: // Year buttons
   629 			/* Don't allow too fast scrolling */
   629 			/* Don't allow too fast scrolling */
   630 			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
   630 			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
   631 				HandleButtonClick(w, e->we.click.widget);
   631 				w->HandleButtonClick(e->we.click.widget);
   632 				SetWindowDirty(w);
   632 				w->SetDirty();
   633 
   633 
   634 				_patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->we.click.widget - CSCEN_START_DATE_TEXT, MIN_YEAR, MAX_YEAR);
   634 				_patches_newgame.starting_year = clamp(_patches_newgame.starting_year + e->we.click.widget - CSCEN_START_DATE_TEXT, MIN_YEAR, MAX_YEAR);
   635 			}
   635 			}
   636 			_left_button_clicked = false;
   636 			_left_button_clicked = false;
   637 			break;
   637 			break;
   641 			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
   641 			ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_START_DATE_QUERY_CAPT, 8, 100, w, CS_NUMERAL);
   642 			break;
   642 			break;
   643 		case CSCEN_FLAT_LAND_HEIGHT_DOWN: case CSCEN_FLAT_LAND_HEIGHT_UP: // Height level buttons
   643 		case CSCEN_FLAT_LAND_HEIGHT_DOWN: case CSCEN_FLAT_LAND_HEIGHT_UP: // Height level buttons
   644 			/* Don't allow too fast scrolling */
   644 			/* Don't allow too fast scrolling */
   645 			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
   645 			if ((w->flags4 & WF_TIMEOUT_MASK) <= 2 << WF_TIMEOUT_SHL) {
   646 				HandleButtonClick(w, e->we.click.widget);
   646 				w->HandleButtonClick(e->we.click.widget);
   647 				SetWindowDirty(w);
   647 				w->SetDirty();
   648 
   648 
   649 				_patches_newgame.se_flat_world_height = clamp(_patches_newgame.se_flat_world_height + e->we.click.widget - CSCEN_FLAT_LAND_HEIGHT_TEXT, 0, 15);
   649 				_patches_newgame.se_flat_world_height = clamp(_patches_newgame.se_flat_world_height + e->we.click.widget - CSCEN_FLAT_LAND_HEIGHT_TEXT, 0, 15);
   650 			}
   650 			}
   651 			_left_button_clicked = false;
   651 			_left_button_clicked = false;
   652 			break;
   652 			break;
   661 	case WE_DROPDOWN_SELECT:
   661 	case WE_DROPDOWN_SELECT:
   662 		switch (e->we.dropdown.button) {
   662 		switch (e->we.dropdown.button) {
   663 			case CSCEN_MAPSIZE_X_PULLDOWN: _patches_newgame.map_x = e->we.dropdown.index + 6; break;
   663 			case CSCEN_MAPSIZE_X_PULLDOWN: _patches_newgame.map_x = e->we.dropdown.index + 6; break;
   664 			case CSCEN_MAPSIZE_Y_PULLDOWN: _patches_newgame.map_y = e->we.dropdown.index + 6; break;
   664 			case CSCEN_MAPSIZE_Y_PULLDOWN: _patches_newgame.map_y = e->we.dropdown.index + 6; break;
   665 		}
   665 		}
   666 		SetWindowDirty(w);
   666 		w->SetDirty();
   667 		break;
   667 		break;
   668 
   668 
   669 	case WE_ON_EDIT_TEXT: {
   669 	case WE_ON_EDIT_TEXT: {
   670 		if (e->we.edittext.str != NULL) {
   670 		if (e->we.edittext.str != NULL) {
   671 			int32 value = atoi(e->we.edittext.str);
   671 			int32 value = atoi(e->we.edittext.str);
   679 				InvalidateWidget(w, CSCEN_FLAT_LAND_HEIGHT_TEXT);
   679 				InvalidateWidget(w, CSCEN_FLAT_LAND_HEIGHT_TEXT);
   680 				_patches_newgame.se_flat_world_height = clamp(value, 0, 15);
   680 				_patches_newgame.se_flat_world_height = clamp(value, 0, 15);
   681 				break;
   681 				break;
   682 			}
   682 			}
   683 
   683 
   684 			SetWindowDirty(w);
   684 			w->SetDirty();
   685 		}
   685 		}
   686 		break;
   686 		break;
   687 	}
   687 	}
   688 	}
   688 	}
   689 }
   689 }
   789 		/* And say where we are in that class */
   789 		/* And say where we are in that class */
   790 		SetDParam(0, _tp.current);
   790 		SetDParam(0, _tp.current);
   791 		SetDParam(1, _tp.total);
   791 		SetDParam(1, _tp.total);
   792 		DrawStringCentered(90, 58, STR_GENERATION_PROGRESS, 0);
   792 		DrawStringCentered(90, 58, STR_GENERATION_PROGRESS, 0);
   793 
   793 
   794 		SetWindowDirty(w);
   794 		w->SetDirty();
   795 		break;
   795 		break;
   796 	}
   796 	}
   797 }
   797 }
   798 
   798 
   799 static const WindowDesc _show_terrain_progress_desc = {
   799 static const WindowDesc _show_terrain_progress_desc = {