vanilla-wow-addons – Rev 1
?pathlinks?
--[[
Auctioneer Addon for World of Warcraft(tm).
Version: 3.9.0.1000 (Kangaroo)
Revision: $Id: AucTooltip.lua 874 2006-05-21 20:36:12Z mentalpower $
Auctioneer tooltip functions.
Functions to present and draw the tooltips.
License:
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program(see GPL.txt); if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
]]
--Local function prototypes
local hookTooltip
function hookTooltip(funcVars, retVal, frame, name, link, quality, count)
EnhTooltip.DebugPrint("Displaying "..name)
if (not link) then EnhTooltip.DebugPrint("No link was passed to the client"); return; end
-- nothing to do, if auctioneer is disabled
if (not Auctioneer.Command.GetFilter("all")) then
return;
end;
if EnhTooltip.LinkType(link) ~= "item" then return end
local auctKey = Auctioneer.Util.GetAuctionKey();
-- initialize local variables
local itemID, randomProp, enchant, uniqID, lame = EnhTooltip.BreakLink(link);
local itemKey = itemID..":"..randomProp..":"..enchant;
local embedded = Auctioneer.Command.GetFilter('embed');
-- OUTPUT: seperator line
if (embedded) then
if (Auctioneer.Command.GetFilter('show-embed-blankline')) then
EnhTooltip.AddLine(" ", nil, embedded);
end
else
EnhTooltip.AddLine(name, nil, embedded);
EnhTooltip.LineQuality(quality);
end
if (Auctioneer.Command.GetFilter('show-link')) then
-- OUTPUT: show item link
EnhTooltip.AddLine("Link: " .. itemID .. ":" .. enchant .. ":" .. randomProp .. ":" .. uniqID, nil, embedded);
EnhTooltip.LineQuality(quality);
end
local itemInfo = nil;
-- show item info
if (itemID > 0) then
frame.eDone = 1;
local auctionPriceItem = Auctioneer.Core.GetAuctionPriceItem(itemKey, auctKey);
local aCount,minCount,minPrice,bidCount,bidPrice,buyCount,buyPrice = Auctioneer.Core.GetAuctionPrices(auctionPriceItem.data);
-- show auction info
if (aCount == 0) then
-- OUTPUT: "Never seen at auction"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoNever'), _AUCT('TextAuction')), nil, embedded);
EnhTooltip.LineColor(0.5, 0.8, 0.5);
else -- (aCount > 0)
-- calculate auction values
local avgMin = math.floor(minPrice / minCount);
local bidPct = math.floor(bidCount / minCount * 100);
local avgBid = 0;
if (bidCount > 0) then
avgBid = math.floor(bidPrice / bidCount);
end
local buyPct = math.floor(buyCount / minCount * 100);
local avgBuy = 0;
if (buyCount > 0) then
avgBuy = math.floor(buyPrice / buyCount);
end
local median, medCount = Auctioneer.Statistic.GetUsableMedian(itemKey, auctKey);
if (Auctioneer.Command.GetFilter('show-average')) then -- show item's average auction price
-- OUTPUT: "Seen [aCount] times at auction total"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoSeen'), aCount), nil, embedded);
EnhTooltip.LineColor(0.5,0.8,0.1);
if (not Auctioneer.Command.GetFilter('show-verbose')) then -- default mode
-- OUTPUT: "[avgMin] min/[avgBuy] BO ([avgBid] bid)"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoAverage'), EnhTooltip.GetTextGSC(avgMin), EnhTooltip.GetTextGSC(avgBuy), EnhTooltip.GetTextGSC(avgBid)), nil, embedded);
EnhTooltip.LineColor(0.1,0.8,0.5);
else -- verbose mode
if (count > 1) then
-- OUTPUT: "Averages for [count] items:"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoHeadMulti'), count), nil, embedded);
EnhTooltip.LineColor(0.4,0.5,1.0);
-- OUTPUT: " Minimum ([avgMin] ea)"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoMinMulti'), EnhTooltip.GetTextGSC(avgMin)), avgMin*count, embedded);
EnhTooltip.LineColor(0.4,0.5,0.8);
if (Auctioneer.Command.GetFilter('show-stats')) then -- show buyout/bidded percentages
-- OUTPUT: " Bidded ([bidPct]%, [avgBid] ea)"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoBidMulti'), bidPct.."%, ", EnhTooltip.GetTextGSC(avgBid)), avgBid*count, embedded);
EnhTooltip.LineColor(0.4,0.5,0.85);
-- OUTPUT: " Buyout ([buyPct]%, [avgBuy] ea)"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoBuyMulti'), buyPct.."%, ", EnhTooltip.GetTextGSC(avgBuy)), avgBuy*count, embedded);
EnhTooltip.LineColor(0.4,0.5,0.9);
else -- don't show buyout/bidded percentages
-- OUTPUT: " Bidded ([avgBid] ea)"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoBidMulti'), "", EnhTooltip.GetTextGSC(avgBid)), avgBid*count, embedded);
EnhTooltip.LineColor(0.4,0.5,0.85);
-- OUTPUT: " Buyout ([avgBuy] ea)"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoBuyMulti'), "", EnhTooltip.GetTextGSC(avgBuy)), avgBuy*count, embedded);
EnhTooltip.LineColor(0.4,0.5,0.9);
end
if (median) then
-- OUTPUT: " Buyout median"
EnhTooltip.AddLine(_AUCT('FrmtInfoBuymedian'), median * count, embedded);
EnhTooltip.LineColor(0.4,0.5,0.95);
end
else -- (count = 0 | 1)
-- OUTPUT: "Averages for this item:"
EnhTooltip.AddLine(_AUCT('FrmtInfoHeadOne'), nil, embedded);
EnhTooltip.LineColor(0.4,0.5,1.0);
-- OUTPUT: " Minimum bid"
EnhTooltip.AddLine(_AUCT('FrmtInfoMinOne'), avgMin, embedded);
EnhTooltip.LineColor(0.4,0.5,0.8);
if (Auctioneer.Command.GetFilter('show-stats')) then -- show buyout/bidded percentages
-- OUTPUT: " Bidded [bidPct]%"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoBidOne'), " "..bidPct.."%"), avgBid, embedded);
EnhTooltip.LineColor(0.4,0.5,0.85);
-- OUTPUT: " Buyout [buyPct]%"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoBuyOne'), " "..buyPct.."%"), avgBuy, embedded);
EnhTooltip.LineColor(0.4,0.5,0.9);
else -- don't show buyout/bidded percentages
-- OUTPUT: " Bidded [bidPct]%"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoBidOne'), ""), avgBid, embedded);
EnhTooltip.LineColor(0.4,0.5,0.85);
-- OUTPUT: " Buyout [buyPct]%"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoBuyOne'), ""), avgBuy, embedded);
EnhTooltip.LineColor(0.4,0.5,0.9);
end
if (median) then
-- OUTPUT: " Buyout median"
EnhTooltip.AddLine(_AUCT('FrmtInfoBuymedian'), median, embedded);
EnhTooltip.LineColor(0.4,0.5,0.95);
end
end
end
if median and Auctioneer.Command.GetFilter('show-median') then -- show item's median buyout price
local historicalMedian, historicalMedCount = Auctioneer.Statistic.GetItemHistoricalMedianBuyout(itemKey, auctKey);
local snapshotMedian, snapshotMedCount = Auctioneer.Statistic.GetItemSnapshotMedianBuyout(itemKey, auctKey);
if historicalMedian and historicalMedCount > Auctioneer.Util.NullSafe(snapshotMedCount) then
-- OUTPUT: "Last [historicalMedCount], median BO (ea)"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoHistmed'), historicalMedCount), historicalMedian, embedded)
EnhTooltip.LineColor(0.1,0.8,0.5);
end
if snapshotMedian then
-- OUTPUT: "Scanned [snapshotMedCount], median BO (ea)"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoSnapmed'), snapshotMedCount), snapshotMedian, embedded)
EnhTooltip.LineColor(0.1,0.8,0.5);
end
end
end -- if(Auctioneer.Command.GetFilter('show-average')) - show item's average auction price
-- seperate line for suggested auction price (for clarification, even if the values have already been shown somewhere else
if (Auctioneer.Command.GetFilter('show-suggest')) then -- show item's suggested auction price
local hsp, histCount, market, warn, nexthsp, nextwarn = Auctioneer.Statistic.GetHSP(itemKey, auctKey);
if hsp == 0 and buyCount > 0 then
hsp = math.floor(buyPrice / buyCount); -- use mean buyout if median not available
end
local discountBidPercent = tonumber(Auctioneer.Command.GetFilterVal('pct-bidmarkdown'));
local countFix = count
if countFix == 0 then
countFix = 1
end
local buyPrice = Auctioneer.Statistic.RoundDownTo95(Auctioneer.Util.NullSafe(hsp) * countFix);
local bidPrice = Auctioneer.Statistic.RoundDownTo95(Auctioneer.Statistic.SubtractPercent(buyPrice, discountBidPercent));
if (count > 1) then
-- OUTPUT: "Suggested price for your [count] stack: [bidPrice] min/[buyPrice] BO"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoSgststx'), count, EnhTooltip.GetTextGSC(bidPrice, true), EnhTooltip.GetTextGSC(buyPrice, true)), nil, embedded);
EnhTooltip.LineColor(0.5,0.5,0.8);
else -- count = 0 | 1
-- OUTPUT: "Suggested price: [bidPrice] min/[buyPrice] BO"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoSgst'), EnhTooltip.GetTextGSC(bidPrice, true), EnhTooltip.GetTextGSC(buyPrice, true)), nil, embedded);
EnhTooltip.LineColor(0.5,0.5,0.8);
end
EnhTooltip.AddLine(warn, nil, embedded);
local cHex, cRed, cGreen, cBlue = Auctioneer.Util.GetWarnColor(warn);
EnhTooltip.LineColor(cRed, cGreen, cBlue);
end
if (not Auctioneer.Command.GetFilter('show-verbose')) then
if (Auctioneer.Command.GetFilter('show-stats')) then -- show buyout/bidded percentages
-- OUTPUT: "[bidPct]% have bid, [buyPct]% have BO"
EnhTooltip.AddLine(string.format(_AUCT('FrmtInfoBidrate'), bidPct, buyPct), nil, embedded);
EnhTooltip.LineColor(0.1,0.5,0.8);
end
end
end -- (aCount > 0)
local also = Auctioneer.Command.GetFilterVal("also");
if (Auctioneer.Util.IsValidAlso(also)) and (also ~= "off") then
if (also == "opposite") then
also = Auctioneer.Util.GetOppositeKey();
elseif (also == "neutral") then
also = Auctioneer.Util.GetNeutralKey();
elseif (also == "home") then
also = Auctioneer.Util.GetHomeKey();
end
if (also == auctKey) then return end;
local auctionPriceItem = Auctioneer.Core.GetAuctionPriceItem(itemKey, also);
local aCount,minCount,minPrice,bidCount,bidPrice,buyCount,buyPrice = Auctioneer.Core.GetAuctionPrices(auctionPriceItem.data);
if (aCount == 0) then
EnhTooltip.AddLine(string.format(">> ".._AUCT('FrmtInfoNever'), also), nil, embedded);
EnhTooltip.LineColor(0.5,0.8,0.1);
else
-- calculate auction values
local avgMin = math.floor(minPrice / minCount);
local bidPct = math.floor(bidCount / minCount * 100);
local avgBid = 0;
if (bidCount > 0) then
avgBid = math.floor(bidPrice / bidCount);
end
local buyPct = math.floor(buyCount / minCount * 100);
local avgBuy = 0;
if (buyCount > 0) then
avgBuy = math.floor(buyPrice / buyCount);
end
if (Auctioneer.Command.GetFilter('show-average')) then
EnhTooltip.AddLine(string.format(">> ".._AUCT('FrmtInfoAlsoseen'), aCount, also), nil, embedded);
EnhTooltip.LineColor(0.5,0.8,0.1);
EnhTooltip.AddLine(string.format(">> ".._AUCT('FrmtInfoAverage'), EnhTooltip.GetTextGSC(avgMin), EnhTooltip.GetTextGSC(avgBuy), EnhTooltip.GetTextGSC(avgBid)), nil, embedded);
EnhTooltip.LineColor(0.1,0.8,0.5);
end
if (Auctioneer.Command.GetFilter('show-stats')) then
EnhTooltip.AddLine(string.format(">> ".._AUCT('FrmtInfoBidrate'), bidPct, buyPct), nil, embedded);
EnhTooltip.LineColor(0.1,0.5,0.8);
end
-- seperate line for suggested auction price (for clarification, even if the values have already been shown somewhere else
if (Auctioneer.Command.GetFilter('show-suggest')) then -- show item's suggested auction price
local hsp, histCount, market, warn, nexthsp, nextwarn = Auctioneer.Statistic.GetHSP(itemKey, also);
if hsp == 0 and buyCount > 0 then
hsp = math.floor(buyPrice / buyCount); -- use mean buyout if median not available
end
local discountBidPercent = tonumber(Auctioneer.Command.GetFilterVal('pct-bidmarkdown'));
local countFix = count
if countFix == 0 then
countFix = 1
end
local buyPrice = Auctioneer.Statistic.RoundDownTo95(Auctioneer.Util.NullSafe(hsp) * countFix);
local bidPrice = Auctioneer.Statistic.RoundDownTo95(Auctioneer.Statistic.SubtractPercent(buyPrice, discountBidPercent));
if (count > 1) then
-- OUTPUT: "Suggested price for your [count] stack: [bidPrice] min/[buyPrice] BO"
EnhTooltip.AddLine(string.format(">> ".._AUCT('FrmtInfoSgststx'), count, EnhTooltip.GetTextGSC(bidPrice, true), EnhTooltip.GetTextGSC(buyPrice, true)), nil, embedded);
EnhTooltip.LineColor(0.5,0.5,0.8);
else -- count = 0 | 1
-- OUTPUT: "Suggested price: [bidPrice] min/[buyPrice] BO"
EnhTooltip.AddLine(string.format(">> ".._AUCT('FrmtInfoSgst'), EnhTooltip.GetTextGSC(bidPrice, true), EnhTooltip.GetTextGSC(buyPrice, true)), nil, embedded);
EnhTooltip.LineColor(0.5,0.5,0.8);
end
EnhTooltip.AddLine(">> "..warn, nil, embedded);
local cHex, cRed, cGreen, cBlue = Auctioneer.Util.GetWarnColor(warn);
EnhTooltip.LineColor(cRed, cGreen, cBlue);
end
end
end
end
end
Auctioneer.Tooltip = {
HookTooltip = hookTooltip,
}