diff Modules/Events.lua @ 3:bbcf81868171

Code cleanup.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Sat, 22 May 2010 11:34:19 -0700
parents
children c940b527ccab
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Modules/Events.lua	Sat May 22 11:34:19 2010 -0700
@@ -0,0 +1,105 @@
+local addonName, addonTable = ...; 
+local addon = _G[addonName]
+
+local utils = addonTable.utils
+
+function addon:PLAYER_ENTERING_WORLD()
+	self:RegisterEvent("MAIL_SHOW")
+	self:WatchBags()
+end
+ 
+ function addon:MAIL_SHOW()
+	self:Debug("MAIL_SHOW")
+	self.lastMailScan = self:ScanMail()
+	self:UnregisterEvent("MAIL_SHOW")
+	self:RegisterEvent("MAIL_CLOSED")
+	self:RegisterEvent("MAIL_INBOX_UPDATE")
+	self:Debug("MAIL_SHOW complete")
+end
+
+function addon:MAIL_CLOSED()
+	addon:UnregisterEvent("MAIL_CLOSED")
+	self:UnregisterEvent("MAIL_INBOX_UPDATE")
+	self:RegisterEvent("MAIL_SHOW")
+end
+
+function addon:MAIL_INBOX_UPDATE()
+	local newScan = addon:ScanMail()
+	local diff
+	for item, total in pairs(self.lastMailScan) do
+
+		if newScan[item] == nil then
+			newScan[item] = 0
+		end
+		diff = total - newScan[item]
+		if diff ~= 0 then
+			self:SaveValue(item, diff)
+		end
+
+	end
+
+	self.lastMailScan = newScan
+end
+
+function addon:UNIT_SPELLCAST_SENT(target, spell)
+	if target == "player" and spell = "Milling" then
+	
+	end
+end
+
+function addon:UNIT_SPELLCAST_INTERRUPTED(target, spell)
+
+end
+
+function addon:UpdateAudit()
+	self:Debug("UpdateAudit")
+	local currentInventory = self:GetCurrentInventory()
+	local diff =  addon:GetInventoryDiff(self.lastInventory, currentInventory)
+	-- this is only here for debugging
+	self.lastdiff = diff
+	
+	if abs(diff.money) > 0 and utils:tcount(diff.items) == 1 then
+		self:Debug("purchase or sale")
+		
+		for itemName, count in pairs(diff.items) do
+			self:SaveValue(itemName, diff.money)
+		end
+	elseif utils:tcount(diff.items) > 1 then
+		local positive, negative = {}, {}
+		local positiveCount, negativeCount = 0, 0
+		for item, count in pairs(diff.items) do
+			if count > 0 then
+				positive[item] = count
+				positiveCount = positiveCount + count
+			elseif count < 0 then
+				negative[item] = count
+				negativeCount = negativeCount + abs(count)
+			end
+		end
+		
+		if utils:tcount(positive) > 0 and utils:tcount(negative) > 0 then
+			-- we must have created/converted something
+			self:Debug("conversion")
+			local totalChange = 0
+			for itemName, change in pairs(negative) do
+				local _, itemCost, count = self:GetItemCost(itemName, change)
+				self:SaveValue(itemName, abs(itemCost * change))
+				
+				totalChange = totalChange + abs(itemCost * change)
+			end
+			
+			self:Debug("totalChange")
+			self:Debug(totalChange)
+			
+			local valuePerItem = totalChange / positiveCount
+			self:Debug(valuePerItem )
+			for itemName, change in pairs(positive) do
+				self:Debug(itemName)
+				self:Debug(0-abs(valuePerItem * change))
+				self:SaveValue(itemName, 0-abs(valuePerItem * change))
+			end
+		end
+	end
+	
+	self.lastInventory = currentInventory
+end
\ No newline at end of file