date_type.h File Reference

Types related to the dates in OpenTTD. More...

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...

Defines

#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.
#define DAYS_TILL(year)   (DAYS_IN_YEAR * (year) + LEAP_YEARS_TILL(year))
 Calculate the date of the first day of a given year.
#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.
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 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 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.


Define Documentation

#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 67 of file date_type.h.

Referenced by ConvertYMDToDate().

#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 60 of file date_type.h.


Variable Documentation

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 30 of file date_type.h.

Referenced by CcStartStopVehicle(), TimetableWindow::DrawWidget(), HandleBankruptcyTakeover(), IncreaseDate(), TimetableWindow::OnClick(), Train::OnNewDay(), Ship::OnNewDay(), RoadVehicle::OnNewDay(), Aircraft::OnNewDay(), TimetableWindow::OnQueryTextFinished(), BuildIndustryWindow::OnTick(), GUIList< const Industry * >::ResetResortTimer(), RunVehicleDayProc(), SetArrivalDepartParams(), SetDate(), and SetTimetableParams().


Generated on Thu Jan 20 22:57:45 2011 for OpenTTD by  doxygen 1.6.1