Changeset - r23957:a76e956cb358
[Not reviewed]
master
0 8 0
glx - 4 years ago 2019-12-15 16:54:05
glx@openttd.org
Codechange: Replace FOR_ALL_DEPOTS with range-based for loops
8 files changed with 12 insertions and 28 deletions:
0 comments (0 inline, 0 general)
src/depot_base.h
Show inline comments
 
@@ -41,10 +41,7 @@ struct Depot : DepotPool::PoolItem<&_dep
 
	inline bool IsOfType(const Depot *d) const
 
	{
 
		return GetTileType(d->xy) == GetTileType(this->xy);
 
	}
 
};
 

	
 
#define FOR_ALL_DEPOTS_FROM(var, start) FOR_ALL_ITEMS_FROM(Depot, depot_index, var, start)
 
#define FOR_ALL_DEPOTS(var) FOR_ALL_DEPOTS_FROM(var, 0)
 

	
 
#endif /* DEPOT_BASE_H */
src/depot_cmd.cpp
Show inline comments
 
@@ -25,15 +25,13 @@
 
 * Check whether the given name is globally unique amongst depots.
 
 * @param name The name to check.
 
 * @return True if there is no depot with the given name.
 
 */
 
static bool IsUniqueDepotName(const char *name)
 
{
 
	const Depot *d;
 

	
 
	FOR_ALL_DEPOTS(d) {
 
	for (const Depot *d : Depot::Iterate()) {
 
		if (d->name != nullptr && strcmp(d->name, name) == 0) return false;
 
	}
 

	
 
	return true;
 
}
 

	
src/saveload/afterload.cpp
Show inline comments
 
@@ -2327,14 +2327,13 @@ bool AfterLoadGame()
 
		while (_economy.inflation_prices < aimed_inflation) {
 
			if (AddInflation(false)) break;
 
		}
 
	}
 

	
 
	if (IsSavegameVersionBefore(SLV_128)) {
 
		const Depot *d;
 
		FOR_ALL_DEPOTS(d) {
 
		for (const Depot *d : Depot::Iterate()) {
 
			/* At some point, invalid depots were saved into the game (possibly those removed in the past?)
 
			 * Remove them here, so they don't cause issues further down the line */
 
			if (!IsDepotTile(d->xy)) {
 
				DEBUG(sl, 0, "Removing invalid depot %d at %d, %d", d->index, TileX(d->xy), TileY(d->xy));
 
				delete d;
 
				d = nullptr;
 
@@ -2442,21 +2441,19 @@ bool AfterLoadGame()
 
			if (IsTileType(t, MP_VOID)) SetTropicZone(t, TROPICZONE_NORMAL);
 
		}
 

	
 
		/* We need to properly number/name the depots.
 
		 * The first step is making sure none of the depots uses the
 
		 * 'default' names, after that we can assign the names. */
 
		Depot *d;
 
		FOR_ALL_DEPOTS(d) d->town_cn = UINT16_MAX;
 

	
 
		FOR_ALL_DEPOTS(d) MakeDefaultName(d);
 
		for (Depot *d : Depot::Iterate()) d->town_cn = UINT16_MAX;
 

	
 
		for (Depot* d : Depot::Iterate()) MakeDefaultName(d);
 
	}
 

	
 
	if (IsSavegameVersionBefore(SLV_142)) {
 
		Depot *d;
 
		FOR_ALL_DEPOTS(d) d->build_date = _date;
 
		for (Depot *d : Depot::Iterate()) d->build_date = _date;
 
	}
 

	
 
	/* In old versions it was possible to remove an airport while a plane was
 
	 * taking off or landing. This gives all kind of problems when building
 
	 * another airport in the same station so we don't allow that anymore.
 
	 * For old savegames with such aircraft we just throw them in the air and
src/saveload/depot_sl.cpp
Show inline comments
 
@@ -27,15 +27,13 @@ static const SaveLoad _depot_desc[] = {
 
	 SLE_CONDVAR(Depot, build_date, SLE_INT32,                SLV_142, SL_MAX_VERSION),
 
	 SLE_END()
 
};
 

	
 
static void Save_DEPT()
 
{
 
	Depot *depot;
 

	
 
	FOR_ALL_DEPOTS(depot) {
 
	for (Depot *depot : Depot::Iterate()) {
 
		SlSetArrayIndex(depot->index);
 
		SlObject(depot, _depot_desc);
 
	}
 
}
 

	
 
static void Load_DEPT()
 
@@ -50,15 +48,13 @@ static void Load_DEPT()
 
		if (IsSavegameVersionBefore(SLV_141)) depot->town = (Town *)(size_t)_town_index;
 
	}
 
}
 

	
 
static void Ptrs_DEPT()
 
{
 
	Depot *depot;
 

	
 
	FOR_ALL_DEPOTS(depot) {
 
	for (Depot *depot : Depot::Iterate()) {
 
		SlObject(depot, _depot_desc);
 
		if (IsSavegameVersionBefore(SLV_141)) depot->town = Town::Get((size_t)depot->town);
 
	}
 
}
 

	
 
extern const ChunkHandler _depot_chunk_handlers[] = {
src/saveload/oldloader_sl.cpp
Show inline comments
 
@@ -106,14 +106,13 @@ static void FixTTDMapArray()
 

	
 
	FixOldMapArray();
 
}
 

	
 
static void FixTTDDepots()
 
{
 
	const Depot *d;
 
	FOR_ALL_DEPOTS_FROM(d, 252) {
 
	for (const Depot *d : Depot::Iterate(252)) {
 
		if (!IsDepotTile(d->xy) || GetDepotIndex(d->xy) != d->index) {
 
			/** Workaround for SVXConverter bug, depots 252-255 could be invalid */
 
			delete d;
 
		}
 
	}
 
}
src/script/api/script_depotlist.cpp
Show inline comments
 
