OpenTTD
date_type.h
Go to the documentation of this file.
1 /* $Id: date_type.h 25260 2013-05-19 14:26:14Z rubidium $ */
2 
3 /*
4  * This file is part of OpenTTD.
5  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
6  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
7  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8  */
9 
12 #ifndef DATE_TYPE_H
13 #define DATE_TYPE_H
14 
15 
16 typedef int32 Date;
17 typedef uint16 DateFract;
18 typedef int32 Ticks;
19 
20 typedef int32 Year;
21 typedef uint8 Month;
22 typedef uint8 Day;
23 
30 static const int DAY_TICKS = 74;
31 static const int DAYS_IN_YEAR = 365;
32 static const int DAYS_IN_LEAP_YEAR = 366;
33 
34 static const int STATION_RATING_TICKS = 185;
35 static const int STATION_ACCEPTANCE_TICKS = 250;
36 static const int STATION_LINKGRAPH_TICKS = 504;
37 static const int CARGO_AGING_TICKS = 185;
38 static const int INDUSTRY_PRODUCE_TICKS = 256;
39 static const int TOWN_GROWTH_TICKS = 70;
41 
42 
43 /*
44  * ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR and DAYS_TILL_ORIGINAL_BASE_YEAR are
45  * primarily used for loading newgrf and savegame data and returning some
46  * newgrf (callback) functions that were in the original (TTD) inherited
47  * format, where '_date == 0' meant that it was 1920-01-01.
48  */
49 
51 static const Year ORIGINAL_BASE_YEAR = 1920;
53 static const Year ORIGINAL_END_YEAR = 2051;
55 static const Year ORIGINAL_MAX_YEAR = 2090;
56 
69 #define LEAP_YEARS_TILL(year) ((year) == 0 ? 0 : ((year) - 1) / 4 - ((year) - 1) / 100 + ((year) - 1) / 400 + 1)
70 
76 #define DAYS_TILL(year) (DAYS_IN_YEAR * (year) + LEAP_YEARS_TILL(year))
77 
82 #define DAYS_TILL_ORIGINAL_BASE_YEAR DAYS_TILL(ORIGINAL_BASE_YEAR)
83 
85 static const Year MIN_YEAR = 0;
86 
88 static const Year DEF_START_YEAR = 1950;
89 
94 static const Year MAX_YEAR = 5000000;
95 
97 #define MAX_DAY (DAYS_TILL(MAX_YEAR + 1) - 1)
98 
103 struct YearMonthDay {
107 };
108 
109 static const Year INVALID_YEAR = -1;
110 static const Date INVALID_DATE = -1;
111 static const Ticks INVALID_TICKS = -1;
112 
113 #endif /* DATE_TYPE_H */