|
|
|
|
@ -125,6 +125,7 @@ function TSM:RegisterModule()
|
|
|
|
|
TSM.priceSources = { |
|
|
|
|
{ key = "avgSell", label = L["Avg Sell Price"], callback = "GetAvgSellPrice" }, |
|
|
|
|
{ key = "avgBuy", label = L["Avg Buy Price"], callback = "GetAvgBuyPrice" }, |
|
|
|
|
{ key = "smartAvgBuy", label = L["Smart Avg Buy Price"], callback = "GetSmartAvgBuyPrice" }, |
|
|
|
|
{ key = "maxSell", label = L["Max Sell Price"], callback = "GetMaxSellPrice" }, |
|
|
|
|
{ key = "maxBuy", label = L["Max Buy Price"], callback = "GetMaxBuyPrice" }, |
|
|
|
|
{ key = "minSell", label = L["Min Sell Price"], callback = "GetMinSellPrice" }, |
|
|
|
|
@ -202,11 +203,19 @@ function TSM:GetTooltip(itemString)
|
|
|
|
|
else |
|
|
|
|
local avgPrice = TSM:GetAvgBuyPrice(itemString) |
|
|
|
|
local maxPrice = TSM:GetMaxBuyPrice(itemString) |
|
|
|
|
local smartAvgPrice = TSM:GetSmartAvgBuyPrice(itemString) |
|
|
|
|
if moneyCoinsTooltip then |
|
|
|
|
tinsert(text, { left = " " .. L["Purchased (Avg/Max Price):"], right = format("%s (%s / %s)", "|cffffffff" .. totalNum .. "|r", (TSMAPI:FormatTextMoneyIcon(avgPrice, "|cffffffff", true) or ("|cffffffff" .. "?")), (TSMAPI:FormatTextMoneyIcon(maxPrice, "|cffffffff", true) or ("|cffffffff" .. "?"))) }) |
|
|
|
|
else |
|
|
|
|
tinsert(text, { left = " " .. L["Purchased (Avg/Max Price):"], right = format("%s (%s / %s)", "|cffffffff" .. totalNum .. "|r", (TSMAPI:FormatTextMoney(avgPrice, "|cffffffff", true) or ("|cffffffff" .. "?")), (TSMAPI:FormatTextMoney(maxPrice, "|cffffffff", true) or ("|cffffffff" .. "?"))) }) |
|
|
|
|
end |
|
|
|
|
if smartAvgPrice then |
|
|
|
|
if moneyCoinsTooltip then |
|
|
|
|
tinsert(text, { left = " " .. L["Smart Avg Buy Price:"], right = (TSMAPI:FormatTextMoneyIcon(smartAvgPrice, "|cffffffff", true) or ("|cffffffff" .. "?")) }) |
|
|
|
|
else |
|
|
|
|
tinsert(text, { left = " " .. L["Smart Avg Buy Price:"], right = (TSMAPI:FormatTextMoney(smartAvgPrice, "|cffffffff", true) or ("|cffffffff" .. "?")) }) |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
if lastPurchased then |
|
|
|
|
local timeDiff = SecondsToTime(time() - lastPurchased) |
|
|
|
|
@ -424,12 +433,24 @@ function TSM:GetAvgSellPrice(itemString)
|
|
|
|
|
return TSM.cache[itemString].avgSellPrice, TSM.cache[itemString].avgSellNum |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
local function GetAvgerageBuyPrice(itemString, noBaseItem) |
|
|
|
|
local function GetSmartBuyItemCount(itemString) |
|
|
|
|
local player, alts = TSMAPI:ModuleAPI("ItemTracker", "playertotal", itemString) |
|
|
|
|
if not player then |
|
|
|
|
alts = nil |
|
|
|
|
end |
|
|
|
|
player = player or 0 |
|
|
|
|
alts = alts or 0 |
|
|
|
|
local guild = TSMAPI:ModuleAPI("ItemTracker", "guildtotal", itemString) or 0 |
|
|
|
|
local auctions = TSMAPI:ModuleAPI("ItemTracker", "auctionstotal", itemString) or 0 |
|
|
|
|
return player + alts + guild + auctions |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
local function GetAvgerageBuyPrice(itemString, noBaseItem, useSmart) |
|
|
|
|
if not noBaseItem and itemString and baseItemLookup[itemString] then |
|
|
|
|
local totalPrice, totalNum = 0, 0 |
|
|
|
|
for _, item in ipairs(baseItemLookup[itemString]) do |
|
|
|
|
if not baseItemLookup[item] then |
|
|
|
|
local price, num = GetAvgerageBuyPrice(item, true) |
|
|
|
|
local price, num = GetAvgerageBuyPrice(item, true, useSmart) |
|
|
|
|
if price and num and num > 0 then |
|
|
|
|
totalPrice = totalPrice + price |
|
|
|
|
totalNum = totalNum + num |
|
|
|
|
@ -443,16 +464,11 @@ local function GetAvgerageBuyPrice(itemString, noBaseItem)
|
|
|
|
|
if not (TSM.items[itemString] and #TSM.items[itemString].buys > 0) then return end |
|
|
|
|
|
|
|
|
|
local itemCount = 0 |
|
|
|
|
if TSM.db.realm.smartBuyPrice then |
|
|
|
|
local player, alts = TSMAPI:ModuleAPI("ItemTracker", "playertotal", itemString) |
|
|
|
|
if not player then |
|
|
|
|
alts = nil |
|
|
|
|
if useSmart or TSM.db.realm.smartBuyPrice then |
|
|
|
|
itemCount = GetSmartBuyItemCount(itemString) |
|
|
|
|
if useSmart and itemCount <= 0 then |
|
|
|
|
return |
|
|
|
|
end |
|
|
|
|
player = player or 0 |
|
|
|
|
alts = alts or 0 |
|
|
|
|
local guild = TSMAPI:ModuleAPI("ItemTracker", "guildtotal", itemString) or 0 |
|
|
|
|
local auctions = TSMAPI:ModuleAPI("ItemTracker", "auctionstotal", itemString) or 0 |
|
|
|
|
itemCount = player + alts + guild + auctions |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
local num, totalPrice = 0, 0 |
|
|
|
|
@ -482,6 +498,19 @@ function TSM:GetAvgBuyPrice(itemString)
|
|
|
|
|
return TSM.cache[itemString].avgBuyPrice, TSM.cache[itemString].avgBuyNum |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
function TSM:GetSmartAvgBuyPrice(itemString) |
|
|
|
|
itemString = TSMAPI:GetItemString(select(2, TSMAPI:GetSafeItemInfo(itemString))) |
|
|
|
|
if not itemString then return end |
|
|
|
|
TSM.cache[itemString] = TSM.cache[itemString] or {} |
|
|
|
|
TSM:UpdateBaseItemLookup() |
|
|
|
|
if not TSM.cache[itemString].smartAvgBuyPrice then |
|
|
|
|
local price, num = GetAvgerageBuyPrice(itemString, nil, true) |
|
|
|
|
TSM.cache[itemString].smartAvgBuyPrice = price |
|
|
|
|
TSM.cache[itemString].smartAvgBuyNum = num |
|
|
|
|
end |
|
|
|
|
return TSM.cache[itemString].smartAvgBuyPrice, TSM.cache[itemString].smartAvgBuyNum |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
function TSM:GetMaxSellPrice(itemString) |
|
|
|
|
itemString = TSMAPI:GetItemString(select(2, TSMAPI:GetSafeItemInfo(itemString))) |
|
|
|
|
if not (itemString and TSM.items[itemString] and #TSM.items[itemString].sales > 0) then return end |
|
|
|
|
|