@@ -35,11 +35,10 @@ ScriptDepotList::ScriptDepotList(ScriptT
 
			}
 
			return;
 
		}
 
	}
 

	
 
	/* Handle 'standard' depots. */
 
	const Depot *depot;
 
	FOR_ALL_DEPOTS(depot) {
 
	for (const Depot *depot : Depot::Iterate()) {
 
		if ((::GetTileOwner(depot->xy) == ScriptObject::GetCompany() || ScriptObject::GetCompany() == OWNER_DEITY) && ::IsTileType(depot->xy, tile_type)) this->AddItem(depot->xy);
 
	}
 
}
src/ship_cmd.cpp
Show inline comments
 
@@ -141,22 +141,21 @@ void Ship::GetImage(Direction direction,
 
	result->Set(_ship_sprites[spritenum] + direction);
 
}
 

	
 
static const Depot *FindClosestShipDepot(const Vehicle *v, uint max_distance)
 
{
 
	/* Find the closest depot */
 
	const Depot *depot;
 
	const Depot *best_depot = nullptr;
 
	/* If we don't have a maximum distance, i.e. distance = 0,
 
	 * we want to find any depot so the best distance of no
 
	 * depot must be more than any correct distance. On the
 
	 * other hand if we have set a maximum distance, any depot
 
	 * further away than max_distance can safely be ignored. */
 
	uint best_dist = max_distance == 0 ? UINT_MAX : max_distance + 1;
 

	
 
	FOR_ALL_DEPOTS(depot) {
 
	for (const Depot *depot : Depot::Iterate()) {
 
		TileIndex tile = depot->xy;
 
		if (IsShipDepotTile(tile) && IsTileOwner(tile, v->owner)) {
 
			uint dist = DistanceManhattan(tile, v->tile);
 
			if (dist < best_dist) {
 
				best_dist = dist;
 
				best_depot = depot;
src/town_cmd.cpp
Show inline comments
 
@@ -2880,14 +2880,13 @@ CommandCost CmdDeleteTown(TileIndex tile
 
			CommandCost ret = DoCommand(st->airport.tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 
			if (ret.Failed()) return ret;
 
		}
 
	}
 

	
 
	/* Depots refer to towns. */
 
	const Depot *d;
 
	FOR_ALL_DEPOTS(d) {
 
	for (const Depot *d : Depot::Iterate()) {
 
		if (d->town == t) return CMD_ERROR;
 
	}
 

	
 
	/* Check all tiles for town ownership. First check for bridge tiles, as
 
	 * these do not directly have an owner so we need to check adjacent
 
	 * tiles. This won't work correctly in the same loop if the adjacent
0 comments (0 inline, 0 general)