src/terraform_gui.cpp
changeset 9588 620c97d8cee4
parent 9586 bd94ff37f38f
child 9652 0405e98d8e96
equal deleted inserted replaced
9587:82019b7539b3 9588:620c97d8cee4
   129 			GenerateRockyArea(end_tile, start_tile);
   129 			GenerateRockyArea(end_tile, start_tile);
   130 			break;
   130 			break;
   131 		case DDSP_CREATE_DESERT:
   131 		case DDSP_CREATE_DESERT:
   132 			GenerateDesertArea(end_tile, start_tile);
   132 			GenerateDesertArea(end_tile, start_tile);
   133 			break;
   133 			break;
   134 		case DDSP_CREATE_WATER:
       
   135 			DoCommandP(end_tile, start_tile, _ctrl_pressed, CcBuildCanal, CMD_BUILD_CANAL | CMD_MSG(STR_CANT_BUILD_CANALS));
       
   136 			break;
       
   137 		case DDSP_CREATE_RIVER:
       
   138 			DoCommandP(end_tile, start_tile, 2, CcBuildCanal, CMD_BUILD_CANAL | CMD_MSG(STR_CANT_PLACE_RIVERS));
       
   139 			break;
       
   140 		default:
   134 		default:
   141 			return false;
   135 			return false;
   142 	}
   136 	}
   143 
   137 
   144 	return true;
   138 	return true;
   441 static void PlaceProc_DesertArea(TileIndex tile)
   435 static void PlaceProc_DesertArea(TileIndex tile)
   442 {
   436 {
   443 	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_DESERT);
   437 	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_DESERT);
   444 }
   438 }
   445 
   439 
   446 static void PlaceProc_WaterArea(TileIndex tile)
       
   447 {
       
   448 	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_WATER);
       
   449 }
       
   450 
       
   451 static void PlaceProc_RiverArea(TileIndex tile)
       
   452 {
       
   453 	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_CREATE_RIVER);
       
   454 }
       
   455 
   440 
   456 static const Widget _scen_edit_land_gen_widgets[] = {
   441 static const Widget _scen_edit_land_gen_widgets[] = {
   457 {  WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                  STR_018B_CLOSE_WINDOW},                   // ETTW_CLOSEBOX
   442 {  WWT_CLOSEBOX,   RESIZE_NONE,     7,     0,    10,     0,    13, STR_00C5,                  STR_018B_CLOSE_WINDOW},                   // ETTW_CLOSEBOX
   458 {   WWT_CAPTION,   RESIZE_NONE,     7,    11,   191,     0,    13, STR_0223_LAND_GENERATION,  STR_018C_WINDOW_TITLE_DRAG_THIS},         // ETTW_CAPTION
   443 {   WWT_CAPTION,   RESIZE_NONE,     7,    11,   150,     0,    13, STR_0223_LAND_GENERATION,  STR_018C_WINDOW_TITLE_DRAG_THIS},         // ETTW_CAPTION
   459 { WWT_STICKYBOX,   RESIZE_NONE,     7,   192,   203,     0,    13, STR_NULL,                  STR_STICKY_BUTTON},                       // ETTW_STICKY
   444 { WWT_STICKYBOX,   RESIZE_NONE,     7,   151,   162,     0,    13, STR_NULL,                  STR_STICKY_BUTTON},                       // ETTW_STICKY
   460 {     WWT_PANEL,   RESIZE_NONE,     7,     0,   203,    14,   102, 0x0,                       STR_NULL},                                // ETTW_BACKGROUND
   445 {     WWT_PANEL,   RESIZE_NONE,     7,     0,   162,    14,   102, 0x0,                       STR_NULL},                                // ETTW_BACKGROUND
   461 {    WWT_IMGBTN,   RESIZE_NONE,    14,     2,    23,    16,    37, SPR_IMG_DYNAMITE,          STR_018D_DEMOLISH_BUILDINGS_ETC},         // ETTW_DEMOLISH
   446 {    WWT_IMGBTN,   RESIZE_NONE,    14,     2,    23,    16,    37, SPR_IMG_DYNAMITE,          STR_018D_DEMOLISH_BUILDINGS_ETC},         // ETTW_DEMOLISH
   462 {    WWT_IMGBTN,   RESIZE_NONE,    14,    24,    45,    16,    37, SPR_IMG_TERRAFORM_DOWN,    STR_018E_LOWER_A_CORNER_OF_LAND},         // ETTW_LOWER_LAND
   447 {    WWT_IMGBTN,   RESIZE_NONE,    14,    24,    45,    16,    37, SPR_IMG_TERRAFORM_DOWN,    STR_018E_LOWER_A_CORNER_OF_LAND},         // ETTW_LOWER_LAND
   463 {    WWT_IMGBTN,   RESIZE_NONE,    14,    46,    67,    16,    37, SPR_IMG_TERRAFORM_UP,      STR_018F_RAISE_A_CORNER_OF_LAND},         // ETTW_RAISE_LAND
   448 {    WWT_IMGBTN,   RESIZE_NONE,    14,    46,    67,    16,    37, SPR_IMG_TERRAFORM_UP,      STR_018F_RAISE_A_CORNER_OF_LAND},         // ETTW_RAISE_LAND
   464 {    WWT_IMGBTN,   RESIZE_NONE,    14,    68,    89,    16,    37, SPR_IMG_LEVEL_LAND,        STR_LEVEL_LAND_TOOLTIP},                  // ETTW_LEVEL_LAND
   449 {    WWT_IMGBTN,   RESIZE_NONE,    14,    68,    89,    16,    37, SPR_IMG_LEVEL_LAND,        STR_LEVEL_LAND_TOOLTIP},                  // ETTW_LEVEL_LAND
   465 {    WWT_IMGBTN,   RESIZE_NONE,    14,    90,   111,    16,    37, SPR_IMG_BUILD_CANAL,       STR_CREATE_LAKE},                         // ETTW_BUILD_CANAL
   450 {    WWT_IMGBTN,   RESIZE_NONE,    14,   90,    111,    16,    37, SPR_IMG_ROCKS,             STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE}, // ETTW_PLACE_ROCKS
   466 {    WWT_IMGBTN,   RESIZE_NONE,    14,   112,   133,    16,    37, SPR_IMG_BUILD_RIVER,       STR_CREATE_RIVER},                        // ETTW_BUILD_RIVER
   451 {    WWT_IMGBTN,   RESIZE_NONE,    14,   112,   133,    16,    37, SPR_IMG_LIGHTHOUSE_DESERT, STR_NULL},                                // ETTW_PLACE_DESERT_LIGHTHOUSE XXX - dynamic
   467 {    WWT_IMGBTN,   RESIZE_NONE,    14,   134,   156,    16,    37, SPR_IMG_ROCKS,             STR_028C_PLACE_ROCKY_AREAS_ON_LANDSCAPE}, // ETTW_PLACE_ROCKS
   452 {    WWT_IMGBTN,   RESIZE_NONE,    14,   134,   156,    16,    37, SPR_IMG_TRANSMITTER,       STR_028E_PLACE_TRANSMITTER},              // ETTW_PLACE_TRANSMITTER
   468 {    WWT_IMGBTN,   RESIZE_NONE,    14,   157,   179,    16,    37, SPR_IMG_LIGHTHOUSE_DESERT, STR_NULL},                                // ETTW_PLACE_DESERT_LIGHTHOUSE XXX - dynamic
       
   469 {    WWT_IMGBTN,   RESIZE_NONE,    14,   180,   201,    16,    37, SPR_IMG_TRANSMITTER,       STR_028E_PLACE_TRANSMITTER},              // ETTW_PLACE_TRANSMITTER
       
   470 {    WWT_IMGBTN,   RESIZE_NONE,    14,   150,   161,    45,    56, SPR_ARROW_UP,              STR_0228_INCREASE_SIZE_OF_LAND_AREA},     // ETTW_INCREASE_SIZE
   453 {    WWT_IMGBTN,   RESIZE_NONE,    14,   150,   161,    45,    56, SPR_ARROW_UP,              STR_0228_INCREASE_SIZE_OF_LAND_AREA},     // ETTW_INCREASE_SIZE
   471 {    WWT_IMGBTN,   RESIZE_NONE,    14,   150,   161,    58,    69, SPR_ARROW_DOWN,            STR_0229_DECREASE_SIZE_OF_LAND_AREA},     // ETTW_DECREASE_SIZE
   454 {    WWT_IMGBTN,   RESIZE_NONE,    14,   150,   161,    58,    69, SPR_ARROW_DOWN,            STR_0229_DECREASE_SIZE_OF_LAND_AREA},     // ETTW_DECREASE_SIZE
   472 {   WWT_TEXTBTN,   RESIZE_NONE,    14,    24,   179,    76,    87, STR_SE_NEW_WORLD,          STR_022A_GENERATE_RANDOM_LAND},           // ETTW_NEW_SCENARIO
   455 {   WWT_TEXTBTN,   RESIZE_NONE,    14,    2,    161,    76,    87, STR_SE_NEW_WORLD,          STR_022A_GENERATE_RANDOM_LAND},           // ETTW_NEW_SCENARIO
   473 {   WWT_TEXTBTN,   RESIZE_NONE,    14,    24,   179,    89,   100, STR_022B_RESET_LANDSCAPE,  STR_RESET_LANDSCAPE_TOOLTIP},             // ETTW_RESET_LANDSCAPE
   456 {   WWT_TEXTBTN,   RESIZE_NONE,    14,    2,    161,    89,   100, STR_022B_RESET_LANDSCAPE,  STR_RESET_LANDSCAPE_TOOLTIP},             // ETTW_RESET_LANDSCAPE
   474 {   WIDGETS_END},
   457 {   WIDGETS_END},
   475 };
   458 };
   476 
   459 
   477 static const int8 _multi_terraform_coords[][2] = {
   460 static const int8 _multi_terraform_coords[][2] = {
   478 	{  0, -2},
   461 	{  0, -2},
   495 	ETTW_BUTTONS_START,                    ///< Start of pushable buttons
   478 	ETTW_BUTTONS_START,                    ///< Start of pushable buttons
   496 	ETTW_DEMOLISH = ETTW_BUTTONS_START,    ///< Demolish aka dynamite button
   479 	ETTW_DEMOLISH = ETTW_BUTTONS_START,    ///< Demolish aka dynamite button
   497 	ETTW_LOWER_LAND,                       ///< Lower land button
   480 	ETTW_LOWER_LAND,                       ///< Lower land button
   498 	ETTW_RAISE_LAND,                       ///< Raise land button
   481 	ETTW_RAISE_LAND,                       ///< Raise land button
   499 	ETTW_LEVEL_LAND,                       ///< Level land button
   482 	ETTW_LEVEL_LAND,                       ///< Level land button
   500 	ETTW_BUILD_CANAL,                      ///< Build canal button
       
   501 	ETTW_BUILD_RIVER,                      ///< Build river button
       
   502 	ETTW_PLACE_ROCKS,                      ///< Place rocks button
   483 	ETTW_PLACE_ROCKS,                      ///< Place rocks button
   503 	ETTW_PLACE_DESERT_LIGHTHOUSE,          ///< Place desert button (in tropical climate) / place lighthouse button (else)
   484 	ETTW_PLACE_DESERT_LIGHTHOUSE,          ///< Place desert button (in tropical climate) / place lighthouse button (else)
   504 	ETTW_PLACE_TRANSMITTER,                ///< Place transmitter button
   485 	ETTW_PLACE_TRANSMITTER,                ///< Place transmitter button
   505 	ETTW_BUTTONS_END,                      ///< End of pushable buttons
   486 	ETTW_BUTTONS_END,                      ///< End of pushable buttons
   506 	ETTW_INCREASE_SIZE = ETTW_BUTTONS_END, ///< Upwards arrow button to increase terraforming size
   487 	ETTW_INCREASE_SIZE = ETTW_BUTTONS_END, ///< Upwards arrow button to increase terraforming size
   531 static void EditorTerraformClick_LevelLand(Window *w)
   512 static void EditorTerraformClick_LevelLand(Window *w)
   532 {
   513 {
   533 	HandlePlacePushButton(w, ETTW_LEVEL_LAND, SPR_CURSOR_LEVEL_LAND, VHM_POINT, PlaceProc_LevelLand);
   514 	HandlePlacePushButton(w, ETTW_LEVEL_LAND, SPR_CURSOR_LEVEL_LAND, VHM_POINT, PlaceProc_LevelLand);
   534 }
   515 }
   535 
   516 
   536 static void EditorTerraformClick_WaterArea(Window *w)
       
   537 {
       
   538 	HandlePlacePushButton(w, ETTW_BUILD_CANAL, SPR_CURSOR_CANAL, VHM_RECT, PlaceProc_WaterArea);
       
   539 }
       
   540 
       
   541 static void EditorTerraformClick_RiverArea(Window *w)
       
   542 {
       
   543 	HandlePlacePushButton(w, ETTW_BUILD_RIVER, SPR_CURSOR_RIVER, VHM_RECT, PlaceProc_RiverArea);
       
   544 }
       
   545 
       
   546 static void EditorTerraformClick_RockyArea(Window *w)
   517 static void EditorTerraformClick_RockyArea(Window *w)
   547 {
   518 {
   548 	HandlePlacePushButton(w, ETTW_PLACE_ROCKS, SPR_CURSOR_ROCKY_AREA, VHM_RECT, PlaceProc_RockyArea);
   519 	HandlePlacePushButton(w, ETTW_PLACE_ROCKS, SPR_CURSOR_ROCKY_AREA, VHM_RECT, PlaceProc_RockyArea);
   549 }
   520 }
   550 
   521 
   563 	'Q',
   534 	'Q',
   564 	'W',
   535 	'W',
   565 	'E',
   536 	'E',
   566 	'R',
   537 	'R',
   567 	'T',
   538 	'T',
   568 	'Y',
   539 	'Y'
   569 	'U',
       
   570 	'I'
       
   571 };
   540 };
   572 
   541 
   573 typedef void OnButtonClick(Window *w);
   542 typedef void OnButtonClick(Window *w);
   574 static OnButtonClick * const _editor_terraform_button_proc[] = {
   543 static OnButtonClick * const _editor_terraform_button_proc[] = {
   575 	EditorTerraformClick_Dynamite,
   544 	EditorTerraformClick_Dynamite,
   576 	EditorTerraformClick_LowerBigLand,
   545 	EditorTerraformClick_LowerBigLand,
   577 	EditorTerraformClick_RaiseBigLand,
   546 	EditorTerraformClick_RaiseBigLand,
   578 	EditorTerraformClick_LevelLand,
   547 	EditorTerraformClick_LevelLand,
   579 	EditorTerraformClick_WaterArea,
       
   580 	EditorTerraformClick_RiverArea,
       
   581 	EditorTerraformClick_RockyArea,
   548 	EditorTerraformClick_RockyArea,
   582 	EditorTerraformClick_DesertLightHouse,
   549 	EditorTerraformClick_DesertLightHouse,
   583 	EditorTerraformClick_Transmitter
   550 	EditorTerraformClick_Transmitter
   584 };
   551 };
   585 
   552 
   706 		if (pt.x != -1) {
   673 		if (pt.x != -1) {
   707 			switch (select_proc) {
   674 			switch (select_proc) {
   708 				default: NOT_REACHED();
   675 				default: NOT_REACHED();
   709 				case DDSP_CREATE_ROCKS:
   676 				case DDSP_CREATE_ROCKS:
   710 				case DDSP_CREATE_DESERT:
   677 				case DDSP_CREATE_DESERT:
   711 				case DDSP_CREATE_WATER:
       
   712 				case DDSP_CREATE_RIVER:
       
   713 				case DDSP_RAISE_AND_LEVEL_AREA:
   678 				case DDSP_RAISE_AND_LEVEL_AREA:
   714 				case DDSP_LOWER_AND_LEVEL_AREA:
   679 				case DDSP_LOWER_AND_LEVEL_AREA:
   715 				case DDSP_LEVEL_AREA:
   680 				case DDSP_LEVEL_AREA:
   716 				case DDSP_DEMOLISH_AREA:
   681 				case DDSP_DEMOLISH_AREA:
   717 					GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
   682 					GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
   726 		this->SetDirty();
   691 		this->SetDirty();
   727 	}
   692 	}
   728 };
   693 };
   729 
   694 
   730 static const WindowDesc _scen_edit_land_gen_desc = {
   695 static const WindowDesc _scen_edit_land_gen_desc = {
   731 	WDP_AUTO, WDP_AUTO, 204, 103, 204, 103,
   696 	WDP_AUTO, WDP_AUTO, 163, 103, 163, 103,
   732 	WC_SCEN_LAND_GEN, WC_NONE,
   697 	WC_SCEN_LAND_GEN, WC_NONE,
   733 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
   698 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON,
   734 	_scen_edit_land_gen_widgets,
   699 	_scen_edit_land_gen_widgets,
   735 };
   700 };
   736 
   701