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 "saveload/saveload.h"
Go to the source code of this file.
Defines | |
#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. | |
void | ConvertDateToYMD (Date date, YearMonthDay *ymd) |
Converts a Date to a Year, Month & Day. | |
Date | ConvertYMDToDate (Year year, Month month, Day day) |
Converts a tupe of Year, Month and Day to a Date. | |
void | EnginesDailyLoop () |
Functions used by the IncreaseDate function. | |
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. | |
void | CompaniesMonthlyLoop () |
Monthly update of the economic data (of the companies as well as economic fluctuations). | |
void | EnginesMonthlyLoop () |
void | TownsMonthlyLoop () |
void | IndustryMonthlyLoop () |
void | StationMonthlyLoop () |
Monthly loop for stations. | |
void | SubsidyMonthlyLoop () |
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. | |
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. | |
uint8 | _date_daylength_factor |
Setting for DAY_LENGTH. | |
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. | |
static const int | _autosave_intervals [] |
Available settings for autosave intervals. |
Handling of dates in our native format and transforming them to something human readable.
Definition in file date.cpp.
void ConvertDateToYMD | ( | Date | date, | |
YearMonthDay * | ymd | |||
) |
Converts a Date to a Year, Month & Day.
date | the date to convert from | |
ymd | the year, month and day to write to |
Definition at line 92 of file date.cpp.
References YearMonthDay::day, DAYS_IN_LEAP_YEAR, DAYS_IN_YEAR, IsLeapYear(), YearMonthDay::month, and YearMonthDay::year.
Referenced by ClickChangeDateCheat(), NetworkGameWindow::DrawServerLine(), DrawVehiclePurchaseInfo(), SubsidyListWindow::DrawWidget(), CrashLog::FillCrashLog(), AIDate::GetDayOfMonth(), GetGlobalVariable(), AIDate::GetMonth(), GetSnowLine(), AIDate::GetYear(), IncreaseDate(), SetDate(), SetDateWindow::SetDateWindow(), and SetYearEngineAgingStops().
Converts a tupe of Year, Month and Day to a Date.
year | is a number between 0..MAX_YEAR | |
month | is a number between 0..11 | |
day | is a number between 1..31 |
Definition at line 147 of file date.cpp.
References _accum_days_for_month, DAYS_TILL, and IsLeapYear().
Referenced by ClickChangeDateCheat(), ScenarioEditorToolbarWindow::DrawWidget(), FixTTOEngines(), AIDate::GetDate(), GetGlobalVariable(), SetDateWindow::OnClick(), ScenarioEditorToolbarWindow::OnQueryTextFinished(), ServerNetworkUDPSocketHandler::Receive_CLIENT_FIND_SERVER(), NetworkUDPSocketHandler::ReceiveNetworkGameInfo(), ServerNetworkAdminSocketHandler::SendWelcome(), CreateScenarioWindow::SetStringParameters(), StartupEngines(), StartupOneEngine(), ScenarioEditorToolbarWindow::UpdateWidgetSize(), MessageHistoryWindow::UpdateWidgetSize(), CreateScenarioWindow::UpdateWidgetSize(), and CheatWindow::UpdateWidgetSize().
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 2594 of file industry_cmd.cpp.
References _current_company, _industry_builder, Chance16(), ChangeIndustryProduction(), GetCurrentTotalNumberOfIndustries(), Industry::GetRandom(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Economy::industry_daily_change_counter, Economy::industry_daily_increment, InvalidateWindowData(), min(), OWNER_NONE, Backup< T >::Restore(), SetWindowDirty(), IndustryBuildData::TryBuildNewIndustry(), and IndustryBuildData::wanted_inds.
Referenced by OnNewDay().
Set the date.
date | New date | |
fract | The number of ticks that have passed on this date. |
Definition at line 35 of file date.cpp.
References _cur_month, _cur_year, _date, _date_fract, ConvertDateToYMD(), DAY_TICKS, YearMonthDay::month, and YearMonthDay::year.
Referenced by AfterLoadGame(), ClickChangeDateCheat(), and ScenarioEditorToolbarWindow::OnQueryTextFinished().
void ShowEndGameChart | ( | ) |
Show the endgame victory screen in 2050.
Update the new highscore if it was high enough
Definition at line 234 of file highscore_gui.cpp.
References _local_company, _network_dedicated, _networking, DeleteWindowByClass(), HideVitalWindows(), and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID().
Referenced by OnNewYear().
void StationMonthlyLoop | ( | ) |
Monthly loop for stations.
Definition at line 3416 of file station_cmd.cpp.
References GoodsEntry::acceptance_pickup, ClrBit(), GB(), GoodsEntry::GES_CURRENT_MONTH, GoodsEntry::GES_LAST_MONTH, Station::goods, SB(), GoodsEntry::supply, and GoodsEntry::supply_new.
Referenced by OnNewMonth().
const uint16 _accum_days_for_month[] [static] |
{ 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 81 of file date.cpp.
Referenced by ConvertYMDToDate().
const int _autosave_intervals[] [static] |
{ 0, 1, 7, 1, 3, 6, 12, }
Available settings for autosave intervals.
Definition at line 179 of file date.cpp.
Referenced by OnNewDay(), and OnNewMonth().
uint8 _date_daylength_factor |
Setting for DAY_LENGTH.
Scale factor for DAY_TICKS.
Definition at line 28 of file date.cpp.
Referenced by DoCreateTown(), CargoPayment::PayFinalDelivery(), CargoPayment::PayTransfer(), TileLoop_Town(), and UpdateTownDemands().
const uint16 _month_date_from_year_day[] [static] |
{ 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), }