Mercurial > wow > itemauditor
comparison Core.lua @ 8:0271e781b154
Working on converting the database to store items as links instead of names.
author | Asa Ayers <Asa.Ayers@Gmail.com> |
---|---|
date | Wed, 23 Jun 2010 23:47:48 -0700 |
parents | bbba2fae0f69 |
children | 374dd1a90d02 |
comparison
equal
deleted
inserted
replaced
7:bbba2fae0f69 | 8:0271e781b154 |
---|---|
17 local DB_defaults = { | 17 local DB_defaults = { |
18 char = { | 18 char = { |
19 debug = false | 19 debug = false |
20 }, | 20 }, |
21 factionrealm = { | 21 factionrealm = { |
22 item_account = {} | 22 item_account = {}, |
23 | |
24 items = {}, | |
23 }, | 25 }, |
24 } | 26 } |
25 self.db = LibStub("AceDB-3.0"):New("ItemAuditorDB", DB_defaults, true) | 27 self.db = LibStub("AceDB-3.0"):New("ItemAuditorDB", DB_defaults, true) |
28 addonTable.db= self.db | |
29 self.items = self.db.factionrealm.items | |
26 | 30 |
27 self:RegisterOptions() | 31 self:RegisterOptions() |
28 | 32 |
29 self:RegisterEvent("PLAYER_ENTERING_WORLD") | 33 self:RegisterEvent("PLAYER_ENTERING_WORLD") |
30 end | 34 end |
31 | 35 |
36 function addon:ConvertItems() | |
37 for itemName, value in pairs(self.db.factionrealm.item_account) do | |
38 local itemID = utils:GetItemID(itemName) | |
39 if itemID ~= nil then | |
40 self:GetItem('item:' .. itemID) | |
41 end | |
42 if value == 0 then | |
43 self.db.factionrealm.item_account[itemName] = nil | |
44 end | |
45 end | |
46 | |
47 for link, data in pairs(self.db.factionrealm.items) do | |
48 if self:GetItem(link).count == 0 or self:GetItem(link).invested == 0 then | |
49 self:RemoveItem(link) | |
50 end | |
51 end | |
52 end | |
53 | |
32 function addon:GetCurrentInventory() | 54 function addon:GetCurrentInventory() |
33 local i = {} | 55 local i = {} |
34 local link | 56 local bagID |
35 | 57 local slotID |
36 for bagID = 0, NUM_BAG_SLOTS do | 58 |
37 bagSize=GetContainerNumSlots(bagID) | 59 for bagID = 0, NUM_BAG_SLOTS do |
38 for slotID = 0, bagSize do | 60 bagSize=GetContainerNumSlots(bagID) |
39 itemID = GetContainerItemID(bagID, slotID); | 61 for slotID = 0, bagSize do |
40 | 62 local link= GetContainerItemLink(bagID, slotID); |
41 if itemID ~= nil then | 63 |
42 _, itemCount, _, _, _= GetContainerItemInfo(bagID, slotID); | 64 if link ~= nil and i[link] == nil then |
43 name = GetItemInfo(itemID) | 65 i[link] = GetItemCount(link); |
44 if i[name] == nil then | 66 end |
45 i[name] = 0 | 67 end |
46 end | 68 |
47 i[name] = i[name] + (itemCount or 0) | 69 end |
48 end | 70 return {items = i, money = GetMoney()} |
49 | |
50 end | |
51 | |
52 end | |
53 return {items = i, money = GetMoney()} | |
54 end | 71 end |
55 | 72 |
56 function addon:GetInventoryDiff(pastInventory, current) | 73 function addon:GetInventoryDiff(pastInventory, current) |
57 if current == nil then | 74 if current == nil then |
58 current = self:GetCurrentInventory() | 75 current = self:GetCurrentInventory() |
59 end | 76 end |
60 local diff = {} | 77 local diff = {} |
61 | 78 |
62 for name, count in pairs(current.items) do | 79 for link, count in pairs(current.items) do |
63 if pastInventory.items[name] == nil then | 80 if pastInventory.items[link] == nil then |
64 diff[name] = count | 81 diff[link] = count |
65 -- self:Debug("1 diff[" .. name .. "]=" .. diff[name]) | 82 -- self:Debug("1 diff[" .. name .. "]=" .. diff[name]) |
66 elseif count - pastInventory.items[name] ~= 0 then | 83 elseif count - pastInventory.items[link] ~= 0 then |
67 diff[name] = count - pastInventory.items[name] | 84 diff[link] = count - pastInventory.items[link] |
68 -- self:Debug("2 diff[" .. name .. "]=" .. diff[name]) | 85 -- self:Debug("2 diff[" .. name .. "]=" .. diff[name]) |
69 end | 86 end |
70 end | 87 end |
71 | 88 |
72 for name, count in pairs(pastInventory.items) do | 89 for link, count in pairs(pastInventory.items) do |
73 if current.items[name] == nil then | 90 if current.items[link] == nil then |
74 diff[name] = -count | 91 diff[link] = -count |
75 -- self:Debug("3 diff[" .. name .. "]=" .. diff[name]) | 92 -- self:Debug("3 diff[" .. name .. "]=" .. diff[name]) |
76 elseif current.items[name] - count ~= 0 then | 93 elseif current.items[link] - count ~= 0 then |
77 diff[name] = current.items[name] - pastInventory.items[name] | 94 diff[link] = current.items[link] - pastInventory.items[link] |
78 -- self:Debug("4 diff[" .. name .. "]=" .. diff[name]) | 95 -- self:Debug("4 diff[" .. name .. "]=" .. diff[name]) |
79 end | 96 end |
80 end | 97 end |
81 | 98 |
82 local moneyDiff = current.money - pastInventory.money | 99 local moneyDiff = current.money - pastInventory.money |
83 | 100 |
84 return {items = diff, money = moneyDiff} | 101 return {items = diff, money = moneyDiff} |
85 end | 102 end |
86 | 103 |
87 | 104 |
88 | 105 |
89 function addon:ScanMail() | 106 function addon:ScanMail() |
134 | 151 |
135 end | 152 end |
136 return results | 153 return results |
137 end | 154 end |
138 | 155 |
139 function addon:SaveValue(item, value) | 156 function addon:GetItem(link) |
157 link = utils:GetSafeLink(link) | |
158 DevTools_Dump(link) | |
159 if self.items[link] == nil then | |
160 local itemName = GetItemInfo(link) | |
161 | |
162 self.items[link] = { | |
163 count = Altoholic:GetItemCount(utils:GetIDFromLink(link)), | |
164 invested = abs(self.db.factionrealm.item_account[itemName] or 0), | |
165 } | |
166 self.db.factionrealm.item_account[itemName] = nil | |
167 end | |
168 | |
169 return self.items[link] | |
170 end | |
171 | |
172 function addon:RemoveItem(link) | |
173 link = utils:GetSafeLink(link) | |
174 self.items[link] = nil | |
175 end | |
176 | |
177 function addon:SaveValue(link, value) | |
140 local item_account = self.db.factionrealm.item_account | 178 local item_account = self.db.factionrealm.item_account |
141 | 179 |
142 item_account[item] = (item_account[item] or 0) + value | 180 local item = self:GetItem(link) |
143 | 181 |
182 item.invested = item.invested + value | |
183 | |
184 local itemName = GetItemInfo(link) | |
144 if abs(value) > 0 then | 185 if abs(value) > 0 then |
145 self:Debug("Updated price of " .. item .. " to " .. utils:FormatMoney(item_account[item]) .. "(change: " .. utils:FormatMoney(value) .. ")") | 186 self:Debug("Updated price of " .. itemName .. " to " .. utils:FormatMoney(item.invested) .. "(change: " .. utils:FormatMoney(value) .. ")") |
146 end | 187 end |
147 | 188 |
148 if item_account[item] > 0 then | 189 if item.invested > 0 then |
149 self:Debug("Updated price of " .. item .. " to " .. utils:FormatMoney(0)) | 190 self:Debug("Updated price of " .. itemName .. " to " .. utils:FormatMoney(0)) |
150 item_account[item] = nil | 191 self:RemoveItem(link) |
151 elseif item_account[item] < 0 then | 192 end |
152 addon:GetItemCost(itemName) | 193 |
194 if item.count == 0 then | |
195 self:Print("You ran out of " .. itemName .. " and never recovered " .. utils:FormatMoney(item.invested)) | |
196 self:RemoveItem(link) | |
153 end | 197 end |
154 end | 198 end |
155 | 199 |
156 local defaultBagDelay = 0.2 | 200 local defaultBagDelay = 0.2 |
157 | 201 |
174 self:UnregisterBucket(self.watch_handle) | 218 self:UnregisterBucket(self.watch_handle) |
175 self.watch_handle = nil | 219 self.watch_handle = nil |
176 end | 220 end |
177 end | 221 end |
178 | 222 |
179 function addon:GetItemCost(itemName, countModifier) | 223 function addon:GetItemCost(link, countModifier) |
180 local invested = abs(self.db.factionrealm.item_account[itemName] or 0) | 224 local item = self:GetItem(link) |
225 | |
226 local invested = item.invested | |
181 | 227 |
182 if invested > 0 then | 228 if invested > 0 then |
183 local ItemID = utils:GetItemID(itemName) | 229 local ItemID = utils:GetIDFromLink(link) |
184 if ItemID ~= nil then | 230 if ItemID ~= nil then |
185 local count = Altoholic:GetItemCount(tonumber(ItemID)) | 231 local count = self:GetItem(link).count |
186 if count == 0 then | |
187 self.db.factionrealm.item_account[itemName] = nil | |
188 self:Print("You ran out of " .. itemName .. " and never recovered " .. utils:FormatMoney(invested)) | |
189 end | |
190 | 232 |
191 if countModifier ~= nil then | 233 if countModifier ~= nil then |
192 count = count - countModifier | 234 count = count - countModifier |
193 end | 235 end |
194 if count > 0 then | 236 if count > 0 then |