annotate Modules/Utils.lua @ 19:67f4151d535c

Expanded the queue system to calculate what the new QA threshold would be and to consider buying items from vendors. It also sets a threshold so that items with less than 5g profit will not be crafted. I will turn this into an option later.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Sun, 04 Jul 2010 07:24:12 -0700
parents 56de19d9bd8d
children ff9a698caebc
rev   line source
Asa@3 1 local addonName, addonTable = ...;
Asa@15 2 local addon = _G[addonName]
Asa@3 3
Asa@3 4 addonTable.utils = addon
Asa@9 5 IAUtils = addon
Asa@3 6
Asa@16 7 function addon:FormatMoney(copper)
Asa@16 8 color = "|cFFFFFFFF"
Asa@6 9 local prefix = ""
Asa@16 10 if copper < 0 then
Asa@6 11 prefix = "-"
Asa@16 12 copper = abs(copper)
Asa@6 13 end
Asa@16 14
Asa@16 15 local gold = floor( copper / 10000 );
Asa@16 16 copper = mod(copper, 10000)
Asa@16 17 local silver = floor( copper / 100 );
Asa@16 18 copper = mod(copper, 100)
Asa@16 19
Asa@16 20
Asa@16 21 copper = color..format(COPPER_AMOUNT_TEXTURE, copper, 13, 13)
Asa@16 22 if silver > 0 or gold > 0 then
Asa@16 23 silver = color..format(SILVER_AMOUNT_TEXTURE, silver, 13, 13) .. ' '
Asa@16 24 else
Asa@16 25 silver = ""
Asa@16 26 end
Asa@16 27 if gold > 0 then
Asa@16 28 gold = color..format(GOLD_AMOUNT_TEXTURE, gold, 13, 13) .. ' '
Asa@16 29 else
Asa@16 30 gold = ""
Asa@16 31 end
Asa@16 32
Asa@16 33 return format("%s%s%s%s", prefix, gold, silver, copper)
Asa@6 34 end
Asa@6 35
Asa@8 36 -- This is only here to make sure this doesn't blow up if ReplaceItemCache is never called
Asa@7 37 local item_db = {}
Asa@7 38
Asa@7 39 function addon:ReplaceItemCache(new_cache)
Asa@7 40 item_db = new_cache
Asa@7 41 end
Asa@7 42
Asa@7 43 -- This will be reset every session
Asa@7 44 local tmp_item_cache = {}
Asa@7 45 function addon:GetItemID(itemName)
Asa@7 46 if item_db[itemName] ~= nil then
Asa@7 47 return item_db[itemName]
Asa@7 48 end
Asa@7 49
Asa@7 50 if tmp_item_cache[itemName] == nil then
Asa@7 51 local _, itemLink = GetItemInfo (itemName);
Asa@7 52 if itemLink ~= nil then
Asa@7 53 local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
Asa@7 54 tmp_item_cache[itemName] = tonumber(itemID)
Asa@7 55 end
Asa@7 56 end
Asa@7 57
Asa@9 58 if tmp_item_cache[itemName] == nil then
Asa@9 59 for link, data in pairs(ItemAuditor.db.factionrealm.items) do
Asa@9 60 local name, itemLink = GetItemInfo (link);
Asa@9 61 if name == itemName then
Asa@9 62 local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
Asa@9 63 tmp_item_cache[itemName] = tonumber(itemID)
Asa@9 64 end
Asa@9 65 end
Asa@9 66
Asa@9 67 end
Asa@9 68
Asa@7 69 return tmp_item_cache[itemName]
Asa@7 70 end
Asa@7 71
Asa@9 72 function addon:GetLinkFromName(itemName)
Asa@9 73 local itemID = self:GetItemID(itemName)
Asa@9 74 local itemLink
Asa@9 75 if itemID ~= nil then
Asa@9 76 _, itemLink = GetItemInfo(itemID)
Asa@9 77 end
Asa@9 78
Asa@9 79 return itemLink
Asa@9 80 end
Asa@9 81
Asa@7 82 function addon:SaveItemID(itemName, id)
Asa@7 83 item_db[itemName] = tonumber(id)
Asa@7 84 end
Asa@7 85
Asa@6 86 local SubjectPatterns = {
Asa@6 87 AHCancelled = gsub(AUCTION_REMOVED_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 88 AHExpired = gsub(AUCTION_EXPIRED_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 89 AHOutbid = gsub(AUCTION_OUTBID_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 90 AHSuccess = gsub(AUCTION_SOLD_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 91 AHWon = gsub(AUCTION_WON_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 92 CODPayment = gsub(COD_PAYMENT, "%%s", "(.*)"),
Asa@6 93 }
Asa@6 94
Asa@6 95 function addon:GetMailType(msgSubject)
Asa@6 96 if msgSubject then
Asa@6 97 for k, v in pairs(SubjectPatterns) do
Asa@6 98 if msgSubject:find(v) then return k end
Asa@6 99 end
Asa@6 100 end
Asa@6 101 return "NonAHMail"
Asa@3 102 end
Asa@3 103
Asa@3 104 function addon:tcount(tab)
Asa@3 105 local n = #tab
Asa@3 106 if (n == 0) then
Asa@3 107 for _ in pairs(tab) do
Asa@3 108 n = n + 1
Asa@3 109 end
Asa@3 110 end
Asa@3 111 return n
Asa@3 112 end
Asa@3 113
Asa@3 114 function addon:GetDebug(info)
Asa@11 115 return self.db.char.debug
Asa@3 116 end
Asa@3 117
Asa@3 118 function addon:SetDebug(info, input)
Asa@11 119
Asa@11 120 ItemAuditor.db.char.debug = input
Asa@3 121 local value = "off"
Asa@3 122 if input then
Asa@3 123 value = "on"
Asa@3 124 end
Asa@11 125 self:Print("Debugging is now: " .. value)
Asa@3 126 end