From b49b4f627fd75008c1078825b3b6a1db7384f2e2 Mon Sep 17 00:00:00 2001 From: belugas Date: Fri, 2 May 2008 02:06:57 +0000 Subject: (svn r12934) -Codechange: Before verification of local authority, just make sure airport can physically be built there. Just moving tests --- src/station_cmd.cpp | 37 +++++++++++++++++-------------------- 1 file 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); -- cgit v1.2.3-70-g09d2