WoWInterface SVN NinjaPoints

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 1 to Rev 2
    Reverse comparison

Rev 1 → Rev 2

trunk/core.lua New file
0,0 → 1,572
NinjaPoints = LibStub("AceAddon-3.0"):NewAddon("NinjaPoints", "AceEvent-3.0", "AceConsole-3.0")
 
local self = NinjaPoints
 
local LSM = LibStub:GetLibrary("LibSharedMedia-3.0", true)
 
local r, g, b, x, y
local points
 
local fonts = {}
local sounds = {}
 
local npstring = UIParent:CreateFontString("NinjaPointsString", "OVERLAY")
 
local newTable
local function CreateTable(index)
newTable = {
type = 'group',
handler = NinjaPoints,
name = tostring(index),
desc = 'Configure options for combo point '..string.upper(tostring(index)),
order = tonumber(index),
args = {
text = {
type = 'input',
name = 'Text',
desc = function(info) return "What text you want combo point "..info.arg.." to display" end,
get = "GetCPText",
set = "SetCPText",
usage = "<string>",
width = "full",
hidden = function(info) return self.db.profile.style[info.arg] == "number" end,
arg = index,
},
style = {
type = 'select',
name = 'Style',
desc = function(info) return "Style you want combo point "..info.arg.." displayed in" end,
get = "GetCPStyle",
set = "SetCPStyle",
values = {["number"] = "number", ["text"] = "text", ["random"] = "random" },
style = "dropdown",
width = "full",
arg = index,
},
randomColor = {
type = 'toggle',
name = 'randomColor',
desc = function(info) return "Toggle coloring combo point "..info.arg.." a different color every time it appears" end,
get = "GetCPRandomColor",
set = "SetCPRandomColor",
arg = index,
},
color = {
type = 'color',
name = 'Color',
desc = function(info) return "Color you want combo point "..info.arg.." displayed in" end,
get = "GetCPColor",
set = "SetCPColor",
hidden = function(info) return self.db.profile.randomColor[info.arg] end,
arg = index,
},
sound = {
type = 'select',
name = 'Sound',
desc = function(info) return "What sound you want to play when you obtain combo point "..info.arg end,
get = "GetCPSound",
set = "SetCPSound",
style = "dropdown",
width = "full",
values = sounds,
arg = index,
},
},
}
return newTable
end
 
local options = {
type = 'group',
name = 'NinjaPoints',
handler = NinjaPoints,
desc = 'Displays combo points in large, annoying numbers or words',
args = {
font = {
type = 'group',
name = 'Font',
desc = 'Change font options',
order = 1,
args = {
face = {
type = 'select',
name = 'Face',
desc = 'Set combo point text font face',
get = "GetFontFace",
set = "SetFontFace",
order = 1,
style = "dropdown",
values = fonts,
width = "full",
},
size = {
type = 'range',
name = 'Size',
desc = 'Set combo point font size',
get = "GetFontSize",
set = "SetFontSize",
min = 8,
max = 38,
step = 1,
order = 2,
width = "full",
},
outline = {
type = 'select',
name = 'Outline',
desc = 'Set font outline',
get = "GetFontOutline",
set = "SetFontOutline",
order = 3,
values = { ["NONE"] = "NONE", ["MONOCHROME"] = "MONOCHROME", ["OUTLINE"] = "OUTLINE", ["THICKOUTLINE"] = "THICKOUTLINE" },
style = "dropdown",
width = "full",
},
},
},
test = {
type = 'execute',
name = 'Test',
desc = 'Test combo point text frame',
func = "ToggleTestFrame",
order = 7,
},
fade = {
type = 'group',
name = 'Fade',
desc = 'Configure fading options',
args = {
enable = {
type = 'toggle',
name = 'Enable',
desc = 'Enable fading',
get = "GetFading",
set = "SetFading",
},
timeIn = {
type = 'range',
name = 'Time in',
desc = 'Amount of time (in seconds) for the frame to fade in',
get = "GetFadeTimeIn",
set = "SetFadeTimeIn",
min = 0.1,
max = 3.0,
step = 0.1,
width = "full",
},
timeOut = {
type = 'range',
name = 'Time out',
desc = 'Amount of time (in seconds) for the frame to fade out',
get = "GetFadeTimeOut",
set = "SetFadeTimeOut",
min = 0.1,
max = 3.0,
step = 0.1,
width = "full",
},
},
},
points = {
type = 'group',
name = 'Points',
desc = 'Configure what to show for combo points',
args = {
one = CreateTable(1),
two = CreateTable(2),
three = CreateTable(3),
four = CreateTable(4),
five = CreateTable(5),
},
order = 3,
},
xOff = {
type = 'input',
name = 'xOff',
desc = 'Set X offset for combo point text',
order = 4,
get = "GetXOffset",
set = "SetXOffset",
},
yOff = {
type = 'input',
name = 'yOff',
desc = 'Set Y offset for combo point text',
order = 5,
get = "GetYOffset",
set = "SetYOffset",
},
reset = {
type = 'execute',
name = 'Reset',
desc = 'Reset options back to their defaults',
order = 8,
func = "ResetDB",
confirm = true,
},
},
}
 
