OpenTTD Source: src/date_type.h File Reference

OpenTTD Source 12.0-beta1

Data Structures | Macros | Typedefs | Variables
date_type.h File Reference

Go to the source code of this file.

## Data Structures
struct | YearMonthDay
| Data structure to convert between Date and triplet (year, month, and day). More...

## Macros
#define | LEAP_YEARS_TILL(year) ((year) == 0 ? 0 : ((year) - 1) / 4 - ((year) - 1) / 100 + ((year) - 1) / 400 + 1)
| Calculate the number of leap years till a given year. More...
#define | DAYS_TILL(year) (DAYS_IN_YEAR * (year) + LEAP_YEARS_TILL(year))
| Calculate the date of the first day of a given year. More...
#define | DAYS_TILL_ORIGINAL_BASE_YEAR DAYS_TILL(ORIGINAL_BASE_YEAR)
| The offset in days from the '_date == 0' till 'ConvertYMDToDate(ORIGINAL_BASE_YEAR, 0, 1)'.
#define | MAX_DAY (DAYS_TILL(MAX_YEAR + 1) - 1)
| The number of days till the last day.

## Typedefs
typedef int32 | Date
| The type to store our dates in.
typedef uint16 | DateFract
| The fraction of a date we're in, i.e. the number of ticks since the last date changeover.
typedef int32 | Ticks
| The type to store ticks in.
typedef int32 | Year
| Type for the year, note: 0 based, i.e. starts at the year 0.
typedef uint8 | Month
| Type for the month, note: 0 based, i.e. 0 = January, 11 = December.
typedef uint8 | Day
| Type for the day of the month, note: 1 based, first day of a month is 1.

## Variables
static const int | DAY_TICKS = 74
| 1 day is 74 ticks; _date_fract used to be uint16 and incremented by 885. More...
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 | STATION_RATING_TICKS = 185
| cycle duration for updating station rating
static const int | STATION_ACCEPTANCE_TICKS = 250
| cycle duration for updating station acceptance
static const int | STATION_LINKGRAPH_TICKS = 504
| cycle duration for cleaning dead links
static const int | CARGO_AGING_TICKS = 185
| cycle duration for aging cargo
static const int | INDUSTRY_PRODUCE_TICKS = 256
| cycle duration for industry production
static const int | TOWN_GROWTH_TICKS = 70
| cycle duration for towns trying to grow. (this originates from the size of the town array in TTD
static const int | INDUSTRY_CUT_TREE_TICKS = INDUSTRY_PRODUCE_TICKS * 2
| cycle duration for lumber mill's extra action
static const Year | ORIGINAL_BASE_YEAR = 1920
| The minimum starting year/base year of the original TTD.
static const Year | ORIGINAL_END_YEAR = 2051
| The original ending year.
static const Year | ORIGINAL_MAX_YEAR = 2090
| The maximum year of the original TTD.
static const Year | MIN_YEAR = 0
| The absolute minimum & maximum years in OTTD.
static const Year | DEF_START_YEAR = 1950
| The default starting year.
static const Year | DEF_END_YEAR = ORIGINAL_END_YEAR - 1
| The default scoring end year.
static const Year | MAX_YEAR = 5000000
| 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 const Year | INVALID_YEAR = -1
| Representation of an invalid year.
static const Date | INVALID_DATE = -1
| Representation of an invalid date.
static const Ticks | INVALID_TICKS = -1
| Representation of an invalid number of ticks.

## Detailed Description

Types related to the dates in OpenTTD.

Definition in file date_type.h.

## Macro Definition Documentation

## ◆ DAYS_TILL

#define DAYS_TILL | ( |  | year | ) | (DAYS_IN_YEAR * (year) + LEAP_YEARS_TILL(year))

Calculate the date of the first day of a given year.

Parameters

  year | the year to get the first day of.

Returns
  the date.

Definition at line 75 of file date_type.h.

## ◆ LEAP_YEARS_TILL

#define LEAP_YEARS_TILL | ( |  | year | ) | ((year) == 0 ? 0 : ((year) - 1) / 4 - ((year) - 1) / 100 + ((year) - 1) / 400 + 1)

Calculate the number of leap years till a given year.

Each passed leap year adds one day to the 'day count'.

A special case for the year 0 as no year has been passed, but '(year - 1) / 4' does not yield '-1' to counteract the '+1' at the end of the formula as divisions round to zero.

Parameters

  year | the year to get the leap years till.

Returns
  the number of leap years.

Definition at line 68 of file date_type.h.

## Variable Documentation

## ◆ DAY_TICKS

const int DAY_TICKS = 74
| static

1 day is 74 ticks; _date_fract used to be uint16 and incremented by 885.

On an overflow the new day begun and 65535 / 885 = 74. 1 tick is approximately 30 ms. 1 day is thus about 2 seconds (74 * 30 = 2220) on a machine that can run OpenTTD normally ticks per day

Definition at line 28 of file date_type.h.

Referenced by HandleBankruptcyTakeover(), TimetableWindow::OnQueryTextFinished(), ClientNetworkGameSocketHandler::Receive_SERVER_FRAME(), GUIList< const Sign *, StringFilter & >::ResetResortTimer(), SetDate(), and SetTimetableParams().