You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
187 lines
6.0 KiB
187 lines
6.0 KiB
-- ------------------------------------------------------------------------------ -- |
|
-- TradeSkillMaster_Auctioning -- |
|
-- http://www.curse.com/addons/wow/tradeskillmaster_auctioning -- |
|
-- -- |
|
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) -- |
|
-- All Rights Reserved* - Detailed license information included with addon. -- |
|
-- ------------------------------------------------------------------------------ -- |
|
|
|
local TSM = select(2, ...) |
|
TSM = LibStub("AceAddon-3.0"):NewAddon(TSM, "TSM_Auctioning", "AceEvent-3.0", "AceConsole-3.0") |
|
TSM.status = {} |
|
local AceGUI = LibStub("AceGUI-3.0") |
|
|
|
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Auctioning") -- loads the localization table |
|
TSM.operationLookup = {} |
|
TSM.operationNameLookup = {} |
|
|
|
|
|
local savedDBDefaults = { |
|
profile = { |
|
}, |
|
global = { |
|
optionsTreeStatus = {}, |
|
scanCompleteSound = 1, |
|
cancelWithBid = false, |
|
matchWhitelist = true, |
|
roundNormalPrice = false, |
|
disableInvalidMsg = false, |
|
defaultOperationTab = 1, |
|
priceColumn = 1, |
|
tooltip = true, |
|
}, |
|
factionrealm = { |
|
player = {}, |
|
whitelist = {}, |
|
lastSoldFilter = 0, |
|
}, |
|
} |
|
|
|
-- Addon loaded |
|
function TSM:OnInitialize() |
|
-- load the savedDB into TSM.db |
|
TSM.db = LibStub:GetLibrary("AceDB-3.0"):New("TradeSkillMaster_AuctioningDB", savedDBDefaults, true) |
|
|
|
for name, module in pairs(TSM.modules) do |
|
TSM[name] = module |
|
end |
|
|
|
-- Add this character to the alt list so it's not undercut by the player |
|
TSM.db.factionrealm.player[UnitName("player")] = true |
|
|
|
-- register this module with TSM |
|
TSM:RegisterModule() |
|
|
|
-- clear out 1.x settings |
|
if TSM.db.profile.groups then |
|
for _, profile in ipairs(TSM.db:GetProfiles()) do |
|
TSM.db:SetProfile(profile) |
|
TSM.db:ResetProfile() |
|
end |
|
end |
|
|
|
for _ in TSMAPI:GetTSMProfileIterator() do |
|
for _, operation in pairs(TSM.operations) do |
|
operation.resetMaxInventory = operation.resetMaxInventory or TSM.operationDefaults.resetMaxInventory |
|
operation.aboveMax = operation.aboveMax or TSM.operationDefaults.aboveMax |
|
operation.keepQuantity = operation.keepQuantity or TSM.operationDefaults.keepQuantity |
|
end |
|
end |
|
end |
|
|
|
-- registers this module with TSM by first setting all fields and then calling TSMAPI:NewModule(). |
|
function TSM:RegisterModule() |
|
TSM.operations = { maxOperations = 5, callbackOptions = "Options:Load", callbackInfo = "GetOperationInfo" } |
|
TSM.auctionTab = { callbackShow = "GUI:ShowSelectionFrame", callbackHide = "GUI:HideSelectionFrame" } |
|
TSM.bankUiButton = { callback = "Util:createTab" } |
|
TSM.tooltipOptions = { callback = "Options:LoadTooltipOptions" } |
|
|
|
TSMAPI:NewModule(TSM) |
|
end |
|
|
|
function TSM:GetOperationInfo(operationName) |
|
TSMAPI:UpdateOperation("Auctioning", operationName) |
|
local operation = TSM.operations[operationName] |
|
if not operation then return end |
|
local parts = {} |
|
|
|
-- get the post string |
|
if operation.postCap == 0 then |
|
tinsert(parts, L["No posting."]) |
|
else |
|
tinsert(parts, format(L["Posting %d stack(s) of %d for %d hours."], operation.postCap, operation.stackSize, operation.duration)) |
|
end |
|
|
|
-- get the cancel string |
|
if operation.cancelUndercut and operation.cancelRepost then |
|
tinsert(parts, format(L["Canceling undercut auctions and to repost higher."])) |
|
elseif operation.cancelUndercut then |
|
tinsert(parts, format(L["Canceling undercut auctions."])) |
|
elseif operation.cancelRepost then |
|
tinsert(parts, format(L["Canceling to repost higher."])) |
|
else |
|
tinsert(parts, L["Not canceling."]) |
|
end |
|
|
|
-- get the reset string |
|
if operation.resetEnabled then |
|
tinsert(parts, L["Resetting enabled."]) |
|
else |
|
tinsert(parts, L["Not resetting."]) |
|
end |
|
return table.concat(parts, " ") |
|
end |
|
|
|
TSM.operationDefaults = { |
|
-- general |
|
matchStackSize = nil, |
|
ignoreLowDuration = 0, |
|
ignorePlayer = {}, |
|
ignoreFactionrealm = {}, |
|
relationships = {}, |
|
-- post |
|
stackSize = 1, |
|
stackSizeIsCap = nil, |
|
postCap = 1, |
|
keepQuantity = 0, |
|
duration = 24, |
|
bidPercent = 1, |
|
undercut = 1, |
|
minPrice = 50000, |
|
maxPrice = 5000000, |
|
normalPrice = 1000000, |
|
priceReset = "none", |
|
aboveMax = "normalPrice", |
|
-- cancel |
|
cancelUndercut = true, |
|
keepPosted = 0, |
|
cancelRepost = true, |
|
cancelRepostThreshold = 10000, |
|
-- reset |
|
resetEnabled = nil, |
|
resetMaxQuantity = 5, |
|
resetMaxInventory = 10, |
|
resetMaxCost = 500000, |
|
resetMinProfit = 500000, |
|
resetResolution = 100, |
|
resetMaxItemCost = 1000000, |
|
} |
|
|
|
function TSM:GetTooltip(itemString) |
|
if not TSM.db.global.tooltip then return end |
|
local text = {} |
|
local moneyCoinsTooltip = TSMAPI:GetMoneyCoinsTooltip() |
|
itemString = TSMAPI:GetBaseItemString(itemString, true) |
|
local operations = TSMAPI:GetItemOperation(itemString, "Auctioning") |
|
if not operations or not operations[1] or not TSM.operations[operations[1]] then return end |
|
|
|
TSMAPI:UpdateOperation("Auctioning", operations[1]) |
|
local prices = TSM.Util:GetItemPrices(TSM.operations[operations[1]], itemString) |
|
if prices then |
|
local minPrice, normPrice, maxPrice |
|
if moneyCoinsTooltip then |
|
minPrice = (TSMAPI:FormatTextMoneyIcon(prices.minPrice, "|cffffffff") or "|cffffffff---|r") |
|
normPrice = (TSMAPI:FormatTextMoneyIcon(prices.normalPrice, "|cffffffff") or "|cffffffff---|r") |
|
maxPrice = (TSMAPI:FormatTextMoneyIcon(prices.maxPrice, "|cffffffff") or "|cffffffff---|r") |
|
else |
|
minPrice = (TSMAPI:FormatTextMoney(prices.minPrice, "|cffffffff") or "|cffffffff---|r") |
|
normPrice = (TSMAPI:FormatTextMoney(prices.normalPrice, "|cffffffff") or "|cffffffff---|r") |
|
maxPrice = (TSMAPI:FormatTextMoney(prices.maxPrice, "|cffffffff") or "|cffffffff---|r") |
|
end |
|
tinsert(text, { left = " " .. L["Auctioning Prices:"], right = format(L["Min (%s), Normal (%s), Max (%s)"], minPrice, normPrice, maxPrice) }) |
|
end |
|
|
|
if #text > 0 then |
|
tinsert(text, 1, "|cffffff00" .. "TSM Auctioning:") |
|
return text |
|
end |
|
end |
|
|
|
function TSM:GetAuctionPlayer(player, player_full) |
|
local realm = GetRealmName() or "" |
|
if player_full and strjoin("-", player, realm) ~= player_full then |
|
return player_full |
|
else |
|
return player |
|
end |
|
end |