diff options
author | belugas <belugas@openttd.org> | 2008-05-02 02:06:57 +0000 |
---|---|---|
committer | belugas <belugas@openttd.org> | 2008-05-02 02:06:57 +0000 |
commit | 5867336b6e33bafb4984b5284f5dcf06f07e49bd (patch) | |
tree | ec94620d31ea512e5f178ca6fdf88f6b0d2a6d66 /src | |
parent | 5bd8b6adb0866e43d92eb3df4427cba25801b15d (diff) | |
download | openttd-5867336b6e33bafb4984b5284f5dcf06f07e49bd.tar.xz |
(svn r12934) -Codechange: Before verification of local authority, just make sure airport can physically be built there. Just moving tests
Diffstat (limited to 'src')
-rw-r--r-- | src/station_cmd.cpp | 37 |
1 files changed, 17 insertions, 20 deletions
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 06ee48b08..08c67e0de 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -1630,42 +1630,39 @@ CommandCost CmdBuildAirport(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) } Town *t = ClosestTownFromTile(tile, UINT_MAX); - - /* Check if local auth refuses a new airport */ - { - uint num = 0; - const Station *st; - FOR_ALL_STATIONS(st) { - if (st->town == t && st->facilities & FACIL_AIRPORT && st->airport_type != AT_OILRIG) num++; - } - if (num >= 2) { - SetDParam(0, t->index); - return_cmd_error(STR_2035_LOCAL_AUTHORITY_REFUSES); - } - } - const AirportFTAClass *afc = GetAirport(p1); int w = afc->size_x; int h = afc->size_y; + Station *st = NULL; + + if (w > _patches.station_spread || h > _patches.station_spread) { + _error_message = STR_306C_STATION_TOO_SPREAD_OUT; + return CMD_ERROR; + } CommandCost cost = CheckFlatLandBelow(tile, w, h, flags, 0, NULL); if (CmdFailed(cost)) return cost; - Station *st = NULL; + /* Check if local auth refuses a new airport */ + uint num = 0; + FOR_ALL_STATIONS(st) { + if (st->town == t && st->facilities & FACIL_AIRPORT && st->airport_type != AT_OILRIG) num++; + } + if (num >= 2) { + SetDParam(0, t->index); + return_cmd_error(STR_2035_LOCAL_AUTHORITY_REFUSES); + } if (!_patches.adjacent_stations || !HasBit(p2, 0)) { st = GetStationAround(tile, w, h, INVALID_STATION); if (st == CHECK_STATIONS_ERR) return CMD_ERROR; + } else { + st = NULL; } /* Find a station close to us */ if (st == NULL) st = GetClosestStationFromTile(tile); - if (w > _patches.station_spread || h > _patches.station_spread) { - _error_message = STR_306C_STATION_TOO_SPREAD_OUT; - return CMD_ERROR; - } - if (st != NULL) { if (st->owner != _current_player) { return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION); |