OpenTTD Source: src/openttd.h File Reference

OpenTTD Source 15.3

Data Structures | Typedefs | Enumerations | Functions | Variables
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

## Typedefs
using | PauseModes = EnumBitSet< PauseMode, uint8_t >

## Enumerations
enum | GameMode : uint8_t { GM_MENU , GM_NORMAL , GM_EDITOR , GM_BOOTSTRAP }
| Mode which defines the state of the game. More...
enum | SwitchMode : uint8_t { 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 : uint8_t { 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 class | PauseMode : uint8_t { Normal = 0 , SaveLoad = 1 , Join = 2 , Error = 3 , ActiveClients = 4 , GameScript = 5 , LinkGraph = 6 , CommandDuringPause = 7 }
| Modes of pausing we've got. More...

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

## 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
PauseModes | _pause_mode
| The current pause mode.

## Detailed Description

Some generic types.

Definition in file openttd.h.

## Typedef Documentation

## ◆ PauseModes

using PauseModes = EnumBitSet<PauseMode, uint8_t>

Definition at line 78 of file openttd.h.

## Enumeration Type Documentation

## ◆ DisplayOptions

enum DisplayOptions : uint8_t

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.

## ◆ GameMode

enum GameMode : uint8_t

Mode which defines the state of the game.

Definition at line 18 of file openttd.h.

## ◆ PauseMode

enum class PauseMode : uint8_t
| strong

Modes of pausing we've got.

Enumerator
Normal | A game normally paused.
SaveLoad | A game paused for saving/loading.
Join | A game paused for 'pause_on_join'.
Error | A game paused because a (critical) error.
ActiveClients | A game paused for 'min_active_clients'.
GameScript | A game paused by a game script.
LinkGraph | A game paused due to the link graph schedule lagging.
CommandDuringPause | A game paused, and a command executed during the pause; resets on autosave.

Definition at line 68 of file openttd.h.

## ◆ SwitchMode

enum SwitchMode : uint8_t

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

## ◆ AskExitGame()

void AskExitGame | ( |  | ) |

Definition at line 411 of file intro_gui.cpp.

## ◆ AskExitToGameMenu()

void AskExitToGameMenu | ( |  | ) |

Definition at line 431 of file intro_gui.cpp.

## ◆ 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

  reset | Whether to reset the timer back to zero, or to continue.

Definition at line 1314 of file openttd.cpp.

References _autosave_interval, _settings_client, TimerGameRealtime::AUTOSAVE, GUISettings::autosave_interval, ClientSettings::gui, and IntervalTimer< TTimerType >::SetInterval().

Referenced by GameOptionsWindow::OnDropdownSelect().

## ◆ GenerateSavegameId()

void GenerateSavegameId | ( |  | ) |

Generate an unique savegame ID.

Definition at line 87 of file misc.cpp.

References _game_session_stats, GenerateUid(), and GameSessionStats::savegame_id.

Referenced by AfterLoadGame().

## ◆ HandleExitGameRequest()

void HandleExitGameRequest | ( |  | ) |

Definition at line 817 of file openttd.cpp.

## ◆ OpenBrowser()

void OpenBrowser | ( | const std::string & | url | ) |

Definition at line 365 of file openttd.cpp.

## ◆ openttd_main()

int openttd_main | ( | std::span< std::string_view > | arguments | ) |

Main entry point for this lovely game.

Parameters

  arguments | The command line arguments passed to the application.

Returns
  0 when there is no error.

Definition at line 500 of file openttd.cpp.

References _blitter_autodetected, _config_file, _cur_resolution, _file_to_saveload, _game_session_stats, _ini_blitter, _ini_musicdriver, _ini_sounddriver, _ini_videodriver, _load_check_data, _skip_all_newgrf_scanning, _switch_mode, GetOptData::arguments, TarScanner::Baseset, BLT_8BPP, LoadCheckData::Clear(), CreateOptions(), Debug, DeterminePaths(), DFT_GAME_FILE, TarScanner::DoScan(), Driver::DT_MUSIC, Driver::DT_SOUND, Driver::DT_VIDEO, LoadCheckData::error, LoadCheckData::error_msg, BaseGraphics::Ini::extra_version, BaseMedia< SoundsSet >::FindSets(), BaseMedia< GraphicsSet >::FindSets(), BaseMedia< MusicSet >::FindSets(), FiosGetSavegameListCallback(), FiosGetScenarioListCallback(), FONTSIZES_REQUIRED, FS2OTTD(), FT_HEIGHTMAP, FT_SAVEGAME, FT_SCENARIO, GENERATE_NEW_SEED, GenerateWorld(), GetEncodedString(), VideoDriver::GetInstance(), GetOptData::GetOpt(), GraphicsSet::GetOrCreateExtraConfig(), GetString(), BaseMedia< GraphicsSet >::GetUsedSet(), GWM_EMPTY, HandleBootstrap(), LoadCheckData::HasErrors(), CursorVars::in_window, BaseMusic::ini_set, BaseSounds::ini_set, SocialIntegration::Initialize(), InitializeLanguagePacks(), InitializeSpriteSorter(), InitWindowSystem(), GRFConfig::IsCompatible(), FontCache::LoadFontCaches(), LoadFromConfig(), LoadIntroGame(), VideoDriver::MainLoop(), Min, FileToSaveLoad::name, NetworkStartUp(), GetOptData::opt, OTTD2FS(), ParseFullConnectionString(), ParseInteger(), ParseResolution(), RequestNewGRFScan(), S8BPP_NONE, SAVE_DIR, GameSessionStats::savegame_size, SaveOrLoad(), ScheduleErrorMessage(), BlitterFactory::SelectBlitter(), DriverFactoryBase::SelectDriver(), SetDebugString(), FileToSaveLoad::SetMode(), BaseMedia< GraphicsSet >::SetSet(), BaseMedia< MusicSet >::SetSet(), BaseMedia< SoundsSet >::SetSet(), BaseMedia< SoundsSet >::SetSetByName(), BaseMedia< GraphicsSet >::SetSetByName(), BaseMedia< MusicSet >::SetSetByName(), BaseMedia< GraphicsSet >::SetSetByShortname(), ShowHelp(), ShutdownGame(), SL_OK, SLO_CHECK, SLO_LOAD, SM_EDITOR, SM_LOAD_GAME, SM_LOAD_HEIGHTMAP, SM_LOAD_SCENARIO, SM_MENU, SM_NEWGAME, SM_START_HEIGHTMAP, GameSessionStats::start_time, and UpdateGUIZoom().

## ◆ 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

