comparison Core.lua @ 152:cbb427a8d5a5

Fixed a bug where your equipped items were not counted as items in your inventory. If you replaced an equipped item and one of them had a cost associated, it would transfer the value between the two.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Mon, 29 Nov 2010 11:25:55 -0800
parents 1db61fa6be07
children 7ebe0a85d539
comparison
equal deleted inserted replaced
151:e06bf0b64caa 152:cbb427a8d5a5
198 function ItemAuditor:BankFrameChanged(event) 198 function ItemAuditor:BankFrameChanged(event)
199 bankOpen = (event == 'BANKFRAME_OPENED') 199 bankOpen = (event == 'BANKFRAME_OPENED')
200 ItemAuditor:UpdateCurrentInventory() 200 ItemAuditor:UpdateCurrentInventory()
201 end 201 end
202 202
203 local function getTotalFromBagsAndInventory(searchID)
204 local character = DataStore:GetCharacter()
205 local bags, bank = DataStore:GetContainerItemCount(character, searchID)
206 local count = (bags or 0)
207 if bankOpen then
208 count = count + bank
209 end
210 count = count + (DataStore:GetInventoryItemCount(character, searchID) or 0)
211
212 return count
213 end
214
203 local function scanBag(bagID, i) 215 local function scanBag(bagID, i)
204 bagSize=GetContainerNumSlots(bagID) 216 local bag = DataStore:GetContainer(DataStore:GetCharacter(), bagID)
205 for slotID = 0, bagSize do 217 if bag then
206 local link= GetContainerItemLink(bagID, slotID); 218 for slotID = 0, bag.size do
207 itemID = link and Utils.GetItemID(link) 219 local itemID = DataStore:GetSlotInfo(bag, slotID);
208 220
209 if link and itemID and i[itemID] == nil then 221 if itemID and i[itemID] == nil then
210 i[itemID] = GetItemCount(itemID, bankOpen); 222 i[itemID] = getTotalFromBagsAndInventory(itemID);
211 end 223 end
212 end 224 end
213 end 225 end
214 226 end
227
228 local NUM_EQUIPMENT_SLOTS = 19
215 function ItemAuditor:GetCurrentInventory() 229 function ItemAuditor:GetCurrentInventory()
216 local i = {} 230 local i = {}
217 local bagID 231 local bagID
218 local slotID 232 local slotID
219 233
223 237
224 if bankOpen then 238 if bankOpen then
225 scanBag(BANK_CONTAINER, i) 239 scanBag(BANK_CONTAINER, i)
226 for bagID = NUM_BAG_SLOTS+1, NUM_BANKBAGSLOTS do 240 for bagID = NUM_BAG_SLOTS+1, NUM_BANKBAGSLOTS do
227 scanBag(bagID, i) 241 scanBag(bagID, i)
242 end
243 end
244
245 local character = DataStore:GetCharacter()
246 for slotID = 1, NUM_EQUIPMENT_SLOTS do
247 local link = DataStore:GetInventoryItem(character, slotID)
248 itemID = link and Utils.GetItemID(link)
249
250 if link and itemID and i[itemID] == nil then
251 i[itemID] = getTotalFromBagsAndInventory(itemID);
228 end 252 end
229 end 253 end
230 254
231 return {items = i, money = GetMoney()} 255 return {items = i, money = GetMoney()}
232 end 256 end
561 585
562 586
563 function ItemAuditor:WatchBags() 587 function ItemAuditor:WatchBags()
564 if self.watch_handle == nil then 588 if self.watch_handle == nil then
565 ItemAuditor:UpdateCurrentInventory() 589 ItemAuditor:UpdateCurrentInventory()
566 self.watch_handle = self:RegisterBucketEvent({"BAG_UPDATE", "PLAYER_MONEY"}, 0.3, "UpdateAudit") 590 self.watch_handle = self:RegisterBucketEvent({"BAG_UPDATE", "PLAYER_MONEY", "UNIT_INVENTORY_CHANGED"}, 0.3, "UpdateAudit")
567 end 591 end
568 end 592 end
569 593
570 function ItemAuditor:UnwatchBags() 594 function ItemAuditor:UnwatchBags()
571 if self.watch_handle ~= nil then 595 if self.watch_handle ~= nil then