changeset 18615:5ba394eea1f1 draft

(svn r23462) -Codechange: use AirportTileTableIterator in a few more places to make the code easier to read
author yexo <yexo@openttd.org>
date Fri, 09 Dec 2011 19:53:42 +0000
parents 010be418dc07
children 2c4be09c3f9b
files src/newgrf_airport.h src/station_cmd.cpp
diffstat 2 files changed, 18 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/newgrf_airport.h
+++ b/src/newgrf_airport.h
@@ -56,6 +56,12 @@
 		return *this;
 	}
 
+	/** Get the StationGfx for the current tile. */
+	StationGfx GetStationGfx() const
+	{
+		return this->att->gfx;
+	}
+
 	virtual AirportTileTableIterator *Clone() const
 	{
 		return new AirportTileTableIterator(*this);
--- a/src/station_cmd.cpp
+++ b/src/station_cmd.cpp
@@ -2224,10 +2224,9 @@
 		}
 	}
 
-	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 @@
 
 		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);
-
-			if (AirportTileSpec::Get(GetTranslatedAirportTileID(it->gfx))->animation.status != ANIM_STATUS_NO_ANIMATION) AddAnimatedTile(cur_tile);
-		} while ((++it)->ti.x != -0x80);
+		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(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);