60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* $Id$ */
 | 
						|
 | 
						|
#ifndef DATE_H
 | 
						|
#define DATE_H
 | 
						|
 | 
						|
/**
 | 
						|
 * 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
 | 
						|
 */
 | 
						|
#define DAY_TICKS 74
 | 
						|
 | 
						|
/*
 | 
						|
 * ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR and DAYS_TILL_ORIGINAL_BASE_YEAR are
 | 
						|
 * primarily used for loading newgrf and savegame data and returning some
 | 
						|
 * newgrf (callback) functions that were in the original (TTD) inherited
 | 
						|
 * format, where '_date == 0' meant that it was 1920-01-01.
 | 
						|
 */
 | 
						|
 | 
						|
/** The minimum starting year/base year of the original TTD */
 | 
						|
#define ORIGINAL_BASE_YEAR 1920
 | 
						|
/** The maximum year of the original TTD */
 | 
						|
#define ORIGINAL_MAX_YEAR 2090
 | 
						|
 | 
						|
/**
 | 
						|
 * The offset in days from the '_date == 0' till
 | 
						|
 * 'ConvertYMDToDate(ORIGINAL_BASE_YEAR, 0, 1)'
 | 
						|
 */
 | 
						|
#define DAYS_TILL_ORIGINAL_BASE_YEAR (365 * ORIGINAL_BASE_YEAR + ORIGINAL_BASE_YEAR / 4 - ORIGINAL_BASE_YEAR / 100 + ORIGINAL_BASE_YEAR / 400)
 | 
						|
 | 
						|
/* The absolute minimum & maximum years in OTTD */
 | 
						|
#define MIN_YEAR 0
 | 
						|
/* 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. */
 | 
						|
#define MAX_YEAR 5000000
 | 
						|
 | 
						|
/* Year and Date are defined elsewhere */
 | 
						|
typedef uint8  Month;
 | 
						|
typedef uint8  Day;
 | 
						|
typedef uint16 DateFract;
 | 
						|
 | 
						|
typedef struct YearMonthDay {
 | 
						|
	Year  year;
 | 
						|
	Month month;
 | 
						|
	Day   day;
 | 
						|
} YearMonthDay;
 | 
						|
 | 
						|
extern Year      _cur_year;
 | 
						|
extern Month     _cur_month;
 | 
						|
extern Date      _date;
 | 
						|
extern DateFract _date_fract;
 | 
						|
 | 
						|
 | 
						|
void SetDate(Date date);
 | 
						|
void ConvertDateToYMD(Date date, YearMonthDay *ymd);
 | 
						|
Date ConvertYMDToDate(Year year, Month month, Day day);
 | 
						|
 | 
						|
#endif /* DATE_H */
 |