mirror of
https://github.com/edubart/otclient.git
synced 2025-05-01 18:19:20 +02:00

Sandboxing makes module scripts run inside an isolated lua environments, making more easier and secure to script Move and rework TextMessage using the new sandbox system
69 lines
1.5 KiB
Lua
69 lines
1.5 KiB
Lua
PlayerDeath = {}
|
|
|
|
-- private variables
|
|
local deathWindow
|
|
|
|
-- private functions
|
|
|
|
-- public functions
|
|
function PlayerDeath.init()
|
|
g_ui.importStyle('deathwindow.otui')
|
|
|
|
connect(g_game, { onDeath = PlayerDeath.display,
|
|
onGameEnd = PlayerDeath.reset })
|
|
end
|
|
|
|
function PlayerDeath.terminate()
|
|
disconnect(g_game, { onDeath = PlayerDeath.display,
|
|
onGameEnd = PlayerDeath.reset })
|
|
|
|
PlayerDeath.reset()
|
|
PlayerDeath = nil
|
|
end
|
|
|
|
function PlayerDeath.reset()
|
|
if deathWindow then
|
|
deathWindow:destroy()
|
|
deathWindow = nil
|
|
end
|
|
end
|
|
|
|
function PlayerDeath.display()
|
|
PlayerDeath.displayDeadMessage()
|
|
PlayerDeath.openWindow()
|
|
end
|
|
|
|
function PlayerDeath.displayDeadMessage()
|
|
local advanceLabel = GameInterface.getMapPanel():recursiveGetChildById('centerAdvance')
|
|
if advanceLabel:isVisible() then
|
|
return
|
|
end
|
|
|
|
TextMessage.displayEventAdvance(tr('You are dead.'))
|
|
end
|
|
|
|
function PlayerDeath.openWindow()
|
|
if deathWindow then
|
|
return
|
|
end
|
|
deathWindow = g_ui.createWidget('DeathWindow', rootWidget)
|
|
local okButton = deathWindow:getChildById('buttonOk')
|
|
local cancelButton = deathWindow:getChildById('buttonCancel')
|
|
|
|
local okFunc = function()
|
|
CharacterList.doLogin()
|
|
okButton:getParent():destroy()
|
|
deathWindow = nil
|
|
end
|
|
local cancelFunc = function()
|
|
GameInterface.logout()
|
|
cancelButton:getParent():destroy()
|
|
deathWindow = nil
|
|
end
|
|
|
|
deathWindow.onEnter = okFunc
|
|
deathWindow.onEscape = cancelFunc
|
|
|
|
okButton.onClick = okFunc
|
|
cancelButton.onClick = cancelFunc
|
|
end |