You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.6 KiB

local _, addon = ...
local Gemma = addon.Gemma;
local GetContainerNumSlots = C_Container.GetContainerNumSlots;
local GetContainerItemLink = C_Container.GetContainerItemLink;
local BagSearch = {};
Gemma.BagSearch = BagSearch;
function BagSearch:SetProcessor(processItem)
self.ProcessItem = processItem;
end
function BagSearch:AddOnStartCallback(callback)
if not self.onStartCallbacks then
self.onStartCallbacks = {};
end
table.insert(self.onStartCallbacks, callback);
end
function BagSearch:AddOnStopCallback(callback)
if not self.onStopCallbacks then
self.onStopCallbacks = {};
end
table.insert(self.onStopCallbacks, callback);
end
function BagSearch:OnStart()
if self.onStartCallbacks then
for i, callback in ipairs(self.onStartCallbacks) do
callback();
end
end
end
function BagSearch:OnStop()
if self.onStopCallbacks then
for i, callback in ipairs(self.onStopCallbacks) do
callback();
end
end
end
function BagSearch:OnBagChanged(bag)
self.needsUpdate = true;
self.bagDirty[bag] = true;
end
function BagSearch:ProcessItem(itemLink)
end
function BagSearch:ProcessBag(bag)
local itemLink;
for slot = 1, GetContainerNumSlots(bag) do
itemLink = GetContainerItemLink(bag, slot);
if itemLink then
self:ProcessItem(itemLink);
end
end
end
function BagSearch:FullUpdate()
self:OnStart();
self.result = {};
for bag = 0, 4 do
self:ProcessBag(bag);
end
self:OnStop();
end