From 86244ad31e56acfd826f763c897a414acd369d5c Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 13 Jun 2010 14:14:20 +0000 Subject: [PATCH] (svn r19977) -Add: Read current date during SL_LOAD_CHECK. --- src/fios.h | 2 ++ src/fios_gui.cpp | 1 + src/saveload/misc_sl.cpp | 38 ++++++++++++++++++++++++++++++++++++-- 3 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/fios.h b/src/fios.h index 415bcb8bb4..948eae200c 100644 --- a/src/fios.h +++ b/src/fios.h @@ -16,6 +16,7 @@ #include "core/smallvec_type.hpp" #include "core/enum_type.hpp" #include "gfx_type.h" +#include "date_type.h" /** @@ -27,6 +28,7 @@ struct LoadCheckData { char *error_data; ///< Data to pass to SetDParamStr when displaying #error. uint32 map_size_x, map_size_y; + Date current_date; LoadCheckData() : error_data(NULL) { diff --git a/src/fios_gui.cpp b/src/fios_gui.cpp index 97b67438c5..c1617f147a 100644 --- a/src/fios_gui.cpp +++ b/src/fios_gui.cpp @@ -46,6 +46,7 @@ void LoadCheckData::Clear() this->error_data = NULL; this->map_size_x = this->map_size_y = 256; // Default for old savegames which do not store mapsize. + this->current_date = 0; } diff --git a/src/saveload/misc_sl.cpp b/src/saveload/misc_sl.cpp index c891d55131..d53b067e98 100644 --- a/src/saveload/misc_sl.cpp +++ b/src/saveload/misc_sl.cpp @@ -21,6 +21,7 @@ #include "../gfx_func.h" #include "../company_base.h" #include "../core/random_func.hpp" +#include "../fios.h" #include "saveload.h" @@ -86,6 +87,31 @@ static const SaveLoadGlobVarList _date_desc[] = { SLEG_END() }; +static const SaveLoadGlobVarList _date_check_desc[] = { + SLEG_CONDVAR(_load_check_data.current_date, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), + SLEG_CONDVAR(_load_check_data.current_date, SLE_INT32, 31, SL_MAX_VERSION), + SLE_NULL(2), // _date_fract + SLE_NULL(2), // _tick_counter + SLE_NULL(2), // _vehicle_id_ctr_day + SLE_NULL(1), // _age_cargo_skip_counter + SLE_CONDNULL(1, 0, 45), + SLE_CONDNULL(2, 0, 5), // _cur_tileloop_tile + SLE_CONDNULL(4, 6, SL_MAX_VERSION), // _cur_tileloop_tile + SLE_NULL(2), // _disaster_delay + SLE_CONDNULL(2, 0, 119), + SLE_NULL(4), // _random.state[0] + SLE_NULL(4), // _random.state[1] + SLE_CONDNULL(1, 0, 9), + SLE_CONDNULL(4, 10, 119), + SLE_NULL(1), // _cur_company_tick_index + SLE_CONDNULL(2, 0, 108), // _next_competitor_start + SLE_CONDNULL(4, 109, SL_MAX_VERSION), // _next_competitor_start + SLE_NULL(1), // _trees_tick_ctr + SLE_CONDNULL(1, 4, SL_MAX_VERSION), // _pause_mode + SLE_CONDNULL(4, 11, 119), + SLEG_END() +}; + /* Save load date related variables as well as persistent tick counters * XXX: currently some unrelated stuff is just put here */ static void SaveLoad_DATE() @@ -93,6 +119,14 @@ static void SaveLoad_DATE() SlGlobList(_date_desc); } +static void Check_DATE() +{ + SlGlobList(_date_check_desc); + if (CheckSavegameVersion(31)) { + _load_check_data.current_date += DAYS_TILL_ORIGINAL_BASE_YEAR; + } +} + static const SaveLoadGlobVarList _view_desc[] = { SLEG_CONDVAR(_saved_scrollpos_x, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), @@ -109,6 +143,6 @@ static void SaveLoad_VIEW() } extern const ChunkHandler _misc_chunk_handlers[] = { - { 'DATE', SaveLoad_DATE, SaveLoad_DATE, NULL, NULL, CH_RIFF}, - { 'VIEW', SaveLoad_VIEW, SaveLoad_VIEW, NULL, NULL, CH_RIFF | CH_LAST}, + { 'DATE', SaveLoad_DATE, SaveLoad_DATE, NULL, Check_DATE, CH_RIFF}, + { 'VIEW', SaveLoad_VIEW, SaveLoad_VIEW, NULL, NULL, CH_RIFF | CH_LAST}, };