annotate ProspectMe_Tooltip.lua @ 27:4f555aee85e4 v1.7.1.1

Update version number
author Geoff Brock <mischivin@gmail.com>
date Thu, 27 Oct 2016 12:51:41 -0400
parents 4a10e5d1618c
children 5cbaaee1e7db
rev   line source
mischivin@20 1 --PM_HERBSUBCLASS = select(6, GetAuctionItemSubClasses(6))
mischivin@20 2 --PM_ORESUBCLASS = select(4, GetAuctionItemSubClasses(6))
mischivin@20 3
mischivin@20 4 --Hardcoded until I find a better solution now that GetAuctionItemSubClass() has changed
mischivin@20 5 PM_HERBSUBCLASS = "Herb"
mischivin@20 6 PM_ORESUBCLASS = "Metal & Stone"
Vynn@0 7
Vynn@0 8 function PM_FormatPrice(value)
Vynn@0 9
Vynn@0 10 local GSC_GOLD="ffffd100"
Vynn@0 11 local GSC_SILVER="ffe6e6e6"
Vynn@0 12 local GSC_COPPER="ffc8602c"
Vynn@0 13
Vynn@0 14 local g, s, c
Vynn@0 15 local digits = 0
Vynn@0 16 local gsc
Vynn@0 17
Vynn@0 18 g = math.floor(value/10000)
Vynn@0 19 s = math.fmod(math.floor(value/100),100)
Vynn@0 20 c = math.fmod(value,100)
Vynn@0 21
Vynn@0 22
Vynn@0 23 digits = math.floor(math.log10(value)+1)
Vynn@0 24
Vynn@0 25 if ( digits < 3 ) then
Vynn@0 26 gsc = string.format(" |c%s%2d|r", GSC_COPPER, c)
Vynn@0 27 elseif ( digits < 5 ) then
Vynn@0 28 gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_SILVER, s, GSC_COPPER, c)
Vynn@0 29 elseif ( digits < 7 ) then
Vynn@0 30 gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_GOLD, g, GSC_SILVER, s)
Vynn@0 31 elseif ( digits < 9 ) then
Vynn@0 32 gsc = string.format("|c%s%5d|r", GSC_GOLD, g)
Vynn@0 33 else
Vynn@0 34 gsc = string.format("|c%s%2.1fk|r", GSC_GOLD, g/1000)
Vynn@0 35 end
Vynn@0 36
Vynn@0 37 return gsc
Vynn@0 38 end
Vynn@0 39
Vynn@0 40 function PM_GetReturn(containerID)
Vynn@0 41 local averageReturn = 0
Vynn@0 42 if PM_ResultsTable[containerID].timesProspected > 0 then
Vynn@0 43 for itemID, num in pairs(PM_ResultsTable[containerID]) do
Vynn@0 44 if itemID ~= "timesProspected" then
Vynn@0 45 averageReturn = averageReturn + PM_ItemTable[itemID].price * num
Vynn@0 46 end
Vynn@0 47 end
Vynn@0 48 averageReturn = averageReturn/PM_ResultsTable[containerID].timesProspected
Vynn@0 49 end
Vynn@0 50 return tonumber(string.format("%.0f", averageReturn))
Vynn@0 51 end
Vynn@0 52
Vynn@0 53 local cleared = true
Vynn@0 54 local function OnTooltipCleared(self)
Vynn@0 55 cleared = true
Vynn@0 56 end
Vynn@0 57
Vynn@0 58 local function OnTooltipSetItem(self)
Vynn@0 59 if cleared then
Vynn@0 60 local name, tooltipLink = self:GetItem()
Vynn@0 61 if tooltipLink then
Vynn@0 62 local item = tooltipLink:match("Hitem:(%d+)")
Vynn@0 63 if PM_ResultsTable[item] then
mischivin@13 64 local lifetimeReturn = PM_GetReturn(item)
Vynn@0 65 --NumofEachQuality, Percent of Each Quality
Vynn@0 66 self:AddLine(" ")
Vynn@0 67 self:AddLine("Prospect Me",0.5,1,0.5)
mischivin@20 68 -- Subclass Detection is broken in Legion - may need to hard-code this or find another way of getting locatlizes subclass names.
Vynn@0 69 if PM_ItemTable[item].subclass == PM_ORESUBCLASS then
Vynn@0 70 self:AddLine("Times Prospected: " .. PM_ResultsTable[item].timesProspected)
Vynn@0 71 self:AddDoubleLine("Cost to Prospect: " .. PM_FormatPrice(5 * PM_ItemTable[item].price), " Average Return: " .. PM_FormatPrice(PM_GetReturn(item)))
Vynn@0 72 elseif PM_ItemTable[item].subclass == PM_HERBSUBCLASS then
Vynn@0 73 self:AddLine("Times Milled: " .. PM_ResultsTable[item].timesProspected)
Vynn@0 74 self:AddDoubleLine("Cost to Mill: " .. PM_FormatPrice(5 * PM_ItemTable[item].price), " Average Return: " .. PM_FormatPrice(PM_GetReturn(item)))
Vynn@0 75
Vynn@0 76 end
mischivin@13 77 if lifetimeReturn-(5 * PM_ItemTable[item].price) > 0 then
mischivin@13 78 self:AddLine("Estimated Profit: " .. PM_FormatPrice(lifetimeReturn-(5 * PM_ItemTable[item].price)))
Vynn@0 79 self:AddLine(" ")
Vynn@0 80 else
Vynn@0 81 self:AddLine("No profit to be made",1,0,0)
Vynn@0 82 self:AddLine(" ")
Vynn@0 83 end
Vynn@0 84 if PM_Config.results then
Vynn@0 85 local t
Vynn@0 86 if IsAltKeyDown() == PM_Config.session then
Vynn@0 87 t = PM_ResultsTable
Vynn@0 88 self:AddDoubleLine("Lifetime Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5)
Vynn@0 89 else
Vynn@0 90 t = PM_SessionTable
Vynn@0 91 self:AddDoubleLine("Session Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5)
Vynn@0 92 end
Vynn@0 93 if t[item] then
Vynn@0 94 for q = 7, 0, -1 do
Vynn@0 95 for result, num in pairs(t[item]) do
Vynn@0 96 if result ~= "timesProspected" and PM_ItemTable[result].quality == q and PM_Config.qualities[q] then
Vynn@0 97 local p, n = "", ""
Vynn@0 98 if PM_Config.percent then
Vynn@0 99 p = num/t[item].timesProspected*100
Vynn@0 100 if p < 10 then
Vynn@0 101 p = string.format("[%.1f%%]", p)
Vynn@0 102 else
Vynn@0 103 p = string.format("[%.0f%%]", p)
Vynn@0 104 end
Vynn@0 105 else
Vynn@0 106 p = ""
Vynn@0 107 end
Vynn@0 108 if PM_Config.number then
Vynn@0 109 n = "[" .. num .. "]"
Vynn@0 110 else
Vynn@0 111 n = ""
Vynn@0 112 end
Vynn@0 113 self:AddDoubleLine(p .. PM_ItemTable[result].link .. n, PM_FormatPrice(PM_ItemTable[result].price))
Vynn@0 114 end
Vynn@0 115 end
Vynn@0 116 end
Vynn@0 117 end
Vynn@0 118 self:AddLine(" ")
Vynn@0 119 end
Vynn@0 120 end
Vynn@0 121 cleared = true
Vynn@0 122 end
Vynn@0 123 end
Vynn@0 124 end
Vynn@0 125
Vynn@0 126 GameTooltip:HookScript("OnTooltipCleared", OnTooltipCleared)
Vynn@0 127 GameTooltip:HookScript("OnTooltipSetItem", OnTooltipSetItem)