| author | egladil | 
| Sat, 29 Dec 2007 05:15:13 +0000 | |
| changeset 8652 | e06732646b8a | 
| parent 8636 | 2b158acb649c | 
| child 11038 | d253e0dfa688 | 
| permissions | -rw-r--r-- | 
| 
4261
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
1  | 
/* $Id$ */  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
2  | 
|
| 
8636
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
3  | 
/** @file date_type.h Types related to the dates in OpenTTD. */  | 
| 
6451
 
7baba06b4b85
(svn r8862) -Cleanup: doxygen changes, again. Mostly @files missing tags and a few comments style.
 
belugas 
parents: 
5726 
diff
changeset
 | 
4  | 
|
| 
8636
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
5  | 
#ifndef DATE_TYPE_H  | 
| 
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
6  | 
#define DATE_TYPE_H  | 
| 
5720
 
cc0ceeafaa55
(svn r7751) -Codechange: move network_* to a new network map. Furthermore move the low level network functions to network/core, so they can be reused by the masterserver and website-serverlist-updater.
 
rubidium 
parents: 
4666 
diff
changeset
 | 
7  | 
|
| 
4261
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
8  | 
/**  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
9  | 
* 1 day is 74 ticks; _date_fract used to be uint16 and incremented by 885. On  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
10  | 
* an overflow the new day begun and 65535 / 885 = 74.  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
11  | 
* 1 tick is approximately 30 ms.  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
12  | 
* 1 day is thus about 2 seconds (74 * 30 = 2220) on a machine that can run OpenTTD normally  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
13  | 
*/  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
14  | 
#define DAY_TICKS 74  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
15  | 
|
| 
4322
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
16  | 
/*  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
17  | 
* ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR and DAYS_TILL_ORIGINAL_BASE_YEAR are  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
18  | 
* primarily used for loading newgrf and savegame data and returning some  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
19  | 
* newgrf (callback) functions that were in the original (TTD) inherited  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
20  | 
* format, where '_date == 0' meant that it was 1920-01-01.  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
21  | 
*/  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
22  | 
|
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
23  | 
/** The minimum starting year/base year of the original TTD */  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
24  | 
#define ORIGINAL_BASE_YEAR 1920  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
25  | 
/** The maximum year of the original TTD */  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
26  | 
#define ORIGINAL_MAX_YEAR 2090  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
27  | 
|
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
28  | 
/**  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
29  | 
* The offset in days from the '_date == 0' till  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
30  | 
* 'ConvertYMDToDate(ORIGINAL_BASE_YEAR, 0, 1)'  | 
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
31  | 
*/  | 
| 
4326
 
c2ae4dbc1074
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
 
rubidium 
parents: 
4322 
diff
changeset
 | 
32  | 
#define DAYS_TILL_ORIGINAL_BASE_YEAR (365 * ORIGINAL_BASE_YEAR + ORIGINAL_BASE_YEAR / 4 - ORIGINAL_BASE_YEAR / 100 + ORIGINAL_BASE_YEAR / 400)  | 
| 
4322
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
33  | 
|
| 
 
0bee6d9bc452
(svn r5975) -Cleanup: use ORIGINAL_BASE_YEAR & ORIGINAL_MAX_YEAR where the functions really depend on the original date format.
 
rubidium 
parents: 
4295 
diff
changeset
 | 
34  | 
/* The absolute minimum & maximum years in OTTD */  | 
| 
4326
 
c2ae4dbc1074
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
 
rubidium 
parents: 
4322 
diff
changeset
 | 
35  | 
#define MIN_YEAR 0  | 
| 
 
c2ae4dbc1074
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
 
rubidium 
parents: 
4322 
diff
changeset
 | 
36  | 
/* MAX_YEAR, nicely rounded value of the number of years that can  | 
| 
 
c2ae4dbc1074
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
 
rubidium 
parents: 
4322 
diff
changeset
 | 
37  | 
* be encoded in a single 32 bits date, about 2^31 / 366 years. */  | 
| 
 
c2ae4dbc1074
(svn r5999) -Feature: change the original date format to a 32 bits format based at the year 0.
 
rubidium 
parents: 
4322 
diff
changeset
 | 
38  | 
#define MAX_YEAR 5000000  | 
| 
4261
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
39  | 
|
| 
8636
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
40  | 
typedef int32 Date;  | 
| 
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
41  | 
typedef uint16 DateFract;  | 
| 
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
42  | 
|
| 
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
43  | 
typedef int32 Year;  | 
| 
4261
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
44  | 
typedef uint8 Month;  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
45  | 
typedef uint8 Day;  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
46  | 
|
| 
6574
 
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
 
rubidium 
parents: 
6451 
diff
changeset
 | 
47  | 
struct YearMonthDay {
 | 
| 
4261
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
48  | 
Year year;  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
49  | 
Month month;  | 
| 
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
50  | 
Day day;  | 
| 
6574
 
e1d1a12faaf7
(svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
 
rubidium 
parents: 
6451 
diff
changeset
 | 
51  | 
};  | 
| 
4261
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
52  | 
|
| 
8636
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
53  | 
static const Year INVALID_YEAR = -1;  | 
| 
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
54  | 
static const Date INVALID_DATE = -1;  | 
| 
4261
 
2ec8f5a9747b
(svn r5887) -Cleanup: move date related functions, defines and variables to date.[ch]
 
rubidium 
parents:  
diff
changeset
 | 
55  | 
|
| 
8636
 
2b158acb649c
(svn r11702) -Codechange: move all date related stuff to date*.
 
rubidium 
parents: 
6574 
diff
changeset
 | 
56  | 
#endif /* DATE_TYPE_H */  |