nordsoft 2 年之前
父節點
當前提交
b7568a160c
共有 3 個文件被更改,包括 28 次插入3 次删除
  1. 21 0
      lib/constants/EntityIdentifiers.cpp
  2. 4 0
      lib/constants/EntityIdentifiers.h
  3. 3 3
      lib/rewardable/Limiter.cpp

+ 21 - 0
lib/constants/EntityIdentifiers.cpp

@@ -19,6 +19,8 @@
 #include <vcmi/FactionService.h>
 #include <vcmi/HeroType.h>
 #include <vcmi/HeroTypeService.h>
+#include <vcmi/HeroClass.h>
+#include <vcmi/HeroClassService.h>
 
 #include <vcmi/spells/Spell.h>
 #include <vcmi/spells/Service.h>
@@ -103,6 +105,25 @@ namespace GameConstants
 #endif
 }
 
+si32 HeroClassID::decode(const std::string & identifier)
+{
+	auto rawId = VLC->identifiers()->getIdentifier(ModScope::scopeMap(), "heroClass", identifier);
+	if(rawId)
+		return rawId.value();
+	else
+		return -1;
+}
+
+std::string HeroClassID::encode(const si32 index)
+{
+	return VLC->heroClasses()->getByIndex(index)->getJsonKey();
+}
+
+std::string HeroClassID::entityType()
+{
+	return "heroClass";
+}
+
 si32 HeroTypeID::decode(const std::string & identifier)
 {
 	auto rawId = VLC->identifiers()->getIdentifier(ModScope::scopeMap(), "hero", identifier);

+ 4 - 0
lib/constants/EntityIdentifiers.h

@@ -223,6 +223,10 @@ class HeroClassID : public Identifier<HeroClassID>
 {
 public:
 	using Identifier<HeroClassID>::Identifier;
+	///json serialization helpers
+	DLL_LINKAGE static si32 decode(const std::string & identifier);
+	DLL_LINKAGE static std::string encode(const si32 index);
+	static std::string entityType();
 };
 
 class HeroTypeID : public Identifier<HeroTypeID>

+ 3 - 3
lib/rewardable/Limiter.cpp

@@ -154,9 +154,9 @@ void Rewardable::Limiter::serializeJson(JsonSerializeFormat & handler)
 	handler.serializeInt("manaPercentage", manaPercentage);
 	handler.serializeInt("heroExperience", heroExperience);
 	handler.serializeInt("heroLevel", heroLevel);
-	handler.serializeIdArray("hero", heroes);
-	handler.serializeIdArray("heroClass", heroClasses);
-	handler.serializeIdArray("color", players);
+	handler.serializeIdArray("heroes", heroes);
+	handler.serializeIdArray("heroClasses", heroClasses);
+	handler.serializeIdArray("colors", players);
 	handler.serializeInt("manaPoints", manaPoints);
 	handler.serializeIdArray("artifacts", artifacts);
 	handler.enterArray("creatures").serializeStruct(creatures);