OpenTTD
Macros | Enumerations | Functions | Variables
date.cpp File Reference

Handling of dates in our native format and transforming them to something human readable. More...

#include "stdafx.h"
#include "network/network.h"
#include "network/network_func.h"
#include "currency.h"
#include "window_func.h"
#include "settings_type.h"
#include "date_func.h"
#include "vehicle_base.h"
#include "rail_gui.h"
#include "linkgraph/linkgraph.h"
#include "saveload/saveload.h"
#include "safeguards.h"

Go to the source code of this file.

Macros

#define M(a, b)   ((a << 5) | b)
 

Enumerations

enum  DaysTillMonth {
  ACCUM_JAN = 0, ACCUM_FEB = ACCUM_JAN + 31, ACCUM_MAR = ACCUM_FEB + 29, ACCUM_APR = ACCUM_MAR + 31,
  ACCUM_MAY = ACCUM_APR + 30, ACCUM_JUN = ACCUM_MAY + 31, ACCUM_JUL = ACCUM_JUN + 30, ACCUM_AUG = ACCUM_JUL + 31,
  ACCUM_SEP = ACCUM_AUG + 31, ACCUM_OCT = ACCUM_SEP + 30, ACCUM_NOV = ACCUM_OCT + 31, ACCUM_DEC = ACCUM_NOV + 30
}
 

Functions

void SetDate (Date date, DateFract fract)
 Set the date. More...
 
void ConvertDateToYMD (Date date, YearMonthDay *ymd)
 Converts a Date to a Year, Month & Day. More...
 
Date ConvertYMDToDate (Year year, Month month, Day day)
 Converts a tuple of Year, Month and Day to a Date. More...
 
void EnginesDailyLoop ()
 Functions used by the IncreaseDate function. More...
 
void DisasterDailyLoop ()
 
void IndustryDailyLoop ()
 Daily handler for the industry changes Taking the original map size of 256*256, the number of random changes was always of just one unit. More...
 
void CompaniesMonthlyLoop ()
 Monthly update of the economic data (of the companies as well as economic fluctuations).
 
void EnginesMonthlyLoop ()
 Monthly update of the availability, reliability, and preview offers of the engines. More...
 
void TownsMonthlyLoop ()
 
void IndustryMonthlyLoop ()
 
void StationMonthlyLoop ()
 Monthly loop for stations. More...
 
void SubsidyMonthlyLoop ()
 Perform the monthly update of open subsidies, and try to create a new one. More...
 
void CompaniesYearlyLoop ()
 A year has passed, update the economic data of all companies, and perhaps show the financial overview window of the local company.
 
void VehiclesYearlyLoop ()
 
void TownsYearlyLoop ()
 
void ShowEndGameChart ()
 Show the endgame victory screen in 2050. More...
 
static void OnNewYear ()
 Runs various procedures that have to be done yearly.
 
static void OnNewMonth ()
 Runs various procedures that have to be done monthly.
 
static void OnNewDay ()
 Runs various procedures that have to be done daily.
 
void IncreaseDate ()
 Increases the tick counter, increases date and possibly calls procedures that have to be called daily, monthly or yearly.
 

Variables

Year _cur_year
 Current year, starting at 0.
 
Month _cur_month
 Current month (0..11)
 
Date _date
 Current date in days (day counter)
 
DateFract _date_fract
 Fractional part of the day.
 
uint16 _tick_counter
 Ever incrementing (and sometimes wrapping) tick counter for setting off various events.
 
static const uint16 _month_date_from_year_day []
 
static const uint16 _accum_days_for_month []
 Number of days to pass from the first day in the year before reaching the first of a month. More...
 
static const Month _autosave_months []
 Available settings for autosave intervals. More...
 

Detailed Description

Handling of dates in our native format and transforming them to something human readable.

Definition in file date.cpp.

Function Documentation

◆ ConvertDateToYMD()

void ConvertDateToYMD ( Date  date,
YearMonthDay ymd 
)

Converts a Date to a Year, Month & Day.

Parameters
datethe date to convert from
ymdthe year, month and day to write to

Definition at line 94 of file date.cpp.

References DAYS_IN_YEAR.

Referenced by ClickChangeDateCheat(), SubsidyListWindow::DrawWidget(), CrashLog::FillCrashLog(), GetGlobalVariable(), and GetSnowLine().

◆ ConvertYMDToDate()

Date ConvertYMDToDate ( Year  year,
Month  month,
Day  day 
)

◆ EnginesDailyLoop()

void EnginesDailyLoop ( )

Functions used by the IncreaseDate function.

Functions used by the IncreaseDate function.

Definition at line 799 of file engine.cpp.

◆ EnginesMonthlyLoop()

void EnginesMonthlyLoop ( )

