mirror of
https://github.com/vcmi/vcmi.git
synced 2025-06-06 23:26:26 +02:00
It is now possible for mods (e.g. vcmi extras) to provide custom icons for bonuses subtypes or for custom bonuses values without requiring hardcoded check in vcmi. All existing hardcoded checks have been removed. Bonuses config json from mods is now actually loaded.
127 lines
3.7 KiB
C++
127 lines
3.7 KiB
C++
/*
|
|
* GameLibrary.h, part of VCMI engine
|
|
*
|
|
* Authors: listed in file AUTHORS in main folder
|
|
*
|
|
* License: GNU General Public License v2.0 or later
|
|
* Full text of license available in license.txt file, in main folder
|
|
*
|
|
*/
|
|
#pragma once
|
|
|
|
#include <vcmi/Services.h>
|
|
|
|
VCMI_LIB_NAMESPACE_BEGIN
|
|
|
|
class CConsoleHandler;
|
|
class CArtHandler;
|
|
class CHeroHandler;
|
|
class CHeroClassHandler;
|
|
class CCreatureHandler;
|
|
class CSpellHandler;
|
|
class CSkillHandler;
|
|
class CObjectHandler;
|
|
class CObjectClassesHandler;
|
|
class ObstacleSetHandler;
|
|
class CTownHandler;
|
|
class CGeneralTextHandler;
|
|
class CModHandler;
|
|
class CContentHandler;
|
|
class BattleFieldHandler;
|
|
class IBonusTypeHandler;
|
|
class CBonusTypeHandler;
|
|
class TerrainTypeHandler;
|
|
class RoadTypeHandler;
|
|
class RiverTypeHandler;
|
|
class ObstacleHandler;
|
|
class CTerrainViewPatternConfig;
|
|
class CRmgTemplateStorage;
|
|
class IHandlerBase;
|
|
class IGameSettings;
|
|
class GameSettings;
|
|
class CIdentifierStorage;
|
|
|
|
#if SCRIPTING_ENABLED
|
|
namespace scripting
|
|
{
|
|
class ScriptHandler;
|
|
}
|
|
#endif
|
|
|
|
/// Loads and constructs several handlers
|
|
class DLL_LINKAGE GameLibrary final : public Services
|
|
{
|
|
|
|
std::shared_ptr<CContentHandler> getContent() const;
|
|
void setContent(std::shared_ptr<CContentHandler> content);
|
|
|
|
public:
|
|
const ArtifactService * artifacts() const override;
|
|
const CreatureService * creatures() const override;
|
|
const FactionService * factions() const override;
|
|
const HeroClassService * heroClasses() const override;
|
|
const HeroTypeService * heroTypes() const override;
|
|
#if SCRIPTING_ENABLED
|
|
const scripting::Service * scripts() const override;
|
|
#endif
|
|
const spells::Service * spells() const override;
|
|
const SkillService * skills() const override;
|
|
const BattleFieldService * battlefields() const override;
|
|
const ObstacleService * obstacles() const override;
|
|
const IGameSettings * engineSettings() const override;
|
|
|
|
const spells::effects::Registry * spellEffects() const override;
|
|
spells::effects::Registry * spellEffects() override;
|
|
|
|
const IBonusTypeHandler * getBth() const; //deprecated
|
|
const CIdentifierStorage * identifiers() const;
|
|
|
|
std::shared_ptr<CArtHandler> arth;
|
|
std::shared_ptr<CBonusTypeHandler> bth;
|
|
std::shared_ptr<CHeroHandler> heroh;
|
|
std::shared_ptr<CHeroClassHandler> heroclassesh;
|
|
std::shared_ptr<CCreatureHandler> creh;
|
|
std::shared_ptr<CSpellHandler> spellh;
|
|
std::shared_ptr<CSkillHandler> skillh;
|
|
// TODO: Remove ObjectHandler altogether?
|
|
std::shared_ptr<CObjectHandler> objh;
|
|
std::shared_ptr<CObjectClassesHandler> objtypeh;
|
|
std::shared_ptr<CTownHandler> townh;
|
|
std::shared_ptr<CGeneralTextHandler> generaltexth;
|
|
std::shared_ptr<CModHandler> modh;
|
|
std::shared_ptr<TerrainTypeHandler> terrainTypeHandler;
|
|
std::shared_ptr<RoadTypeHandler> roadTypeHandler;
|
|
std::shared_ptr<RiverTypeHandler> riverTypeHandler;
|
|
std::shared_ptr<CIdentifierStorage> identifiersHandler;
|
|
std::shared_ptr<CTerrainViewPatternConfig> terviewh;
|
|
std::shared_ptr<CRmgTemplateStorage> tplh;
|
|
std::shared_ptr<BattleFieldHandler> battlefieldsHandler;
|
|
std::shared_ptr<ObstacleHandler> obstacleHandler;
|
|
std::shared_ptr<GameSettings> settingsHandler;
|
|
std::shared_ptr<ObstacleSetHandler> biomeHandler;
|
|
|
|
#if SCRIPTING_ENABLED
|
|
std::shared_ptr<scripting::ScriptHandler> scriptHandler;
|
|
#endif
|
|
|
|
GameLibrary(); //c-tor, loads .lods and NULLs handlers
|
|
~GameLibrary();
|
|
void init(bool onlyEssential); //uses standard config file
|
|
|
|
// basic initialization. should be called before init(). Can also extract original H3 archives
|
|
void loadFilesystem(bool extractArchives);
|
|
void loadModFilesystem();
|
|
|
|
#if SCRIPTING_ENABLED
|
|
void scriptsLoaded();
|
|
#endif
|
|
};
|
|
|
|
extern DLL_LINKAGE GameLibrary * LIBRARY;
|
|
|
|
DLL_LINKAGE void preinitDLL(CConsoleHandler * Console, bool extractArchives);
|
|
DLL_LINKAGE void loadDLLClasses(bool onlyEssential = false);
|
|
|
|
|
|
VCMI_LIB_NAMESPACE_END
|