Add departure boards and timetable tick status to SLXI info.

Implementing converting timetable start date to/from ticks/days in
afterload code.
This commit is contained in:
Jonathan G Rennison
2015-08-01 21:07:14 +01:00
parent 00f9f75d34
commit 6c81f8f35b
3 changed files with 22 additions and 0 deletions

View File

@@ -2968,6 +2968,23 @@ bool AfterLoadGame()
#endif #endif
} }
if (SlXvIsFeaturePresent(XSLFI_TIMETABLES_START_TICKS) && WALLCLOCK_NETWORK_COMPATIBLE) {
// savegame timetable start is in ticks, but we want it in days, fix it up
Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->timetable_start != 0) {
v->timetable_start /= DAY_TICKS;
}
}
} else if (SlXvIsFeatureMissing(XSLFI_TIMETABLES_START_TICKS) && (!WALLCLOCK_NETWORK_COMPATIBLE)) {
// savegame timetable start is in days, but we want it in ticks, fix it up
Vehicle *v;
FOR_ALL_VEHICLES(v) {
if (v->timetable_start != 0) {
v->timetable_start *= DAY_TICKS;
}
}
}
/* Station acceptance is some kind of cache */ /* Station acceptance is some kind of cache */
if (IsSavegameVersionBefore(127)) { if (IsSavegameVersionBefore(127)) {

View File

@@ -32,6 +32,7 @@
#include "../debug.h" #include "../debug.h"
#include "saveload.h" #include "saveload.h"
#include "extended_ver_sl.h" #include "extended_ver_sl.h"
#include "../timetable.h"
#include <vector> #include <vector>
@@ -45,6 +46,8 @@ std::vector<uint32> _sl_xv_discardable_chunk_ids; ///< list of chunks
static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version os SLXI chunk static const uint32 _sl_xv_slxi_chunk_version = 0; ///< current version os SLXI chunk
const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = { const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
{ XSLFI_DEPARTURE_BOARDS, XSCF_IGNORABLE_UNKNOWN, 1, 1, "departure_boards", NULL, NULL, NULL },
{ XSLFI_TIMETABLES_START_TICKS, XSCF_NULL, WALLCLOCK_NETWORK_COMPATIBLE ? 0 : 1, 1, "timetable_start_ticks", NULL, NULL, NULL },
{ XSLFI_NULL, XSCF_NULL, 0, 0, NULL, NULL, NULL, NULL },// This is the end marker { XSLFI_NULL, XSCF_NULL, 0, 0, NULL, NULL, NULL, NULL },// This is the end marker
}; };

View File

@@ -21,6 +21,8 @@
*/ */
enum SlXvFeatureIndex { enum SlXvFeatureIndex {
XSLFI_NULL = 0, ///< Unused value, to indicate that no extended feature test is in use XSLFI_NULL = 0, ///< Unused value, to indicate that no extended feature test is in use
XSLFI_DEPARTURE_BOARDS, ///< Departure boards patch, in ticks mode
XSLFI_TIMETABLES_START_TICKS, ///< Timetable start time is in ticks, instead of days (from departure boards patch)
XSLFI_SIZE, ///< Total count of features, including null feature XSLFI_SIZE, ///< Total count of features, including null feature
}; };