mirror of https://github.com/OpenTTD/OpenTTD.git
Codechange: introduce week/quarter triggers for TimerGameCalendar (#11189)
This simplifies code that triggers on these periods.
This commit is contained in:
parent
02be6ab6ba
commit
01f55eb734
|
@ -1822,6 +1822,15 @@ static IntervalTimer<TimerGameCalendar> _network_yearly({TimerGameCalendar::YEAR
|
|||
NetworkAdminUpdate(ADMIN_FREQUENCY_ANUALLY);
|
||||
});
|
||||
|
||||
/** Quarterly "callback". Called whenever the quarter changes. */
|
||||
static IntervalTimer<TimerGameCalendar> _network_quarterly({TimerGameCalendar::QUARTER, TimerGameCalendar::Priority::NONE}, [](auto)
|
||||
{
|
||||
if (!_network_server) return;
|
||||
|
||||
NetworkAutoCleanCompanies();
|
||||
NetworkAdminUpdate(ADMIN_FREQUENCY_QUARTERLY);
|
||||
});
|
||||
|
||||
/** Monthly "callback". Called whenever the month changes. */
|
||||
static IntervalTimer<TimerGameCalendar> _network_monthly({TimerGameCalendar::MONTH, TimerGameCalendar::Priority::NONE}, [](auto)
|
||||
{
|
||||
|
@ -1829,7 +1838,14 @@ static IntervalTimer<TimerGameCalendar> _network_monthly({TimerGameCalendar::MON
|
|||
|
||||
NetworkAutoCleanCompanies();
|
||||
NetworkAdminUpdate(ADMIN_FREQUENCY_MONTHLY);
|
||||
if ((TimerGameCalendar::month % 3) == 0) NetworkAdminUpdate(ADMIN_FREQUENCY_QUARTERLY);
|
||||
});
|
||||
|
||||
/** Weekly "callback". Called whenever the week changes. */
|
||||
static IntervalTimer<TimerGameCalendar> _network_weekly({TimerGameCalendar::WEEK, TimerGameCalendar::Priority::NONE}, [](auto)
|
||||
{
|
||||
if (!_network_server) return;
|
||||
|
||||
NetworkAdminUpdate(ADMIN_FREQUENCY_WEEKLY);
|
||||
});
|
||||
|
||||
/** Daily "callback". Called whenever the date changes. */
|
||||
|
@ -1838,7 +1854,6 @@ static IntervalTimer<TimerGameCalendar> _network_daily({TimerGameCalendar::DAY,
|
|||
if (!_network_server) return;
|
||||
|
||||
NetworkAdminUpdate(ADMIN_FREQUENCY_DAILY);
|
||||
if ((TimerGameCalendar::date % 7) == 3) NetworkAdminUpdate(ADMIN_FREQUENCY_WEEKLY);
|
||||
});
|
||||
|
||||
/**
|
||||
|
|
|
@ -215,10 +215,22 @@ void TimerManager<TimerGameCalendar>::Elapsed(TimerGameCalendar::TElapsed delta)
|
|||
timer->Elapsed(TimerGameCalendar::DAY);
|
||||
}
|
||||
|
||||
if ((TimerGameCalendar::date % 7) == 3) {
|
||||
for (auto timer : timers) {
|
||||
timer->Elapsed(TimerGameCalendar::WEEK);
|
||||
}
|
||||
}
|
||||
|
||||
if (new_month) {
|
||||
for (auto timer : timers) {
|
||||
timer->Elapsed(TimerGameCalendar::MONTH);
|
||||
}
|
||||
|
||||
if ((TimerGameCalendar::month % 3) == 0) {
|
||||
for (auto timer : timers) {
|
||||
timer->Elapsed(TimerGameCalendar::QUARTER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (new_year) {
|
||||
|
|
|
@ -34,7 +34,9 @@ class TimerGameCalendar {
|
|||
public:
|
||||
enum Trigger {
|
||||
DAY,
|
||||
WEEK,
|
||||
MONTH,
|
||||
QUARTER,
|
||||
YEAR,
|
||||
};
|
||||
enum Priority {
|
||||
|
|
Loading…
Reference in New Issue