vanilla-wow-addons – Rev 1
?pathlinks?
--[[
-- Name: TinyTip
-- Author: Thrae of Maelstrom (aka "Matthew Carras")
-- Release Date: 6-25-06
--
-- These functions include more extragant features having
-- specifically to do with textures,
-- such as the PvP Rank Icon or buffs and debuffs.
--]]
local _G = getfenv(0)
local GameTooltip, UIParent,GTStatusBar = _G.GameTooltip, _G.UIParent, _G.GameTooltipStatusBar
local fClearAllPoints, fSetPoint, fHide,fShow,fGetScale = UIParent.ClearAllPoints, UIParent.SetPoint, UIParent.Hide, UIParent.Show, UIParent.GetScale
local txSetTexture, txSetTexCoord, txShow, txHide = _G.CharacterFramePortrait.SetTexture, _G.CharacterFramePortrait.SetTexCoord, _G.CharacterFramePortrait.Show, _G.CharacterFramePortrait.Hide
local db,EventFrame,ExtrasFrame
local tooltip = GameTooltip
local gtAddLine = GameTooltip.AddLine
local fsSetText, fsGetText, fsShow, fsHide = _G.GameTooltipTextLeft1.SetText, _G.GameTooltipTextLeft1.GetText, _G.GameTooltipTextLeft1.Show, _G.GameTooltipTextLeft1.Hide
local strformat= string.format
local TextureTable,NumTextures, NumUnusedTextures, BuffFrame, PvPTexture, PvPIconFrame, RTIcon, RTIconFrame
local i,dtable,tmp,tmp2
_G.TinyTipIconsExists = true
local function SetTextureTable(path,count)
local tx
if NumUnusedTextures > 0 then
tx = TextureTable[ (NumTextures - NumUnusedTextures) + 1 ]
txSetTexture(tx, path)
if count and count > 0 then fsSetText(tx.fs, count ) else fsHide(tx.fs) end
txShow(tx)
NumUnusedTextures = NumUnusedTextures - 1
else
NumTextures = NumTextures + 1
tinsert(TextureTable, BuffFrame:CreateTexture())
tx = TextureTable[ NumTextures ]
txSetTexture(tx, path)
tx.fs = ExtrasFrame:CreateFontString(nil, "ARTWORK", "NumberFontNormal")
if count and count > 0 then fsSetText(tx.fs, count) else fsHide(tx.fs) end
fsShow(tx.fs)
txShow(tx)
end
return tx
end
function TinyTipIcons_ResetTextureTable()
NumUnusedTextures = NumTextures
end
function TinyTipIcons_Init(_db,_EventFrame, _ExtrasFrame, _gtAddLine, _tooltip)
if _db then db = _db end
if _EventFrame then EventFrame = _EventFrame end
if _ExtrasFrame then ExtrasFrame = _ExtrasFrame end
if _gtAddLine then gtAddLine = _gtAddLine end
if _tooltip then tooltip = _tooltip end
if db["PvPIcon"] then
if not PvPIconFrame then PvPIconFrame = _G.CreateFrame("Frame", nil, ExtrasFrame) PvPIconFrame:Show() end
if not PvPTexture then PvPTexture = PvPIconFrame:CreateTexture(nil, "ARTWORK") end
PvPTexture:SetPoint(db["PvPIconAnchor1"] or "TOPRIGHT", tooltip, db["PvPIconAnchor2"] or "TOPLEFT", db["PvPIconOffX"] or 0, db["PvPIconOffY"] or 0)
txHide(PvPTexture)
PvPIconFrame:SetScale(db["PvPIconScale"] or 0.7)
end
if db["RTIcon"] then
if not RTIconFrame then
RTIconFrame = _G.CreateFrame("Frame", nil, ExtrasFrame)
RTIconFrame:Show()
end
RTIconFrame:SetScale(db["RTIconScale"] or 0.1)
if not RTIcon then
RTIcon = RTIconFrame:CreateTexture(nil, "ARTWORK")
txSetTexture(RTIcon, "Interface\\TargetingFrame\\UI-RaidTargetingIcons")
txHide(RTIcon)
end
if db["PvPIcon"] and PvPTexture then
RTIcon:SetPoint(db["RTIconAnchor1"] or "TOPLEFT", PvPTexture, db["RTIconAnchor2"] or "BOTTOMLEFT", db["RTIconOffX"] or 0, db["RTIconOffY"] or 0)
else
RTIcon:SetPoint(db["RTIconAnchor1"] or "TOPRIGHT", tooltip, db["RTIconAnchor2"] or "TOPLEFT", db["RTIconOffX"] or 0, db["RTIconOffY"] or 0)
end
end
if (db["Buffs"] or db["Debuffs"]) then
if not BuffFrame then
BuffFrame = _G.CreateFrame("Frame", nil, ExtrasFrame)
BuffFrame:Show()
end
BuffFrame:SetScale(db["BuffScale"] or 0.2)
if not TextureTable then
TextureTable = {}
NumTextures,NumUnusedTextures = 0,0
end
else
TextureTable = nil
end
end
function TinyTipIcons_ResetRTIcon(unit,numRaid)
tmp = GetRaidTargetIndex(unit)
if numRaid and numRaid > 0 and tmp and tmp > 0 then
tmp = _G.UnitPopupButtons["RAID_TARGET_" .. tmp]
if tmp then
txSetTexCoord(RTIcon, tmp.tCoordLeft, tmp.tCoordRight, tmp.tCoordTop, tmp.tCoordBottom )
txShow(RTIcon)
fShow(ExtrasFrame)
end
else
txHide(RTIcon)
end
end
function TinyTipIcons_ResetPvPIcon(rank,isplayer)
if isplayer and rank > 0 then
txSetTexture(PvPTexture, strformat("%s%02d",
"Interface\\PvPRankBadges\\PvPRank",
rank))
txShow(PvPTexture)
fShow(ExtrasFrame)
else
txHide(PvPTexture)
end
end
function TinyTipIcons_HideUnusedTextures()
local tx
i = NumUnusedTextures
while i > 0 do
tx = TextureTable[ NumTextures - i + 1 ]
txHide(tx)
fsHide(tx.fs)
i = i - 1
end
end
local lastTx
function TinyTipIcons_ShowBuffs(unit)
local flag, count = db["Buffs"], 0
tmp,tmp2 = nil,nil
if flag then
if flag == 1 then num = 8
else num = 32 end
for i = 1,num,1 do
tmp,tmp2 = _G.UnitBuff(unit, i, flag ~= 1)
if tmp then
count = count + 1
if flag ~= 3 then
tmp = SetTextureTable( tmp,tmp2 )
fClearAllPoints(tmp)
if count == 1 then
fSetPoint(tmp, db["BuffAnchor1"] or "BOTTOM", (db["ExtraTooltip"] and _G.TinyTipExtras_Tooltip) or GameTooltip, db["BuffAnchor2"] or "TOPLEFT", db["BuffOffX"] or 0, db["BuffOffY"] or (-2 / fGetScale(UIParent)) )
else
fSetPoint(tmp, "LEFT", lastTx, "RIGHT", 0, 0)
end
fSetPoint(tmp.fs, "BOTTOM", tmp, "TOP", 0, 0)
lastTx = tmp
end
end
end
if flag == 3 and count > 0 then
gtAddLine( tooltip, strformat("%s %s: (|cFFFFFFFF%d|r)", _G.UnitClass("player"), TinyTipExtrasLocale_Buffs, count) )
end
fShow(ExtrasFrame)
end
end
function TinyTipIcons_ShowDebuffs(unit)
local flag, count = db["Debuffs"], 0
tmp,tmp2 = nil,nil
if flag then
if flag >= 4 then
if not dtable then dtable = {} end
for i,_ in TinyTipExtrasLocale_DebuffMap do
dtable[i] = 0
end
end
if flag == 1 then num = 8
else num = 32 end
for i = 1,num,1 do
if flag >= 4 and _G.UnitIsFriend(unit,"player") then
_,_,tmp = _G.UnitDebuff(unit,i,flag ~= 5)
if tmp then dtable[ tmp ] = dtable[ tmp ] + 1 end
else
tmp,tmp2 = _G.UnitDebuff(unit, i, flag ~= 1)
if tmp then
count = count + 1
if flag ~= 3 then
tmp = SetTextureTable( tmp,tmp2 )
fClearAllPoints(tmp)
if count == 1 then
fSetPoint(tmp, db["DebuffAnchor1"] or "TOP", (db["ManaBar"] and _G.TinyTipExtras_ManaBar) or GTStatusBar, db["DebuffAnchor2"] or "BOTTOMLEFT", db["DebuffOffX"] or 0, db["DebuffOffY"] or (2 / fGetScale(UIParent)) )
else
fSetPoint(tmp, "LEFT", lastTx, "RIGHT", 0, 0)
end
fSetPoint(tmp.fs, "TOP", tmp, "BOTTOM", 0, 0)
lastTx = tmp
end
end
end
end
if dtable then
for i,num in dtable do
if num > 0 then
gtAddLine(tooltip, strformat( "%s: (|cFFFFFFFF%d|r)", TinyTipExtrasLocale_DebuffMap[ i ], num) )
end
end
elseif flag == 3 and count > 0 then
gtAddLine(tooltip, strformat("%s: (|cFFFFFFFF%d|r)", TinyTipExtrasLocale_DispellableDebuffs, count) )
end
fShow(ExtrasFrame)
end
end