/* * MapIdentifiersH3M.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 "../GameConstants.h" #include "../filesystem/ResourcePath.h" VCMI_LIB_NAMESPACE_BEGIN class JsonNode; class ObjectTemplate; struct ObjectTypeIdentifier { Obj ID; int32_t subID; bool operator < (const ObjectTypeIdentifier & other) const { if (ID != other.ID) return ID < other.ID; return subID < other.subID; } }; class MapIdentifiersH3M { std::map mappingBuilding; std::map> mappingFactionBuilding; std::map mappingFaction; std::map mappingCreature; std::map mappingHeroType; std::map mappingHeroPortrait; std::map mappingHeroClass; std::map mappingTerrain; std::map mappingArtifact; std::map mappingSecondarySkill; std::map mappingObjectTemplate; std::map mappingObjectIndex; template void loadMapping(std::map & result, const JsonNode & mapping, const std::string & identifierName); public: void loadMapping(const JsonNode & mapping); void remapTemplate(ObjectTemplate & objectTemplate); BuildingID remapBuilding(std::optional owner, BuildingID input) const; HeroTypeID remapPortrait(HeroTypeID input) const; FactionID remap(FactionID input) const; CreatureID remap(CreatureID input) const; HeroTypeID remap(HeroTypeID input) const; HeroClassID remap(HeroClassID input) const; TerrainId remap(TerrainId input) const; ArtifactID remap(ArtifactID input) const; SecondarySkill remap(SecondarySkill input) const; }; VCMI_LIB_NAMESPACE_END