feat(CORE/Instance): access_requirement db refactor and improved output (#3696)

This commit is contained in:
Petric
2021-03-29 17:24:52 +01:00
committed by GitHub
parent c0aa1b88e8
commit f11d3a5402
11 changed files with 807 additions and 138 deletions

View File

@@ -31,7 +31,7 @@
#include <string>
class Item;
struct AccessRequirement;
struct DungeonProgressionRequirements;
struct PlayerClassInfo;
struct PlayerClassLevelInfo;
struct PlayerInfo;
@@ -704,7 +704,7 @@ public:
typedef std::unordered_map<uint32, uint32> AreaTriggerScriptContainer;
typedef std::unordered_map<uint32, AccessRequirement*> AccessRequirementContainer;
typedef std::unordered_map<uint32, std::unordered_map<uint8, DungeonProgressionRequirements*>> DungeonProgressionRequirementsContainer;
typedef std::unordered_map<uint32, RepRewardRate > RepRewardRateContainer;
typedef std::unordered_map<uint32, ReputationOnKillEntry> RepOnKillContainer;
@@ -832,11 +832,18 @@ public:
return nullptr;
}
[[nodiscard]] AccessRequirement const* GetAccessRequirement(uint32 mapid, Difficulty difficulty) const
[[nodiscard]] DungeonProgressionRequirements const* GetAccessRequirement(uint32 mapid, Difficulty difficulty) const
{
AccessRequirementContainer::const_iterator itr = _accessRequirementStore.find(MAKE_PAIR32(mapid, difficulty));
DungeonProgressionRequirementsContainer::const_iterator itr = _accessRequirementStore.find(mapid);
if (itr != _accessRequirementStore.end())
return itr->second;
{
std::unordered_map<uint8, DungeonProgressionRequirements*> difficultiesProgressionRequirements = itr->second;
auto difficultiesItr = difficultiesProgressionRequirements.find(difficulty);
if (difficultiesItr != difficultiesProgressionRequirements.end())
{
return difficultiesItr->second;
}
}
return nullptr;
}
@@ -1386,7 +1393,7 @@ private:
AreaTriggerContainer _areaTriggerStore;
AreaTriggerTeleportContainer _areaTriggerTeleportStore;
AreaTriggerScriptContainer _areaTriggerScriptStore;
AccessRequirementContainer _accessRequirementStore;
DungeonProgressionRequirementsContainer _accessRequirementStore;
DungeonEncounterContainer _dungeonEncounterStore;
RepRewardRateContainer _repRewardRateStore;