  callback | Optional 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 1327 of file openttd.cpp.

Referenced by NetworkContentDownloadStatusWindow::Close(), NewGRFWindow::OnClick(), and openttd_main().

## ◆ StateGameLoop()

void StateGameLoop | ( |  | ) |

State controlling game loop.

The state must not be changed from anywhere but here. That check is enforced in DoCommand.

Definition at line 1210 of file openttd.cpp.

References _current_company, _network_server, _networking, _pause_mode, _settings_game, AnimateAnimatedTiles(), BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Any(), AUTOSAVE_DIR, CallWindowGameTickEvent(), CheckCaches(), TimerGameEconomy::date, TimerGameEconomy::date_fract, DFT_GAME_FILE, TimerManager< TTimerType >::Elapsed(), GameSettings::game_creation, AI::GameLoop(), Game::GameLoop(), GameCreationSettings::generation_seed, HasModalProgress(), IsLocalCompany(), OWNER_NONE, PerformanceMeasurer::Paused(), PFE_ALLSCRIPTS, PFE_GAMELOOP, PFE_GL_AIRCRAFT, PFE_GL_ECONOMY, PFE_GL_LANDSCAPE, PFE_GL_ROADVEHS, PFE_GL_SHIPS, PFE_GL_TRAINS, PSM_ENTER_GAMELOOP, PSM_LEAVE_GAMELOOP, PerformanceAccumulator::Reset(), Backup< T >::Restore(), RunTileLoop(), RunVehicleCalendarDayProc(), SaveOrLoad(), SLO_SAVE, StateGameLoop_LinkGraphPauseControl(), BasePersistentStorageArray::SwitchMode(), and UpdateLandscapingLimits().

Referenced by ClientNetworkGameSocketHandler::GameLoop().

## ◆ SwitchToMode()

void SwitchToMode | ( | SwitchMode | new_mode | ) |

Definition at line 1018 of file openttd.cpp.

## Variable Documentation

## ◆ _exit_game

std::atomic<bool> _exit_game
| extern

Definition at line 47 of file gfx.cpp.

## ◆ _game_mode

GameMode _game_mode
| extern

Definition at line 48 of file gfx.cpp.

## ◆ _game_session_stats

GameSessionStats _game_session_stats
| extern

Statistics about the current session.

Definition at line 51 of file gfx.cpp.

Referenced by FileWriter::Finish(), GenerateSavegameId(), openttd_main(), ClientNetworkGameSocketHandler::Receive_SERVER_MAP_DONE(), SurveyGameSession(), and FileReader::~FileReader().

## ◆ _pause_mode

PauseModes _pause_mode
| extern

The current pause mode.

Definition at line 50 of file gfx.cpp.

Referenced by AfterLoad_LinkGraphPauseControl(), AfterLoadGame(), CheckMinActiveClients(), CheckPauseHelper(), CheckPauseOnJoin(), CmdClearArea(), CmdPause(), DistributeQueue(), StatusBarWindow::DrawWidget(), CommandHelperBase::InternalExecuteProcessResult(), CommandHelperBase::InternalPostBefore(), LoadIntroGame(), NetworkHandlePauseChange(), ScriptDebugWindow::OnClick(), ScriptDebugWindow::OnInvalidateData(), StateGameLoop(), and StateGameLoop_LinkGraphPauseControl().

## ◆ _save_config

bool _save_config
| extern

Definition at line 110 of file openttd.cpp.

## ◆ _switch_mode

SwitchMode _switch_mode
| extern

The next mainloop command.

Definition at line 49 of file gfx.cpp.

Referenced by _GenerateWorld(), ClientNetworkGameSocketHandler::ClientError(), GameOptionsWindow::Close(), NetworkGameSocketHandler::CloseConnection(), AIInstance::Died(), GameInstance::Died(), HandleGeneratingWorldAbortion(), VideoDriver_Dedicated::MainLoop(), NetworkClientConnectGame(), NetworkRestartMap(), SaveLoadWindow::OnClick(), MainWindow::OnHotkey(), AfterNewGRFScan::OnNewGRFsScanned(), SaveLoadWindow::OnTimeout(), openttd_main(), and VideoDriver::Tick().