view Modules/Utils.lua @ 16:56de19d9bd8d

Cleaned up the messages. You can turn the notifications of price changes off and those messages will only show gold or silver if they are more than 0. I have also removed the dependency on AceConsole because it doesn't allow changing the color of the addon name when I print messages.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Sat, 03 Jul 2010 10:05:53 -0700
parents 44e70a3fdb19
children ff9a698caebc
line wrap: on
line source
local addonName, addonTable = ...; 
local addon = _G[addonName]

addonTable.utils = addon
IAUtils = addon

function addon:FormatMoney(copper)
	color = "|cFFFFFFFF"
	local prefix = ""
	if copper < 0 then
		prefix = "-"
		copper = abs(copper)
	end

	local gold = floor( copper / 10000 );
	copper = mod(copper, 10000)
	local silver = floor( copper / 100 );
	copper = mod(copper, 100)
	
	
	copper = color..format(COPPER_AMOUNT_TEXTURE, copper, 13, 13)
	if silver > 0 or gold > 0 then
		silver = color..format(SILVER_AMOUNT_TEXTURE, silver, 13, 13) .. ' '
	else
		silver = ""
	end
	if gold > 0 then
		gold = color..format(GOLD_AMOUNT_TEXTURE, gold, 13, 13) .. ' '
	else
		gold = ""
	end
	
	return format("%s%s%s%s", prefix, gold, silver, copper)
end

-- This is only here to make sure this doesn't blow up if ReplaceItemCache is never called
local item_db = {}

function addon:ReplaceItemCache(new_cache)
	item_db  = new_cache
end

-- This will be reset every session
local tmp_item_cache = {}
function addon:GetItemID(itemName)
	if item_db[itemName] ~= nil then
		return item_db[itemName]
	end
	
	if tmp_item_cache[itemName] == nil then
		local _, itemLink = GetItemInfo (itemName);
		if itemLink ~= nil then
			local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
			tmp_item_cache[itemName] = tonumber(itemID)
		end
	end
	
	if tmp_item_cache[itemName] == nil then
		for link, data in pairs(ItemAuditor.db.factionrealm.items) do
			local name, itemLink = GetItemInfo (link);
			if name == itemName then
				local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
				tmp_item_cache[itemName] = tonumber(itemID)
			end
		end
		
	end
	
	return tmp_item_cache[itemName]
end

function addon:GetLinkFromName(itemName)
	local itemID = self:GetItemID(itemName)
	local itemLink
	if itemID ~= nil then
		_, itemLink = GetItemInfo(itemID)
	end
	
	return itemLink
end

function addon:SaveItemID(itemName, id)
	item_db[itemName] = tonumber(id)
end

local SubjectPatterns = {
	AHCancelled = gsub(AUCTION_REMOVED_MAIL_SUBJECT, "%%s", ".*"),
	AHExpired = gsub(AUCTION_EXPIRED_MAIL_SUBJECT, "%%s", ".*"),
	AHOutbid = gsub(AUCTION_OUTBID_MAIL_SUBJECT, "%%s", ".*"),
	AHSuccess = gsub(AUCTION_SOLD_MAIL_SUBJECT, "%%s", ".*"),
	AHWon = gsub(AUCTION_WON_MAIL_SUBJECT, "%%s", ".*"),
	CODPayment = gsub(COD_PAYMENT, "%%s", "(.*)"),
}

function addon:GetMailType(msgSubject)
	if msgSubject then
		for k, v in pairs(SubjectPatterns) do
			if msgSubject:find(v) then return k end
		end
	end
	return "NonAHMail"
end

function addon:tcount(tab)
   local n = #tab
   if (n == 0) then
      for _ in pairs(tab) do
         n = n + 1
      end
   end
   return n
end

function addon:GetDebug(info)
	return self.db.char.debug
end

function addon:SetDebug(info, input)
	
	ItemAuditor.db.char.debug = input
	local value = "off"
	if input then
		value = "on"
	end
	self:Print("Debugging is now: " .. value)
end