(svn r6047) -Codechange: FOR_ALL now _only_ loops valid items, and skips invalid ones

-Codechange: use IsValidXXX where ever possible
  Note: both changes to prepare for new pool system, which needs those changes.
  For every pool there are 2 ugly lines, which will be removed when done
  implementing new pool system.
  Based on FS#13 by blathijs, partly implemented.
This commit is contained in:
truelight
2006-08-22 15:33:35 +00:00
parent 4c2abf1de5
commit 0461d89612
38 changed files with 331 additions and 385 deletions

View File

@@ -51,7 +51,9 @@ static void StationPoolNewBlock(uint start_item)
{
Station *st;
FOR_ALL_STATIONS_FROM(st, start_item) st->index = start_item++;
/* We don't use FOR_ALL here, because FOR_ALL skips invalid items.
* This is just a temporary stage, this will be removed. */
for (st = GetStation(start_item); st != NULL; st = (st->index + 1 < GetStationPoolSize()) ? GetStation(st->index + 1) : NULL) st->index = start_item++;
}
static void StationPoolCleanBlock(uint start_item, uint end_item)
@@ -72,7 +74,9 @@ static void RoadStopPoolNewBlock(uint start_item)
{
RoadStop *rs;
FOR_ALL_ROADSTOPS_FROM(rs, start_item) rs->index = start_item++;
/* We don't use FOR_ALL here, because FOR_ALL skips invalid items.
* TODO - This is just a temporary stage, this will be removed. */
for (rs = GetRoadStop(start_item); rs != NULL; rs = (rs->index + 1 < GetRoadStopPoolSize()) ? GetRoadStop(rs->index + 1) : NULL) rs->index = start_item++;
}
/* Initialize the station-pool and roadstop-pool */
@@ -145,8 +149,10 @@ RoadStop *AllocateRoadStop(void)
{
RoadStop *rs;
FOR_ALL_ROADSTOPS(rs) {
if (!rs->used) {
/* We don't use FOR_ALL here, because FOR_ALL skips invalid items.
* TODO - This is just a temporary stage, this will be removed. */
for (rs = GetRoadStop(0); rs != NULL; rs = (rs->index + 1 < GetRoadStopPoolSize()) ? GetRoadStop(rs->index + 1) : NULL) {
if (!IsValidRoadStop(rs)) {
uint index = rs->index;
memset(rs, 0, sizeof(*rs));
@@ -252,8 +258,10 @@ static Station *AllocateStation(void)
{
Station *st = NULL;
FOR_ALL_STATIONS(st) {
if (st->xy == 0) {
/* We don't use FOR_ALL here, because FOR_ALL skips invalid items.
* TODO - This is just a temporary stage, this will be removed. */
for (st = GetStation(0); st != NULL; st = (st->index + 1 < GetStationPoolSize()) ? GetStation(st->index + 1) : NULL) {
if (!IsValidStation(st)) {
StationID index = st->index;
memset(st, 0, sizeof(Station));
@@ -337,7 +345,7 @@ static bool GenerateStationName(Station *st, TileIndex tile, int flag)
Station *s;
FOR_ALL_STATIONS(s) {
if (s != st && s->xy != 0 && s->town==t) {
if (s != st && s->town==t) {
uint str = M(s->string_id);
if (str <= 0x20) {
if (str == M(STR_SV_STNAME_FOREST))
@@ -438,7 +446,7 @@ static Station* GetClosestStationFromTile(TileIndex tile, uint threshold, Player
Station* st;
FOR_ALL_STATIONS(st) {
if (st->xy != 0 && (owner == OWNER_SPECTATOR || st->owner == owner)) {
if ((owner == OWNER_SPECTATOR || st->owner == owner)) {
uint cur_dist = DistanceManhattan(tile, st->xy);
if (cur_dist < threshold) {
@@ -501,7 +509,7 @@ void UpdateAllStationVirtCoord(void)
Station* st;
FOR_ALL_STATIONS(st) {
if (st->xy != 0) UpdateStationVirtCoord(st);
UpdateStationVirtCoord(st);
}
}
@@ -1664,7 +1672,7 @@ int32 CmdBuildAirport(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
uint num = 0;
FOR_ALL_STATIONS(st) {
if (st->xy != 0 && st->town == t && st->facilities&FACIL_AIRPORT && st->airport_type != AT_OILRIG)
if (st->town == t && st->facilities&FACIL_AIRPORT && st->airport_type != AT_OILRIG)
num++;
}
if (num >= 2) {
@@ -2435,7 +2443,7 @@ void DeleteAllPlayerStations(void)
Station *st;
FOR_ALL_STATIONS(st) {
if (st->xy != 0 && st->owner < MAX_PLAYERS) DeleteStation(st);
if (st->owner < MAX_PLAYERS) DeleteStation(st);
}
}
@@ -2569,10 +2577,10 @@ void OnTick_Station(void)
if (++_station_tick_ctr == GetStationPoolSize()) _station_tick_ctr = 0;
st = GetStation(i);
if (st->xy != 0) StationHandleBigTick(st);
if (IsValidStation(st)) StationHandleBigTick(st);
FOR_ALL_STATIONS(st) {
if (st->xy != 0) StationHandleSmallTick(st);
StationHandleSmallTick(st);
}
}
@@ -2586,7 +2594,7 @@ void ModifyStationRatingAround(TileIndex tile, PlayerID owner, int amount, uint
Station *st;
FOR_ALL_STATIONS(st) {
if (st->xy != 0 && st->owner == owner &&
if (st->owner == owner &&
DistanceManhattan(tile, st->xy) <= radius) {
uint i;
@@ -3068,10 +3076,8 @@ static void Save_STNS(void)
Station *st;
// Write the stations
FOR_ALL_STATIONS(st) {
if (st->xy != 0) {
SlSetArrayIndex(st->index);
SlAutolength((AutolengthProc*)SaveLoad_STNS, st);
}
SlSetArrayIndex(st->index);
SlAutolength((AutolengthProc*)SaveLoad_STNS, st);
}
}
@@ -3126,10 +3132,8 @@ static void Save_ROADSTOP(void)
RoadStop *rs;
FOR_ALL_ROADSTOPS(rs) {
if (rs->used) {
SlSetArrayIndex(rs->index);
SlObject(rs, _roadstop_desc);
}
SlSetArrayIndex(rs->index);
SlObject(rs, _roadstop_desc);
}
}