view 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 source
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