OpenTTD Source  1.11.2
openttd.cpp File Reference
#include "stdafx.h"
#include "blitter/factory.hpp"
#include "sound/sound_driver.hpp"
#include "music/music_driver.hpp"
#include "video/video_driver.hpp"
#include "fontcache.h"
#include "error.h"
#include "gui.h"
#include "base_media_base.h"
#include "saveload/saveload.h"
#include "company_func.h"
#include "command_func.h"
#include "news_func.h"
#include "fios.h"
#include "aircraft.h"
#include "roadveh.h"
#include "train.h"
#include "ship.h"
#include "console_func.h"
#include "screenshot.h"
#include "network/network.h"
#include "network/network_func.h"
#include "network/core/game_info.h"
#include "ai/ai.hpp"
#include "ai/ai_config.hpp"
#include "settings_func.h"
#include "genworld.h"
#include "progress.h"
#include "strings_func.h"
#include "date_func.h"
#include "vehicle_func.h"
#include "gamelog.h"
#include "animated_tile_func.h"
#include "roadstop_base.h"
#include "elrail_func.h"
#include "rev.h"
#include "highscore.h"
#include "station_base.h"
#include "crashlog.h"
#include "engine_func.h"
#include "core/random_func.hpp"
#include "rail_gui.h"
#include "road_gui.h"
#include "core/backup_type.hpp"
#include "hotkeys.h"
#include "newgrf.h"
#include "misc/getoptdata.h"
#include "game/game.hpp"
#include "game/game_config.hpp"
#include "town.h"
#include "subsidy_func.h"
#include "gfx_layout.h"
#include "viewport_func.h"
#include "viewport_sprite_sorter.h"
#include "framerate_type.h"
#include "industry.h"
#include "linkgraph/linkgraphschedule.h"
#include <stdarg.h>
#include <system_error>
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  AfterNewGRFScan
 Callback structure of statements to be executed after the NewGRF scan. More...
 

Functions

void CallLandscapeTick ()
 
void IncreaseDate ()
 Increases the tick counter, increases date and possibly calls procedures that have to be called daily, monthly or yearly.
 
void DoPaletteAnimations ()
 
void MusicLoop ()
 Check music playback status and start/stop/song-finished. More...
 
void ResetMusic ()
 
void CallWindowGameTickEvent ()
 Dispatch OnGameTick event over all windows.
 
bool HandleBootstrap ()
 Handle all procedures for bootstrapping OpenTTD without a base graphics set. More...
 
CompanyDoStartupNewCompany (bool is_ai, CompanyID company=INVALID_COMPANY)
 Create a new company and sets all company variables default values. More...
 
void ShowOSErrorBox (const char *buf, bool system)
 
void CDECL usererror (const char *s,...)
 Error handling for fatal user errors. More...
 
void CDECL error (const char *s,...)
 Error handling for fatal non-user errors. More...
 
void CDECL ShowInfoF (const char *str,...)
 Shows some information on the console/a popup box depending on the OS. More...
 
static void ShowHelp ()
 Show the help message when someone passed a wrong parameter.
 
static void WriteSavegameInfo (const char *name)
 
static void ParseResolution (Dimension *res, const char *s)
 Extract the resolution from the given string and store it in the 'res' parameter. More...
 
static void ShutdownGame ()
 Uninitializes drivers, frees allocated memory, cleans pools, ... More...
 
static void LoadIntroGame (bool load_newgrfs=true)
 Load the introduction game. More...
 
void MakeNewgameSettingsLive ()
 
void OpenBrowser (const char *url)
 
int openttd_main (int argc, char *argv[])
 Main entry point for this lovely game. More...
 
void HandleExitGameRequest ()
 
static void MakeNewGameDone ()
 
static void MakeNewGame (bool from_heightmap, bool reset_settings)
 
static void MakeNewEditorWorldDone ()
 
static void MakeNewEditorWorld ()
 
bool SafeLoad (const std::string &filename, SaveLoadOperation fop, DetailedFileType dft, GameMode newgm, Subdirectory subdir, struct LoadFilter *lf=nullptr)
 Load the specified savegame but on error do different things. More...
 
void SwitchToMode (SwitchMode new_mode)
 
static void CheckCaches ()
 Check the validity of some of the caches. More...
 
void StateGameLoop ()
 State controlling game loop. More...
 
static void DoAutosave ()
 Create an autosave. More...
 
bool RequestNewGRFScan (NewGRFScanCallback *callback)
 Request a new NewGRF scan. More...
 
void GameLoop ()
 

Variables

std::string _config_file
 Configuration file of OpenTTD.
 
bool _save_config = false
 
bool _request_newgrf_scan = false
 
NewGRFScanCallback_request_newgrf_scan_callback = nullptr
 
static const OptionData _options []
 Options of OpenTTD. More...
 

Detailed Description

Functions related to starting OpenTTD.

Definition in file openttd.cpp.

Function Documentation

