更新配置相关显示等
This commit is contained in:
@@ -935,36 +935,86 @@ function SFrames.TalentTree:ApplyVirtualPoints()
|
||||
return
|
||||
end
|
||||
|
||||
if not self.applyQueue then self.applyQueue = {} end
|
||||
self.applyQueue = {}
|
||||
|
||||
for tb = 1, GetNumTalentTabs() do
|
||||
local treeTalents = {}
|
||||
for idx = 1, GetNumTalents(tb) do
|
||||
local name, icon, tier, column, realRank = GetTalentInfo(tb, idx)
|
||||
local virtRank = self:GetVirtualRank(tb, idx)
|
||||
local diff = virtRank - realRank
|
||||
if diff > 0 then
|
||||
for i = 1, diff do
|
||||
table.insert(self.applyQueue, {tab = tb, index = idx})
|
||||
table.insert(treeTalents, {tab = tb, index = idx, tier = tier or 1})
|
||||
end
|
||||
end
|
||||
end
|
||||
table.sort(treeTalents, function(a, b) return a.tier < b.tier end)
|
||||
for _, entry in ipairs(treeTalents) do
|
||||
table.insert(self.applyQueue, entry)
|
||||
end
|
||||
end
|
||||
|
||||
if table.getn(self.applyQueue) > 0 then
|
||||
self.frame:SetScript("OnUpdate", function()
|
||||
if table.getn(SFrames.TalentTree.applyQueue) > 0 then
|
||||
local t = table.remove(SFrames.TalentTree.applyQueue, 1)
|
||||
LearnTalent(t.tab, t.index)
|
||||
else
|
||||
this:SetScript("OnUpdate", nil)
|
||||
SFrames.TalentTree.simMode = false
|
||||
SFrames.TalentTree:UpdateSimModeLabel()
|
||||
end
|
||||
end)
|
||||
else
|
||||
if table.getn(self.applyQueue) == 0 then
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|c" .. GetHex() .. "Nanami:|r 没有新的天赋点数需要应用。")
|
||||
return
|
||||
end
|
||||
|
||||
local total = table.getn(self.applyQueue)
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|c" .. GetHex() .. "Nanami:|r 开始应用 " .. total .. " 个天赋点...")
|
||||
|
||||
if not self.applyEventFrame then
|
||||
self.applyEventFrame = CreateFrame("Frame", "NanamiTalentApplyFrame")
|
||||
end
|
||||
self.applyEventFrame:UnregisterAllEvents()
|
||||
|
||||
self.applyStallTimer = 0
|
||||
self.applyWaiting = false
|
||||
|
||||
local function FinishApply()
|
||||
self.applyEventFrame:UnregisterAllEvents()
|
||||
self.applyEventFrame:SetScript("OnUpdate", nil)
|
||||
self.applyQueue = {}
|
||||
self.applyWaiting = false
|
||||
self.simMode = false
|
||||
self:UpdateSimModeLabel()
|
||||
DEFAULT_CHAT_FRAME:AddMessage("|c" .. GetHex() .. "Nanami:|r 天赋应用完成。")
|
||||
end
|
||||
|
||||
local function TryNextTalent()
|
||||
if table.getn(self.applyQueue) == 0 then
|
||||
FinishApply()
|
||||
return
|
||||
end
|
||||
local t = table.remove(self.applyQueue, 1)
|
||||
LearnTalent(t.tab, t.index)
|
||||
self.applyWaiting = true
|
||||
self.applyStallTimer = 0
|
||||
end
|
||||
|
||||
self.applyEventFrame:RegisterEvent("CHARACTER_POINTS_CHANGED")
|
||||
self.applyEventFrame:SetScript("OnEvent", function()
|
||||
if not SFrames.TalentTree.applyWaiting then return end
|
||||
SFrames.TalentTree.applyWaiting = false
|
||||
SFrames.TalentTree.applyStallTimer = 0
|
||||
TryNextTalent()
|
||||
end)
|
||||
|
||||
self.applyEventFrame:SetScript("OnUpdate", function()
|
||||
if not SFrames.TalentTree.applyWaiting then return end
|
||||
SFrames.TalentTree.applyStallTimer = (SFrames.TalentTree.applyStallTimer or 0) + (arg1 or 0)
|
||||
if SFrames.TalentTree.applyStallTimer >= 2.0 then
|
||||
SFrames.TalentTree.applyStallTimer = 0
|
||||
SFrames.TalentTree.applyWaiting = false
|
||||
if table.getn(SFrames.TalentTree.applyQueue) > 0 then
|
||||
TryNextTalent()
|
||||
else
|
||||
FinishApply()
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
TryNextTalent()
|
||||
end
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user