From aad3d0da09869974a416aac06edb8870d87e19ba Mon Sep 17 00:00:00 2001 From: Repooc Date: Thu, 6 Oct 2016 05:37:24 -0400 Subject: [PATCH 1/3] Display artifact power on item in bags. (Rough Draft, No Options Yet) --- ElvUI_SLE/modules/bags/artifactpower.lua | 90 ++++++++++++++++++++++++++++++ ElvUI_SLE/modules/bags/load_bags.xml | 3 + ElvUI_SLE/modules/load_modules.xml | 1 + 3 files changed, 94 insertions(+) create mode 100644 ElvUI_SLE/modules/bags/artifactpower.lua create mode 100644 ElvUI_SLE/modules/bags/load_bags.xml diff --git a/ElvUI_SLE/modules/bags/artifactpower.lua b/ElvUI_SLE/modules/bags/artifactpower.lua new file mode 100644 index 0000000..9e51fb8 --- /dev/null +++ b/ElvUI_SLE/modules/bags/artifactpower.lua @@ -0,0 +1,90 @@ +local SLE, T, E, L, V, P, G = unpack(select(2, ...)) +local AP = SLE:NewModule("ArtifactPowerBags", 'AceHook-3.0', 'AceEvent-3.0') +local B = E:GetModule('Bags') +local _G = _G +local tooltipScanner +local tooltipName = "ArtifactPowerTooltipScanner" +local EMPOWERING_SPELL_ID = 227907 +local empoweringSpellName +local arcanePower +AP.containers = {} + +local function GetItemLinkArtifactPower(slotLink) + if slotLink then + local itemSpell = GetItemSpell(slotLink) + + if itemSpell and itemSpell == empoweringSpellName then + tooltipScanner:SetOwner(E.UIParent, "ANCHOR_NONE") + tooltipScanner:SetHyperlink(slotLink) + local tooltipText = _G[tooltipName.."TextLeft4"]:GetText() + + if(tooltipText == nil) then + return nil + end + + local ap = tooltipText:gsub("[,%.]", ""):match("%d.-%s") or "" + + tooltipScanner:Hide() + return tonumber(ap); + else + return nil + end + else + return nil + end +end + +local bagUpdate = function(self) + for _, container in T.pairs(AP.containers) do + for _, bagID in T.ipairs(container.BagIDs) do + for slotID = 1, T.GetContainerNumSlots(bagID) do + local slotFrame = _G["ElvUI_ContainerFrameBag"..bagID.."Slot"..slotID] + local slotLink = GetContainerItemLink(bagID,slotID) + + if not slotFrame.artifactpowerinfo then + slotFrame.artifactpowerinfo = slotFrame:CreateFontString(nil, 'OVERLAY') + end + + slotFrame.artifactpowerinfo:Point("BOTTOMRIGHT", 0, 2) + slotFrame.artifactpowerinfo:FontTemplate(E.LSM:Fetch("font", E.db.bags.itemLevelFont), E.db.bags.itemLevelFontSize, E.db.bags.itemLevelFontOutline) + slotFrame.artifactpowerinfo:SetText("") + slotFrame.artifactpowerinfo:SetAllPoints(slotFrame) + slotFrame.artifactpowerinfo:SetTextColor(255, 0, 0) + + arcanePower = GetItemLinkArtifactPower(slotLink) + + if arcanePower then + slotFrame.artifactpowerinfo:SetText(arcanePower) + end + end + end + end +end + +function AP:ToggleSettings() + self:RegisterEvent("BAG_UPDATE_DELAYED", bagUpdate) + self:RegisterEvent("ARTIFACT_UPDATE", bagUpdate) + self:RegisterEvent("BANKFRAME_OPENED", bagUpdate) + self:RegisterEvent("PLAYERBANKSLOTS_CHANGED", bagUpdate) + self:RegisterEvent("BANKFRAME_CLOSED", bagUpdate) + self:RegisterEvent("BAG_UPDATE", bagUpdate) + self:RegisterEvent("ITEM_LOCKED", bagUpdate) + self:RegisterEvent("ITEM_LOCK_CHANGED", bagUpdate) +end + +function AP:Initialize() + if not SLE.initialized or not E.private.bags.enable then return end + + tooltipScanner = CreateFrame("GameTooltip", tooltipName, nil, "GameTooltipTemplate") + empoweringSpellName = GetSpellInfo(EMPOWERING_SPELL_ID) + + T.tinsert(AP.containers, _G["ElvUI_ContainerFrame"]) + self:SecureHook(B, "OpenBank", function() + self:Unhook(B, "OpenBank") + T.tinsert(AP.containers, _G["ElvUI_BankContainerFrame"]) + AP:ToggleSettings() + end) + + AP:ToggleSettings() +end +SLE:RegisterModule(AP:GetName()) \ No newline at end of file diff --git a/ElvUI_SLE/modules/bags/load_bags.xml b/ElvUI_SLE/modules/bags/load_bags.xml new file mode 100644 index 0000000..f1e0823 --- /dev/null +++ b/ElvUI_SLE/modules/bags/load_bags.xml @@ -0,0 +1,3 @@ + +