Add support for loading SpringPP v2.3, v2.4 savegames
This commit is contained in:
@@ -193,7 +193,7 @@ See [jgrpp-changelog.md](jgrpp-changelog.md) for changelog.
|
|||||||
* Savegames from trunk up to the last savegame version which has been merged into this branch (*jgrpp*) should be loadable in this patchpack.
|
* Savegames from trunk up to the last savegame version which has been merged into this branch (*jgrpp*) should be loadable in this patchpack.
|
||||||
* Savegames from other branches which use the save/load code in the *save_ext* branch (usually suffixed: *-sx*) which are also merged into this branch (*jgrpp*), or where the added feature is marked as discardable/ignorable, should be loadable in this patchpack.
|
* Savegames from other branches which use the save/load code in the *save_ext* branch (usually suffixed: *-sx*) which are also merged into this branch (*jgrpp*), or where the added feature is marked as discardable/ignorable, should be loadable in this patchpack.
|
||||||
* Savegames from other patched versions are not loadable in this patchpack except for savegames from the *tracerestrict* branch ([routing restrictions patch](http://www.tt-forums.net/viewtopic.php?f=33&t=73397)),
|
* Savegames from other patched versions are not loadable in this patchpack except for savegames from the *tracerestrict* branch ([routing restrictions patch](http://www.tt-forums.net/viewtopic.php?f=33&t=73397)),
|
||||||
savegames from the [Spring 2013 Patch Pack](http://www.tt-forums.net/viewtopic.php?f=33&t=66892) v2.0, v2.1, v2.2 (subject to caveats, see below).
|
savegames from the [Spring 2013 Patch Pack](http://www.tt-forums.net/viewtopic.php?f=33&t=66892) v2.0 - v2.4 (subject to caveats, see below).
|
||||||
|
|
||||||
* Miscellaneous
|
* Miscellaneous
|
||||||
* Various improvements to the crash logger.
|
* Various improvements to the crash logger.
|
||||||
|
@@ -27,6 +27,7 @@ static const SaveLoad _depot_desc[] = {
|
|||||||
SLE_CONDVAR(Depot, town_cn, SLE_UINT16, 141, SL_MAX_VERSION),
|
SLE_CONDVAR(Depot, town_cn, SLE_UINT16, 141, SL_MAX_VERSION),
|
||||||
SLE_CONDSTR(Depot, name, SLE_STR, 0, 141, SL_MAX_VERSION),
|
SLE_CONDSTR(Depot, name, SLE_STR, 0, 141, SL_MAX_VERSION),
|
||||||
SLE_CONDVAR(Depot, build_date, SLE_INT32, 142, SL_MAX_VERSION),
|
SLE_CONDVAR(Depot, build_date, SLE_INT32, 142, SL_MAX_VERSION),
|
||||||
|
SLE_CONDNULL_X(4, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 5)),
|
||||||
SLE_END()
|
SLE_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -204,7 +204,37 @@ void SlXvCheckSpecialSavegameVersions()
|
|||||||
|
|
||||||
_sl_version = 194;
|
_sl_version = 194;
|
||||||
_sl_is_faked_ext = true;
|
_sl_is_faked_ext = true;
|
||||||
_sl_xv_feature_versions[XSLFI_SPRINGPP] = 3;
|
_sl_xv_feature_versions[XSLFI_SPRINGPP] = 4; // Note that this break in numbering is deliberate
|
||||||
|
} else if (_sl_version == 223) { /* SL_SPRING_2013_v2_3_XXX */
|
||||||
|
DEBUG(sl, 1, "Loading a SpringPP 2013 v2.3.xxx savegame version %d as version 194", _sl_version);
|
||||||
|
|
||||||
|
_sl_version = 194;
|
||||||
|
_sl_is_faked_ext = true;
|
||||||
|
_sl_xv_feature_versions[XSLFI_SPRINGPP] = 3; // Note that this break in numbering is deliberate
|
||||||
|
} else if (_sl_version == 224) { /* SL_SPRING_2013_v2_3_b3 */
|
||||||
|
DEBUG(sl, 1, "Loading a SpringPP 2013 v2.3.b3 savegame version %d as version 194", _sl_version);
|
||||||
|
|
||||||
|
_sl_version = 194;
|
||||||
|
_sl_is_faked_ext = true;
|
||||||
|
_sl_xv_feature_versions[XSLFI_SPRINGPP] = 5;
|
||||||
|
} else if (_sl_version == 225) { /* SL_SPRING_2013_v2_3_b4 */
|
||||||
|
DEBUG(sl, 1, "Loading a SpringPP 2013 v2.3.b4 savegame version %d as version 194", _sl_version);
|
||||||
|
|
||||||
|
_sl_version = 194;
|
||||||
|
_sl_is_faked_ext = true;
|
||||||
|
_sl_xv_feature_versions[XSLFI_SPRINGPP] = 6;
|
||||||
|
} else if (_sl_version == 226) { /* SL_SPRING_2013_v2_3_b5 */
|
||||||
|
DEBUG(sl, 1, "Loading a SpringPP 2013 v2.3.b5 savegame version %d as version 195", _sl_version);
|
||||||
|
|
||||||
|
_sl_version = 195;
|
||||||
|
_sl_is_faked_ext = true;
|
||||||
|
_sl_xv_feature_versions[XSLFI_SPRINGPP] = 7;
|
||||||
|
} else if (_sl_version == 227) { /* SL_SPRING_2013_v2_4 */
|
||||||
|
DEBUG(sl, 1, "Loading a SpringPP 2013 v2.4 savegame version %d as version 195", _sl_version);
|
||||||
|
|
||||||
|
_sl_version = 195;
|
||||||
|
_sl_is_faked_ext = true;
|
||||||
|
_sl_xv_feature_versions[XSLFI_SPRINGPP] = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_sl_xv_feature_versions[XSLFI_SPRINGPP]) {
|
if (_sl_xv_feature_versions[XSLFI_SPRINGPP]) {
|
||||||
|
@@ -190,8 +190,8 @@ static const SaveLoad _old_station_desc[] = {
|
|||||||
|
|
||||||
SLE_VAR(Station, time_since_load, SLE_UINT8),
|
SLE_VAR(Station, time_since_load, SLE_UINT8),
|
||||||
SLE_VAR(Station, time_since_unload, SLE_UINT8),
|
SLE_VAR(Station, time_since_unload, SLE_UINT8),
|
||||||
SLE_CONDVAR_X(Station, delete_ctr, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 0, 2)),
|
SLE_CONDVAR_X(Station, delete_ctr, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 0, 3)),
|
||||||
SLE_CONDVAR_X(Station, delete_ctr, SLE_FILE_U16 | SLE_VAR_U8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 3)),
|
SLE_CONDVAR_X(Station, delete_ctr, SLE_FILE_U16 | SLE_VAR_U8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)),
|
||||||
SLE_VAR(Station, owner, SLE_UINT8),
|
SLE_VAR(Station, owner, SLE_UINT8),
|
||||||
SLE_VAR(Station, facilities, SLE_UINT8),
|
SLE_VAR(Station, facilities, SLE_UINT8),
|
||||||
SLE_VAR(Station, airport.type, SLE_UINT8),
|
SLE_VAR(Station, airport.type, SLE_UINT8),
|
||||||
@@ -271,7 +271,7 @@ const SaveLoad *GetGoodsDesc()
|
|||||||
SLE_CONDVAR(GoodsEntry, status, SLE_UINT8, 68, SL_MAX_VERSION),
|
SLE_CONDVAR(GoodsEntry, status, SLE_UINT8, 68, SL_MAX_VERSION),
|
||||||
SLE_CONDNULL(2, 51, 67),
|
SLE_CONDNULL(2, 51, 67),
|
||||||
SLE_VAR(GoodsEntry, time_since_pickup, SLE_UINT8),
|
SLE_VAR(GoodsEntry, time_since_pickup, SLE_UINT8),
|
||||||
SLE_CONDNULL_X(6, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 3)),
|
SLE_CONDNULL_X(6, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)),
|
||||||
SLE_VAR(GoodsEntry, rating, SLE_UINT8),
|
SLE_VAR(GoodsEntry, rating, SLE_UINT8),
|
||||||
SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, 0, 6),
|
SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, 0, 6),
|
||||||
SLEG_CONDVAR( _cargo_source, SLE_UINT16, 7, 67),
|
SLEG_CONDVAR( _cargo_source, SLE_UINT16, 7, 67),
|
||||||
@@ -399,8 +399,8 @@ static const SaveLoad _base_station_desc[] = {
|
|||||||
SLE_REF(BaseStation, town, REF_TOWN),
|
SLE_REF(BaseStation, town, REF_TOWN),
|
||||||
SLE_VAR(BaseStation, string_id, SLE_STRINGID),
|
SLE_VAR(BaseStation, string_id, SLE_STRINGID),
|
||||||
SLE_STR(BaseStation, name, SLE_STR | SLF_ALLOW_CONTROL, 0),
|
SLE_STR(BaseStation, name, SLE_STR | SLF_ALLOW_CONTROL, 0),
|
||||||
SLE_CONDVAR_X(Station, delete_ctr, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 0, 2)),
|
SLE_CONDVAR_X(Station, delete_ctr, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 0, 3)),
|
||||||
SLE_CONDVAR_X(Station, delete_ctr, SLE_FILE_U16 | SLE_VAR_U8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 3)),
|
SLE_CONDVAR_X(Station, delete_ctr, SLE_FILE_U16 | SLE_VAR_U8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)),
|
||||||
SLE_VAR(BaseStation, owner, SLE_UINT8),
|
SLE_VAR(BaseStation, owner, SLE_UINT8),
|
||||||
SLE_VAR(BaseStation, facilities, SLE_UINT8),
|
SLE_VAR(BaseStation, facilities, SLE_UINT8),
|
||||||
SLE_VAR(BaseStation, build_date, SLE_INT32),
|
SLE_VAR(BaseStation, build_date, SLE_INT32),
|
||||||
@@ -431,9 +431,9 @@ static const SaveLoad _station_desc[] = {
|
|||||||
SLE_CONDVAR(Station, airport.h, SLE_FILE_U8 | SLE_VAR_U16, 140, SL_MAX_VERSION),
|
SLE_CONDVAR(Station, airport.h, SLE_FILE_U8 | SLE_VAR_U16, 140, SL_MAX_VERSION),
|
||||||
SLE_VAR(Station, airport.type, SLE_UINT8),
|
SLE_VAR(Station, airport.type, SLE_UINT8),
|
||||||
SLE_CONDVAR(Station, airport.layout, SLE_UINT8, 145, SL_MAX_VERSION),
|
SLE_CONDVAR(Station, airport.layout, SLE_UINT8, 145, SL_MAX_VERSION),
|
||||||
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 1, 6)),
|
||||||
SLE_VAR(Station, airport.flags, SLE_UINT64),
|
SLE_VAR(Station, airport.flags, SLE_UINT64),
|
||||||
SLE_CONDNULL_X(8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
SLE_CONDNULL_X(8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 1, 6)),
|
||||||
SLE_CONDVAR(Station, airport.rotation, SLE_UINT8, 145, SL_MAX_VERSION),
|
SLE_CONDVAR(Station, airport.rotation, SLE_UINT8, 145, SL_MAX_VERSION),
|
||||||
SLEG_CONDARR(_old_st_persistent_storage.storage, SLE_UINT32, 16, 145, 160),
|
SLEG_CONDARR(_old_st_persistent_storage.storage, SLE_UINT32, 16, 145, 160),
|
||||||
SLE_CONDREF(Station, airport.psa, REF_STORAGE, 161, SL_MAX_VERSION),
|
SLE_CONDREF(Station, airport.psa, REF_STORAGE, 161, SL_MAX_VERSION),
|
||||||
|
@@ -718,7 +718,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt)
|
|||||||
SLE_CONDNULL(10, 2, 143), // old reserved space
|
SLE_CONDNULL(10, 2, 143), // old reserved space
|
||||||
|
|
||||||
SLE_CONDNULL_X((8 + 8 + 2 + 2 + 4 + 4 + 1 + 1) * 30, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
SLE_CONDNULL_X((8 + 8 + 2 + 2 + 4 + 4 + 1 + 1) * 30, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||||
SLE_CONDNULL_X((8 + 8 + 2 + 2 + 4 + 4 + 1 + 1) * 70, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 3)),
|
SLE_CONDNULL_X((8 + 8 + 2 + 2 + 4 + 4 + 1 + 1) * 70, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)),
|
||||||
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||||
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||||
SLE_CONDNULL_X(2, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
SLE_CONDNULL_X(2, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)),
|
||||||
|
@@ -678,6 +678,11 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
|||||||
length = 1
|
length = 1
|
||||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)
|
||||||
|
|
||||||
|
;; economy.scale_industry_production
|
||||||
|
[SDT_NULL]
|
||||||
|
length = 1
|
||||||
|
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7)
|
||||||
|
|
||||||
[SDT_BOOL]
|
[SDT_BOOL]
|
||||||
base = GameSettings
|
base = GameSettings
|
||||||
var = economy.allow_town_roads
|
var = economy.allow_town_roads
|
||||||
@@ -1529,7 +1534,7 @@ strhelp = STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT
|
|||||||
;; economy.allow_automatic_industries
|
;; economy.allow_automatic_industries
|
||||||
[SDT_NULL]
|
[SDT_NULL]
|
||||||
length = 1
|
length = 1
|
||||||
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 3)
|
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)
|
||||||
|
|
||||||
[SDT_NULL]
|
[SDT_NULL]
|
||||||
length = 1
|
length = 1
|
||||||
@@ -3482,6 +3487,11 @@ strhelp = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT
|
|||||||
proc = InvalidateVehTimetableWindow
|
proc = InvalidateVehTimetableWindow
|
||||||
cat = SC_EXPERT
|
cat = SC_EXPERT
|
||||||
|
|
||||||
|
;; gui.time_in_minutes
|
||||||
|
[SDT_NULL]
|
||||||
|
length = 1
|
||||||
|
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7)
|
||||||
|
|
||||||
[SDTC_BOOL]
|
[SDTC_BOOL]
|
||||||
var = gui.timetable_leftover_ticks
|
var = gui.timetable_leftover_ticks
|
||||||
flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
|
flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC
|
||||||
@@ -3518,6 +3528,11 @@ str = STR_CONFIG_SETTING_TICKS_PER_MINUTE
|
|||||||
strhelp = STR_CONFIG_SETTING_TICKS_PER_MINUTE_HELPTEXT
|
strhelp = STR_CONFIG_SETTING_TICKS_PER_MINUTE_HELPTEXT
|
||||||
proc = RedrawScreen
|
proc = RedrawScreen
|
||||||
|
|
||||||
|
;; gui.ticks_per_minute
|
||||||
|
[SDT_NULL]
|
||||||
|
length = 1
|
||||||
|
extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7)
|
||||||
|
|
||||||
[SDTC_VAR]
|
[SDTC_VAR]
|
||||||
var = gui.date_with_time
|
var = gui.date_with_time
|
||||||
type = SLE_UINT8
|
type = SLE_UINT8
|
||||||
|
Reference in New Issue
Block a user