DaVis/dmgbars.lua

77 lines
2.4 KiB
Lua

local name, addon = ...
local texts = {
['SWING'] = {},
['SPELL'] = {},
}
local bars = {
['SWING'] = {
['amount'] = CreateFrame("StatusBar",nil,addon.scrollframe),
-- ['resisted'] = CreateFrame("StatusBar",nil,addon.scrollframe),
['blocked'] = CreateFrame("StatusBar",nil,addon.scrollframe),
['absorbed'] = CreateFrame("StatusBar",nil,addon.scrollframe),
},
['SPELL'] = {
['amount'] = CreateFrame("StatusBar",nil,addon.scrollframe),
-- ['resisted'] = CreateFrame("StatusBar",nil,addon.scrollframe),
['blocked'] = CreateFrame("StatusBar",nil,addon.scrollframe),
['absorbed'] = CreateFrame("StatusBar",nil,addon.scrollframe),
}
}
local function valchange(self)
local a = tonumber(self:GetValue())==0 and self:Hide() or self:Show()
end
local c = 1
local last = addon.scrollframe
for k,v in pairs(bars) do
for a,b in pairs(v) do
b:SetStatusBarTexture("Interface\\TargetingFrame\\UI-StatusBar")
b:GetStatusBarTexture():SetHorizTile(false)
b:SetValue(100)
b:SetWidth(100)
b:SetHeight(10)
b:SetScript("OnValueChanged", valchange)
if(c==1) then
b:SetPoint("TOPLEFT",last,"TOPRIGHT",0,-80)
else
b:SetPoint("BOTTOMLEFT",last,"TOPLEFT",0,0)
end
texts[k][a] = b:CreateFontString(nil, "OVERLAY", "TextStatusBarText")
texts[k][a]:ClearAllPoints()
texts[k][a]:SetAllPoints(b)
texts[k][a]:SetText(a.." 0")
last = b
c = nil
end
end
bars['SWING']['amount']:SetStatusBarColor(1, 1, 0)
--bars['SWING']['resisted']:SetStatusBarColor(.2, .8, .3)
bars['SWING']['blocked']:SetStatusBarColor(.4, .8, .3)
bars['SWING']['absorbed']:SetStatusBarColor(.6, .8, .3)
bars['SPELL']['amount']:SetStatusBarColor(0, 0, 1)
--bars['SPELL']['resisted']:SetStatusBarColor(.2, .8, .3)
bars['SPELL']['blocked']:SetStatusBarColor(.4, .8, .3)
bars['SPELL']['absorbed']:SetStatusBarColor(.6, .8, .3)
function addon:updateBars(dmginc)
local total = 0
for k,v in pairs(dmginc) do
total = total + (dmginc[k] and dmginc[k]['amount'] or 0)
end
for k,v in pairs(bars) do
for a,b in pairs(v) do
local maxval = dmginc[k] and dmginc[k]['amount'] or 0
b:SetMinMaxValues(0, a=='amount' and total or maxval)
b:SetValue(dmginc[k] and dmginc[k][a] or 100)
texts[k][a]:SetText(a .. " " .. (dmginc[k] and dmginc[k][a] or 0))
end
end
end
function addon:resetBars(dmginc)
for k,v in pairs(dmginc) do
for a,b in pairs(v) do
dmginc[k][a] = 0
end
end
self:updateBars(dmginc)
end