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 |
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: |
265 { WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_TERRAFORM_UP, STR_018F_RAISE_A_CORNER_OF_LAND}, |
265 { WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_TERRAFORM_UP, STR_018F_RAISE_A_CORNER_OF_LAND}, |
266 { WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_LEVEL_LAND, STR_LEVEL_LAND_TOOLTIP}, |
266 { WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_LEVEL_LAND, STR_LEVEL_LAND_TOOLTIP}, |
267 { WWT_IMGBTN, RESIZE_NONE, 7, 70, 91, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, |
267 { WWT_IMGBTN, RESIZE_NONE, 7, 70, 91, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, |
268 { WWT_IMGBTN, RESIZE_NONE, 7, 92, 113, 14, 35, SPR_IMG_BUY_LAND, STR_0329_PURCHASE_LAND_FOR_FUTURE}, |
268 { WWT_IMGBTN, RESIZE_NONE, 7, 92, 113, 14, 35, SPR_IMG_BUY_LAND, STR_0329_PURCHASE_LAND_FOR_FUTURE}, |
269 { WWT_IMGBTN, RESIZE_NONE, 7, 114, 135, 14, 35, SPR_IMG_PLANTTREES, STR_0185_PLANT_TREES_PLACE_SIGNS}, |
269 { WWT_IMGBTN, RESIZE_NONE, 7, 114, 135, 14, 35, SPR_IMG_PLANTTREES, STR_0185_PLANT_TREES_PLACE_SIGNS}, |
270 { WWT_IMGBTN, RESIZE_NONE, 7, 136, 157, 14, 35, SPR_IMG_PLACE_SIGN, STR_0289_PLACE_SIGN}, |
270 { WWT_IMGBTN, RESIZE_NONE, 7, 136, 157, 14, 35, SPR_IMG_SIGN, STR_0289_PLACE_SIGN}, |
271 |
271 |
272 { WIDGETS_END}, |
272 { WIDGETS_END}, |
273 }; |
273 }; |
274 |
274 |
275 static const WindowDesc _terraform_desc = { |
275 static const WindowDesc _terraform_desc = { |