vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
local dewdrop = DewdropLib:GetInstance('1.0')
local tablet = TabletLib:GetInstance('1.0')
local metro = Metrognome:GetInstance('1')

FuBar_Experienced =  FuBarPlugin:GetInstance("1.2"):new({
        name                            = FuBar_ExperiencedLocals.NAME,
        description             = FuBar_ExperiencedLocals.DESCRIPTION,
        version                 = "0.3.0",
        releaseDate             = "05-18-2006",
        aceCompatible   = 103,
        author                          = "Tain",
        email                           = "tain.dev@gmail.com",
        website                 = "http://tain.wowinterface.com/",
        category                        = "others",
        db                                      = AceDatabase:new("FuBar_ExperiencedDB"),
        defaults                        = {
                                        levelExp = TRUE,
                                        levelExpPercent = TRUE,
                                        restedExp = TRUE
        },
        cmd                                     = AceChatCmd:new(FuBar_ExperiencedLocals.CHATCMD, FuBar_ExperiencedLocals.CHATOPT),
        locals                          = FuBar_ExperiencedLocals,

        -- Methods
        GetVar = function(self,var)
                return self.data[var] and TRUE
        end,
        
        ToggleShowLevelExp = function(self, silent)
                self.data.levelExp = not self.data.levelExp
                if silent ~= TRUE then
                        self.cmd:status(self.locals.MENU_SHOW_LEVEL_XP, self:GetVar("levelExp"), FuBarUtils.MAP_ONOFF)
                end
                self:Update()
                return self.data.levelExp
        end,

        ToggleShowToLevelExp = function(self, silent)
                self.data.toLevelExp = not self.data.toLevelExp
                if silent ~= TRUE then
                        self.cmd:status(self.locals.MENU_SHOW_TOLEVEL_XP, self:GetVar("toLevelExp"), FuBarUtils.MAP_ONOFF)
                end
                self:Update()
                return self.data.toLevelExp
        end,

        ToggleShowLevelExpPercent = function(self, silent)
                self.data.levelExpPercent = not self.data.levelExpPercent
                if silent ~= TRUE then
                        self.cmd:status(self.locals.MENU_SHOW_LEVEL_XP_PERCENT, self:GetVar("levelExpPercent"), FuBarUtils.MAP_ONOFF)
                end
                self:Update()
                return self.data.showExpPercent
        end,

        ToggleShowRestedExp = function(self, silent)
                self.data.restedExp = not self.data.restedExp
                if silent ~= TRUE then
                        self.cmd:status(self.locals.MENU_SHOW_RESTED_XP, self:GetVar("restedExp"), FuBarUtils.MAP_ONOFF)
                end
                self:Update()
                return self.data.restedExp
        end,
        
        ToggleShowRestedExpPercent = function(self, silent)
                self.data.restedExpPercent = not self.data.restedExpPercent
                if silent ~= TRUE then
                        self.cmd:status(self.locals.MENU_SHOW_RESTED_XP_PERCENT, self:GetVar("restedExpPercent"), FuBarUtils.MAP_ONOFF)
                end
                self:Update()
                return self.data.restedExpPercent
        end,

        ToggleShowAverageExp = function(self, silent)
                self.data.averageExp = not self.data.averageExp
                if silent ~= TRUE then
                        self.cmd:status(self.locals.MENU_SHOW_AVERAGE_XP_GAIN, self:GetVar("averageExp"), FuBarUtils.MAP_ONOFF)
                end
                self:Update()
                return self.data.averageExp
        end,
        
        ToggleShowByLevel = function(self, silent)
                self.data.byLevel = not self.data.byLevel
                if silent ~= TRUE then
                        self.cmd:status(self.locals.MENU_SHOW_AVERAGE_XP_GAIN_BY_LEVEL, self:GetVar("byLevel"), FuBarUtils.MAP_ONOFF)
                end
                self:Update()
                return self.data.byLevel
        end,
        
        Initialize = function(self)
                self.initialXP = UnitXP("player")
        end,
        
        Enable = function(self)
                self.timeSinceLastUpdate = 0
                self:RegisterEvent("PLAYER_XP_UPDATE", "OnPlayerXpUpdate")
                self:RegisterEvent("PLAYER_LEVEL_UP", "OnPlayerLevelUp")
                self:RegisterEvent("TIME_PLAYED_MSG", "OnTimePlayedMsg")
--              RequestTimePlayed()
                metro:Register(self.name, self.Update, 2, self)
                metro:Start(self.name)
        end,
        
        Disable = function(self)
        end,
        
        Report = function(self)
                self.cmd:report({
                        {
                                text=self.locals.MENU_SHOW_LEVEL_XP,
                                val=self:GetVar("levelExp"), 
                                map=FuBarLocals.MAP_ONOFF
                        },
                        {
                                text=self.locals.MENU_SHOW_TOLEVEL_XP,
                                val=self:GetVar("toLevelExp"), 
                                map=FuBarLocals.MAP_ONOFF
                        },
                        {
                                text=self.locals.MENU_SHOW_LEVEL_XP_PERCENT,
                                val=self:GetVar("levelExpPercent"), 
                                map=FuBarLocals.MAP_ONOFF
                        },
                        {
                                text=self.locals.MENU_SHOW_RESTED_XP,
                                val=self:GetVar("restedExp"), 
                                map=FuBarLocals.MAP_ONOFF
                        },
                        {
                                text=self.locals.MENU_SHOW_RESTED_XP_PERCENT,
                                val=self:GetVar("restedExpPercent"), 
                                map=FuBarLocals.MAP_ONOFF
                        },
                })
        end,
        
        MenuSettings = function(self, level, value)
        
                dewdrop:AddLine(
                        'text', self.locals.MENU_SHOW_LEVEL_XP,
                        'arg1', self,
                        'func', function()
                                self:ToggleShowLevelExp(TRUE)
                        end,
                        'checked', self:GetVar("levelExp")
                )
        
                dewdrop:AddLine(
                        'text', self.locals.MENU_SHOW_TOLEVEL_XP,
                        'arg1', self,
                        'func', function()
                                        self:ToggleShowToLevelExp(TRUE)
                                end,
                        'checked', self:GetVar("toLevelExp")
                )
        
                dewdrop:AddLine(
                        'text', self.locals.MENU_SHOW_LEVEL_XP_PERCENT,
                        'arg1', self,
                        'func', function()
                                        self:ToggleShowLevelExpPercent(TRUE)
                                end,
                        'checked', self:GetVar("levelExpPercent")
                )
        
                dewdrop:AddLine(
                        'text', self.locals.MENU_SHOW_RESTED_XP,
                        'arg1', self,
                        'func', function()
                                        self:ToggleShowRestedExp(TRUE)
                                end,
                        'checked', self:GetVar("restedExp")
                )

                dewdrop:AddLine(
                        'text', self.locals.MENU_SHOW_RESTED_XP_PERCENT,
                        'arg1', self,
                        'func', function()
                                        self:ToggleShowRestedExpPercent(TRUE)
                                end,
                        'checked', self:GetVar("restedExpPercent")
                )

        end,
        
        OnUpdate = function(self, difference)
                self.timeSinceLastUpdate = self.timeSinceLastUpdate + difference
                if self.timeSinceLastUpdate >= 1 then
                        self.timeSinceLastUpdate = 0
                        self:Update()
                end
        end,
        
        UpdateText = function(self)
                local totalXP = UnitXPMax("player")
                local currentXP = UnitXP("player")
                local toLevelXP = totalXP - currentXP
                local sessionXP = self.sessionXP
                local xps

                local restedXP
                if self.data.toLevelExp then
                        xps = "XPLvl: |cffffffff%d|r"
                        xps = string.format(xps, toLevelXP)
                elseif self.data.levelExp then
                        xps  = "XP/T: |cffffffff%d|r/|cffffffff%d|r"
                        xps = string.format(xps, currentXP, totalXP)
                else
                        xps  = "XP: |cffffffff%d|r"
                        xps = string.format(xps, currentXP)
                end
                        if self.data.levelExpPercent then
                        local xpp = " (|cffffffff%.1f%%|r)"
                        if self.data.toLevelExp then
                                xpp = string.format(xpp, toLevelXP / totalXP * 100)                                     
                        else
                                xpp = string.format(xpp, currentXP / totalXP * 100)
                        end
                        xps = xps..xpp
                end
                
                if self.data.restedExp then
                        restedXP = GetXPExhaustion()
                        restedXP = restedXP or 0
                        if self.data.restedExpPercent then
                                restedXP = format("R: |cffffffff%.1f%%|r", floor((restedXP*100)/totalXP))
                        else
                                restedXP = format("R: |cffffffff%d|r", restedXP)
                        end
                else
                        restedXP = nil
                end
                xps = xps..((restedXP and " "..restedXP) or "")

                xps = xps or ""
                self:SetText(xps)
        end,

        UpdateTooltip = function(self)
                local totalXP = UnitXPMax("player")
                local currentXP = UnitXP("player")
                local restedXP = GetXPExhaustion()
                local toLevelXP = totalXP - currentXP
                
                local cat = tablet:AddCategory(
                        'columns', 2,
                        'child_textR', 1,
                        'child_textG', 1,
                        'child_textB', 0,
                        'child_text2R', 1,
                        'child_text2G', 1,
                        'child_text2B', 1
                )

                cat:AddLine(
                        'text', self.locals.TEXT_LEVEL .. ":",
                        'text2', UnitLevel("player")
                )
        
                cat:AddLine(
                        'text', self.locals.TEXT_TOTAL_LEVEL_XP .. ":",
                        'text2', totalXP
                )
                        
                cat:AddLine(
                        'text', self.locals.TEXT_XP_GAINED .. ":",
                        'text2', format("%d (%.1f%%)", currentXP, currentXP / totalXP * 100)
                )

                cat:AddLine(
                        'text', self.locals.TEXT_XP_REMAINING .. ":",
                        'text2', format("%d (%.1f%%)", toLevelXP, toLevelXP / totalXP * 100)
                )
                
                cat:AddLine(
                        'text', self.locals.TEXT_RESTED_XP .. ":",
                        'text2', restedXP
                )
        end,
})
FuBar_Experienced:RegisterForLoad()

Generated by GNU Enscript 1.6.5.90.