diff --git a/README.md b/README.md index a62b8a8fd2..a4947a7dce 100644 --- a/README.md +++ b/README.md @@ -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 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 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 * Various improvements to the crash logger. diff --git a/src/saveload/depot_sl.cpp b/src/saveload/depot_sl.cpp index 861a541730..3c6be86cd3 100644 --- a/src/saveload/depot_sl.cpp +++ b/src/saveload/depot_sl.cpp @@ -27,6 +27,7 @@ static const SaveLoad _depot_desc[] = { SLE_CONDVAR(Depot, town_cn, SLE_UINT16, 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_CONDNULL_X(4, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 5)), SLE_END() }; diff --git a/src/saveload/extended_ver_sl.cpp b/src/saveload/extended_ver_sl.cpp index ad71aa125a..a757bf17eb 100644 --- a/src/saveload/extended_ver_sl.cpp +++ b/src/saveload/extended_ver_sl.cpp @@ -204,7 +204,37 @@ void SlXvCheckSpecialSavegameVersions() _sl_version = 194; _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]) { diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp index 4f23576d0d..af95c4944a 100644 --- a/src/saveload/station_sl.cpp +++ b/src/saveload/station_sl.cpp @@ -190,8 +190,8 @@ static const SaveLoad _old_station_desc[] = { SLE_VAR(Station, time_since_load, 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_FILE_U16 | SLE_VAR_U8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 3)), + 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, 4)), SLE_VAR(Station, owner, SLE_UINT8), SLE_VAR(Station, facilities, 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_CONDNULL(2, 51, 67), 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), SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, 0, 6), 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_VAR(BaseStation, string_id, SLE_STRINGID), 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_FILE_U16 | SLE_VAR_U8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 3)), + 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, 4)), SLE_VAR(BaseStation, owner, SLE_UINT8), SLE_VAR(BaseStation, facilities, SLE_UINT8), 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_VAR(Station, airport.type, SLE_UINT8), 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_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), SLEG_CONDARR(_old_st_persistent_storage.storage, SLE_UINT32, 16, 145, 160), SLE_CONDREF(Station, airport.psa, REF_STORAGE, 161, SL_MAX_VERSION), diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 6532115e4d..7048936876 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -718,7 +718,7 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) 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) * 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(2, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), diff --git a/src/table/settings.ini b/src/table/settings.ini index fe969b5064..2e9466a178 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -678,6 +678,11 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) length = 1 extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) +;; economy.scale_industry_production +[SDT_NULL] +length = 1 +extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7) + [SDT_BOOL] base = GameSettings var = economy.allow_town_roads @@ -1529,7 +1534,7 @@ strhelp = STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT ;; economy.allow_automatic_industries [SDT_NULL] length = 1 -extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 3) +extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4) [SDT_NULL] length = 1 @@ -3482,6 +3487,11 @@ strhelp = STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT proc = InvalidateVehTimetableWindow cat = SC_EXPERT +;; gui.time_in_minutes +[SDT_NULL] +length = 1 +extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7) + [SDTC_BOOL] var = gui.timetable_leftover_ticks 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 proc = RedrawScreen +;; gui.ticks_per_minute +[SDT_NULL] +length = 1 +extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7) + [SDTC_VAR] var = gui.date_with_time type = SLE_UINT8