1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-10-31 00:07:39 +02:00

- some groundwork for wog optionality

- moved wog artifacts to wog mod
This commit is contained in:
Ivan Savenko
2013-04-25 21:50:55 +00:00
parent 23f7be2a54
commit 8297102350
10 changed files with 365 additions and 322 deletions

View File

@@ -182,10 +182,10 @@ void CIdentifierStorage::finalize()
assert(errorsFound == false);
}
CContentHandler::ContentTypeHandler::ContentTypeHandler(IHandlerBase * handler, size_t size, std::string objectName):
CContentHandler::ContentTypeHandler::ContentTypeHandler(IHandlerBase * handler, std::string objectName):
handler(handler),
objectName(objectName),
originalData(handler->loadLegacyData(size))
originalData(handler->loadLegacyData(VLC->modh->settings.data["textData"][objectName].Float()))
{
BOOST_FOREACH(auto & node, originalData)
{
@@ -262,11 +262,11 @@ void CContentHandler::ContentTypeHandler::loadMod(std::string modName)
CContentHandler::CContentHandler()
{
handlers.insert(std::make_pair("heroClasses", ContentTypeHandler(&VLC->heroh->classes, GameConstants::F_NUMBER * 2, "heroClass")));
handlers.insert(std::make_pair("artifacts", ContentTypeHandler(VLC->arth, GameConstants::ARTIFACTS_QUANTITY, "artifact")));
handlers.insert(std::make_pair("creatures", ContentTypeHandler(VLC->creh, GameConstants::CREATURES_COUNT, "creature")));
handlers.insert(std::make_pair("factions", ContentTypeHandler(VLC->townh, GameConstants::F_NUMBER, "faction")));
handlers.insert(std::make_pair("heroes", ContentTypeHandler(VLC->heroh, GameConstants::HEROES_QUANTITY, "hero")));
handlers.insert(std::make_pair("heroClasses", ContentTypeHandler(&VLC->heroh->classes, "heroClass")));
handlers.insert(std::make_pair("artifacts", ContentTypeHandler(VLC->arth, "artifact")));
handlers.insert(std::make_pair("creatures", ContentTypeHandler(VLC->creh, "creature")));
handlers.insert(std::make_pair("factions", ContentTypeHandler(VLC->townh, "faction")));
handlers.insert(std::make_pair("heroes", ContentTypeHandler(VLC->heroh, "hero")));
//TODO: spells, bonuses, something else?
}
@@ -297,13 +297,12 @@ CModHandler::CModHandler()
for(int i=0; i<GameConstants::PRIMARY_SKILLS; ++i)
identifiers.registerObject("core", "primSkill", PrimarySkill::names[i], i);
loadConfigFromFile ("defaultMods");
}
void CModHandler::loadConfigFromFile (std::string name)
{
const JsonNode config(ResourceID("config/" + name + ".json"));
const JsonNode & hardcodedFeatures = config["hardcodedFeatures"];
settings.data = JsonUtils::assembleFromFiles("config/" + name);
const JsonNode & hardcodedFeatures = settings.data["hardcodedFeatures"];
settings.CREEP_SIZE = hardcodedFeatures["CREEP_SIZE"].Float();
settings.WEEKLY_GROWTH = hardcodedFeatures["WEEKLY_GROWTH_PERCENT"].Float();
@@ -312,11 +311,14 @@ void CModHandler::loadConfigFromFile (std::string name)
settings.DWELLINGS_ACCUMULATE_CREATURES = hardcodedFeatures["DWELLINGS_ACCUMULATE_CREATURES"].Bool();
settings.ALL_CREATURES_GET_DOUBLE_MONTHS = hardcodedFeatures["ALL_CREATURES_GET_DOUBLE_MONTHS"].Bool();
const JsonNode & gameModules = config["modules"];
const JsonNode & gameModules = settings.data["modules"];
modules.STACK_EXP = gameModules["STACK_EXPERIENCE"].Bool();
modules.STACK_ARTIFACT = gameModules["STACK_ARTIFACTS"].Bool();
modules.COMMANDERS = gameModules["COMMANDERS"].Bool();
modules.MITHRIL = gameModules["MITHRIL"].Bool();
logGlobal->errorStream() << "Selected configuration: ";
logGlobal->errorStream() << settings.data;
}
// currentList is passed by value to get current list of depending mods
@@ -514,6 +516,8 @@ void CModHandler::handleData(Handler handler, const JsonNode & source, std::stri
void CModHandler::loadGameContent()
{
loadConfigFromFile("defaultMods.json");
CStopWatch timer, totalTime;
CContentHandler content;