equal
deleted
inserted
replaced
1105 { |
1105 { |
1106 Track track = (Track)GB(p1, 0, 3); |
1106 Track track = (Track)GB(p1, 0, 3); |
1107 |
1107 |
1108 if (!ValParamTrackOrientation(track) || |
1108 if (!ValParamTrackOrientation(track) || |
1109 !IsTileType(tile, MP_RAILWAY) || |
1109 !IsTileType(tile, MP_RAILWAY) || |
|
1110 !HasTrack(tile, track) || |
1110 !EnsureNoTrainOnTrack(tile, track) || |
1111 !EnsureNoTrainOnTrack(tile, track) || |
1111 !HasSignalOnTrack(tile, track)) { |
1112 !HasSignalOnTrack(tile, track)) { |
1112 return CMD_ERROR; |
1113 return CMD_ERROR; |
1113 } |
1114 } |
1114 |
1115 |
1374 ret = DoCommand(tile, 0, track, flags, CMD_REMOVE_SINGLE_RAIL); |
1375 ret = DoCommand(tile, 0, track, flags, CMD_REMOVE_SINGLE_RAIL); |
1375 if (CmdFailed(ret)) return CMD_ERROR; |
1376 if (CmdFailed(ret)) return CMD_ERROR; |
1376 cost.AddCost(ret); |
1377 cost.AddCost(ret); |
1377 } |
1378 } |
1378 |
1379 |
1379 if (water_ground) { |
1380 /* when bankrupting, don't make water dirty, there could be a ship on lower halftile */ |
|
1381 if (water_ground && !(flags & DC_BANKRUPT)) { |
|
1382 if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR; |
|
1383 |
1380 /* The track was removed, and left a coast tile. Now also clear the water. */ |
1384 /* The track was removed, and left a coast tile. Now also clear the water. */ |
1381 if (flags & DC_EXEC) DoClearSquare(tile); |
1385 if (flags & DC_EXEC) DoClearSquare(tile); |
1382 cost.AddCost(_price.clear_water); |
1386 cost.AddCost(_price.clear_water); |
1383 } |
1387 } |
1384 |
1388 |
2096 } |
2100 } |
2097 |
2101 |
2098 |
2102 |
2099 static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) |
2103 static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side) |
2100 { |
2104 { |
|
2105 /* Case of half tile slope with water. */ |
|
2106 if (mode == TRANSPORT_WATER && IsPlainRailTile(tile) && GetRailGroundType(tile) == RAIL_GROUND_WATER) { |
|
2107 TrackBits tb = GetTrackBits(tile); |
|
2108 switch (tb) { |
|
2109 default: NOT_REACHED(); |
|
2110 case TRACK_BIT_UPPER: tb = TRACK_BIT_LOWER; break; |
|
2111 case TRACK_BIT_LOWER: tb = TRACK_BIT_UPPER; break; |
|
2112 case TRACK_BIT_LEFT: tb = TRACK_BIT_RIGHT; break; |
|
2113 case TRACK_BIT_RIGHT: tb = TRACK_BIT_LEFT; break; |
|
2114 } |
|
2115 return CombineTrackStatus(TrackBitsToTrackdirBits(tb), TRACKDIR_BIT_NONE); |
|
2116 } |
|
2117 |
2101 if (mode != TRANSPORT_RAIL) return 0; |
2118 if (mode != TRANSPORT_RAIL) return 0; |
2102 |
2119 |
2103 TrackBits trackbits = TRACK_BIT_NONE; |
2120 TrackBits trackbits = TRACK_BIT_NONE; |
2104 TrackdirBits red_signals = TRACKDIR_BIT_NONE; |
2121 TrackdirBits red_signals = TRACKDIR_BIT_NONE; |
2105 |
2122 |