Mercurial > wow > itemauditor
comparison Modules/Events.lua @ 63:e7d287cc3b02
Replaced all instances of addon with ItemAuditor and I moved ItemAuditor out of the global namespace. The conversion was mostly a search/replace offering no new functionality. That will come in a later commit.
| author | Asa Ayers <Asa.Ayers@Gmail.com> |
|---|---|
| date | Tue, 27 Jul 2010 17:58:33 -0700 |
| parents | c6c98fc1be8e |
| children | 64166ba5209a |
comparison
equal
deleted
inserted
replaced
| 62:70dc84df13b3 | 63:e7d287cc3b02 |
|---|---|
| 1 local addonName, addonTable = ...; | 1 local ItemAuditor = select(2, ...) |
| 2 local addon = _G[addonName] | 2 local Events = ItemAuditor:NewModule("Events", "AceEvent-3.0") |
| 3 | 3 |
| 4 function addon:OnEnable() | 4 function ItemAuditor:OnEnable() |
| 5 self:RegisterEvent("MAIL_SHOW") | 5 self:RegisterEvent("MAIL_SHOW") |
| 6 self:RegisterEvent("UNIT_SPELLCAST_START") | 6 self:RegisterEvent("UNIT_SPELLCAST_START") |
| 7 addon:UpdateCurrentInventory() | 7 ItemAuditor:UpdateCurrentInventory() |
| 8 self:WatchBags() | 8 self:WatchBags() |
| 9 | 9 |
| 10 self:SetEnabled(nil, self.db.profile.addon_enabled) | 10 self:SetEnabled(nil, self.db.profile.ItemAuditor_enabled) |
| 11 end | 11 end |
| 12 | 12 |
| 13 function addon:OnDisable() | 13 function ItemAuditor:OnDisable() |
| 14 self:UnwatchBags() | 14 self:UnwatchBags() |
| 15 self:UnregisterAllEvents() | 15 self:UnregisterAllEvents() |
| 16 addon:HideAllFrames() | 16 ItemAuditor:HideAllFrames() |
| 17 end | 17 end |
| 18 | 18 |
| 19 function addon:MAIL_SHOW() | 19 function ItemAuditor:MAIL_SHOW() |
| 20 self:Debug("MAIL_SHOW") | 20 self:Debug("MAIL_SHOW") |
| 21 self:UnwatchBags() | 21 self:UnwatchBags() |
| 22 addon:UpdateCurrentInventory() | 22 ItemAuditor:UpdateCurrentInventory() |
| 23 self.lastMailScan = self:ScanMail() | 23 self.lastMailScan = self:ScanMail() |
| 24 | 24 |
| 25 self:UnregisterEvent("MAIL_SHOW") | 25 self:UnregisterEvent("MAIL_SHOW") |
| 26 self:RegisterEvent("MAIL_CLOSED") | 26 self:RegisterEvent("MAIL_CLOSED") |
| 27 self:RegisterEvent("MAIL_INBOX_UPDATE") | 27 self:RegisterEvent("MAIL_INBOX_UPDATE") |
| 29 self:GenerateBlankOutbox() | 29 self:GenerateBlankOutbox() |
| 30 | 30 |
| 31 self:RegisterEvent("MAIL_SUCCESS") | 31 self:RegisterEvent("MAIL_SUCCESS") |
| 32 end | 32 end |
| 33 | 33 |
| 34 function addon:GenerateBlankOutbox() | 34 function ItemAuditor:GenerateBlankOutbox() |
| 35 self.mailOutbox = { | 35 self.mailOutbox = { |
| 36 from = UnitName("player"), | 36 from = UnitName("player"), |
| 37 to = "", | 37 to = "", |
| 38 subject = "", | 38 subject = "", |
| 39 link = '', | 39 link = '', |
| 122 end | 122 end |
| 123 | 123 |
| 124 return Orig_SendMail(recipient, subject, body, ...) | 124 return Orig_SendMail(recipient, subject, body, ...) |
| 125 end | 125 end |
| 126 | 126 |
| 127 function addon:MAIL_SUCCESS(event) | 127 function ItemAuditor:MAIL_SUCCESS(event) |
| 128 skipCODTracking = false | 128 skipCODTracking = false |
| 129 for link, data in pairs(attachedItems) do | 129 for link, data in pairs(attachedItems) do |
| 130 self:SaveValue(link, data.price, data.count) | 130 self:SaveValue(link, data.price, data.count) |
| 131 end | 131 end |
| 132 if self.mailOutbox.COD > 0 then | 132 if self.mailOutbox.COD > 0 then |
| 138 | 138 |
| 139 | 139 |
| 140 self:GenerateBlankOutbox() | 140 self:GenerateBlankOutbox() |
| 141 end | 141 end |
| 142 | 142 |
| 143 function addon:MAIL_CLOSED() | 143 function ItemAuditor:MAIL_CLOSED() |
| 144 self:Debug("MAIL_CLOSED") | 144 self:Debug("MAIL_CLOSED") |
| 145 addon:UnregisterEvent("MAIL_CLOSED") | 145 ItemAuditor:UnregisterEvent("MAIL_CLOSED") |
| 146 self:MAIL_INBOX_UPDATE() | 146 self:MAIL_INBOX_UPDATE() |
| 147 self:UnregisterEvent("MAIL_INBOX_UPDATE") | 147 self:UnregisterEvent("MAIL_INBOX_UPDATE") |
| 148 self:RegisterEvent("MAIL_SHOW") | 148 self:RegisterEvent("MAIL_SHOW") |
| 149 self:WatchBags() | 149 self:WatchBags() |
| 150 end | 150 end |
| 151 | 151 |
| 152 local storedCountDiff | 152 local storedCountDiff |
| 153 function addon:MAIL_INBOX_UPDATE() | 153 function ItemAuditor:MAIL_INBOX_UPDATE() |
| 154 self:Debug("MAIL_INBOX_UPDATE") | 154 self:Debug("MAIL_INBOX_UPDATE") |
| 155 local newScan = addon:ScanMail() | 155 local newScan = ItemAuditor:ScanMail() |
| 156 local diff | 156 local diff |
| 157 | 157 |
| 158 for mailType, collection in pairs(self.lastMailScan) do | 158 for mailType, collection in pairs(self.lastMailScan) do |
| 159 newScan[mailType] = (newScan[mailType] or {}) | 159 newScan[mailType] = (newScan[mailType] or {}) |
| 160 for itemName, data in pairs(collection) do | 160 for itemName, data in pairs(collection) do |
| 185 end | 185 end |
| 186 | 186 |
| 187 self.lastMailScan = newScan | 187 self.lastMailScan = newScan |
| 188 end | 188 end |
| 189 | 189 |
| 190 function addon:UNIT_SPELLCAST_START(event, target, spell) | 190 function ItemAuditor:UNIT_SPELLCAST_START(event, target, spell) |
| 191 if target == "player" and spell == "Milling" or spell == "Prospecting" or spell == "Disenchanting" then | 191 if target == "player" and spell == "Milling" or spell == "Prospecting" or spell == "Disenchanting" then |
| 192 self:Debug(event .. " " .. spell) | 192 self:Debug(event .. " " .. spell) |
| 193 self:UnwatchBags() | 193 self:UnwatchBags() |
| 194 self:UpdateCurrentInventory() | 194 self:UpdateCurrentInventory() |
| 195 self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED") | 195 self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED") |
| 199 | 199 |
| 200 --[[ | 200 --[[ |
| 201 The item should be destroyed before this point, so the last inventory check | 201 The item should be destroyed before this point, so the last inventory check |
| 202 needs to be kept so it can be combined with the up coming loot. | 202 needs to be kept so it can be combined with the up coming loot. |
| 203 ]] | 203 ]] |
| 204 function addon:LOOT_CLOSED() | 204 function ItemAuditor:LOOT_CLOSED() |
| 205 self:Debug("LOOT_CLOSED") | 205 self:Debug("LOOT_CLOSED") |
| 206 self:UnregisterEvent("LOOT_CLOSED") | 206 self:UnregisterEvent("LOOT_CLOSED") |
| 207 self:UnregisterEvent("UNIT_SPELLCAST_INTERRUPTED") | 207 self:UnregisterEvent("UNIT_SPELLCAST_INTERRUPTED") |
| 208 local inventory = self.lastInventory | 208 local inventory = self.lastInventory |
| 209 self:WatchBags() | 209 self:WatchBags() |
| 210 self.lastInventory = inventory | 210 self.lastInventory = inventory |
| 211 end | 211 end |
| 212 | 212 |
| 213 function addon:UNIT_SPELLCAST_INTERRUPTED(event, target, spell) | 213 function ItemAuditor:UNIT_SPELLCAST_INTERRUPTED(event, target, spell) |
| 214 if target == "player" and spell == "Milling" or spell == "Prospecting" or spell == "Disenchanting" then | 214 if target == "player" and spell == "Milling" or spell == "Prospecting" or spell == "Disenchanting" then |
| 215 self:Debug(event .. " " .. spell) | 215 self:Debug(event .. " " .. spell) |
| 216 self:UnregisterEvent("UNIT_SPELLCAST_INTERRUPTED") | 216 self:UnregisterEvent("UNIT_SPELLCAST_INTERRUPTED") |
| 217 self:UnregisterEvent("LOOT_CLOSED") | 217 self:UnregisterEvent("LOOT_CLOSED") |
| 218 self:WatchBags() | 218 self:WatchBags() |
| 219 end | 219 end |
| 220 end | 220 end |
| 221 | 221 |
| 222 function addon:UpdateCurrentInventory() | 222 function ItemAuditor:UpdateCurrentInventory() |
| 223 self.lastInventory = self:GetCurrentInventory() | 223 self.lastInventory = self:GetCurrentInventory() |
| 224 end | 224 end |
| 225 | 225 |
| 226 local function distributeValue(self, totalValue, targetItems) | 226 local function distributeValue(self, totalValue, targetItems) |
| 227 | 227 |
| 232 If something has never been seen on the AH, it must not be very valuable. | 232 If something has never been seen on the AH, it must not be very valuable. |
| 233 I'm using 1c so it doesn't have much weight and I can't get a devided by zero error. | 233 I'm using 1c so it doesn't have much weight and I can't get a devided by zero error. |
| 234 The only time I know that this is a problem is when crafting a BOP item, and it | 234 The only time I know that this is a problem is when crafting a BOP item, and it |
| 235 is always crafted 1 at a time, so a weight of 1 will work. | 235 is always crafted 1 at a time, so a weight of 1 will work. |
| 236 ]] | 236 ]] |
| 237 local ap = (addon:GetAuctionPrice(link) or 1) * change | 237 local ap = (ItemAuditor:GetAuctionPrice(link) or 1) * change |
| 238 totalWeight = totalWeight + ap | 238 totalWeight = totalWeight + ap |
| 239 weights[link] = ap | 239 weights[link] = ap |
| 240 end | 240 end |
| 241 | 241 |
| 242 for link, change in pairs(targetItems) do | 242 for link, change in pairs(targetItems) do |
| 243 local value = totalValue * (weights[link]/totalWeight) | 243 local value = totalValue * (weights[link]/totalWeight) |
| 244 self:SaveValue(link, value, change) | 244 self:SaveValue(link, value, change) |
| 245 end | 245 end |
| 246 end | 246 end |
| 247 | 247 |
| 248 function addon:UpdateAudit() | 248 function ItemAuditor:UpdateAudit() |
| 249 -- self:Debug("UpdateAudit " .. event) | 249 -- self:Debug("UpdateAudit " .. event) |
| 250 local currentInventory = self:GetCurrentInventory() | 250 local currentInventory = self:GetCurrentInventory() |
| 251 local diff = addon:GetInventoryDiff(self.lastInventory, currentInventory) | 251 local diff = ItemAuditor:GetInventoryDiff(self.lastInventory, currentInventory) |
| 252 | 252 |
| 253 local positive, negative = {}, {} | 253 local positive, negative = {}, {} |
| 254 local positiveCount, negativeCount = 0, 0 | 254 local positiveCount, negativeCount = 0, 0 |
| 255 for item, count in pairs(diff.items) do | 255 for item, count in pairs(diff.items) do |
| 256 if count > 0 then | 256 if count > 0 then |
| 291 else | 291 else |
| 292 self:Debug("No match in UpdateAudit.") | 292 self:Debug("No match in UpdateAudit.") |
| 293 end | 293 end |
| 294 | 294 |
| 295 self.lastInventory = currentInventory | 295 self.lastInventory = currentInventory |
| 296 addon:WatchBags() | 296 ItemAuditor:WatchBags() |
| 297 end | 297 end |
