summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/newgrf_airport.h6
-rw-r--r--src/station_cmd.cpp27
2 files changed, 17 insertions, 16 deletions
diff --git a/src/newgrf_airport.h b/src/newgrf_airport.h
index ca2ce1576..ebd40c9cd 100644
--- a/src/newgrf_airport.h
+++ b/src/newgrf_airport.h
@@ -56,6 +56,12 @@ public:
return *this;
}
+ /** Get the StationGfx for the current tile. */
+ StationGfx GetStationGfx() const
+ {
+ return this->att->gfx;
+ }
+
virtual AirportTileTableIterator *Clone() const
{
return new AirportTileTableIterator(*this);
diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp
index 27b0c0934..5a1872075 100644
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2224,10 +2224,9 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
}
}
- const AirportTileTable *it = as->table[layout];
- do {
+ for (AirportTileTableIterator iter(as->table[layout], tile); iter != INVALID_TILE; ++iter) {
cost.AddCost(_price[PR_BUILD_STATION_AIRPORT]);
- } while ((++it)->ti.x != -0x80);
+ }
if (flags & DC_EXEC) {
/* Always add the noise, so there will be no need to recalculate when option toggles */
@@ -2241,22 +2240,18 @@ CommandCost CmdBuildAirport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
st->rect.BeforeAddRect(tile, w, h, StationRect::ADD_TRY);
- it = as->table[layout];
- do {
- TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
- MakeAirport(cur_tile, st->owner, st->index, it->gfx, WATER_CLASS_INVALID);
- SetStationTileRandomBits(cur_tile, GB(Random(), 0, 4));
- st->airport.Add(cur_tile);
+ for (AirportTileTableIterator iter(as->table[layout], tile); iter != INVALID_TILE; ++iter) {
+ MakeAirport(iter, st->owner, st->index, iter.GetStationGfx(), WATER_CLASS_INVALID);
+ SetStationTileRandomBits(iter, GB(Random(), 0, 4));
+ st->airport.Add(iter);
- if (AirportTileSpec::Get(GetTranslatedAirportTileID(it->gfx))->animation.status != ANIM_STATUS_NO_ANIMATION) AddAnimatedTile(cur_tile);
- } while ((++it)->ti.x != -0x80);
+ if (AirportTileSpec::Get(GetTranslatedAirportTileID(iter.GetStationGfx()))->animation.status != ANIM_STATUS_NO_ANIMATION) AddAnimatedTile(iter);
+ }
/* Only call the animation trigger after all tiles have been built */
- it = as->table[layout];
- do {
- TileIndex cur_tile = tile + ToTileIndexDiff(it->ti);
- AirportTileAnimationTrigger(st, cur_tile, AAT_BUILT);
- } while ((++it)->ti.x != -0x80);
+ for (AirportTileTableIterator iter(as->table[layout], tile); iter != INVALID_TILE; ++iter) {
+ AirportTileAnimationTrigger(st, iter, AAT_BUILT);
+ }
UpdateAirplanesOnNewStation(st);