init
This commit is contained in:
@@ -0,0 +1,116 @@
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
-- TradeSkillMaster --
|
||||
-- http://www.curse.com/addons/wow/tradeskill-master --
|
||||
-- --
|
||||
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
|
||||
-- All Rights Reserved* - Detailed license information included with addon. --
|
||||
-- ------------------------------------------------------------------------------ --
|
||||
|
||||
local TSM = select(2, ...)
|
||||
local private = {}
|
||||
TSMAPI:RegisterForTracing(private, "TradeSkillMaster.AuctionUtil_private")
|
||||
LibStub("AceEvent-3.0"):Embed(private)
|
||||
|
||||
|
||||
local eventFrame = CreateFrame("Frame")
|
||||
eventFrame:Hide()
|
||||
eventFrame.data = {}
|
||||
eventFrame.callback = function() end
|
||||
eventFrame:SetScript("OnEvent", function(self, event, ...)
|
||||
if self.interrupt and event == self.interrupt.event and self.interrupt.callback() then
|
||||
self:UnregisterAllEvents()
|
||||
self.data = {}
|
||||
end
|
||||
for i=1, #self.data do
|
||||
if self.data[i].event == event then
|
||||
if self.data[i].callback then
|
||||
if self.data[i].callback(event, ...) then
|
||||
tremove(self.data, i)
|
||||
self:UnregisterEvent(event)
|
||||
end
|
||||
else
|
||||
tremove(self.data, i)
|
||||
self:UnregisterEvent(event)
|
||||
end
|
||||
break
|
||||
end
|
||||
end
|
||||
if #self.data == 0 then
|
||||
self:Hide()
|
||||
self.callback()
|
||||
end
|
||||
end)
|
||||
|
||||
local function WaitForEvents(data, callback, interrupt)
|
||||
eventFrame.data = data
|
||||
eventFrame.callback = callback
|
||||
for i=1, #data do
|
||||
eventFrame:RegisterEvent(data[i].event)
|
||||
end
|
||||
if interrupt then
|
||||
eventFrame.interrupt = interrupt
|
||||
eventFrame:RegisterEvent(interrupt.event)
|
||||
end
|
||||
eventFrame:Show()
|
||||
end
|
||||
|
||||
function TSMAPI:CreateEventDelay(event, callback, timeout, validator)
|
||||
if not event then return end
|
||||
local eventName = "eventDelay"..random()
|
||||
if timeout then
|
||||
TSMAPI:CreateTimeDelay(eventName, timeout, function() eventFrame:Hide() end)
|
||||
callback()
|
||||
end
|
||||
|
||||
WaitForEvents({event=event, callback=validator}, function() callback() TSMAPI:CancelFrame(eventName) end)
|
||||
end
|
||||
|
||||
-- Sends the "TSM_AH_EVENTS" message once the action (buyout/bid/cancel/post)
|
||||
-- has been acknowledged by the server and the client has been notified
|
||||
function TSMAPI:WaitForAuctionEvents(mode, isMultiPost)
|
||||
local function ValidateEvent(_, msg)
|
||||
if mode == "Buyout" then
|
||||
return msg:match(gsub(ERR_AUCTION_BID_PLACED, "%%s", ""))
|
||||
elseif mode == "Cancel" then
|
||||
return msg == ERR_AUCTION_REMOVED
|
||||
elseif mode == "Post" then
|
||||
return msg == ERR_AUCTION_STARTED
|
||||
end
|
||||
end
|
||||
|
||||
local events, interrupt
|
||||
if mode == "Buyout" then
|
||||
events = {{event="AUCTION_ITEM_LIST_UPDATE"}, {event="CHAT_MSG_SYSTEM", callback=ValidateEvent}}
|
||||
interrupt = {event="UI_ERROR_MESSAGE", callback=function(_,msg) return msg == ERR_AUCTION_HIGHER_BID end}
|
||||
elseif mode == "Cancel" then
|
||||
events = {{event="CHAT_MSG_SYSTEM", callback=ValidateEvent}, {event="AUCTION_OWNED_LIST_UPDATE"}}
|
||||
elseif mode == "Post" then
|
||||
if isMultiPost then
|
||||
events = {{event="AUCTION_MULTISELL_UPDATE", callback=function(_,arg1,arg2) return arg1 == arg2 end}}
|
||||
else
|
||||
events = {{event="CHAT_MSG_SYSTEM", callback=ValidateEvent}}
|
||||
end
|
||||
end
|
||||
if events then
|
||||
WaitForEvents(events, function() private:SendMessage("TSM_AH_EVENTS", mode) end, interrupt)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function TSMAPI:GetAuctionPercentColor(percent)
|
||||
local colors = {
|
||||
{color="|cff2992ff", value=50}, -- blue
|
||||
{color="|cff16ff16", value=80}, -- green
|
||||
{color="|cffffff00", value=110}, -- yellow
|
||||
{color="|cffff9218", value=135}, -- orange
|
||||
{color="|cffff0000", value=math.huge}, -- red
|
||||
}
|
||||
|
||||
for i=1, #colors do
|
||||
if percent < colors[i].value then
|
||||
return colors[i].color
|
||||
end
|
||||
end
|
||||
|
||||
return "|cffffffff"
|
||||
end
|
||||
Reference in New Issue
Block a user