OpenTTD Source  20241120-master-g6d3adc6169
game_config.cpp
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 #include "../stdafx.h"
11 #include "../settings_type.h"
12 #include "game.hpp"
13 #include "game_config.hpp"
14 #include "game_info.hpp"
15 
16 #include "../safeguards.h"
17 
19 {
20  GameConfig **config;
21  if (source == SSS_FORCE_NEWGAME || (source == SSS_DEFAULT && _game_mode == GM_MENU)) {
23  } else {
24  config = &_settings_game.game_config;
25  }
26  if (*config == nullptr) *config = new GameConfig();
27  return *config;
28 }
29 
30 class GameInfo *GameConfig::GetInfo() const
31 {
32  return static_cast<class GameInfo *>(ScriptConfig::GetInfo());
33 }
34 
35 ScriptInfo *GameConfig::FindInfo(const std::string &name, int version, bool force_exact_match)
36 {
37  return static_cast<ScriptInfo *>(Game::FindInfo(name, version, force_exact_match));
38 }
39 
40 bool GameConfig::ResetInfo(bool force_exact_match)
41 {
42  this->info = (ScriptInfo *)Game::FindInfo(this->name, force_exact_match ? this->version : -1, force_exact_match);
43  return this->info != nullptr;
44 }
ScriptInfo * FindInfo(const std::string &name, int version, bool force_exact_match) override
This function should call back to the Scanner in charge of this Config, to find the ScriptInfo belong...
Definition: game_config.cpp:35
bool ResetInfo(bool force_exact_match)
When ever the Game Scanner is reloaded, all infos become invalid.
Definition: game_config.cpp:40
static GameConfig * GetConfig(ScriptSettingSource source=SSS_DEFAULT)
Get the config of a company.
Definition: game_config.cpp:18
All static information from an Game like name, version, etc.
Definition: game_info.hpp:16
static class GameInfo * FindInfo(const std::string &name, int version, bool force_exact_match)
Wrapper function for GameScannerInfo::FindInfo.
Definition: game_core.cpp:237
ScriptSettingSource
Where to get the config from, either default (depends on current game mode) or force either newgame o...
@ SSS_FORCE_NEWGAME
Get the newgame Script config.
@ SSS_DEFAULT
Get the Script config from the current game mode.
int version
Version of the Script.
class ScriptInfo * info
ScriptInfo object for related to this Script version.
class ScriptInfo * GetInfo() const
Get the ScriptInfo linked to this ScriptConfig.
std::string name
Name of the Script.
All static information from an Script like name, version, etc.
Definition: script_info.hpp:30
int version
Version of the script.
std::string name
Full name of the script.
Base functions for all Games.
GameConfig stores the configuration settings of every Game.
GameInfo keeps track of all information of an Game, like Author, Description, ...
GameSettings _settings_game
Game settings of a running game or the scenario editor.
Definition: settings.cpp:57
GameSettings _settings_newgame
Game settings for new games (updated from the intro screen).
Definition: settings.cpp:58
class GameConfig * game_config
settings for gamescript