src/date_type.h
author peter1138
Tue, 22 Jan 2008 07:27:06 +0000
changeset 8374 7a1b6c89cb89
parent 8140 0d0d8c94f84b
child 9570 8b9c1cbb0077
permissions -rw-r--r--
(svn r11940) -Codechange: Store short filename once per open file instead of once per sprite cache entry. Not all file types need this, but most of the time no sprite cache entry needed it either.
8140
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
     1
/* $Id$ */
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
     2
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
     3
/** @file date_type.h Types related to the dates in OpenTTD. */
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
     4
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
     5
#ifndef DATE_TYPE_H
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
     6
#define DATE_TYPE_H
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
     7
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
     8
/**
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
     9
 * 1 day is 74 ticks; _date_fract used to be uint16 and incremented by 885. On
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    10
 *                    an overflow the new day begun and 65535 / 885 = 74.
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    11
 * 1 tick is approximately 30 ms.
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    12
 * 1 day is thus about 2 seconds (74 * 30 = 2220) on a machine that can run OpenTTD normally
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    13
 */
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    14
#define DAY_TICKS 74
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    15
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    16
/*
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    17
 * ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR and DAYS_TILL_ORIGINAL_BASE_YEAR are
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    18
 * primarily used for loading newgrf and savegame data and returning some
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    19
 * newgrf (callback) functions that were in the original (TTD) inherited
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    20
 * format, where '_date == 0' meant that it was 1920-01-01.
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    21
 */
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    22
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    23
/** The minimum starting year/base year of the original TTD */
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    24
#define ORIGINAL_BASE_YEAR 1920
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    25
/** The maximum year of the original TTD */
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    26
#define ORIGINAL_MAX_YEAR 2090
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    27
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    28
/**
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    29
 * The offset in days from the '_date == 0' till
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    30
 * 'ConvertYMDToDate(ORIGINAL_BASE_YEAR, 0, 1)'
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    31
 */
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
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)
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    33
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    34
/* The absolute minimum & maximum years in OTTD */
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    35
#define MIN_YEAR 0
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    36
/* MAX_YEAR, nicely rounded value of the number of years that can
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    37
 * be encoded in a single 32 bits date, about 2^31 / 366 years. */
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    38
#define MAX_YEAR 5000000
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    39
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    40
typedef int32  Date;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    41
typedef uint16 DateFract;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    42
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    43
typedef int32  Year;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    44
typedef uint8  Month;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    45
typedef uint8  Day;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    46
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    47
struct YearMonthDay {
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    48
	Year  year;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    49
	Month month;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    50
	Day   day;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    51
};
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    52
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    53
static const Year INVALID_YEAR = -1;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    54
static const Date INVALID_DATE = -1;
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    55
0d0d8c94f84b (svn r11702) -Codechange: move all date related stuff to date*.
rubidium
parents:
diff changeset
    56
#endif /* DATE_TYPE_H */