| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | #include "StdInc.h"#include "CModHandler.h"#include "JsonNode.h"/* * CModHandler.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 * */class CArtHandler;class CHeroHandler;class CCreatureHandler;class CSpellHandler;class CBuildingHandler;class CObjectHandler;class CDefObjInfoHandler;class CTownHandler;class CGeneralTextHandler;CModHandler::CModHandler(){	VLC->modh = this;	loadConfigFromFile ("defaultMods");	//CResourceHandler::loadModsFilesystems(); //scan for all mods	//TODO: mod filesystem is already initialized at LibClasses launch	//TODO: load default (last?) config}artID CModHandler::addNewArtifact (CArtifact * art){	int id = artifacts.size();	artifacts.push_back (art);	return id;}creID CModHandler::addNewCreature (CCreature * cre){	int id = creatures.size();	creatures.push_back (cre);	return id;}void CModHandler::loadConfigFromFile (std::string name){	const JsonNode config(ResourceID("config/" + name + ".json"));	auto hardcodedFeatures = config["hardcodedFeatures"];	settings.CREEP_SIZE = hardcodedFeatures["CREEP_SIZE"].Float();	settings.WEEKLY_GROWTH = hardcodedFeatures["WEEKLY_GROWTH_PERCENT"].Float();	settings.NEUTRAL_STACK_EXP = hardcodedFeatures["NEUTRAL_STACK_EXP_DAILY"].Float();	settings.DWELLINGS_ACCUMULATE_CREATURES = hardcodedFeatures["DWELLINGS_ACCUMULATE_CREATURES"].Bool();	settings.ALL_CREATURES_GET_DOUBLE_MONTHS = hardcodedFeatures["ALL_CREATURES_GET_DOUBLE_MONTHS"].Bool();}void CModHandler::saveConfigToFile (std::string name){	//JsonNode savedConf = config;	//JsonNode schema(ResourceID("config/defaultSettings.json"));	//savedConf.Struct().erase("session");	//savedConf.minimize(schema);	CResourceHandler::get()->createResource("config/" + name +".json");	std::ofstream file(CResourceHandler::get()->getResourceName(ResourceID("config/" + name +".json")), std::ofstream::trunc);	//file << savedConf;}void CModHandler::recreateHandlers(){	//TODO: consider some template magic to unify all handlers?	VLC->arth->artifacts.clear(); 	VLC->creh->creatures.clear(); //TODO: what about items from original game?	BOOST_FOREACH (auto mod, activeMods)	{		BOOST_FOREACH (auto art, allMods[mod].artifacts)		{			VLC->arth->artifacts.push_back (artifacts[art]);		}		BOOST_FOREACH (auto creature, allMods[mod].creatures)		{			VLC->creh->creatures.push_back (creatures[creature]);		}	}}CModHandler::~CModHandler(){}
 |