local defaultDB = {
profile = {
fontFace = "Fonts\\FRIZQT__.ttf",
fontSize = 36,
fontOutline = "NONE",
xOff = 0,
yOff = 400,
fade = {
enable = true,
timeIn = "0.2",
timeOut = "0.5",
},
style = {
[1] = "number",
[2] = "number",
[3] = "number",
[4] = "number",
[5] = "number",
},
randomColor = {
[1] = false,
[2] = false,
[3] = false,
[4] = false,
[5] = false,
},
sounds = {
[1] = "None",
[2] = "None",
[3] = "None",
[4] = "None",
[5] = "None",
},
texts = {
[1] = "ONE",
[2] = "TWO",
[3] = "THREE",
[4] = "FOUR",
[5] = "FIVE",
},
colors = {
[1] = {
red = ".17",
green = ".90",
blue = ".11",
},
[2] = {
red = ".18",
green = ".93",
blue = ".93",
},
[3] = {
red = ".89",
green = ".93",
blue = ".18",
},
[4] = {
red = ".22",
green = ".18",
blue = ".80",
},
[5] = {
red = "1.00",
green = ".0",
blue = ".0",
},
},
},
}
 
function NinjaPoints:ChatCommand(input)
if not input or input:trim() == "" then
InterfaceOptionsFrame_OpenToFrame(self.optionsFrame)
else
LibStub("AceConfigCmd-3.0").HandleCommand(NinjaPoints, "np", "NinjaPoints", input)
end
end
 
function NinjaPoints:OnInitialize()
self.db = LibStub("AceDB-3.0"):New("NinjaPointsDB", defaultDB, "Defaults")
 
if LSM then
LSM.RegisterCallback(NinjaPoints, "LSMNew")
 
options.args.font.args.face.values = fonts
options.args.points.args.one.args.sound.values = sounds
options.args.points.args.two.args.sound.values = sounds
options.args.points.args.three.args.sound.values = sounds
options.args.points.args.four.args.sound.values = sounds
options.args.points.args.five.args.sound.values = sounds
else
options.args.font.args.face.values = self.Fonts
options.args.points.args.one.args.sound.values = self.Sounds
options.args.points.args.two.args.sound.values = self.Sounds
options.args.points.args.three.args.sound.values = self.Sounds
options.args.points.args.four.args.sound.values = self.Sounds
options.args.points.args.five.args.sound.values = self.Sounds
end
 
LibStub("AceConfig-3.0"):RegisterOptionsTable("NinjaPoints", options)
self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("NinjaPoints", "NinjaPoints")
 
self:RegisterChatCommand("npoints", "ChatCommand")
self:RegisterChatCommand("np", "ChatCommand")
 
if LSM then
LSM:Register("sound", "Finish Him!", "Interface\\AddOns\\NinjaPoints\\Sounds\\FinishHim.wav")
end
end
 
function NinjaPoints:OnEnable()
self:RegisterEvent("PLAYER_COMBO_POINTS")
self:LSMNew()
end
 
function NinjaPoints:LSMNew()
if not LSM then return end
for k, v in pairs(LSM:List("font")) do
fonts[v] = v
end
 
for k, v in pairs(LSM:List("sound")) do
sounds[v] = v
end
end
 
function NinjaPoints:PLAYER_COMBO_POINTS()
points = GetComboPoints()
if ( points == 0 ) then self:SetStringVisible(false) return end
r, g, b = self:GetTextColors(points)
 
self:SetFont(self.db.profile.fontFace or "Fonts\\FRIZQT__.TTF")
if self.db.profile.style[points] == "number" then
npstring:SetText(points)
elseif self.db.profile.style[points] == "random" then
local roll = random(1,2)
if roll > 1 then
npstring:SetText(self.db.profile.texts[points])
else
npstring:SetText(points)
end
elseif self.db.profile.style[points] == "text" then
npstring:SetText(self.db.profile.texts[points])
end
 
