diff --git a/lib/rmg/CRmgTemplate.cpp b/lib/rmg/CRmgTemplate.cpp index 0890870fe..8089f71c7 100644 --- a/lib/rmg/CRmgTemplate.cpp +++ b/lib/rmg/CRmgTemplate.cpp @@ -243,9 +243,13 @@ std::map ZoneOptions::getMinesInfo() const void ZoneOptions::setTreasureInfo(const std::vector & value) { treasureInfo = value; + recalculateMaxTreasureValue(); +} +void ZoneOptions::recalculateMaxTreasureValue() +{ maxTreasureValue = 0; - for (const auto& ti : value) + for (const auto& ti : treasureInfo) { vstd::amax(maxTreasureValue, ti.max); } @@ -401,8 +405,7 @@ void ZoneOptions::serializeJson(JsonSerializeFormat & handler) treasureData.serializeStruct(treasureInfo); if (!handler.saving) { - //Just in order to calculate maxTreasureValue - setTreasureInfo(treasureInfo); + recalculateMaxTreasureValue(); } } diff --git a/lib/rmg/CRmgTemplate.h b/lib/rmg/CRmgTemplate.h index 855a47ab2..951887844 100644 --- a/lib/rmg/CRmgTemplate.h +++ b/lib/rmg/CRmgTemplate.h @@ -145,6 +145,7 @@ public: void addTreasureInfo(const CTreasureInfo & value); const std::vector & getTreasureInfo() const; ui32 getMaxTreasureValue() const; + void recalculateMaxTreasureValue(); TRmgTemplateZoneId getMinesLikeZone() const; TRmgTemplateZoneId getTerrainTypeLikeZone() const;