OpenTTD Source 20250331-master-g3c15e0c889
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
20class Game {
21public:
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 GameInfo *GetInfo() { return Game::info; }
71
72 static void Rescan();
73 static void ResetConfig();
74
78 static void Save();
79
81 static void GetConsoleList(std::back_insert_iterator<std::string> &output_iterator, bool newest_only);
83 static void GetConsoleLibraryList(std::back_insert_iterator<std::string> &output_iterator);
85 static const ScriptInfoList *GetInfoList();
87 static const ScriptInfoList *GetUniqueInfoList();
89 static class GameInfo *FindInfo(const std::string &name, int version, bool force_exact_match);
91 static class GameLibrary *FindLibrary(const std::string &library, int version);
92
96 static class GameInstance *GetInstance() { return Game::instance.get(); }
97
99 static bool HasGame(const struct ContentInfo *ci, bool md5sum);
100 static bool HasGameLibrary(const ContentInfo *ci, bool md5sum);
105
106private:
107 static uint frame_counter;
108 static std::unique_ptr<GameInstance> instance;
109 static std::unique_ptr<GameScannerInfo> scanner_info;
110 static std::unique_ptr<GameScannerLibrary> scanner_library;
111 static GameInfo *info;
112};
113
114#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:52
Main Game class.
Definition game.hpp:20
static void StartNew()
Start up a new GameScript.
Definition game_core.cpp:72
static GameInfo * info
Current selected GameInfo.
Definition game.hpp:111
static class GameInfo * FindInfo(const std::string &name, int version, bool force_exact_match)
Wrapper function for GameScannerInfo::FindInfo.
static class GameInfo * GetInfo()
Get the current GameInfo.
Definition game.hpp:70
static GameScannerLibrary * GetScannerLibrary()
Gets the ScriptScanner instance that is used to find Game Libraries.
static void Unpause()
Resume execution of the Game Script.
static bool IsPaused()
Checks if the Game Script is paused.
static uint frame_counter
Tick counter for the Game code.
Definition game.hpp:107
static std::unique_ptr< GameInstance > instance
Instance to the current active Game.
Definition game.hpp:108
static void Save()
Save data from a GameScript to a savegame.
static bool HasGame(const struct ContentInfo *ci, bool md5sum)
Wrapper function for GameScanner::HasGame.
static class GameLibrary * FindLibrary(const std::string &library, int version)
Wrapper function for GameScanner::FindLibrary.
static const ScriptInfoList * GetUniqueInfoList()
Wrapper function for GameScanner::GetUniqueInfoList.
static void Pause()
Suspends the Game Script and then pause the execution of the script.
static void NewEvent(class ScriptEvent *event)
Queue a new event for a Game Script.
static class GameInstance * GetInstance()
Get the current active instance.
Definition game.hpp:96
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.
static void GetConsoleLibraryList(std::back_insert_iterator< std::string > &output_iterator)
Wrapper function for GameScanner::GetConsoleLibraryList.
static void Uninitialize(bool keepConfig)
Uninitialize the Game system.
static std::unique_ptr< GameScannerInfo > scanner_info
Scanner for Game scripts.
Definition game.hpp:109
static const ScriptInfoList * GetInfoList()
Wrapper function for GameScanner::GetInfoList.
static void Initialize()
Initialize the Game system.
Definition game_core.cpp:57
static std::unique_ptr< GameScannerLibrary > scanner_library
Scanner for GS Libraries.
Definition game.hpp:110
static GameScannerInfo * GetScannerInfo()
Gets the ScriptScanner instance that is used to find Game scripts.
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.