npstring:SetPoint("CENTER", UIParent, "CENTER", self.db.profile.xOff, self.db.profile.yOff)
npstring:SetTextColor(r, g, b, 1.0)
if not npstring:IsVisible() then
self:SetStringVisible(true)
end
 
self:PlaySound(self.db.profile.sounds[points])
end
 
function NinjaPoints:ResetDB()
self.db = defaultDB
npstring:SetPoint("CENTER", UIParent, "CENTER", self.db.profile.xOff, self.db.profile.yOff)
self:Print("NinjaPointsDB reset to original values")
end
 
function NinjaPoints:ToggleTestFrame()
if npstring:IsVisible() and GetComboPoints() == 0 then
self:SetStringVisible(false)
else
points = math.random(1, 5)
r, g, b = self:GetTextColors(points)
self:SetFont(self.db.profile.fontFace)
if self.db.profile.style[points] == "number" then
npstring:SetText(points)
elseif self.db.profile.style[points] == "random" then
local roll = random(1,2)
if roll > 1 then
npstring:SetText(self.db.profile.texts[points])
else
npstring:SetText(points)
end
elseif self.db.profile.style[points] == "text" then
npstring:SetText(self.db.profile.texts[points])
end
 
npstring:SetPoint("CENTER", UIParent, "CENTER", self.db.profile.xOff, self.db.profile.yOff)
npstring:SetTextColor(r, g, b)
self:SetStringVisible(true)
 
self:PlaySound(self.db.profile.sounds[points])
end
end
 
function NinjaPoints:RegisterSound(name, soundpath)
if not self.Sounds then
self.Sounds = { }
end
 
self.Sounds[soundpath] = name
end
 
function NinjaPoints:RegisterFont(name, fontpath)
if not self.Fonts then
self.Fonts = { }
end
 
self.Fonts[fontpath] = name
end
 
function NinjaPoints:SetFont(font)
if LSM then
npstring:SetFont(LSM:Fetch("font", font), self.db.profile.fontSize, self.db.profile.fontOutline)
else
npstring:SetFont(font, self.db.profile.fontSize, self.db.profile.fontOutline)
end
end
 
function NinjaPoints:PlaySound(sound)
if LSM then
PlaySoundFile(LSM:Fetch("sound", sound))
else
PlaySoundFile(sound)
end
end
 
function NinjaPoints:SetStringVisible(value)
if self.db.profile.fade.enable then
if value then
UIFrameFadeIn(npstring, tonumber(self.db.profile.fade.timeIn), 0, 1)
else
UIFrameFadeOut(npstring, tonumber(self.db.profile.fade.timeOut), 1, 0)
end
npstring.fadeInfo.finishedFunc = function() self:SetVisible(npstring, value) end
else
self:SetVisible(npstring, value)
end
end
 
function NinjaPoints:GetTextColors(index)
if self.db.profile.randomColor[index] then
r = math.random()
g = math.random()
b = math.random()
else
r = self.db.profile.colors[index].red
g = self.db.profile.colors[index].green
b = self.db.profile.colors[index].blue
end
return r, g, b
end
 
function NinjaPoints:SetVisible(frame, show)
if show then
frame:Show()
else
frame:Hide()
end
end
 
function NinjaPoints:GetCPText(info)
return self.db.profile.texts[info.arg]
end
 
function NinjaPoints:SetCPText(info, value)
self.db.profile.texts[info.arg] = tostring(value)
end
 
function NinjaPoints:GetCPStyle(info)
return self.db.profile.style[info.arg]
end
 
function NinjaPoints:SetCPStyle(info, value)
self.db.profile.style[info.arg] = value
end
 
function NinjaPoints:GetCPRandomColor(info)
return self.db.profile.randomColor[info.arg]
end
 
function NinjaPoints:SetCPRandomColor(info, value)
self.db.profile.randomColor[info.arg] = value
end
 
function NinjaPoints:GetCPColor(info)
return self.db.profile.colors[info.arg].red, self.db.profile.colors[info.arg].green, self.db.profile.colors[info.arg].blue
end
 
function NinjaPoints:SetCPColor(info, r, g, b)
self.db.profile.colors[info.arg] = {red = r, green = g, blue = b}
end
 
function NinjaPoints:GetCPSound(info)
return self.db.profile.sounds[info.arg]
end
 
function NinjaPoints:SetCPSound(info, value)
self.db.profile.sounds[info.arg] = value
self:PlaySound(value)
end
 
function NinjaPoints:GetFontFace(info)
return self.db.profile.fontFace
end
 
function NinjaPoints:SetFontFace(info, value)
self.db.profile.fontFace = value
self:SetFont(value)
end
 
