OpenTTD Source  20241120-master-g6d3adc6169
openttd.h File Reference

Some generic types. More...

#include <atomic>
#include <chrono>
#include "core/enum_type.hpp"

Go to the source code of this file.

Data Structures

struct  GameSessionStats
 

Enumerations

enum  GameMode { GM_MENU , GM_NORMAL , GM_EDITOR , GM_BOOTSTRAP }
 Mode which defines the state of the game.
 
enum  SwitchMode {
  SM_NONE , SM_NEWGAME , SM_RESTARTGAME , SM_RELOADGAME ,
  SM_EDITOR , SM_LOAD_GAME , SM_MENU , SM_SAVE_GAME ,
  SM_SAVE_HEIGHTMAP , SM_GENRANDLAND , SM_LOAD_SCENARIO , SM_START_HEIGHTMAP ,
  SM_LOAD_HEIGHTMAP , SM_RESTART_HEIGHTMAP , SM_JOIN_GAME
}
 Mode which defines what mode we're switching to. More...
 
enum  DisplayOptions {
  DO_SHOW_TOWN_NAMES = 0 , DO_SHOW_STATION_NAMES = 1 , DO_SHOW_SIGNS = 2 , DO_FULL_ANIMATION = 3 ,
  DO_FULL_DETAIL = 5 , DO_SHOW_WAYPOINT_NAMES = 6 , DO_SHOW_COMPETITOR_SIGNS = 7
}
 Display Options. More...
 
enum  PauseMode : uint8_t {
  PM_UNPAUSED = 0 , PM_PAUSED_NORMAL = 1 << 0 , PM_PAUSED_SAVELOAD = 1 << 1 , PM_PAUSED_JOIN = 1 << 2 ,
  PM_PAUSED_ERROR = 1 << 3 , PM_PAUSED_ACTIVE_CLIENTS = 1 << 4 , PM_PAUSED_GAME_SCRIPT = 1 << 5 , PM_PAUSED_LINK_GRAPH = 1 << 6 ,
  PM_COMMAND_DURING_PAUSE = 1 << 7 , PMB_PAUSED_NETWORK = PM_PAUSED_ACTIVE_CLIENTS | PM_PAUSED_JOIN
}
 Modes of pausing we've got. More...
 

Functions

void AskExitGame ()
 
void AskExitToGameMenu ()
 
int openttd_main (std::span< char *const > arguments)
 Main entry point for this lovely game. More...
 
void StateGameLoop ()
 State controlling game loop. More...
 
void HandleExitGameRequest ()
 
void SwitchToMode (SwitchMode new_mode)
 
bool RequestNewGRFScan (struct NewGRFScanCallback *callback=nullptr)
 Request a new NewGRF scan. More...
 
void GenerateSavegameId ()
 Generate an unique savegame ID.
 
void OpenBrowser (const std::string &url)
 
void ChangeAutosaveFrequency (bool reset)
 Reset the interval of the autosave. More...
 

Variables

GameMode _game_mode
 
SwitchMode _switch_mode
 The next mainloop command.
 
GameSessionStats _game_session_stats
 Statistics about the current session.
 
std::atomic< bool > _exit_game
 
bool _save_config
 
PauseMode _pause_mode
 The current pause mode.
 

Detailed Description

Some generic types.

Definition in file openttd.h.

Enumeration Type Documentation

◆ DisplayOptions

Display Options.

Enumerator
DO_SHOW_TOWN_NAMES 

Display town names.

DO_SHOW_STATION_NAMES 

Display station names.

DO_SHOW_SIGNS 

Display signs.

DO_FULL_ANIMATION 

Perform palette animation.

DO_FULL_DETAIL 

Also draw details of track and roads.

DO_SHOW_WAYPOINT_NAMES 

Display waypoint names.

DO_SHOW_COMPETITOR_SIGNS 

Display signs, station names and waypoint names of opponent companies. Buoys and oilrig-stations are always shown, even if this option is turned off.

Definition at line 45 of file openttd.h.

◆ PauseMode

enum PauseMode : uint8_t

Modes of pausing we've got.

Enumerator
PM_UNPAUSED 

A normal unpaused game.

PM_PAUSED_NORMAL 

A game normally paused.

PM_PAUSED_SAVELOAD 

A game paused for saving/loading.

PM_PAUSED_JOIN 

A game paused for 'pause_on_join'.

PM_PAUSED_ERROR 

A game paused because a (critical) error.

PM_PAUSED_ACTIVE_CLIENTS 

A game paused for 'min_active_clients'.

PM_PAUSED_GAME_SCRIPT 

A game paused by a game script.

PM_PAUSED_LINK_GRAPH 

A game paused due to the link graph schedule lagging.

PM_COMMAND_DURING_PAUSE 

A game paused, and a command executed during the pause; resets on autosave.

PMB_PAUSED_NETWORK 

Pause mode bits when paused for network reasons.

Definition at line 68 of file openttd.h.

◆ SwitchMode

enum SwitchMode

Mode which defines what mode we're switching to.

Enumerator
SM_NEWGAME 

New Game --> 'Random game'.

SM_RESTARTGAME 

Restart --> 'Random game' with current settings.

SM_RELOADGAME 

Reload the savegame / scenario / heightmap you started the game with.

SM_EDITOR 

Switch to scenario editor.

SM_LOAD_GAME 

Load game, Play Scenario.

SM_MENU 

Switch to game intro menu.

SM_SAVE_GAME 

Save game.

SM_SAVE_HEIGHTMAP 

Save heightmap.

SM_GENRANDLAND 

Generate random land within scenario editor.

SM_LOAD_SCENARIO 

Load scenario from scenario editor.

SM_START_HEIGHTMAP 

Load a heightmap and start a new game from it.

SM_LOAD_HEIGHTMAP 

Load heightmap from scenario editor.

SM_RESTART_HEIGHTMAP 

Load a heightmap and start a new game from it with current settings.

SM_JOIN_GAME 

Join a network game.

Definition at line 26 of file openttd.h.

Function Documentation

◆ ChangeAutosaveFrequency()

void ChangeAutosaveFrequency ( bool  reset)

Reset the interval of the autosave.

If reset is not set, this does not set the elapsed time on the timer, so if the interval is smaller, it might result in an autosave being done immediately.

Parameters
resetWhether to reset the timer back to zero, or to continue.

Definition at line 1318 of file openttd.cpp.

References _autosave_interval, _settings_client, TimerGameRealtime::AUTOSAVE, GUISettings::autosave_interval, and ClientSettings::gui.

◆ openttd_main()

int openttd_main ( std::span< char *const >  arguments)

Main entry point for this lovely game.

Parameters
argumentsThe command line arguments passed to the application.
Returns
0 when there is no error.

Definition at line 504 of file openttd.cpp.

References _game_session_stats, GameSessionStats::savegame_size, and GameSessionStats::start_time.

◆ RequestNewGRFScan()

bool RequestNewGRFScan ( NewGRFScanCallback callback)

Request a new NewGRF scan.

This will be executed on the next game-tick. This is mostly needed to ensure NewGRF scans (which are blocking) are done in the game-thread, and not in the draw-thread (which most often triggers this request).

Parameters
callbackOptional callback to call when NewGRF scan is completed.
Returns
True when the NewGRF scan was actually requested, false when the scan was already running.

Definition at line 1331 of file openttd.cpp.

◆ StateGameLoop()