add initial version of target castbar

This commit is contained in:
shagu
2016-08-07 23:58:28 +02:00
parent 815a210ad9
commit 479c4ed924
7 changed files with 261 additions and 53 deletions
+129 -3
View File
@@ -191,13 +191,139 @@ pfUI:RegisterModule("castbar", function ()
end
if pfUI.uf.target then
--[[ TODO
pfUI.castbar.target = CreateFrame("Frame",nil, pfUI.uf.target)
pfUI.castbar.target = CreateFrame("Frame")
pfUI.castbar.target:SetBackdrop(pfUI.backdrop)
pfUI.castbar.target:SetHeight(pfUI_config.global.font_size * 2)
pfUI.castbar.target:SetPoint("TOPRIGHT",pfUI.uf.target,"BOTTOMRIGHT",0,-1)
pfUI.castbar.target:SetPoint("TOPLEFT",pfUI.uf.target,"BOTTOMLEFT",0,-1)
-- statusbar
pfUI.castbar.target.bar = CreateFrame("StatusBar", nil, pfUI.castbar.target)
]]--
pfUI.castbar.target.bar:SetStatusBarTexture("Interface\\AddOns\\pfUI\\img\\bar")
pfUI.castbar.target.bar:ClearAllPoints()
pfUI.castbar.target.bar:SetPoint("TOPLEFT", pfUI.castbar.target, "TOPLEFT", 3, -3)
pfUI.castbar.target.bar:SetPoint("BOTTOMRIGHT", pfUI.castbar.target, "BOTTOMRIGHT", -3, 3)
pfUI.castbar.target.bar:SetMinMaxValues(0, 100)
pfUI.castbar.target.bar:SetValue(20)
pfUI.castbar.target.bar:SetStatusBarColor(.7,.7,.9,.8)
-- text left
pfUI.castbar.target.bar.left = pfUI.castbar.target.bar:CreateFontString("Status", "DIALOG", "GameFontNormal")
pfUI.castbar.target.bar.left:ClearAllPoints()
pfUI.castbar.target.bar.left:SetPoint("TOPLEFT", pfUI.castbar.target.bar, "TOPLEFT", 3, 0)
pfUI.castbar.target.bar.left:SetPoint("BOTTOMRIGHT", pfUI.castbar.target.bar, "BOTTOMRIGHT", -3, 0)
pfUI.castbar.target.bar.left:SetNonSpaceWrap(false)
pfUI.castbar.target.bar.left:SetFontObject(GameFontWhite)
pfUI.castbar.target.bar.left:SetTextColor(1,1,1,1)
pfUI.castbar.target.bar.left:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", pfUI_config.global.font_size, "OUTLINE")
pfUI.castbar.target.bar.left:SetText("left")
pfUI.castbar.target.bar.left:SetJustifyH("left")
-- text right
pfUI.castbar.target.bar.right = pfUI.castbar.target.bar:CreateFontString("Status", "DIALOG", "GameFontNormal")
pfUI.castbar.target.bar.right:ClearAllPoints()
pfUI.castbar.target.bar.right:SetPoint("TOPLEFT", pfUI.castbar.target.bar, "TOPLEFT", 3, 0)
pfUI.castbar.target.bar.right:SetPoint("BOTTOMRIGHT", pfUI.castbar.target.bar, "BOTTOMRIGHT", -3, 0)
pfUI.castbar.target.bar.right:SetNonSpaceWrap(false)
pfUI.castbar.target.bar.right:SetFontObject(GameFontWhite)
pfUI.castbar.target.bar.right:SetTextColor(1,1,1,1)
pfUI.castbar.target.bar.right:SetFont("Interface\\AddOns\\pfUI\\fonts\\arial.ttf", pfUI_config.global.font_size, "OUTLINE")
pfUI.castbar.target.bar.right:SetText("right")
pfUI.castbar.target.bar.right:SetJustifyH("right")
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_SELF_DAMAGE");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_FRIENDLYPLAYER_DAMAGE");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_FRIENDLYPLAYER_BUFF");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_BUFFS");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_DAMAGE");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PARTY_DAMAGE");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PARTY_BUFF");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_DAMAGE");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS");
pfUI.castbar.target:RegisterEvent("CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE");
pfUI.castbar.target:RegisterEvent("PLAYER_TARGET_CHANGED")
pfUI.castbar.target.casterDB = {}
pfUI.castbar.target:SetScript("OnEvent", function()
if (arg1 ~= nil) then
for mob, spell in string.gfind(arg1, pfLocaleSpellEvents["deDE"]['SPELL_CAST']) do
pfUI.castbar.target:Action(mob, spell, "casts")
return
end
for mob, spell in string.gfind(arg1, pfLocaleSpellEvents["deDE"]['SPELL_PERFORM']) do
pfUI.castbar.target:Action(mob, spell, "performs")
return
end
for mob, spell in string.gfind(arg1, pfLocaleSpellEvents["deDE"]['SPELL_GAINS']) do
pfUI.castbar.target:Action(mob, spell, "gains")
return
end
for mob, spell in string.gfind(arg1, pfLocaleSpellEvents["deDE"]['SPELL_AFFLICTED']) do
pfUI.castbar.target:Action(mob, spell, "afflicted")
return
end
for spell, mob in string.gfind(arg1, pfLocaleSpellEvents["deDE"]['SPELL_HIT']) do
pfUI.castbar.target:Action(mob, spell, "hit")
return
end
for spell, mob in string.gfind(arg1, pfLocaleSpellEvents["deDE"]['OTHER_SPELL_HIT']) do
pfUI.castbar.target:Action(mob, spell, "hit")
return
end
end
if UnitExists("target") and pfUI.castbar.target.casterDB[UnitName("target")] then
local starttime = pfUI.castbar.target.casterDB[UnitName("target")].starttime or 0
local casttime = pfUI.castbar.target.casterDB[UnitName("target")].casttime or 0
if starttime + casttime > GetTime() then
pfUI.castbar.target:Show()
else
pfUI.castbar.target.casterDB[UnitName("target")] = nil
pfUI.castbar.target:Hide()
end
end
end)
pfUI.castbar.target.bar:SetScript("OnUpdate", function()
if UnitExists("target") and pfUI.castbar.target.casterDB[UnitName("target")] then
local spellname = pfUI.castbar.target.casterDB[UnitName("target")].cast or 0
local starttime = pfUI.castbar.target.casterDB[UnitName("target")].starttime or 0
local casttime = pfUI.castbar.target.casterDB[UnitName("target")].casttime or 0
if starttime + casttime > GetTime() then
pfUI.castbar.target.bar:SetMinMaxValues(0, casttime)
pfUI.castbar.target.bar:SetValue(GetTime() - starttime)
pfUI.castbar.target.bar.left:SetText(spellname)
pfUI.castbar.target.bar.right:SetText(round(GetTime() - starttime,1) .. " / " .. casttime)
else
pfUI.castbar.target.casterDB[UnitName("target")] = nil
pfUI.castbar.target:Hide()
end
else
pfUI.castbar.target:Hide()
end
end)
function pfUI.castbar.target:Action(mob, spell, special)
if pfLocaleSpells["deDE"][spell] ~= nil then
casttime = pfLocaleSpells["deDE"][spell].t / 1000
icon = pfLocaleSpells["deDE"][spell].icon
pfUI.castbar.target.casterDB[mob] = {cast = spell, starttime = GetTime(), casttime = casttime, icon = icon}
if UnitExists("target") and pfUI.castbar.target.casterDB[UnitName("target")] then
pfUI.castbar.target:Show()
else
pfUI.castbar.target:Hide()
end
end
end
end
end)