From 0018bc02fa511131eae42d52b130543de843e33b Mon Sep 17 00:00:00 2001 From: pschifferer Date: Fri, 13 Mar 2009 04:45:30 +0000 Subject: [PATCH] Added a placeholder function for bag-scanning. Changed the callback type of "/cauldron shoppinglist" so it actually works >.<. Added some checks for shopping list and bag updates. --- CauldronMain.lua | 15 ++++++++++++--- CauldronShoppingList.lua | 13 ++++++++++++- CauldronUtil.lua | 5 +++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/CauldronMain.lua b/CauldronMain.lua index 7183df0..294707d 100644 --- a/CauldronMain.lua +++ b/CauldronMain.lua @@ -54,7 +54,8 @@ function Cauldron:OnInitialize() shoppinglist = { name = L["Shopping list"], desc = L["Open shopping list window"], - type = 'toggle', + type = 'execute', + func = function() Cauldron:ShowShoppingList() end, }, version = { name = L["Version"], @@ -133,6 +134,9 @@ function Cauldron:OnEnable() --@end-alpha@ self:InitPlayer(); + + -- scan bags + self:ScanBags(); self:RegisterEvent("TRADE_SKILL_SHOW", "OnTradeShow"); self:RegisterEvent("TRADE_SKILL_UPDATE", "OnSkillUpdate"); @@ -312,9 +316,14 @@ function Cauldron:OnBagUpdate(event, bagid) self:debug("OnBagUpdate enter"); --@end-alpha@ --- if (not CauldronFrame) or (not CauldronFrame:IsShown()) then +-- if (not CauldronFrame) and (not CauldronFrame:IsShown()) then -- return; -- end + + -- make sure we're not reacting to initial bag update events when the DB isn't initialized yet + if (not Cauldron.db) or (not Cauldron.vars) then + return; + end -- check if the item acquired is in the intermediate list or shopping list local items = Cauldron:GetItemDeltas(bagid); @@ -328,7 +337,7 @@ function Cauldron:OnBagUpdate(event, bagid) --@alpha@ self:debug("OnBagUpdate: adjust shopping list"); --@end-alpha@ - CauldronShopping:RemoveFromList(self.db.realm.shopping, self.vars.playername, item, itemCount); +-- CauldronShopping:RemoveFromList(self.db.realm.shopping, self.vars.playername, item, itemCount); -- adjust intermediate list --@alpha@ diff --git a/CauldronShoppingList.lua b/CauldronShoppingList.lua index 89882d1..17f69c9 100644 --- a/CauldronShoppingList.lua +++ b/CauldronShoppingList.lua @@ -57,7 +57,7 @@ function CauldronShopping:RemoveFromList(list, requestor, itemName, quantity) -- initialize the list for the requestor list[requestor] = {}; end - + if list[requestor][itemName] then if quantity then list[requestor][itemName] = list[requestor][itemName] - quantity; @@ -123,6 +123,17 @@ function CauldronShopping:HasItems(list, requestor) end function CauldronShopping:GetRequestedItems(list, requestor) + + if not list then + Cauldron:warn("CauldronShopping:HasItems: missing list!"); + return false; + end + + if list[requestor] then + return list[requestor]; + end + + return {}; end function CauldronShopping:EmptyShoppingList(list, requestor) diff --git a/CauldronUtil.lua b/CauldronUtil.lua index 9c64304..4b55597 100644 --- a/CauldronUtil.lua +++ b/CauldronUtil.lua @@ -129,6 +129,10 @@ function Cauldron:GetNameFromLink(link) return name end +function Cauldron:ScanBags() + -- TODO +end + function Cauldron:GetItemDeltas(bagid) -- sanity checks @@ -149,6 +153,7 @@ function Cauldron:GetItemDeltas(bagid) if link then local name = select(1, {GetItemInfo(link)}); local count = GetItemCount(link); + -- local count = select(2, {GetContainerItemInfo(bagid, i)}); local delta = count; if inv[name] then -- 1.7.9.5