(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:
@@ -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;
|
||||
|
Reference in New Issue
Block a user