2011-11-01 17:41:15 +01:00
|
|
|
-- private variables
|
|
|
|
local topMenu
|
2012-01-07 18:36:58 +01:00
|
|
|
local leftButtonsPanel
|
|
|
|
local rightButtonsPanel
|
2012-07-12 18:45:22 +02:00
|
|
|
local leftGameButtonsPanel
|
|
|
|
local rightGameButtonsPanel
|
2011-11-01 17:41:15 +01:00
|
|
|
|
2012-01-07 21:00:07 +01:00
|
|
|
-- private functions
|
2013-01-18 06:53:41 +01:00
|
|
|
local function addButton(id, description, icon, callback, panel, toggle, front)
|
2012-02-20 03:27:08 +01:00
|
|
|
local class
|
|
|
|
if toggle then
|
|
|
|
class = 'TopToggleButton'
|
|
|
|
else
|
|
|
|
class = 'TopButton'
|
|
|
|
end
|
|
|
|
|
2013-01-18 06:53:41 +01:00
|
|
|
local button = g_ui.createWidget(class)
|
|
|
|
if front then
|
|
|
|
panel:insertChild(1, button)
|
|
|
|
else
|
|
|
|
panel:addChild(button)
|
|
|
|
end
|
2012-02-20 03:27:08 +01:00
|
|
|
button:setId(id)
|
|
|
|
button:setTooltip(description)
|
2013-01-19 01:24:40 +01:00
|
|
|
button:setIcon(resolvepath(icon, 3))
|
2013-01-18 23:39:11 +01:00
|
|
|
button.onMouseRelease = function(widget, mousePos, mouseButton)
|
|
|
|
if widget:containsPoint(mousePos) and mouseButton ~= MouseMiddleButton then
|
|
|
|
callback()
|
|
|
|
return true
|
|
|
|
end
|
|
|
|
end
|
2012-02-20 03:27:08 +01:00
|
|
|
return button
|
2012-01-07 21:00:07 +01:00
|
|
|
end
|
|
|
|
|
2011-11-01 17:41:15 +01:00
|
|
|
-- public functions
|
2013-01-18 23:39:11 +01:00
|
|
|
function init()
|
|
|
|
connect(g_game, { onGameStart = showGameButtons,
|
|
|
|
onGameEnd = hideGameButtons })
|
2012-03-18 14:34:39 +01:00
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
topMenu = g_ui.displayUI('topmenu')
|
2012-03-18 14:34:39 +01:00
|
|
|
|
2012-01-07 18:36:58 +01:00
|
|
|
leftButtonsPanel = topMenu:getChildById('leftButtonsPanel')
|
|
|
|
rightButtonsPanel = topMenu:getChildById('rightButtonsPanel')
|
2012-07-12 18:45:22 +02:00
|
|
|
leftGameButtonsPanel = topMenu:getChildById('leftGameButtonsPanel')
|
|
|
|
rightGameButtonsPanel = topMenu:getChildById('rightGameButtonsPanel')
|
2012-03-23 14:48:05 +01:00
|
|
|
|
|
|
|
if g_game.isOnline() then
|
2012-07-12 18:45:22 +02:00
|
|
|
leftGameButtonsPanel:show()
|
|
|
|
rightGameButtonsPanel:show()
|
2012-03-23 14:48:05 +01:00
|
|
|
end
|
2011-11-01 17:41:15 +01:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function terminate()
|
|
|
|
disconnect(g_game, { onGameStart = showGameButtons,
|
|
|
|
onGameEnd = hideGameButtons })
|
2012-03-18 14:34:39 +01:00
|
|
|
|
2012-01-07 18:36:58 +01:00
|
|
|
leftButtonsPanel = nil
|
|
|
|
rightButtonsPanel = nil
|
2012-07-12 18:45:22 +02:00
|
|
|
leftGameButtonsPanel = nil
|
|
|
|
rightGameButtonsPanel = nil
|
2012-03-18 14:34:39 +01:00
|
|
|
|
2011-11-01 17:41:15 +01:00
|
|
|
topMenu:destroy()
|
|
|
|
topMenu = nil
|
2011-11-16 19:08:42 +01:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function addLeftButton(id, description, icon, callback, front)
|
2013-01-18 06:53:41 +01:00
|
|
|
return addButton(id, description, icon, callback, leftButtonsPanel, false, front)
|
2012-02-20 03:27:08 +01:00
|
|
|
end
|
2012-01-07 18:36:58 +01:00
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function addLeftToggleButton(id, description, icon, callback, front)
|
2013-01-18 06:53:41 +01:00
|
|
|
return addButton(id, description, icon, callback, leftButtonsPanel, true, front)
|
2012-01-07 18:36:58 +01:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function addRightButton(id, description, icon, callback, front)
|
2013-01-18 06:53:41 +01:00
|
|
|
return addButton(id, description, icon, callback, rightButtonsPanel, false, front)
|
2012-01-15 16:13:22 +01:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function addRightToggleButton(id, description, icon, callback, front)
|
2013-01-18 06:53:41 +01:00
|
|
|
return addButton(id, description, icon, callback, rightButtonsPanel, true, front)
|
2012-01-07 18:36:58 +01:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function addLeftGameButton(id, description, icon, callback, front)
|
2013-01-18 06:53:41 +01:00
|
|
|
return addButton(id, description, icon, callback, leftGameButtonsPanel, false, front)
|
2012-02-20 03:27:08 +01:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function addLeftGameToggleButton(id, description, icon, callback, front)
|
2013-01-18 06:53:41 +01:00
|
|
|
return addButton(id, description, icon, callback, leftGameButtonsPanel, true, front)
|
2012-07-12 18:45:22 +02:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function addRightGameButton(id, description, icon, callback, front)
|
2013-01-18 06:53:41 +01:00
|
|
|
return addButton(id, description, icon, callback, rightGameButtonsPanel, false, front)
|
2012-07-12 18:45:22 +02:00
|
|
|
end
|
2012-07-28 05:54:47 +02:00
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function addRightGameToggleButton(id, description, icon, callback, front)
|
2013-01-18 06:53:41 +01:00
|
|
|
return addButton(id, description, icon, callback, rightGameButtonsPanel, true, front)
|
2012-01-07 18:36:58 +01:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function hideGameButtons()
|
2012-07-12 18:45:22 +02:00
|
|
|
leftGameButtonsPanel:hide()
|
|
|
|
rightGameButtonsPanel:hide()
|
2012-01-23 14:47:15 +01:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function showGameButtons()
|
2012-07-12 18:45:22 +02:00
|
|
|
leftGameButtonsPanel:show()
|
|
|
|
rightGameButtonsPanel:show()
|
2012-01-23 14:47:15 +01:00
|
|
|
end
|
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function getButton(id)
|
2012-01-07 18:36:58 +01:00
|
|
|
return topMenu:recursiveGetChildById(id)
|
|
|
|
end
|
2012-02-20 03:27:08 +01:00
|
|
|
|
2013-01-18 23:39:11 +01:00
|
|
|
function getTopMenu()
|
|
|
|
return topMenu
|
|
|
|
end
|