vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
HotCandy = AceLibrary("AceAddon-2.0"):new("AceEvent-2.0", "AceDebug-2.0", "AceConsole-2.0", "AceDB-2.0", "AceHook-2.1", "CandyBar-2.0")

local compost = AceLibrary:HasInstance("Compost-2.0") and AceLibrary("Compost-2.0")
--local paint = AceLibrary("PaintChips-2.0")
local BS = AceLibrary("Babble-Spell-2.2")
local gratuity = AceLibrary("Gratuity-2.0")
--local seea = AceLibrary("SpecialEvents-Aura-2.0")

local function getnewtable() return compost and compost:Acquire() or {} end
local function reclaimtable(t) if compost then compost:Reclaim(t) end end

HotCandy.version = "0.1." .. string.sub("$Revision: 12273 $", 12, -3)
HotCandy.date = string.sub("$Date: 2006-09-30 04:50:40 +0200 (Sa, 30 Sep 2006) $", 8, 17)

function HotCandy:OnInitialize()
        self:RegisterDB("HotCandyDB")
        self:RegisterDefaults("profile", {
                growup = false,
                bonus = {druidt2 = false, priestt2 = false},
        })
        
        self.options = {
                type = "group",
                args = {
                        anchor = {
                                name = "Show Anchor",
                                desc = "Show the Anchor for moving the Bars",
                                type = "execute",
                                func = "ShowAnchors",
                        },
                        growup = {
                                name = "Grow Up",
                                desc = "Toggle Grow Up of the Bars",
                                type = "toggle",
                                get = function()
                                        return self.db.profile.growup
                                end,
                                set = function(v)
                                        self.db.profile.growup = v
                                end,
                        },
                        bonus = {
                                type = "group",
                                name = "Bonus",
                                desc = "Configure Set Bonus attributes",
                                args = {
                                        druid = {
                                                name = "Druid T2 Rejuvenation Bonus",
                                                desc = "Toggle the Druid T2 Bonus on/off",
                                                type = "toggle",
                                                get = function()
                                                        return self.db.profile.bonus.druidt2
                                                end,
                                                set = function(v)
                                                        self.db.profile.bonus.druidt2 = v
                                                        if self.db.profile.bonus.druidt2 then
                                                                self.track['Rejuvenation'] = 15
                                                        else
                                                                self.track['Rejuvenation'] = 12
                                                        end
                                                end,
                                        },
                                        priest = {
                                                name = "Priest T2 Greater Heal Bonus",
                                                desc = "Toggle the Priest T2 Bonus on/off",
                                                type = "toggle",
                                                get = function()
                                                        return self.db.profile.bonus.priestt2
                                                end,
                                                set = function(v)
                                                        self.db.profile.bonus.priestt2 = v
                                                        if self.db.profile.bonus.priestt2 then
                                                                self.track['Greater Heal'] = 15
                                                        else
                                                                self.track['Greater Heal'] = nil
                                                        end
                                                end,
                                        },
                                }
                        },
                }
        }
        
        self:RegisterChatCommand({ "/hot", "/hotcandy" }, self.options )
        
        self.spell = {}
        self:SetupFrames()
        
        -- spell = duration
        self.track = {
                [BS['Rejuvenation']] = self.db.profile.bonus.druidt2 and 15 or 12,
                [BS['Regrowth']] = 21,
                [BS['Renew']] = 15,
                [BS['Greater Heal']] = self.db.profile.bonus.priestt2 and 15 or nil,
        }
        self:DoHooking()
end

function HotCandy:OnEnable()
        --self:SetDebugging(true)
        --self:SetDebugLevel(3)
        self:RegisterEvent("SPELLCAST_FAILED", "SpellCastEvent")
        self:RegisterEvent("SPELLCAST_STOP", "SpellCastEvent")
        self:RegisterEvent("SPELLCAST_INTERRUPTED", "SpellCastEvent")
end

function HotCandy:SpellCastEvent()
        if ( event == "SPELLCAST_FAILED" or event == "SPELLCAST_INTERRUPTED" ) and self.spell.EndCast then
                self.spell.Casting = nil
                self.spell.Target = nil
                self.spell.EndCast = nil
        elseif event == "SPELLCAST_STOP" and self.spell.EndCast then
                self:LevelDebug(2, "SPELLCAST_STOP", self.spell.EndCast, self.spell.Target)
                self:FireSpell(self.spell.EndCast, self.spell.Target)
                self.spell.Casting = nil
                self.spell.Target = nil
                self.spell.EndCast = nil
        end
end

function HotCandy:FireSpell(spellName, spellTarget)
        if self.track[spellName] then
                self:LevelDebug(3, "FireSpell", spellName, spellTarget)
                self:ShowCandyBar(spellName.." - "..(spellTarget or ""), self.track[spellName], BS:GetSpellIcon(spellName), "green", "yellow", "orange", "red")
        end
end

function HotCandy:ShowCandyBar(text, time, icon, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)
        local id = "HotCandy"..text
        local u = self.db.profile.growup
        self:RegisterCandyBarGroup("HotCandyGroup")
        self:SetCandyBarGroupPoint("HotCandyGroup", u and "BOTTOM" or "TOP", self.frames.anchor, u and "TOP" or "BOTTOM", 0, 0)
        self:SetCandyBarGroupGrowth("HotCandyGroup", u)
        
        self:RegisterCandyBar(id, time, text, icon, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)
        self:RegisterCandyBarWithGroup(id, "HotCandyGroup")
        self:SetCandyBarTexture(id, "Interface\\Addons\\HotCandy\\textures\\default")
        self:SetCandyBarFade(id, 5)
        self:StartCandyBar(id, true)
end