(svn r20819) -Fix [FS#3714]: be a bit more "lenient" w.r.t. invalid savegames; don't crash on saveload related NOT_REACHEDs, just show the user an error that the savegame is corrupted

This commit is contained in:
rubidium
2010-09-16 22:06:36 +00:00
parent 76bd43dbff
commit f3cf16f529
6 changed files with 46 additions and 32 deletions

View File

@@ -79,7 +79,7 @@ void SetWaterClassDependingOnSurroundings(TileIndex t, bool include_invalid_wate
SetWaterClass(t, WATER_CLASS_INVALID);
return;
} else {
NOT_REACHED();
SlErrorCorrupt("Invalid water class for dry tile");
}
}
@@ -108,7 +108,7 @@ void SetWaterClassDependingOnSurroundings(TileIndex t, bool include_invalid_wate
case WATER_CLASS_SEA: has_water = true; break;
case WATER_CLASS_CANAL: has_canal = true; break;
case WATER_CLASS_RIVER: has_river = true; break;
default: NOT_REACHED();
default: SlErrorCorrupt("Invalid water class for tile");
}
}
break;
@@ -871,7 +871,7 @@ bool AfterLoadGame()
case MP_ROAD:
SB(_m[t].m5, 6, 2, GB(_m[t].m5, 4, 2));
switch (GetRoadTileType(t)) {
default: NOT_REACHED();
default: SlErrorCorrupt("Invalid road tile type");
case ROAD_TILE_NORMAL:
SB(_m[t].m4, 0, 4, GB(_m[t].m5, 0, 4));
SB(_m[t].m4, 4, 4, 0);
@@ -912,7 +912,7 @@ bool AfterLoadGame()
if (fix_roadtypes) SetRoadTypes(t, (RoadTypes)GB(_me[t].m7, 5, 3));
SB(_me[t].m7, 5, 1, GB(_m[t].m3, 7, 1)); // snow/desert
switch (GetRoadTileType(t)) {
default: NOT_REACHED();
default: SlErrorCorrupt("Invalid road tile type");
case ROAD_TILE_NORMAL:
SB(_me[t].m7, 0, 4, GB(_m[t].m3, 0, 4)); // road works
SB(_m[t].m6, 3, 3, GB(_m[t].m3, 4, 3)); // ground
@@ -1031,7 +1031,7 @@ bool AfterLoadGame()
if (dir != DirToDiagDir(v->direction)) continue;
switch (dir) {
default: NOT_REACHED();
default: SlErrorCorrupt("Invalid vehicle direction");
case DIAGDIR_NE: if ((v->x_pos & 0xF) != 0) continue; break;
case DIAGDIR_SE: if ((v->y_pos & 0xF) != TILE_SIZE - 1) continue; break;
case DIAGDIR_SW: if ((v->x_pos & 0xF) != TILE_SIZE - 1) continue; break;