You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
3.5 KiB
95 lines
3.5 KiB
local _, Cell = ...
|
|
local L = Cell.L
|
|
local F = Cell.funcs
|
|
local I = Cell.iFuncs
|
|
|
|
-------------------------------------------------
|
|
-- CreateAoEHealing -- not support for npc
|
|
-------------------------------------------------
|
|
local CombatLogGetCurrentEventInfo = CombatLogGetCurrentEventInfo
|
|
|
|
local function Display(b)
|
|
b.indicators.aoeHealing:Display()
|
|
end
|
|
|
|
local playerSummoned = {}
|
|
local eventFrame = CreateFrame("Frame")
|
|
eventFrame:SetScript("OnEvent", function()
|
|
local timestamp, subevent, _, sourceGUID, sourceName, sourceFlags, sourceRaidFlags, destGUID, destName, destFlags, destRaidFlags, spellId, spellName = CombatLogGetCurrentEventInfo()
|
|
-- if subevent == "SPELL_SUMMON" then print(subevent, sourceName, sourceGUID, destName, destGUID, spellName) end
|
|
if subevent == "SPELL_SUMMON" then
|
|
-- print(sourceGUID == Cell.vars.playerGUID, destGUID, spellName, spellId)
|
|
if sourceGUID == Cell.vars.playerGUID and destGUID and (I.IsAoEHealing(spellName) or I.IsAoEHealing(spellId)) then
|
|
local duration = I.GetSummonDuration(spellName)
|
|
if duration then
|
|
playerSummoned[destGUID] = GetTime() + duration -- expirationTime
|
|
C_Timer.After(duration, function()
|
|
playerSummoned[destGUID] = nil
|
|
end)
|
|
end
|
|
end
|
|
-- texplore(playerSummoned)
|
|
end
|
|
-- if (subevent == "SPELL_HEAL" or subevent == "SPELL_PERIODIC_HEAL") then print(subevent, sourceName, sourceGUID, destName, spellId, spellName) end
|
|
if subevent == "SPELL_HEAL" or subevent == "SPELL_PERIODIC_HEAL" then
|
|
if destGUID then
|
|
-- print(sourceGUID, playerSummoned[sourceGUID])
|
|
if (sourceGUID == Cell.vars.playerGUID and (I.IsAoEHealing(spellName) or I.IsAoEHealing(spellId))) or playerSummoned[sourceGUID] then
|
|
F:HandleUnitButton("guid", destGUID, Display)
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
function I.CreateAoEHealing(parent)
|
|
local aoeHealing = CreateFrame("Frame", parent:GetName().."AoEHealing", parent.widgets.indicatorFrame)
|
|
parent.indicators.aoeHealing = aoeHealing
|
|
aoeHealing:SetPoint("TOPLEFT", parent.widgets.healthBar)
|
|
aoeHealing:SetPoint("TOPRIGHT", parent.widgets.healthBar)
|
|
aoeHealing:Hide()
|
|
|
|
aoeHealing.tex = aoeHealing:CreateTexture(nil, "ARTWORK")
|
|
aoeHealing.tex:SetAllPoints(aoeHealing)
|
|
aoeHealing.tex:SetTexture(Cell.vars.whiteTexture)
|
|
|
|
local ag = aoeHealing:CreateAnimationGroup()
|
|
local a1 = ag:CreateAnimation("Alpha")
|
|
a1:SetFromAlpha(0)
|
|
a1:SetToAlpha(1)
|
|
a1:SetDuration(0.5)
|
|
a1:SetOrder(1)
|
|
a1:SetSmoothing("OUT")
|
|
local a2 = ag:CreateAnimation("Alpha")
|
|
a2:SetFromAlpha(1)
|
|
a2:SetToAlpha(0)
|
|
a2:SetDuration(0.5)
|
|
a2:SetOrder(2)
|
|
a2:SetSmoothing("IN")
|
|
|
|
ag:SetScript("OnPlay", function()
|
|
aoeHealing:Show()
|
|
end)
|
|
ag:SetScript("OnFinished", function()
|
|
aoeHealing:Hide()
|
|
end)
|
|
|
|
function aoeHealing:SetColor(r, g, b)
|
|
aoeHealing.tex:SetGradient("VERTICAL", CreateColor(r, g, b, 0), CreateColor(r, g, b, 0.77))
|
|
end
|
|
|
|
function aoeHealing:Display()
|
|
-- if ag:IsPlaying() then
|
|
-- ag:Restart()
|
|
-- else
|
|
ag:Play()
|
|
-- end
|
|
end
|
|
end
|
|
|
|
function I.EnableAoEHealing(enabled)
|
|
if enabled then
|
|
eventFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
|
|
else
|
|
eventFrame:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
|
|
end
|
|
end
|