Mercurial > hg > openttd
changeset 9570:932dc24e565c draft
(svn r13594) -Feature(ette)[FS#2093]: Supply newgrfs with 'day of month', 'leap year' and 'day of year'.
author | frosch <frosch@openttd.org> |
---|---|
date | Fri, 20 Jun 2008 21:14:10 +0000 |
parents | fcc94596ddfd |
children | 481237bb59f9 |
files | src/date.cpp src/date_func.h src/date_type.h src/newgrf.cpp |
diffstat | 4 files changed, 13 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/date.cpp +++ b/src/date.cpp @@ -77,11 +77,6 @@ ACCUM_SEP, ACCUM_OCT, ACCUM_NOV, ACCUM_DEC, }; -static inline bool IsLeapYear(Year yr) -{ - return yr % 4 == 0 && (yr % 100 != 0 || yr % 400 == 0); -} - /** * Converts a Date to a Year, Month & Day. * @param date the date to convert from
--- a/src/date_func.h +++ b/src/date_func.h @@ -16,4 +16,9 @@ void ConvertDateToYMD(Date date, YearMonthDay *ymd); Date ConvertYMDToDate(Year year, Month month, Day day); +static inline bool IsLeapYear(Year yr) +{ + return yr % 4 == 0 && (yr % 100 != 0 || yr % 400 == 0); +} + #endif /* DATE_FUNC_H */
--- a/src/date_type.h +++ b/src/date_type.h @@ -46,8 +46,8 @@ struct YearMonthDay { Year year; - Month month; - Day day; + Month month; ///< 0 - 11 + Day day; ///< 1 - 31 }; static const Year INVALID_YEAR = -1;
--- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -3566,9 +3566,13 @@ *value = Clamp(_cur_year, ORIGINAL_BASE_YEAR, ORIGINAL_MAX_YEAR) - ORIGINAL_BASE_YEAR; return true; - case 0x02: // current month - *value = _cur_month; + case 0x02: { // detailed date information: month of year (bit 0-7), day of month (bit 8-12), leap year (bit 15), day of year (bit 16-24) + YearMonthDay ymd; + ConvertDateToYMD(_date, &ymd); + Date start_of_year = ConvertYMDToDate(ymd.year, 0, 1); + *value = ymd.month | (ymd.day - 1) << 8 | (IsLeapYear(ymd.year) ? 1 << 15 : 0) | (_date - start_of_year) << 16; return true; + } case 0x03: // current climate, 0=temp, 1=arctic, 2=trop, 3=toyland *value = _settings_game.game_creation.landscape;