OpenTTD Source  20241108-master-g80f628063a
game.hpp
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 <http://www.gnu.org/licenses/>.
6  */
7 
10 #ifndef GAME_HPP
11 #define GAME_HPP
12 
13 #include "game_scanner.hpp"
14 
15 #include "../script/api/script_event_types.hpp"
16 
20 class Game {
21 public:
25  static void GameLoop();
26 
30  static void Initialize();
31 
35  static void StartNew();
36 
40  static void Uninitialize(bool keepConfig);
41 
47  static void Pause();
48 
54  static void Unpause();
55 
60  static bool IsPaused();
61 
65  static void NewEvent(class ScriptEvent *event);
66 
70  static class GameInstance *GetGameInstance() { return Game::instance; }
71 
75  static class GameInfo *GetInfo() { return Game::info; }
76 
77  static void Rescan();
78  static void ResetConfig();
79 
83  static void Save();
84 
86  static void GetConsoleList(std::back_insert_iterator<std::string> &output_iterator, bool newest_only);
88  static void GetConsoleLibraryList(std::back_insert_iterator<std::string> &output_iterator);
90  static const ScriptInfoList *GetInfoList();
92  static const ScriptInfoList *GetUniqueInfoList();
94  static class GameInfo *FindInfo(const std::string &name, int version, bool force_exact_match);
96  static class GameLibrary *FindLibrary(const std::string &library, int version);
97 
101  static class GameInstance *GetInstance() { return Game::instance; }
102 
104  static bool HasGame(const struct ContentInfo *ci, bool md5sum);
105  static bool HasGameLibrary(const ContentInfo *ci, bool md5sum);
110 
111 private:
112  static uint frame_counter;
113  static class GameInstance *instance;
116  static class GameInfo *info;
117 };
118 
119 #endif /* GAME_HPP */
All static information from an Game like name, version, etc.
Definition: game_info.hpp:16
Runtime information about a game script like a pointer to the squirrel vm and the current state.
All static information from an Game library like name, version, etc.
Definition: game_info.hpp:49
Main Game class.
Definition: game.hpp:20
static void StartNew()
Start up a new GameScript.
Definition: game_core.cpp:72
static class GameInfo * info
Current selected GameInfo.
Definition: game.hpp:116
static class GameInfo * FindInfo(const std::string &name, int version, bool force_exact_match)
Wrapper function for GameScannerInfo::FindInfo.
Definition: game_core.cpp:237
static class GameInstance * GetGameInstance()
Get the current GameScript instance.
Definition: game.hpp:70
static GameScannerLibrary * GetScannerLibrary()
Gets the ScriptScanner instance that is used to find Game Libraries.
Definition: game_core.cpp:267
static void Unpause()
Resume execution of the Game Script.
Definition: game_core.cpp:136
static bool IsPaused()
Checks if the Game Script is paused.
Definition: game_core.cpp:141
static uint frame_counter
Tick counter for the Game code.
Definition: game.hpp:112
static void Save()
Save data from a GameScript to a savegame.
Definition: game_core.cpp:206
static class GameScannerInfo * scanner_info
Scanner for Game scripts.
Definition: game.hpp:114
static class GameInstance * instance
Instance to the current active Game.
Definition: game.hpp:113
static class GameScannerLibrary * scanner_library
Scanner for GS Libraries.
Definition: game.hpp:115
static bool HasGame(const struct ContentInfo *ci, bool md5sum)
Wrapper function for GameScanner::HasGame.
Definition: game_core.cpp:253
static class GameInstance * GetInstance()
Get the current active instance.
Definition: game.hpp:101
static class GameLibrary * FindLibrary(const std::string &library, int version)
Wrapper function for GameScanner::FindLibrary.
Definition: game_core.cpp:242
static const ScriptInfoList * GetUniqueInfoList()
Wrapper function for GameScanner::GetUniqueInfoList.
Definition: game_core.cpp:232
static void Pause()
Suspends the Game Script and then pause the execution of the script.
Definition: game_core.cpp:131
static void NewEvent(class ScriptEvent *event)
Queue a new event for a Game Script.
Definition: game_core.cpp:146
static void GameLoop()
Called every game-tick to let Game do something.
Definition: game_core.cpp:31
static void GetConsoleList(std::back_insert_iterator< std::string > &output_iterator, bool newest_only)
Wrapper function for GameScanner::GetConsoleList.
Definition: game_core.cpp:217
static void GetConsoleLibraryList(std::back_insert_iterator< std::string > &output_iterator)
Wrapper function for GameScanner::GetConsoleLibraryList.
Definition: game_core.cpp:222
static void Uninitialize(bool keepConfig)
Uninitialize the Game system.
Definition: game_core.cpp:102
static class GameInfo * GetInfo()
Get the current GameInfo.
Definition: game.hpp:75
static const ScriptInfoList * GetInfoList()
Wrapper function for GameScanner::GetInfoList.
Definition: game_core.cpp:227
static void Initialize()
Initialize the Game system.
Definition: game_core.cpp:57
static GameScannerInfo * GetScannerInfo()
Gets the ScriptScanner instance that is used to find Game scripts.
Definition: game_core.cpp:263
int version
Version of the script.
std::string name
Full name of the script.
declarations of the class for Game scanner
std::map< std::string, class ScriptInfo *, CaseInsensitiveComparator > ScriptInfoList
Type for the list of scripts.
Container for all important information about a piece of content.