43 } |
43 } |
44 |
44 |
45 static void PlaceRoad_NE(TileIndex tile) |
45 static void PlaceRoad_NE(TileIndex tile) |
46 { |
46 { |
47 _place_road_flag = (_tile_fract_coords.y >= 8) + 4; |
47 _place_road_flag = (_tile_fract_coords.y >= 8) + 4; |
48 VpStartPlaceSizing(tile, VPM_FIX_X, GUI_PlaceProc_None); |
48 VpStartPlaceSizing(tile, VPM_FIX_X, DDSP_PLACE_ROAD_NE); |
49 } |
49 } |
50 |
50 |
51 static void PlaceRoad_NW(TileIndex tile) |
51 static void PlaceRoad_NW(TileIndex tile) |
52 { |
52 { |
53 _place_road_flag = (_tile_fract_coords.x >= 8) + 0; |
53 _place_road_flag = (_tile_fract_coords.x >= 8) + 0; |
54 VpStartPlaceSizing(tile, VPM_FIX_Y, GUI_PlaceProc_None); |
54 VpStartPlaceSizing(tile, VPM_FIX_Y, DDSP_PLACE_ROAD_NW); |
55 } |
55 } |
56 |
56 |
57 static void PlaceRoad_Bridge(TileIndex tile) |
57 static void PlaceRoad_Bridge(TileIndex tile) |
58 { |
58 { |
59 VpStartPlaceSizing(tile, VPM_X_OR_Y, GUI_PlaceProc_None); |
59 VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE); |
60 } |
60 } |
61 |
61 |
62 |
62 |
63 void CcBuildRoadTunnel(bool success, TileIndex tile, uint32 p1, uint32 p2) |
63 void CcBuildRoadTunnel(bool success, TileIndex tile, uint32 p1, uint32 p2) |
64 { |
64 { |
269 w = FindWindowById(WC_BUILD_DEPOT, 0); |
269 w = FindWindowById(WC_BUILD_DEPOT, 0); |
270 if (w != NULL) WP(w, def_d).close = true; |
270 if (w != NULL) WP(w, def_d).close = true; |
271 break; |
271 break; |
272 |
272 |
273 case WE_PLACE_DRAG: |
273 case WE_PLACE_DRAG: |
274 switch (e->we.place.select_method) { |
274 switch (e->we.place.select_proc) { |
275 case VPM_FIX_X: |
275 case DDSP_PLACE_ROAD_NE: |
276 _place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.y & 8) >> 2); |
276 _place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.y & 8) >> 2); |
277 break; |
277 break; |
278 |
278 |
279 case VPM_FIX_Y: |
279 case DDSP_PLACE_ROAD_NW: |
280 _place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.x & 8) >> 2); |
280 _place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.x & 8) >> 2); |
281 break; |
281 break; |
282 } |
282 } |
283 |
283 |
284 VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method); |
284 VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method); |
287 case WE_PLACE_MOUSEUP: |
287 case WE_PLACE_MOUSEUP: |
288 if (e->we.place.pt.x != -1) { |
288 if (e->we.place.pt.x != -1) { |
289 TileIndex start_tile = e->we.place.starttile; |
289 TileIndex start_tile = e->we.place.starttile; |
290 TileIndex end_tile = e->we.place.tile; |
290 TileIndex end_tile = e->we.place.tile; |
291 |
291 |
292 switch (e->we.place.select_method) { |
292 switch (e->we.place.select_proc) { |
293 case VPM_X_OR_Y: |
293 case DDSP_BUILD_BRIDGE: |
294 ResetObjectToPlace(); |
294 ResetObjectToPlace(); |
295 ShowBuildBridgeWindow(start_tile, end_tile, 0x80 | RoadTypeToRoadTypes(_cur_roadtype)); |
295 ShowBuildBridgeWindow(start_tile, end_tile, 0x80 | RoadTypeToRoadTypes(_cur_roadtype)); |
296 break; |
296 break; |
297 |
297 |
298 case VPM_X_AND_Y: |
298 case DDSP_DEMOLISH_AREA: |
299 DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA)); |
299 DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA)); |
300 break; |
300 break; |
301 |
301 |
302 default: |
302 case DDSP_PLACE_ROAD_NE: |
|
303 case DDSP_PLACE_ROAD_NW: |
303 DoCommandP(end_tile, start_tile, _place_road_flag | (_cur_roadtype << 3), CcPlaySound1D, |
304 DoCommandP(end_tile, start_tile, _place_road_flag | (_cur_roadtype << 3), CcPlaySound1D, |
304 _remove_button_clicked ? |
305 _remove_button_clicked ? |
305 CMD_REMOVE_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1805_CAN_T_REMOVE_ROAD_FROM) : |
306 CMD_REMOVE_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1805_CAN_T_REMOVE_ROAD_FROM) : |
306 CMD_BUILD_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1804_CAN_T_BUILD_ROAD_HERE)); |
307 CMD_BUILD_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1804_CAN_T_BUILD_ROAD_HERE)); |
307 break; |
308 break; |