1
0
Fork 0

(svn r15667) -Fix (r15601)[FS#2718]: It was possible to remove rail tunnels/bridges and aqueducts build by rival companies.

release/0.7
yexo 2009-03-10 23:16:45 +00:00
parent fa78027ffd
commit da0cbb2a2f
1 changed files with 19 additions and 9 deletions

View File

@ -584,18 +584,28 @@ static inline bool CheckAllowRemoveTunnelBridge(TileIndex tile)
/* Floods can remove anything as well as the scenario editor */ /* Floods can remove anything as well as the scenario editor */
if (_current_company == OWNER_WATER || _game_mode == GM_EDITOR) return true; if (_current_company == OWNER_WATER || _game_mode == GM_EDITOR) return true;
RoadTypes rts = GetRoadTypes(tile); switch (GetTunnelBridgeTransportType(tile)) {
Owner road_owner = _current_company; case TRANSPORT_ROAD: {
Owner tram_owner = _current_company; 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_ROAD)) road_owner = GetRoadOwner(tile, ROADTYPE_ROAD);
if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM); if (HasBit(rts, ROADTYPE_TRAM)) tram_owner = GetRoadOwner(tile, ROADTYPE_TRAM);
/* We can remove unowned road and if the town allows it */ /* 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 (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; 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) static CommandCost DoClearTunnel(TileIndex tile, DoCommandFlag flags)