From b236ff5e9f9073a88fbb50aaa60872ebf80d0bb4 Mon Sep 17 00:00:00 2001 From: Darthpred Date: Sun, 16 Oct 2016 12:16:20 +0300 Subject: [PATCH] Move bags to bags :D --- ElvUI_SLE/modules/bags.lua | 198 ---------------------------------- ElvUI_SLE/modules/bags/bags.lua | 198 ++++++++++++++++++++++++++++++++++ ElvUI_SLE/modules/bags/load_bags.xml | 1 + ElvUI_SLE/modules/load_modules.xml | 1 - 4 files changed, 199 insertions(+), 199 deletions(-) delete mode 100755 ElvUI_SLE/modules/bags.lua create mode 100644 ElvUI_SLE/modules/bags/bags.lua diff --git a/ElvUI_SLE/modules/bags.lua b/ElvUI_SLE/modules/bags.lua deleted file mode 100755 index cf1aa64..0000000 --- a/ElvUI_SLE/modules/bags.lua +++ /dev/null @@ -1,198 +0,0 @@ -local SLE, T, E, L, V, P, G = unpack(select(2, ...)) -local SB = SLE:NewModule("Bags", 'AceHook-3.0') -local Pr -local B = E:GetModule('Bags') ---GLOBALS: hooksecurefunc -local _G = _G -local REAGENTBANK_CONTAINER = REAGENTBANK_CONTAINER -local C_NewItems = C_NewItems - -function SB:UpdateSlot(bagID, slotID) - if (self.Bags[bagID] and self.Bags[bagID].numSlots ~= T.GetContainerNumSlots(bagID)) or not self.Bags[bagID] or not self.Bags[bagID][slotID] then - return; - end - - local slot = self.Bags[bagID][slotID]; - slot.shadow:Hide(); - E:StopFlash(slot.shadow); - - if (slot:IsShown() and C_NewItems.IsNewItem(bagID, slotID)) then - SB:StartAnim(slot); - end - - if not Pr then Pr = SLE:GetModule("Professions") end - if not Pr.DeconstructionReal then return end - if Pr.DeconstructionReal:IsShown() and not slot.hasItem then - B:Tooltip_Hide() - Pr.DeconstructionReal:OnLeave() - end -end - -function SB:UpdateReagentSlot(slotID) - local bagID = REAGENTBANK_CONTAINER; - local slot = _G["ElvUIReagentBankFrameItem"..slotID]; - if not slot then return end; - slot.shadow:Hide(); - E:StopFlash(slot.shadow); - - if (slot:IsShown() and C_NewItems.IsNewItem(bagID, slotID)) then - SB:StartAnim(slot); - end -end - -function SB:StartAnim(slot) - if not slot.flashTex then - SB:HookBags(nil, slot) - end - slot.flashTex:Show(); - slot.flashAnim:Play(); - slot.glowAnim:Play(); -end - -function SB:StopAnim(slot) - slot.flashTex:Hide(); - slot.flashAnim:Stop(); - slot.glowAnim:Stop(); -end - -function SB:HookSlot(slot, bagID, slotID) - if bagID == REAGENTBANK_CONTAINER and E.private.sle.bags.transparentSlots and not slot.SLErarity then - slot.SLErarity = true - B:UpdateReagentSlot(slotID) - end - slot:HookScript('OnEnter', function() - if (SB.db.lootflash) then - C_NewItems.RemoveNewItem(bagID, slotID); - SB:StopAnim(slot); - end - end); - - slot:HookScript('OnShow', function() - if (SB.db.lootflash) then - if (C_NewItems.IsNewItem(bagID, slotID)) then - SB:StartAnim(slot); - else - SB:StopAnim(slot); - end - end - end); - - slot:HookScript('OnHide', function() - if (SB.db.lootflash) then - C_NewItems.RemoveNewItem(bagID, slotID); - SB:StopAnim(slot); - end - end); - - slot.flashTex = slot:CreateTexture('flashTex', 'OVERLAY', 1); - slot.flashTex:SetBlendMode("ADD"); - slot.flashTex:SetTexture(.7, .7, .7); - slot.flashTex:SetInside(); - slot.flashTex:SetAlpha(0); - - slot.shadow:SetAlpha(0); - - local flashAnimGroup = slot:CreateAnimationGroup("flashAnim"); - local flashAnim1 = flashAnimGroup:CreateAnimation("Alpha"); - flashAnim1:SetChildKey("flashTex"); - flashAnim1:SetFromAlpha(0); - flashAnim1:SetToAlpha(1); - --flashAnim1:SetSmoothing("IN"); - flashAnim1:SetDuration(0.2); - flashAnim1:SetOrder(1); - local flashAnim2 = flashAnimGroup:CreateAnimation("Alpha"); - flashAnim2:SetChildKey("flashTex"); - flashAnim2:SetFromAlpha(1); - flashAnim2:SetToAlpha(0); - --flashAnim2:SetSmoothing("OUT"); - flashAnim2:SetDuration(0.2); - flashAnim2:SetOrder(2); - slot.flashAnim = flashAnimGroup; - - local glowAnimGroup = slot:CreateAnimationGroup("NewItemGlow"); - glowAnimGroup:SetLooping("REPEAT"); - local glowFlash1 = glowAnimGroup:CreateAnimation("Alpha"); - glowFlash1:SetChildKey("backdrop"); - --glowFlash1:SetStartDelay(0.4); - glowFlash1:SetDuration(0.8); - glowFlash1:SetOrder(1); - glowFlash1:SetFromAlpha(1); - glowFlash1:SetToAlpha(0.4); - - local glowFlash2 = glowAnimGroup:CreateAnimation("Alpha"); - glowFlash2:SetChildKey("backdrop"); - glowFlash2:SetDuration(0.8); - glowFlash2:SetOrder(2); - glowFlash2:SetFromAlpha(0.4); - glowFlash2:SetToAlpha(1); - - slot.glowAnim = glowAnimGroup; -end - -function SB:HookBags(isBank, force) - local slot - for _, bagFrame in T.pairs(B.BagFrames) do - for _, bagID in T.pairs(bagFrame.BagIDs) do - if (not self.hookedBags[bagID])then - for slotID = 1, T.GetContainerNumSlots(bagID) do - slot = bagFrame.Bags[bagID][slotID]; - self:HookSlot(slot, bagID, slotID); - end - self.hookedBags[bagID] = true; - elseif self.hookedBags[bagID] and force then - for slotID = 1, T.GetContainerNumSlots(bagID) do - if force == bagFrame.Bags[bagID][slotID] then self:HookSlot(force, bagID, slotID) end - end - end - for slotID = 1, T.GetContainerNumSlots(bagID) do - slot = bagFrame.Bags[bagID][slotID]; - if slot.template ~= "Transparent" and E.private.sle.bags.transparentSlots then slot:SetTemplate('Transparent') end - end - end - end - - if (_G["ElvUIReagentBankFrameItem1"] and not self.hookedBags[REAGENTBANK_CONTAINER]) then - for slotID = 1, 98 do - local slot = _G["ElvUIReagentBankFrameItem"..slotID]; - self:HookSlot(slot, REAGENTBANK_CONTAINER, slotID); - end - self.hookedBags[REAGENTBANK_CONTAINER] = true; - end -end - -function SB:Initialize() - self.hookedBags = {}; - if not SLE.initialized or not E.private.bags.enable then return end - - function SB:ForUpdateAll() - SB.db = E.db.sle.bags - end - SB:ForUpdateAll() - - local BUpdateSlot = B.UpdateSlot; - local SBUpdateSlot = SB.UpdateSlot; - for _, bagFrame in T.pairs(B.BagFrames) do - local UpdateSlot = function(self, bagID, slotID) - BUpdateSlot(bagFrame, bagID, slotID); - if (SB.db.lootflash) then - SBUpdateSlot(bagFrame, bagID, slotID); - end - end - bagFrame.UpdateSlot = UpdateSlot; - local BUpdateReagentSlot = B.UpdateReagentSlot; - local SBUpdateReagentSlot = SB.UpdateReagentSlot; - local UpdateReagentSlot = function(self, slotID) - BUpdateReagentSlot(bagFrame, slotID); - if (SB.db.lootflash) then - SBUpdateReagentSlot(bagFrame, slotID); - end - end - bagFrame.UpdateReagentSlot = UpdateReagentSlot; - end - self:HookBags(); - hooksecurefunc(B, "Layout", function() - self:HookBags() - end); -end - -SLE:RegisterModule(SB:GetName()) \ No newline at end of file diff --git a/ElvUI_SLE/modules/bags/bags.lua b/ElvUI_SLE/modules/bags/bags.lua new file mode 100644 index 0000000..cf1aa64 --- /dev/null +++ b/ElvUI_SLE/modules/bags/bags.lua @@ -0,0 +1,198 @@ +local SLE, T, E, L, V, P, G = unpack(select(2, ...)) +local SB = SLE:NewModule("Bags", 'AceHook-3.0') +local Pr +local B = E:GetModule('Bags') +--GLOBALS: hooksecurefunc +local _G = _G +local REAGENTBANK_CONTAINER = REAGENTBANK_CONTAINER +local C_NewItems = C_NewItems + +function SB:UpdateSlot(bagID, slotID) + if (self.Bags[bagID] and self.Bags[bagID].numSlots ~= T.GetContainerNumSlots(bagID)) or not self.Bags[bagID] or not self.Bags[bagID][slotID] then + return; + end + + local slot = self.Bags[bagID][slotID]; + slot.shadow:Hide(); + E:StopFlash(slot.shadow); + + if (slot:IsShown() and C_NewItems.IsNewItem(bagID, slotID)) then + SB:StartAnim(slot); + end + + if not Pr then Pr = SLE:GetModule("Professions") end + if not Pr.DeconstructionReal then return end + if Pr.DeconstructionReal:IsShown() and not slot.hasItem then + B:Tooltip_Hide() + Pr.DeconstructionReal:OnLeave() + end +end + +function SB:UpdateReagentSlot(slotID) + local bagID = REAGENTBANK_CONTAINER; + local slot = _G["ElvUIReagentBankFrameItem"..slotID]; + if not slot then return end; + slot.shadow:Hide(); + E:StopFlash(slot.shadow); + + if (slot:IsShown() and C_NewItems.IsNewItem(bagID, slotID)) then + SB:StartAnim(slot); + end +end + +function SB:StartAnim(slot) + if not slot.flashTex then + SB:HookBags(nil, slot) + end + slot.flashTex:Show(); + slot.flashAnim:Play(); + slot.glowAnim:Play(); +end + +function SB:StopAnim(slot) + slot.flashTex:Hide(); + slot.flashAnim:Stop(); + slot.glowAnim:Stop(); +end + +function SB:HookSlot(slot, bagID, slotID) + if bagID == REAGENTBANK_CONTAINER and E.private.sle.bags.transparentSlots and not slot.SLErarity then + slot.SLErarity = true + B:UpdateReagentSlot(slotID) + end + slot:HookScript('OnEnter', function() + if (SB.db.lootflash) then + C_NewItems.RemoveNewItem(bagID, slotID); + SB:StopAnim(slot); + end + end); + + slot:HookScript('OnShow', function() + if (SB.db.lootflash) then + if (C_NewItems.IsNewItem(bagID, slotID)) then + SB:StartAnim(slot); + else + SB:StopAnim(slot); + end + end + end); + + slot:HookScript('OnHide', function() + if (SB.db.lootflash) then + C_NewItems.RemoveNewItem(bagID, slotID); + SB:StopAnim(slot); + end + end); + + slot.flashTex = slot:CreateTexture('flashTex', 'OVERLAY', 1); + slot.flashTex:SetBlendMode("ADD"); + slot.flashTex:SetTexture(.7, .7, .7); + slot.flashTex:SetInside(); + slot.flashTex:SetAlpha(0); + + slot.shadow:SetAlpha(0); + + local flashAnimGroup = slot:CreateAnimationGroup("flashAnim"); + local flashAnim1 = flashAnimGroup:CreateAnimation("Alpha"); + flashAnim1:SetChildKey("flashTex"); + flashAnim1:SetFromAlpha(0); + flashAnim1:SetToAlpha(1); + --flashAnim1:SetSmoothing("IN"); + flashAnim1:SetDuration(0.2); + flashAnim1:SetOrder(1); + local flashAnim2 = flashAnimGroup:CreateAnimation("Alpha"); + flashAnim2:SetChildKey("flashTex"); + flashAnim2:SetFromAlpha(1); + flashAnim2:SetToAlpha(0); + --flashAnim2:SetSmoothing("OUT"); + flashAnim2:SetDuration(0.2); + flashAnim2:SetOrder(2); + slot.flashAnim = flashAnimGroup; + + local glowAnimGroup = slot:CreateAnimationGroup("NewItemGlow"); + glowAnimGroup:SetLooping("REPEAT"); + local glowFlash1 = glowAnimGroup:CreateAnimation("Alpha"); + glowFlash1:SetChildKey("backdrop"); + --glowFlash1:SetStartDelay(0.4); + glowFlash1:SetDuration(0.8); + glowFlash1:SetOrder(1); + glowFlash1:SetFromAlpha(1); + glowFlash1:SetToAlpha(0.4); + + local glowFlash2 = glowAnimGroup:CreateAnimation("Alpha"); + glowFlash2:SetChildKey("backdrop"); + glowFlash2:SetDuration(0.8); + glowFlash2:SetOrder(2); + glowFlash2:SetFromAlpha(0.4); + glowFlash2:SetToAlpha(1); + + slot.glowAnim = glowAnimGroup; +end + +function SB:HookBags(isBank, force) + local slot + for _, bagFrame in T.pairs(B.BagFrames) do + for _, bagID in T.pairs(bagFrame.BagIDs) do + if (not self.hookedBags[bagID])then + for slotID = 1, T.GetContainerNumSlots(bagID) do + slot = bagFrame.Bags[bagID][slotID]; + self:HookSlot(slot, bagID, slotID); + end + self.hookedBags[bagID] = true; + elseif self.hookedBags[bagID] and force then + for slotID = 1, T.GetContainerNumSlots(bagID) do + if force == bagFrame.Bags[bagID][slotID] then self:HookSlot(force, bagID, slotID) end + end + end + for slotID = 1, T.GetContainerNumSlots(bagID) do + slot = bagFrame.Bags[bagID][slotID]; + if slot.template ~= "Transparent" and E.private.sle.bags.transparentSlots then slot:SetTemplate('Transparent') end + end + end + end + + if (_G["ElvUIReagentBankFrameItem1"] and not self.hookedBags[REAGENTBANK_CONTAINER]) then + for slotID = 1, 98 do + local slot = _G["ElvUIReagentBankFrameItem"..slotID]; + self:HookSlot(slot, REAGENTBANK_CONTAINER, slotID); + end + self.hookedBags[REAGENTBANK_CONTAINER] = true; + end +end + +function SB:Initialize() + self.hookedBags = {}; + if not SLE.initialized or not E.private.bags.enable then return end + + function SB:ForUpdateAll() + SB.db = E.db.sle.bags + end + SB:ForUpdateAll() + + local BUpdateSlot = B.UpdateSlot; + local SBUpdateSlot = SB.UpdateSlot; + for _, bagFrame in T.pairs(B.BagFrames) do + local UpdateSlot = function(self, bagID, slotID) + BUpdateSlot(bagFrame, bagID, slotID); + if (SB.db.lootflash) then + SBUpdateSlot(bagFrame, bagID, slotID); + end + end + bagFrame.UpdateSlot = UpdateSlot; + local BUpdateReagentSlot = B.UpdateReagentSlot; + local SBUpdateReagentSlot = SB.UpdateReagentSlot; + local UpdateReagentSlot = function(self, slotID) + BUpdateReagentSlot(bagFrame, slotID); + if (SB.db.lootflash) then + SBUpdateReagentSlot(bagFrame, slotID); + end + end + bagFrame.UpdateReagentSlot = UpdateReagentSlot; + end + self:HookBags(); + hooksecurefunc(B, "Layout", function() + self:HookBags() + end); +end + +SLE:RegisterModule(SB: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 index f1e0823..f76cfb2 100644 --- a/ElvUI_SLE/modules/bags/load_bags.xml +++ b/ElvUI_SLE/modules/bags/load_bags.xml @@ -1,3 +1,4 @@ +