| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 | /* * GameLibrary.cpp, 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 * */#include "StdInc.h"#include "GameLibrary.h"#include "CArtHandler.h"#include "CBonusTypeHandler.h"#include "CCreatureHandler.h"#include "CConfigHandler.h"#include "RoadHandler.h"#include "RiverHandler.h"#include "TerrainHandler.h"#include "spells/CSpellHandler.h"#include "spells/effects/Registry.h"#include "CSkillHandler.h"#include "entities/faction/CTownHandler.h"#include "entities/hero/CHeroClassHandler.h"#include "entities/hero/CHeroHandler.h"#include "texts/CGeneralTextHandler.h"#include "modding/CModHandler.h"#include "modding/IdentifierStorage.h"#include "modding/CModVersion.h"#include "IGameEventsReceiver.h"#include "CStopWatch.h"#include "VCMIDirs.h"#include "filesystem/Filesystem.h"#include "rmg/CRmgTemplateStorage.h"#include "mapObjectConstructors/CObjectClassesHandler.h"#include "mapObjects/CObjectHandler.h"#include "mapObjects/ObstacleSetHandler.h"#include "mapping/CMapEditManager.h"#include "ScriptHandler.h"#include "BattleFieldHandler.h"#include "ObstacleHandler.h"#include "GameSettings.h"VCMI_LIB_NAMESPACE_BEGINGameLibrary * LIBRARY = nullptr;const ArtifactService * GameLibrary::artifacts() const{	return arth.get();}const CreatureService * GameLibrary::creatures() const{	return creh.get();}const FactionService * GameLibrary::factions() const{	return townh.get();}const HeroClassService * GameLibrary::heroClasses() const{	return heroclassesh.get();}const HeroTypeService * GameLibrary::heroTypes() const{	return heroh.get();}#if SCRIPTING_ENABLEDconst scripting::Service * GameLibrary::scripts() const{	return scriptHandler.get();}#endifconst spells::Service * GameLibrary::spells() const{	return spellh.get();}const SkillService * GameLibrary::skills() const{	return skillh.get();}const IBonusTypeHandler * GameLibrary::getBth() const{	return bth.get();}const CIdentifierStorage * GameLibrary::identifiers() const{	return identifiersHandler.get();}const spells::effects::Registry * GameLibrary::spellEffects() const{	return spells::effects::GlobalRegistry::get();}spells::effects::Registry * GameLibrary::spellEffects(){	return spells::effects::GlobalRegistry::get();}const BattleFieldService * GameLibrary::battlefields() const{	return battlefieldsHandler.get();}const ObstacleService * GameLibrary::obstacles() const{	return obstacleHandler.get();}const IGameSettings * GameLibrary::engineSettings() const{	return settingsHandler.get();}void GameLibrary::loadFilesystem(bool extractArchives){	CStopWatch loadTime;	CResourceHandler::initialize();	logGlobal->info("\tInitialization: %d ms", loadTime.getDiff());	CResourceHandler::load("config/filesystem.json", extractArchives);	logGlobal->info("\tData loading: %d ms", loadTime.getDiff());}void GameLibrary::loadModFilesystem(){	CStopWatch loadTime;	modh = std::make_unique<CModHandler>();	identifiersHandler = std::make_unique<CIdentifierStorage>();	logGlobal->info("\tMod handler: %d ms", loadTime.getDiff());	modh->loadModFilesystems();	logGlobal->info("\tMod filesystems: %d ms", loadTime.getDiff());}template <class Handler>void createHandler(std::unique_ptr<Handler> & handler){	handler = std::make_unique<Handler>();}void GameLibrary::initializeFilesystem(bool extractArchives){	loadFilesystem(extractArchives);	settings.init("config/settings.json", "vcmi:settings");	persistentStorage.init("config/persistentStorage.json", "");	loadModFilesystem();}void GameLibrary::initializeLibrary(){	createHandler(settingsHandler);	modh->initializeConfig();	createHandler(generaltexth);	createHandler(bth);	createHandler(roadTypeHandler);	createHandler(riverTypeHandler);	createHandler(terrainTypeHandler);	createHandler(heroh);	createHandler(heroclassesh);	createHandler(arth);	createHandler(creh);	createHandler(townh);	createHandler(biomeHandler);	createHandler(objh);	createHandler(objtypeh);	createHandler(spellh);	createHandler(skillh);	createHandler(terviewh);	createHandler(tplh); //templates need already resolved identifiers (refactor?)#if SCRIPTING_ENABLED	createHandler(scriptHandler);#endif	createHandler(battlefieldsHandler);	createHandler(obstacleHandler);	modh->load();	modh->afterLoad();}#if SCRIPTING_ENABLEDvoid GameLibrary::scriptsLoaded(){	scriptHandler->performRegistration(this);}#endifGameLibrary::GameLibrary() = default;GameLibrary::~GameLibrary() = default;VCMI_LIB_NAMESPACE_END
 |