diff --git a/SVUI_!Core/SVUI_!Core.xml b/SVUI_!Core/SVUI_!Core.xml index f9aeb18..a799ec3 100644 --- a/SVUI_!Core/SVUI_!Core.xml +++ b/SVUI_!Core/SVUI_!Core.xml @@ -30,13 +30,13 @@ <Script file="system\_reports\experience.lua"/> <Script file="system\_reports\friends.lua"/> <Script file="system\_reports\gold.lua"/> - <!-- <Script file="system\_reports\tokens.lua"/> --> + <Script file="system\_reports\tokens.lua"/> <Script file="system\_reports\guild.lua"/> - <!-- <Script file="system\_reports\reputation.lua"/> --> + <Script file="system\_reports\reputation.lua"/> <Script file="system\_reports\system.lua"/> - <!-- <Script file="system\_reports\time.lua"/> --> + <Script file="system\_reports\time.lua"/> <Script file="system\_reports\dps.lua"/> - <!-- <Script file="system\_reports\hps.lua"/> --> + <Script file="system\_reports\hps.lua"/> <Script file="system\_docklets\profession.lua"/> <Script file="system\_docklets\misc.lua"/> diff --git a/SVUI_!Core/libs/_SVUI_Lib/External.lua b/SVUI_!Core/libs/_SVUI_Lib/External.lua index 3b29056..b8889ac 100644 --- a/SVUI_!Core/libs/_SVUI_Lib/External.lua +++ b/SVUI_!Core/libs/_SVUI_Lib/External.lua @@ -45,6 +45,7 @@ local IsAltKeyDown = _G.IsAltKeyDown; --[[ The following are private and compressed versions of dependancy libraries --]] +local MAX_MINOR = 999999999; local geterrorhandler = _G.geterrorhandler; local CB_MAJOR = "CallbackHandler-1.0"; local CB = LibStub:NewLibrary(CB_MAJOR, MAX_MINOR, true) diff --git a/SVUI_!Core/system/_reports/dps.lua b/SVUI_!Core/system/_reports/dps.lua index a9531e1..4e9f990 100644 --- a/SVUI_!Core/system/_reports/dps.lua +++ b/SVUI_!Core/system/_reports/dps.lua @@ -28,7 +28,7 @@ local L = SV.L local Reports = SV.Reports; --[[ ########################################################## -CALL TO ARMS STATS +DPS STATS ########################################################## ]]-- local REPORT_NAME = "DPS"; diff --git a/SVUI_!Core/system/_reports/hps.lua b/SVUI_!Core/system/_reports/hps.lua index 120dd4a..8b2676e 100644 --- a/SVUI_!Core/system/_reports/hps.lua +++ b/SVUI_!Core/system/_reports/hps.lua @@ -29,99 +29,106 @@ local L = SV.L local Reports = SV.Reports; --[[ ########################################################## -CALL TO ARMS STATS +HPS STATS ########################################################## ]]-- -local StatEvents = {'PLAYER_ENTERING_WORLD', 'COMBAT_LOG_EVENT_UNFILTERED', "PLAYER_LEAVE_COMBAT", 'PLAYER_REGEN_DISABLED', 'UNIT_PET'}; +local REPORT_NAME = "HPS"; +local HEX_COLOR = "22FFFF"; +local TEXT_PATTERN1 = "|cff%s%.1f|r"; +local TEXT_PATTERN2 = "%s |cff00CCFF%s|r"; +local PlayerEvents = {["SPELL_HEAL"] = true, ["SPELL_PERIODIC_HEAL"] = true}; +local playerID, petID = UnitGUID('player'); -local PlayerEvents = {["SPELL_HEAL"] = true, ["SPELL_PERIODIC_HEAL"] = true} -local playerID = UnitGUID('player') -local petID -local healTotal, totalHeal, totalOverHeal, lastHealAmount = 0, 0, 0, 0 -local combatTime = 0 -local timeStamp = 0 -local lastSegment = 0 -local lastPanel -local hexColor = "FFFFFF"; -local displayString = "|cff%s%.1f|r"; -local dpsString = "%s |cff00CCFF%s|r"; +local Report = Reports:NewReport(REPORT_NAME, { + type = "data source", + text = REPORT_NAME .. " Info", + icon = [[Interface\Addons\SVUI_!Core\assets\icons\SVUI]], +}); -local join = string.join -local max = math.max +Report.events = {"PLAYER_ENTERING_WORLD", "COMBAT_LOG_EVENT_UNFILTERED", "PLAYER_LEAVE_COMBAT", "PLAYER_REGEN_DISABLED", "UNIT_PET"}; -local function Reset() - timeStamp = 0 - combatTime = 0 - healTotal = 0 - totalHeal = 0 - totalOverHeal = 0 - lastHealAmount = 0 -end +Report.OnInit = function(self) + playerID = UnitGUID('player') + petID = UnitGUID("pet") -local function GetHPS(self) - if healTotal == 0 or combatTime == 0 then - self.text:SetText(dpsString:format(L["HPS"], "..PAUSED")) - self.TText = "No Healing Done" - self.TText2 = "Surely there is someone \nwith an ouchie somewhere!" - else - local HPS = (healTotal) / (combatTime) - self.text:SetFormattedText(displayString, hexColor, HPS) - self.TText = "HPS:" - self.TText2 = HPS + if(not self.InnerData) then + self.InnerData = {} end -end -local function HPS_OnClick(self) - Reset() - GetHPS(self) + self.InnerData.thistime = 0 + self.InnerData.lasttime = 0 + self.InnerData.totaltime = 0 + self.InnerData.lastamount = 0 + self.InnerData.totalamount = 0 + self.InnerData.overamount = 0 end -local function HPS_OnEnter(self) - Reports:SetDataTip(self) - Reports.ToolTip:AddDoubleLine("Healing Total:", totalHeal, 1, 1, 1) - Reports.ToolTip:AddDoubleLine("OverHealing Total:", totalOverHeal, 1, 1, 1) - Reports.ToolTip:AddLine(" ", 1, 1, 1) - Reports.ToolTip:AddDoubleLine(self.TText, self.TText2, 1, 1, 1) - Reports.ToolTip:AddLine(" ", 1, 1, 1) - Reports.ToolTip:AddDoubleLine("[Click]", "Clear HPS", 0,1,0, 0.5,1,0.5) - Reports:ShowDataTip(true) -end - -local function HPS_OnEvent(self, event, ...) - lastPanel = self - +Report.OnEvent = function(self, event, ...) + local data = self.InnerData if event == "PLAYER_ENTERING_WORLD" then playerID = UnitGUID('player') elseif event == 'PLAYER_REGEN_DISABLED' or event == "PLAYER_LEAVE_COMBAT" then local now = time() - if now - lastSegment > 20 then --time since the last segment - Reset() + if now - data.lasttime > 20 then --time since the last segment + data.thistime = 0 + data.totaltime = 0 + data.totalamount = 0 + data.lastamount = 0 + data.overamount = 0 end - lastSegment = now + data.lasttime = now elseif event == 'COMBAT_LOG_EVENT_UNFILTERED' then local newTime, event, _, srcGUID, _, _, _, _, _, _, _, _, _, test, lastHealAmount, overHeal = ... if not PlayerEvents[event] then return end if(srcGUID == playerID or srcGUID == petID) then - if timeStamp == 0 then timeStamp = newTime end - lastSegment = timeStamp - combatTime = newTime - timeStamp - healTotal = healTotal + (lastHealAmount - overHeal) - totalHeal = totalHeal + lastHealAmount - totalOverHeal = totalOverHeal + overHeal + if data.thistime == 0 then data.thistime = newTime end + data.lasttime = data.thistime + data.totaltime = newTime - data.thistime + data.lastamount = data.lastamount + (lastHealAmount - overHeal) + data.totalamount = data.totalamount + data.lastamount + data.overamount = data.overamount + overHeal end elseif event == UNIT_PET then - petID = UnitGUID("pet") + data.petID = UnitGUID("pet") end - GetHPS(self) + if data.totalamount == 0 or data.totaltime == 0 then + self.text:SetText(TEXT_PATTERN2:format(L["HPS"], "..PAUSED")) + self.TText = "No Healing Done" + self.TText2 = "Surely there is someone \nwith an ouchie somewhere!" + else + local HPS = (data.totalamount) / (data.totaltime) + self.text:SetFormattedText(TEXT_PATTERN1, HEX_COLOR, HPS) + self.TText = "HPS:" + self.TText2 = HPS + end end -local HPSColorUpdate = function() - hexColor = SV:HexColor("highlight"); - if lastPanel ~= nil then - HPS_OnEvent(lastPanel) +Report.OnClick = function(self, button) + local data = self.InnerData + data.thistime = 0 + data.totaltime = 0 + data.totalamount = 0 + data.lastamount = 0 + if data.totalamount == 0 or data.totaltime == 0 then + self.text:SetText(TEXT_PATTERN2:format(L["HPS"], "..PAUSED")) + self.TText = "No Healing Done" + self.TText2 = "Surely there is someone \nwith an ouchie somewhere!" + else + local HPS = (data.totalamount) / (data.totaltime) + self.text:SetFormattedText(TEXT_PATTERN1, HEX_COLOR, HPS) + self.TText = "HPS:" + self.TText2 = HPS end end -SV.Events:On("SHARED_MEDIA_UPDATED", HPSColorUpdate, true) -Reports:NewReportType('HPS', StatEvents, HPS_OnEvent, nil, HPS_OnClick, HPS_OnEnter) \ No newline at end of file +Report.OnEnter = function(self) + Reports:SetDataTip(self) + Reports.ToolTip:AddDoubleLine("Healing Total:", self.InnerData.totalamount, 1, 1, 1) + Reports.ToolTip:AddDoubleLine("OverHealing Total:", self.InnerData.overamount, 1, 1, 1) + Reports.ToolTip:AddLine(" ", 1, 1, 1) + Reports.ToolTip:AddDoubleLine(self.TText, self.TText2, 1, 1, 1) + Reports.ToolTip:AddLine(" ", 1, 1, 1) + Reports.ToolTip:AddDoubleLine("[Click]", "Clear HPS", 0,1,0, 0.5,1,0.5) + Reports:ShowDataTip(true) +end \ No newline at end of file diff --git a/SVUI_!Core/system/_reports/reputation.lua b/SVUI_!Core/system/_reports/reputation.lua index db8b39d..9e783c5 100644 --- a/SVUI_!Core/system/_reports/reputation.lua +++ b/SVUI_!Core/system/_reports/reputation.lua @@ -30,8 +30,8 @@ local Reports = SV.Reports; REPUTATION STATS ########################################################## ]]-- -local StatEvents = {"PLAYER_ENTERING_WORLD", "UPDATE_FACTION"}; -local RepMenuList = {}; +local HEX_COLOR = "22FFFF"; +local TEXT_PATTERN = "|cff22EF5F%s|r|cff888888 - [|r%d%%|cff888888]|r"; local standingName = { [1] = "Hated", [2] = "Hostile", @@ -55,8 +55,8 @@ local function TruncateString(value) end end -- name, description, standingID, barMin, barMax, barValue, _, _, _, _, hasRep, isWatched, isChild -local function CacheRepData() - twipe(RepMenuList) +local function CacheRepData(data) + twipe(data) for factionIndex = 1, GetNumFactions() do local factionName, description, standingID, barMin, barMax, barValue, _, _, _, _, hasRep, isWatched, isChild = GetFactionInfo(factionIndex) if(standingID) then @@ -66,13 +66,26 @@ local function CacheRepData() SetWatchedFactionIndex(factionIndex) end end - tinsert(RepMenuList, {text = factionName, func = fn}) + tinsert(data, {text = factionName, func = fn}) end end - tsort(RepMenuList, function(a,b) return a.text < b.text end) + tsort(data, function(a,b) return a.text < b.text end) end +--[[ +########################################################## +STANDARD TYPE +########################################################## +]]-- +local REPORT_NAME = "Reputation"; +local Report = Reports:NewReport(REPORT_NAME, { + type = "data source", + text = REPORT_NAME .. " Info", + icon = [[Interface\Addons\SVUI_!Core\assets\icons\SVUI]] +}); + +Report.events = {"PLAYER_ENTERING_WORLD", "UPDATE_FACTION"}; -local function Reputation_OnEvent(self, ...) +Report.OnEvent = function(self, event, ...) if self.barframe:IsShown()then self.text:SetAllPoints(self) self.text:SetJustifyH("CENTER") @@ -99,11 +112,53 @@ local function Reputation_OnEvent(self, ...) end end friendText = friendText or _G["FACTION_STANDING_LABEL"..ID] or " "; - self.text:SetFormattedText("|cff22EF5F%s|r|cff888888 - [|r%d%%|cff888888]|r", friendText, ((value - min) / (max - min) * 100)) + self.text:SetFormattedText(TEXT_PATTERN , friendText, ((value - min) / (max - min) * 100)) + end +end + +Report.OnClick = function(self, button) + CacheRepData(self.InnerData) + SV.Dropdown:Open(self, self.InnerData, "Select Faction") +end + +Report.OnEnter = function(self) + Reports:SetDataTip(self) + local name, reaction, min, max, value, factionID = GetWatchedFactionInfo() + local friendID, _, _, _, _, _, friendTextLevel = GetFriendshipReputation(factionID); + if not name then + Reports.ToolTip:AddLine("No Watched Factions") + else + Reports.ToolTip:AddLine(name) + Reports.ToolTip:AddLine(' ') + Reports.ToolTip:AddDoubleLine(STANDING..':', friendID and friendTextLevel or _G['FACTION_STANDING_LABEL'..reaction], 1, 1, 1) + Reports.ToolTip:AddDoubleLine(REPUTATION..':', format('%d / %d (%d%%)', value - min, max - min, (value - min) / (max - min) * 100), 1, 1, 1) end -end + Reports.ToolTip:AddLine(" ", 1, 1, 1) + Reports.ToolTip:AddDoubleLine("[Click]", "Change Watched Faction", 0,1,0, 0.5,1,0.5) + Reports:ShowDataTip(true) +end + +Report.OnInit = function(self) + if(not self.InnerData) then + self.InnerData = {} + end + CacheRepData(self.InnerData) +end +--[[ +########################################################## +BAR TYPE +########################################################## +]]-- +local BAR_NAME = "Reputation Bar"; +local ReportBar = Reports:NewReport(BAR_NAME, { + type = "data source", + text = BAR_NAME, + icon = [[Interface\Addons\SVUI_!Core\assets\icons\SVUI]] +}); + +ReportBar.events = {"PLAYER_ENTERING_WORLD", "UPDATE_FACTION"}; -local function ReputationBar_OnEvent(self, ...) +ReportBar.OnEvent = function(self, event, ...) if not self.barframe:IsShown()then self.barframe:Show() self.barframe.icon.texture:SetTexture(SV.media.dock.reputationLabel) @@ -137,9 +192,14 @@ local function ReputationBar_OnEvent(self, ...) bar:SetValue(value) self.text:SetText(txt) end -end +end -local function Reputation_OnEnter(self) +Report.OnClick = function(self, button) + CacheRepData() + SV.Dropdown:Open(self, self.InnerData, "Select Faction") +end + +ReportBar.OnEnter = function(self) Reports:SetDataTip(self) local name, reaction, min, max, value, factionID = GetWatchedFactionInfo() local friendID, _, _, _, _, _, friendTextLevel = GetFriendshipReputation(factionID); @@ -154,16 +214,11 @@ local function Reputation_OnEnter(self) Reports.ToolTip:AddLine(" ", 1, 1, 1) Reports.ToolTip:AddDoubleLine("[Click]", "Change Watched Faction", 0,1,0, 0.5,1,0.5) Reports:ShowDataTip(true) -end - -local function Reputation_OnClick(self, button) - CacheRepData() - SV.Dropdown:Open(self, RepMenuList, "Select Faction") -end - -local function Reputation_OnInit(self) - CacheRepData() end -Reports:NewReportType("Reputation", StatEvents, Reputation_OnEvent, nil, Reputation_OnClick, Reputation_OnEnter, nil, Reputation_OnInit) -Reports:NewReportType("Reputation Bar", StatEvents, ReputationBar_OnEvent, nil, Reputation_OnClick, Reputation_OnEnter, nil, Reputation_OnInit) \ No newline at end of file +Report.OnInit = function(self) + if(not self.InnerData) then + self.InnerData = {} + end + CacheRepData() +end \ No newline at end of file diff --git a/SVUI_!Core/system/_reports/template.lua b/SVUI_!Core/system/_reports/template.lua index 6b24d4b..98c7563 100644 --- a/SVUI_!Core/system/_reports/template.lua +++ b/SVUI_!Core/system/_reports/template.lua @@ -48,7 +48,11 @@ REPORT TEMPLATE local REPORT_NAME = ""; local HEX_COLOR = "22FFFF"; local TEXT_PATTERN = "|cff%s%s|r"; - +--SV.media.color.green +--SV.media.color.normal +--r, g, b = 0.8, 0.8, 0.8 +--local c = SV.media.color.green +--r, g, b = c[1], c[2], c[3] local Report = Reports:NewReport(REPORT_NAME, { type = "data source", text = REPORT_NAME .. " Info", diff --git a/SVUI_!Core/system/_reports/time.lua b/SVUI_!Core/system/_reports/time.lua index 481c8a4..35f9031 100644 --- a/SVUI_!Core/system/_reports/time.lua +++ b/SVUI_!Core/system/_reports/time.lua @@ -52,8 +52,8 @@ TIME STATS (Credit: Elv) ########################################################## ]]-- local APM = { TIMEMANAGER_PM, TIMEMANAGER_AM } -local europeDisplayFormat = ''; -local ukDisplayFormat = ''; +local TEXT_PATTERN1 = "%02d|cff22CFFF:|r%02d"; +local TEXT_PATTERN2 = "%d|cff22CFFF:|r%02d|cff22CFFF %s|r"; local europeDisplayFormat_nocolor = join("", "%02d", ":|r%02d") local ukDisplayFormat_nocolor = join("", "", "%d", ":|r%02d", " %s|r") local timerLongFormat = "%d:%02d:%02d" @@ -61,25 +61,12 @@ local timerShortFormat = "%d:%02d" local lockoutInfoFormat = "%s%s |cffaaaaaa(%s, %s/%s)" local lockoutInfoFormatNoEnc = "%s%s |cffaaaaaa(%s)" local formatBattleGroundInfo = "%s: " -local lockoutColorExtended, lockoutColorNormal = { r=0.3,g=1,b=0.3 }, { r=.8,g=.8,b=.8 } -local lockoutFormatString = { "%dd %02dh %02dm", "%dd %dh %02dm", "%02dh %02dm", "%dh %02dm", "%dh %02dm", "%dm" } local curHr, curMin, curAmPm local enteredFrame = false; local date = _G.date - -local Update, lastPanel; -- UpValue local localizedName, isActive, canQueue, startTime, canEnter, _ local name, instanceID, reset, difficultyId, locked, extended, isRaid, maxPlayers, difficulty, numEncounters, encounterProgress -local function ValueColorUpdate(hex, r, g, b) - europeDisplayFormat = join("", "%02d", hex, ":|r%02d") - ukDisplayFormat = join("", "", "%d", hex, ":|r%02d", hex, " %s|r") - - if lastPanel ~= nil then - Update(lastPanel, 20000) - end -end - local function ConvertTime(h, m) local AmPm if SV.db.Reports.time24 == true then @@ -105,22 +92,68 @@ local function CalculateTimeValues(tooltip) end end -local function Click() - GameTimeFrame:Click(); -end +local int = 3 +local Time_OnUpdate = function(self, t) + int = int - t + + if int > 0 then return end + + if GameTimeFrame.flashInvite then + SV.Animate:Flash(self, 0.53) + else + SV.Animate:StopFlash(self) + end -local function OnLeave(self) - Reports.ToolTip:Hide(); - enteredFrame = false; + if enteredFrame then + OnEnter(self) + end + + local Hr, Min, AmPm = CalculateTimeValues(false) + + -- no update quick exit + if (Hr == curHr and Min == curMin and AmPm == curAmPm) and not (int < -15000) then + int = 5 + return + end + + curHr = Hr + curMin = Min + curAmPm = AmPm + + if AmPm == -1 then + self.text:SetFormattedText(TEXT_PATTERN1, Hr, Min) + else + self.text:SetFormattedText(TEXT_PATTERN2, Hr, Min, APM[AmPm]) + end + int = 5 end +--[[ +########################################################## +REPORT TEMPLATE +########################################################## +]]-- +local REPORT_NAME = "Time"; +local HEX_COLOR = "22FFFF"; + +local Report = Reports:NewReport(REPORT_NAME, { + type = "data source", + text = REPORT_NAME .. " Info", + icon = [[Interface\Addons\SVUI_!Core\assets\icons\SVUI]] +}); + +Report.events = {"UPDATE_INSTANCE_INFO"}; -local function OnEvent(self, event) +Report.OnEvent = function(self, event, ...) if event == "UPDATE_INSTANCE_INFO" and enteredFrame then RequestRaidInfo() end end -local function OnEnter(self) +Report.OnClick = function(self, button) + GameTimeFrame:Click(); +end + +Report.OnEnter = function(self) Reports:SetDataTip(self) if(not enteredFrame) then @@ -139,11 +172,12 @@ local function OnEnter(self) else startTime = SecondsToTime(startTime, false, nil, 3) end - Reports.ToolTip:AddDoubleLine(format(formatBattleGroundInfo, localizedName), startTime, 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b) + Reports.ToolTip:AddDoubleLine(format(formatBattleGroundInfo, localizedName), startTime, 1, 1, 1, 0.8, 0.8, 0.8) end end - local oneraid, lockoutColor + local oneraid; + local r, g, b = 0.8, 0.8, 0.8 for i = 1, GetNumSavedInstances() do name, _, reset, difficultyId, locked, extended, _, isRaid, maxPlayers, difficulty, numEncounters, encounterProgress = GetSavedInstanceInfo(i) if isRaid and (locked or extended) and name then @@ -153,11 +187,11 @@ local function OnEnter(self) oneraid = true end if extended then - lockoutColor = lockoutColorExtended + local c = SV.media.color.green + r, g, b = c[1], c[2], c[3] else - lockoutColor = lockoutColorNormal - end - + r, g, b = 0.8, 0.8, 0.8 + end local _, _, isHeroic, _ = GetDifficultyInfo(difficultyId) if (numEncounters and numEncounters > 0) and (encounterProgress and encounterProgress > 0) then Reports.ToolTip:AddDoubleLine(format(lockoutInfoFormat, maxPlayers, (isHeroic and "H" or "N"), name, encounterProgress, numEncounters), SecondsToTime(reset, false, nil, 3), 1, 1, 1, lockoutColor.r, lockoutColor.g, lockoutColor.b) @@ -186,61 +220,18 @@ local function OnEnter(self) Reports.ToolTip:AddLine(" ") if AmPm == -1 then Reports.ToolTip:AddDoubleLine(SV.db.Reports.localtime and TIMEMANAGER_TOOLTIP_REALMTIME or TIMEMANAGER_TOOLTIP_LOCALTIME, - format(europeDisplayFormat_nocolor, Hr, Min), 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b) + format(europeDisplayFormat_nocolor, Hr, Min), 1, 1, 1, 0.8, 0.8, 0.8) else Reports.ToolTip:AddDoubleLine(SV.db.Reports.localtime and TIMEMANAGER_TOOLTIP_REALMTIME or TIMEMANAGER_TOOLTIP_LOCALTIME, - format(ukDisplayFormat_nocolor, Hr, Min, APM[AmPm]), 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b) + format(ukDisplayFormat_nocolor, Hr, Min, APM[AmPm]), 1, 1, 1, 0.8, 0.8, 0.8) end Reports.ToolTip:Show() end -local int = 3 -function Update(self, t) - int = int - t - - if int > 0 then return end - - if GameTimeFrame.flashInvite then - SV.Animate:Flash(self, 0.53) - else - SV.Animate:StopFlash(self) - end - - if enteredFrame then - OnEnter(self) - end - - local Hr, Min, AmPm = CalculateTimeValues(false) - - -- no update quick exit - if (Hr == curHr and Min == curMin and AmPm == curAmPm) and not (int < -15000) then - int = 5 - return - end - - curHr = Hr - curMin = Min - curAmPm = AmPm - - if AmPm == -1 then - self.text:SetFormattedText(europeDisplayFormat, Hr, Min) - else - self.text:SetFormattedText(ukDisplayFormat, Hr, Min, APM[AmPm]) - end - lastPanel = self - int = 5 +Report.OnLeave = function(self, button) + Reports.ToolTip:Hide(); + enteredFrame = false; end -local TimeColorUpdate = function() - local hexColor = SV:HexColor("highlight") - europeDisplayFormat = join("", "%02d|cff", hexColor, ":|r%02d") - ukDisplayFormat = join("", "", "%d|cff", hexColor, ":|r%02d|cff", hexColor, " %s|r") - if lastPanel ~= nil then - Update(lastPanel, 20000) - end -end - -SV.Events:On("SHARED_MEDIA_UPDATED", TimeColorUpdate, true) - -Reports:NewReportType('Time', {"UPDATE_INSTANCE_INFO"}, OnEvent, Update, Click, OnEnter, OnLeave) \ No newline at end of file +Report.OnUpdate = Time_OnUpdate \ No newline at end of file diff --git a/SVUI_!Core/system/_reports/tokens.lua b/SVUI_!Core/system/_reports/tokens.lua index ceee566..87692d5 100644 --- a/SVUI_!Core/system/_reports/tokens.lua +++ b/SVUI_!Core/system/_reports/tokens.lua @@ -32,64 +32,33 @@ local Reports = SV.Reports; GOLD STATS ########################################################## ]]-- +local REPORT_NAME = "Tokens"; +local HEX_COLOR = "22FFFF"; +local TEXT_PATTERN = "\124T%s:12\124t %s"; local playerName = UnitName("player"); local playerRealm = GetRealmName(); -local TokenEvents = {'PLAYER_ENTERING_WORLD','PLAYER_MONEY','CURRENCY_DISPLAY_UPDATE'}; - -local function TokenInquiry(id, weekly, capped) - local name, amount, tex, week, weekmax, maxed, discovered = GetCurrencyInfo(id) - local r, g, b = 1, 1, 1 - for i = 1, GetNumWatchedTokens() do - local _, _, _, itemID = GetBackpackCurrencyInfo(i) - if id == itemID then r, g, b = 0.23, 0.88, 0.27 end - end - local texStr = ("\124T%s:12\124t %s"):format(tex, name) - local altStr = "" - if weekly then - if discovered then - if id == 390 then - altStr = ("Current: %d | Weekly: %d / %d"):format(amount, week, weekmax) - else - altStr = ("Current: %d / %d | Weekly: %d / %d"):format(amount, maxed, week, weekmax) - end - Reports.ToolTip:AddDoubleLine(texStr, altStr, r, g, b, r, g, b) - end - elseif capped then - if id == 392 or id == 395 then maxed = 4000 end - if id == 396 then maxed = 3000 end - if discovered then - altStr = ("%d / %d"):format(amount, maxed) - Reports.ToolTip:AddDoubleLine(texStr, altStr, r, g, b, r, g, b) - end - else - if discovered then - Reports.ToolTip:AddDoubleLine(texStr, amount, r, g, b, r, g, b) - end - end -end - -local function TokensEventHandler(self, event,...) +local Tokens_OnEvent = function(self, event, ...) if(not IsLoggedIn() or (not self)) then return end local id = self.TokenKey or 738; local _, current, tex = GetCurrencyInfo(id) - local currentText = ("\124T%s:12\124t %s"):format(tex, current); + local currentText = TEXT_PATTERN:format(tex, current); self.text:SetText(currentText) -end - -local function AddToTokenMenu(parent, id, key) - local name, _, tex, _, _, _, _ = GetCurrencyInfo(id) - local itemName = "\124T"..tex..":12\124t "..name; - local fn = function() - Reports.Accountant["tokens"][playerName][key] = id; - parent.TokenKey = id - TokensEventHandler(parent) - end - tinsert(parent.TokenList, {text = itemName, func = fn}); +end + +local function AddToTokenMenu(self, id, key) + local name, _, tex, _, _, _, _ = GetCurrencyInfo(id) + local itemName = "\124T"..tex..":12\124t "..name; + local fn = function() + Reports.Accountant["tokens"][playerName][key] = id; + self.TokenKey = id + Tokens_OnEvent(self) + end + tinsert(self.InnerData, {text = itemName, func = fn}); end local function CacheTokenData(self) - twipe(self.TokenList); + twipe(self.InnerData); local prof1, prof2, archaeology, _, cooking = GetProfessions(); local key = self:GetName(); if archaeology then @@ -143,18 +112,69 @@ local function CacheTokenData(self) AddToTokenMenu(self, 824, key) end -local function Tokens_OnEnter(self) - Reports:SetDataTip(self) - Reports.ToolTip:AddLine(playerName .. "\'s Tokens") +local function TokenInquiry(id, weekly, capped) + local name, amount, tex, week, weekmax, maxed, discovered = GetCurrencyInfo(id) + local r, g, b = 1, 1, 1 + for i = 1, GetNumWatchedTokens() do + local _, _, _, itemID = GetBackpackCurrencyInfo(i) + if id == itemID then r, g, b = 0.23, 0.88, 0.27 end + end + local texStr = ("\124T%s:12\124t %s"):format(tex, name) + local altStr = "" + if weekly then + if discovered then + if id == 390 then + altStr = ("Current: %d | Weekly: %d / %d"):format(amount, week, weekmax) + else + altStr = ("Current: %d / %d | Weekly: %d / %d"):format(amount, maxed, week, weekmax) + end + Reports.ToolTip:AddDoubleLine(texStr, altStr, r, g, b, r, g, b) + end + elseif capped then + if id == 392 or id == 395 then maxed = 4000 end + if id == 396 then maxed = 3000 end + if discovered then + altStr = ("%d / %d"):format(amount, maxed) + Reports.ToolTip:AddDoubleLine(texStr, altStr, r, g, b, r, g, b) + end + else + if discovered then + Reports.ToolTip:AddDoubleLine(texStr, amount, r, g, b, r, g, b) + end + end +end +--[[ +########################################################## +REPORT TEMPLATE +########################################################## +]]-- +local Report = Reports:NewReport(REPORT_NAME, { + type = "data source", + text = REPORT_NAME .. " Info", + icon = [[Interface\Addons\SVUI_!Core\assets\icons\SVUI]] +}); + +Report.events = {"PLAYER_ENTERING_WORLD", "PLAYER_MONEY", "CURRENCY_DISPLAY_UPDATE"}; - Reports.ToolTip:AddLine(" ") - Reports.ToolTip:AddLine("Common") - TokenInquiry(241) - TokenInquiry(416) - TokenInquiry(515) - TokenInquiry(776) - TokenInquiry(777) - TokenInquiry(789) +Report.OnEvent = Tokens_OnEvent; + +Report.OnClick = function(self, button) + CacheTokenData(self); + SV.Dropdown:Open(self, self.InnerData, "Select Currency") +end + +Report.OnEnter = function(self) + Reports:SetDataTip(self) + Reports.ToolTip:AddLine(playerName .. "\'s Tokens") + + Reports.ToolTip:AddLine(" ") + Reports.ToolTip:AddLine("Common") + TokenInquiry(241) + TokenInquiry(416) + TokenInquiry(515) + TokenInquiry(776) + TokenInquiry(777) + TokenInquiry(789) Reports.ToolTip:AddLine(" ") Reports.ToolTip:AddLine("Garrison") @@ -166,68 +186,64 @@ local function Tokens_OnEnter(self) TokenInquiry(1008) TokenInquiry(1017) - Reports.ToolTip:AddLine(" ") - Reports.ToolTip:AddLine("Raiding and Dungeons") + Reports.ToolTip:AddLine(" ") + Reports.ToolTip:AddLine("Raiding and Dungeons") TokenInquiry(994, false, true) - TokenInquiry(697, false, true) - TokenInquiry(738) - TokenInquiry(615) - TokenInquiry(614) - TokenInquiry(395, false, true) - TokenInquiry(396, false, true) - - Reports.ToolTip:AddLine(" ") - Reports.ToolTip:AddLine("PvP") - TokenInquiry(390, true) - TokenInquiry(392, false, true) - TokenInquiry(391) - - local prof1, prof2, archaeology, _, cooking = GetProfessions() - if(archaeology or cooking or prof1 == 9 or prof2 == 9) then - Reports.ToolTip:AddLine(" ") - Reports.ToolTip:AddLine("Professions") - end - if cooking then - TokenInquiry(81) - TokenInquiry(402) - end - if(prof1 == 9 or prof2 == 9) then - TokenInquiry(61) - TokenInquiry(361) - TokenInquiry(698) - end - if archaeology then + TokenInquiry(697, false, true) + TokenInquiry(738) + TokenInquiry(615) + TokenInquiry(614) + TokenInquiry(395, false, true) + TokenInquiry(396, false, true) + + Reports.ToolTip:AddLine(" ") + Reports.ToolTip:AddLine("PvP") + TokenInquiry(390, true) + TokenInquiry(392, false, true) + TokenInquiry(391) + + local prof1, prof2, archaeology, _, cooking = GetProfessions() + if(archaeology or cooking or prof1 == 9 or prof2 == 9) then + Reports.ToolTip:AddLine(" ") + Reports.ToolTip:AddLine("Professions") + end + if cooking then + TokenInquiry(81) + TokenInquiry(402) + end + if(prof1 == 9 or prof2 == 9) then + TokenInquiry(61) + TokenInquiry(361) + TokenInquiry(698) + end + if archaeology then TokenInquiry(821) TokenInquiry(829) TokenInquiry(944) - TokenInquiry(398) - TokenInquiry(384) - TokenInquiry(393) - TokenInquiry(677) - TokenInquiry(400) - TokenInquiry(394) - TokenInquiry(397) - TokenInquiry(676) - TokenInquiry(401) - TokenInquiry(385) - TokenInquiry(399) - end - Reports.ToolTip:AddLine(" ") + TokenInquiry(398) + TokenInquiry(384) + TokenInquiry(393) + TokenInquiry(677) + TokenInquiry(400) + TokenInquiry(394) + TokenInquiry(397) + TokenInquiry(676) + TokenInquiry(401) + TokenInquiry(385) + TokenInquiry(399) + end + Reports.ToolTip:AddLine(" ") Reports.ToolTip:AddDoubleLine("[Shift + Click]", "Change Watched Token", 0,1,0, 0.5,1,0.5) - Reports:ShowDataTip(true) -end - -local function Tokens_OnClick(self, button) - CacheTokenData(self); - SV.Dropdown:Open(self, self.TokenList, "Select Currency") + Reports:ShowDataTip(true) end -local function Tokens_OnInit(self) +Report.OnInit = function(self) + if(not self.InnerData) then + self.InnerData = {} + end Reports:SetAccountantData('tokens', 'table', {}) local key = self:GetName() Reports.Accountant["tokens"][playerName][key] = Reports.Accountant["tokens"][playerName][key] or 738; self.TokenKey = Reports.Accountant["tokens"][playerName][key] CacheTokenData(self); -end - -Reports:NewReportType('Tokens', TokenEvents, TokensEventHandler, nil, Tokens_OnClick, Tokens_OnEnter, nil, Tokens_OnInit) \ No newline at end of file +end \ No newline at end of file diff --git a/SVUI_!Core/system/reports.lua b/SVUI_!Core/system/reports.lua index bd1b174..faa938c 100644 --- a/SVUI_!Core/system/reports.lua +++ b/SVUI_!Core/system/reports.lua @@ -284,37 +284,66 @@ local function GetDataSlot(parent, index) return parent.Stats.Slots[index]; end -function MOD:NewReportType(newStat, eventList, onEvents, update, click, focus, blur, init) - if not newStat then return end - self.Plugins[newStat] = {} - tinsert(StatMenuListing, newStat) - if type(eventList) == "table" then - self.Plugins[newStat]["events"] = eventList; - self.Plugins[newStat]["event_handler"] = onEvents - end - if update and type(update) == "function" then - self.Plugins[newStat]["update_handler"] = update - end - if click and type(click) == "function" then - self.Plugins[newStat]["click_handler"] = click - end - if focus and type(focus) == "function" then - self.Plugins[newStat]["focus_handler"] = focus - end - if blur and type(blur) == "function" then - self.Plugins[newStat]["blur_handler"] = blur - end - if init and type(init) == "function" then - self.Plugins[newStat].OnInit = init - end +local LDB_TEXT_PATTERN = "|cff22CFFF(|r%s|cff22CFFF)|r"; +local LDB_ICON_PATTERN = "\124T%s:12\124t %s"; +local function LDB_AttributeChanged(event, data_name, key, value, obj) + local name = obj.ReportName + local socket = MOD.References[name] + if(not socket) then return end + value = value or obj.text + icon = obj.icon + if(type(value) ~= "string") then + value = name + end + if(not value or value == name) then + local prev = socket.text:GetText() + if((not prev) or (not prev:find(name)) or (prev == "")) then + socket.text:SetText(name) + end + elseif(icon and type(icon) == "string") then + socket.text:SetText(LDB_ICON_PATTERN:format(icon, value)) + else + socket.text:SetText(LDB_TEXT_PATTERN:format(value)) + end end -local Socket_OnLeave = function(self) +local function CreateLDB_OnEventHandler(name, obj) + return function(self, ...) + LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..name, LDB_AttributeChanged) + -- LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..name.."_text", LDB_AttributeChanged) + -- LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..name.."_label", LDB_AttributeChanged) + -- LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..name.."_value", LDB_AttributeChanged) + LDB_AttributeChanged(nil, name, nil, nil, obj) + end +end + +local Socket_OnEvent = function(self, ...) + if(self.eventFunc) then + self.eventFunc(self, ...) + end +end + +local Socket_OnUpdate = function(self, ...) + if(self.updateFunc) then + self.updateFunc(self, ...) + end +end + +local LDB_OnEnter = function(self, ...) + self.OnTooltipShow(GameTooltip) +end + +local Socket_OnEnter = function(self, ...) + if(self.enterFunc) then + self.enterFunc(self, ...) + end +end + +local Socket_OnLeave = function(self, ...) if(self.leaveFunc) then - self.leaveFunc(self) - else - MOD.ToolTip:Hide() + self.leaveFunc(self, ...) end + MOD.ToolTip:Hide() end local Socket_OnClick = function(self, button) @@ -337,30 +366,32 @@ function MOD:EnableReport(socket, name) obj.OnInit(socket) end - if obj.events then - for i=1, #obj.events do - socket:RegisterEvent(obj.events[i]) - end - end - if obj.OnEvent and obj.events then for i=1, #obj.events do socket:RegisterEvent(obj.events[i]) end - socket:SetScript("OnEvent", obj.OnEvent) - obj.OnEvent(socket, "SVUI_FORCE_RUN") - end + socket.eventFunc = obj.OnEvent + socket:SetScript("OnEvent", Socket_OnEvent) + Socket_OnEvent(socket, "SVUI_FORCE_RUN") + end if obj.OnUpdate then - socket:SetScript("OnUpdate", obj.OnUpdate) - obj.OnUpdate(socket, 20000) + socket.updateFunc = obj.OnUpdate end + socket:SetScript("OnUpdate", Socket_OnUpdate) + Socket_OnUpdate(socket, 20000) - if obj.OnEnter then - socket:SetScript("OnEnter", obj.OnEnter) - end + if(LDB and obj.LDBName and obj.OnTooltipShow) then + print(name .. ' OnTooltipShow') + socket:SetScript("OnEnter", LDB_OnEnter) + end + + if obj.OnEnter then + socket.enterFunc = obj.OnEnter + end + socket:SetScript("OnEnter", Socket_OnEnter) - if obj.OnLeave then + if obj.OnLeave then socket.leaveFunc = obj.OnLeave end socket:SetScript("OnLeave", Socket_OnLeave) @@ -377,11 +408,20 @@ function MOD:EnableReport(socket, name) else socket.Panel:Show() end + + if(LDB and obj.LDBName) then + LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..obj.LDBName, LDB_AttributeChanged) + LDB_AttributeChanged(nil, name, nil, nil, obj) + end end -function MOD:NewReport(name, obj) +function MOD:NewReport(name, obj, LDBname) if self.Plugins[name] then return end self.Plugins[name] = obj or {} + if(LDBname) then + self.Plugins[name].LDBName = LDBname + self.Plugins[name].ReportName = name + end tinsert(StatMenuListing, name) return obj end @@ -458,9 +498,7 @@ do local function setMenuLists() local anchorTable = MOD.Sockets; local statMenu = StatMenuListing; - tsort(statMenu) - for reportIndex, parent in ipairs(anchorTable) do local slotKey = tostring(reportIndex) local slots = parent.Stats.Slots; @@ -478,6 +516,14 @@ do end function MOD:UpdateAllReports() + if(LDB) then + for dataName, dataObj in LDB:DataObjectIterator() do + local listName = dataName:gsub("Broker_", ""); + if(not MOD.Plugins[listName]) then + MOD:ReportAdded(nil, dataName, dataObj, true) + end + end + end if(DIRTY_LIST) then setMenuLists() end local instance, groupType = IsInInstance() @@ -492,17 +538,16 @@ do local numPoints = #slots; local pvpIndex = parent.Stats.BGStats; local pvpSwitch = (allowPvP and pvpIndex and (PVP_SOCKETS[pvpIndex] == reportIndex)) - local panelIndex = tostring(reportIndex) + for i = 1, numPoints do local pvpTable = (pvpSwitch and PVP_INFO_SORTING[pvpIndex]) and PVP_INFO_SORTING[pvpIndex][i] - local socket = sockets[i]; + local socket = slots[i]; socket:UnregisterAllEvents() socket:SetScript("OnUpdate", nil) socket:SetScript("OnEnter", nil) socket:SetScript("OnLeave", nil) socket:SetScript("OnClick", nil) - socket.text:SetText(nil) if socket.barframe then socket.barframe:Hide() @@ -522,18 +567,21 @@ do BG_OnUpdate(socket) socket:Show() - else - for name, config in pairs(reportTable) do - for socketKey, panelData in pairs(docks) do - if(panelData and type(panelData) == "table") then - if(panelIndex == socketKey and panelData[i] and panelData[i] == name) then - MOD:EnableReport(socket, name) - end - elseif(panelData and type(panelData) == "string" and panelData == name) then - MOD:EnableReport(socket, name) + else + local loaded = false; + local x = tostring(reportIndex) + for n, _ in pairs(reportTable) do + for s, d in pairs(docks) do + if(d and ((type(d) == "table" and x == s and d[i] and d[i] == n) or (type(d) == "string" and d == n))) then + MOD.References[n] = socket + MOD:EnableReport(socket, n) + loaded = true end end - end + end + if(not loaded) then + socket.text:SetText(nil) + end end end end @@ -622,31 +670,16 @@ function MOD:SetAccountantData(dataType, cacheType, defaultValue) end end -function MOD:EnableDataObject(dataName, dataObj, noupdate) - local function textUpdate(event, name, key, value, dataobj) - if value == nil or (len(value) > 5) or value == 'n/a' or name == value then - dataObj.text:SetText(value ~= 'n/a' and value or name) - else - dataObj.text:SetText(name..': '.. '|cff' .. hexHighlight ..value..'|r') - end - end - - LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..dataName.."_text", textUpdate) - LDB:RegisterCallback("LibDataBroker_AttributeChanged_"..dataName.."_value", textUpdate) - LDB.callbacks:Fire("LibDataBroker_AttributeChanged_"..dataName.."_text", dataName, nil, dataObj.text, dataObj) - - local listName = dataName:gsub("Broker_", ""); - MOD:NewReport(listName, dataObj) -end - function MOD:ReportAdded(event, dataName, dataObj, noupdate) local t = dataObj.type if t == "data source" or t == "launcher" then - self:EnableDataObject(dataName, dataObj, noupdate) + local listName = dataName:gsub("Broker_", ""); + MOD:NewReport(listName, dataObj, dataName); + DIRTY_LIST = true else SV:HandleError("LibDataBroker", dataName, "Unknown data broker type") end -end +end function MOD:Load() local baseWidth, dockHeight = SV.Dock.BottomCenter:GetSize() @@ -698,20 +731,17 @@ function MOD:Load() self.ToolTip:HookScript("OnShow", _hook_TooltipOnShow) if(LDB) then - for dataName, dataObj in LDB:DataObjectIterator() do - self:ReportAdded(nil, dataName, dataObj, true) + for dataName, dataObj in LDB:DataObjectIterator() do + MOD:ReportAdded(nil, dataName, dataObj, true) end - self:UpdateAllReports() - LDB.RegisterCallback(self, "LibDataBroker_DataObjectCreated", "ReportAdded") - else - self:UpdateAllReports() + LDB.RegisterCallback(MOD, "LibDataBroker_DataObjectCreated", "ReportAdded") end + MOD:UpdateAllReports() self:RegisterEvent("PLAYER_ENTERING_WORLD", "UpdateAllReports"); - SV.Events:On("DOCKS_UPDATED", MOD.UpdateAllReports, true); - local slashDesc = "Toggle PvP stats on docks"; SV:AddSlashCommand("bg", slashDesc, SlashPvPStats); SV:AddSlashCommand("pvp", slashDesc, SlashPvPStats); + SV.Events:On("DOCKS_UPDATED", MOD.UpdateAllReports, true); end \ No newline at end of file diff --git a/SVUI_Chat/SVUI_Chat.lua b/SVUI_Chat/SVUI_Chat.lua index d503b9b..a1049fe 100644 --- a/SVUI_Chat/SVUI_Chat.lua +++ b/SVUI_Chat/SVUI_Chat.lua @@ -1342,6 +1342,14 @@ function MOD:UpdateLocals() end end +local function ProxyExpand() + MOD:RefreshChatFrames(true); +end + +local function ExpandChatDock() + SV.Timers:ExecuteTimer(ProxyExpand, 0.2) +end + function MOD:ReLoad() self:RefreshChatFrames(true) end @@ -1469,4 +1477,5 @@ function MOD:Load() SV.Events:On("DOCK_LEFT_FADE_IN", DockFadeInChat, true); SV.Events:On("DOCK_LEFT_FADE_OUT", DockFadeOutChat, true); + SV.Events:On("DOCK_LEFT_EXPANDED", ExpandChatDock, true); end \ No newline at end of file diff --git a/SVUI_QuestTracker/components/quests.lua b/SVUI_QuestTracker/components/quests.lua index f4d2fde..ffe8ca0 100644 --- a/SVUI_QuestTracker/components/quests.lua +++ b/SVUI_QuestTracker/components/quests.lua @@ -277,6 +277,7 @@ do CreateQuestItemButton = function(index) local buttonName = "SVUI_QuestButton" .. index local itembutton = CreateFrame('Button', buttonName, UIParent, 'SecureActionButtonTemplate, SecureHandlerStateTemplate, SecureHandlerAttributeTemplate'); + itembutton:SetAlpha(0); itembutton:SetStyle("Icon"); itembutton:ModSize(28, 28); itembutton:SetID(index); @@ -304,7 +305,9 @@ do if(name == 'item') then if(value and not self:IsShown()) then self:Show() + self:SetAlpha(1) elseif(not value) then + self:SetAlpha(0) self:Hide() end end diff --git a/SVUI_Skins/components/blizzard/tradeskill.lua b/SVUI_Skins/components/blizzard/tradeskill.lua index 4cad5cf..0d65372 100644 --- a/SVUI_Skins/components/blizzard/tradeskill.lua +++ b/SVUI_Skins/components/blizzard/tradeskill.lua @@ -81,17 +81,16 @@ local function TradeSkillStyle() SV.API:Set("PageButton", TradeSkillIncrementButton) TradeSkillIncrementButton:ModPoint("RIGHT", TradeSkillCreateButton, "LEFT", -13, 0) - SV.API:Set("CloseButton", TradeSkillFrameCloseButton) - - TradeSkillSkillIcon:SetStyle("!_Frame", "Icon") + SV.API:Set("CloseButton", TradeSkillFrameCloseButton) local internalTest = false; hooksecurefunc("TradeSkillFrame_SetSelection", function(_) - TradeSkillSkillIcon:SetStyle("!_Frame", "Icon") + TradeSkillSkillIcon:SetStyle("Icon") if TradeSkillSkillIcon:GetNormalTexture() then TradeSkillSkillIcon:GetNormalTexture():SetTexCoord(unpack(_G.SVUI_ICON_COORDS)) end + --TradeSkillSkillIconCount:SetFrameLevel(TradeSkillSkillIcon:GetFrameLevel() + 20) for i=1, MAX_TRADE_SKILL_REAGENTS do local u = _G["TradeSkillReagent"..i] local icon = _G["TradeSkillReagent"..i.."IconTexture"] @@ -106,7 +105,7 @@ local function TradeSkillStyle() a2:SetFrameLevel(0) end a2:WrapPoints(icon) - a2:SetStyle("!_Frame", "Icon") + a2:SetStyle("Icon") icon:SetParent(a2) icon.backdrop = a2 end diff --git a/SVUI_UnitFrames/libs/Plugins/oUF_ActionPanel/oUF_ActionPanel.lua b/SVUI_UnitFrames/libs/Plugins/oUF_ActionPanel/oUF_ActionPanel.lua index 6d0b628..a90bbef 100644 --- a/SVUI_UnitFrames/libs/Plugins/oUF_ActionPanel/oUF_ActionPanel.lua +++ b/SVUI_UnitFrames/libs/Plugins/oUF_ActionPanel/oUF_ActionPanel.lua @@ -26,6 +26,7 @@ local Update = function(self, event, unit) local special = action.special local class = action.class local showSpecial = false + local canShowSpecial = (UnitReaction("player", unit) < 5) or false local r,g,b = 0,0,0; local category = UnitClassification(unit) @@ -34,10 +35,10 @@ local Update = function(self, event, unit) else if(category == "elite") then r,g,b = 1,0.75,0; - showSpecial = true + showSpecial = canShowSpecial elseif(category == "rare" or category == "rareelite") then r,g,b = 0.59,0.79,1; - showSpecial = true + showSpecial = canShowSpecial end end