vanilla-wow-addons – Rev 1
?pathlinks?
local module = ArcHUD:NewModule("DruidMana")
module.unit = "player"
module.defaults = {
Enabled = false,
Outline = true,
ShowText = true,
ShowPerc = true,
Side = 2,
Level = 1,
}
module.options = {
{name = "ShowText", text = "SHOWTEXT", tooltip = "SHOWTEXT"},
{name = "ShowPerc", text = "SHOWPERC", tooltip = "SHOWPERC"},
attach = true,
}
module.localized = true
function module:Initialize()
-- Setup the frame we need
self.f = self:CreateRing(true, ArcHUDFrame)
self.f:SetAlpha(0)
self.MPText = self:CreateFontString(self.f, "BACKGROUND", {150, 13}, 12, "LEFT", {0.0, 1.0, 1.0}, {"TOPLEFT", ArcHUDFrameCombo, "TOPRIGHT", 0, 14})
self.MPPerc = self:CreateFontString(self.f, "BACKGROUND", {70, 12}, 10, "LEFT", {1.0, 1.0, 1.0}, {"TOPLEFT", self.parent:GetModule("Mana").MPPerc, "TOPRIGHT", 0, -1})
-- Override Update timer
self:RegisterMetro(self.name .. "Update", self.UpdateAlpha, 0.05, self)
-- Add timer for DruidBar
self:RegisterMetro(self.name .. "DruidBarUpdate", self.DruidBarUpdate, 0.5, self)
end
function module:Update()
if(self.db.profile.ShowText) then
self.MPText:Show()
else
self.MPText:Hide()
end
if(self.db.profile.ShowPerc) then
self.MPPerc:Show()
else
self.MPPerc:Hide()
end
if(self.db.profile.Outline) then
self.f.BG:Show()
else
self.f.BG:Hide()
end
-- Clear all points for the ring
self.f:ClearAllPoints()
self.f:SetValue(0)
if(self.db.profile.Side == 1) then
-- Attach to left side
self.f:SetPoint("TOPLEFT", self.parent:GetModule("Anchors").Left, "TOPLEFT", self.db.profile.Level * -15, 0)
self.f.BG:SetReversed(false)
self.f:SetReversed(false)
else
-- Attach to right side
self.f:SetPoint("TOPRIGHT", self.parent:GetModule("Anchors").Right, "TOPRIGHT", self.db.profile.Level * 15, 0)
self.f.BG:SetReversed(true)
self.f:SetReversed(true)
end
self.f.BG:SetAngle(180)
end
function module:Enable()
self.f:UpdateColor({r=0.0, g=0.0, b=1.0})
-- Don't go further if player is not a druid
local _, class = UnitClass(self.unit)
if(class ~= "DRUID") then return end
-- Register the events we will use
self:RegisterEvent("UNIT_DISPLAYPOWER")
-- Activate the timers
self:StartMetro(self.name .. "Alpha")
self:StartMetro(self.name .. "Fade")
self:StartMetro(self.name .. "Update")
-- Check if we have any druid mana addons loaded
if(DruidBarKey) then
-- We got DruidBar
self:StartMetro(self.name .. "DruidBarUpdate")
self.gotAddon = true
elseif(SoleManax) then
-- We got SoleManax
SoleManax:AddUser(self.UpdateMana, true, self)
--self:UpdateMana(SoleManax:GetPlayerMana())
self.gotAddon = true
end
self.f:Show()
end
function module:Disable()
if(SoleManax) then
SoleManax:DelUser(self.UpdateMana)
end
end
function module:UpdateAlpha()
if(self.doUpdates) then
if(self.f.startValue < self.f.maxValue and ArcHUD.PlayerIsInCombat) then
self.f:SetRingAlpha(ArcHUD.db.profile.FadeIC)
elseif(self.f.startValue < self.f.maxValue and not ArcHUD.PlayerIsInCombat) then
self.f:SetRingAlpha(ArcHUD.db.profile.FadeOOC)
else
self.f:SetRingAlpha(0)
end
else
self.f:SetRingAlpha(0)
end
end
function module:DruidBarUpdate()
self:UpdateMana(DruidBarKey.keepthemana, DruidBarKey.maxmana)
end
function module:UpdateMana(curMana, maxMana)
if(self.doUpdates) then
self.MPText:SetText(floor(curMana).."/"..floor(maxMana))
self.MPPerc:SetText(floor((curMana/maxMana)*100).."%")
self.f:SetMax(maxMana)
self.f:SetValue(curMana)
end
end
function module:UNIT_DISPLAYPOWER()
if(arg1 ~= self.unit) then return end
if(UnitPowerType(self.unit) == 1 or UnitPowerType(self.unit) == 3 and not self.doUpdates) then
--Bear or Cat form
self.doUpdates = true
elseif(UnitPowerType(self.unit) == 0 and self.doUpdates) then
--player/aqua/travel
self.doUpdates = false
end
end