Monthly update of the availability, reliability, and preview offers of the engines.

Definition at line 967 of file engine.cpp.

References _cur_year, and _year_engine_aging_stops.

Referenced by OnNewMonth().

◆ IndustryDailyLoop()

void IndustryDailyLoop ( )

Daily handler for the industry changes Taking the original map size of 256*256, the number of random changes was always of just one unit.

But it cannot be the same on smaller or bigger maps. That number has to be scaled up or down. For small maps, it implies that less than one change per month is required, while on bigger maps, it would be way more. The daily loop handles those changes.

Definition at line 2677 of file industry_cmd.cpp.

◆ SetDate()

void SetDate ( Date  date,
DateFract  fract 
)

Set the date.

Parameters
dateNew date
fractThe number of ticks that have passed on this date.

Definition at line 37 of file date.cpp.

Referenced by ClickChangeDateCheat(), and SetStartingYear().

◆ ShowEndGameChart()

void ShowEndGameChart ( )

◆ StationMonthlyLoop()

void StationMonthlyLoop ( )

Monthly loop for stations.

Definition at line 3649 of file station_cmd.cpp.

◆ SubsidyMonthlyLoop()

void SubsidyMonthlyLoop ( )

Perform the monthly update of open subsidies, and try to create a new one.

Definition at line 469 of file subsidy.cpp.

Variable Documentation

◆ _accum_days_for_month

const uint16 _accum_days_for_month[]
static
Initial value:
= {
ACCUM_JAN, ACCUM_FEB, ACCUM_MAR, ACCUM_APR,
ACCUM_MAY, ACCUM_JUN, ACCUM_JUL, ACCUM_AUG,
ACCUM_SEP, ACCUM_OCT, ACCUM_NOV, ACCUM_DEC,
}

Number of days to pass from the first day in the year before reaching the first of a month.

Definition at line 83 of file date.cpp.

Referenced by ConvertYMDToDate().

◆ _autosave_months

const Month _autosave_months[]
static
Initial value:
= {
0,
1,
3,
6,
12,
}

Available settings for autosave intervals.

Definition at line 181 of file date.cpp.

Referenced by OnNewMonth().

◆ _month_date_from_year_day

