diff --git a/.idea/shelf/strange_bank_stuff_.xml b/.idea/shelf/strange_bank_stuff_.xml deleted file mode 100644 index 9cbc327..0000000 --- a/.idea/shelf/strange_bank_stuff_.xml +++ /dev/null @@ -1,4 +0,0 @@ -<changelist name="strange_bank_stuff_" date="1467652889313" recycled="false"> - <option name="PATH" value="$PROJECT_DIR$/.idea/shelf/strange_bank_stuff_/shelved.patch" /> - <option name="DESCRIPTION" value="strange bank stuff " /> -</changelist> \ No newline at end of file diff --git a/.idea/shelf/strange_bank_stuff_/shelved.patch b/.idea/shelf/strange_bank_stuff_/shelved.patch deleted file mode 100644 index 3505c7f..0000000 --- a/.idea/shelf/strange_bank_stuff_/shelved.patch +++ /dev/null @@ -1,1075 +0,0 @@ -Index: .idea/misc.xml -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- .idea/misc.xml (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ .idea/misc.xml (revision ) -@@ -1,5 +1,8 @@ - <?xml version="1.0" encoding="UTF-8"?> - <project version="4"> -+ <component name="EntryPointsManager"> -+ <entry_points version="2.0" /> -+ </component> - <component name="MavenImportPreferences"> - <option name="generalSettings"> - <MavenGeneralSettings> -\ No newline at end of file -Index: src/lua/elements/mainBar.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/elements/mainBar.lua (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/lua/elements/mainBar.lua (revision ) -@@ -47,6 +47,18 @@ - self.slots:SetPoint('TOPLEFT', self.searchBox, 'TOPRIGHT', 5, 0) - self.slots:SetPoint('BOTTOMLEFT', self.searchBox, 'BOTTOMRIGHT', 5, 0) - -+ self.bagBtn = CreateFrame("CheckButton", 'TestBtnThingy', self, 'UIRadioButtonTemplate') -+ self.bagBtn:SetPoint('RIGHT', -5, 0) -+ self.bagBtn:SetScript('OnClick', function() -+ if self.bagFrame then -+ if self.bagBtn:GetChecked() then -+ self.bagFrame:Show() -+ else -+ self.bagFrame:Hide() -+ end -+ end -+ end) -+ - self.currencyBox:SetScript('OnEnter', function() - local cnt = GetCurrencyListSize() - GameTooltip:SetOwner(self.currencyBox, "ANCHOR_NONE") -@@ -64,6 +76,15 @@ - self.currencyBox:SetScript('OnLeave', function() - GameTooltip:Hide() - end) -+end -+ -+function bar:SetBagFrame(frame) -+ self.bagFrame = frame -+ if self.bagBtn:GetChecked() then -+ frame:Show() -+ else -+ frame:Hide() -+ end - end - - function bar:Setup() -Index: src/lua/cache/cache.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/cache/cache.lua (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/lua/cache/cache.lua (revision ) -@@ -6,6 +6,8 @@ - local cache = ADDON.cache - cache.items = {} - cache.bagContainers = {} -+cache.bankContainers = {} -+cache.reagentContainers = {} - - function cache:GetItem(bag, slot) - self.items[bag] = self.items[bag] or {} -@@ -16,6 +18,16 @@ - function cache:GetBagItemContainer(name) - self.bagContainers[name] = self.bagContainers[name] or ADDON.itemContainer(name, name ~= ADDON.utils.EMPTY_BAG_NAME, nil, name == ADDON.utils.EMPTY_BAG_NAME) - return self.bagContainers[name] -+end -+ -+function cache:GetBankItemContainer(name) -+ self.bankContainers[name] = self.bankContainers[name] or ADDON.itemContainer(name, name ~= ADDON.utils.EMPTY_BAG_NAME, nil, name == ADDON.utils.EMPTY_BAG_NAME) -+ return self.bankContainers[name] -+end -+ -+function cache:GetReagentItemContainer(name) -+ self.reagentContainers[name] = self.reagentContainers[name] or ADDON.itemContainer(name, name ~= ADDON.utils.EMPTY_BAG_NAME, nil, name == ADDON.utils.EMPTY_BAG_NAME) -+ return self.reagentContainers[name] - end - - function cache:UpdateSettings(arrange) -\ No newline at end of file -Index: src/lua/controllers/bag.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/controllers/bag.lua (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/lua/controllers/bag.lua (revision ) -@@ -13,7 +13,9 @@ - self.frame.mainBar = ADDON.mainBar(self.frame) - self.frame.mainBar:SetPoint('TOPRIGHT', self.frame, 'BOTTOMRIGHT', 0, -2) - self.frame.mainBar:Show() -- ADDON.eventManager:AddEvent(self, 'SETTINGS_UPDATE') -+ self.frame.bagBar = ADDON.bagBar(self.frame) -+ self.frame.bagBar:SetPoint('TOPRIGHT', self.frame.mainBar, 'BOTTOMRIGHT', 0, -3) -+ self.frame.mainBar:SetBagFrame(self.frame.bagBar) - - self.frame:HookScript('OnShow', function() - self:Register() -@@ -26,6 +28,7 @@ - function bag:Open() - self:UpdateAllItems() - self.frame.mainBar:Update() -+ self.frame.bagBar:Update() - self.frame:Show() - end - -@@ -41,46 +44,10 @@ - end - end - --local function UpdateItemsForBag(self, bag, arrangeList) -- local count = GetContainerNumSlots(bag) -- if count == 0 and ADDON.cache.items[bag] then -- for _, item in pairs(ADDON.cache.items[bag]) do -- if item:GetParent() and item:GetParent().__class == ADDON.itemContainer.__class then -- local previousContainer = item:GetParent() -- previousContainer:RemoveItem(item) -- arrangeList[previousContainer] = true -- item:Hide() -- end -- end -- else -- for slot = 1, count do -- local item = ADDON.cache:GetItem(bag, slot) -- local previousContainer -- if item:GetParent() and item:GetParent().__class == ADDON.itemContainer.__class then -- previousContainer = item:GetParent() -- end -- -- item:Update() -- -- local newContainer = ADDON.cache:GetBagItemContainer(ADDON.utils:GetItemContainerName(bag, slot)) -- self.frame:AddContainer(newContainer) -- -- if previousContainer ~= newContainer then -- if previousContainer then -- previousContainer:RemoveItem(item) -- arrangeList[previousContainer] = true -- end -- newContainer:AddItem(item) -- arrangeList[newContainer] = true -- end -- end -- end --end -- - function bag:UpdateAllItems() - local arrangeList = {} - for bag = 0, NUM_BAG_SLOTS do -- UpdateItemsForBag(self, bag, arrangeList) -+ ADDON.utils:UpdateItemsForBag(self, bag, arrangeList, ADDON.cache.GetBagItemContainer) - end - for container, _ in pairs(arrangeList) do - container:Arrange() -@@ -90,7 +57,7 @@ - - function bag:UpdateAllItemsForBag(bag) - local arrangeList = {} -- UpdateItemsForBag(self, bag, arrangeList) -+ ADDON.utils:UpdateItemsForBag(self, bag, arrangeList, ADDON.cache.GetBagItemContainer) - for container, _ in pairs(arrangeList) do - container:Arrange() - end -@@ -103,6 +70,7 @@ - ADDON.eventManager:AddEvent(self, 'BAG_UPDATE_COOLDOWN') - ADDON.eventManager:AddEvent(self, 'ITEM_LOCK_CHANGED') - ADDON.eventManager:AddEvent(self, 'PLAYER_MONEY') -+ ADDON.eventManager:AddEvent(self, 'BAG_UPDATE_DELAYED') - end - - function bag:UnRegister() -@@ -111,12 +79,14 @@ - ADDON.eventManager:RemoveEvent(self, 'BAG_UPDATE_COOLDOWN') - ADDON.eventManager:RemoveEvent(self, 'ITEM_LOCK_CHANGED') - ADDON.eventManager:RemoveEvent(self, 'PLAYER_MONEY') -+ ADDON.eventManager:RemoveEvent(self, 'BAG_UPDATE_DELAYED') - end - - function bag:UpdateSettings(arrange) - self.frame:Setup() - self.frame.mainBar:Setup() - self.frame.mainBar:Update() -+ self.frame.bagBar:Setup() - if self.frame:IsVisible() and arrange then - self:Open() - end -@@ -134,7 +104,8 @@ - - function bag:INVENTORY_SEARCH_UPDATE() - for bag = 0, NUM_BAG_SLOTS do -- for _, item in pairs(ADDON.cache:GetItemsForBag(bag)) do -+ for slot = 1, GetContainerNumSlots(bag) do -+ local item = ADDON.cache:GetItem(bag, slot) - item:UpdateSearch() - end - end -@@ -153,4 +124,9 @@ - if bag >= 0 and bag <= NUM_BAG_SLOTS then - ADDON.cache:GetItem(bag, slot):UpdateLock() - end -+ self.frame.bagBar:UpdateLock(bag) -+end -+ -+function bag:BAG_UPDATE_DELAYED() -+ self.frame.bagBar:Update() - end -\ No newline at end of file -Index: src/lua/elements/bagBar.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/elements/bagBar.lua (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/lua/elements/bagBar.lua (revision ) -@@ -1,6 +1,61 @@ ---- ---- User: Brandon James Talbot ---- Date: 2016/06/29 ---- Time: 6:04 PM ---- -+local NAME, ADDON = ... - -+ADDON.bagBar = {} -+ADDON.bagBar.__index = ADDON.bagBar -+ -+local bar = ADDON.bagBar -+setmetatable(bar, { -+ __call = function(self, parent) -+ local frame = ADDON.container('DJBagsBagBar', parent) -+ -+ for k, v in pairs(self) do -+ frame[k] = v -+ end -+ -+ frame:Init() -+ frame:Setup() -+ -+ return frame -+ end -+}) -+ -+function bar:Init() -+ self.bag1 = ADDON.bagItem('DJBagsBag0', 1, GetInventorySlotInfo("Bag0Slot")) -+ self.bag1:SetParent(self) -+ self.bag2 = ADDON.bagItem('DJBagsBag1', 2, GetInventorySlotInfo("Bag1Slot")) -+ self.bag2:SetParent(self) -+ self.bag3 = ADDON.bagItem('DJBagsBag2', 3, GetInventorySlotInfo("Bag2Slot")) -+ self.bag3:SetParent(self) -+ self.bag4 = ADDON.bagItem('DJBagsBag3', 4, GetInventorySlotInfo("Bag3Slot")) -+ self.bag4:SetParent(self) -+end -+ -+function bar:Setup() -+ ADDON.container.Setup(self) -+ -+ self.bag1:SetPoint("TOPRIGHT", -5, -5) -+ self.bag2:SetPoint("TOPRIGHT", self.bag1, 'TOPLEFT', -5, 0) -+ self.bag3:SetPoint("TOPRIGHT", self.bag2, 'TOPLEFT', -5, 0) -+ self.bag4:SetPoint("TOPRIGHT", self.bag3, 'TOPLEFT', -5, 0) -+ -+ self:SetSize(self.bag1:GetWidth() * 4 + 25, 10 + self.bag1:GetHeight()) -+end -+ -+function bar:Update() -+ self.bag1:Update() -+ self.bag2:Update() -+ self.bag3:Update() -+ self.bag4:Update() -+end -+ -+function bar:UpdateLock(bag) -+ if bag == self.bag1:GetID() then -+ self.bag1:UpdateLock() -+ elseif bag == self.bag2:GetID() then -+ self.bag2:UpdateLock() -+ elseif bag == self.bag3:GetID() then -+ self.bag3:UpdateLock() -+ elseif bag == self.bag4:GetID() then -+ self.bag4:UpdateLock() -+ end -+end -\ No newline at end of file -Index: src/lua/core.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/core.lua (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/lua/core.lua (revision ) -@@ -12,6 +12,7 @@ - ADDON.settingsController:Init() - - ADDON.bag:Init() -+ ADDON.bank:Init() - - ADDON.eventManager:AddEvent(self, "SETTINGS_UPDATE") - ADDON.eventManager:RemoveEvent(self, 'ADDON_LOADED') -@@ -71,6 +72,11 @@ - - SLASH_TDJBAGS1, SLASH_TDJBAGS2 = '/tt', '/ttt'; - function SlashCmdList.TDJBAGS(msg, editbox) -+ local b = ADDON.item(-3, 1) -+ b:Update() -+ b:SetSize(32, 32) -+ b:SetPoint('CENTER') -+ b:Show() - end - - SLASH_RELOAD1 = '/rl' -\ No newline at end of file -Index: src/lua/controllers/bank.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/controllers/bank.lua (revision ) -+++ src/lua/controllers/bank.lua (revision ) -@@ -0,0 +1,79 @@ -+local NAME, ADDON = ... -+ -+ADDON.bank = {} -+ADDON.bank.__index = ADDON.bank -+ -+local bank = ADDON.bank -+ -+function bank:Init() -+ self.frame = ADDON.bankBar(UIParent) -+ self.frame:SetPoint('TOPLEFT', 200, -200) -+ self.frame:SetUserPlaced(true) -+ self.frame:Hide() -+ -+ self.frame:HookScript('OnShow', function() -+ self:Register() -+ end) -+ self.frame:HookScript('OnHide', function() -+ self:UnRegister() -+ end) -+ ADDON.eventManager:AddEvent(self, "BANKFRAME_OPENED") -+ ADDON.eventManager:AddEvent(self, "BANKFRAME_CLOSED") -+ BankFrame:UnregisterAllEvents() -+end -+ -+function bank:BANKFRAME_OPENED() -+ self.frame:Update() -+ self.frame:UpdateAllItems() -+ self.frame:Show() -+end -+ -+function bank:BANKFRAME_CLOSED() -+ self.frame:Hide() -+end -+ -+function bank:Register() -+-- ADDON.eventManager:AddEvent(self, 'ITEM_LOCK_CHANGED') -+ ADDON.eventManager:AddEvent(self, "PLAYERBANKSLOTS_CHANGED") -+ ADDON.eventManager:AddEvent(self, 'BAG_UPDATE') -+-- ADDON.eventManager:AddEvent(self, "PLAYERREAGENTBANKSLOTS_CHANGED") -+-- ADDON.eventManager:AddEvent(self, "PLAYERBANKBAGSLOTS_CHANGED") -+-- ADDON.eventManager:AddEvent(self, 'PLAYER_MONEY') -+-- ADDON.eventManager:AddEvent(self, 'BAG_UPDATE_COOLDOWN') -+-- ADDON.eventManager:AddEvent(self, 'INVENTORY_SEARCH_UPDATE') -+end -+ -+function bank:UnRegister() -+-- ADDON.eventManager:RemoveEvent(self, 'ITEM_LOCK_CHANGED') -+ ADDON.eventManager:RemoveEvent(self, "PLAYERBANKSLOTS_CHANGED") -+-- ADDON.eventManager:RemoveEvent(self, "PLAYERREAGENTBANKSLOTS_CHANGED") -+-- ADDON.eventManager:RemoveEvent(self, "PLAYERBANKBAGSLOTS_CHANGED") -+-- ADDON.eventManager:RemoveEvent(self, 'PLAYER_MONEY') -+ ADDON.eventManager:RemoveEvent(self, 'BAG_UPDATE') -+-- ADDON.eventManager:RemoveEvent(self, 'BAG_UPDATE_COOLDOWN') -+-- ADDON.eventManager:RemoveEvent(self, 'INVENTORY_SEARCH_UPDATE') -+end -+ -+function bank:ITEM_LOCK_CHANGED(bag, slot) -+ if bag == BANK_CONTAINER and slot > NUM_BANKGENERIC_SLOTS then -+ self.frame:UpdateBagLock(slot-NUM_BANKGENERIC_SLOTS) -+ else -+ ADDON.cache:GetItem(bag, slot):UpdateLock() -+ end -+end -+ -+function bank:PLAYERBANKSLOTS_CHANGED() -+ self.frame:UpdateBag(BANK_CONTAINER) -+end -+ -+function bank:BAG_UPDATE(bag) -+ self.frame:UpdateBag(bag) -+end -+ -+function bank:PLAYERREAGENTBANKSLOTS_CHANGED() -+ self.frame:UpdateReagents() -+end -+ -+function bank:BAG_UPDATE_COOLDOWN() -+ self.frame:UpdateCooldown() -+end -\ No newline at end of file -Index: src/lua/elements/item.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/elements/item.lua (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/lua/elements/item.lua (revision ) -@@ -7,7 +7,9 @@ - setmetatable(item, { - __call = function(tbl, bag, slot) - local parent = CreateFrame('FRAME', string.format('DJBagsItemParent%d_%d', bag, slot)) -- parent.button = CreateFrame('BUTTON', string.format('DJBagsItem%d_%d', bag, slot), parent, 'ContainerFrameItemButtonTemplate') -+ local inherit = bag == BANK_CONTAINER and 'BankItemButtonGenericTemplate' or -+ bag == REAGENTBANK_CONTAINER and 'ReagentBankItemButtonGenericTemplate' or 'ContainerFrameItemButtonTemplate' -+ parent.button = CreateFrame('BUTTON', string.format('DJBagsItem%d_%d', bag, slot), parent, inherit) - - parent:SetID(bag) - parent.button:SetID(slot) -@@ -34,15 +36,21 @@ - self.button:GetNormalTexture():ClearAllPoints() - self.button:GetNormalTexture():SetAllPoints() - -+ if self.button.NewItemTexture then -- self.button.NewItemTexture:ClearAllPoints() -- self.button.NewItemTexture:SetAllPoints() -+ self.button.NewItemTexture:ClearAllPoints() -+ self.button.NewItemTexture:SetAllPoints() -+ end - -+ if self.button.flash then -- self.button.flash:ClearAllPoints() -- self.button.flash:SetAllPoints() -+ self.button.flash:ClearAllPoints() -+ self.button.flash:SetAllPoints() -+ end - - self.button.quest = _G[self.button:GetName() .. "IconQuestTexture"] -+ if self.button.quest then -- self.button.quest:ClearAllPoints() -- self.button.quest:SetAllPoints() -+ self.button.quest:ClearAllPoints() -+ self.button.quest:SetAllPoints() -+ end - - self.button.cooldown = _G[self.button:GetName() .. "Cooldown"] - -@@ -116,7 +124,7 @@ - end - - local function UpdateCountcolour(self, equipable, quality) -- if equipable and quality then -+ if equipable and quality and quality >= LE_ITEM_QUALITY_COMMON then - self.button.Count:SetVertexColor(BAG_ITEM_QUALITY_COLORS[quality].r, BAG_ITEM_QUALITY_COLORS[quality].g, BAG_ITEM_QUALITY_COLORS[quality].b) - else - self.button.Count:SetVertexColor(1, 1, 1) -@@ -140,30 +148,46 @@ - - function item:Update() - local texture, count, locked, quality, _, _, _, filtered, _, id = GetContainerItemInfo(self:GetID(), self.button:GetID()) -+ local equipable = IsEquippableItem(id) -+ self.id = id -+ self.name = id and select(1, GetItemInfo(id)) or '' -+ self.quality = quality or 0 -+ self.ilevel = id and select(4, GetItemInfo(id)) or 0 -+ -+ -+ if self:GetID() == BANK_CONTAINER or self:GetID() == REAGENTBANK_CONTAINER then -+ BankFrameItemButton_Update(self.button) -+ if (equipable) then -+ count = count > 1 and count or select(4, GetItemInfo(id)) -+ SetItemButtonCount(self.button, count) -+ UpdateCountcolour(self, equipable, quality) -+ end -+ else -- local isQuestItem, questId, isActive = GetContainerItemQuestInfo(self:GetID(), self.button:GetID()) -- local isNewItem = C_NewItems.IsNewItem(self:GetID(), self.button:GetID()) -- local isBattlePayItem = IsBattlePayItem(self:GetID(), self.button:GetID()) -- local shouldDoRelicChecks = not BagHelpBox:IsShown() and not GetCVarBitfield("closedInfoFrames", LE_FRAME_TUTORIAL_ARTIFACT_RELIC_MATCH) -+ local isQuestItem, questId, isActive = GetContainerItemQuestInfo(self:GetID(), self.button:GetID()) -+ local isNewItem = C_NewItems.IsNewItem(self:GetID(), self.button:GetID()) -+ local isBattlePayItem = IsBattlePayItem(self:GetID(), self.button:GetID()) -+ local shouldDoRelicChecks = not BagHelpBox:IsShown() and not GetCVarBitfield("closedInfoFrames", LE_FRAME_TUTORIAL_ARTIFACT_RELIC_MATCH) -- local equipable = IsEquippableItem(id) - -+ -- if (equipable) then -- count = count > 1 and count or select(4, GetItemInfo(id)) -- end -+ if (equipable) then -+ count = count > 1 and count or select(4, GetItemInfo(id)) -+ end - -- self.id = id -- self.name = id and select(1, GetItemInfo(id)) or '' -- self.quality = quality or 0 -- self.ilevel = id and select(4, GetItemInfo(id)) or 0 -+ self.id = id -+ self.name = id and select(1, GetItemInfo(id)) or '' -+ self.quality = quality or 0 -+ self.ilevel = id and select(4, GetItemInfo(id)) or 0 - -- SetItemButtonTexture(self.button, texture) -- SetItemButtonQuality(self.button, quality, id) -- SetItemButtonCount(self.button, count) -- SetItemButtonDesaturated(self.button, locked) -- UpdateQuest(self, isQuestItem, questId, isActive) -- UpdateNewItemAnimations(self, isNewItem, isBattlePayItem, quality) -- UpdateFiltered(self, filtered, shouldDoRelicChecks, id) -- UpdateCountcolour(self, equipable, quality) -- UpdateCooldown(self) -+ SetItemButtonTexture(self.button, texture) -+ SetItemButtonQuality(self.button, quality, id) -+ SetItemButtonCount(self.button, count) -+ SetItemButtonDesaturated(self.button, locked) -+ UpdateQuest(self, isQuestItem, questId, isActive) -+ UpdateNewItemAnimations(self, isNewItem, isBattlePayItem, quality) -+ UpdateFiltered(self, filtered, shouldDoRelicChecks, id) -+ UpdateCountcolour(self, equipable, quality) -+ UpdateCooldown(self) -+ end - end - - function item:UpdateCooldown() -\ No newline at end of file -Index: src/lua/utils/utils.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/utils/utils.lua (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/lua/utils/utils.lua (revision ) -@@ -36,7 +36,7 @@ - local isInSet, setName = GetContainerItemEquipmentSetInfo(bag, slot) - - if quality == LE_ITEM_QUALITY_POOR then -- return subClassName -+ return BAG_FILTER_JUNK - end - - if isInSet then -@@ -56,4 +56,41 @@ - return className - end - return self.EMPTY_BAG_NAME -+end -+ -+ -+function utils:UpdateItemsForBag(parent, bag, arrangeList, containerFunc) -+ local count = GetContainerNumSlots(bag) -+ if count == 0 and ADDON.cache.items[bag] then -+ for _, item in pairs(ADDON.cache.items[bag]) do -+ if item:GetParent() and item:GetParent().__class == ADDON.itemContainer.__class then -+ local previousContainer = item:GetParent() -+ previousContainer:RemoveItem(item) -+ arrangeList[previousContainer] = true -+ item:Hide() -+ end -+ end -+ else -+ for slot = 1, count do -+ local item = ADDON.cache:GetItem(bag, slot) -+ local previousContainer -+ if item:GetParent() and item:GetParent().__class == ADDON.itemContainer.__class then -+ previousContainer = item:GetParent() -+ end -+ -+ item:Update() -+ -+ local newContainer = containerFunc(ADDON.cache, ADDON.utils:GetItemContainerName(bag, slot)) -+ arrangeList[newContainer] = true -+ parent.frame:AddContainer(newContainer) -+ -+ if previousContainer ~= newContainer then -+ if previousContainer then -+ previousContainer:RemoveItem(item) -+ arrangeList[previousContainer] = true -+ end -+ newContainer:AddItem(item) -+ end -+ end -+ end - end -\ No newline at end of file -Index: src/lua/event/eventManager.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/event/eventManager.lua (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/lua/event/eventManager.lua (revision ) -@@ -25,16 +25,21 @@ - self:RegisterEvent(event) - end - -+ print(obj, event) - self.types[event][obj] = true - end - - function eventFrame:RemoveEvent(obj, event) -+ if obj and event then -- if not self.types[event] and not self.types[event][obj] then return end -+ if not self.types[event] and not self.types[event][obj] then return end - -- self.types[event][obj] = nil -+ self.types[event][obj] = nil - -- if next(self.types[event]) == nil then -- self:UnregisterEvent(event) -+ if next(self.types[event]) == nil then -+ self:UnregisterEvent(event) -+ end -+ -+ print(obj, event) - end - end - -\ No newline at end of file -Index: src/lua/elements/bagItem.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/elements/bagItem.lua (revision ) -+++ src/lua/elements/bagItem.lua (revision ) -@@ -0,0 +1,98 @@ -+local NAME, ADDON = ... -+ -+ADDON.bagItem = {} -+ADDON.bagItem.__index = ADDON.bagItem -+ -+local item = ADDON.bagItem -+setmetatable(item, { -+ __call = function(tbl, name, slot, id) -+ local frame = CreateFrame('BUTTON', name, nil, 'ItemButtonTemplate') -+ frame:SetID(id) -+ frame.slot = slot -+ -+ for k, v in pairs(tbl) do -+ frame[k] = v -+ end -+ -+ frame:Init() -+ frame:Setup() -+ -+ return frame -+ end -+}) -+ -+function item:Init() -+ self:SetScript('OnDragStart', self.DragItem) -+ self:SetScript('OnReceiveDrag', self.PlaceOrPickup) -+ self:SetScript('OnClick', self.PlaceOrPickup) -+ self:SetScript('OnEnter', self.OnEnter) -+ self:SetScript('OnLeave', self.OnLeave) -+ -+ self.IconBorder:ClearAllPoints() -+ self.IconBorder:SetAllPoints() -+ -+ self:SetNormalTexture([[Interface\Common\WhiteIconFrame]]) -+ self:GetNormalTexture():ClearAllPoints() -+ self:GetNormalTexture():SetAllPoints() -+end -+ -+function item:Setup() -+ local settings = ADDON.settings.bagItem or {size = 26} -+ -+ self:SetSize(settings.size, settings.size) -+end -+ -+function item:Update() -+ PaperDollItemSlotButton_Update(self) -+end -+ -+function item:UpdateLock() -+ PaperDollItemSlotButton_UpdateLock(self) -+end -+ -+function item:PlaceOrPickup() -+ local placed = PutItemInBag(self:GetID()) -+ if not placed then -+ PickupBagFromSlot(self:GetID()) -+ end -+end -+ -+function item:DragItem() -+ PickupBagFromSlot(self:GetID()) -+end -+ -+function item:OnEnter() -+ if self:GetRight() >= (GetScreenWidth() / 2) then -+ GameTooltip:SetOwner(self, 'ANCHOR_LEFT') -+ else -+ GameTooltip:SetOwner(self, 'ANCHOR_RIGHT') -+ end -+ -+ local hasItem, hasCooldown, repairCost, speciesID, level, breedQuality, maxHealth, power, speed, name = GameTooltip:SetInventoryItem("player", self:GetID()); -+ if(speciesID and speciesID > 0) then -+ BattlePetToolTip_Show(speciesID, level, breedQuality, maxHealth, power, speed, name); -+ CursorUpdate(self); -+ return; -+ end -+ -+ if (not IsInventoryItemProfessionBag("player", self:GetID())) then -+ for i = LE_BAG_FILTER_FLAG_EQUIPMENT, NUM_LE_BAG_FILTER_FLAGS do -+ if ( GetBankBagSlotFlag(self:GetID(), i) ) then -+ GameTooltip:AddLine(BAG_FILTER_ASSIGNED_TO:format(BAG_FILTER_LABELS[i])); -+ break; -+ end -+ end -+ end -+ -+ if ( not hasItem ) then -+ GameTooltip:SetText(self.tooltipText); -+ end -+ -+ GameTooltip:Show(); -+ CursorUpdate(self); -+end -+ -+function item:OnLeave() -+ GameTooltip_Hide(); -+ ResetCursor(); -+end -\ No newline at end of file -Index: src/lua/settings/defaults/bagItem.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/settings/defaults/bagItem.lua (revision ) -+++ src/lua/settings/defaults/bagItem.lua (revision ) -@@ -0,0 +1,7 @@ -+local NAME, ADDON = ... -+ -+ADDON.settings = ADDON.settings or {} -+ -+ADDON.settings.bagItem = { -+ size = 32, -+} -\ No newline at end of file -Index: src/lua/elements/bankBar.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/elements/bankBar.lua (revision ) -+++ src/lua/elements/bankBar.lua (revision ) -@@ -0,0 +1,249 @@ -+local NAME, ADDON = ... -+ -+ADDON.bankBar = {} -+ADDON.bankBar.__index = ADDON.bankBar -+ -+local bar = ADDON.bankBar -+setmetatable(bar, { -+ __call = function(tbl, parent) -+ local frame = ADDON.container('DJBagsBankBar', parent) -+ -+ for k, v in pairs(tbl) do -+ frame[k] = v -+ end -+ -+ frame:Init() -+ frame:Setup() -+ -+ return frame -+ end -+}) -+ -+function bar:Init() -+ table.insert(UISpecialFrames, self:GetName()) -+ self:SetMovable(true) -+ self:EnableMouse(true) -+ self:RegisterForDrag("LeftButton") -+ self:SetScript("OnDragStart", self.StartMoving) -+ self:SetScript("OnDragStop", self.StopMovingOrSizing) -+ self:SetScript('OnHide', self.OnHide) -+ -+ self.bags = CreateFrame('FRAME', 'DJBagsBankBarBagsContainer', self) -+ self.bags.items = {} -+ self.bags:SetPoint('TOPLEFT', 5, -5) -+ self.bags:SetPoint('BOTTOMLEFT', 5, 5) -+ -+ self.emptyBag = CreateFrame('Frame', 'DJBagsBankBarEmptySlotPurchaseContainer', self) -+ -+ self.emptyBag:SetParent(self) -+ self.emptyBag:SetPoint('TOPRIGHT', -5, -5) -+ self.emptyBag.prefix = self.emptyBag:CreateFontString('DJBagsBankBarCostPrefix', nil, 'GameFontNormalMed3') -+ self.emptyBag.prefix:SetPoint('TOPLEFT') -+ self.emptyBag.prefix:SetText(COSTS_LABEL) -+ self.emptyBag.money = CreateFrame('FRAME', 'DJBagsBankBarCostSlot', self.emptyBag, 'SmallMoneyFrameTemplate') -+ self.emptyBag.money:SetPoint('LEFT', self.emptyBag.prefix, 'RIGHT', 5, 0) -+ self.emptyBag.purchaseBtn = CreateFrame('BUTTON', 'DJBagsBankBarPurchaseButton', self.emptyBag, 'UIPanelButtonTemplate') -+ self.emptyBag.purchaseBtn:SetPoint('TOP', self.emptyBag.money, 'BOTTOM', 0, -5) -+ self.emptyBag.purchaseBtn:SetText(BANKSLOTPURCHASE) -+ self.emptyBag.purchaseBtn:SetSize(124, 21) -+ self.emptyBag.purchaseBtn:SetScript('OnClick', function() -+ PlaySound("igMainMenuOption"); -+ StaticPopup_Show("CONFIRM_BUY_BANK_SLOT"); -+ end) -+ SmallMoneyFrame_OnLoad(self.emptyBag.money) -+ MoneyFrame_SetType(self.emptyBag.money, "STATIC"); -+ -+ self.bagBtn = CreateFrame('BUTTON', self:GetName()..'Tab1', self, 'TabButtonTemplate') -+ self.bagBtn.tab = 1 -+ self.bagBtn:SetPoint('BOTTOMLEFT', self, 'TOPLEFT') -+ self.bagBtn:SetText(BANK) -+ self.bagBtn:SetScript('OnClick', self.TabClick) -+ PanelTemplates_TabResize(self.bagBtn, 0) -+ _G[self.bagBtn:GetName().."HighlightTexture"]:SetWidth(self.bagBtn:GetTextWidth() + 31) -+ -+ self.reagentBtn = CreateFrame('BUTTON', self:GetName()..'Tab2', self, 'TabButtonTemplate') -+ self.reagentBtn.tab = 2 -+ self.reagentBtn:SetPoint('BOTTOMLEFT', self.bagBtn, 'BOTTOMRIGHT', 0, 0) -+ self.reagentBtn:SetText(REAGENT_BANK) -+ self.reagentBtn:SetScript('OnClick', self.TabClick) -+ PanelTemplates_TabResize(self.reagentBtn, 0) -+ _G[self.reagentBtn:GetName().."HighlightTexture"]:SetWidth(self.reagentBtn:GetTextWidth() + 31) -+ PanelTemplates_SetNumTabs(self, 2) -+ -+ self.bankContainer = {} -+ self.bankContainer.frame = ADDON.categoryContainer('DJBagsBankContainer', self) -+ self.bankContainer.frame:SetPoint('TOPLEFT', self, 'BOTTOMLEFT', 0, -3) -+ self.bankContainer.frame:Hide() -+ -+ self.reagentContainer = {} -+ self.reagentContainer.frame = ADDON.categoryContainer('DJBagsReagentContainer', self) -+ self.reagentContainer.frame:SetPoint('TOPLEFT', self, 'BOTTOMLEFT', 0, -3) -+ self.reagentContainer.frame:Hide() -+ -+ self.reagentDeposit = CreateFrame('BUTTON', 'DJBagsBankBarReagentDepositButton', self, 'UIPanelButtonTemplate') -+ self.reagentDeposit:SetPoint('BOTTOMRIGHT', -5, 5) -+ self.reagentDeposit.width = 256 -+ self.reagentDeposit:SetHeight(24) -+ self.reagentDeposit:SetText(REAGENTBANK_DEPOSIT) -+ self.reagentDeposit:SetScript('OnClick', function() -+ PlaySound("igMainMenuOption"); -+ DepositReagentBank(); -+ end) -+ -+ self.searchBar = CreateFrame('EDITBOX', 'DJBagsBankBarSearch', self, 'BagSearchBoxTemplate') -+ self.searchBar:SetPoint('BOTTOMLEFT', 10, 5) -+ self.searchBar:SetPoint('RIGHT', self.reagentDeposit, 'LEFT', -5, 0) -+ -+ self:SetScript('OnShow', self.OnShow) -+ -+ self:Arrange() -+end -+ -+function bar:TabClick(...) -+ PlaySound("igMainMenuOpen") -+ PanelTemplates_SetTab(self:GetParent(), self.tab) -+ if self.tab == 1 then -+ self:GetParent().bankContainer.frame:Show() -+ self:GetParent().reagentContainer.frame:Hide() -+ else -+ self:GetParent().bankContainer.frame:Hide() -+ self:GetParent().reagentContainer.frame:Show() -+ end -+end -+ -+function bar:OnShow() -+ PlaySound("igMainMenuOpen") -+ ADDON.bag:Open() -+ PanelTemplates_SetTab(self, 1) -+ self.bankContainer.frame:Show() -+ self.reagentContainer.frame:Hide() -+end -+ -+function bar:OnHide() -+ PlaySound("igMainMenuClose") -+ CloseAllBags(self); -+ CloseBankBagFrames(); -+ CloseBankFrame(); -+ StaticPopup_Hide("CONFIRM_BUY_BANK_SLOT") -+end -+ -+function bar:Arrange() -+ local x = 0 -+ local y -+ for _, item in pairs(self.bags.items) do -+ item:SetPoint('TOPLEFT', x, 0) -+ x = x + 5 + item:GetWidth() -+ y = y or item:GetHeight() -+ end -+ if y then -+ if self.emptyBag:IsVisible() then -+ self.emptyBag:SetSize( -+ math.max( -+ self.emptyBag.prefix:GetStringWidth() + self.emptyBag.money:GetWidth(), -+ self.emptyBag.purchaseBtn:GetWidth() -+ ), -+ self.emptyBag.prefix:GetStringHeight() + self.emptyBag.purchaseBtn:GetHeight() -+ ) -+ y = math.max(y, self.emptyBag:GetHeight()) -+ x = x + 10 + self.emptyBag:GetWidth() -+ end -+ if IsReagentBankUnlocked() then -+ self.reagentDeposit:SetWidth(self.reagentDeposit.width) -+ x = math.max(x, 126 + self.reagentDeposit.width) -+ else -+ self.reagentDeposit:SetWidth(0) -+ end -+ -+ self.bags:SetWidth(x-5) -+ self:SetSize(x + 5, 10 + y + 30) -+ end -+end -+ -+function bar:Update() -+ self:CheckForMissingBankBags() -+ for _, item in pairs(self.bags.items) do -+ item:Update() -+ end -+end -+ -+function bar:CheckForMissingBankBags() -+ local nBags, full = GetNumBankSlots() -+ -+ if not full then -+ self.emptyBag:Show() -+ local cost = GetBankSlotCost(nBags) -+ if( GetMoney() >= cost ) then -+ SetMoneyFrameColor("BankFrameDetailMoneyFrame", "white"); -+ else -+ SetMoneyFrameColor("BankFrameDetailMoneyFrame", "red") -+ end -+ MoneyFrame_Update(self.emptyBag.money, cost); -+ else -+ self.emptyBag:Hide() -+ end -+ -+ if nBags > #self.bags.items then -+ for bag = #self.bags.items+1, nBags do -+ local item = ADDON.bagItem('DJBagsBankBagItem' .. bag, bag, BankButtonIDToInvSlotID(bag, 1)) -+ item:SetParent(self.bags) -+ tinsert(self.bags.items, item) -+ end -+ self:Arrange() -+ end -+end -+ -+function bar:UpdateAllItems() -+ local arrangeList = {} -+ ADDON.utils:UpdateItemsForBag(self.bankContainer, BANK_CONTAINER, arrangeList, ADDON.cache.GetBankItemContainer) -+ for bag = 5, 5+GetNumBankSlots() do -+ ADDON.utils:UpdateItemsForBag(self.bankContainer, bag, arrangeList, ADDON.cache.GetBankItemContainer) -+ end -+ for container, _ in pairs(arrangeList) do -+ container:Arrange() -+ end -+ self.bankContainer.frame:Arrange() -+ -+ self:UpdateReagents() -+end -+ -+function bar:UpdateBag(bag) -+ self:UpdateAllItemsForBag(bag) -+end -+ -+function bar:UpdateAllItemsForBag(bag) -+ local arrangeList = {} -+ ADDON.utils:UpdateItemsForBag(self.bankContainer, bag, arrangeList, ADDON.cache.GetBankItemContainer) -+ for container, _ in pairs(arrangeList) do -+ container:Arrange() -+ end -+ self.bankContainer.frame:Arrange() -+end -+ -+function bar:UpdateReagents() -+ if IsReagentBankUnlocked() then -+ local arrangeList = {} -+ ADDON.utils:UpdateItemsForBag(self.reagentContainer, REAGENTBANK_CONTAINER, arrangeList, ADDON.cache.GetReagentItemContainer) -+ for container, _ in pairs(arrangeList) do -+ container:Arrange() -+ end -+ self.reagentContainer.frame:Arrange() -+ else -+ -- TODO show purchase button and set size -+ end -+end -+ -+function bar:UpdateBagLock(bag) -+ self.bags.items[bag]:UpdateLock() -+end -+ -+function bar:Setup() -+ ADDON.container.Setup(self) -+end -+ -+function bar:UpdateCooldown() -+ for bag = 5, 5+GetNumBankSlots() do -+ for slot = 1, GetContainerNumSlots(bag) do -+ ADDON.cache.GetItem(bag, slot):UpdateCooldown() -+ end -+ end -+end -\ No newline at end of file -Index: src/manifest.xml -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/manifest.xml (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/manifest.xml (revision ) -@@ -32,9 +32,13 @@ - <Script file="src/lua/elements/categoryContainer.lua"/> - <Script file="src/lua/elements/mainBar.lua"/> - <Script file="src/lua/elements/categoryDialog.lua"/> -+ <Script file="src/lua/elements/bagItem.lua"/> -+ <Script file="src/lua/elements/bagBar.lua"/> -+ <Script file="src/lua/elements/bankBar.lua"/> - - <!-- Controller --> - <Script file="src/lua/controllers/bag.lua"/> -+ <Script file="src/lua/controllers/bank.lua"/> - - <!-- Core (Load last) --> - <Script file="src/lua/core.lua"/> -\ No newline at end of file -Index: src/lua/elements/categoryContainer.lua -IDEA additional info: -Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP -<+>UTF-8 -=================================================================== ---- src/lua/elements/categoryContainer.lua (revision 3879ca3845eea8b6154429c795364f7d79160483) -+++ src/lua/elements/categoryContainer.lua (revision ) -@@ -4,11 +4,9 @@ - ADDON.categoryContainer.__index = ADDON.categoryContainer - - local container = ADDON.categoryContainer --container.containers = {} - setmetatable(container, { - __call = function(tbl, name, parent) - local frame = ADDON.container(name, parent) -- - for k, v in pairs(tbl) do - frame[k] = v - end -@@ -25,8 +23,21 @@ - self:SetMovable(true) - self:EnableMouse(true) - self:RegisterForDrag("LeftButton") -- self:SetScript("OnDragStart", self.StartMoving) -- self:SetScript("OnDragStop", self.StopMovingOrSizing) -+ self:SetScript("OnDragStart", function(self, ...) -+ if self:GetParent() ~= UIParent then -+ self:GetParent():StartMoving(...) -+ else -+ self:StartMoving(...) -+ end -+ end) -+ self:SetScript("OnDragStop", function(self, ...) -+ if self:GetParent() ~= UIParent then -+ self:GetParent():StopMovingOrSizing(...) -+ else -+ self:StopMovingOrSizing(...) -+ end -+ end) -+ self.containers = {} - end - - function container:Setup() -\ No newline at end of file