summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortron <tron@openttd.org>2007-01-17 06:33:23 +0000
committertron <tron@openttd.org>2007-01-17 06:33:23 +0000
commitb8ede482a97827c052f46740e5bcf4a9b3e348b7 (patch)
tree2107b780d0692e2006bdda2664fae08b56345859 /src
parent3ce83d41fa35a8c3977864d9de256b73b04f2844 (diff)
downloadopenttd-b8ede482a97827c052f46740e5bcf4a9b3e348b7.tar.xz
(svn r8183) When iterating over the map in AfterLoadGame() do it the same way for all loops
Diffstat (limited to 'src')
-rw-r--r--src/openttd.cpp127
1 files changed, 60 insertions, 67 deletions
diff --git a/src/openttd.cpp b/src/openttd.cpp
index 1f12ad6ac..118eeb30e 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -1159,6 +1159,7 @@ static inline RailType UpdateRailType(RailType rt, RailType min)
bool AfterLoadGame(void)
{
+ TileIndex map_size = MapSize();
Window *w;
ViewPort *vp;
Player *p;
@@ -1180,14 +1181,11 @@ bool AfterLoadGame(void)
(4.3) version, so I just check when versions are older, and then
walk through the whole map.. */
if (CheckSavegameVersionOldStyle(4, 3)) {
- TileIndex tile = TileXY(0, 0);
- uint w = MapSizeX();
- uint h = MapSizeY();
-
- BEGIN_TILE_LOOP(tile_cur, w, h, tile)
- if (IsTileType(tile_cur, MP_WATER) && GetTileOwner(tile_cur) >= MAX_PLAYERS)
- SetTileOwner(tile_cur, OWNER_WATER);
- END_TILE_LOOP(tile_cur, w, h, tile)
+ for (TileIndex t = 0; t < map_size; t++) {
+ if (IsTileType(t, MP_WATER) && GetTileOwner(t) >= MAX_PLAYERS) {
+ SetTileOwner(t, OWNER_WATER);
+ }
+ }
}
// convert road side to my format.
@@ -1282,25 +1280,25 @@ bool AfterLoadGame(void)
* to use m2 (16bit big), so we need to clean m2, and that is where this is
* all about ;) */
if (CheckSavegameVersionOldStyle(6, 1)) {
- BEGIN_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0) {
- switch (GetTileType(tile)) {
+ for (TileIndex t = 0; t < map_size; t++) {
+ switch (GetTileType(t)) {
case MP_HOUSE:
- _m[tile].m4 = _m[tile].m2;
- SetTownIndex(tile, CalcClosestTownFromTile(tile, (uint)-1)->index);
+ _m[t].m4 = _m[t].m2;
+ SetTownIndex(t, CalcClosestTownFromTile(t, (uint)-1)->index);
break;
case MP_STREET:
- _m[tile].m4 |= (_m[tile].m2 << 4);
- if (IsTileOwner(tile, OWNER_TOWN)) {
- SetTownIndex(tile, CalcClosestTownFromTile(tile, (uint)-1)->index);
+ _m[t].m4 |= (_m[t].m2 << 4);
+ if (IsTileOwner(t, OWNER_TOWN)) {
+ SetTownIndex(t, CalcClosestTownFromTile(t, (uint)-1)->index);
} else {
- SetTownIndex(tile, 0);
+ SetTownIndex(t, 0);
}
break;
default: break;
}
- } END_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0);
+ }
}
/* From version 9.0, we update the max passengers of a town (was sometimes negative
@@ -1335,49 +1333,47 @@ bool AfterLoadGame(void)
}
if (CheckSavegameVersion(42)) {
- TileIndex map_end = MapSize();
- TileIndex tile;
Vehicle* v;
- for (tile = 0; tile != map_end; tile++) {
- if (MayHaveBridgeAbove(tile)) ClearBridgeMiddle(tile);
- if (IsBridgeTile(tile)) {
- if (HASBIT(_m[tile].m5, 6)) { // middle part
- Axis axis = (Axis)GB(_m[tile].m5, 0, 1);
+ for (TileIndex t = 0; t < map_size; t++) {
+ if (MayHaveBridgeAbove(t)) ClearBridgeMiddle(t);
+ if (IsBridgeTile(t)) {
+ if (HASBIT(_m[t].m5, 6)) { // middle part
+ Axis axis = (Axis)GB(_m[t].m5, 0, 1);
- if (HASBIT(_m[tile].m5, 5)) { // transport route under bridge?
- if (GB(_m[tile].m5, 3, 2) == TRANSPORT_RAIL) {
+ if (HASBIT(_m[t].m5, 5)) { // transport route under bridge?
+ if (GB(_m[t].m5, 3, 2) == TRANSPORT_RAIL) {
MakeRailNormal(
- tile,
- GetTileOwner(tile),
+ t,
+ GetTileOwner(t),
axis == AXIS_X ? TRACK_BIT_Y : TRACK_BIT_X,
- GetRailType(tile)
+ GetRailType(t)
);
} else {
- TownID town = IsTileOwner(tile, OWNER_TOWN) ? ClosestTownFromTile(tile, (uint)-1)->index : 0;
+ TownID town = IsTileOwner(t, OWNER_TOWN) ? ClosestTownFromTile(t, (uint)-1)->index : 0;
MakeRoadNormal(
- tile,
- GetTileOwner(tile),
+ t,
+ GetTileOwner(t),
axis == AXIS_X ? ROAD_Y : ROAD_X,
town
);
}
} else {
- if (GB(_m[tile].m5, 3, 2) == 0) {
- MakeClear(tile, CLEAR_GRASS, 3);
+ if (GB(_m[t].m5, 3, 2) == 0) {
+ MakeClear(t, CLEAR_GRASS, 3);
} else {
- MakeCanal(tile, GetTileOwner(tile));
+ MakeCanal(t, GetTileOwner(t));
}
}
- SetBridgeMiddle(tile, axis);
+ SetBridgeMiddle(t, axis);
} else { // ramp
- Axis axis = (Axis)GB(_m[tile].m5, 0, 1);
- uint north_south = GB(_m[tile].m5, 5, 1);
+ Axis axis = (Axis)GB(_m[t].m5, 0, 1);
+ uint north_south = GB(_m[t].m5, 5, 1);
DiagDirection dir = ReverseDiagDir(XYNSToDiagDir(axis, north_south));
- TransportType type = (TransportType)GB(_m[tile].m5, 1, 2);
+ TransportType type = (TransportType)GB(_m[t].m5, 1, 2);
- _m[tile].m5 = 1 << 7 | type << 2 | dir;
+ _m[t].m5 = 1 << 7 | type << 2 | dir;
}
}
}
@@ -1412,7 +1408,6 @@ bool AfterLoadGame(void)
if (CheckSavegameVersion(24)) {
Vehicle *v;
uint i;
- TileIndex t;
RailType min_rail = RAILTYPE_ELECTRIC;
for (i = 0; i < lengthof(_engines); i++) {
@@ -1433,7 +1428,7 @@ bool AfterLoadGame(void)
}
/* .. so we convert the entire map from normal to elrail (so maintain "fairness") */
- for (t = 0; t < MapSize(); t++) {
+ for (TileIndex t = 0; t < map_size; t++) {
switch (GetTileType(t)) {
case MP_RAILWAY:
SetRailType(t, UpdateRailType(GetRailType(t), min_rail));
@@ -1521,33 +1516,31 @@ bool AfterLoadGame(void)
/* From version 15, we moved a semaphore bit from bit 2 to bit 3 in m4, making
* room for PBS. Now in version 21 move it back :P. */
if (CheckSavegameVersion(21) && !CheckSavegameVersion(15)) {
- BEGIN_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0) {
- if (IsTileType(tile, MP_RAILWAY)) {
- if (HasSignals(tile)) {
+ for (TileIndex t = 0; t < map_size; t++) {
+ if (IsTileType(t, MP_RAILWAY)) {
+ if (HasSignals(t)) {
// convert PBS signals to combo-signals
- if (HASBIT(_m[tile].m4, 2)) SetSignalType(tile, SIGTYPE_COMBO);
+ if (HASBIT(_m[t].m4, 2)) SetSignalType(t, SIGTYPE_COMBO);
// move the signal variant back
- SetSignalVariant(tile, HASBIT(_m[tile].m4, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC);
- CLRBIT(_m[tile].m4, 3);
+ SetSignalVariant(t, HASBIT(_m[t].m4, 3) ? SIG_SEMAPHORE : SIG_ELECTRIC);
+ CLRBIT(_m[t].m4, 3);
}
// Clear PBS reservation on track
- if (!IsTileDepotType(tile, TRANSPORT_RAIL)) {
- SB(_m[tile].m4, 4, 4, 0);
+ if (!IsTileDepotType(t, TRANSPORT_RAIL)) {
+ SB(_m[t].m4, 4, 4, 0);
} else {
- CLRBIT(_m[tile].m3, 6);
+ CLRBIT(_m[t].m3, 6);
}
}
// Clear PBS reservation on crossing
- if (IsTileType(tile, MP_STREET) && IsLevelCrossing(tile))
- CLRBIT(_m[tile].m5, 0);
+ if (IsTileType(t, MP_STREET) && IsLevelCrossing(t)) CLRBIT(_m[t].m5, 0);
// Clear PBS reservation on station
- if (IsTileType(tile, MP_STATION))
- CLRBIT(_m[tile].m3, 6);
- } END_TILE_LOOP(tile, MapSizeX(), MapSizeY(), 0);
+ if (IsTileType(t, MP_STATION)) CLRBIT(_m[t].m3, 6);
+ }
}
if (CheckSavegameVersion(22)) UpdatePatches();
@@ -1627,11 +1620,11 @@ bool AfterLoadGame(void)
if (CheckSavegameVersion(32)) {
Industry *i;
- BEGIN_TILE_LOOP(tile_cur, MapSizeX(), MapSizeY(), 0) {
- if (IsTileType(tile_cur, MP_CLEAR) && IsClearGround(tile_cur, CLEAR_FIELDS)) {
- MakeClear(tile_cur, CLEAR_GRASS, 3);
+ for (TileIndex t = 0; t < map_size; t++) {
+ if (IsTileType(t, MP_CLEAR) && IsClearGround(t, CLEAR_FIELDS)) {
+ MakeClear(t, CLEAR_GRASS, 3);
}
- } END_TILE_LOOP(tile_cur, MapSizeX(), MapSizeY(), 0)
+ }
FOR_ALL_INDUSTRIES(i) {
uint j;
@@ -1671,30 +1664,30 @@ bool AfterLoadGame(void)
}
if (CheckSavegameVersion(43)) {
- BEGIN_TILE_LOOP(tile_cur, MapSizeX(), MapSizeY(), 0) {
- if (IsTileType(tile_cur, MP_INDUSTRY)) {
- switch (GetIndustryGfx(tile_cur)) {
+ for (TileIndex t = 0; t < map_size; t++) {
+ if (IsTileType(t, MP_INDUSTRY)) {
+ switch (GetIndustryGfx(t)) {
case GFX_POWERPLANT_SPARKS:
- SetIndustryAnimationState(tile_cur, GB(_m[tile_cur].m1, 2, 5));
+ SetIndustryAnimationState(t, GB(_m[t].m1, 2, 5));
break;
case GFX_OILWELL_ANIMATED_1:
case GFX_OILWELL_ANIMATED_2:
case GFX_OILWELL_ANIMATED_3:
- SetIndustryAnimationState(tile_cur, GB(_m[tile_cur].m1, 0, 2));
+ SetIndustryAnimationState(t, GB(_m[t].m1, 0, 2));
break;
case GFX_COAL_MINE_TOWER_ANIMATED:
case GFX_COPPER_MINE_TOWER_ANIMATED:
case GFX_GOLD_MINE_TOWER_ANIMATED:
- SetIndustryAnimationState(tile_cur, _m[tile_cur].m1);
+ SetIndustryAnimationState(t, _m[t].m1);
break;
default: /* No animation states to change */
break;
}
}
- } END_TILE_LOOP(tile_cur, MapSizeX(), MapSizeY(), 0)
+ }
}
if (CheckSavegameVersion(44)) {