src/terraform_gui.cpp
changeset 7165 37eb253f3c06
parent 7096 fd549da22194
child 7166 3937d5ea59df
equal deleted inserted replaced
7164:8a45b776c717 7165:37eb253f3c06
   102 bool GUIPlaceProcDragXY(const WindowEvent *e)
   102 bool GUIPlaceProcDragXY(const WindowEvent *e)
   103 {
   103 {
   104 	TileIndex start_tile = e->we.place.starttile;
   104 	TileIndex start_tile = e->we.place.starttile;
   105 	TileIndex end_tile = e->we.place.tile;
   105 	TileIndex end_tile = e->we.place.tile;
   106 
   106 
   107 	switch (e->we.place.userdata >> 4) {
   107 	switch (e->we.place.select_proc) {
   108 	case GUI_PlaceProc_DemolishArea >> 4:
   108 		case GUI_PlaceProc_DemolishArea:
   109 		DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
   109 			DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
   110 		break;
   110 			break;
   111 	case GUI_PlaceProc_LevelArea >> 4:
   111 		case GUI_PlaceProc_LevelArea:
   112 		DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_LEVEL_LAND | CMD_AUTO);
   112 			DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_LEVEL_LAND | CMD_AUTO);
   113 		break;
   113 			break;
   114 	case GUI_PlaceProc_RockyArea >> 4:
   114 		case GUI_PlaceProc_RockyArea:
   115 		GenerateRockyArea(end_tile, start_tile);
   115 			GenerateRockyArea(end_tile, start_tile);
   116 		break;
   116 			break;
   117 	case GUI_PlaceProc_DesertArea >> 4:
   117 		case GUI_PlaceProc_DesertArea:
   118 		GenerateDesertArea(end_tile, start_tile);
   118 			GenerateDesertArea(end_tile, start_tile);
   119 		break;
   119 			break;
   120 	case GUI_PlaceProc_WaterArea >> 4:
   120 		case GUI_PlaceProc_WaterArea:
   121 		DoCommandP(end_tile, start_tile, _ctrl_pressed, CcBuildCanal, CMD_BUILD_CANAL | CMD_AUTO | CMD_MSG(STR_CANT_BUILD_CANALS));
   121 			DoCommandP(end_tile, start_tile, _ctrl_pressed, CcBuildCanal, CMD_BUILD_CANAL | CMD_AUTO | CMD_MSG(STR_CANT_BUILD_CANALS));
   122 		break;
   122 			break;
   123 	default: return false;
   123 		default:
       
   124 			return false;
   124 	}
   125 	}
   125 
   126 
   126 	return true;
   127 	return true;
   127 }
   128 }
   128 
   129 
   138 	'O',
   139 	'O',
   139 };
   140 };
   140 
   141 
   141 void PlaceProc_DemolishArea(TileIndex tile)
   142 void PlaceProc_DemolishArea(TileIndex tile)
   142 {
   143 {
   143 	VpStartPlaceSizing(tile, VPM_X_AND_Y | GUI_PlaceProc_DemolishArea);
   144 	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_DemolishArea);
   144 }
   145 }
   145 
   146 
   146 static void PlaceProc_RaiseLand(TileIndex tile)
   147 static void PlaceProc_RaiseLand(TileIndex tile)
   147 {
   148 {
   148 	DoCommandP(
   149 	DoCommandP(
   159 	);
   160 	);
   160 }
   161 }
   161 
   162 
   162 void PlaceProc_LevelLand(TileIndex tile)
   163 void PlaceProc_LevelLand(TileIndex tile)
   163 {
   164 {
   164 	VpStartPlaceSizing(tile, VPM_X_AND_Y | GUI_PlaceProc_LevelArea);
   165 	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_LevelArea);
   165 }
   166 }
   166 
   167 
   167 static void TerraformClick_Lower(Window *w)
   168 static void TerraformClick_Lower(Window *w)
   168 {
   169 {
   169 	HandlePlacePushButton(w, 4, ANIMCURSOR_LOWERLAND, 2, PlaceProc_LowerLand);
   170 	HandlePlacePushButton(w, 4, ANIMCURSOR_LOWERLAND, 2, PlaceProc_LowerLand);
   237 	case WE_PLACE_OBJ:
   238 	case WE_PLACE_OBJ:
   238 		_place_proc(e->we.place.tile);
   239 		_place_proc(e->we.place.tile);
   239 		return;
   240 		return;
   240 
   241 
   241 	case WE_PLACE_DRAG:
   242 	case WE_PLACE_DRAG:
   242 		VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.userdata & 0xF);
   243 		VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method);
   243 		break;
   244 		break;
   244 
   245 
   245 	case WE_PLACE_MOUSEUP:
   246 	case WE_PLACE_MOUSEUP:
   246 		if (e->we.place.pt.x != -1 &&
   247 		if (e->we.place.pt.x != -1 && e->we.place.select_method == VPM_X_AND_Y) {
   247 				(e->we.place.userdata & 0xF) == VPM_X_AND_Y) { // dragged actions
       
   248 			GUIPlaceProcDragXY(e);
   248 			GUIPlaceProcDragXY(e);
   249 		}
   249 		}
   250 		break;
   250 		break;
   251 
   251 
   252 	case WE_ABORT_PLACE_OBJ:
   252 	case WE_ABORT_PLACE_OBJ: