Mercurial > wow > prospect-me
diff ProspectMe_Tooltip.lua @ 49:9dae86337a41
Merge Prospect Me v2 Branch to default
author | Vynn <mischivin@gmail.com> |
---|---|
date | Thu, 17 Nov 2016 16:24:48 -0500 |
parents | a2fc078e4d70 |
children | 73a564278360 |
line wrap: on
line diff
--- a/ProspectMe_Tooltip.lua Thu Oct 27 12:51:54 2016 -0400 +++ b/ProspectMe_Tooltip.lua Thu Nov 17 16:24:48 2016 -0500 @@ -1,53 +1,50 @@ ---PM_HERBSUBCLASS = select(6, GetAuctionItemSubClasses(6)) ---PM_ORESUBCLASS = select(4, GetAuctionItemSubClasses(6)) +local Quality = { [0] = "Junk", [1]= "Common", [2] = "Uncommon", [3] = "Rare", [4] = "Epic", } ---Hardcoded until I find a better solution now that GetAuctionItemSubClass() has changed -PM_HERBSUBCLASS = "Herb" -PM_ORESUBCLASS = "Metal & Stone" +local function Initialize() + ProspectMe.FormatPrice = function (value) -function PM_FormatPrice(value) + local GSC_GOLD="ffffd100" + local GSC_SILVER="ffe6e6e6" + local GSC_COPPER="ffc8602c" - local GSC_GOLD="ffffd100" - local GSC_SILVER="ffe6e6e6" - local GSC_COPPER="ffc8602c" + local g, s, c + local digits = 0 + local gsc - local g, s, c - local digits = 0 - local gsc + g = math.floor(value/10000) + s = math.fmod(math.floor(value/100),100) + c = math.fmod(value,100) - g = math.floor(value/10000) - s = math.fmod(math.floor(value/100),100) - c = math.fmod(value,100) + digits = math.floor(math.log10(value)+1) - digits = math.floor(math.log10(value)+1) + if ( digits < 3 ) then + gsc = string.format(" |c%s%2d|r", GSC_COPPER, c) + elseif ( digits < 5 ) then + gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_SILVER, s, GSC_COPPER, c) + elseif ( digits < 7 ) then + gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_GOLD, g, GSC_SILVER, s) + elseif ( digits < 9 ) then + gsc = string.format("|c%s%5d|r", GSC_GOLD, g) + else + gsc = string.format("|c%s%2.1fk|r", GSC_GOLD, g/1000) + end - if ( digits < 3 ) then - gsc = string.format(" |c%s%2d|r", GSC_COPPER, c) - elseif ( digits < 5 ) then - gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_SILVER, s, GSC_COPPER, c) - elseif ( digits < 7 ) then - gsc = string.format("|c%s%2d|r |c%s%02d|r", GSC_GOLD, g, GSC_SILVER, s) - elseif ( digits < 9 ) then - gsc = string.format("|c%s%5d|r", GSC_GOLD, g) - else - gsc = string.format("|c%s%2.1fk|r", GSC_GOLD, g/1000) + return gsc end - return gsc -end - -function PM_GetReturn(containerID) - local averageReturn = 0 - if PM_ResultsTable[containerID].timesProspected > 0 then - for itemID, num in pairs(PM_ResultsTable[containerID]) do - if itemID ~= "timesProspected" then - averageReturn = averageReturn + PM_ItemTable[itemID].price * num + ProspectMe.GetReturn = function (containerID) + local averageReturn = 0 + if ProspectMe.Results[containerID].TimesProspected > 0 then + for itemID, num in pairs(ProspectMe.Results[containerID]) do + if itemID ~= "TimesProspected" then + averageReturn = averageReturn + ProspectMe.GetItemValue(itemID) * num + end end + averageReturn = averageReturn/ProspectMe.Results[containerID].TimesProspected end - averageReturn = averageReturn/PM_ResultsTable[containerID].timesProspected + return tonumber(string.format("%.0f", averageReturn)) end - return tonumber(string.format("%.0f", averageReturn)) end local cleared = true @@ -57,65 +54,115 @@ local function OnTooltipSetItem(self) if cleared then - local name, tooltipLink = self:GetItem() - if tooltipLink then - local item = tooltipLink:match("Hitem:(%d+)") - if PM_ResultsTable[item] then - local lifetimeReturn = PM_GetReturn(item) + local tooltipLink = select(2, self:GetItem()) + local spellid = select(3, self:GetSpell()) + local item = nil + if spellid == 225902 then + item = 123918 + elseif spellid == 225904 then + item = 123919 + elseif spellid == 210116 then + item = 128304 + elseif tooltipLink then + item = tonumber(tooltipLink:match("Hitem:(%d+)")) + spellid = nil + else + item = nil + spellid = nil + end + if item then + if ProspectMe.Results[item] then + local price = ProspectMe.GetItemValue(item) + local lifetimeReturn = ProspectMe.GetReturn(item) + local subclass = select(7,GetItemInfo(item)) + local ctp = price * 5 --NumofEachQuality, Percent of Each Quality self:AddLine(" ") - self:AddLine("Prospect Me",0.5,1,0.5) - -- Subclass Detection is broken in Legion - may need to hard-code this or find another way of getting locatlizes subclass names. - if PM_ItemTable[item].subclass == PM_ORESUBCLASS then - self:AddLine("Times Prospected: " .. PM_ResultsTable[item].timesProspected) - self:AddDoubleLine("Cost to Prospect: " .. PM_FormatPrice(5 * PM_ItemTable[item].price), " Average Return: " .. PM_FormatPrice(PM_GetReturn(item))) - elseif PM_ItemTable[item].subclass == PM_HERBSUBCLASS then - self:AddLine("Times Milled: " .. PM_ResultsTable[item].timesProspected) - self:AddDoubleLine("Cost to Mill: " .. PM_FormatPrice(5 * PM_ItemTable[item].price), " Average Return: " .. PM_FormatPrice(PM_GetReturn(item))) - + local color + if ProspectMe.Results[item].TimesProspected < 100 then + color = "|cffff0000" + elseif ProspectMe.Results[item].TimesProspected < 200 then + color = "|cffffff00" + else + color = "|cff00ff00" end - if lifetimeReturn-(5 * PM_ItemTable[item].price) > 0 then - self:AddLine("Estimated Profit: " .. PM_FormatPrice(lifetimeReturn-(5 * PM_ItemTable[item].price))) - self:AddLine(" ") + + -- SKill Text Block "" + local skilltext + if spellid == 225902 or spellid == 225904 or subclass == ProspectMe.Vars.ORE then + skilltext = "Prospected" + elseif spellid == 210116 or subclass == ProspectMe.Vars.HERB then + skilltext = "Milled" else - self:AddLine("No profit to be made",1,0,0) - self:AddLine(" ") + skilltext = "Processed" end - if PM_Config.results then - local t - if IsAltKeyDown() == PM_Config.session then - t = PM_ResultsTable - self:AddDoubleLine("Lifetime Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5) - else - t = PM_SessionTable - self:AddDoubleLine("Session Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5) - end - if t[item] then - for q = 7, 0, -1 do - for result, num in pairs(t[item]) do - if result ~= "timesProspected" and PM_ItemTable[result].quality == q and PM_Config.qualities[q] then - local p, n = "", "" - if PM_Config.percent then - p = num/t[item].timesProspected*100 - if p < 10 then - p = string.format("[%.1f%%]", p) - else - p = string.format("[%.0f%%]", p) - end + self:AddDoubleLine("Prospect Me","Times " .. skilltext .. ": " .. color .. ProspectMe.Results[item].TimesProspected,1,0.82,0,1,1,1) + self:AddLine(" ") + + -- Economics Text Block + local spelltext + if spellid == 225902 or spellid == 225904 then + spelltext = "Mass Prospect" + elseif spellid == 210116 then + spelltext = "Mass Mill" + elseif subclass == ProspectMe.Vars.ORE then + spelltext = "Prospect" + elseif subclass == ProspectMe.Vars.HERB then + spelltext = "Mill" + else + spelltext = "Process" + end + if spellid then + ctp = price * 20 + lifetimeReturn = lifetimeReturn * 4 + end + local profit = lifetimeReturn - ctp + local margin = (lifetimeReturn / ctp * 100) - 100 + self:AddDoubleLine("Estimated Profit: " .. ProspectMe.FormatPrice(profit), "Cost to " .. spelltext .. ": " .. ProspectMe.FormatPrice(ctp),1,1,1,1,1,1) + if margin < 30 then + color = "|cffffff00" + elseif margin < 15 then + color = "|cffff0000" + else + color = "|cff00ff00" + end + self:AddDoubleLine("Margin: " .. color .. string.format("[%.1f%%]", margin), "Average Return: " .. ProspectMe.FormatPrice(lifetimeReturn),1,1,1,1,1,1) + self:AddLine(" ") + + -- Results Text Block + local t + if IsAltKeyDown() == ProspectMe.Config.PerSession then + t = ProspectMe.Results + self:AddDoubleLine("Lifetime Results","Hold Alt to display",1,0.82,0,0.5,0.5,0.5) + else + t = ProspectMe.Session + self:AddDoubleLine("Session Results","Hold Alt to display",1,0.82,0,0.5,0.5,0.5) + end + if t[item] then + for q = 7, 0, -1 do + for result, num in pairs(t[item]) do + if result ~= "TimesProspected" and select(3, GetItemInfo(result)) == q and ProspectMe.Config.ShowQualities[Quality[q]] then + local p, n = "", "" + if ProspectMe.Config.ShowPercent then + p = num/t[item].TimesProspected*100 + if p < 10 then + p = string.format("[%.1f%%]", p) else - p = "" + p = string.format("[%.0f%%]", p) end - if PM_Config.number then - n = "[" .. num .. "]" - else - n = "" - end - self:AddDoubleLine(p .. PM_ItemTable[result].link .. n, PM_FormatPrice(PM_ItemTable[result].price)) + else + p = "" end + if ProspectMe.Config.ShowNumber then + n = "|cffffffffx" .. num + else + n = "" + end + self:AddDoubleLine(p .. select(2, GetItemInfo(result)) .. n, ProspectMe.FormatPrice(ProspectMe.GetItemValue(result))) end end end - self:AddLine(" ") + --self:AddLine(" ") end end cleared = true @@ -124,4 +171,11 @@ end GameTooltip:HookScript("OnTooltipCleared", OnTooltipCleared) -GameTooltip:HookScript("OnTooltipSetItem", OnTooltipSetItem) \ No newline at end of file +GameTooltip:HookScript("OnTooltipSetItem", OnTooltipSetItem) +ItemRefTooltip:HookScript("OnTooltipCleared", OnTooltipCleared) +ItemRefTooltip:HookScript("OnTooltipSetItem", OnTooltipSetItem) + +local frame = CreateFrame("FRAME", "ProspectMe_Value") +frame:RegisterEvent("VARIABLES_LOADED") +--frame:SetScript("OnEvent", EventHandler) +frame:SetScript("OnEvent", Initialize) \ No newline at end of file