summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbelugas <belugas@openttd.org>2008-05-02 02:06:57 +0000
committerbelugas <belugas@openttd.org>2008-05-02 02:06:57 +0000
commitb49b4f627fd75008c1078825b3b6a1db7384f2e2 (patch)
treeec94620d31ea512e5f178ca6fdf88f6b0d2a6d66
parent49484eedcada3c0d8cadb1f71333940388507aa1 (diff)
downloadopenttd-b49b4f627fd75008c1078825b3b6a1db7384f2e2.tar.xz
(svn r12934) -Codechange: Before verification of local authority, just make sure airport can physically be built there. Just moving tests
-rw-r--r--src/station_cmd.cpp37
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);