genworld_gui.c
branchcustombridgeheads
changeset 5623 ef2a8a524a95
parent 5568 75f13d7bfaed
child 5642 bfa6074e2833
equal deleted inserted replaced
5622:2f0cb276d32a 5623:ef2a8a524a95
   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: