From b46bba86664a1e875d5dc0513e70726e52cb824b Mon Sep 17 00:00:00 2001 From: Meji Date: Sun, 19 May 2024 21:37:24 +0200 Subject: Core/DataStores: Sort ConditionalContentTuning container by OrderIndex (#29994) --- src/server/game/DataStores/DB2Stores.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src') 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>>> _chrCustomizationRequiredChoices; ChrSpecializationByIndexContainer _chrSpecializationsByIndex; std::unordered_map _conditionalChrModelsByChrModelId; - std::unordered_multimap _conditionalContentTuning; + std::unordered_map> _conditionalContentTuning; std::unordered_set> _contentTuningLabels; std::unordered_multimap _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 const* conditionalContentTunings = Trinity::Containers::MapGetValuePtr(_conditionalContentTuning, contentTuningId)) + for (ConditionalContentTuningEntry const* conditionalContentTuning : *conditionalContentTunings) + if (conditionalContentTuning->RedirectFlag & redirectFlag) + return conditionalContentTuning->RedirectContentTuningID; return contentTuningId; } -- cgit v1.2.3