annotate Modules/Utils.lua @ 49:9ff6a3b02332 ticket7

I have changed my mind, price distribution will always be based on the AH price, unless none is available, then all items have the same weight which is what was being done before.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Wed, 21 Jul 2010 01:00:14 -0700
parents 003de902ae64
children bdf3aba93aa9
rev   line source
Asa@3 1 local addonName, addonTable = ...;
Asa@15 2 local addon = _G[addonName]
Asa@3 3
Asa@20 4 function addon:FormatMoney(copper, color, textOnly)
Asa@20 5 color = color or "|cFFFFFFFF"
Asa@6 6 local prefix = ""
Asa@16 7 if copper < 0 then
Asa@6 8 prefix = "-"
Asa@16 9 copper = abs(copper)
Asa@6 10 end
Asa@20 11
Asa@20 12 local copperTexture = COPPER_AMOUNT_TEXTURE
Asa@20 13 local silverTexture = SILVER_AMOUNT_TEXTURE
Asa@20 14 local goldTexture = GOLD_AMOUNT_TEXTURE
Asa@20 15 if textOnly then
Asa@20 16 copperTexture = '%dc'
Asa@20 17 silverTexture = '%ds'
Asa@20 18 goldTexture = '%dg'
Asa@20 19 end
Asa@16 20
Asa@16 21 local gold = floor( copper / 10000 );
Asa@16 22 copper = mod(copper, 10000)
Asa@16 23 local silver = floor( copper / 100 );
Asa@16 24 copper = mod(copper, 100)
Asa@16 25
Asa@16 26
Asa@20 27 copper = color .. format(copperTexture, copper, 13, 13)
Asa@16 28 if silver > 0 or gold > 0 then
Asa@20 29 silver = color.. format(silverTexture, silver, 13, 13) .. ' '
Asa@16 30 else
Asa@16 31 silver = ""
Asa@16 32 end
Asa@16 33 if gold > 0 then
Asa@20 34 gold = color.. format(goldTexture, gold, 13, 13) .. ' '
Asa@16 35 else
Asa@16 36 gold = ""
Asa@16 37 end
Asa@16 38
Asa@16 39 return format("%s%s%s%s", prefix, gold, silver, copper)
Asa@6 40 end
Asa@6 41
Asa@8 42 -- This is only here to make sure this doesn't blow up if ReplaceItemCache is never called
Asa@7 43 local item_db = {}
Asa@7 44
Asa@7 45 function addon:ReplaceItemCache(new_cache)
Asa@7 46 item_db = new_cache
Asa@7 47 end
Asa@7 48
Asa@7 49 -- This will be reset every session
Asa@7 50 local tmp_item_cache = {}
Asa@7 51 function addon:GetItemID(itemName)
Asa@7 52 if item_db[itemName] ~= nil then
Asa@7 53 return item_db[itemName]
Asa@7 54 end
Asa@7 55
Asa@7 56 if tmp_item_cache[itemName] == nil then
Asa@7 57 local _, itemLink = GetItemInfo (itemName);
Asa@7 58 if itemLink ~= nil then
Asa@7 59 local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
Asa@7 60 tmp_item_cache[itemName] = tonumber(itemID)
Asa@7 61 end
Asa@7 62 end
Asa@7 63
Asa@9 64 if tmp_item_cache[itemName] == nil then
Asa@9 65 for link, data in pairs(ItemAuditor.db.factionrealm.items) do
Asa@9 66 local name, itemLink = GetItemInfo (link);
Asa@9 67 if name == itemName then
Asa@9 68 local _, _, _, _, itemID = string.find(itemLink, "|?c?f?f?(%x*)|?H?([^:]*):?(%d+):?(%d*):?(%d*):?(%d*):?(%d*):?(%d*):?(%-?%d*):?(%-?%d*):?(%d*)|?h?%[?([^%[%]]*)%]?|?h?|?r?")
Asa@9 69 tmp_item_cache[itemName] = tonumber(itemID)
Asa@9 70 end
Asa@9 71 end
Asa@9 72
Asa@9 73 end
Asa@9 74
Asa@7 75 return tmp_item_cache[itemName]
Asa@7 76 end
Asa@7 77
Asa@9 78 function addon:GetLinkFromName(itemName)
Asa@9 79 local itemID = self:GetItemID(itemName)
Asa@9 80 local itemLink
Asa@9 81 if itemID ~= nil then
Asa@9 82 _, itemLink = GetItemInfo(itemID)
Asa@9 83 end
Asa@9 84
Asa@9 85 return itemLink
Asa@9 86 end
Asa@9 87
Asa@7 88 function addon:SaveItemID(itemName, id)
Asa@7 89 item_db[itemName] = tonumber(id)
Asa@7 90 end
Asa@7 91
Asa@24 92 addon.SubjectPatterns = {
Asa@6 93 AHCancelled = gsub(AUCTION_REMOVED_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 94 AHExpired = gsub(AUCTION_EXPIRED_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 95 AHOutbid = gsub(AUCTION_OUTBID_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 96 AHSuccess = gsub(AUCTION_SOLD_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 97 AHWon = gsub(AUCTION_WON_MAIL_SUBJECT, "%%s", ".*"),
Asa@6 98 CODPayment = gsub(COD_PAYMENT, "%%s", "(.*)"),
Asa@6 99 }
Asa@6 100
Asa@6 101 function addon:GetMailType(msgSubject)
Asa@6 102 if msgSubject then
Asa@24 103 for k, v in pairs(self.SubjectPatterns) do
Asa@6 104 if msgSubject:find(v) then return k end
Asa@6 105 end
Asa@6 106 end
Asa@6 107 return "NonAHMail"
Asa@3 108 end
Asa@3 109
Asa@3 110 function addon:tcount(tab)
Asa@3 111 local n = #tab
Asa@3 112 if (n == 0) then
Asa@3 113 for _ in pairs(tab) do
Asa@3 114 n = n + 1
Asa@3 115 end
Asa@3 116 end
Asa@3 117 return n
Asa@3 118 end
Asa@3 119
Asa@3 120 function addon:GetDebug(info)
Asa@11 121 return self.db.char.debug
Asa@3 122 end
Asa@3 123
Asa@3 124 function addon:SetDebug(info, input)
Asa@11 125
Asa@11 126 ItemAuditor.db.char.debug = input
Asa@3 127 local value = "off"
Asa@3 128 if input then
Asa@3 129 value = "on"
Asa@3 130 end
Asa@11 131 self:Print("Debugging is now: " .. value)
Asa@3 132 end