local name, addon = ... |
|
local defaults,options,db,data,guid = { |
local defaults,dmginc,options,db,data,guid,sp = { |
},{} |
local prefix = {"SWING","RANGE","SPELL","SPELL_PERIODIC","SPELL_BUILDING","ENVIRONMENTAL"} |
local suffix = {"DAMAGE","HEAL"} |
local subevents = {} |
for _,a in pairs(prefix) do |
for _,b in pairs(suffix) do |
subevents[#subevents + 1] = a .. "_" .. b |
end |
end |
local f = CreateFrame("Frame",name,UIParent) |
f:SetWidth(100) |
f:SetHeight(100) |
f:SetPoint("CENTER") |
f:RegisterEvent("PLAYER_REGEN_DISABLED") |
|
local bars = { |
['SWING'] = { |
['amount'] = CreateFrame("StatusBar",nil,f), |
['resisted'] = CreateFrame("StatusBar",nil,f), |
['blocked'] = CreateFrame("StatusBar",nil,f), |
['absorbed'] = CreateFrame("StatusBar",nil,f), |
}, |
['SPELL'] = { |
['amount'] = CreateFrame("StatusBar",nil,f), |
['resisted'] = CreateFrame("StatusBar",nil,f), |
['blocked'] = CreateFrame("StatusBar",nil,f), |
['absorbed'] = CreateFrame("StatusBar",nil,f), |
} |
} |
|
local texts = { |
['SWING'] = {}, |
['SPELL'] = {}, |
} |
local last = f |
local function valchange(self) |
local a = tonumber(self:GetValue())==0 and self:Hide() or self:Show() |
end |
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(200) |
b:SetHeight(10) |
b:SetScript("OnValueChanged", valchange) |
b:SetPoint("BOTTOMLEFT",last,"TOPLEFT") |
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 |
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) |
local function updateBars() |
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 0) |
texts[k][a]:SetText(a .. " " .. (dmginc[k] and dmginc[k][a] or 0)) |
end |
end |
end |
local function resetBars() |
for k,v in pairs(dmginc) do |
for a,b in pairs(v) do |
dmginc[k][a] = 0 |
end |
end |
updateBars() |
end |
f:SetScript("OnEvent", function(self, event) |
resetBars() |
end) |
local function getPref(pref) |
return db[pref[#pref]] |
end |