- made TargetInfo module dogtag-aware (it's sentient!)

This commit is contained in:
Parnic
2008-02-11 06:05:20 +00:00
parent 6782ade223
commit 695abf1b34

View File

@ -2,6 +2,8 @@ local AceOO = AceLibrary("AceOO-2.0")
local TargetInfo = AceOO.Class(IceElement) local TargetInfo = AceOO.Class(IceElement)
local DogTag = nil
local target = "target" local target = "target"
local internal = "internal" local internal = "internal"
@ -30,6 +32,10 @@ function TargetInfo.prototype:init()
TargetInfo.super.prototype.init(self, "TargetInfo") TargetInfo.super.prototype.init(self, "TargetInfo")
self.scalingEnabled = true self.scalingEnabled = true
if AceLibrary:HasInstance("LibDogTag-2.0") then
DogTag = AceLibrary("LibDogTag-2.0")
end
end end
@ -53,6 +59,8 @@ function TargetInfo.prototype:Enable(core)
self:RegisterEvent("RAID_TARGET_UPDATE", "UpdateRaidTargetIcon") self:RegisterEvent("RAID_TARGET_UPDATE", "UpdateRaidTargetIcon")
RegisterUnitWatch(self.frame) RegisterUnitWatch(self.frame)
self:RegisterFontStrings()
end end
@ -61,6 +69,8 @@ function TargetInfo.prototype:Disable(core)
TargetInfo.super.prototype.Disable(self, core) TargetInfo.super.prototype.Disable(self, core)
UnregisterUnitWatch(self.frame) UnregisterUnitWatch(self.frame)
self:UnregisterFontStrings()
end end
@ -241,6 +251,66 @@ function TargetInfo.prototype:GetOptions()
order = 38 order = 38
} }
opts["line1Tag"] = {
type = 'text',
name = 'Line 1 tag',
desc = 'DogTag-formatted string to use for the top text line (leave blank to revert to old behavior)\n\nType /dogtag for a list of available tags',
get = function()
return self.moduleSettings.line1Tag
end,
set = function(v)
v = DogTag:FixCodeStyle(v)
self.moduleSettings.line1Tag = v
self:RegisterFontStrings()
self:Redraw()
end,
disabled = function()
return not self.moduleSettings.enabled or DogTag == nil
end,
usage = '',
order = 39.1
}
opts["line2Tag"] = {
type = 'text',
name = 'Line 2 tag',
desc = 'DogTag-formatted string to use for the middle text line (leave blank to revert to old behavior)\n\nType /dogtag for a list of available tags',
get = function()
return self.moduleSettings.line2Tag
end,
set = function(v)
v = DogTag:FixCodeStyle(v)
self.moduleSettings.line2Tag = v
self:RegisterFontStrings()
self:Redraw()
end,
disabled = function()
return not self.moduleSettings.enabled or DogTag == nil
end,
usage = '',
order = 39.2
}
opts["line3Tag"] = {
type = 'text',
name = 'Line 3 tag',
desc = 'DogTag-formatted string to use for the bottom text line (leave blank to revert to old behavior)\n\nType /dogtag for a list of available tags',
get = function()
return self.moduleSettings.line3Tag
end,
set = function(v)
v = DogTag:FixCodeStyle(v)
self.moduleSettings.line3Tag = v
self:RegisterFontStrings()
self:Redraw()
end,
disabled = function()
return not self.moduleSettings.enabled or DogTag == nil
end,
usage = '',
order = 39.3
}
return opts return opts
end end
@ -248,6 +318,7 @@ end
-- OVERRIDE -- OVERRIDE
function TargetInfo.prototype:GetDefaultSettings() function TargetInfo.prototype:GetDefaultSettings()
local defaults = TargetInfo.super.prototype.GetDefaultSettings(self) local defaults = TargetInfo.super.prototype.GetDefaultSettings(self)
defaults["fontSize"] = 13 defaults["fontSize"] = 13
defaults["stackFontSize"] = 11 defaults["stackFontSize"] = 11
defaults["vpos"] = -50 defaults["vpos"] = -50
@ -257,10 +328,52 @@ function TargetInfo.prototype:GetDefaultSettings()
defaults["mouseBuff"] = true defaults["mouseBuff"] = true
defaults["filter"] = "Never" defaults["filter"] = "Never"
defaults["perRow"] = 10 defaults["perRow"] = 10
defaults["line1Tag"] = "[NameHostile]"
defaults["line2Tag"] = "[Level:DifficultyColor] [ [IsPlayer ? Race ! CreatureType]:ClassColor] [ [IsPlayer ? Class]:ClassColor] [ [~PvP ? Text(PvE) ! Text(PvP)]:HostileColor] [Leader:Yellow] [InCombat:Red] [Classification]"
defaults["line3Tag"] = "[Guild:Angle]"
return defaults return defaults
end end
function TargetInfo.prototype:RegisterFontStrings()
if DogTag ~= nil then
if self.frame.targetName then
if self.moduleSettings.line1Tag ~= '' then
DogTag:AddFontString(self.frame.targetName, self.frame, target, self.moduleSettings.line1Tag)
else
DogTag:RemoveFontString(self.frame.targetName)
end
end
if self.frame.targetInfo then
if self.moduleSettings.line2Tag ~= '' then
DogTag:AddFontString(self.frame.targetInfo, self.frame, target, self.moduleSettings.line2Tag)
else
DogTag:RemoveFontString(self.frame.targetInfo)
end
end
if self.frame.targetGuild then
if self.moduleSettings.line3Tag ~= '' then
DogTag:AddFontString(self.frame.targetGuild, self.frame, target, self.moduleSettings.line3Tag)
else
DogTag:RemoveFontString(self.frame.targetGuild)
end
end
self:TargetChanged()
DogTag:UpdateAllForFrame(self.frame)
end
end
function TargetInfo.prototype:UnregisterFontStrings()
if DogTag ~= nil then
DogTag:RemoveFontString(self.frame.targetName)
DogTag:RemoveFontString(self.frame.targetInfo)
DogTag:RemoveFontString(self.frame.targetGuild)
end
end
-- OVERRIDE -- OVERRIDE
function TargetInfo.prototype:Redraw() function TargetInfo.prototype:Redraw()
TargetInfo.super.prototype.Redraw(self) TargetInfo.super.prototype.Redraw(self)
@ -786,6 +899,7 @@ function TargetInfo.prototype:Update(unit)
return return
end end
if DogTag == nil or self.moduleSettings.line1Tag == '' then
local reactionColor = self:ConvertToHex(UnitReactionColor[self.reaction]) local reactionColor = self:ConvertToHex(UnitReactionColor[self.reaction])
if (self.tapped) then if (self.tapped) then
reactionColor = self:GetHexColor("Tapped") reactionColor = self:GetHexColor("Tapped")
@ -793,14 +907,28 @@ function TargetInfo.prototype:Update(unit)
local line1 = string.format("|c%s%s|r", reactionColor, self.name or '') local line1 = string.format("|c%s%s|r", reactionColor, self.name or '')
self.frame.targetName:SetText(line1) self.frame.targetName:SetText(line1)
end
if DogTag == nil or self.moduleSettings.line2Tag == '' then
local line2 = string.format("%s %s%s%s%s%s", local line2 = string.format("%s %s%s%s%s%s",
self.level or '', self.classLocale or '', self.pvp or '', self.leader or '', self.classification or '', self.combat or '') self.level or '', self.classLocale or '', self.pvp or '', self.leader or '', self.classification or '', self.combat or '')
self.frame.targetInfo:SetText(line2) self.frame.targetInfo:SetText(line2)
end
if DogTag == nil or self.moduleSettings.line3Tag == '' then
local realm = self.realm and " " .. self.realm or "" local realm = self.realm and " " .. self.realm or ""
local line3 = string.format("%s%s", self.guild or '', realm) local line3 = string.format("%s%s", self.guild or '', realm)
self.frame.targetGuild:SetText(line3) self.frame.targetGuild:SetText(line3)
end
-- Parnic - i have no idea why i have to force UpdateFontString here...but
-- if i just do AllForFrame or AllForUnit, then selecting a unit after
-- having nothing selected refuses to update the frames...*sigh*
if DogTag ~= nil then
DogTag:UpdateFontString(self.frame.targetName)
DogTag:UpdateFontString(self.frame.targetInfo)
DogTag:UpdateFontString(self.frame.targetGuild)
end
end end