Mercurial > wow > itemauditor
comparison Modules/Events.lua @ 23:819bfdc5d73c
More debug messages and added the ability to scroll the debug window.
| author | Asa Ayers <Asa.Ayers@Gmail.com> |
|---|---|
| date | Thu, 08 Jul 2010 23:55:05 -0700 |
| parents | ff9a698caebc |
| children | 554b30908b33 |
comparison
equal
deleted
inserted
replaced
| 22:66b7c3f5937e | 23:819bfdc5d73c |
|---|---|
| 16 self.lastMailScan = self:ScanMail() | 16 self.lastMailScan = self:ScanMail() |
| 17 | 17 |
| 18 self:UnregisterEvent("MAIL_SHOW") | 18 self:UnregisterEvent("MAIL_SHOW") |
| 19 self:RegisterEvent("MAIL_CLOSED") | 19 self:RegisterEvent("MAIL_CLOSED") |
| 20 self:RegisterEvent("MAIL_INBOX_UPDATE") | 20 self:RegisterEvent("MAIL_INBOX_UPDATE") |
| 21 self:Debug("MAIL_SHOW complete") | |
| 22 end | 21 end |
| 23 | 22 |
| 24 function addon:MAIL_CLOSED() | 23 function addon:MAIL_CLOSED() |
| 24 self:Debug("MAIL_CLOSED") | |
| 25 addon:UnregisterEvent("MAIL_CLOSED") | 25 addon:UnregisterEvent("MAIL_CLOSED") |
| 26 self:MAIL_INBOX_UPDATE() | 26 self:MAIL_INBOX_UPDATE() |
| 27 self:UnregisterEvent("MAIL_INBOX_UPDATE") | 27 self:UnregisterEvent("MAIL_INBOX_UPDATE") |
| 28 self:RegisterEvent("MAIL_SHOW") | 28 self:RegisterEvent("MAIL_SHOW") |
| 29 end | 29 end |
| 30 | 30 |
| 31 function addon:MAIL_INBOX_UPDATE() | 31 function addon:MAIL_INBOX_UPDATE() |
| 32 self:Debug("MAIL_INBOX_UPDATE") | |
| 32 local newScan = addon:ScanMail() | 33 local newScan = addon:ScanMail() |
| 33 local diff | 34 local diff |
| 34 for mailType, collection in pairs(self.lastMailScan) do | 35 for mailType, collection in pairs(self.lastMailScan) do |
| 35 newScan[mailType] = (newScan[mailType] or {}) | 36 newScan[mailType] = (newScan[mailType] or {}) |
| 36 for item, total in pairs(collection) do | 37 for item, total in pairs(collection) do |
| 46 self.lastMailScan = newScan | 47 self.lastMailScan = newScan |
| 47 end | 48 end |
| 48 | 49 |
| 49 function addon:UNIT_SPELLCAST_START(event, target, spell) | 50 function addon:UNIT_SPELLCAST_START(event, target, spell) |
| 50 if target == "player" and spell == "Milling" or spell == "Prospecting" or spell == "Disenchanting" then | 51 if target == "player" and spell == "Milling" or spell == "Prospecting" or spell == "Disenchanting" then |
| 52 self:Debug(event .. " " .. spell) | |
| 51 self:UnwatchBags() | 53 self:UnwatchBags() |
| 52 self:UpdateCurrentInventory() | 54 self:UpdateCurrentInventory() |
| 53 self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED") | 55 self:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED") |
| 54 self:RegisterEvent("LOOT_CLOSED") | 56 self:RegisterEvent("LOOT_CLOSED") |
| 55 end | 57 end |
| 58 --[[ | 60 --[[ |
| 59 The item should be destroyed before this point, so the last inventory check | 61 The item should be destroyed before this point, so the last inventory check |
| 60 needs to be kept so it can be combined with the up coming loot. | 62 needs to be kept so it can be combined with the up coming loot. |
| 61 ]] | 63 ]] |
| 62 function addon:LOOT_CLOSED() | 64 function addon:LOOT_CLOSED() |
| 65 self:Debug("LOOT_CLOSED") | |
| 63 self:UnregisterEvent("LOOT_CLOSED") | 66 self:UnregisterEvent("LOOT_CLOSED") |
| 64 self:UnregisterEvent("UNIT_SPELLCAST_INTERRUPTED") | 67 self:UnregisterEvent("UNIT_SPELLCAST_INTERRUPTED") |
| 65 local inventory = self.lastInventory | 68 local inventory = self.lastInventory |
| 66 self:WatchBags() | 69 self:WatchBags() |
| 67 self.lastInventory = inventory | 70 self.lastInventory = inventory |
| 68 end | 71 end |
| 69 | 72 |
| 70 function addon:UNIT_SPELLCAST_INTERRUPTED(event, target, spell) | 73 function addon:UNIT_SPELLCAST_INTERRUPTED(event, target, spell) |
| 71 if target == "player" and spell == "Milling" or spell == "Prospecting" or spell == "Disenchanting" then | 74 if target == "player" and spell == "Milling" or spell == "Prospecting" or spell == "Disenchanting" then |
| 75 self:Debug(event .. " " .. spell) | |
| 72 self:UnregisterEvent("UNIT_SPELLCAST_INTERRUPTED") | 76 self:UnregisterEvent("UNIT_SPELLCAST_INTERRUPTED") |
| 73 self:UnregisterEvent("LOOT_CLOSED") | 77 self:UnregisterEvent("LOOT_CLOSED") |
| 74 self:WatchBags() | 78 self:WatchBags() |
| 75 end | 79 end |
| 76 end | 80 end |
| 78 function addon:UpdateCurrentInventory() | 82 function addon:UpdateCurrentInventory() |
| 79 self.lastInventory = self:GetCurrentInventory() | 83 self.lastInventory = self:GetCurrentInventory() |
| 80 end | 84 end |
| 81 | 85 |
| 82 function addon:UpdateAudit() | 86 function addon:UpdateAudit() |
| 83 -- self:Debug("UpdateAudit") | 87 -- self:Debug("UpdateAudit " .. event) |
| 84 local currentInventory = self:GetCurrentInventory() | 88 local currentInventory = self:GetCurrentInventory() |
| 85 local diff = addon:GetInventoryDiff(self.lastInventory, currentInventory) | 89 local diff = addon:GetInventoryDiff(self.lastInventory, currentInventory) |
| 86 -- this is only here for debugging | |
| 87 self.lastdiff = diff | |
| 88 | 90 |
| 89 local positive, negative = {}, {} | 91 local positive, negative = {}, {} |
| 90 local positiveCount, negativeCount = 0, 0 | 92 local positiveCount, negativeCount = 0, 0 |
| 91 for item, count in pairs(diff.items) do | 93 for item, count in pairs(diff.items) do |
| 92 if count > 0 then | 94 if count > 0 then |
| 96 negative[item] = count | 98 negative[item] = count |
| 97 negativeCount = negativeCount + abs(count) | 99 negativeCount = negativeCount + abs(count) |
| 98 end | 100 end |
| 99 end | 101 end |
| 100 | 102 |
| 103 if positiveCount + negativeCount == 0 then | |
| 104 return | |
| 105 end | |
| 106 | |
| 101 if diff.money > 0 and self:tcount(positive) > 0 and self:tcount(negative) == 0 then | 107 if diff.money > 0 and self:tcount(positive) > 0 and self:tcount(negative) == 0 then |
| 102 self:Debug("loot") | 108 self:Debug("loot") |
| 103 elseif abs(diff.money) > 0 and self:tcount(diff.items) == 1 then | 109 elseif abs(diff.money) > 0 and self:tcount(diff.items) == 1 then |
| 104 self:Debug("purchase or sale") | 110 self:Debug("purchase or sale") |
| 105 | 111 |
| 106 for link, count in pairs(diff.items) do | 112 for link, count in pairs(diff.items) do |
| 107 self:SaveValue(link, 0 - diff.money) | 113 self:SaveValue(link, 0 - diff.money) |
| 108 end | 114 end |
| 109 elseif self:tcount(diff.items) > 1 then | 115 elseif self:tcount(diff.items) > 1 and self:tcount(positive) > 0 and self:tcount(negative) > 0 then |
| 116 -- we must have created/converted something | |
| 117 self:Debug("conversion") | |
| 110 | 118 |
| 111 if self:tcount(positive) > 0 and self:tcount(negative) > 0 then | 119 local totalChange = 0 |
| 112 -- we must have created/converted something | 120 for link, change in pairs(negative) do |
| 113 self:Debug("conversion") | 121 local _, itemCost, count = self:GetItemCost(link, change) |
| 122 self:SaveValue(link, itemCost * change) | |
| 114 | 123 |
| 115 local totalChange = 0 | 124 totalChange = totalChange + (itemCost * abs(change)) |
| 116 for link, change in pairs(negative) do | |
| 117 local _, itemCost, count = self:GetItemCost(link, change) | |
| 118 self:SaveValue(link, itemCost * change) | |
| 119 | |
| 120 totalChange = totalChange + (itemCost * abs(change)) | |
| 121 end | |
| 122 | |
| 123 local valuePerItem = totalChange / positiveCount | |
| 124 | |
| 125 for link, change in pairs(positive) do | |
| 126 self:SaveValue(link, valuePerItem * change) | |
| 127 end | |
| 128 end | 125 end |
| 126 | |
| 127 local valuePerItem = totalChange / positiveCount | |
| 128 | |
| 129 for link, change in pairs(positive) do | |
| 130 self:SaveValue(link, valuePerItem * change) | |
| 131 end | |
| 132 else | |
| 133 self:Debug("No match in UpdateAudit.") | |
| 129 end | 134 end |
| 130 | 135 |
| 131 self.lastInventory = currentInventory | 136 self.lastInventory = currentInventory |
| 132 addon:WatchBags() | 137 addon:WatchBags() |
| 133 end | 138 end |
