diff options
author | Meji <alvaro.megias@outlook.com> | 2024-05-19 21:37:24 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-19 21:37:24 +0200 |
commit | b46bba86664a1e875d5dc0513e70726e52cb824b (patch) | |
tree | 5f45b498b2f896643044155856e600b407ed2782 /src | |
parent | 5f6bc9ff5feb090a2ca8a7c0aea79ee14099b454 (diff) |
Core/DataStores: Sort ConditionalContentTuning container by OrderIndex (#29994)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DataStores/DB2Stores.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp index d0f2bbcb08f..b0d68c50d29 100644 --- a/src/server/game/DataStores/DB2Stores.cpp +++ b/src/server/game/DataStores/DB2Stores.cpp @@ -464,7 +464,7 @@ namespace std::unordered_map<uint32 /*chrCustomizationReqId*/, std::vector<std::pair<uint32 /*chrCustomizationOptionId*/, std::vector<uint32>>>> _chrCustomizationRequiredChoices; ChrSpecializationByIndexContainer _chrSpecializationsByIndex; std::unordered_map<int32, ConditionalChrModelEntry const*> _conditionalChrModelsByChrModelId; - std::unordered_multimap<uint32, ConditionalContentTuningEntry const*> _conditionalContentTuning; + std::unordered_map<uint32 /*contentTuningId*/, std::vector<ConditionalContentTuningEntry const*>> _conditionalContentTuning; std::unordered_set<std::pair<uint32, int32>> _contentTuningLabels; std::unordered_multimap<uint32, CurrencyContainerEntry const*> _currencyContainers; CurvePointsContainer _curvePoints; @@ -1220,8 +1220,13 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul for (ConditionalChrModelEntry const* conditionalChrModel : sConditionalChrModelStore) _conditionalChrModelsByChrModelId[conditionalChrModel->ChrModelID] = conditionalChrModel; - for (ConditionalContentTuningEntry const* conditionalContentTuning : sConditionalContentTuningStore) - _conditionalContentTuning.emplace(conditionalContentTuning->ParentContentTuningID, conditionalContentTuning); + { + for (ConditionalContentTuningEntry const* conditionalContentTuning : sConditionalContentTuningStore) + _conditionalContentTuning[conditionalContentTuning->ParentContentTuningID].push_back(conditionalContentTuning); + + for (auto& [parentContentTuningId, conditionalContentTunings] : _conditionalContentTuning) + std::ranges::sort(conditionalContentTunings, std::greater(), &ConditionalContentTuningEntry::OrderIndex); + } for (ContentTuningXExpectedEntry const* contentTuningXExpectedStat : sContentTuningXExpectedStore) if (sExpectedStatModStore.LookupEntry(contentTuningXExpectedStat->ExpectedStatModID)) @@ -2112,9 +2117,10 @@ ChrSpecializationEntry const* DB2Manager::GetDefaultChrSpecializationForClass(ui uint32 DB2Manager::GetRedirectedContentTuningId(uint32 contentTuningId, uint32 redirectFlag) const { - for (auto [_, conditionalContentTuning] : Trinity::Containers::MapEqualRange(_conditionalContentTuning, contentTuningId)) - if (conditionalContentTuning->RedirectFlag & redirectFlag) - return conditionalContentTuning->RedirectContentTuningID; + if (std::vector<ConditionalContentTuningEntry const*> const* conditionalContentTunings = Trinity::Containers::MapGetValuePtr(_conditionalContentTuning, contentTuningId)) + for (ConditionalContentTuningEntry const* conditionalContentTuning : *conditionalContentTunings) + if (conditionalContentTuning->RedirectFlag & redirectFlag) + return conditionalContentTuning->RedirectContentTuningID; return contentTuningId; } |