vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[
-- Name: TinyTip
-- Author: Thrae of Maelstrom (aka "Matthew Carras")
-- Release Date: 6-25-06
--
-- These functions include adding target data. 
-- If you don't use these options, then you can safely 
-- remove it from the TOC.
--]]

local _G = getfenv(0)
local tmp,tmp2,i,pid,RaidTable,c
local strformat = string.format
local tooltip = _G.GameTooltip
local fGetName = UIParent.GetName
local gtAddLine, AddDoubleLine = GameTooltip.AddLine, GameTooltip.AddDoubleLine
local fsSetText, fsGetText = _G.GameTooltipTextLeft1.SetText, _G.GameTooltipTextLeft1.GetText

_G.TinyTipTargetsExists = true

function TinyTipTargets_ResetReferences(_AddLine,_AddDoubleLine, _tooltip)
        gtAddLine, gtAddDoubleLine, tooltip = _AddLine, _AddDoubleLine, _tooltip
end

-- Add Target of Mouseover (what they're targeting)
function TinyTipTargets_Mouse(unit,flag)
        pid = unit .. "target"
        if _G.UnitExists(pid) then
                tmp = _G.UnitIsUnit(pid, "player")
                c = _G[ fGetName(tooltip) .. "TextLeft1" ]
                tmp2 = strformat("%s : |cFF%s%s|r", 
                                (flag == 2 and fsGetText(c)) or _G.TinyTipTargetsLocale_Targeting, 
                                (not tmp and _G.UnitIsPlayer(pid) and _G.TinyTip_ColorPlayer(pid)) or "FFFFFF", 
                                (not tmp and (_G.UnitName(pid) or "Unknown")) or _G.TinyTipTargetsLocale_YOU)
                if flag == 2 then
                        fsSetText( c, tmp2)
                else
                        gtAddLine( tooltip, tmp2)
                end
        end
end

-- Add How Many Raid Members are targeting this unit (except you)
function TinyTipTargets_Raid(unit,num,flag)
                c,tmp2 = 0,nil
                if flag == 2 then
                        if not RaidTable then RaidTable = {} end
                        for c,tmp in RaidTable do
                                if tmp then RaidTable[c]["n"] = 0 end
                        end
                end
                for i = 1,num,1 do
                        pid = "raid" .. i
                        if _G.UnitIsUnit(pid .. "target",unit) and not _G.UnitIsUnit(pid,"player") then
                                if flag == 2 then
                                        _,c = _G.UnitClass(pid)
                                        if c then
                                                if not RaidTable[c] then RaidTable[c] = {} end
                                                if not RaidTable[c]["l"] then RaidTable[c]["l"] = _G.UnitClass(pid) end
                                                RaidTable[c]["n"] = (RaidTable[c]["n"] or 0) + 1
                                        end
                                elseif flag == 3 then
                                        tmp2 = strformat("%s|cFF%s%s|r\n", 
                                                                                  tmp2 or "", _G.TinyTip_ColorPlayer(pid), _G.UnitName(pid) or "Unknown")
                                        c = c + 1
                                else
                                        if not tmp2 then tmp2 = 0 end
                                        tmp2 = tmp2 + 1
                                end
                        end
                end
                if flag == 2 and RaidTable then
                        gtAddLine( tooltip, _G.TinyTipTargetsLocale_TargetedBy .. ":\n" ) 
                        for c,tmp in RaidTable do
                                if tmp and tmp.n and tmp.n > 0 and tmp.l then
                                        gtAddLine( tooltip, strformat("|cFF%s%s|r: %d", 
                                                                                  strformat("%2x%2x%2x", 
                                                                                                                _G.RAID_CLASS_COLORS[c].r*255, 
                                                                                                                _G.RAID_CLASS_COLORS[c].g*255, 
                                                                                                                _G.RAID_CLASS_COLORS[c].b*255), 
                                                                                  tmp.l,
                                                                                  tmp.n ) )
                                end
                        end
                elseif tmp2 and flag == 3 then
                        gtAddLine( tooltip, strformat("%s: %s%s", 
                                                                 _G.TinyTipTargetsLocale_TargetedBy, 
                                                                 ((c > 1) and "\n") or "",
                                                                tmp2) )
                elseif tmp2 and tmp2 > 0 then
                        gtAddLine( tooltip, strformat("%s: (|cFFFFFFFF%s|r) %s", 
                                                                                        _G.TinyTipTargetsLocale_TargetedBy, tostring(tmp2), 
                                                                                        _G.RAID) )
                end
end

-- Add How Many Party Members are targeting this unit (except you)
function TinyTipTargets_Party(unit, num, flag)
                tmp,tmp2 = 0,nil
                for i = 1,num,1 do
                        pid = "party" .. i      
                        if _G.UnitIsUnit(pid .. "target",unit) and not _G.UnitIsUnit(pid, "player") then
                                if flag ~= 2 then
                                        tmp2 = strformat("%s|cFF%s%s|r\n", 
                                                                                  tmp2 or "", _G.TinyTip_ColorPlayer(pid), _G.UnitName(pid) or "Unknown")
                                        tmp = tmp + 1
                                        
                                else
                                        if not tmp2 then tmp2 = 0 end
                                        tmp2 = tmp2 + 1
                                end
                        end
                end
                if tmp2 then
                        if flag ~= 2 then
                                gtAddLine( tooltip, strformat("%s: %s%s", 
                                                                        _G.TinyTipTargetsLocale_TargetedBy, 
                                                                        ((tmp > 0) and "\n") or "",
                                                                        tmp2) )
                        else
                                gtAddLine( tooltip, strformat("%s: (|cFFFFFFFF%s|r) %s", 
                                                                                         _G.TinyTipTargetsLocale_TargetedBy, tmp2, _G.TUTORIAL_TITLE19) )
                        end
                end
end