vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 local module = ArcHUD:NewModule("PetHealth")
2 module.unit = "pet"
3 module.defaults = {
4 Enabled = true,
5 Outline = true,
6 ShowPerc = true,
7 ColorFade = true,
8 }
9 module.options = {
10 {name = "ShowPerc", text = "SHOWPERC", tooltip = "SHOWPERC"},
11 {name = "ColorFade", text = "COLORFADE", tooltip = "COLORFADE"},
12 }
13 module.localized = true
14  
15 function module:Initialize()
16 -- Setup the frame we need
17 self.f = self:CreateRing(true, ArcHUDFrame)
18  
19 self.f:SetScale(0.6)
20 self.f:SetAlpha(0)
21 self.f:SetPoint("TOPLEFT", self.parent:GetModule("Anchors").Left, "LEFT", 0, 90)
22  
23 self.HPPerc = self:CreateFontString(self.f, "BACKGROUND", {100, 17}, 16, "RIGHT", {1.0, 1.0, 1.0}, {"BOTTOMLEFT", self.f, "BOTTOMLEFT", -165, -125})
24 end
25  
26 function module:Update()
27 if(self.db.profile.ShowPerc) then
28 self.HPPerc:Show()
29 else
30 self.HPPerc:Hide()
31 end
32  
33 if(self.db.profile.Outline) then
34 self.f.BG:Show()
35 else
36 self.f.BG:Hide()
37 end
38  
39 self.ColorFade = self.db.profile.ColorFade
40 end
41  
42 function module:Enable()
43 self.f:UpdateColor({["r"] = 0, ["g"] = 1, ["b"] = 0})
44 if(UnitExists(self.unit)) then
45 self.HPPerc:SetText(floor((UnitHealth(self.unit) / UnitHealthMax(self.unit)) * 100).."%")
46 self.f:SetMax(UnitHealthMax(self.unit))
47 self.f:SetValue(UnitHealth(self.unit))
48 else
49 self.HPPerc:SetText("")
50 self.f:SetValue(0)
51 end
52  
53 -- Register the events we will use
54 self:RegisterEvent("PET_UI_UPDATE", "UpdatePet")
55 self:RegisterEvent("PLAYER_PET_CHANGED", "UpdatePet")
56 self:RegisterEvent("PET_BAR_CHANGED", "UpdatePet")
57 self:RegisterEvent("UNIT_PET", "UpdatePet")
58 self:RegisterEvent("UNIT_HEALTH", "UpdateHealth")
59 self:RegisterEvent("UNIT_MAXHEALTH", "UpdateHealth")
60 --f:RegisterEvent("PET_UI_CLOSE")
61  
62 -- Activate the timers
63 self:StartMetro(self.name .. "Alpha")
64 self:StartMetro(self.name .. "Fade")
65 self:StartMetro(self.name .. "Update")
66  
67 self.f:Show()
68 end
69  
70 function module:UpdatePet()
71 if(event == "UNIT_PET" and arg1 ~= "player") then return end
72 if(UnitExists(self.unit)) then
73 self.f:UpdateColor({["r"] = 0, ["g"] = 1, ["b"] = 0})
74 self.f:SetMax(UnitHealthMax(self.unit))
75 self.f:SetValue(UnitHealth(self.unit))
76 self.HPPerc:SetText(floor((UnitHealth(self.unit) / UnitHealthMax(self.unit)) * 100).."%")
77 self.f:Show()
78 else
79 self.f:Hide()
80 end
81 end
82  
83 function module:UpdateHealth()
84 if(arg1 == self.unit) then
85 local p=UnitHealth(self.unit)/UnitHealthMax(self.unit)
86 local r, g = 1, 1
87 if ( p > 0.5 ) then
88 r = (1.0 - p) * 2
89 g = 1.0
90 else
91 r = 1.0
92 g = p * 2
93 end
94 if ( r < 0 ) then r = 0 elseif ( r > 1 ) then r = 1 end
95 if ( g < 0 ) then g = 0 elseif ( g > 1 ) then g = 1 end
96 if(self.ColorFade) then
97 self.f:UpdateColor({["r"] = r, ["g"] = g, ["b"] = 0})
98 else
99 self.f:UpdateColor({["r"] = 0, ["g"] = 1, ["b"] = 0})
100 end
101  
102 if (event == "UNIT_MAXHEALTH") then
103 self.f:SetMax(UnitHealthMax(self.unit))
104 else
105 self.f:SetValue(UnitHealth(self.unit))
106 self.HPPerc:SetText(floor((UnitHealth(self.unit) / UnitHealthMax(self.unit)) * 100).."%")
107 end
108 end
109 end