OpenTTD Source 20260208-master-g43af8e94d0
timer_game_tick.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
9
10#ifndef TIMER_GAME_TICK_H
11#define TIMER_GAME_TICK_H
12
13#include "../gfx_type.h"
14
15#include <chrono>
16
23public:
24 using Ticks = int32_t;
25 using TickCounter = uint64_t;
26
28 enum class Priority : uint8_t {
30
31 /* For all other priorities, the order is important.
32 * For safety, you can only setup a single timer on a single priority. */
33
35 };
36
37 struct TPeriod {
38 Priority priority;
39 uint value;
40
41 TPeriod(Priority priority, uint value) : priority(priority), value(value)
42 {}
43
44 bool operator < (const TPeriod &other) const
45 {
46 /* Sort by priority before value, such that changes in value for priorities other than NONE do not change the container order */
47 if (this->priority != other.priority) return this->priority < other.priority;
48 return this->value < other.value;
49 }
50
51 bool operator == (const TPeriod &other) const
52 {
53 return this->priority == other.priority && this->value == other.value;
54 }
55 };
56
57 using TElapsed = uint;
58 struct TStorage {
59 uint elapsed;
60 };
61
63};
64
88
89#endif /* TIMER_GAME_TICK_H */
Storage class for Ticks constants.
static constexpr TimerGameTick::Ticks DAY_TICKS
1 day is 74 ticks; TimerGameCalendar::date_fract used to be uint16_t and incremented by 885.
static constexpr TimerGameTick::Ticks INDUSTRY_CUT_TREE_TICKS
Cycle duration for lumber mill's extra action.
static constexpr TimerGameTick::Ticks INVALID_TICKS
Representation of an invalid number of ticks.
static constexpr TimerGameTick::Ticks STATION_LINKGRAPH_TICKS
Cycle duration for cleaning dead links.
static constexpr TimerGameTick::Ticks CARGO_AGING_TICKS
Cycle duration for aging cargo.
static constexpr TimerGameTick::Ticks INDUSTRY_PRODUCE_TICKS
Cycle duration for industry production.
static constexpr TimerGameTick::Ticks TOWN_GROWTH_TICKS
Cycle duration for towns trying to grow (this originates from the size of the town array in TTD).
static constexpr TimerGameTick::Ticks TICKS_PER_SECOND
Estimation of how many ticks fit in a single second.
static constexpr TimerGameTick::Ticks STATION_ACCEPTANCE_TICKS
Cycle duration for updating station acceptance.
static constexpr TimerGameTick::Ticks STATION_RATING_TICKS
Cycle duration for updating station rating.
Timer that represents the game-ticks.
uint64_t TickCounter
The type that the tick counter is stored in.
static TickCounter counter
Monotonic counter, in ticks, since start of game.
int32_t Ticks
The type to store ticks in.
Priority
Different levels of priority to run the timers in.
@ None
These timers can be executed in any order; the order is not relevant.
@ CompetitorTimeout
Considering starting a new competitor/AI.
Types related to the graphics and/or input devices.
static const uint MILLISECONDS_PER_TICK
The number of milliseconds per game tick.
Definition gfx_type.h:370