Codechange: introduce week/quarter triggers for TimerGameCalendar (#11189)

This simplifies code that triggers on these periods.
This commit is contained in:
Patric Stout 2023-08-12 16:02:11 +02:00 committed by GitHub
parent 02be6ab6ba
commit 01f55eb734
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 2 deletions

View File

@ -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);
});
/**

View File

@ -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) {

View File

@ -34,7 +34,9 @@ class TimerGameCalendar {
public:
enum Trigger {
DAY,
WEEK,
MONTH,
QUARTER,
YEAR,
};
enum Priority {