optimized gem selector choices and pool they use

This commit is contained in:
Nostrademous
2021-03-26 00:37:42 -04:00
parent 003af86cfe
commit 769ae5b3b8
3 changed files with 25 additions and 9 deletions

View File

@@ -49,13 +49,20 @@ end)
function GemSelectClass:PopulateGemList()
wipeTable(self.gems)
local showAll = self.skillsTab.showSupportGemTypes == "ALL"
local showAwakened = self.skillsTab.showSupportGemTypes == "AWAKENED"
local showNormal = self.skillsTab.showSupportGemTypes == "NORMAL"
for gemId, gemData in pairs(self.skillsTab.build.data.gems) do
if self.skillsTab.showAltQualityGems then
for _, altQual in ipairs(self.skillsTab:getGemAltQualityList(gemData)) do
self.gems[altQual.type .. ":" .. gemId] = gemData
end
else
if (showAwakened or showAll) and gemData.grantedEffect.plusVersionOf then
self.gems["Default:" .. gemId] = gemData
elseif (showNormal or showAll) then
if self.skillsTab.showAltQualityGems and self.skillsTab.defaultGemQuality > 0 then
for _, altQual in ipairs(self.skillsTab:getGemAltQualityList(gemData)) do
self.gems[altQual.type .. ":" .. gemId] = gemData
end
else
self.gems["Default:" .. gemId] = gemData
end
end
end
end
@@ -140,16 +147,18 @@ function GemSelectClass:UpdateSortCache()
if sortCache and sortCache.socketGroup == self.skillsTab.displayGroup and sortCache.gemInstance == self.skillsTab.displayGroup.gemList[self.index] and
sortCache.outputRevision == self.skillsTab.build.outputRevision and sortCache.defaultLevel == self.skillsTab.defaultGemLevel
and sortCache.defaultQuality == self.skillsTab.defaultGemQuality and sortCache.sortType == self.skillsTab.sortGemsByDPSField
and sortCache.considerAlternates == self.skillsTab.showAltQualityGems then
and sortCache.considerAlternates == self.skillsTab.showAltQualityGems and sortCache.considerAwakened == self.skillsTab.showSupportGemTypes then
return
end
if sortCache and sortCache.considerAlternates ~= self.skillsTab.showAltQualityGems then
if sortCache and (sortCache.considerAlternates ~= self.skillsTab.showAltQualityGems or sortCache.considerGemType ~= self.skillsTab.showSupportGemTypes
or sortCache.defaultQuality ~= self.skillsTab.defaultGemQuality) then
self:PopulateGemList()
end
--Initialize a new sort cache
sortCache = {
considerGemType = self.skillsTab.showSupportGemTypes,
considerAlternates = self.skillsTab.showAltQualityGems,
socketGroup = self.skillsTab.displayGroup,
gemInstance = self.skillsTab.displayGroup.gemList[self.index],

View File

@@ -182,6 +182,10 @@ function wipeEnv(env, accelerate)
wipeTable(env.enemyDB.conditions)
wipeTable(env.enemyDB.multipliers)
if accelerate.everything then
return
end
-- Passive tree node allocations
-- Also in a further pass tracks Legion influenced mods
if not accelerate.nodeAlloc then
@@ -244,8 +248,6 @@ end
-- 5. Builds a list of active skills and their supports (calcs.createActiveSkill)
-- 6. Builds modifier lists for all active skills (calcs.buildActiveSkillModList)
function calcs.initEnv(build, mode, override, specEnv)
override = override or { }
-- accelerator variables
local db1 = specEnv and specEnv.db1 or nil
local db2 = specEnv and specEnv.db2 or nil
@@ -253,6 +255,7 @@ function calcs.initEnv(build, mode, override, specEnv)
local accelerate = specEnv and specEnv.accelerate or { }
-- environment variables
override = override or { }
local modDB = nil
local enemyDB = nil
local classStats = nil
@@ -308,6 +311,9 @@ function calcs.initEnv(build, mode, override, specEnv)
-- skill-related
env.player.activeSkillList = { }
env.auxSkillList = { }
elseif accelerate.everything then
env.modDB.parent, env.enemyDB.parent = specCopy(env)
wipeEnv(env, accelerate)
else
wipeEnv(env, accelerate)
modDB = env.modDB

View File

@@ -246,6 +246,7 @@ function calcs.calcFullDPS(build, mode, override, specEnv)
requirementsItems = true,
requirementsGems = true,
skills = true,
everything = true,
}
fullEnv, _, _ = calcs.initEnv(build, mode, override or {}, { db1 = db1, db2 = db2, env = fullEnv, accelerate = accelerationTbl })
end