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