79 lines
2.0 KiB
Lua
79 lines
2.0 KiB
Lua
PlayerTrade = {}
|
|
|
|
local tradeWindow
|
|
|
|
local function createTrade()
|
|
tradeWindow = createWidget('TradeWindow', GameInterface.getRightPanel())
|
|
tradeWindow.onClose = function()
|
|
g_game.rejectTrade()
|
|
tradeWindow:hide()
|
|
end
|
|
end
|
|
|
|
local function fillTrade(name, items, counter)
|
|
if not tradeWindow then
|
|
createTrade()
|
|
end
|
|
|
|
local tradeItemWidget = tradeWindow:getChildById('tradeItem')
|
|
tradeItemWidget:setItemId(items[1]:getId())
|
|
|
|
local tradeContainer
|
|
local label
|
|
if counter then
|
|
tradeContainer = tradeWindow:recursiveGetChildById('counterTradeContainer')
|
|
label = tradeWindow:recursiveGetChildById('counterTradeLabel')
|
|
|
|
tradeWindow:recursiveGetChildById('acceptButton'):enable()
|
|
else
|
|
tradeContainer = tradeWindow:recursiveGetChildById('ownTradeContainer')
|
|
label = tradeWindow:recursiveGetChildById('ownTradeLabel')
|
|
end
|
|
label:setText(name)
|
|
|
|
for index,item in ipairs(items) do
|
|
local itemWidget = createWidget('Item', tradeContainer)
|
|
itemWidget:setItem(item)
|
|
itemWidget:setVirtual(true)
|
|
itemWidget:setMargin(1)
|
|
itemWidget.onClick = function()
|
|
g_game.inspectTrade(counter, index-1)
|
|
end
|
|
end
|
|
end
|
|
|
|
local function onGameOwnTrade(name, items)
|
|
fillTrade(name, items, false)
|
|
end
|
|
|
|
local function onGameCounterTrade(name, items)
|
|
fillTrade(name, items, true)
|
|
end
|
|
|
|
local function onGameCloseTrade()
|
|
if not tradeWindow then return end
|
|
tradeWindow:destroy()
|
|
tradeWindow = nil
|
|
end
|
|
|
|
function PlayerTrade.init()
|
|
importStyle 'tradewindow.otui'
|
|
|
|
connect(g_game, { onOwnTrade = onGameOwnTrade,
|
|
onCounterTrade = onGameCounterTrade,
|
|
onCloseTrade = onGameCloseTrade,
|
|
onGameEnd = onGameCloseTrade })
|
|
end
|
|
|
|
function PlayerTrade.terminate()
|
|
disconnect(g_game, { onOwnTrade = onGameOwnTrade,
|
|
onCounterTrade = onGameCounterTrade,
|
|
onCloseTrade = onGameCloseTrade,
|
|
onGameEnd = onGameCloseTrade })
|
|
|
|
if tradeWindow then
|
|
tradeWindow:destroy()
|
|
tradeWindow = nil
|
|
end
|
|
end
|