diff options
author | yexo <yexo@openttd.org> | 2009-03-10 23:16:45 +0000 |
---|---|---|
committer | yexo <yexo@openttd.org> | 2009-03-10 23:16:45 +0000 |
commit | da0cbb2a2f751f75eee7a19100e21feaf37be751 (patch) | |
tree | cb95ac9d065299d68002b00dc34f248982708744 /src | |
parent | fa78027ffd1fc6980693a642af9cbd6c6be66e81 (diff) | |
download | openttd-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.cpp | 28 |
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) |