view ProspectMe_Tooltip.lua @ 38:69c7955b75b1 Prospect Me 2

TOC update for V2, includes Migration changes.
author Vynn <mischivin@gmail.com>
date Thu, 10 Nov 2016 12:26:59 -0500
parents 5cbaaee1e7db
children b9c2260bf1b4
line wrap: on
line source
--PM_HERBSUBCLASS = select(6, GetAuctionItemSubClasses(6))
--PM_ORESUBCLASS = select(4, GetAuctionItemSubClasses(6))

local Quality = { [0] = "Junk", [1]= "Common", [2] = "Uncommon", [3] = "Rare", [4] = "Epic", }

local function Initialize()
	ProspectMe.FormatPrice = function (value)

		local GSC_GOLD="ffffd100"
		local GSC_SILVER="ffe6e6e6"
		local GSC_COPPER="ffc8602c"

		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)


		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

		return gsc
	end

	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
			return tonumber(string.format("%.0f", averageReturn))
	end
end

local cleared = true
local function OnTooltipCleared(self)
   cleared = true   
end
 
local function OnTooltipSetItem(self)
	if cleared then
		local name, tooltipLink = self:GetItem()
		if tooltipLink then
			local item = tonumber(tooltipLink:match("Hitem:(%d+)"))
			if ProspectMe.Results[item] then
				local price = ProspectMe.GetItemValue(item)
				local lifetimeReturn = ProspectMe.GetReturn(item)
				--NumofEachQuality, Percent of Each Quality
				self:AddLine(" ")
				self:AddLine("Prospect Me",0.5,1,0.5)
				self:AddLine("Times Processed: " .. ProspectMe.Results[item].TimesProspected)
				self:AddDoubleLine("Cost to Process: " .. ProspectMe.FormatPrice(5 * price), " Average Return: " .. ProspectMe.FormatPrice(lifetimeReturn))
				if lifetimeReturn-(5 * price) > 0 then
					self:AddLine("Estimated Profit: " ..ProspectMe.FormatPrice(lifetimeReturn-(5 * price)))
					self:AddLine(" ")
				else
					self:AddLine("No profit to be made",1,0,0)
					self:AddLine(" ")
				end
				local t
				if IsAltKeyDown() == ProspectMe.Config.PerSession then
					t = ProspectMe.Results
					self:AddDoubleLine("Lifetime Results","Hold/Release Alt to toggle",0.5,0.5,1,0.5,0.5,0.5)
				else
					t = ProspectMe.Session
					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 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 = string.format("[%.0f%%]", p)
									end
								else
									p = ""
								end
								if ProspectMe.Config.ShowNumber then
									n = "[" .. num .. "]"
								else
									n = ""
								end
								self:AddDoubleLine(p .. select(2, GetItemInfo(result)) .. n, ProspectMe.FormatPrice(ProspectMe.GetItemValue(result)))
							end
						end
					end
					self:AddLine(" ")
				end
			end
			cleared = true
		end
	end
end
 
GameTooltip:HookScript("OnTooltipCleared", OnTooltipCleared)
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)