genworld_gui.c
changeset 4634 07699ac2bf37
parent 4609 954fe701062f
child 4709 a81ab800c25b
equal deleted inserted replaced
4633:cf6c2f173030 4634:07699ac2bf37
   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);
   758 
   758 
   759 static void ShowTerrainProgressProc(Window* w, WindowEvent* e)
   759 static void ShowTerrainProgressProc(Window* w, WindowEvent* e)
   760 {
   760 {
   761 	switch (e->event) {
   761 	switch (e->event) {
   762 	case WE_CLICK:
   762 	case WE_CLICK:
   763 		switch (e->click.widget) {
   763 		switch (e->we.click.widget) {
   764 		case 2:
   764 		case 2:
   765 			if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE);
   765 			if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE);
   766 			ShowQuery(STR_GENERATION_ABORT_CAPTION, STR_GENERATION_ABORT_MESSAGE, AbortGeneratingWorldCallback, WC_GENERATE_PROGRESS_WINDOW, 0);
   766 			ShowQuery(STR_GENERATION_ABORT_CAPTION, STR_GENERATION_ABORT_MESSAGE, AbortGeneratingWorldCallback, WC_GENERATE_PROGRESS_WINDOW, 0);
   767 			break;
   767 			break;
   768 		}
   768 		}