vanilla-wow-addons – Rev 1
?pathlinks?
--[[---------------------------------------------------------------------------------
MyACEPercentage - mailto:instant.gmail.com
------------------------------------------------------------------------------------]]
local DEFAULT_OPTIONS = {
current = FALSE,
total = TRUE,
colour = TRUE
}
--[[---------------------------------------------------------------------------------
Class Setup
------------------------------------------------------------------------------------]]
MyAcePerc = AceAddon:new({
name = "MyAcePercentage",
description = MYACEPERC.DESCRIPTION,
version = "b.1.7.0",
releaseDate = "2005-09-27",
aceCompatible = "102",
author = "instant",
email = "instant0@gmail.com",
website = "http://www.wowace.com",
category = ACE_CATEGORY_INTERFACE,
db = AceDbClass:new("MyAcePercDB"),
defaults = DEFAULT_OPTIONS,
cmd = AceChatCmd:new(MYACEPERC.COMMANDS, MYACEPERC.CMD_OPTIONS)
})
function MyAcePerc:Initialize()
MYACEPERC_C1 = "|cFFFFFF00"
MYACEPERC_C2 = "|cFF00FF00"
self.GetOpt = function(var) return self.db:get(self.profilePath,var) end
self.SetOpt = function(var,val) self.db:set(self.profilePath,var,val) end
self.TogOpt = function(var) return self.db:toggle(self.profilePath,var) end
end
--[[--------------------------------------------------------------------------------
Addon Enabling/Disabling
-----------------------------------------------------------------------------------]]
function MyAcePerc:Enable()
self:HookScript(GameTooltip, "OnShow", "ProcessOnShow")
end
-- Disable() is not needed if all you are doing in Enable() is registering events
-- and hooking functions. Ace will automatically unregister and unhook these.
function MyAcePerc:Disable()
end
--[[--------------------------------------------------------------------------------
Main Processing
-----------------------------------------------------------------------------------]]
function MyAcePerc:ProcessOnShow()
-- You should always call the hooked script to give other addons a chance to
-- process it, unless you must prevent further processing.
if( GameTooltip:IsVisible() ) then
local line2cost, line2costd, tipline2, line2number, line2mana
local ttext, dttext, ctext, dctext
if( GameTooltipTextLeft2:GetText() ) then
tipline2 = GameTooltipTextLeft2:GetText()
line2number = string.find(tipline2, '%d+')
if ( line2number == 1 ) then
line2mana = string.find(tipline2, MANA)
if ( line2mana ) then
line2cost = string.gsub(GameTooltipTextLeft2:GetText(), string.gsub(MANA_COST, "%%d", ""), "")
line2costd = tonumber(line2cost)
if ( self.GetOpt("total") ) then
ttext = string.format( "%.1f" , ( line2costd/( UnitManaMax('player')/100 ) ) )
if ( self.GetOpt("colour") ) then
dttext = MYACEPERC_C1.."("..ttext.."%)"
else
dttext = "(t:"..ttext.."%)"
end
end
if ( self.GetOpt("current") ) then
ctext = string.format ( "%.1f" , ( line2costd/( UnitMana('player')/100 ) ) )
if ( self.GetOpt("colour") ) then
dctext = MYACEPERC_C2.."("..ctext.."%)"
else
dctext = "(c:"..ctext.."%)"
end
end
if not ( dctext ) then
dctext = ""
end
if not ( dttext ) then
dttext = ""
end
GameTooltipTextLeft2:SetText( format( MANA_COST,line2cost )..dctext..dttext )
end
end
end
end
self:CallScript(GameTooltip, "OnShow")
end
--[[---------------------------------------------------------------------------------
Command Handlers
------------------------------------------------------------------------------------]]
function MyAcePerc:TotalMana()
-- TogOpt will toggle the value of opt2 in the database to TRUE or FALSE, the
-- opposite of what it was, and return the new value. status() will display a
-- message showing the On/Off state based on the value returned by TogOpt().
-- If the status is TRUE then "On" will be displayed, otherwise "Off".
self.cmd:status(MYACEPERC.TOTAL_MSG, self.TogOpt("total"), ACEG_MAP_ONOFF)
end
function MyAcePerc:CurrentMana()
self.cmd:status(MYACEPERC.CURNT_MSG, self.TogOpt("current"), ACEG_MAP_ONOFF)
end
function MyAcePerc:Colour()
self.cmd:status(MYACEPERC.COLOR_MSG, self.TogOpt("colour"), ACEG_MAP_ONOFF)
end
function MyAcePerc:Report()
self.cmd:report({
{text=MYACEPERC.TOTAL_MSG, val=self.GetOpt("total"), map=ACEG_MAP_ONOFF},
{text=MYACEPERC.CURNT_MSG, val=self.GetOpt("current"), map=ACEG_MAP_ONOFF},
{text=MYACEPERC.COLOR_MSG, val=self.GetOpt("colour"), map=ACEG_MAP_ONOFF}
})
end
--[[---------------------------------------------------------------------------------
Register Addon Object
------------------------------------------------------------------------------------]]
MyAcePerc:RegisterForLoad()