Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- -- Name: TinyTip
- -- Author: Thrae of Maelstrom (aka "Matthew Carras")
- -- Release Date: 6-25-06
- --
- -- Based very losely off AF_Tooltip_Mini
- -- Some code from PerfectTooltip by cladhaire
- --
- -- Thanks to #wowace and #wowi-lounge on Freenode as always for
- -- optimization assistance.
- --]]
- local _G = getfenv(0)
- local strformat, strfind = string.format, string.find
- local tmp,tmp2,tmp3,i
- local UIParent,GameTooltip = _G.UIParent,_G.GameTooltip
- local tooltip = GameTooltip
- local fGetAlpha, fSetAlpha, fHide, fShow, fSetBDColor, fGetBDColor, fSetBDBColor, fGetBDBColor, fSetPt, fClearPts, fSetScript, fGetName = UIParent.GetAlpha, UIParent.SetAlpha, UIParent.Show, UIParent.Hide, UIParent.SetBackdropColor, UIParent.GetBackdropColor, UIParent.SetBackdropBorderColor, UIParent.GetBackdropBorderColor, UIParent.SetPoint, UIParent.ClearAllPoints, UIParent.GetScript, UIParent.GetName
- local gtIsVisible, gtNumLines, gtAddLine, gtAddDoubleLine, gtLine1, gtLine2, gtLine3, gtSetOwner = GameTooltip.IsVisible, GameTooltip.NumLines, GameTooltip.AddLine, GameTooltip.AddDoubleLine, _G.GameTooltipTextLeft1, _G.GameTooltipTextLeft2, _G.GameTooltipTextLeft3, GameTooltip.SetOwner
- local sbShow = _G.GameTooltipStatusBar.Show
- local fsGetText, fsSetTextColor, fsGetTextColor, fsSetText, fsIsShown, fsGetWidth, fsHide, fsSetHeight, fsGetHeight = _G.GameTooltipTextLeft1.GetText, _G.GameTooltipTextLeft1.SetTextColor, _G.GameTooltipTextLeft1.GetTextColor, _G.GameTooltipTextLeft1.SetText, _G.GameTooltipTextLeft1.IsShown, _G.GameTooltipTextLeft1.GetWidth, _G.GameTooltipTextLeft1.Hide, _G.GameTooltipTextLeft1.SetHeight, _G.GameTooltipTextLeft1.GetHeight
- local EventFrame
- local SpaceLevel = _G.TinyTipLocale_Level .. " "
- local acehook = {}
- _G.AceLibrary:GetInstance("AceHook-2.0"):embed(acehook)
- local db
- local DBVer = 33
- --------------------------------------------------------------------
- -- Global Functions
- -- Print out a message, probably to ChatFrame1
- local DCFAddMessage = _G.DEFAULT_CHAT_FRAME.AddMessage
- function TinyTip_Msg(msg)
- DCFAddMessage(_G.DEFAULT_CHAT_FRAME, "|cFFFFCC00TinyTip:|r " .. msg )
- end
- -- Return ALL possible saved options.
- function TinyTip_GetAllOptions()
- return { ["_profile"] = "boolean",
- ["Fade"] = "number",
- ["MAnchor"] = "string",
- ["FAnchor"] = "string",
- ["MOffX"] = "number",
- ["MOffY"] = "number",
- ["FOffX"] = "number",
- ["FOffY"] = "number",
- ["Scale"] = "number",
- ["HideLevelText"] = "boolean",
- ["HideRace"] = "boolean",
- ["PvPRank"] = "boolean",
- ["PvPIcon"] = "boolean",
- ["BGColor"] = "number",
- ["Border"] = "number",
- ["HideInFrames"] = "boolean",
- ["HideGuild"] = "boolean",
- ["ReactionText"] = "boolean",
- ["Friends"] = "number",
- ["LevelGuess"] = "boolean",
- ["ToT"] = "number",
- ["ToP"] = "number",
- ["ToR"] = "number",
- ["ExtraTooltip"] = "number",
- ["ETAnchor"] = "string",
- ["ETOffX"] = "number",
- ["ETOffY"] = "number",
- ["FormatDisabled"] = "boolean",
- ["Buffs"] = "number",
- ["Debuffs"] = "number",
- ["ManaBar"] = "boolean",
- ["Compact"] = "boolean",
- ["RTIcon"] = "boolean",
- ["AnchorAll"] = "boolean",
- ["PvPIconAnchor1"] = "string",
- ["PvPIconAnchor2"] = "string",
- ["PvPIconOffX"] = "number",
- ["PvPIconOffY"] = "number",
- ["RTIconAnchor1"] = "string",
- ["RTIconAnchor2"] = "string",
- ["RTIconOffX"] = "number",
- ["RTIconOffY"] = "number",
- ["BuffAnchor1"] = "string",
- ["BuffAnchor2"] = "string",
- ["BuffOffX"] = "number",
- ["BuffOffY"] = "number",
- ["DebuffAnchor1"] = "string",
- ["DebuffAnchor2"] = "string",
- ["DebuffOffX"] = "number",
- ["DebuffOffY"] = "number",
- ["PvPIconScale"] = "number",
- ["RTIconScale"] = "number",
- ["BuffScale"] = "number",
- ["KeyElite"] = "boolean",
- ["AlwaysAnchor"] = "boolean",
- ["SmoothBorder"] = "boolean"
- }
- end
- function TinyTip_LoDRun(addon,sfunc,arg1,arg2,arg3,arg4,arg5,arg6)
- if not _G[ sfunc ] then
- local loaded, reason = _G.LoadAddOn(addon)
- if loaded then
- if _G[ sfunc ] and type( _G[ sfunc] ) == "function" then
- _G[ sfunc ](arg1,arg2,arg3,arg4,arg5,arg6)
- end
- else
- _G.TinyTip_Msg( addon .. " Addon LoadOnDemand Error - " .. reason )
- return reason
- end
- elseif type( _G[ sfunc] ) == "function" then
- _G[ sfunc ](arg1,arg2,arg3,arg4,arg5,arg6)
- end
- end
- function TinyTip_UpdateProfiles()
- if _G.TinyTipDB["_profile"] then
- if not _G.TinyTipCharDB then
- local k,v
- _G.TinyTipCharDB = {}
- for k,v in db do
- _G.TinyTipCharDB[k] = v
- end
- end
- db = _G.TinyTipCharDB
- else
- db = _G.TinyTipDB
- end
- if _G.TinyTipAnchor_SetLocals then
- _G.TinyTipAnchor_SetLocals(db,EventFrame)
- end
- if db["PvPIcon"] or db["Buffs"] or db["Debuffs"] then
- _G.TinyTip_LoDRun( "TinyTipExtras", "TinyTipExtras_Init", db, EventFrame)
- end
- end
- -- Destroy the database and reset it with
- -- default values.
- function TinyTip_DefaultDB()
- local k
- for k,_ in db do
- if k ~= "_v" then
- db[k] = nil
- end
- end
- end
- function TinyTip_GetDB()
- return db
- end
- function TinyTip_SetScale(opt,v)
- if not v then
- if _G.TinyTipExtras_Tooltip then
- _G.TinyTipExtras_Tooltip:SetScale( 1.0 )
- else
- GameTooltip:SetScale( 1.0 )
- end
- db["Scale"] = nil
- else
- if _G.TinyTipExtras_Tooltip then
- _G.TinyTipExtras_Tooltip:SetScale( v )
- else
- GameTooltip:SetScale( v )
- end
- db["Scale"] = v
- end
- end
- function TinyTip_ResetReferences(_AddLine, _AddDoubleLine, _ettooltip, _tooltip)
- gtAddLine, gtAddDoubleLine = _AddLine, _AddDoubleLine
- EventFrame.tooltip, tooltip = _ettooltip, _tooltip
- end
- -- Get rid of that darn fading effect
- function TinyTip_SlimOnUpdate()
- tmp = fGetAlpha(GameTooltip)
- if tmp and tmp < 1 then
- if db["Fade"] ~= 1 or tmp < 0.1 or _G.TinyTipExtras_Tooltip then
- fSetScript(EventFrame, "OnUpdate", nil)
- gtSetOwner(GameTooltip, UIParent, "ANCHOR_CURSOR")
- elseif db["ExtraTooltip"] and _G.TinyTipExtras_Tooltip then
- fSetAlpha(_G.TinyTipExtras_Tooltip, tmp )
- end
- end
- end
- local TooltipCompacted
- function TinyTip_UnCompactGameTooltip()
- fClearPts(_G.GameTooltipStatusBar)
- fSetPt(_G.GameTooltipStatusBar, "TOPLEFT", GameTooltip, "BOTTOMLEFT", 2, -1)
- fSetPt(_G.GameTooltipStatusBar, "TOPRIGHT", GameTooltip, "BOTTOMRIGHT", -2, -1)
- fClearPts(gtLine1)
- fSetPt(gtLine1, "TOPLEFT", 10, -10)
- tmp = gtLine1
- for i = 2, 30 do
- tmp2 = _G[ "GameTooltipTextLeft" .. i ]
- fClearPts( tmp2 )
- fSetPt( tmp2, "TOPLEFT", tmp, "BOTTOMLEFT", 0, -2)
- tmp = tmp2
- end
- TooltipCompacted = nil
- end
- --------------------------------------------------------------------
- -- Local Functions
- --[[ Initialize the SavedVariables database.
- * If empty, copies the default table values to it.
- * If mismatched versions, prunes out invalid entries
- and adds new ones.
- * Otherwise just sets the local db.
- --]]
- local function InitDB()
- local k,v
- if not _G.TinyTipDB then
- _G.TinyTip_Msg( _G.TinyTipLocale_InitDB1 )
- _G.TinyTipDB = {}
- db = _G.TinyTipDB
- db["_v"] = DBVer
- _G.TinyTip_Msg( _G.TinyTipLocale_InitDB2 )
- elseif _G.TinyTipDB._profile and not _G.TinyTipCharDB then
- _G.TinyTip_Msg( _G.TinyTipLocale_InitDB1 )
- _G.TinyTipCharDB = {}
- db = _G.TinyTipCharDB
- db["_v"] = DBVer
- _G.TinyTip_Msg( _G.TinyTipLocale_InitDB2 )
- elseif _G.TinyTipDB._v ~= DBVer then
- tmp = _G.TinyTip_GetAllOptions()
- _G.TinyTip_Msg( _G.TinyTipLocale_InitDB3 )
- db = _G.TinyTipDB
- for k,_ in db do -- prune
- if not tmp[k] then
- db[k] = nil
- end
- end
- for k,v in tmp do -- check types
- if type(db[k]) ~= v then
- db[k] = nil
- end
- end
- if db["MAnchor"] == "CURSOR" then db["MAnchor"] = nil end
- db["_v"] = DBVer
- if db["_profile"] then
- if not _G.TinyTipCharDB then _G.TinyTipCharDB = {} end
- db = _G.TinyTipCharDB
- for k,_ in db do -- prune
- if not tmp[k] then
- db[k] = nil
- end
- end
- for k,v in tmp do -- check types
- if type(db[k]) ~= v then
- db[k] = nil
- end
- end
- if db["MAnchor"] == "CURSOR" then db["MAnchor"] = nil end
- end
- tmp = nil
- _G.TinyTip_Msg( _G.TinyTipLocale_InitDB4 )
- elseif _G.TinyTipDB._profile then
- _G.TinyTip_Msg( "Using profile data.")
- _G.TinyTip_Msg( _G.TinyTipLocale_InitDB5 )
- db = _G.TinyTipCharDB
- else
- -- _G.TinyTip_Msg( _G.TinyTipLocale_InitDB5 )
- db = _G.TinyTipDB
- end
- -- nil out what we don't need any longer
- _G.TinyTipLocale_InitDB1 = nil
- _G.TinyTipLocale_InitDB2 = nil
- _G.TinyTipLocale_InitDB3 = nil
- _G.TinyTipLocale_InitDB4 = nil
- _G.TinyTipLocale_InitDB5 = nil
- -- then finally, nil out the function itself
- InitDB = nil
- end
- -- for Tem
- function TinyTip_SmoothBorder(k)
- if k then db[k] = not db[k] end
- if db["SmoothBorder"] then
- GameTooltip:SetBackdrop({
- bgFile = "Interface/Tooltips/UI-Tooltip-Background",
- edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
- tile = false,
- tileSize = 6,
- edgeSize = 18,
- insets = {
- left = 4,
- right = 4,
- top = 4,
- bottom = 4,
- }
- }
- )
- fSetBDColor(GameTooltip, 1, 1, 1, 0.8)
- fSetBDBColor(GameTooltip, 0, 0, 0, 1)
- else
- GameTooltip:SetBackdrop({
- bgFile = "Interface/Tooltips/UI-Tooltip-Background",
- edgeFile = "Interface/Tooltips/UI-Tooltip-Border",
- tile = true,
- tileSize = 16,
- edgeSize = 16,
- insets = {
- left = 5,
- right = 5,
- top = 5,
- bottom = 5,
- }
- }
- )
- fSetBDColor(GameTooltip, 0, 0, 0, 1)
- end
- end
- local function CompactTooltip(tooltip, unit)
- if not TooltipCompacted then
- local lineWidth, largestWidth, fsHHeight, fsHeight, count = 0,0,0,0
- tmp = _G[ fGetName(tooltip) .. "TextLeft1"]
- if tmp and fsIsShown(tmp) then
- count = 1
- _,fsHHeight = tmp:GetFont()
- fClearPts(tmp)
- fSetPt(tmp, "TOPLEFT", 1, 0)
- lineWidth = fsGetWidth(tmp)
- tmp2 = _G[ fGetName(tooltip) .. "TextRight1"]
- if tmp2 and fsIsShown(tmp2) then lineWidth = lineWidth + fsGetWidth(tmp2) + 40 end
- largestWidth = lineWidth
- fClearPts(_G.GameTooltipStatusBar)
- fSetPt(_G.GameTooltipStatusBar, "TOPLEFT", tmp, "BOTTOMLEFT", 0, 0)
- fSetPt(_G.GameTooltipStatusBar, "RIGHT", _G.GameTooltipStatusBar:GetParent(), "RIGHT", 0, 0)
- tmp = _G[ fGetName(tooltip) .. "TextLeft2"]
- if tmp then
- count = 2
- _,fsHeight = tmp:GetFont()
- fClearPts(tmp)
- if db["ManaBar"] and _G.TinyTipExtras_ManaBar:IsShown() then
- fSetPt(tmp, "TOPLEFT", _G.TinyTipExtras_ManaBar, "BOTTOMLEFT", 0, 0)
- count = count + 1
- else
- fSetPt(tmp, "TOPLEFT", _G.GameTooltipStatusBar, "BOTTOMLEFT", 0, 0)
- end
- lineWidth = fsGetWidth(tmp)
- tmp3 = tmp
- tmp2 = _G[ fGetName(tooltip) .. "TextRight2"]
- if tmp2 and fsIsShown(tmp2) then lineWidth = lineWidth + fsGetWidth(tmp2) + 40 end
- if lineWidth > largestWidth then largestWidth = lineWidth end
- tmp = tooltip:NumLines()
- for i = 3,tmp do
- tmp2 = _G[ fGetName(tooltip) .. "TextLeft" .. i ]
- if tmp2 and fsIsShown(tmp2) then
- fClearPts(tmp2)
- fSetPt(tmp2, "TOPLEFT", tmp3, "BOTTOMLEFT", 0, 0)
- lineWidth = fsGetWidth(tmp2)
- count = count + 1
- end
- tmp3 = tmp2
- tmp2 = _G[ fGetName(tooltip) .. "TextRight" .. i ]
- if tmp2 and fsIsShown(tmp2) then
- lineWidth = lineWidth + fsGetWidth(tmp2) + 40
- end
- if lineWidth > largestWidth then largestWidth = lineWidth end
- end
- tooltip:SetWidth( largestWidth + 5 )
- tooltip:SetHeight( fsHHeight + (fsHeight * (count) ) )
- end
- end
- TooltipCompacted = true
- end
- end
- -- Return color format in HEX from Blizzard percentage RGB
- -- for the class.
- function TinyTip_ColorPlayer(unit)
- _,tmp=_G.UnitClass(unit)
- if tmp and _G.RAID_CLASS_COLORS[tmp] then
- return strformat("%2x%2x%2x", _G.RAID_CLASS_COLORS[tmp].r*255,
- _G.RAID_CLASS_COLORS[tmp].g*255,
- _G.RAID_CLASS_COLORS[tmp].b*255)
- else
- return "FFFFFF"
- end
- end
- RAID_CLASS_COLORS = {
- ["HUNTER"] = { r = 0.67, g = 0.83, b = 0.45, colorStr = "ffabd473" },
- ["WARLOCK"] = { r = 0.58, g = 0.51, b = 0.79, colorStr = "ff9482c9" },
- ["PRIEST"] = { r = 1.0, g = 1.0, b = 1.0, colorStr = "ffffffff" },
- ["PALADIN"] = { r = 0.96, g = 0.55, b = 0.73, colorStr = "fff58cba" },
- ["MAGE"] = { r = 0.41, g = 0.8, b = 0.94, colorStr = "ff69ccf0" },
- ["ROGUE"] = { r = 1.0, g = 0.96, b = 0.41, colorStr = "fffff569" },
- ["DRUID"] = { r = 1.0, g = 0.49, b = 0.04, colorStr = "ffff7d0a" },
- ["SHAMAN"] = { r = 0.0, g = 0.44, b = 0.87, colorStr = "ff0070de" },
- ["WARRIOR"] = { r = 0.78, g = 0.61, b = 0.43, colorStr = "ffc79c6e" },
- ["DEATHKNIGHT"] = { r = 0.77, g = 0.12 , b = 0.23, colorStr = "ffc41f3b" },
- ["MONK"] = { r = 0.0, g = 1.00 , b = 0.59, colorStr = "ff00ff96" },
- };
- local PvPLine, PvPBeforeLine
- local function TooltipFormat(unit)
- if gtIsVisible(GameTooltip) and _G.UnitExists(unit) then
- local treac,cdeadortap,bdead,levelLine
- local bdR,bdG,bdB = 0,0,0
- local tR,tG,tB = 0,0,0
- if not db["FormatDisabled"] then
- tmp = gtNumLines(GameTooltip)
- for i = 1,tmp,1 do
- tmp2 = fsGetText(_G[ "GameTooltipTextLeft" .. i ])
- if tmp2 and strfind(tmp2, _G.TinyTipLocale_Level, 1, true) then
- levelLine = _G[ "GameTooltipTextLeft" .. i ]
- break
- end
- end
- -- Get Rank, then Set Name (rankName, rankNumber)
- tmp,tmp2 = _G.GetPVPRankInfo(_G.UnitPVPRank(unit), unit)
- tmp3 = _G.UnitIsPlayer(unit)
- if db["PvPIcon"] and _G.TinyTipIcons_ResetPvPIcon then
- _G.TinyTipIcons_ResetPvPIcon(tmp2, tmp3)
- end
- if tmp3 and db["PvPRank"] ~= 1 and tmp2 > 0 then
- if db["PvPRank"] == 2 then
- fsSetText(gtLine1, tmp .. " " .. (_G.UnitName(unit) or "Unknown" ) )
- elseif db["PvPRank"] == 3 then
- fsSetText(gtLine1, (_G.UnitName(unit) or "Unknown") .. " [R" .. tmp2 .. "]" )
- else
- fsSetText(gtLine1, "[R" .. tmp2 .. "] " .. (_G.UnitName(unit) or "Unknown" ) )
- end
- else
- fsSetText(gtLine1, _G.UnitName(unit) or "Unknown" )
- end
- -- Reaction coloring
- tmp,tmp2 = _G.UnitPlayerControlled(unit), _G.UnitReaction(unit, "player")
- if _G.UnitIsTapped(unit) and not _G.UnitIsTappedByPlayer(unit) then
- if not db["BGColor"] or db["BGColor"] == 2 then
- bdR,bdG,bdB = 0.54,0.54,0.54
- end
- fsSetTextColor(gtLine1, 0.54,0.54,0.54)
- cdeadortap = "888888"
- elseif ( tmp and _G.UnitCanAttack(unit, "player") ) or
- _G.UnitIsTappedByPlayer(unit) or
- ( not tmp and tmp2 and tmp2 > 0 and tmp2 <= 2 ) then -- hostile
- fsSetTextColor(gtLine1, _G.FACTION_BAR_COLORS[tmp2 or 2].r,
- _G.FACTION_BAR_COLORS[tmp2 or 2].g,
- _G.FACTION_BAR_COLORS[tmp2 or 2].b)
- if db["ReactionText"] and tmp2 and tmp2 > 0 then
- treac = _G["FACTION_STANDING_LABEL" .. tmp2]
- else
- treac = _G.FACTION_STANDING_LABEL2
- end
- if not db["BGColor"] or db["BGColor"] == 2 then
- if tmp or db["BGColor"] == 2 then
- if tmp and not _G.UnitCanAttack("player", unit) then
- --_,tmp34=_G.UnitClass(unit)
- --if tmp34 and _G.RAID_CLASS_COLORS[tmp34] then
- --bdR,bdG,bdB = _G.RAID_CLASS_COLORS[tmp34].r,_G.RAID_CLASS_COLORS[tmp34].g,_G.RAID_CLASS_COLORS[tmp34].b
- --else
- bdR,bdG,bdB = 0.5,0.2,0.1
- --end
- else
- _,tmp34=_G.UnitClass(unit)
- if tmp34 and _G.RAID_CLASS_COLORS[tmp34] then
- bdR,bdG,bdB = _G.RAID_CLASS_COLORS[tmp34].r,_G.RAID_CLASS_COLORS[tmp34].g,_G.RAID_CLASS_COLORS[tmp34].b
- else
- bdR,bdG,bdB = 0.5,0.0,0.0
- end
- end
- end
- end
- elseif ( tmp and _G.UnitCanAttack("player",unit) ) or
- ( not tmp and tmp2 and tmp2 <= 4 ) then -- neutral
- fsSetTextColor(gtLine1, _G.FACTION_BAR_COLORS[4].r,
- _G.FACTION_BAR_COLORS[4].g,
- _G.FACTION_BAR_COLORS[4].b)
- if db["ReactionText"] then treac = _G.FACTION_STANDING_LABEL4 end
- if (tmp and not db["BGColor"]) or db["BGColor"] == 2 then
- tooltip:SetBackdropColor( 0.5, 0.5, 0.0)
- end
- else -- friendly
- treac = _G.FACTION_STANDING_LABEL5
- if (tmp and not db["BGColor"]) or db["BGColor"] == 2 then
- bdR,bdG,bdB = 0.0, 0.0, 0.5
- _,tmp33=_G.UnitClass(unit)
- if tmp33 and _G.RAID_CLASS_COLORS[tmp33] then
- bdR,bdG,bdB = _G.RAID_CLASS_COLORS[tmp33].r,_G.RAID_CLASS_COLORS[tmp33].g,_G.RAID_CLASS_COLORS[tmp33].b
- end
- end
- if _G.UnitIsPVP(unit) then -- friendly, PvP-enabled
- fsSetTextColor(gtLine1, _G.FACTION_BAR_COLORS[6].r,
- _G.FACTION_BAR_COLORS[6].g,
- _G.FACTION_BAR_COLORS[6].b)
- else
- fsSetTextColor(gtLine1, (not tmp and _G.FACTION_BAR_COLORS[tmp2 or 5].r) or 0,
- (not tmp and _G.FACTION_BAR_COLORS[tmp2 or 5].g) or 0.67,
- (not tmp and _G.FACTION_BAR_COLORS[tmp2 or 5].b) or 1.0)
- end
- end
- -- remove PvP line, if it exists
- PvP_Line = nil
- if not db["ReactionText"] and _G.UnitIsPVP(unit) then
- tmp = gtNumLines(GameTooltip)
- for i=3,tmp,1 do
- tmp2 = _G["GameTooltipTextLeft" .. i]
- if tmp2 then
- tmp3 = fsGetText(tmp2)
- if tmp3 and strfind(tmp3, _G.PVP_ENABLED, 1, true) then
- PvPLine = tmp2
- PvPBeforeLine = _G["GameTooltipTextLeft" .. (i-1)]
- fsSetText(PvPLine, nil)
- fClearPts(PvPLine)
- fSetPt(PvPLine, "TOPLEFT", PvPBeforeLine or gtLine2, "BOTTOMLEFT", 0, 1)
- fsHide(PvPLine)
- break
- end
- end
- end
- end
- -- We like to know who our friends are.
- if db["Friends"] ~= 2 and
- _G.UnitIsPlayer(unit) and treac == _G.FACTION_STANDING_LABEL5 then
- local num,name = _G.GetNumFriends(), _G.UnitName(unit)
- for i = 1,num,1 do
- tmp,tmp2 = _G.GetFriendInfo(i)
- if tmp and tmp2 ~= 0 and name and tmp == name then
- if db["Friends"] == 1 or db["BGColor"] == 1 or db["BGColor"] == 3 then
- fsSetTextColor(gtLine1, 0.58, 0.0, 0.83)
- else
- bdR,bdG,bdB = 0.29, 0.0, 0.42
- end
- break
- end
- end
- end
- -- Check for a dead unit, but try to leave out Hunter's Feign Death
- if _G.UnitHealth(unit) <= 0 and
- ( not _G.UnitIsPlayer(unit) or _G.UnitIsDeadOrGhost(unit) or _G.UnitIsCorpse(unit) ) then
- if not db["BGColor"] or db["BGColor"] == 2 then
- bdR,bdG,bdB = 0.54, 0.54, 0.54
- end
- fsSetTextColor(gtLine1, 0.54,0.54,0.54)
- cdeadortap = "888888"
- bdead = true
- end
- -- set the color of line 2, if it's available
- if levelLine == gtLine3 then
- fsSetTextColor(gtLine2, fsGetTextColor(gtLine1) )
- end
- if levelLine then
- local clevel
- local ulevel = _G.UnitLevel(unit)
- tmp2 = ulevel - _G.UnitLevel("player") -- Level difficulty
- if tmp2 and _G.UnitFactionGroup(unit) ~= _G.UnitFactionGroup("player") then
- if tmp2 >= 5 or ulevel == -1 then clevel = "FF0000"
- elseif tmp2 >= 3 then clevel = "FF6600"
- elseif tmp2 >= -2 then clevel = "FFFF00"
- elseif -tmp2 <= _G.GetQuestGreenRange() then clevel = "00FF00"
- else clevel = "888888"
- end
- end
- tmp = (not db["HideLevelText"] and SpaceLevel) or ""
- if ulevel and ulevel >= 1 then
- fsSetText(levelLine, "|cFF" ..
- (cdeadortap or clevel or "FFCC00") ..
- tmp ..
- ulevel ..
- "|r")
- elseif db["LevelGuess"] and ulevel and ulevel == -1 and ulevel < 60 then
- fsSetText(levelLine, "|cFF" ..
- (cdeadortap or clevel or "FFCC00") ..
- tmp .. ">" ..
- (_G.UnitLevel("player") + 10 ) ..
- "|r")
- else
- fsSetText(levelLine, "|cFF" ..
- (cdeadortap or clevel or "FFCC00") ..
- tmp ..
- "??|r")
- end
- tmp2 = _G.UnitClassification(unit) -- Elite status
- if tmp2 and tmp2 ~= "normal" then
- if tmp2 == "elite" then
- fsSetText(levelLine, (fsGetText(levelLine) or "") ..
- ((db["KeyElite"] and "") or " ") ..
- "|cFF" ..
- (cdeadortap or "FFCC00") ..
- ((db["KeyElite"] and "*") or _G.ELITE) ..
- "|r" )
- elseif tmp2 == "worldboss" then
- fsSetText(levelLine, (fsGetText(levelLine) or "") ..
- ((db["KeyElite"] and "") or " ") ..
- "|cFF" ..
- (cdeadortap or "FF0000") ..
- ((db["KeyElite"] and "**") or _G.BOSS) ..
- "|r" )
- elseif tmp2 == "rare" then
- fsSetText(levelLine, (fsGetText(levelLine) or "") ..
- ((db["KeyElite"] and "") or " ") ..
- "|cFF" ..
- (cdeadortap or "FF66FF") ..
- ((db["KeyElite"] and "!") or _G.ITEM_QUALITY3_DESC) ..
- "|r" )
- elseif tmp2 == "rareelite" then
- fsSetText(levelLine, (fsGetText(levelLine) or "") ..
- ((db["KeyElite"] and "") or " ") ..
- "|cFF" ..
- (cdeadortap or "FFAAFF") ..
- ((db["KeyElite"] and "!*") or _G.TinyTipLocale_RareElite) ..
- "|r" )
- else
- fsSetText(levelLine, (fsGetText(levelLine) or "") ..
- " [|cFF" ..
- (cdeadortap or "FFFFFF") ..
- tmp2 ..
- "|r]" )
- end
- end
- -- Class And Race
- if _G.UnitIsPlayer(unit) then
- fsSetText(levelLine, (fsGetText(levelLine) or "") ..
- " |cFF" ..
- (cdeadortap or "DDEEAA") ..
- (( not db["HideRace"] and (_G.UnitRace(unit) .. " ") ) or "") ..
- "|r|cFF" ..
- (cdeadortap or TinyTip_ColorPlayer(unit)) ..
- (_G.UnitClass(unit) or "" ) ..
- "|r")
- elseif not db["HideRace"] then
- if _G.UnitPlayerControlled(unit) then
- fsSetText(levelLine, (fsGetText(levelLine) or "") ..
- " |cFF" ..
- (cdeadortap or "DDEEAA") ..
- (_G.UnitCreatureFamily(unit) or "") ..
- "|r")
- else
- fsSetText(levelLine, (fsGetText(levelLine) or "") ..
- " |cFF" ..
- (cdeadortap or "DDEEAA") ..
- (_G.UnitCreatureType(unit) or "") ..
- "|r")
- end
- end
- -- add corpse/tapped line
- if cdeadortap and levelLine then
- fsSetText(levelLine,
- (fsGetText(levelLine) or "") ..
- " |cFF888888(" ..
- ( ( bdead and _G.CORPSE ) or TinyTipLocale_Tapped ) ..
- ")|r")
- end
- end
- end
- if db["ExtraTooltip"] and _G.TinyTipExtras_CopyGameTooltip then
- _G.TinyTipExtras_CopyGameTooltip()
- end
- if not bdead then
- -- Add Reaction Text
- if db["ReactionText"] and treac then
- gtAddLine( tooltip, treac, fsGetTextColor(gtLine1) )
- end
- -- Add Guild info, if enabled
- tmp2 = _G.GetGuildInfo(unit)
- if not db["HideGuild"] and tmp2 then
- tmp = "<" .. tmp2 .. ">"
- if _G.IsInGuild() and tmp2 == _G.GetGuildInfo("player") and db["Friends"] ~= 2 then
- if not db["Friends"] and not _G.UnitIsUnit(unit, "player") and db["BGColor"] ~= 3 and db["BGColor"] ~= 1 then
- bdR,bdG,bdB = 0.4, 0.1, 0.5
- gtAddLine( tooltip, tmp, fsGetTextColor(gtLine1) )
- else
- gtAddLine( tooltip, tmp, 0.58, 0.0, 0.83)
- end
- else
- gtAddLine( tooltip, tmp, fsGetTextColor(gtLine1) )
- end
- end
- if db["RTIcon"] and _G.TinyTipIcons_ResetRTIcon then _G.TinyTipIcons_ResetRTIcon(unit, _G.GetNumRaidMembers()) end
- if db["ToT"] and _G.TinyTipTargets_Mouse then _G.TinyTipTargets_Mouse(unit, db["ToT"]) end
- if db["ToR"] or db["ToP"] then
- tmp,tmp2 = _G.GetNumRaidMembers(), _G.GetNumPartyMembers()
- if db["ToR"] and _G.TinyTipTargets_Raid and tmp and tmp > 0 then _G.TinyTipTargets_Raid(unit, tmp, db["ToR"])
- elseif db["ToP"] and _G.TinyTipTargets_Party and tmp2 and tmp2 > 0 then
- _G.TinyTipTargets_Party(unit, tmp2, db["ToP"])
- end
- end
- if db["Buffs"] and _G.TinyTipIcons_ShowBuffs then _G.TinyTipIcons_ShowBuffs(unit) end
- if db["Debuffs"] and _G.TinyTipIcons_ShowDebuffs then _G.TinyTipIcons_ShowDebuffs(unit) end
- end
- if (db["Buffs"] or db["Debuffs"]) and _G.TinyTipIcons_HideUnusedTextures then _G.TinyTipIcons_HideUnusedTextures() end
- if db["BGColor"] ~= 1 then
- if db["BGColor"] == 3 then
- fSetBDColor(GameTooltip, 0, 0, 0)
- else
- fSetBDColor(GameTooltip, bdR, bdG, bdB )
- end
- end
- if db["Border"] ~= 1 then
- if db["Border"] == 2 then
- fSetBDBColor(GameTooltip, 0,0,0,0)
- else
- local r,g,b = fGetBDColor(GameTooltip)
- r,g,b = r * 1.5, g * 1.5, b * 1.5
- fSetBDBColor(GameTooltip, r,g,b,1)
- end
- end
- this.skipOnShow = nil
- GameTooltip:Show() -- used to re-size gametooltip
- if db["ExtraTooltip"] and _G.TinyTipExtras_Tooltip then
- fSetBDColor(_G.TinyTipExtras_Tooltip, fGetBDColor(GameTooltip) )
- fSetBDBColor( _G.TinyTipExtras_Tooltip, fGetBDBColor(GameTooltip) )
- fSetBDColor(GameTooltip, 0,0,0)
- fSetBDBColor(GameTooltip, 0,0,0,0)
- _G.TinyTipExtras_Tooltip:Show()
- end
- if db["Compact"] then CompactTooltip(EventFrame.tooltip, unit) end
- end
- end
- -- arg1=this,arg2=unit
- _G.TinyTip_Original_GameTooltip_SetUnit = nil
- function TinyTip_SetUnit(this,unit,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)
- this.skipOnShow = true
- if unit ~= "mouseover" and _G.TinyTip_Original_GameTooltip_SetUnit then
- _G.TinyTip_Original_GameTooltip_SetUnit(this,unit,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)
- end
- GameTooltip.unit = unit
- if db["HideInFrames"] and unit ~= "mouseover" then
- fSetScript(EventFrame, "OnUpdate", nil)
- fSetAlpha(GameTooltip, 0.01)
- if GameTooltip.owner then
- fClearPts(GameTooltip)
- GameTooltip:SetOwner(GameTooltip.owner, "ANCHOR_NONE")
- end
- else
- if db["ManaBar"] and _G.TinyTipExtras_ManaBar then sbShow(_G.TinyTipExtras_ManaBar) end
- TooltipFormat(unit)
- GameTooltip.unit = unit
- if db["ExtraTooltip"] and _G.TinyTipAnchor_SetDefaultAnchor then
- _G.TinyTipAnchor_SetDefaultAnchor(_G.TinyTipExtras_Tooltip, GameTooltip.owner)
- end
- end
- this.skipOnShow = nil
- end
- _G.TinyTip_Original_GameTooltip_FadeOut = nil
- function TinyTip_FadeOut(this,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)
- if db["Fade"] == 2 or db["ExtraTooltip"] then
- GameTooltip:Hide()
- elseif _G.TinyTip_Original_GameTooltip_FadeOut then
- _G.TinyTip_Original_GameTooltip_FadeOut(this,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)
- end
- end
- local Original_GameTooltip_OnTooltipCleared
- function TinyTip_OnTooltipCleared(this,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)
- if Original_GameTooltip_OnTooltipCleared then
- Original_GameTooltip_OnTooltipCleared(this,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)
- end
- if (db["Compact"] or TooltipCompacted) and not db["ExtraTooltip"] then
- _G.TinyTip_UnCompactGameTooltip()
- elseif PvPLine then
- fClearPts(PvPLine)
- fSetPt(PvPLine, "TOPLEFT", PvPBeforeLine or gtLine2, "BOTTOMLEFT", 0, -2)
- PvPLine,PvPBeforeLine = nil, nil
- end
- GameTooltip.unit = nil
- fSetScript(EventFrame, "OnUpdate", nil)
- _G.GameTooltip_ClearMoney()
- end
- _G.TinyTip_Original_GameTooltip_OnShow = nil
- function TinyTip_OnShow(this,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)
- if _G.TinyTip_Original_GameTooltip_OnShow and not this.skipOnShow then
- _G.TinyTip_Original_GameTooltip_OnShow(this,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10)
- end
- if db["AlwaysAnchor"] and not GameTooltip.unit and not _G.UnitExists("mouseover") and not EventFrame:GetScript("OnUpdate") and _G.TinyTipAnchor_AlwaysAnchor then
- fSetScript(EventFrame, "OnUpdate", _G.TinyTipAnchor_AlwaysAnchor)
- end
- if GameTooltip.unit then
- _G.GameTooltip_ClearMoney()
- end
- end
- local function OnEvent()
- if _G.event == "UPDATE_MOUSEOVER_UNIT" then
- if UnitExists("mouseover") then
- GameTooltip:SetUnit("mouseover")
- end
- elseif _G.event == "PLAYER_ENTERING_WORLD" and db then -- rescale
- _G.TinyTip_SetScale("Scale", db["Scale"] )
- if _G.TinyTipExtras_Init then _G.TinyTipExtras_Init(db) end
- elseif _G.event == "ADDON_LOADED" and _G.arg1 == "TinyTip" then
- InitDB()
- if _G.TinyTipAnchor_SetLocals then
- _G.TinyTipAnchor_SetLocals(db,EventFrame,acehook)
- end
- local ttextraserror = true
- if db["UseAceHook"] or db["PvPIcon"] or db["Buffs"] or db["Debuffs"] or db["ExtraTooltip"] or db["ManaBar"] or db["RTIcon"] then
- ttextraserror = _G.TinyTip_LoDRun( "TinyTipExtras", "TinyTipExtras_Init", db, EventFrame,acehook)
- elseif db["ToT"] or db["ToP"] or db["ToR"] then
- _G.TinyTip_LoDRun( "TinyTipExtras", "TinyTipTargetsExists")
- end
- if not acehook:IsHooked(GameTooltip, "FadeOut") and ( db["Fade"] == 2 or db["ExtraTooltip"] ) then
- acehook:Hook(GameTooltip, "FadeOut", _G.TinyTip_FadeOut)
- _G.TinyTip_Original_GameTooltip_FadeOut = acehook.hooks[GameTooltip]["FadeOut"].orig
- end
- if not acehook:IsHooked(GameTooltip, "OnShow") then
- acehook:HookScript(GameTooltip, "OnShow", _G.TinyTip_OnShow)
- _G.TinyTip_Original_GameTooltip_OnShow = acehook.hooks[GameTooltip]["OnShow"].orig
- end
- if not acehook:IsHooked(GameTooltip, "OnTooltipCleared") then -- most sure-fire way to hide something
- acehook:HookScript(GameTooltip, "OnTooltipCleared", _G.TinyTip_OnTooltipCleared)
- _G.TinyTip_Original_GameTooltip_OnTooltipCleared = acehook.hooks[GameTooltip]["OnTooltipCleared"].orig
- end
- _G.TinyTip_SetScale( "Scale", db["Scale"] )
- if db["Fade"] == 2 then
- EventFrame:SetScript("OnUpdate", _G.TinyTip_SlimOnUpdate)
- end
- TinyTip_SmoothBorder()
- EventFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
- EventFrame:RegisterEvent("UPDATE_MOUSEOVER_UNIT")
- GameTooltip:UnregisterEvent("UPDATE_MOUSEOVER_UNIT")
- end
- end
- -----------------------------------------------------------------------
- -- WoW-Required Functions
- --
- _G.SlashCmdList["TINYTIP"] = function(msg)
- if db then
- _G.TinyTip_LoDRun( "TinyTipOptions", "TinyTipChat_SlashHandler", msg, db)
- end
- end
- -----------------------------------------------------------------------
- -- Ready the mod
- --
- EventFrame = _G.CreateFrame("Frame", "TinyTipEventFrame", GameTooltip)
- EventFrame:SetScript("OnEvent", OnEvent)
- EventFrame:RegisterEvent("ADDON_LOADED")
- EventFrame:Show()
- EventFrame.tooltip = GameTooltip
- -- hook these immediatly
- if _G.TinyTipAnchor_Hook then TinyTipAnchor_Hook(acehook) end
- if not acehook:IsHooked(GameTooltip, "SetUnit") then
- acehook:Hook(GameTooltip, "SetUnit", _G.TinyTip_SetUnit)
- _G.TinyTip_Original_GameTooltip_SetUnit = acehook.hooks[GameTooltip]["SetUnit"].orig
- end
Add Comment
Please, Sign In to add comment