Skip to content
This repository was archived by the owner on Sep 11, 2023. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 32 additions & 38 deletions api/events.lua
Original file line number Diff line number Diff line change
Expand Up @@ -23,94 +23,88 @@ function Events:OnEnable()

if REAGENTBANK_CONTAINER then
self:RegisterEvent('PLAYERREAGENTBANKSLOTS_CHANGED')
self:RegisterEvent('REAGENTBANK_PURCHASED')
self:RegisterEvent('REAGENTBANK_PURCHASED', 'PLAYERREAGENTBANKSLOTS_CHANGED')
end

self:RegisterEvent('BAG_UPDATE')
self:RegisterEvent('BAG_UPDATE_DELAYED', 'UpdateBags')
self:RegisterEvent('BAG_CLOSED', 'BAG_UPDATE')
self:RegisterEvent('BAG_UPDATE_DELAYED')
self:RegisterEvent('PLAYERBANKSLOTS_CHANGED')
self:RegisterMessage('CACHE_BANK_OPENED')
self:UpdateSize(BACKPACK_CONTAINER)
self:RegisterEvent('BANKFRAME_OPENED')
self:UpdateBags()
end

function Events:BAG_UPDATE(event, bag)
self.queue[bag] = true
end

function Events:BAG_UPDATE_DELAYED()
for bag in pairs(self.queue) do
self:UpdateBag(bag)
end

self.queue = {}
end

function Events:PLAYERBANKSLOTS_CHANGED()
self:UpdateBankBags()
self:UpdateContent(BANK_CONTAINER)
end

function Events:PLAYERREAGENTBANKSLOTS_CHANGED()
self:UpdateContent(REAGENTBANK_CONTAINER)
end

function Events:REAGENTBANK_PURCHASED()
self:UpdateContent(REAGENTBANK_CONTAINER)
end

function Events:CACHE_BANK_OPENED()
function Events:BANKFRAME_OPENED()
if self.firstVisit then
self.firstVisit = nil
self:UpdateSize(BANK_CONTAINER)
self:UpdateBankBags()

if REAGENTBANK_CONTAINER then
self:UpdateSize(REAGENTBANK_CONTAINER)
end
end
end


--[[ API ]]--

function Events:UpdateBags()
for bag = 1, NUM_BAG_SLOTS do
if not self:UpdateSize(bag) then
self:UpdateType(bag)
end
end

for bag in pairs(self.queue) do
self:UpdateContent(bag)
for bag = BACKPACK_CONTAINER, NUM_BAG_SLOTS do
self:UpdateBag(bag)
end
end

function Events:UpdateBankBags()
for bag = 1, NUM_BAG_SLOTS + NUM_BANKBAGSLOTS do
if not self:UpdateSize(bag) then
self:UpdateType(bag)
end
self:UpdateContent(BANK_CONTAINER)

for bag = NUM_BAG_SLOTS + 1, NUM_BAG_SLOTS + NUM_BANKBAGSLOTS do
self:UpdateBag(bag)
end

if REAGENTBANK_CONTAINER then
self:UpdateContent(REAGENTBANK_CONTAINER)
end
end

function Events:UpdateBag(bag)
self:UpdateSize(bag)
self:UpdateType(bag)
self:UpdateContent(bag)
end

function Events:UpdateSize(bag)
local old = self.sizes[bag]
local new = GetContainerNumSlots(bag) or 0

if old ~= new then
local _, kind = GetContainerNumFreeSlots(bag)
self.types[bag] = kind
self.sizes[bag] = new
self.queue[bag] = nil
self:SendSignal('BAG_UPDATE_SIZE', bag)
return true
end

return false
end

function Events:UpdateType(bag)
local old = self.types[bag]
local _, new = GetContainerNumFreeSlots(bag)

if old ~= new then
self.types[bag] = new
self:UpdateContent(bag)
end
self.types[bag] = select(2, GetContainerNumFreeSlots(bag))
end

function Events:UpdateContent(bag)
self.queue[bag] = nil
self:SendSignal('BAG_UPDATE_CONTENT', bag)
end
14 changes: 12 additions & 2 deletions classes/bag.lua
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ end
--[[ Events ]]--

function Bag:RegisterEvents()
self.queue = {}

self:Update()

self:UnregisterAll()
Expand All @@ -146,9 +148,17 @@ function Bag:RegisterEvents()
end

function Bag:BAG_UPDATE(_, bag)
if bag == self:GetSlot() then
self:Update()
self.queue[bag] = true
end

function Bag:BAG_UPDATE_DELAYED ()
for bag in pairs(self.queue) do
if bag == self:GetSlot() then
self:Update()
end
end

self.queue = {}
end


Expand Down