diff Modules/ProspectMe_Tooltip.lua @ 60:155fa49865f2 v2.7.1.2-Alpha

Changed directory structure around to clean it up a bit.
author Vynn <mischivin@gmail.com>
date Mon, 28 Nov 2016 12:28:35 -0500
parents ProspectMe_Tooltip.lua@f9b6c0305908
children 58d886030d65
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Modules/ProspectMe_Tooltip.lua	Mon Nov 28 12:28:35 2016 -0500
@@ -0,0 +1,198 @@
+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 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(" ")
+				local color
+				if ProspectMe.Results[item].TimesProspected < 100 then
+					color = "|cffff0000"
+				elseif ProspectMe.Results[item].TimesProspected < 200 then
+					color = "|cffffff00"
+				else
+					color = "|cff00ff00"
+				end
+				
+				-- 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
+					skilltext = "Processed"
+				end
+				self:AddDoubleLine("Prospect Me","Times " .. skilltext .. ":  " .. color .. ProspectMe.Results[item].TimesProspected,1,0.82,0,1,1,1)
+				self:AddLine(" ")
+				
+				-- Economics Text Block
+				if ProspectMe.Config.ShowEconomics then
+					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 < 15 then
+						color = "|cffff0000"
+					elseif margin < 30 then
+						color = "|cffffff00"
+					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(" ")
+				end
+				
+				-- Results Text Block
+				local quals = ProspectMe.Config.ShowQualities
+				if quals.Junk or quals.Common or quals.Uncommon or quals.Rare or quals.Epic then
+					local hint = true
+					local tab
+					if IsAltKeyDown() == ProspectMe.Config.PerSession then
+						tab = ProspectMe.Results
+						self:AddDoubleLine("Lifetime Results","Hold Alt to display",1,0.82,0,0.5,0.5,0.5)
+					else
+						tab = ProspectMe.Session
+						self:AddDoubleLine("Session Results","Hold Alt to display",1,0.82,0,0.5,0.5,0.5)
+					end
+					if tab[item] then
+						for q = 7, 0, -1 do
+							for result, num in pairs(tab[item]) do 
+								if result ~= "TimesProspected" and select(3, GetItemInfo(result)) == q and ProspectMe.Config.ShowQualities[Quality[q]] then
+									hint = false
+									local p, n = "", ""
+									if ProspectMe.Config.ShowPercent then
+										p = num/tab[item].TimesProspected*100
+										if p < 10 then
+											p = string.format("|cffffffff[%.1f%%] ", p)
+										else
+											p = string.format("|cffffffff[%.0f%%] ", p)
+										end
+									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
+					end
+					if hint then
+						if spellid == 225902 or spellid == 225904 or subclass == ProspectMe.Vars.ORE then
+							self:AddLine("|cffffffffTry Prospecting some ore to see your results!")
+						elseif spellid == 210116 or subclass == ProspectMe.Vars.HERB then
+							self:AddLine("|cffffffffTry Milling some plants to see your results!")
+						else
+							self:Addline("|cffffffffTry processing some material to see your results!")
+						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)
\ No newline at end of file