const uint16 _month_date_from_year_day[]
static
Initial value:
= {
M( 0, 1), M( 0, 2), M( 0, 3), M( 0, 4), M( 0, 5), M( 0, 6), M( 0, 7), M( 0, 8), M( 0, 9), M( 0, 10), M( 0, 11), M( 0, 12), M( 0, 13), M( 0, 14), M( 0, 15), M( 0, 16), M( 0, 17), M( 0, 18), M( 0, 19), M( 0, 20), M( 0, 21), M( 0, 22), M( 0, 23), M( 0, 24), M( 0, 25), M( 0, 26), M( 0, 27), M( 0, 28), M( 0, 29), M( 0, 30), M( 0, 31),
M( 1, 1), M( 1, 2), M( 1, 3), M( 1, 4), M( 1, 5), M( 1, 6), M( 1, 7), M( 1, 8), M( 1, 9), M( 1, 10), M( 1, 11), M( 1, 12), M( 1, 13), M( 1, 14), M( 1, 15), M( 1, 16), M( 1, 17), M( 1, 18), M( 1, 19), M( 1, 20), M( 1, 21), M( 1, 22), M( 1, 23), M( 1, 24), M( 1, 25), M( 1, 26), M( 1, 27), M( 1, 28), M( 1, 29),
M( 2, 1), M( 2, 2), M( 2, 3), M( 2, 4), M( 2, 5), M( 2, 6), M( 2, 7), M( 2, 8), M( 2, 9), M( 2, 10), M( 2, 11), M( 2, 12), M( 2, 13), M( 2, 14), M( 2, 15), M( 2, 16), M( 2, 17), M( 2, 18), M( 2, 19), M( 2, 20), M( 2, 21), M( 2, 22), M( 2, 23), M( 2, 24), M( 2, 25), M( 2, 26), M( 2, 27), M( 2, 28), M( 2, 29), M( 2, 30), M( 2, 31),
M( 3, 1), M( 3, 2), M( 3, 3), M( 3, 4), M( 3, 5), M( 3, 6), M( 3, 7), M( 3, 8), M( 3, 9), M( 3, 10), M( 3, 11), M( 3, 12), M( 3, 13), M( 3, 14), M( 3, 15), M( 3, 16), M( 3, 17), M( 3, 18), M( 3, 19), M( 3, 20), M( 3, 21), M( 3, 22), M( 3, 23), M( 3, 24), M( 3, 25), M( 3, 26), M( 3, 27), M( 3, 28), M( 3, 29), M( 3, 30),
M( 4, 1), M( 4, 2), M( 4, 3), M( 4, 4), M( 4, 5), M( 4, 6), M( 4, 7), M( 4, 8), M( 4, 9), M( 4, 10), M( 4, 11), M( 4, 12), M( 4, 13), M( 4, 14), M( 4, 15), M( 4, 16), M( 4, 17), M( 4, 18), M( 4, 19), M( 4, 20), M( 4, 21), M( 4, 22), M( 4, 23), M( 4, 24), M( 4, 25), M( 4, 26), M( 4, 27), M( 4, 28), M( 4, 29), M( 4, 30), M( 4, 31),
M( 5, 1), M( 5, 2), M( 5, 3), M( 5, 4), M( 5, 5), M( 5, 6), M( 5, 7), M( 5, 8), M( 5, 9), M( 5, 10), M( 5, 11), M( 5, 12), M( 5, 13), M( 5, 14), M( 5, 15), M( 5, 16), M( 5, 17), M( 5, 18), M( 5, 19), M( 5, 20), M( 5, 21), M( 5, 22), M( 5, 23), M( 5, 24), M( 5, 25), M( 5, 26), M( 5, 27), M( 5, 28), M( 5, 29), M( 5, 30),
M( 6, 1), M( 6, 2), M( 6, 3), M( 6, 4), M( 6, 5), M( 6, 6), M( 6, 7), M( 6, 8), M( 6, 9), M( 6, 10), M( 6, 11), M( 6, 12), M( 6, 13), M( 6, 14), M( 6, 15), M( 6, 16), M( 6, 17), M( 6, 18), M( 6, 19), M( 6, 20), M( 6, 21), M( 6, 22), M( 6, 23), M( 6, 24), M( 6, 25), M( 6, 26), M( 6, 27), M( 6, 28), M( 6, 29), M( 6, 30), M( 6, 31),
M( 7, 1), M( 7, 2), M( 7, 3), M( 7, 4), M( 7, 5), M( 7, 6), M( 7, 7), M( 7, 8), M( 7, 9), M( 7, 10), M( 7, 11), M( 7, 12), M( 7, 13), M( 7, 14), M( 7, 15), M( 7, 16), M( 7, 17), M( 7, 18), M( 7, 19), M( 7, 20), M( 7, 21), M( 7, 22), M( 7, 23), M( 7, 24), M( 7, 25), M( 7, 26), M( 7, 27), M( 7, 28), M( 7, 29), M( 7, 30), M( 7, 31),
M( 8, 1), M( 8, 2), M( 8, 3), M( 8, 4), M( 8, 5), M( 8, 6), M( 8, 7), M( 8, 8), M( 8, 9), M( 8, 10), M( 8, 11), M( 8, 12), M( 8, 13), M( 8, 14), M( 8, 15), M( 8, 16), M( 8, 17), M( 8, 18), M( 8, 19), M( 8, 20), M( 8, 21), M( 8, 22), M( 8, 23), M( 8, 24), M( 8, 25), M( 8, 26), M( 8, 27), M( 8, 28), M( 8, 29), M( 8, 30),
M( 9, 1), M( 9, 2), M( 9, 3), M( 9, 4), M( 9, 5), M( 9, 6), M( 9, 7), M( 9, 8), M( 9, 9), M( 9, 10), M( 9, 11), M( 9, 12), M( 9, 13), M( 9, 14), M( 9, 15), M( 9, 16), M( 9, 17), M( 9, 18), M( 9, 19), M( 9, 20), M( 9, 21), M( 9, 22), M( 9, 23), M( 9, 24), M( 9, 25), M( 9, 26), M( 9, 27), M( 9, 28), M( 9, 29), M( 9, 30), M( 9, 31),
M(10, 1), M(10, 2), M(10, 3), M(10, 4), M(10, 5), M(10, 6), M(10, 7), M(10, 8), M(10, 9), M(10, 10), M(10, 11), M(10, 12), M(10, 13), M(10, 14), M(10, 15), M(10, 16), M(10, 17), M(10, 18), M(10, 19), M(10, 20), M(10, 21), M(10, 22), M(10, 23), M(10, 24), M(10, 25), M(10, 26), M(10, 27), M(10, 28), M(10, 29), M(10, 30),
M(11, 1), M(11, 2), M(11, 3), M(11, 4), M(11, 5), M(11, 6), M(11, 7), M(11, 8), M(11, 9), M(11, 10), M(11, 11), M(11, 12), M(11, 13), M(11, 14), M(11, 15), M(11, 16), M(11, 17), M(11, 18), M(11, 19), M(11, 20), M(11, 21), M(11, 22), M(11, 23), M(11, 24), M(11, 25), M(11, 26), M(11, 27), M(11, 28), M(11, 29), M(11, 30), M(11, 31),
}

Definition at line 51 of file date.cpp.