mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-01-31 11:23:21 +00:00
Fix: Update last servicing dates when using the date cheat (#9694)
This commit is contained in:
parent
521287839b
commit
a4428a0cbe
@ -14,6 +14,7 @@
|
|||||||
#include "company_func.h"
|
#include "company_func.h"
|
||||||
#include "date_func.h"
|
#include "date_func.h"
|
||||||
#include "saveload/saveload.h"
|
#include "saveload/saveload.h"
|
||||||
|
#include "vehicle_base.h"
|
||||||
#include "textbuf_gui.h"
|
#include "textbuf_gui.h"
|
||||||
#include "window_gui.h"
|
#include "window_gui.h"
|
||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
@ -106,6 +107,7 @@ static int32 ClickChangeDateCheat(int32 p1, int32 p2)
|
|||||||
if (p1 == _cur_year) return _cur_year;
|
if (p1 == _cur_year) return _cur_year;
|
||||||
|
|
||||||
Date new_date = ConvertYMDToDate(p1, ymd.month, ymd.day);
|
Date new_date = ConvertYMDToDate(p1, ymd.month, ymd.day);
|
||||||
|
for (auto v : Vehicle::Iterate()) v->ShiftDates(new_date - _date);
|
||||||
LinkGraphSchedule::instance.ShiftDates(new_date - _date);
|
LinkGraphSchedule::instance.ShiftDates(new_date - _date);
|
||||||
SetDate(new_date, _date_fract);
|
SetDate(new_date, _date_fract);
|
||||||
EnginesMonthlyLoop();
|
EnginesMonthlyLoop();
|
||||||
|
@ -211,7 +211,7 @@ static void OnNewYear()
|
|||||||
_cur_year--;
|
_cur_year--;
|
||||||
days_this_year = IsLeapYear(_cur_year) ? DAYS_IN_LEAP_YEAR : DAYS_IN_YEAR;
|
days_this_year = IsLeapYear(_cur_year) ? DAYS_IN_LEAP_YEAR : DAYS_IN_YEAR;
|
||||||
_date -= days_this_year;
|
_date -= days_this_year;
|
||||||
for (Vehicle *v : Vehicle::Iterate()) v->date_of_last_service -= days_this_year;
|
for (Vehicle *v : Vehicle::Iterate()) v->ShiftDates(-days_this_year);
|
||||||
for (LinkGraph *lg : LinkGraph::Iterate()) lg->ShiftDates(-days_this_year);
|
for (LinkGraph *lg : LinkGraph::Iterate()) lg->ShiftDates(-days_this_year);
|
||||||
|
|
||||||
/* Because the _date wraps here, and text-messages expire by game-days, we have to clean out
|
/* Because the _date wraps here, and text-messages expire by game-days, we have to clean out
|
||||||
|
@ -763,6 +763,16 @@ uint32 Vehicle::GetGRFID() const
|
|||||||
return this->GetEngine()->GetGRFID();
|
return this->GetEngine()->GetGRFID();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Shift all dates by given interval.
|
||||||
|
* This is useful if the date has been modified with the cheat menu.
|
||||||
|
* @param interval Number of days to be added or substracted.
|
||||||
|
*/
|
||||||
|
void Vehicle::ShiftDates(int interval)
|
||||||
|
{
|
||||||
|
this->date_of_last_service += interval;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle the pathfinding result, especially the lost status.
|
* Handle the pathfinding result, especially the lost status.
|
||||||
* If the vehicle is now lost and wasn't previously fire an
|
* If the vehicle is now lost and wasn't previously fire an
|
||||||
|
@ -545,6 +545,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual void OnNewDay() {};
|
virtual void OnNewDay() {};
|
||||||
|
|
||||||
|
void ShiftDates(int interval);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crash the (whole) vehicle chain.
|
* Crash the (whole) vehicle chain.
|
||||||
* @param flooded whether the cause of the crash is flooding or not.
|
* @param flooded whether the cause of the crash is flooding or not.
|
||||||
|
Loading…
Reference in New Issue
Block a user