Fix a bug with autowalking & add prompt param for tryLogout.
(We don't want to be prompted when pressing Ctrl + Q or Ctrl + L).
This commit is contained in:
parent
c4adf2d817
commit
95abf2a1d2
|
@ -42,7 +42,8 @@ function init()
|
|||
gameBottomPanel = gameRootPanel:getChildById('gameBottomPanel')
|
||||
connect(gameLeftPanel, { onVisibilityChange = onLeftPanelVisibilityChange })
|
||||
|
||||
logoutButton = modules.client_topmenu.addLeftButton('logoutButton', tr('Exit'), '/images/topbuttons/logout', tryLogout, true)
|
||||
logoutButton = modules.client_topmenu.addLeftButton('logoutButton', tr('Exit'),
|
||||
'/images/topbuttons/logout', tryLogout, true)
|
||||
|
||||
setupViewMode(0)
|
||||
|
||||
|
@ -104,8 +105,8 @@ function bindKeys()
|
|||
g_keyboard.bindKeyPress('Escape', function() g_game.cancelAttackAndFollow() end, gameRootPanel)
|
||||
g_keyboard.bindKeyPress('Ctrl+=', function() gameMapPanel:zoomIn() end, gameRootPanel)
|
||||
g_keyboard.bindKeyPress('Ctrl+-', function() gameMapPanel:zoomOut() end, gameRootPanel)
|
||||
g_keyboard.bindKeyDown('Ctrl+Q', tryLogout, gameRootPanel)
|
||||
g_keyboard.bindKeyDown('Ctrl+L', tryLogout, gameRootPanel)
|
||||
g_keyboard.bindKeyDown('Ctrl+Q', function() tryLogout(false) end, gameRootPanel)
|
||||
g_keyboard.bindKeyDown('Ctrl+L', function() tryLogout(false) end, gameRootPanel)
|
||||
g_keyboard.bindKeyDown('Ctrl+W', function() g_map.cleanTexts() modules.game_textmessage.clearMessages() end, gameRootPanel)
|
||||
g_keyboard.bindKeyDown('Ctrl+.', nextViewMode, gameRootPanel)
|
||||
end
|
||||
|
@ -228,7 +229,10 @@ function tryExit()
|
|||
return true
|
||||
end
|
||||
|
||||
function tryLogout()
|
||||
function tryLogout(prompt)
|
||||
if type(prompt) ~= "boolean" then
|
||||
prompt = true
|
||||
end
|
||||
if not g_game.isOnline() then
|
||||
exit()
|
||||
return
|
||||
|
@ -238,38 +242,41 @@ function tryLogout()
|
|||
return
|
||||
end
|
||||
|
||||
local msg, yesCallback
|
||||
if not g_game.isConnectionOk() then
|
||||
local yesCallback = function()
|
||||
msg = 'Your connection is failing, if you logout now your character will be still online, do you want to force logout?'
|
||||
|
||||
yesCallback = function()
|
||||
g_game.forceLogout()
|
||||
if logoutWindow then
|
||||
logoutWindow:destroy()
|
||||
logoutWindow=nil
|
||||
end
|
||||
end
|
||||
local noCallback = function()
|
||||
logoutWindow:destroy()
|
||||
logoutWindow=nil
|
||||
end
|
||||
else
|
||||
msg = 'Are you sure you want to logout?'
|
||||
|
||||
logoutWindow = displayGeneralBox(tr('Logout'), tr('Your connection is failing, if you logout now your character will be still online, do you want to force logout?'), {
|
||||
yesCallback = function()
|
||||
g_game.safeLogout()
|
||||
if logoutWindow then
|
||||
logoutWindow:destroy()
|
||||
logoutWindow=nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local noCallback = function()
|
||||
logoutWindow:destroy()
|
||||
logoutWindow=nil
|
||||
end
|
||||
|
||||
if prompt then
|
||||
logoutWindow = displayGeneralBox(tr('Logout'), tr(msg), {
|
||||
{ text=tr('Yes'), callback=yesCallback },
|
||||
{ text=tr('No'), callback=noCallback },
|
||||
anchor=AnchorHorizontalCenter}, yesCallback, noCallback)
|
||||
else
|
||||
local yesCallback = function()
|
||||
g_game.safeLogout()
|
||||
logoutWindow:destroy()
|
||||
logoutWindow=nil
|
||||
end
|
||||
local noCallback = function()
|
||||
logoutWindow:destroy()
|
||||
logoutWindow=nil
|
||||
end
|
||||
|
||||
logoutWindow = displayGeneralBox(tr('Logout'), tr('Are you sure you want to logout?'), {
|
||||
{ text=tr('Yes'), callback=yesCallback },
|
||||
{ text=tr('No'), callback=noCallback },
|
||||
anchor=AnchorHorizontalCenter}, yesCallback, noCallback)
|
||||
yesCallback()
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ bool LocalPlayer::canWalk(Otc::Direction direction)
|
|||
return false;
|
||||
|
||||
// last walk is not done yet
|
||||
if(m_walkTimer.ticksElapsed() < getStepDuration())
|
||||
if((m_walkTimer.ticksElapsed() < getStepDuration()) && !isAutoWalking())
|
||||
return false;
|
||||
|
||||
// prewalk has a timeout, because for some reason that I don't know yet the server sometimes doesn't answer the prewalk
|
||||
|
@ -83,7 +83,7 @@ bool LocalPlayer::canWalk(Otc::Direction direction)
|
|||
return false;
|
||||
|
||||
// cannot walk while already walking
|
||||
if(m_walking && (!prewalkTimeouted || m_secondPreWalk))
|
||||
if((m_walking && !isAutoWalking()) && (!prewalkTimeouted || m_secondPreWalk))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue