@@ -103,7 +103,7 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = {
|
||||
{ XSLFI_VEHICLE_REPAIR_COST, XSCF_NULL, 2, 2, "vehicle_repair_cost", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_ENH_VIEWPORT_PLANS, XSCF_IGNORABLE_ALL, 4, 4, "enh_viewport_plans", nullptr, nullptr, "PLAN" },
|
||||
{ XSLFI_INFRA_SHARING, XSCF_NULL, 2, 2, "infra_sharing", nullptr, nullptr, "CPDP" },
|
||||
{ XSLFI_VARIABLE_DAY_LENGTH, XSCF_NULL, 4, 4, "variable_day_length", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_VARIABLE_DAY_LENGTH, XSCF_NULL, 5, 5, "variable_day_length", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_ORDER_OCCUPANCY, XSCF_NULL, 2, 2, "order_occupancy", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_MORE_COND_ORDERS, XSCF_NULL, 17, 17, "more_cond_orders", nullptr, nullptr, nullptr },
|
||||
{ XSLFI_EXTRA_LARGE_MAP, XSCF_NULL, 0, 1, "extra_large_map", nullptr, nullptr, nullptr },
|
||||
|
@@ -84,14 +84,14 @@ byte _age_cargo_skip_counter; ///< Skip aging of cargo? Used before savegame ver
|
||||
extern TimeoutTimer<TimerGameTick> _new_competitor_timeout;
|
||||
|
||||
static const NamedSaveLoad _date_desc[] = {
|
||||
NSL("", SLEG_CONDVAR(_date, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31)),
|
||||
NSL("date", SLEG_CONDVAR(_date, SLE_INT32, SLV_31, SL_MAX_VERSION)),
|
||||
NSL("date_fract", SLEG_VAR(_date_fract, SLE_UINT16)),
|
||||
NSL("", SLEG_CONDVAR(CalTime::Detail::now.cal_date, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31)),
|
||||
NSL("date", SLEG_CONDVAR(CalTime::Detail::now.cal_date, SLE_INT32, SLV_31, SL_MAX_VERSION)),
|
||||
NSL("date_fract", SLEG_VAR(CalTime::Detail::now.cal_date_fract, SLE_UINT16)),
|
||||
NSL("", SLEG_CONDVAR_X(_tick_counter, SLE_FILE_U16 | SLE_VAR_U64, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_U64_TICK_COUNTER, 0, 0))),
|
||||
NSL("tick_counter", SLEG_CONDVAR_X(_tick_counter, SLE_UINT64, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_U64_TICK_COUNTER))),
|
||||
NSL("tick_skip_counter", SLEG_CONDVAR_X(_tick_skip_counter, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH))),
|
||||
NSL("tick_skip_counter", SLEG_CONDVAR_X(DateDetail::_tick_skip_counter, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH))),
|
||||
NSL("scaled_tick_counter", SLEG_CONDVAR_X(_scaled_tick_counter, SLE_UINT64, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH, 3))),
|
||||
NSL("", SLEG_CONDVAR_X(_state_ticks_offset, SLE_INT64, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH, 3, 3))),
|
||||
NSL("", SLEG_CONDVAR_X(DateDetail::_state_ticks_offset, SLE_INT64, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH, 3, 3))),
|
||||
NSL("state_ticks", SLEG_CONDVAR_X(_state_ticks, SLE_INT64, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH, 4))),
|
||||
NSL("", SLE_CONDNULL(2, SL_MIN_VERSION, SLV_157)), // _vehicle_id_ctr_day
|
||||
NSL("", SLEG_CONDVAR(_age_cargo_skip_counter, SLE_UINT8, SL_MIN_VERSION, SLV_162)),
|
||||
@@ -122,6 +122,9 @@ static const NamedSaveLoad _date_desc[] = {
|
||||
|
||||
/* New (table only) fields below */
|
||||
NSLT("id", SLEG_CONDSSTR_X(_savegame_id, SLE_STR, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SAVEGAME_ID))),
|
||||
NSLT("economy_date", SLEG_CONDVAR_X(EconTime::Detail::now.econ_date, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH, 5))),
|
||||
NSLT("economy_date_fract", SLEG_CONDVAR_X(EconTime::Detail::now.econ_date_fract, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH, 5))),
|
||||
NSLT("calendar_sub_date_fract", SLEG_CONDVAR_X(CalTime::Detail::now.sub_date_fract, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH, 5))),
|
||||
};
|
||||
|
||||
static const NamedSaveLoad _date_check_desc[] = {
|
||||
@@ -176,7 +179,7 @@ static void Check_DATE()
|
||||
{
|
||||
SlLoadTableOrRiffFiltered(_date_check_desc);
|
||||
if (IsSavegameVersionBefore(SLV_31)) {
|
||||
_load_check_data.current_date += DAYS_TILL_ORIGINAL_BASE_YEAR.AsDelta();
|
||||
_load_check_data.current_date += CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR.AsDelta();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -387,8 +387,8 @@ static bool FixTTOEngines()
|
||||
for (uint i = 0; i < lengthof(_orig_aircraft_vehicle_info); i++, j++) new (GetTempDataEngine(j)) Engine(VEH_AIRCRAFT, i);
|
||||
}
|
||||
|
||||
Date aging_date = std::min(_date + DAYS_TILL_ORIGINAL_BASE_YEAR.AsDelta(), ConvertYMDToDate(2050, 0, 1));
|
||||
YearMonthDay aging_ymd = ConvertDateToYMD(aging_date);
|
||||
CalTime::Date aging_date = std::min(CalTime::CurDate() + CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR.AsDelta(), CalTime::ConvertYMDToDate(2050, 0, 1));
|
||||
CalTime::YearMonthDay aging_ymd = CalTime::ConvertDateToYMD(aging_date);
|
||||
|
||||
for (EngineID i = 0; i < 256; i++) {
|
||||
int oi = ttd_to_tto[i];
|
||||
@@ -396,17 +396,19 @@ static bool FixTTOEngines()
|
||||
|
||||
if (oi == 255) {
|
||||
/* Default engine is used */
|
||||
_date += DAYS_TILL_ORIGINAL_BASE_YEAR.AsDelta();
|
||||
CalTime::State backup = CalTime::Detail::now;
|
||||
CalTime::Detail::now.cal_date += CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR.AsDelta();
|
||||
CalTime::Detail::now.cal_ymd = CalTime::ConvertDateToYMD(CalTime::Detail::now.cal_date);
|
||||
StartupOneEngine(e, aging_date, aging_ymd, 0, INT_MAX);
|
||||
CalcEngineReliability(e, false);
|
||||
e->intro_date -= DAYS_TILL_ORIGINAL_BASE_YEAR.AsDelta();
|
||||
_date -= DAYS_TILL_ORIGINAL_BASE_YEAR.AsDelta();
|
||||
e->intro_date -= CalTime::DAYS_TILL_ORIGINAL_BASE_YEAR.AsDelta();
|
||||
CalTime::Detail::now = backup;
|
||||
|
||||
/* Make sure for example monorail and maglev are available when they should be */
|
||||
if (_date >= e->intro_date && HasBit(e->info.climates, 0)) {
|
||||
if (CalTime::CurDate() >= e->intro_date && HasBit(e->info.climates, 0)) {
|
||||
e->flags |= ENGINE_AVAILABLE;
|
||||
e->company_avail = MAX_UVALUE(CompanyMask);
|
||||
e->age = _date > e->intro_date ? (_date - e->intro_date).base() / 30 : 0;
|
||||
e->age = CalTime::CurDate() > e->intro_date ? (CalTime::CurDate() - e->intro_date).base() / 30 : 0;
|
||||
}
|
||||
} else {
|
||||
/* Using data from TTO savegame */
|
||||
@@ -857,7 +859,7 @@ static bool LoadOldIndustry(LoadgameState *ls, int num)
|
||||
if (i->type > 0x06) i->type++; // Printing Works were added
|
||||
if (i->type == 0x0A) i->type = 0x12; // Iron Ore Mine has different ID
|
||||
|
||||
i->last_prod_year = _cur_date_ymd.year;
|
||||
i->last_prod_year = CalTime::CurYear().base();
|
||||
|
||||
i->random_colour = RemapTTOColour(i->random_colour);
|
||||
}
|
||||
@@ -1033,7 +1035,7 @@ static bool LoadOldCompany(LoadgameState *ls, int num)
|
||||
}
|
||||
|
||||
_company_colours[num] = c->colour;
|
||||
c->inaugurated_year -= ORIGINAL_BASE_YEAR;
|
||||
c->inaugurated_year -= CalTime::ORIGINAL_BASE_YEAR.AsDelta();
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1598,8 +1600,8 @@ extern uint8_t _old_units;
|
||||
static const OldChunks main_chunk[] = {
|
||||
OCL_ASSERT( OC_TTD, 0 ),
|
||||
OCL_ASSERT( OC_TTO, 0 ),
|
||||
OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &_date ),
|
||||
OCL_VAR ( OC_UINT16, 1, &_date_fract ),
|
||||
OCL_VAR ( OC_FILE_U16 | OC_VAR_U32, 1, &CalTime::Detail::now.cal_date ),
|
||||
OCL_VAR ( OC_UINT16, 1, &CalTime::Detail::now.cal_date_fract ),
|
||||
OCL_NULL( 600 ), ///< TextEffects
|
||||
OCL_VAR ( OC_UINT32, 2, &_random.state ),
|
||||
|
||||
|
@@ -4122,7 +4122,7 @@ std::string GenerateDefaultSaveName()
|
||||
case 2: SetDParam(1, STR_JUST_DATE_ISO); break;
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
SetDParam(2, _date);
|
||||
SetDParam(2, CalTime::CurDate());
|
||||
|
||||
/* Get the correct string (special string for when there's not company) */
|
||||
std::string filename = GetString(!Company::IsValidID(cid) ? STR_SAVEGAME_NAME_SPECTATOR : STR_SAVEGAME_NAME_DEFAULT);
|
||||
|
@@ -380,6 +380,9 @@ enum SaveLoadVersion : uint16_t {
|
||||
SLV_WATER_REGIONS, ///< 324 PR#10543 Water Regions for ship pathfinder.
|
||||
|
||||
SLV_WATER_REGION_EVAL_SIMPLIFIED, ///< 325 PR#11750 Simplified Water Region evaluation.
|
||||
SLV_ECONOMY_DATE, ///< 326 PR#10700 Split calendar and economy timers and dates.
|
||||
SLV_ECONOMY_MODE_TIMEKEEPING_UNITS, ///< 327 PR#11341 Mode to display economy measurements in wallclock units.
|
||||
SLV_CALENDAR_SUB_DATE_FRACT, ///< 328 PR#11428 Add sub_date_fract to measure calendar days.
|
||||
|
||||
SL_MAX_VERSION, ///< Highest possible saveload version
|
||||
|
||||
|
@@ -73,7 +73,7 @@ void MoveBuoysToWaypoints()
|
||||
Town *town = st->town;
|
||||
StringID string_id = st->string_id;
|
||||
TinyString name = std::move(st->name);
|
||||
Date build_date = st->build_date;
|
||||
CalTime::Date build_date = st->build_date;
|
||||
/* TTDPatch could use "buoys with rail station" for rail waypoints */
|
||||
bool train = st->train_station.tile != INVALID_TILE;
|
||||
TileArea train_st = st->train_station;
|
||||
|
@@ -31,7 +31,7 @@ struct OldWaypoint {
|
||||
StringID string_id;
|
||||
TinyString name;
|
||||
uint8_t delete_ctr;
|
||||
Date build_date;
|
||||
CalTime::Date build_date;
|
||||
uint8_t localidx;
|
||||
uint32_t grfid;
|
||||
const StationSpec *spec;
|
||||
|
Reference in New Issue
Block a user