From b0c060cde95ab10b491ff00c9e5da3be12ab7171 Mon Sep 17 00:00:00 2001 From: Scott Sibley Date: Thu, 21 Jul 2011 01:36:57 -0500 Subject: [PATCH] Delete stray files possibly created by svn->git conversion. Looks like oddities are tamed for the time being. --- Modules/Appearance.lua | 439 ----------------------------- Modules/Bars.lua | 217 -------------- Modules/Fade.lua | 201 ------------- Modules/Position.lua | 364 ------------------------ Modules/PvP.lua | 48 ---- Modules/RaidIcon.lua | 47 ---- Modules/Targeting.lua | 34 --- Modules/Text.lua | 730 ------------------------------------------------ 8 files changed, 2080 deletions(-) delete mode 100644 Modules/Appearance.lua delete mode 100644 Modules/Bars.lua delete mode 100644 Modules/Fade.lua delete mode 100644 Modules/Position.lua delete mode 100644 Modules/PvP.lua delete mode 100644 Modules/RaidIcon.lua delete mode 100644 Modules/Targeting.lua delete mode 100644 Modules/Text.lua diff --git a/Modules/Appearance.lua b/Modules/Appearance.lua deleted file mode 100644 index 51a6b8e..0000000 --- a/Modules/Appearance.lua +++ /dev/null @@ -1,439 +0,0 @@ -local mod = StarTip:NewModule("Appearance") -mod.name = "Appearance" -local _G = _G -local StarTip = _G.StarTip -local GameTooltip = _G.GameTooltip -local ShoppingTooltip1 = _G.ShoppingTooltip1 -local ShoppingTooltip2 = _G.ShoppingTooltip2 -local self = mod -local LSM = _G.LibStub("LibSharedMedia-3.0") - -local defaults = { - profile = { - scale = 1, - font = StarTip:GetLSMIndexByName("font", LSM:GetDefault("font")), - edgeFile = StarTip:GetLSMIndexByName("border", "Blizzard Tooltip"), - background = StarTip:GetLSMIndexByName("background", "Blizzard Tooltip"), - bgColor = { -- Default colors from CowTip - guild = {0, 0.15, 0, 1}, - hostilePC = {0.25, 0, 0, 1}, - hostileNPC = {0.15, 0, 0, 1}, - neutralNPC = {0.15, 0.15, 0, 1}, - friendlyPC = {0, 0, 0.25, 1}, - friendlyNPC = {0, 0, 0.15, 1}, - other = {0, 0, 0, 1}, - dead = {0.15, 0.15, 0.15, 1}, - tapped = {0.25, 0.25, 0.25, 1}, - }, - borderColor = { 1, 1, 1, 1 }, - padding = 4, - edgeSize = 16, - } -} - -local backdropParts = {bgFile = true, edgeFile = true, edgeSize = true, background = true} -local otherParts = {scale = "SetScale", font = "SetFont"} - -local get = function(info) - return self.db.profile[info[#info]] -end - -local set = function(info, v) - self.db.profile[info[#info]] = v - if info[#info] == "bgColor" then return end - if backdropParts[info[#info]] then - self:SetBackdrop() - elseif info[#info] == "scale" then - self:SetScale() - else - self:SetFont() - end -end - -local options = { - scale = { - name = "Scale Slider", - desc = "Adjust tooltip scale", - type = "range", - min = 0.25, - max = 4, - step = 0.01, - bigStep = 0.05, - isPercent = true, - get = get, - set = set, - order = 4 - }, - font = { - name = "Tooltip Font", - desc = "Set the tooltip's font", - type = "select", - values = LSM:List("font"), - get = get, - set = set, - order = 5 - }, - edgeFile = { - name = "Tooltip Border", - desc = "Set the tooltip's border style", - type = "select", - values = LSM:List("border"), - get = get, - set = set, - order = 6 - }, - background = { - name = "Tooltip Background", - desc = "Set the tooltip's background style", - type = "select", - values = LSM:List("background"), - get = get, - set = set, - order = 7 - }, - borderColor = { - name = "Tooltip Border Color", - desc = "Set the color of the tooltip's border", - type = "color", - hasAlpha = true, - get = function() return unpack(self.db.profile.borderColor) end, - set = function(info, r, g, b, a) - self.db.profile.borderColor[1] = r - self.db.profile.borderColor[2] = g - self.db.profile.borderColor[3] = b - self.db.profile.borderColor[4] = a - end, - order = 8 - }, - padding = { - name = "Tooltip Padding", - desc = "Set the tooltip's padding", - type = "range", - min = 0, - max = 20, - step = 1, - get = get, - set = set, - order = 9 - }, - edgeSize = { - name = "Tooltip Edge Size", - desc = "Set the tooltip's edge size", - type = "range", - min = 0, - max = 20, - step = 1, - get = get, - set = set, - order = 10 - }, - bgColor = { - name = "Background Color", - desc = "Set options for background color", - type = "group", - get = function(info) - return unpack(self.db.profile.bgColor[info[#info]]) - end, - set = function(info, r, g, b, a) - self.db.profile.bgColor[info[#info]][1] = r - self.db.profile.bgColor[info[#info]][2] = g - self.db.profile.bgColor[info[#info]][3] = b - self.db.profile.bgColor[info[#info]][4] = a - self:SetBackdropColor() - end, - args = { - header = { - name = "Background Color", - type = "header", - order = 1 - }, - guild = { - name = "Guild and friends", - desc = "Background color for your guildmates and friends.", - type = "color", - hasAlpha = true, - width = "full", - order = 2 - }, - hostilePC = { - name = "Hostile players", - desc = "Background color for hostile players.", - type = "color", - hasAlpha = true, - width = "full", - order = 3 - }, - hostileNPC = { - name = "Hostile non-player characters", - desc = "Background color for hostile non-player characters.", - type = "color", - hasAlpha = true, - width = "full", - order = 4 - }, - neutralNPC = { - name = "Neutral non-player characters", - desc = "Background color for neutral non-player characters.", - type = "color", - hasAlpha = true, - width = "full", - order = 5 - }, - friendlyPC = { - name = "Friendly players", - desc = "Background color for friendly players.", - type = "color", - hasAlpha = true, - width = "full", - order = 6 - }, - friendlyNPC = { - name = "Friendly non-player characters", - desc = "Background color for friendly non-player characters.", - type = "color", - hasAlpha = true, - width = "full", - order = 7 - }, - dead = { - name = "Dead", - desc = "Background color for dead units.", - type = "color", - hasAlpha = true, - width = "full", - order = 8 - }, - tapped = { - name = "Tapped", - desc = "Background color for when a unit is tapped by another.", - type = "color", - hasAlpha = true, - width = "full", - order = 9 - }, - other = { - name = "Other Tooltips", - desc = "Background color for other tooltips.", - type = "color", - hasAlpha = true, - width = "full", - order = 10 - } - } - } -} - -function mod:OnInitialize() - self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults) - StarTip:SetOptionsDisabled(options, true) - self.st1left, self.st1right, self.st2left, self.st2right = {}, {}, {}, {} - for i = 1, 50 do - ShoppingTooltip1:AddDoubleLine(' ', ' ') - ShoppingTooltip2:AddDoubleLine(' ', ' ') - self.st1left[i] = _G["ShoppingTooltip1TextLeft" .. i] - self.st1right[i] = _G["ShoppingTooltip1TextLeft" .. i] - self.st2left[i] = _G["ShoppingTooltip2TextRight" .. i] - self.st2right[i] = _G["ShoppingTooltip2TextRight" .. i] - end - ShoppingTooltip1:Show() - ShoppingTooltip1:Hide() - ShoppingTooltip2:Show() - ShoppingTooltip2:Hide() -end - -function mod:OnEnable() - self:SetScale() - self:SetFont() - self:SetBackdrop() - self:SetBorderColor() - self:SetBackdropColor(true) - StarTip:SetOptionsDisabled(options, false) -end - -function mod:OnDisable() - self:SetScale(true) - self:SetFont(true) - self:SetBorderColor(true) - self:SetBackdrop(true) - self:SetBackdropColor(true) - StarTip:SetOptionsDisabled(options, true) -end - -function mod:GetOptions() - return options -end - -function mod:SetUnit() - self.origBackdrop = self.origBackdrop or GameTooltip:GetBackdrop() - self.origBackdropColor = self.origBackdropColor or {GameTooltip:GetBackdropColor()} -end - -function mod:OnHide() - self:SetBackdropColor(true) -end - -function mod:OnShow() - self:SetBackdropColor() -end - -function mod:SetScale(reset) - if reset then - GameTooltip:SetScale(1) - ShoppingTooltip1:SetScale(1) - ShoppingTooltip2:SetScale(1) - - else - GameTooltip:SetScale(self.db.profile.scale) - ShoppingTooltip1:SetScale(self.db.profile.scale) - ShoppingTooltip2:SetScale(self.db.profile.scale) - - end -end - -function mod:SetFont(reset) - local font - if reset then - font = "Friz Quadrata TT" - else - font = LSM:Fetch('font', LSM:List("font")[self.db.profile.font]) - end - - if StarTip.leftLines[1]:GetFont() == font then - return - end - for i = 1, 50 do - local left = StarTip.leftLines[i] - local right = StarTip.rightLines[i] - local _, size, style = left:GetFont() - left:SetFont(font, size, style) - _, size, style = right:GetFont() - right:SetFont(font, size, style) - - left = self.st1left[i] - right = self.st1right[i] - _, size, style = left:GetFont() - left:SetFont(font, size, style) - _, size, style = right:GetFont() - right:SetFont(font, size, style) - - left = self.st2left[i] - right = self.st2right[i] - _, size, style = left:GetFont() - left:SetFont(font, size, style) - _, size, style = right:GetFont() - right:SetFont(font, size, style) - end -end - - -local tmp, tmp2 = {}, {} -function mod:SetBackdrop() - if reset then - GameTooltip:SetBackdrop(self.origBackdrop) - ShoppingTooltip1:SetBackdrop(self.origBackdrop) - ShoppingTooltip2:SetBackdrop(self.origBackdrop) - else - local bd = GameTooltip:GetBackdrop() - local changed = false - local bgFile = LSM:Fetch('background', LSM:List('background')[self.db.profile.background]) - local edgeFile = LSM:Fetch('border', LSM:List('border')[self.db.profile.edgeFile]) - - if bd.bgFile ~= bgFile or bd.edgeFile ~= edgeFile or bd.edgeSize ~= self.db.profile.edgeSize or bd.insets.left ~= self.db.profile.padding then - changed = true - end - - if changed then - tmp.bgFile = bgFile - tmp.edgeFile = edgeFile - tmp.tile = false - tmp.edgeSize = self.db.profile.edgeSize - tmp.insets = tmp2 - tmp2.left = self.db.profile.padding - tmp2.right = self.db.profile.padding - tmp2.top = self.db.profile.padding - tmp2.bottom = self.db.profile.padding - GameTooltip:SetBackdrop(tmp) - ShoppingTooltip1:SetBackdrop(tmp) - ShoppingTooltip2:SetBackdrop(tmp) - end - end -end - -function mod:SetBackdropColor(reset) - if reset then - if self.origBackdropColor then - GameTooltip:SetBackdropColor(unpack(self.origBackdropColor)) - ShoppingTooltip1:SetBackdropColor(unpack(self.origBackdropColor)) - ShoppingTooltip2:SetBackdropColor(unpack(self.origBackdropColor)) - else - GameTooltip:SetBackdropColor(0,0,0,1) - ShoppingTooltip1:SetBackdropColor(0,0,0,1) - ShoppingTooltip2:SetBackdropColor(0,0,0,1) - end - else -- Snagged from CowTip - local kind - if UnitExists("mouseover") then - if UnitIsDeadOrGhost("mouseover") then - kind = 'dead' - elseif UnitIsTapped("mouseover") and not UnitIsTappedByPlayer("mouseover") then - kind = 'tapped' - elseif UnitIsPlayer("mouseover") then - if UnitIsFriend("player", "mouseover") then - local playerGuild = GetGuildInfo("player") - if playerGuild and playerGuild == GetGuildInfo("mouseover") or UnitIsUnit("player", "mouseover") then - kind = 'guild' - else - local friend = false - local name = UnitName("mouseover") - for i = 1, GetNumFriends() do - if GetFriendInfo(i) == name then - friend = true - break - end - end - if friend then - kind = 'guild' - else - kind = 'friendlyPC' - end - end - else - kind = 'hostilePC' - end - else - if UnitIsFriend("player", "mouseover") then - kind = 'friendlyNPC' - else - local reaction = UnitReaction("mouseover", "player") - if not reaction or reaction <= 2 then - kind = 'hostileNPC' - else - kind = 'neutralNPC' - end - end - end - else - kind = 'other' - end - GameTooltip:SetBackdropColor(unpack(self.db.profile.bgColor[kind])) - if kind == 'other' then - ShoppingTooltip1:SetBackdropColor(unpack(self.db.profile.bgColor[kind])) - ShoppingTooltip2:SetBackdropColor(unpack(self.db.profile.bgColor[kind])) - end - end -end - -function mod:SetBorderColor(reset) - if reset then - GameTooltip:SetBackdropBorderColor(1,1,1,1) - ShoppingTooltip1:SetBackdropBorderColor(1,1,1,1) - ShoppingTooltip2:SetBackdropBorderColor(1,1,1,1) - else - GameTooltip:SetBackdropBorderColor(unpack(self.db.profile.borderColor)) - ShoppingTooltip1:SetBackdropBorderColor(unpack(self.db.profile.borderColor)) - ShoppingTooltip2:SetBackdropBorderColor(unpack(self.db.profile.borderColor)) - end -end - - - diff --git a/Modules/Bars.lua b/Modules/Bars.lua deleted file mode 100644 index f7b8a81..0000000 --- a/Modules/Bars.lua +++ /dev/null @@ -1,217 +0,0 @@ -local mod = StarTip:NewModule("Bars", "AceTimer-3.0") -mod.name = "Bars" -local _G = _G -local StarTip = _G.StarTip -local GameTooltip = _G.GameTooltip -local GameTooltipStatusBar = _G.GameTooltipStatusBar -local UnitIsPlayer = _G.UnitIsPlayer -local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS -local UnitSelectionColor = _G.UnitSelectionColor -local UnitClass = _G.UnitClass -local self = mod -local timer -local LSM = _G.LibStub("LibSharedMedia-3.0") - -local defaults = { - profile = { - showHP = true, - showMP = true, - hpTexture = StarTip:GetLSMIndexByName("statusbar", LSM:GetDefault("statusbar")), - mpTexture = StarTip:GetLSMIndexByName("statusbar", LSM:GetDefault("statusbar")), - useGradient = false, - } -} - -local options = { - hpBar = { - name = "HP Bar", - type = "group", - args = { - show = { - name = "Show", - desc = "Toggle showing the HP bar", - type = "toggle", - get = function() return self.db.profile.showHP end, - set = function(info, v) self.db.profile.showHP = v end, - order = 1 - }, - useGradient = { - name = "Use Gradient", - desc = "Set whether to use a gradient based on unit health", - type = "toggle", - get = function() return self.db.profile.useGradient end, - set = function(info, v) self.db.profile.useGradient = v end, - order = 3 - }, - texture = { - name = "Texture", - desc = "Change the status bar's texture", - type = "select", - values = LSM:List("statusbar"), - get = function() return self.db.profile.hpTexture end, - set = function(info, v) - self.db.profile.hpTexture = v - self.hpBar:SetStatusBarTexture(LSM:Fetch("statusbar", LSM:List("statusbar")[v])) - end, - order = 2 - }, - } - }, - mpBar = { - name = "MP Bar", - type = "group", - args = { - show = { - name = "Show", - desc = "Toggle showing the MP bar", - type = "toggle", - get = function() return self.db.profile.showMP end, - set = function(info, v) self.db.profile.showMP = v end, - order = 1 - }, - texture = { - name = "Texture", - desc = "Change the status bar's texture", - type = "select", - values = LSM:List("statusbar"), - get = function() return self.db.profile.mpTexture end, - set = function(info, v) - self.db.profile.mpTexture = v - self.mpBar:SetStatusBarTexture(LSM:Fetch("statusbar", LSM:List("statusbar")[v])) - end, - order = 2 - } - } - } -} - - -function mod:OnInitialize() - self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults) - - local hpBar = CreateFrame("StatusBar", nil, GameTooltip) - hpBar:SetStatusBarTexture(LSM:Fetch("statusbar", LSM:List("statusbar")[self.db.profile.hpTexture])) - hpBar:SetPoint("BOTTOMLEFT", GameTooltip, "TOPLEFT") - hpBar:SetPoint("LEFT", GameTooltip, "LEFT") - hpBar:SetPoint("RIGHT", GameTooltip, "RIGHT") - hpBar:SetHeight(5) - hpBar:Hide() - self.hpBar = hpBar - - local mpBar = CreateFrame("StatusBar", nil, GameTooltip) - mpBar:SetStatusBarTexture(LSM:Fetch("statusbar", LSM:List("statusbar")[self.db.profile.mpTexture])) - mpBar:SetPoint("TOPLEFT", GameTooltip, "BOTTOMLEFT") - mpBar:SetPoint("LEFT") - mpBar:SetPoint("RIGHT") - mpBar:SetHeight(5) - mpBar:Hide() - self.mpBar = mpBar - - StarTip:SetOptionsDisabled(options, true) -end - -function mod:OnEnable() - local top, bottom = 0, 0 - if self.db.profile.showHP then - top = 5 - end - if self.db.profile.showMP then - bottom = -5 - end - GameTooltip:SetClampRectInsets(0, 0, top, bottom) - StarTip:SetOptionsDisabled(options, false) -end - -function mod:OnDisable() - GameTooltip:SetClampRectInsets(0, 0, 0, 0) - StarTip:SetOptionsDisabled(options, true) -end - -function mod:GetOptions() - return options -end - -local function updateBars() - if self.db.profile.showHP then self:UpdateHealth() end - if self.db.profile.showMP then self:UpdateMana() end -end - -function mod:SetUnit() - GameTooltipStatusBar:Hide() - updateBars() - if self.db.profile.showHP then self.hpBar:Show() end - if self.db.profile.showMP then self.mpBar:Show() end - timer = timer or self:ScheduleRepeatingTimer(updateBars, .5) -end - -function mod:OnHide() - if timer then - self:CancelTimer(timer) - timer = nil - end - self.hpBar:Hide() - self.mpBar:Hide() -end - -local function colorGradient(perc) - if perc <= 0.5 then - return 1, perc*2, 0 - else - return 2 - perc*2, 1, 0 - end -end - --- Colors, snagged from oUF -local power = { - [0] = { r = 48/255, g = 113/255, b = 191/255}, -- Mana - [1] = { r = 226/255, g = 45/255, b = 75/255}, -- Rage - [2] = { r = 255/255, g = 178/255, b = 0}, -- Focus - [3] = { r = 1, g = 1, b = 34/255}, -- Energy - [4] = { r = 0, g = 1, b = 1}, -- Happiness - [5] = {}, --Unknown - [6] = { r = 0.23, g = 0.12, b = 0.77 } -- Runic Power -} -local health = { - [0] = {r = 49/255, g = 207/255, b = 37/255}, -- Health - [1] = {r = .6, g = .6, b = .6} -- Tapped targets -} -local happiness = { - [1] = {r = 1, g = 0, b = 0}, -- need.... | unhappy - [2] = {r = 1 ,g = 1, b = 0}, -- new..... | content - [3] = {r = 0, g = 1, b = 0}, -- colors.. | happy -} - --- Logic snagged from oUF -function mod:UpdateHealth() - local unit = "mouseover" - if not UnitExists(unit) then return end - local min, max = UnitHealth(unit), UnitHealthMax(unit) - self.hpBar:SetMinMaxValues(0, max) - self.hpBar:SetValue(min) - - local color - if self.db.profile.useGradient then - color = {} - color.r, color.g, color.b = colorGradient(min/max) - elseif(UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit) or not UnitIsConnected(unit)) then - color = health[1] - elseif UnitIsPlayer(unit) then - color = RAID_CLASS_COLORS[select(2, UnitClass(unit))] - else - color = {} - color.r, color.g, color.b = UnitSelectionColor(unit) - end - if not color then color = health[0] end - self.hpBar:SetStatusBarColor(color.r, color.g, color.b) -end - -function mod:UpdateMana() - local unit = "mouseover" - if not UnitExists(unit) then return end - local min, max = UnitMana(unit), UnitManaMax(unit) - self.mpBar:SetMinMaxValues(0, max) - self.mpBar:SetValue(min) - - local color = power[UnitPowerType(unit)] - self.mpBar:SetStatusBarColor(color.r, color.g, color.b) -end diff --git a/Modules/Fade.lua b/Modules/Fade.lua deleted file mode 100644 index be7d0ae..0000000 --- a/Modules/Fade.lua +++ /dev/null @@ -1,201 +0,0 @@ -local mod = StarTip:NewModule("Fade", "AceHook-3.0") -mod.name = "Fade" -local _G = _G -local GameTooltip = _G.GameTooltip -local StarTip = _G.StarTip -local UnitExists = _G.UnitExists -local self = mod - -local defaults = { - profile = { - unitFrames = 1, - otherFrames = 1, - units = 2, - objects = 2, - } -} - -local choices = { - "Hide", - "Fade out" -} - -local get = function(info) - return self.db.profile[info[#info]] -end - -local set = function(info, v) - self.db.profile[info[#info]] = v -end - -local options = { - units = { - name = "World Units", - desc = "What to do with tooltips for world frames", - type = "select", - values = choices, - get = get, - set = set, - order = 4 - }, - unitFrames = { - name = "Unit Frames", - desc = "What to do with tooltips for unit frames", - type = "select", - values = choices, - get = get, - set = set, - order = 5 - }, - otherFrames = { - name = "Other Frames", - desc = "What to do with tooltips for other frames (spells, macros, items, etc..)", - type = "select", - values = choices, - get = get, - set = set, - order = 6 - }, - objects = { - name = "World Objects", - desc = "What to do with tooltips for world objects (mailboxes, portals, etc..)", - type = "select", - values = choices, - get = get, - set = set, - order = 7 - } -} - -function mod:OnInitialize() - self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults) - StarTip:SetOptionsDisabled(options, true) -end - -function mod:OnEnable() - self:RawHook(GameTooltip, "FadeOut", "GameTooltipFadeOut", true) - self:RawHook(GameTooltip, "Hide", "GameTooltipHide", true) - StarTip:SetOptionsDisabled(options, false) -end - -function mod:OnDisable() - self:Unhook(GameTooltip, "FadeOut") - self:Unhook(GameTooltip, "Hide") - StarTip:SetOptionsDisabled(options, true) - if timer then - self:CancelTimer(timer) - timer = nil - end -end - -function mod:GetOptions() - return options -end - --- CowTip's solution below -local updateExistenceFrame = CreateFrame("Frame") -local updateAlphaFrame = CreateFrame("Frame") - -local checkExistence = function() - if not UnitExists("mouseover") then - updateExistenceFrame:SetScript("OnUpdate", nil) - local kind - if GameTooltip:IsOwned(UIParent) then - kind = self.db.profile.units - else - kind = self.db.profile.unitFrames - end - if kind == 2 then - GameTooltip:FadeOut() - else - GameTooltip:Hide() - end - end -end - -local checkTooltipAlpha = function() - if GameTooltip:GetAlpha() < 1 then - updateAlphaFrame:SetScript("OnUpdate", nil) - local kind - if GameTooltip:IsOwned(UIParent) then - kind = self.db.profile.objects - else - kind = self.db.profile.otherFrames - end - if kind == 2 then - GameTooltip:FadeOut() - else - GameTooltip:Hide() - end - end -end - -function mod:OnShow() - if UnitExists("mouseover") then - updateExistenceFrame:SetScript("OnUpdate", checkExistence) - else - updateAlphaFrame:SetScript("OnUpdate", checkTooltipAlpha) - end -end - -function mod:GameTooltipFadeOut(this, ...) - if self.justFade then - self.justFade = nil - self.hooks[this].FadeOut(this, ...) - return - end - local kind - if self.isUnit then - if GameTooltip:IsOwned(UIParent) then - kind = self.db.profile.units - else - kind = self.db.profile.unitFrames - end - self.isUnit = nil - else - if GameTooltip:IsOwned(UIParent) then - kind = self.db.profile.objects - else - kind = self.db.profile.otherFrames - end - end - if kind == 2 then - self.hooks[this].FadeOut(this, ...) - else - self.justHide = true - GameTooltip:Hide() - end -end - -function mod:GameTooltipHide(this, ...) - if self.justHide then - self.justHide = nil - return self.hooks[this].Hide(this, ...) - end - local kind - if self.isUnit then - if GameTooltip:IsOwned(UIParent) then - kind = self.db.profile.units - else - kind = self.db.profile.unitFrames - end - self.isUnit = nil - else - if GameTooltip:IsOwned(UIParent) then - kind = self.db.profile.objects - else - kind = self.db.profile.otherFrames - end - end - if kind == 2 then - self.justFade = true - return GameTooltip:FadeOut() - else - return self.hooks[this].Hide(this, ...) - end -end - -function mod:SetUnit() - self.isUnit = true -end - diff --git a/Modules/Position.lua b/Modules/Position.lua deleted file mode 100644 index 7ac613b..0000000 --- a/Modules/Position.lua +++ /dev/null @@ -1,364 +0,0 @@ -local mod = StarTip:NewModule("Position", "AceEvent-3.0", "AceHook-3.0") -mod.name = "Positioning and Hiding" -local _G = _G -local GameTooltip = _G.GameTooltip -local StarTip = _G.StarTip -local UIParent = _G.UIParent -local self = mod - -local defaults = { - profile = { - inCombat = 1, - anchor = 1, - unitFrames = 13, - other = 1, - inCombatXOffset = 0, - inCombatYOffset = 0, - anchorXOffset = 0, - anchorYOffset = 0, - unitFramesXOffset = 0, - unitFramesYOffset = 0, - otherXOffset = 0, - otherYOffset = 0 - } -} - -local anchors = { - "CURSOR_TOP", - "CURSOR_TOPRIGHT", - "CURSOR_TOPLEFT", - "CURSOR_BOTTOM", - "CURSOR_BOTTOMRIGHT", - "CURSOR_BOTTOMLEFT", - "CURSOR_LEFT", - "CURSOR_RIGHT", - "TOP", - "TOPRIGHT", - "TOPLEFT", - "BOTTOM", - "BOTTOMRIGHT", - "BOTTOMLEFT", - "RIGHT", - "LEFT", - "CENTER" -} - -local anchorText = { - "Cursor Top", - "Cursor Top-right", - "Cursor Top-left", - "Cursor Bottom", - "Cursor Bottom-right", - "Cursor Bottom-left", - "Cursor Left", - "Cursor Right", - "Screen Top", - "Screen Top-right", - "Screen Top-left", - "Screen Bottom", - "Screen Bottom-right", - "Screen Bottom-left", - "Screen Right", - "Screen Left", - "Screen Center" -} - -local opposites = { - TOP = "BOTTOM", - TOPRIGHT = "BOTTOMLEFT", - TOPLEFT = "BOTTOMRIGHT", - BOTTOM = "TOP", - BOTTOMRIGHT = "TOPLEFT", - BOTTOMLEFT = "TOPRIGHT", - LEFT = "RIGHT", - RIGHT = "LEFT", -} - -local selections = {} -for i, v in ipairs(anchorText) do - selections[i] = v -end -selections[#selections+1] = "Hide" - -local get = function(info) - return self.db.profile[info[#info]] -end - -local set = function(info,v) - self.db.profile[info[#info]] = v -end - -local minX = -math.floor(GetScreenWidth()/5 + 0.5) * 5 -local minY = -math.floor(GetScreenHeight()/5 + 0.5) * 5 -local maxX = math.floor(GetScreenWidth()/5 + 0.5) * 5 -local maxY = math.floor(GetScreenHeight()/5 + 0.5) * 5 -local options = { - anchor = { - name = "World Units", - desc = "Where to anchor the tooltip when mousing over world characters", - type = "select", - values = selections, - get = get, - set = set, - order = 4 - }, - anchorXOffset = { - name = "X-axis offset", - desc = "The x-axis offset used to position the tooltip in relationship to the anchor point", - type = "range", - min = minX, - max = maxX, - step = 1, - bigStep = 5, - get = get, - set = set, - order = 5 - }, - anchorYOffset = { - name = "Y-axis offset", - desc = "The y-axis offset used to position the tooltip in relationship to the anchor point", - type = "range", - min = minY, - max = maxY, - step = 1, - bigStep = 5, - get = get, - set = set, - order = 6 - - }, - inCombatHeader = { - name = "", - type = "header", - order = 7 - }, - inCombat = { - name = "In Combat", - desc = "Where to anchor the world unit tooltip while in combat", - type = "select", - values = selections, - get = get, - set = set, - order = 8 - }, - inCombatXOffset = { - name = "X-axis offset", - desc = "The x-axis offset used to position the tooltip in relationship to the anchor point", - type = "range", - min = minX, - max = maxX, - step = 1, - bigStep = 5, - get = get, - set = set, - order = 9 - }, - inCombatYOffset = { - name = "Y-axis offset", - desc = "The y-axis offset used to position the tooltip in relationship to the anchor point", - type = "range", - min = minY, - max = maxY, - step = 1, - bigStep = 5, - get = get, - set = set, - order = 10 - }, - unitFramesHeader = { - name = "", - type = "header", - order = 11 - }, - unitFrames = { - name = "Unit Frames", - desc = "Where to anchor the tooltip when mousing over a unit frame", - type = "select", - values = selections, - get = get, - set = set, - order = 12 - }, - unitFramesXOffset = { - name = "X-axis offset", - desc = "The x-axis offset used to position the tooltip in relationship to the anchor point", - type = "range", - min = minX, - max = maxX, - step = 1, - bigStep = 5, - get = get, - set = set, - order = 13 - }, - unitFramesYOffset = { - name = "Y-axis offset", - desc = "The y-axis offset used to position the tooltip in relationship to the anchor point", - type = "range", - min = minY, - max = maxY, - step = 1, - bigStep = 5, - get = get, - set = set, - order = 14 - }, - otherHeader = { - name = "", - type = "header", - order = 15 - }, - other = { - name = "Other tooltips", - desc = "Where to anchor tooltips that are not unit tooltips", - type = "select", - values = selections, - get = get, - set = set, - order = 16 - }, - otherXOffset = { - name = "X-axis offset", - desc = "The x-axis offset used to position the tooltip in relationship to the anchor point", - type = "range", - min = minX, - max = maxX, - step = 1, - bigStep = 5, - get = get, - set = set, - order = 17 - }, - otherYOffset = { - name = "Y-axis offset", - desc = "The y-axis offset used to position the tooltip in relationship to the anchor point", - type = "range", - min = minY, - max = maxY, - step = 1, - bigStep = 5, - get = get, - set = set, - order = 18 - } -} - -function mod:OnInitialize() - self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults) - StarTip:SetOptionsDisabled(options, true) -end - -function mod:OnEnable() - self:RegisterEvent("REGEN_DISABLED") - self:RegisterEvent("REGEN_ENABLED") - self:SecureHook("GameTooltip_SetDefaultAnchor") - StarTip:SetOptionsDisabled(options, false) -end - -function mod:OnDisable() - self:UnregisterEvent("REGEN_DISABLED") - self:UnregisterEvent("REGEN_ENABLED") - self:Unhook("GameTooltip_SetDefaultAnchor") - StarTip:SetOptionsDisabled(options, true) -end - -function mod:GetOptions() - return options -end - -local updateFrame = CreateFrame("Frame") -local oldX, oldY -local currentAnchor -local xoffset, yoffset -local positionTooltip = function() - local x, y = GetCursorPosition() - local effScale = GameTooltip:GetEffectiveScale() - if x ~= oldX or y ~= oldY then - GameTooltip:ClearAllPoints() - GameTooltip:SetPoint(currentAnchor, UIParent, "BOTTOMLEFT", (x + xoffset) / effScale, (y + yoffset) / effScale) - end - oldX, oldY = x, y -end - -local getIndex = function(owner) - local index - if UnitExists("mouseover") then - if InCombatLockdown() then - index = self.db.profile.inCombat - elseif owner == UIParent then - index = self.db.profile.anchor - else - index = self.db.profile.unitFrames - end - else - index = self.db.profile.other - end - return index -end - -local setOffsets = function(owner) - if owner == UIParent then - if UnitExists("mouseover") then - if InCombatLockdown() then - xoffset = self.db.profile.inCombatXOffset - yoffset = self.db.profile.inCombatYOffset - else - xoffset = self.db.profile.anchorXOffset - yoffset = self.db.profile.anchorYOffset - end - else - xoffset = self.db.profile.otherXOffset - yoffset = self.db.profile.otherYOffset - end - else - if UnitExists("mouseover") then - xoffset = self.db.profile.unitFramesXOffset - yoffset = self.db.profile.unitFramesYOffset - else - xoffset = self.db.profile.otherXOffset - yoffset = self.db.profile.otherYOffset - end - end -end - -local currentOwner -local currentThis -local f = CreateFrame("Frame") -local function delayAnchor() - f:SetScript("OnUpdate", nil) - local this = currentThis - local owner = currentOwner - this:ClearAllPoints() - setOffsets(owner) - local index = getIndex(owner) - if index == #selections then - this:Hide() - return - elseif anchors[index]:find("^CURSOR_") then - oldX, oldY = 0, 0 - currentAnchor = opposites[anchors[index]:sub(8)] - updateFrame:SetScript("OnUpdate", positionTooltip) - positionTooltip() - else - if updateFrame:GetScript("OnUpdate") then updateFrame:SetScript("OnUpdate", nil) end - this:SetPoint(anchors[index], UIParent, anchors[index], xoffset, yoffset) - end -end - -function mod:GameTooltip_SetDefaultAnchor(this, owner) - currentOwner = owner - currentThis = this - if not f:GetScript("OnUpdate") then f:SetScript("OnUpdate", delayAnchor) end -end - -function mod:REGEN_DISABLED() - if not currentOwner then return end - updateFrame:SetScript("OnUpdate", nil) - self:GameTooltip_SetDefaultAnchor(GameTooltip, currentOwner) -end - -mod.REGEN_ENABLED = mod.REGEN_DISABLED - -function mod:OnHide() - updateFrame:SetScript("OnUpdate", nil) -end diff --git a/Modules/PvP.lua b/Modules/PvP.lua deleted file mode 100644 index c458f0d..0000000 --- a/Modules/PvP.lua +++ /dev/null @@ -1,48 +0,0 @@ -local mod = StarTip:NewModule("PvP", "AceEvent-3.0") -mod.name = "PvP" -local _G = _G -local GameTooltip = _G.GameTooltip -local UnitFactionGroup = _G.UnitFactionGroup -local self = mod - -function mod:OnInitialize() - self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults) - local frame = _G.CreateFrame("Frame", nil, GameTooltip) - local pvp = frame:CreateTexture(nil, "OVERLAY") - pvp:SetHeight(30) - pvp:SetWidth(30) - pvp:SetPoint("TOPRIGHT", GameTooltip, 20, 10) - pvp:Hide() - self.PvP = pvp -end - -function mod:OnEnable() - self:RegisterEvent("UNIT_FACTION") -end - -function mod:OnDisable() - self:UnregisterEvent("UNIT_FACTION") -end - -function mod:UNIT_FACTION(event, unit) - if unit ~= "mouseover" then return end - - local factionGroup = UnitFactionGroup(unit) - if(UnitIsPVPFreeForAll(unit)) then - self.PvP:SetTexture[[Interface\TargetingFrame\UI-PVP-FFA]] - self.PvP:Show() - elseif(factionGroup and UnitIsPVP(unit)) then - self.PvP:SetTexture([[Interface\TargetingFrame\UI-PVP-]]..factionGroup) - self.PvP:Show() - else - self.PvP:Hide() - end -end - -function mod:SetUnit() - self:UNIT_FACTION(nil, "mouseover") -end - -function mod:OnHide() - self.PvP:Hide() -end diff --git a/Modules/RaidIcon.lua b/Modules/RaidIcon.lua deleted file mode 100644 index bc7f51a..0000000 --- a/Modules/RaidIcon.lua +++ /dev/null @@ -1,47 +0,0 @@ -local mod = StarTip:NewModule("RaidIcon", "AceEvent-3.0") -mod.name = "RaidIcon" -local _G = _G -local GameTooltip = _G.GameTooltip -local GetRaidTargetIndex = _G.GetRaidTargetIndex -local SetRaidTargetIconTexture = _G.SetRaidTargetIconTexture -local self = mod - -function mod:OnInitialize() - self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults) - local frame = CreateFrame("Frame", nil, GameTooltip) - local icon = frame:CreateTexture(nil, "OVERLAY") - icon:SetHeight(16) - icon:SetWidth(16) - icon:SetPoint("TOP", GameTooltip, 0, 4) - icon:SetTexture"Interface\\TargetingFrame\\UI-RaidTargetingIcons" - icon:Hide() - self.icon = icon -end - -function mod:OnEnable() - self:RegisterEvent("RAID_TARGET_UPDATE") -end - -function mod:OnDisable() - self:UnregisterEvent("RAID_TARGET_UPDATE") -end - -function mod:SetUnit() - self:RAID_TARGET_UPDATE() -end - -function mod:OnHide() - if self.icon:IsShown() then self.icon:Hide() end -end - -function mod:RAID_TARGET_UPDATE(event) - local index = _G.GetRaidTargetIndex("mouseover") - - if(index) then - _G.SetRaidTargetIconTexture(self.icon, index) - self.icon:Show() - else - self.icon:Hide() - end -end - diff --git a/Modules/Targeting.lua b/Modules/Targeting.lua deleted file mode 100644 index a6e400c..0000000 --- a/Modules/Targeting.lua +++ /dev/null @@ -1,34 +0,0 @@ -local mod = StarTip:NewModule("Targeting", "AceEvent-3.0") -mod.name = "Targeting" -local _G = _G -local GameTooltip = _G.GameTooltip -local UnitFactionGroup = _G.UnitFactionGroup -local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS -local StarTip = _G.StarTip -local self = mod - -function mod:OnInitialize() -end - -function mod:OnEnable() -end - -function mod:OnDisable() -end - -function mod:SetUnit() - if UnitInRaid("player") then - local txt = '' - for i=1, GetNumRaidMembers() do - if UnitExists("mouseover") and UnitGUID("mouseover") == UnitGUID("raid" .. i .. "target") then - local c = RAID_CLASS_COLORS[select(2, UnitClass("raid" .. i))] - local name = UnitName("raid" .. i) - txt = txt .. ("|cFF%02x%02x%02x%s|r "):format(c.r*255, c.g*255, c.b*255, name) - end - end - if txt ~= '' then - GameTooltip:AddLine("Targeting: " .. txt, .5, .5, 1, 1) - end - end -end - diff --git a/Modules/Text.lua b/Modules/Text.lua deleted file mode 100644 index 0190883..0000000 --- a/Modules/Text.lua +++ /dev/null @@ -1,730 +0,0 @@ -local mod = StarTip:NewModule("Text", "AceTimer-3.0", "AceEvent-3.0") -mod.name = "Text" -local _G = _G -local GameTooltip = _G.GameTooltip -local StarTip = _G.StarTip -local self = mod -local GameTooltip = _G.GameTooltip -local tinsert = _G.tinsert -local unpack = _G.unpack -local select = _G.select -local format = _G.format -local floor = _G.floor -local tostring = _G.tostring -local UnitExists = _G.UnitExists -local UnitIsPlayer = _G.UnitIsPlayer -local UnitBuff = _G.UnitBuff -local GetSpellInfo = _G.GetSpellInfo -local UnitIsConnected = _G.UnitIsConnected -local UnitIsFeignDeath = _G.UnitIsFeignDeath -local UnitIsGhost = _G.UnitIsGhost -local UnitIsDead = _G.UnitIsDead -local UnitLevel = _G.UnitLevel -local UnitClassification = _G.UnitClassification -local UnitSelectionColor = _G.UnitSelectionColor -local UnitRace = _G.UnitRace -local GetNumTalentTabs = _G.GetNumTalentTabs -local GetTalentTabInfo = _G.GetTalentTabInfo -local GetGuildInfo = _G.GetGuildInfo -local UnitName = _G.UnitName -local UnitClass = _G.UnitClass -local UnitMana = _G.UnitMana -local UnitManaMax = _G.UnitManaMax -local UnitFactionGroup = _G.UnitFactionGroup -local UnitCreatureFamily = _G.UnitCreatureFamily -local UnitCreatureType = _G.UnitCreatureType -local UnitIsUnit = _G.UnitIsUnit -local RAID_CLASS_COLORS = _G.RAID_CLASS_COLORS -local timer, talentTimer -local TalentQuery = LibStub:GetLibrary("LibTalentQuery-1.0", true) -local TalentGuess = LibStub:GetLibrary("TalentGuess-1.0", true) and LibStub:GetLibrary("TalentGuess-1.0"):Register() -local spec = setmetatable({}, {__mode='v'}) -local factionList = {} -local linesToAdd = {} -local linesToAddR = {} -local linesToAddG = {} -local linesToAddB = {} -local linesToAddRight = {} -local linesToAddRightR = {} -local linesToAddRightG = {} -local linesToAddRightB = {} -local unitLocation -local unitName -local unitGuild -local NUM_LINES - --- Thanks to ckknight for this -local short = function(value) - if value >= 10000000 or value <= -10000000 then - value = ("%.1fm"):format(value / 1000000) - elseif value >= 1000000 or value <= -1000000 then - value = ("%.2fm"):format(value / 1000000) - elseif value >= 100000 or value <= -100000 then - value = ("%.0fk"):format(value / 1000) - elseif value >= 10000 or value <= -10000 then - value = ("%.1fk"):format(value / 1000) - else - value = tostring(floor(value+0.5)) - end - return value -end - -local classifications = { - worldboss = "Boss", - rareelite = "+ Rare", - elite = "+", - rare = "Rare" -} - -local talentTrees = { - ["Druid"] = {"Balance", "Feral Combat", "Restoration"}, - ["Hunter"] = {"Beast Mastery", "Marksmanship", "Survival"}, - ["Mage"] = {"Arcane", "Fire", "Frost"}, - ["Paladin"] = {"Holy", "Protection", "Retribution"}, - ["Priest"] = {"Discipline", "Holy", "Shadow"}, - ["Rogue"] = {"Assassination", "Combat", "Subtlety"}, - ["Shaman"] = {"Elemental", "Enhancement", "Restoration"}, - ["Warlock"] = {"Affliction", "Demonology", "Destruction"}, - ["Warrior"] = {"Arms", "Fury", "Protection"}, -} - -local powers = { - ["WARRIOR"] = "Rage:", - ["ROGUE"] = "Energy:", -} - -powers = setmetatable(powers, {__index=function(self,key) - if type(key) == nil then return nil end - if rawget(self,key) then - return self[key] - else - return "Mana:" - end -end}) - -local updateTalents = function() - if not UnitExists("mouseover") then - self:CancelTimer(talentTimer) - talentTimer = nil - return - end - local nameRealm = select(1, UnitName("mouseover")) .. (select(2, UnitName("mouseover")) or '') - if spec[nameRealm] and spec[nameRealm][4] and spec[nameRealm][1] and spec[nameRealm][2] and spec[nameRealm][3] then - local specText = ('%s (%d/%d/%d)'):format(spec[nameRealm][4], spec[nameRealm][1], spec[nameRealm][2], spec[nameRealm][3]) - local lineNum - if NUM_LINES < GameTooltip:NumLines() then - lineNum = NUM_LINES + 1 - local j = 0 - for i = lineNum, GameTooltip:NumLines() do - local left = mod.leftLines[i] - j = j + 1 - linesToAdd[j] = left:GetText() - local r, g, b = left:GetTextColor() - linesToAddR[j] = r - linesToAddG[j] = g - linesToAddB[j] = b - local right = mod.rightLines[i] - if right:IsShown() then - linesToAddRight[j] = right:GetText() - local r, g, b = right:GetTextColor() - linesToAddRightR[j] = r - linesToAddRightG[j] = g - linesToAddRightB[j] = b - end - end - else - lineNum = GameTooltip:NumLines() + 1 - end - local replaced - for i = 1, GameTooltip:NumLines() do - if mod.leftLines[i]:GetText() == "Talents Guessed:" then - lineNum = i - replaced = true - end - end - if not replaced then - GameTooltip:AddDoubleLine(' ', ' ') - end - local left = mod.leftLines[lineNum] - local right = mod.rightLines[lineNum] - left:SetText("Talents:") - right:SetText(specText) - if not right:IsShown() then - right:Show() - end - left:SetTextColor(1, 1, 1) - right:SetTextColor(1, 1, 1) - - for i=1, #linesToAdd do - local left = mod.leftLines[i + lineNum] - left:SetText(linesToAdd[i]) - left:SetTextColor(linesToAddR[i], linesToAddG[i], linesToAddB[i]) - if linesToAddRight[i] then - local right = mod.rightLines[i + lineNum] - right:SetText(linesToAddRight[i]) - right:SetTextColor(linesToAddRightR[i], linesToAddRightG[i], linesToAddRightB[i]) - end - linesToAdd[i] = nil - linesToAddR[i] = nil - linesToAddG[i] = nil - linesToAddB[i] = nil - linesToAddRight[i] = nil - linesToAddRightR[i] = nil - linesToAddRightG[i] = nil - linesToAddRightB[i] = nil - end - - self:CancelTimer(talentTimer) - talentTimer = nil - GameTooltip:Show() - elseif spec[nameRealm] then - for k in pairs(spec[nameRealm]) do - spec[nameRealm][k] = nil - end - spec[nameRealm] = nil - end -end - -local indexOf = function(t, val) - for i=1, #t do - if t[i] == val then - return i - end - end -end - -local indicesOf = function(t, val) - local a = {} - for i=1, #t do - if t[i] == val then - tinsert(a, i) - end - end - return unpack(a) -end - -function mod:TalentQuery_Ready(e, name, realm) - if not TalentQuery then return end - local nameRealm = name .. (realm or '') - local isnotplayer = (name ~= UnitName("player")) - if not spec[nameRealm] then - spec[nameRealm] = {[4]=NONE} - local highPoints = {} - local specNames = {} - for tab = 1, GetNumTalentTabs(isnotplayer) do - local treename, _, pointsspent = GetTalentTabInfo(tab, isnotplayer) - highPoints[tab] = pointsspent - spec[nameRealm][tab] = pointsspent - specNames[tab] = treename - end - if highPoints[1] == nil or highPoints[2] == nil or highPoints[3] == nil then spec[nameRealm] = nil return end - table.sort(highPoints, function(a,b) return a>b end) - local first, second = select(1, indicesOf(spec[nameRealm], highPoints[1])), select(2, indicesOf(spec[nameRealm], highPoints[1])) - if highPoints[1] > 0 and highPoints[2] > 0 and highPoints[1] - highPoints[2] <= 5 and highPoints[1] ~= highPoints[2] then - spec[nameRealm][4] = specNames[indexOf(spec[nameRealm], highPoints[1])] .. "/" .. specNames[indexOf(spec[nameRealm], highPoints[2])] - elseif highPoints[1] > 0 and first and second then - spec[nameRealm][4] = specNames[first] .. "/" .. specNames[second] - elseif highPoints[1] > 0 then - spec[nameRealm][4] = specNames[indexOf(spec[nameRealm], highPoints[1])] - end - end -end - -local unitHasAura = function(aura) - local i = 1 - while true do - local buff = UnitBuff("mouseover", i, true) - if not buff then return end - if buff == aura then return true end - i = i + 1 - end -end - -local options = { - titles = { - name = "Titles", - desc = "Toggle whether to show titles or not", - type = "toggle", - set = function(info, v) self.db.profile.titles = v end, - get = function() return self.db.profile.titles end, - order = 5 - }, -} - -local lines = setmetatable({ - [1] = { - db = "Name:", - name = "UnitName", - left = function() - local c - if UnitIsPlayer("mouseover") then - c = RAID_CLASS_COLORS[select(2, UnitClass("mouseover"))] - else - c = {} - c.r, c.g, c.b = UnitSelectionColor("mouseover") - end - return unitName, c - end, - right = nil, - updating = false - }, - [2] = { - db = "Target:", - name = "Target", - left = function() return "Target:" end, - right = function() - if UnitExists("mouseovertarget") then - local c - if UnitIsPlayer("mouseovertarget") then - c = RAID_CLASS_COLORS[select(2, UnitClass("mouseovertarget"))] - else - c = {} - c.r, c.g, c.b = UnitSelectionColor("mouseovertarget") - end - local name = UnitName("mouseovertarget") - return name, c - else - return "None", {r=1, g=1, b=1} - end - end, - updating = true - }, - [3] = { - db = "Guild:", - name = "Guild", - left = function() return "Guild:" end, - right = function() - local guild = GetGuildInfo("mouseover") - if guild then return guild else return unitGuild end - end, - updating = false - }, - [4] = { - db = "Rank:", - name = "Rank", - left = function() return "Rank:" end, - right = function() - return select(2, GetGuildInfo("mouseover")) - end, - updating = false - }, - [5] = { - db = "Realm:", - name = "Realm", - left = function() return "Realm:" end, - right = function() - return select(2, UnitName("mouseover")) - end, - updating = false - }, - [6] = { - db = "Level:", - name = "Level", - left = function() return "Level:" end, - right = function() - local lvl = UnitLevel("mouseover") - local class = UnitClassification("mouseover") - - if lvl <= 0 then - lvl = '' - end - - if classifications[class] then - lvl = lvl .. classifications[class] - end - - return lvl - end, - updating = false - }, - [7] = { - db = "Race:", - name = "Race", - left = function() return "Race:" end, - right = function() - local race - if UnitIsPlayer("mouseover") then - race = UnitRace("mouseover"); - else - race = UnitCreatureFamily("mouseover") or UnitCreatureType("mouseover") - end - return race - end, - updating = false - }, - [8] = { - db = "Class:", - name = "Class", - left = function() return "Class:" end, - right = function() - local class = UnitClass("mouseover") - if class == UnitName("mouseover") then return end - local c = UnitIsPlayer("mouseover") and RAID_CLASS_COLORS[select(2, UnitClass("mouseover"))] - return class, c - end, - updating = false - }, - [9] = { - db = "Faction:", - name = "Faction", - left = function() return "Faction:" end, - right = function() - return UnitFactionGroup("mouseover") - end, - updating = false - }, - [10] = { - db = "Status:", - name = "Status", - left = function() return "Status:" end, - right = function() - if not UnitIsConnected("mouseover") then - return "Offline" - elseif unitHasAura(GetSpellInfo(19752)) then - return "Divine Intervention" - elseif UnitIsFeignDeath("mouseover") then - return "Feigned Death" - elseif UnitIsGhost("mouseover") then - return "Ghost" - elseif UnitIsDead("mouseover") and unitHasAura(GetSpellInfo(20707)) then - return "Soulstoned" - elseif UnitIsDead("mouseover") then - return "Dead" - end - end, - updating = true - }, - [11] = { - db = "Health:", - name = "Health", - left = function() return "Health:" end, - right = function() - local health, maxHealth = UnitHealth("mouseover"), UnitHealthMax("mouseover") - local value - if maxHealth == 100 then - value = health .. "%" - elseif maxHealth ~= 0 then - value = format("%s/%s (%d%%)", short(health), short(maxHealth), health/maxHealth*100) - end - return value - end, - updating = true - }, - [12] = { - db = "Mana:", - name = "Mana", - left = function() - local class = select(2, UnitClass("mouseover")) - return powers[class] - end, - right = function() - local mana = UnitMana("mouseover") - local maxMana = UnitManaMax("mouseover") - local value - if maxMana == 100 then - value = mana - elseif maxMana ~= 0 then - value = format("%s/%s (%d%%)", short(mana), short(maxMana), mana/maxMana*100) - end - return value - end, - updating = true - }, - [13] = { - db = "Location:", - name = "Location", - left = function() return "Location:" end, - right = function() - return unitLocation - end, - updating = true - }, - [14] = { - db = "Talents:", - name = "Talents", - left = function() return "Talents:" end, - right = function() - local name = UnitName("mouseover") - if TalentQuery and UnitIsUnit("mouseover", "player") then - mod:TalentQuery_Ready(_, name) - elseif TalentQuery and UnitExists("mouseover") and UnitIsPlayer("mouseover") then - TalentQuery:Query("mouseover") - talentTimer = talentTimer or self:ScheduleRepeatingTimer(updateTalents, 0) - end - end, - updating = false - }, - [15] = { - db = "TalentsGuessed:", - name = "Talents Guesssed", - left = function() return "Talents Guessed:" end, - right = function() - local name, realm = UnitName("mouseover") - local nameRealm - if realm then - nameRealm = name .. '-' .. realm - else - nameRealm = name - end - local specText - if nameRealm and TalentGuess and TalentGuess:GetTalents(nameRealm) then - local talents = {} - local high = 1 - talents[1], talents[2], talents[3] = TalentGuess:GetTalents(nameRealm) - for i = 2, 3 do - if talents[i] > talents[high] then - high = i - end - end - local class = UnitClass("mouseover") - specText = ("%s (%d/%d/%d)"):format(talentTrees[class][high], talents[1], talents[2], talents[3]) - end - return specText - end, - updating = true - } -}, {__call=function(this) - local lineNum = 0 - for i, v in ipairs(this) do - if self.db.profile[v.db] then - local left, right, c - if v.right then - right, c = v.right() - left = v.left() - else - right = '' - left, c = v.left() - end - if left and right then - lineNum = lineNum + 1 - if v.right then - GameTooltip:AddDoubleLine(' ', ' ', 1, 1, 1, 1, 1, 1) - mod.leftLines[lineNum]:SetText(left) - mod.rightLines[lineNum]:SetText(right) - if type(c) == "table" and c.r then - mod.rightLines[lineNum]:SetVertexColor(c.r, c.g, c.b) - end - else - GameTooltip:AddLine(' ', 1, 1, 1) - mod.leftLines[lineNum]:SetText(left) - if type(c) == "table" and c.r then - mod.leftLines[lineNum]:SetVertexColor(c.r, c.g, c.b) - end - end - end - end - end - NUM_LINES = lineNum -end}) - -local function updateLines() - if not UnitExists("mouseover") then - mod:CancelTimer(timer) - timer = nil - return - end - for _, v in ipairs(lines) do - if v.updating and v.right and self.db.profile[v.db] then - local left = v.left() - local right, c = v.right() - if left and right then - for i = 1, NUM_LINES do - if mod.leftLines[i]:GetText() == left then - mod.rightLines[i]:SetText(right) - if type(c) == "table" and c.r then - mod.rightLines[i]:SetVertexColor(c.r, c.g, c.b) - end - end - end - end - end - end -end - -local defaults = {profile={titles=true}} - -do - local lnum = 1 - for i, v in ipairs(lines) do - options[v.db] = { - name = v.name, - desc = "Toggle showing this line", - type = "toggle", - set = function(info, val) self.db.profile[v.db] = val end, - get = function() return self.db.profile[v.db] end, - order = 5 + lnum - } - lnum = lnum + 1 - defaults.profile[v.db] = true - end -end - -function mod:OnInitialize() - self.db = StarTip.db:RegisterNamespace(self:GetName(), defaults) - self.leftLines = StarTip.leftLines - self.rightLines = StarTip.rightLines - self:RegisterEvent("UPDATE_FACTION") - StarTip:SetOptionsDisabled(options, true) -end - -function mod:OnEnable() - local i = 1 - while true do - if not self.db.profile[i] then break end - lines[i] = self.db.profile[i] - i = i + 1 - end - if TalentQuery then TalentQuery.RegisterCallback(self, "TalentQuery_Ready") end - StarTip:SetOptionsDisabled(options, false) -end - -function mod:OnDisable() - if TalentQuery then TalentQuery.UnregisterCallback(self, "TalentQuery_Ready") end - StarTip:SetOptionsDisabled(options, true) -end - -function mod:GetOptions() - return options -end - -function mod:UPDATE_FACTION() - for i = 1, GetNumFactions() do - local name = GetFactionInfo(i) - factionList[name] = true - end -end - - -local getName = function() - if self.db.profile.titles then - local name = self.leftLines[1]:GetText() - if UnitIsPlayer("mouseover") and name:find(" %- ") then - name = name:sub(1, name:find(" %- ")) - end - return name - else - return UnitName("mouseover") - end -end - --- Taken from LibDogTag-Unit-3.0 -local LEVEL_start = "^" .. (type(LEVEL) == "string" and LEVEL or "Level") -local getLocation = function() - if UnitIsVisible("mouseover") or not UnitIsConnected("mouseover") then - return nil - end - - local left_2 = self.leftLines[2]:GetText() - local left_3 = self.leftLines[3]:GetText() - if not left_2 or not left_3 then - return nil - end - local hasGuild = not left_2:find(LEVEL_start) - local factionText = not hasGuild and left_3 or self.leftLines[4]:GetText() - if factionText == PVP then - factionText = nil - end - local hasFaction = factionText and not UnitPlayerControlled("mouseover") and not UnitIsPlayer("mouseover") and (UnitFactionGroup("mouseover") or factionList[factionText]) - if hasGuild and hasFaction then - return self.leftLines[5]:GetText() - elseif hasGuild or hasFaction then - return self.leftLines[4]:GetText() - else - return left_3 - end -end - -local getGuild = function() - local left_2 = self.leftLines[2]:GetText() - if left_2:find(LEVEL_start) then return nil end - return "<" .. left_2 .. ">" -end - -local ff = CreateFrame("Frame") -function mod:SetUnit() - --[[self = mod - if not UnitExists("mouseover") then - if ff:GetScript("OnUpdate") then - ff:SetScript("OnUpdate", nil) - else - ff:SetScript("OnUpdate", self.SetUnit) - end - return - end]] - - if ff:GetScript("OnUpdate") then ff:SetScript("OnUpdate", nil) end - - unitName = getName() - unitLocation = getLocation() - unitGuild = getGuild() - - -- Taken from CowTip - local lastLine = 2 - local text2 = self.leftLines[2]:GetText() - - if not text2 then - lastLine = lastLine - 1 - elseif not text2:find("^"..LEVEL) then - lastLine = lastLine + 1 - end - if not UnitPlayerControlled("mouseover") and not UnitIsPlayer("mouseover") then - local factionText = self.leftLines[lastLine + 1]:GetText() - if factionText == PVP then - factionText = nil - end - if factionText and (factionList[factionText] or UnitFactionGroup("mouseover")) then - lastLine = lastLine + 1 - end - end - if not UnitIsConnected("mouseover") or not UnitIsVisible("mouseover") or UnitIsPVP("mouseover") then - lastLine = lastLine + 1 - end - - lastLine = lastLine + 1 - - for i = lastLine, GameTooltip:NumLines() do - local left = self.leftLines[i] - local j = i - lastLine + 1 - linesToAdd[j] = left:GetText() - local r, g, b = left:GetTextColor() - linesToAddR[j] = r - linesToAddG[j] = g - linesToAddB[j] = b - local right = self.rightLines[i] - if right:IsShown() then - linesToAddRight[j] = right:GetText() - local r, g, b = right:GetTextColor() - linesToAddRightR[j] = r - linesToAddRightG[j] = g - linesToAddRightB[j] = b - end - end - -- End - - GameTooltip:ClearLines() - - lines() - - -- Another part taken from CowTip - for i, left in ipairs(linesToAdd) do - local right = linesToAddRight[i] - if right then - GameTooltip:AddDoubleLine(left, right, linesToAddR[i], linesToAddG[i], linesToAddB[i], linesToAddRightR[i], linesToAddRightG[i], linesToAddRightB[i]) - else - GameTooltip:AddLine(left, linesToAddR[i], linesToAddG[i], linesToAddB[i], true) - end - linesToAdd[i] = nil - linesToAddR[i] = nil - linesToAddG[i] = nil - linesToAddB[i] = nil - linesToAddRight[i] = nil - linesToAddRightR[i] = nil - linesToAddRightG[i] = nil - linesToAddRightB[i] = nil - end - -- End - - timer = timer or self:ScheduleRepeatingTimer(updateLines, .5) - - GameTooltip:Show() -end -- 1.7.9.5