summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2009-03-10 23:16:45 +0000
committeryexo <yexo@openttd.org>2009-03-10 23:16:45 +0000
commitda0cbb2a2f751f75eee7a19100e21feaf37be751 (patch)
treecb95ac9d065299d68002b00dc34f248982708744 /src
parentfa78027ffd1fc6980693a642af9cbd6c6be66e81 (diff)
downloadopenttd-da0cbb2a2f751f75eee7a19100e21feaf37be751.tar.xz
(svn r15667) -Fix (r15601)[FS#2718]: It was possible to remove rail tunnels/bridges and aqueducts build by rival companies.
Diffstat (limited to 'src')
-rw-r--r--src/tunnelbridge_cmd.cpp28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/tunnelbridge_cmd.cpp b/src/tunnelbridge_cmd.cpp
index ddd38adf4..7e3dd707f 100644
--- a/src/tunnelbridge_cmd.cpp
+++ b/src/tunnelbridge_cmd.cpp
@@ -584,18 +584,28 @@ static inline bool CheckAllowRemoveTunnelBridge(TileIndex tile)
/* Floods can remove anything as well as the scenario editor */
if (_current_company == OWNER_WATER || _game_mode == GM_EDITOR) return true;
- RoadTypes rts = GetRoadTypes(tile);
- Owner road_owner = _current_company;
- Owner tram_owner = _current_company;
+ switch (GetTunnelBridgeTransportType(tile)) {
+ case TRANSPORT_ROAD: {
+ RoadTypes rts = GetRoadTypes(tile);
+ Owner road_owner = _current_company;
+ Owner tram_owner = _current_company;
- if (HasBit(rts, ROADTYPE_ROAD)) road_owner = GetRoadOwner(tile, ROADTYPE_ROAD);
- if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM);
+ if (HasBit(rts, ROADTYPE_ROAD)) road_owner = GetRoadOwner(tile, ROADTYPE_ROAD);
+ if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM);
- /* We can remove unowned road and if the town allows it */
- if (road_owner == OWNER_NONE || (road_owner == OWNER_TOWN && (_settings_game.construction.extra_dynamite || _cheats.magic_bulldozer.value))) road_owner = _current_company;
- if (tram_owner == OWNER_NONE) tram_owner = _current_company;
+ /* We can remove unowned road and if the town allows it */
+ if (road_owner == OWNER_NONE || (road_owner == OWNER_TOWN && (_settings_game.construction.extra_dynamite || _cheats.magic_bulldozer.value))) road_owner = _current_company;
+ if (tram_owner == OWNER_NONE) tram_owner = _current_company;
+
+ return CheckOwnership(road_owner) && CheckOwnership(tram_owner);
+ }
- return CheckOwnership(road_owner) && CheckOwnership(tram_owner);
+ case TRANSPORT_RAIL:
+ case TRANSPORT_WATER:
+ return CheckOwnership(GetTileOwner(tile));
+
+ default: NOT_REACHED();
+ }
}
static CommandCost DoClearTunnel(TileIndex tile, DoCommandFlag flags)