◆ CheckCaches()

static void CheckCaches ( )
static

Check the validity of some of the caches.

Especially in the sense of desyncs between the cached value and what the value would be when calculated from the 'base' data.

Definition at line 1158 of file openttd.cpp.

◆ DoAutosave()

static void DoAutosave ( )
static

Create an autosave.

The default name is "autosave#.sav". However with the setting 'keep_all_autosave' the name defaults to company-name + date

Definition at line 1431 of file openttd.cpp.

◆ DoStartupNewCompany()

Company* DoStartupNewCompany ( bool  is_ai,
CompanyID  company = INVALID_COMPANY 
)

Create a new company and sets all company variables default values.

Parameters
is_aiis an AI company?
companyCompanyID to use for the new company
Returns
the company struct

Definition at line 539 of file company_cmd.cpp.

◆ error()

◆ HandleBootstrap()

bool HandleBootstrap ( )

Handle all procedures for bootstrapping OpenTTD without a base graphics set.

This requires all kinds of trickery that is needed to avoid the use of sprites from the base graphics set which are pretty interwoven.

Returns
True if a base set exists, otherwise false.

Definition at line 279 of file bootstrap_gui.cpp.

References _network_available, BlitterFactory::GetCurrentBlitter(), and BaseMedia< GraphicsSet >::GetUsedSet().

◆ LoadIntroGame()

static void LoadIntroGame ( bool  load_newgrfs = true)
static

Load the introduction game.

Parameters
load_newgrfsWhether to load the NewGRFs or not.

Definition at line 338 of file openttd.cpp.

◆ MusicLoop()

void MusicLoop ( )

Check music playback status and start/stop/song-finished.

Called from main loop.

Definition at line 423 of file music_gui.cpp.

References _music.

◆ openttd_main()

int openttd_main ( int  argc,
char *  argv[] 
)

Main entry point for this lovely game.

Parameters
argcThe number of arguments passed to this game.
argvThe values of the arguments.
Returns
0 when there is no error.

Definition at line 547 of file openttd.cpp.

◆ ParseResolution()

static void ParseResolution ( Dimension res,
const char *  s 
)
static

Extract the resolution from the given string and store it in the 'res' parameter.

Parameters
resvariable to store the resolution in.
sthe string to decompose.

Definition at line 288 of file openttd.cpp.

References ShowInfoF().

◆ 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 1461 of file openttd.cpp.

Referenced by NetworkContentDownloadStatusWindow::~NetworkContentDownloadStatusWindow().

◆ SafeLoad()

bool SafeLoad ( const std::string &  filename,
SaveLoadOperation  fop,
DetailedFileType  dft,
GameMode  newgm,
Subdirectory  subdir,
struct LoadFilter lf = nullptr 
)

Load the specified savegame but on error do different things.

If loading fails due to corrupt savegame, bad version, etc. go back to a previous correct state. In the menu for example load the intro game again.

Parameters
filenamefile to be loaded
fopmode of loading, always SLO_LOAD
newgmswitch to this mode of loading fails due to some unknown error
subdirdefault directory to look for filename, set to 0 if not needed
lfLoad filter to use, if nullptr: use filename + subdir.

Definition at line 954 of file openttd.cpp.

References DFT_GAME_FILE, DFT_OLD_GAME_FILE, and SLO_LOAD.

◆ ShowInfoF()

void CDECL ShowInfoF ( const char *  str,
  ... 
)

Shows some information on the console/a popup box depending on the OS.

Parameters
strthe text to show.

Definition at line 154 of file openttd.cpp.

References lastof, and vseprintf().

Referenced by CheckExternalFiles(), GetFontByFaceName(), ParseResolution(), and IniFile::ReportFileError().

◆ ShutdownGame()

static void ShutdownGame ( )
static

Uninitializes drivers, frees allocated memory, cleans pools, ...

Generally, prepares the game for shutting down

Definition at line 305 of file openttd.cpp.

◆ StateGameLoop()

◆ usererror()

void CDECL usererror ( const char *  s,
  ... 
)

Error handling for fatal user errors.

Parameters
sthe string to print.
Note
Does NEVER return.

Definition at line 103 of file openttd.cpp.

References lastof, and vseprintf().

Referenced by FioOpenFile(), LoadGrfFile(), LoadGrfFileIndexed(), LoadNextSprite(), DriverFactoryBase::SelectDriver(), and DriverFactoryBase::SelectDriverImpl().

Variable Documentation

◆ _options

GETOPT_SHORT_NOVAL
#define GETOPT_SHORT_NOVAL(shortname)
Short option without value.
Definition: getoptdata.h:91
GETOPT_SHORT_OPTVAL
#define GETOPT_SHORT_OPTVAL(shortname)
Short option with optional value.
Definition: getoptdata.h:104
GETOPT_SHORT_VALUE
#define GETOPT_SHORT_VALUE(shortname)
Short option with value.
Definition: getoptdata.h:97