void CArtHandler::loadObject(std::string scope, std::string name, const JsonNode & data, size_t index) { auto object = loadFromJson(data, normalizeIdentifier(scope, "core", name)); object->id = ArtifactID(index); object->iconIndex = object->id; assert(artifacts[index] == nullptr); // ensure that this id was not loaded before artifacts[index] = object; VLC->modh->identifiers.requestIdentifier(scope, "object", "artifact", [=](si32 index) { JsonNode conf; conf.setMeta(scope); VLC->objtypeh->loadSubObject(object->identifier, conf, Obj::ARTIFACT, object->id.num); if (!object->advMapDef.empty()) { JsonNode templ; templ.setMeta(scope); templ["animation"].String() = object->advMapDef; // add new template. // Necessary for objects added via mods that don't have any templates in H3 VLC->objtypeh->getHandlerFor(Obj::ARTIFACT, object->id)->addTemplate(templ); } // object does not have any templates - this is not usable object (e.g. pseudo-art like lock) if (VLC->objtypeh->getHandlerFor(Obj::ARTIFACT, object->id)->getTemplates().empty()) VLC->objtypeh->removeSubObject(Obj::ARTIFACT, object->id); }); registerObject(scope, "artifact", name, object->id); }
void CObjectClassesHandler::loadObject(std::string scope, std::string name, const JsonNode & data, size_t index) { auto object = loadFromJson(data, normalizeIdentifier(scope, "core", name)); assert(objects[index] == nullptr); // ensure that this id was not loaded before objects[index] = object; VLC->modh->identifiers.registerObject(scope, "object", name, object->id); }
void CHeroHandler::loadObject(std::string scope, std::string name, const JsonNode & data) { auto object = loadFromJson(data, normalizeIdentifier(scope, "core", name)); object->ID = HeroTypeID(heroes.size()); object->imageIndex = heroes.size() + 30; // 2 special frames + some extra portraits heroes.push_back(object); VLC->modh->identifiers.registerObject(scope, "hero", name, object->ID.getNum()); }
void CHeroHandler::loadObject(std::string scope, std::string name, const JsonNode & data, size_t index) { auto object = loadFromJson(data, normalizeIdentifier(scope, "core", name)); object->ID = HeroTypeID(index); object->imageIndex = index; assert(heroes[index] == nullptr); // ensure that this id was not loaded before heroes[index] = object; VLC->modh->identifiers.registerObject(scope, "hero", name, object->ID.getNum()); }
void CHeroClassHandler::loadObject(std::string scope, std::string name, const JsonNode & data) { auto object = loadFromJson(data, normalizeIdentifier(scope, "core", name)); object->id = heroClasses.size(); heroClasses.push_back(object); VLC->modh->identifiers.requestIdentifier(scope, "object", "hero", [=](si32 index) { JsonNode classConf = data["mapObject"]; classConf["heroClass"].String() = name; classConf.setMeta(scope); VLC->objtypeh->loadSubObject(name, classConf, index, object->id); }); VLC->modh->identifiers.registerObject(scope, "heroClass", name, object->id); }
void CHeroClassHandler::loadObject(std::string scope, std::string name, const JsonNode & data, size_t index) { auto object = loadFromJson(data, normalizeIdentifier(scope, "core", name)); object->id = index; assert(heroClasses[index] == nullptr); // ensure that this id was not loaded before heroClasses[index] = object; VLC->modh->identifiers.requestIdentifier(scope, "object", "hero", [=](si32 index) { JsonNode classConf = data["mapObject"]; classConf["heroClass"].String() = name; classConf.setMeta(scope); VLC->objtypeh->loadSubObject(name, classConf, index, object->id); }); VLC->modh->identifiers.registerObject(scope, "heroClass", name, object->id); }
void CObjectClassesHandler::loadObject(std::string scope, std::string name, const JsonNode & data) { auto object = loadFromJson(data, normalizeIdentifier(scope, "core", name)); objects[object->id] = object; VLC->modh->identifiers.registerObject(scope, "object", name, object->id); }