201 DoCommandP(tile, 0, 0, CcPlaySound1E, CMD_PURCHASE_LAND_AREA | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_5806_CAN_T_PURCHASE_THIS_LAND)); |
201 DoCommandP(tile, 0, 0, CcPlaySound1E, CMD_PURCHASE_LAND_AREA | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_5806_CAN_T_PURCHASE_THIS_LAND)); |
202 } |
202 } |
203 |
203 |
204 static void PlaceRail_ConvertRail(uint tile) |
204 static void PlaceRail_ConvertRail(uint tile) |
205 { |
205 { |
206 VpStartPlaceSizing(tile, VPM_X_AND_Y | (1<<4)); |
206 VpStartPlaceSizing(tile, VPM_X_AND_Y | GUI_PlaceProc_ConvertRailArea); |
207 } |
207 } |
208 |
208 |
209 static void PlaceRail_AutoSignals(uint tile) |
209 static void PlaceRail_AutoSignals(uint tile) |
210 { |
210 { |
211 VpStartPlaceSizing(tile, VPM_SIGNALDIRS); |
211 VpStartPlaceSizing(tile, VPM_SIGNALDIRS); |
434 return; |
434 return; |
435 } |
435 } |
436 |
436 |
437 case WE_PLACE_MOUSEUP: |
437 case WE_PLACE_MOUSEUP: |
438 if (e->click.pt.x != -1) { |
438 if (e->click.pt.x != -1) { |
439 uint start_tile = e->place.starttile; |
439 TileIndex start_tile = e->place.starttile; |
440 uint end_tile = e->place.tile; |
440 TileIndex end_tile = e->place.tile; |
441 |
441 |
442 if (e->place.userdata == VPM_X_OR_Y) { |
442 if (e->place.userdata == VPM_X_OR_Y) { |
443 ResetObjectToPlace(); |
443 ResetObjectToPlace(); |
444 ShowBuildBridgeWindow(start_tile, end_tile, _cur_railtype); |
444 ShowBuildBridgeWindow(start_tile, end_tile, _cur_railtype); |
445 } else if (e->place.userdata == VPM_RAILDIRS) { |
445 } else if (e->place.userdata == VPM_RAILDIRS) { |
447 if (_ctrl_pressed) _remove_button_clicked = true; |
447 if (_ctrl_pressed) _remove_button_clicked = true; |
448 HandleAutodirPlacement(); |
448 HandleAutodirPlacement(); |
449 _remove_button_clicked = old; |
449 _remove_button_clicked = old; |
450 } else if (e->place.userdata == VPM_SIGNALDIRS) { |
450 } else if (e->place.userdata == VPM_SIGNALDIRS) { |
451 HandleAutoSignalPlacement(); |
451 HandleAutoSignalPlacement(); |
452 } else if (e->place.userdata == VPM_X_AND_Y) { |
452 } else if ((e->place.userdata & 0xF) == VPM_X_AND_Y) { |
453 DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA)); |
453 if (GUIPlaceProcDragXY(e)) break; |
454 } else if (e->place.userdata == (VPM_X_AND_Y | (1<<4))) { |
454 |
455 DoCommandP(end_tile, start_tile, _cur_railtype, CcPlaySound10, CMD_CONVERT_RAIL | CMD_MSG(STR_CANT_CONVERT_RAIL)); |
455 if ((e->place.userdata >> 0xF) == GUI_PlaceProc_ConvertRailArea) |
456 } else if (e->place.userdata == (VPM_X_AND_Y | (2<<4))) { |
456 DoCommandP(end_tile, start_tile, _cur_railtype, CcPlaySound10, CMD_CONVERT_RAIL | CMD_MSG(STR_CANT_CONVERT_RAIL)); |
457 DoCommandP(end_tile, start_tile, _cur_railtype, CcPlaySound10, CMD_LEVEL_LAND | CMD_AUTO); |
|
458 } else if (e->place.userdata == VPM_X_AND_Y_LIMITED) { |
457 } else if (e->place.userdata == VPM_X_AND_Y_LIMITED) { |
459 HandleStationPlacement(start_tile, end_tile); |
458 HandleStationPlacement(start_tile, end_tile); |
460 } else |
459 } else |
461 DoRailroadTrack(e->place.userdata & 1); |
460 DoRailroadTrack(e->place.userdata & 1); |
462 } |
461 } |