Codechange: Move date consts and functions to CalendarTime and TimerGameCalendar classes
This commit is contained in:
@@ -12,72 +12,5 @@
|
||||
|
||||
#include "timer/timer_game_calendar.h"
|
||||
|
||||
static const int DAYS_IN_YEAR = 365; ///< days per year
|
||||
static const int DAYS_IN_LEAP_YEAR = 366; ///< sometimes, you need one day more...
|
||||
static const int MONTHS_IN_YEAR = 12; ///< months per year
|
||||
|
||||
static const int SECONDS_PER_DAY = 2; ///< approximate seconds per day, not for precise calculations
|
||||
|
||||
/*
|
||||
* ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR and DAYS_TILL_ORIGINAL_BASE_YEAR are
|
||||
* primarily used for loading newgrf and savegame data and returning some
|
||||
* newgrf (callback) functions that were in the original (TTD) inherited
|
||||
* format, where 'TimerGameCalendar::date == 0' meant that it was 1920-01-01.
|
||||
*/
|
||||
|
||||
/** The minimum starting year/base year of the original TTD */
|
||||
static constexpr TimerGameCalendar::Year ORIGINAL_BASE_YEAR = 1920;
|
||||
/** The original ending year */
|
||||
static constexpr TimerGameCalendar::Year ORIGINAL_END_YEAR = 2051;
|
||||
/** The maximum year of the original TTD */
|
||||
static constexpr TimerGameCalendar::Year ORIGINAL_MAX_YEAR = 2090;
|
||||
|
||||
/**
|
||||
* Calculate the date of the first day of a given year.
|
||||
* @param year the year to get the first day of.
|
||||
* @return the date.
|
||||
*/
|
||||
static constexpr TimerGameCalendar::Date DateAtStartOfYear(TimerGameCalendar::Year year)
|
||||
{
|
||||
int32_t year_as_int = static_cast<int32_t>(year);
|
||||
uint number_of_leap_years = (year == 0) ? 0 : ((year_as_int - 1) / 4 - (year_as_int - 1) / 100 + (year_as_int - 1) / 400 + 1);
|
||||
|
||||
return (DAYS_IN_YEAR * year_as_int) + number_of_leap_years;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate the year of a given date.
|
||||
* @param date The date to consider.
|
||||
* @return the year.
|
||||
*/
|
||||
static inline TimerGameCalendar::Year DateToYear(TimerGameCalendar::Date date)
|
||||
{
|
||||
return static_cast<int32_t>(date) / DAYS_IN_LEAP_YEAR;
|
||||
}
|
||||
|
||||
/**
|
||||
* The date of the first day of the original base year.
|
||||
*/
|
||||
static constexpr TimerGameCalendar::Date DAYS_TILL_ORIGINAL_BASE_YEAR = DateAtStartOfYear(ORIGINAL_BASE_YEAR);
|
||||
|
||||
/** The absolute minimum & maximum years in OTTD */
|
||||
static constexpr TimerGameCalendar::Year MIN_YEAR = 0;
|
||||
|
||||
/** The default starting year */
|
||||
static constexpr TimerGameCalendar::Year DEF_START_YEAR = 1950;
|
||||
/** The default scoring end year */
|
||||
static constexpr TimerGameCalendar::Year DEF_END_YEAR = ORIGINAL_END_YEAR - 1;
|
||||
|
||||
/**
|
||||
* MAX_YEAR, nicely rounded value of the number of years that can
|
||||
* be encoded in a single 32 bits date, about 2^31 / 366 years.
|
||||
*/
|
||||
static constexpr TimerGameCalendar::Year MAX_YEAR = 5000000;
|
||||
|
||||
/** The date of the last day of the max year. */
|
||||
static constexpr TimerGameCalendar::Date MAX_DATE = DateAtStartOfYear(MAX_YEAR + 1) - 1;
|
||||
|
||||
static constexpr TimerGameCalendar::Year INVALID_YEAR = -1; ///< Representation of an invalid year
|
||||
static constexpr TimerGameCalendar::Date INVALID_DATE = -1; ///< Representation of an invalid date
|
||||
|
||||
#endif /* DATE_TYPE_H */
|
||||
|
||||
Reference in New Issue
Block a user