From a622a28bd7dd9e51c1fe4c5e570dc4b2505dd41a Mon Sep 17 00:00:00 2001 From: Steven Jackson Date: Tue, 29 Jul 2014 17:31:51 -0500 Subject: [PATCH] log-o-matic returns --- Interface/AddOns/SVUI/packages/dock/SVDock.lua | 80 ++++++++------ Interface/AddOns/SVUI/system/system.lua | 2 +- .../AddOns/SVUI_ConfigOMatic/modules/chat.lua | 4 +- Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua | 111 ++++++++------------ 4 files changed, 93 insertions(+), 104 deletions(-) diff --git a/Interface/AddOns/SVUI/packages/dock/SVDock.lua b/Interface/AddOns/SVUI/packages/dock/SVDock.lua index 3c02718..1fdc0c6 100644 --- a/Interface/AddOns/SVUI/packages/dock/SVDock.lua +++ b/Interface/AddOns/SVUI/packages/dock/SVDock.lua @@ -51,7 +51,7 @@ local TOOL_DATA = { [171] = {0,0.25,0,0.25}, -- PRO-ALCHEMY [794] = {0.25,0.5,0,0.25,80451}, -- PRO-ARCHAELOGY [164] = {0.5,0.75,0,0.25}, -- PRO-BLACKSMITH - [185] = {0.75,1,0,0.25,818,93636}, -- PRO-COOKING + [185] = {0.75,1,0,0.25,818,67097}, -- PRO-COOKING [333] = {0,0.25,0.25,0.5,13262}, -- PRO-ENCHANTING [202] = {0.25,0.5,0.25,0.5}, -- PRO-ENGINEERING [129] = {0.5,0.75,0.25,0.5}, -- PRO-FIRSTAID @@ -615,27 +615,8 @@ do local LastAddedMacro; local MacroCount = 0; - local Macro_OnEnter = function(self) - self:SetPanelColor("highlight") - self.icon:SetGradient(unpack(SuperVillain.Media.gradient.bizzaro)) - GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 2, 4) - GameTooltip:ClearLines() - if not self.TText2 then - GameTooltip:AddLine(self.TText, 1, 1, 1) - else - GameTooltip:AddDoubleLine(self.TText, self.TText2, 1, 1, 1) - end - GameTooltip:Show() - end - - local Macro_OnLeave = function(self) - self:SetPanelColor("special") - self.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1) - GameTooltip:Hide() - end - - local function HearthTime() - local start,duration = GetItemCooldown(6948) + local function GetMacroCooldown(itemID) + local start,duration = GetItemCooldown(itemID) local expires = duration - (GetTime() - start) if expires > 0.05 then local timeLeft = 0; @@ -662,6 +643,31 @@ do end end + local Macro_OnEnter = function(self) + self:SetPanelColor("highlight") + self.icon:SetGradient(unpack(SuperVillain.Media.gradient.bizzaro)) + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 2, 4) + GameTooltip:ClearLines() + if not self.TText2 then + GameTooltip:AddLine("Open " .. self.TText, 1, 1, 1) + else + GameTooltip:AddDoubleLine("[Click]", "Open " .. self.TText, 0, 1, 0, 1, 1, 1) + GameTooltip:AddDoubleLine("[Shift-Click]", "Use " .. self.TText2, 0, 1, 0, 1, 1, 1) + if(self.IsItem) then + GameTooltip:AddLine(" ", 1, 1, 1) + local remaining = GetMacroCooldown(self.IsItem) + GameTooltip:AddDoubleLine(self.TText2, remaining, 1, 0.5, 0, 0, 1, 1) + end + end + GameTooltip:Show() + end + + local Macro_OnLeave = function(self) + self:SetPanelColor("special") + self.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1) + GameTooltip:Hide() + end + local Hearth_OnEnter = function(self) if InCombatLockdown() then return end self.glow:Show() @@ -669,7 +675,7 @@ do GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4) GameTooltip:ClearLines() GameTooltip:AddLine(L["Hearthstone"], 1, 1, 1) - local remaining = HearthTime() + local remaining = GetMacroCooldown(6948) GameTooltip:AddDoubleLine(L["Time Remaining"], remaining, 1, 1, 1, 0, 1, 1) if(self.ExtraSpell) then GameTooltip:AddLine(" ", 1, 1, 1) @@ -714,19 +720,25 @@ do button.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1) button.skillName = proName; button.itemId = itemID; - button.TText = "Open " .. proName; - button:SetAttribute("type", "macro") + button.TText = proName; + if(data[5]) then - local rcSpellID = data[5] - if(data[6] and IsSpellKnown(data[6])) then - rcSpellID = data[6] + local rightClick + button:RegisterForClicks("AnyDown") + if(data[6] and GetItemCount(data[6], true) > 0) then + rightClick = GetItemInfo(data[6]) + button.IsItem = data[6] + else + rightClick = GetSpellInfo(data[5]) end - local rightClickSpell = GetSpellInfo(rcSpellID) - button:SetAttribute("macrotext", "/cast [mod:shift]" .. rightClickSpell .. "; " .. proName) - button.TText2 = "Shift-Click to use " .. rightClickSpell - else - button:SetAttribute("macrotext","/cast " .. proName) - end + button:SetAttribute("type", "macro") + button:SetAttribute("macrotext", "/cast [button:2] " .. rightClick .. ";" .. proName) + button.TText2 = rightClick + else + button:SetAttribute("type", "macro") + button:SetAttribute("macrotext", "/cast " .. proName) + end + button:SetScript("OnEnter", Macro_OnEnter) button:SetScript("OnLeave", Macro_OnLeave) end diff --git a/Interface/AddOns/SVUI/system/system.lua b/Interface/AddOns/SVUI/system/system.lua index 8407ee6..ccbda5e 100644 --- a/Interface/AddOns/SVUI/system/system.lua +++ b/Interface/AddOns/SVUI/system/system.lua @@ -102,7 +102,7 @@ THE CLEANING LADY ########################################################## ]]-- -- local LemonPledge = 0; --- local Consuela = CreateFrame("Frame") +-- local Consuela = CreateFrame("Frame", nil) -- Consuela:RegisterAllEvents() -- Consuela:SetScript("OnEvent", function(self, event) -- LemonPledge = LemonPledge + 1 diff --git a/Interface/AddOns/SVUI_ConfigOMatic/modules/chat.lua b/Interface/AddOns/SVUI_ConfigOMatic/modules/chat.lua index a7ce0cc..dcc2bd8 100644 --- a/Interface/AddOns/SVUI_ConfigOMatic/modules/chat.lua +++ b/Interface/AddOns/SVUI_ConfigOMatic/modules/chat.lua @@ -70,7 +70,9 @@ SuperVillain.Options.args.SVChat={ order = 2, type = "toggle", name = L["Save Chats"], - desc = L["Retain chat messages even after logging out."] + desc = L["Retain chat messages even after logging out."], + get = function(a)return SuperVillain.db.SVChat[a[#a]]end, + set = function(a,b)MOD:ChangeDBVar(b,a[#a]);MOD:ReLoad() end, }, url = { order = 3, diff --git a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua index 0060dcf..2abf3ad 100644 --- a/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua +++ b/Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua @@ -31,7 +31,7 @@ local format = string.format; --[[ MATH METHODS ]]-- local floor = math.floor; --[[ TABLE METHODS ]]-- -local twipe,tcopy = table.wipe, table.copy; +local twipe,tcopy,tsort = table.wipe, table.copy, table.sort; --[[ ########################################################## GET ADDON DATA @@ -130,7 +130,7 @@ local RefreshLoggedSlot = function(self, bag, slotID, save) end if (key and save) then local id = GetContainerItemID(bag,slotID) - LOG.myStash[bag][key] = GetItemCount(id,true); + if id ~= 6948 then LOG.myStash[bag][key] = GetItemCount(id,true) end end else slot:SetBackdropBorderColor(0, 0, 0) @@ -150,8 +150,6 @@ local RefreshLoggedBagSlots = function(self, bag, save) for i = 1, GetContainerNumSlots(bag)do local container = self if not self.RefreshSlot then - self:RefreshSlot(bag, i, save) - else container = self:GetParent() end RefreshLoggedSlot(container, bag, i, save) @@ -178,47 +176,26 @@ local RefreshLoggedBagsSlots = function(self) end end -local GameTooltip_OnTooltipSetItem = function(self,tooltip) - if not tooltip.itemCleared then - local key,itemID = tooltip:GetItem() - local left = ""; - local right = ""; - if LOG.BagItemCache[key] then - tooltip:AddLine(" ") - tooltip:AddDoubleLine("|cFFCA3C3C[Character]|r","|cFFCA3C3C[Bags/Bank]|r") - for alt,amt in pairs(LOG.BagItemCache[key]) do - local result = ("|cFF00FFFF%d|r"):format(amt) - tooltip:AddDoubleLine(alt,result) - end - tooltip:AddLine(" ") +local GameTooltip_LogTooltipSetItem = function(self) + local key,itemID = self:GetItem() + if LOG.BagItemCache[key] then + self:AddLine(" ") + self:AddDoubleLine("|cFFFFDD3C[Character]|r","|cFFFFDD3C[Count]|r") + for alt,amt in pairs(LOG.BagItemCache[key]) do + local hexString = SVLOG_Data[realmKey]["info"][alt] + local name = ("%s%s|r"):format(hexString, alt) + local result = ("%s%s|r"):format(hexString, amt) + self:AddDoubleLine(name,result) end - if itemID ~= nil and SuperVillain.db.SVTip.spellID then - left = "|cFFCA3C3CID: |r" - right = ("|cFFCA3C3C%s|r %s"):format(ID,itemID):match(":(%w+)") - end - if left ~= "" or right ~= "" then - tooltip:AddLine(" ") - tooltip:AddDoubleLine(left,right) - end - tooltip.itemCleared = true + self:AddLine(" ") end + self.itemLogged = true end --[[ ########################################################## CORE FUNCTIONS ########################################################## ]]-- -function LOG:BuildCachedInventory() - for alt,_ in pairs(LOG.stash) do - for bag,items in pairs(LOG.stash[alt]) do - for id,amt in pairs(items) do - LOG.BagItemCache[id] = LOG.BagItemCache[id] or {} - LOG.BagItemCache[id][alt] = amt - end - end - end -end - function CHAT:LoadSavedChatLog() local temp, data = {} for id, _ in pairs(SVLOG_Cache["chat"]) do @@ -230,31 +207,13 @@ function CHAT:LoadSavedChatLog() for i = 1, #temp do data = SVLOG_Cache["chat"][tostring(temp[i])] if type(data) == "table" and data[20] ~= nil then - CHAT.timeOverride = temp[i] + self.timeOverride = temp[i] ChatFrame_MessageEventHandler(DEFAULT_CHAT_FRAME, data[20], unpack(data)) end end end function CHAT:LogCurrentChat(event, ...) - if CHAT.db.throttleInterval ~= 0 and (event == 'CHAT_MESSAGE_SAY' or event == 'CHAT_MESSAGE_YELL' or event == 'CHAT_MSG_CHANNEL') then - local msg, sender = ... - local message = sender:upper()..msg; - if sender ~= "" then - if CHAT.MessageCache["list"][message] == nil then - CHAT.MessageCache["list"][message] = true - CHAT.MessageCache["count"][message] = 1 - CHAT.MessageCache["time"][message] = time() - else - CHAT.MessageCache["count"][message] = CHAT.MessageCache["count"][message] + 1 - end - end - if sender ~= UnitName("player") and CHAT.MessageCache["list"][message] then - if difftime(time(), CHAT.MessageCache["time"][message]) <= CHAT.db.throttleInterval then - return; - end - end - end local temp = {} for i = 1, select('#', ...) do temp[i] = select(i, ...) or false @@ -291,7 +250,7 @@ function CHAT:PLAYER_ENTERING_WORLD() ChatFrame_MessageEventHandler(DEFAULT_CHAT_FRAME, data[20], unpack(data)) end end - CHAT:UnregisterEvent("PLAYER_ENTERING_WORLD") + self:UnregisterEvent("PLAYER_ENTERING_WORLD") end function LOG:AppendBankFunctions() @@ -300,6 +259,15 @@ function LOG:AppendBankFunctions() BAGS.BankFrame.RefreshBagsSlots = RefreshLoggedBagsSlots end end + +function LOG:AppendChatFunctions() + if SuperVillain.db.SVChat.enable and SuperVillain.db.SVChat.saveChats then + for _,event in pairs(LoggingEvents) do + SuperVillain.SVChat:RegisterEvent(event, "LogCurrentChat") + end + SuperVillain.SVChat:RegisterEvent("PLAYER_ENTERING_WORLD") + end +end --[[ ########################################################## CORE FUNCTIONS @@ -336,11 +304,15 @@ BUILD FUNCTION ########################################################## ]]-- local function LoadLogOMatic() + local toonClass = select(2,UnitClass("player")); + local r,g,b = RAID_CLASS_COLORS[toonClass].r, RAID_CLASS_COLORS[toonClass].g, RAID_CLASS_COLORS[toonClass].b + local hexString = ("|cff%02x%02x%02x"):format(r * 255, g * 255, b * 255) if not SVLOG_Cache then SVLOG_Cache = {} end - SVLOG_Data = SVLOG_Data or {} SVLOG_Data[realmKey] = SVLOG_Data[realmKey] or {} SVLOG_Data[realmKey]["bags"] = SVLOG_Data[realmKey]["bags"] or {}; + SVLOG_Data[realmKey]["info"] = SVLOG_Data[realmKey]["info"] or {}; + SVLOG_Data[realmKey]["info"][nameKey] = hexString; SVLOG_Data[realmKey]["bags"][nameKey] = SVLOG_Data[realmKey]["bags"][nameKey] or {}; LOG.stash = SVLOG_Data[realmKey]["bags"]; @@ -351,11 +323,19 @@ local function LoadLogOMatic() LOG.chronicle = SVLOG_Data[realmKey]["quests"][nameKey]; - NewHook(SuperVillain, "ResetProfile", ResetAllLogs); + NewHook(SuperVillain, "ResetAllUI", ResetAllLogs); local uselog = SuperVillain.db.SVChat.saveChats; if not SVLOG_Cache["chat"] then SVLOG_Cache["chat"] = {} end - LOG:BuildCachedInventory(); + + for alt,_ in pairs(SVLOG_Data[realmKey]["bags"]) do + for bag,items in pairs(SVLOG_Data[realmKey]["bags"][alt]) do + for id,amt in pairs(items) do + LOG.BagItemCache[id] = LOG.BagItemCache[id] or {} + LOG.BagItemCache[id][alt] = amt + end + end + end --[[ OVERRIDE DEFAULT FUNCTIONS ]]-- if SuperVillain.db.SVBag.enable then @@ -366,17 +346,12 @@ local function LoadLogOMatic() end end if SuperVillain.db.SVTip.enable then - local TIP = SuperVillain.SVTip; - TIP["GameTooltip_OnTooltipSetItem"] = function(...) GameTooltip_OnTooltipSetItem(...) end + GameTooltip:HookScript("OnTooltipSetItem", GameTooltip_LogTooltipSetItem) end --[[ APPLY HOOKS ]]-- - if SuperVillain.db.SVChat.enable and SuperVillain.db.SVChat.saveChats then - for _,event in pairs(LoggingEvents) do - CHAT:RegisterEvent(event, "LogCurrentChat") - end - CHAT:RegisterEvent("PLAYER_ENTERING_WORLD") - end + LOG:AppendChatFunctions() + NewHook(CHAT, "ReLoad", LOG.AppendChatFunctions); end SuperVillain.Registry:NewScript(LoadLogOMatic) -- 1.7.9.5