mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-09 19:10:38 +00:00
(svn r8477) -Fix
-Codechange: Remove the unnecessary attributes Station::{bus,lorry}_tile_obsolete by replacing them with a scan of the map for existing road stops when loading old savegames
This commit is contained in:
parent
6e20c73c33
commit
fe1691acce
@ -312,10 +312,6 @@ static void FixOldStations(void)
|
|||||||
if (st->train_tile != 0 && GetRailStationAxis(st->train_tile) != AXIS_X) {
|
if (st->train_tile != 0 && GetRailStationAxis(st->train_tile) != AXIS_X) {
|
||||||
Swap(st->trainst_w, st->trainst_h);
|
Swap(st->trainst_w, st->trainst_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if there is a bus or truck station, and convert to new format */
|
|
||||||
if (st->bus_tile_obsolete != 0) st->bus_stops = new RoadStop(st->bus_tile_obsolete);
|
|
||||||
if (st->lorry_tile_obsolete != 0) st->truck_stops = new RoadStop(st->lorry_tile_obsolete);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,8 +574,7 @@ static const OldChunks station_chunk[] = {
|
|||||||
OCL_SVAR( OC_TILE, Station, xy ),
|
OCL_SVAR( OC_TILE, Station, xy ),
|
||||||
OCL_VAR ( OC_UINT32, 1, &_old_town_index ),
|
OCL_VAR ( OC_UINT32, 1, &_old_town_index ),
|
||||||
|
|
||||||
OCL_SVAR( OC_TILE, Station, bus_tile_obsolete ),
|
OCL_NULL( 4 ), // bus/lorry tile
|
||||||
OCL_SVAR( OC_TILE, Station, lorry_tile_obsolete ),
|
|
||||||
OCL_SVAR( OC_TILE, Station, train_tile ),
|
OCL_SVAR( OC_TILE, Station, train_tile ),
|
||||||
OCL_SVAR( OC_TILE, Station, airport_tile ),
|
OCL_SVAR( OC_TILE, Station, airport_tile ),
|
||||||
OCL_SVAR( OC_TILE, Station, dock_tile ),
|
OCL_SVAR( OC_TILE, Station, dock_tile ),
|
||||||
|
@ -1282,6 +1282,22 @@ bool AfterLoadGame(void)
|
|||||||
// In 5.1, Oilrigs have been moved (again)
|
// In 5.1, Oilrigs have been moved (again)
|
||||||
if (CheckSavegameVersionOldStyle(5, 1)) UpdateOilRig();
|
if (CheckSavegameVersionOldStyle(5, 1)) UpdateOilRig();
|
||||||
|
|
||||||
|
/* From this version on there can be multiple road stops of the same type per
|
||||||
|
* station. Convert the existing stops to the new internal data structure.
|
||||||
|
*/
|
||||||
|
if (CheckSavegameVersion(6)) {
|
||||||
|
for (TileIndex t = 0; t < map_size; t++) {
|
||||||
|
if (IsRoadStopTile(t)) {
|
||||||
|
RoadStop *rs = new RoadStop(t);
|
||||||
|
if (rs == NULL) error("Too many road stops in savegame");
|
||||||
|
|
||||||
|
Station *st = GetStationByTile(t);
|
||||||
|
RoadStop **head = IsTruckStop(t) ? &st->truck_stops : &st->bus_stops;
|
||||||
|
*head = rs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* In version 6.1 we put the town index in the map-array. To do this, we need
|
/* In version 6.1 we put the town index in the map-array. To do this, we need
|
||||||
* to use m2 (16bit big), so we need to clean m2, and that is where this is
|
* to use m2 (16bit big), so we need to clean m2, and that is where this is
|
||||||
* all about ;) */
|
* all about ;) */
|
||||||
|
@ -142,10 +142,6 @@ struct Station {
|
|||||||
uint16 random_bits;
|
uint16 random_bits;
|
||||||
byte waiting_triggers;
|
byte waiting_triggers;
|
||||||
|
|
||||||
/* Stuff that is no longer used, but needed for conversion */
|
|
||||||
TileIndex bus_tile_obsolete;
|
|
||||||
TileIndex lorry_tile_obsolete;
|
|
||||||
|
|
||||||
StationRect rect; ///< Station spread out rectangle (not saved) maintained by StationRect_xxx() functions
|
StationRect rect; ///< Station spread out rectangle (not saved) maintained by StationRect_xxx() functions
|
||||||
|
|
||||||
static const int cDebugCtorLevel = 3;
|
static const int cDebugCtorLevel = 3;
|
||||||
|
@ -2841,8 +2841,7 @@ static const SaveLoad _roadstop_desc[] = {
|
|||||||
static const SaveLoad _station_desc[] = {
|
static const SaveLoad _station_desc[] = {
|
||||||
SLE_CONDVAR(Station, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
|
SLE_CONDVAR(Station, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
|
||||||
SLE_CONDVAR(Station, xy, SLE_UINT32, 6, SL_MAX_VERSION),
|
SLE_CONDVAR(Station, xy, SLE_UINT32, 6, SL_MAX_VERSION),
|
||||||
SLE_CONDVAR(Station, bus_tile_obsolete, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
|
SLE_CONDNULL(4, 0, 5), // bus/lorry tile
|
||||||
SLE_CONDVAR(Station, lorry_tile_obsolete, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
|
|
||||||
SLE_CONDVAR(Station, train_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
|
SLE_CONDVAR(Station, train_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
|
||||||
SLE_CONDVAR(Station, train_tile, SLE_UINT32, 6, SL_MAX_VERSION),
|
SLE_CONDVAR(Station, train_tile, SLE_UINT32, 6, SL_MAX_VERSION),
|
||||||
SLE_CONDVAR(Station, airport_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
|
SLE_CONDVAR(Station, airport_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
|
||||||
@ -2972,23 +2971,6 @@ static void Load_STNS(void)
|
|||||||
st->trainst_w = w;
|
st->trainst_w = w;
|
||||||
st->trainst_h = h;
|
st->trainst_h = h;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* In older versions, we had just 1 tile for a bus/lorry, now we have more..
|
|
||||||
* convert, if needed */
|
|
||||||
if (CheckSavegameVersion(6)) {
|
|
||||||
if (st->bus_tile_obsolete != 0) {
|
|
||||||
st->bus_stops = new RoadStop(st->bus_tile_obsolete);
|
|
||||||
if (st->bus_stops == NULL)
|
|
||||||
error("Station: too many busstations in savegame");
|
|
||||||
|
|
||||||
}
|
|
||||||
if (st->lorry_tile_obsolete != 0) {
|
|
||||||
st->truck_stops = new RoadStop(st->lorry_tile_obsolete);
|
|
||||||
if (st->truck_stops == NULL)
|
|
||||||
error("Station: too many truckstations in savegame");
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is to ensure all pointers are within the limits of _stations_size */
|
/* This is to ensure all pointers are within the limits of _stations_size */
|
||||||
|
Loading…
Reference in New Issue
Block a user