function NinjaPoints:GetFontSize(info)
return self.db.profile.fontSize
end
 
function NinjaPoints:SetFontSize(info, value)
self.db.profile.fontSize = value
self:SetFont(self.db.profile.fontFace)
end
 
function NinjaPoints:GetFontOutline(info)
return self.db.profile.fontOutline
end
 
function NinjaPoints:SetFontOutline(info, value)
self.db.profile.fontOutline = value
self:SetFont(self.db.profile.fontFace)
end
 
function NinjaPoints:GetXOffset(info)
return self.db.profile.xOff
end
 
function NinjaPoints:SetXOffset(info, value)
self.db.profile.xOff = value
npstring:SetPoint("CENTER", UIParent, "CENTER", value, (self.db.profile.yOff or 0))
end
 
function NinjaPoints:GetYOffset(info)
return self.db.profile.yOff
end
 
function NinjaPoints:SetYOffset(info, value)
self.db.profile.yOff = value
npstring:SetPoint("CENTER", UIParent, "CENTER", (self.db.profile.xOff or 0), value)
end
 
function NinjaPoints:GetFading(info)
return self.db.profile.fade.enable
end
 
function NinjaPoints:SetFading(info, value)
self.db.profile.fade.enable = value
end
 
function NinjaPoints:GetFadeTimeIn(info)
return self.db.profile.fade.timeIn
end
 
function NinjaPoints:SetFadeTimeIn(info, value)
self.db.profile.fade.timeIn = value
end
 
function NinjaPoints:GetFadeTimeOut(info)
return self.db.profile.fade.timeOut
end
 
function NinjaPoints:SetFadeTimeOut(info, value)
self.db.profile.fade.timeOut = value
end
\ No newline at end of file Property changes : Added: svn:mime-type + text/plain Added: svn:keywords + Revision Date Added: svn:eol-style + native
trunk/fonts.lua New file
0,0 → 1,12
local FONT_FILES = {
["Friz"] = "Fonts\\FRIZQT__.ttf",
["Arial"] = "Fonts\\ARIALN.ttf",
["Skurri"] = "Fonts\\Skurri.ttf",
["Morpheus"] = "Fonts\\Morpheus.ttf",
["Supernova"] = "Interface\\AddOns\\NinjaPoints\\Fonts\\numfont.ttf",
}
 
for k,v in pairs(FONT_FILES) do
NinjaPoints:RegisterFont(k, v)
end
 
\ No newline at end of file Property changes : Added: svn:mime-type + text/plain Added: svn:keywords + Revision Date Added: svn:eol-style + native
trunk/Sounds/FinishHim.wav Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes : Added: svn:mime-type + application/octet-stream
trunk/sounds.lua New file
0,0 → 1,8
local SOUND_FILES = {
None = "",
FinishHim = "Interface\\AddOns\\NinjaPoints\\Sounds\\FinishHim.wav",
}
 
for k,v in pairs(SOUND_FILES) do
NinjaPoints:RegisterSound(k, v)
end
\ No newline at end of file Property changes : Added: svn:eol-style + native Added: svn:mime-type + text/plain Added: svn:keywords + Revision Date
trunk/embeds.xml New file
0,0 → 1,12
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="libs\LibStub\LibStub.lua"/>
<Include file="libs\CallbackHandler-1.0\CallbackHandler-1.0.xml"/>
<Include file="libs\AceAddon-3.0\AceAddon-3.0.xml"/>
<Include file="libs\AceGUI-3.0\AceGUI-3.0.xml"/>
<Include file="libs\AceConfig-3.0\AceConfig-3.0.xml"/>
<Include file="libs\AceConsole-3.0\AceConsole-3.0.xml"/>
<Include file="libs\AceDB-3.0\AceDB-3.0.xml"/>
<Include file="libs\AceEvent-3.0\AceEvent-3.0.xml"/>
</Ui>
\ No newline at end of file Property changes : Added: svn:eol-style + native Added: svn:mime-type + text/xml
trunk/NinjaPoints.toc New file
0,0 → 1,15
## Interface: 20400
## Title: Ninja Points
## Version: wowi:revision
## Author: Ganders
## Notes: Displays combo points in large, annoying numbers or words
## SavedVariables: NinjaPointsDB
## OptionalDeps: Ace3, LibSharedMedia-3.0
## X-Embeds: Ace3, LibSharedMedia-3.0
## X-Category: Rogue
 
embeds.xml
 
core.lua
fonts.lua
sounds.lua
\ No newline at end of file Property changes : Added: svn:keywords + Revision Date Added: svn:eol-style + native Added: svn:mime-type + text/plain