optimized gem selector choices and pool they use
This commit is contained in:
@@ -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],
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user