|
|
|
@ -31,15 +31,9 @@ function init()
|
|
|
|
|
connect(g_game, {
|
|
|
|
|
onGameStart = show,
|
|
|
|
|
onGameEnd = hide,
|
|
|
|
|
onLoginAdvice = onLoginAdvice,
|
|
|
|
|
onWalk = onWalk
|
|
|
|
|
onLoginAdvice = onLoginAdvice
|
|
|
|
|
}, true)
|
|
|
|
|
|
|
|
|
|
connect(LocalPlayer, {
|
|
|
|
|
onCancelWalk = onCancelWalk,
|
|
|
|
|
onPositionChange = onPositionChange
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
gameRootPanel = g_ui.displayUI('gameinterface.otui')
|
|
|
|
|
gameRootPanel:hide()
|
|
|
|
|
gameRootPanel:lower()
|
|
|
|
@ -92,13 +86,12 @@ function bindKeys()
|
|
|
|
|
g_keyboard.bindKeyPress('Ctrl+Numpad6', function() g_game.turn(East) end, gameRootPanel, WALK_AUTO_REPEAT_DELAY)
|
|
|
|
|
g_keyboard.bindKeyPress('Ctrl+Numpad2', function() g_game.turn(South) end, gameRootPanel, WALK_AUTO_REPEAT_DELAY)
|
|
|
|
|
g_keyboard.bindKeyPress('Ctrl+Numpad4', function() g_game.turn(West) end, gameRootPanel, WALK_AUTO_REPEAT_DELAY)
|
|
|
|
|
g_keyboard.bindKeyPress('Escape', function() cancelAutoWalkCheck() g_game.cancelAttackAndFollow() end, gameRootPanel, WALK_AUTO_REPEAT_DELAY)
|
|
|
|
|
g_keyboard.bindKeyPress('Escape', function() g_game.cancelAttackAndFollow() end, gameRootPanel, WALK_AUTO_REPEAT_DELAY)
|
|
|
|
|
g_keyboard.bindKeyPress('Ctrl+=', function() gameMapPanel:zoomIn() end, gameRootPanel, 250)
|
|
|
|
|
g_keyboard.bindKeyPress('Ctrl+-', function() gameMapPanel:zoomOut() end, gameRootPanel, 250)
|
|
|
|
|
g_keyboard.bindKeyDown('Ctrl+Q', logout, gameRootPanel)
|
|
|
|
|
g_keyboard.bindKeyDown('Ctrl+L', logout, gameRootPanel)
|
|
|
|
|
g_keyboard.bindKeyDown('Ctrl+W', function() g_map.cleanTexts() modules.game_textmessage.clearMessages() end, gameRootPanel)
|
|
|
|
|
g_keyboard.bindKeyDown('Ctrl+;', toggleDash, gameRootPanel)
|
|
|
|
|
g_keyboard.bindKeyDown('Ctrl+.', toggleAspectRatio, gameRootPanel)
|
|
|
|
|
g_keyboard.bindKeyDown('Ctrl+N', function() gameMapPanel:setDrawTexts(not gameMapPanel:isDrawingTexts()) end, gameRootPanel)
|
|
|
|
|
end
|
|
|
|
@ -193,45 +186,6 @@ function tryLogout()
|
|
|
|
|
anchor=AnchorHorizontalCenter}, yesCallback, noCallback)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function onWalk(dir)
|
|
|
|
|
cancelAutoWalkCheck()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function onPositionChange(newPos, oldPos)
|
|
|
|
|
checkAutoWalking()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function onCancelWalk(dir)
|
|
|
|
|
checkAutoWalking(true)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function checkAutoWalking(stepCancelled)
|
|
|
|
|
local stepCancelled = stepCancelled or false
|
|
|
|
|
local player = g_game.getLocalPlayer()
|
|
|
|
|
if not player:isAutoWalking() then
|
|
|
|
|
player:clearWalkSteps()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local lastDestination = player:getLastDestination()
|
|
|
|
|
if not lastDestination then
|
|
|
|
|
return -- auto walk has been cancelled
|
|
|
|
|
end
|
|
|
|
|
player:setWalkStep(lastDestination)
|
|
|
|
|
|
|
|
|
|
local playerPos = player:getPosition()
|
|
|
|
|
local walkSteps = player:getWalkSteps(lastDestination)
|
|
|
|
|
|
|
|
|
|
if (not table.empty(walkSteps) and #walkSteps >= WALK_STEPS_RETRY) or stepCancelled then
|
|
|
|
|
if lastDestination then player:autoWalk(lastDestination) end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function cancelAutoWalkCheck()
|
|
|
|
|
local player = g_game.getLocalPlayer()
|
|
|
|
|
player:setLastDestination(nil) -- cancel retries
|
|
|
|
|
player:clearWalkSteps()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function smartWalk(defaultDir)
|
|
|
|
|
local rebindKey = false
|
|
|
|
|
local lastKey = arrowKeys[lastWalkDir]
|
|
|
|
@ -281,7 +235,6 @@ function smartWalk(defaultDir)
|
|
|
|
|
else
|
|
|
|
|
g_game.walk(dir)
|
|
|
|
|
end
|
|
|
|
|
cancelAutoWalkCheck() -- cancel the auto walker check
|
|
|
|
|
|
|
|
|
|
if rebindKey then
|
|
|
|
|
g_keyboard.bindKeyPress(lastKey, function() smartWalk(lastWalkDir) end, gameRootPanel, WALK_AUTO_REPEAT_DELAY)
|
|
|
|
@ -565,12 +518,14 @@ function processMouseAction(menuPosition, mouseButton, autoWalkPos, lookThing, u
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local player = g_game.getLocalPlayer()
|
|
|
|
|
player:stopAutoWalkUpdate()
|
|
|
|
|
|
|
|
|
|
if autoWalkPos and keyboardModifiers == KeyboardNoModifier and mouseButton == MouseLeftButton then
|
|
|
|
|
local player = g_game.getLocalPlayer()
|
|
|
|
|
if not player:autoWalk(autoWalkPos) then
|
|
|
|
|
return false
|
|
|
|
|
modules.game_textmessage.displayStatusMessage(tr('There is no way.'))
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
return false
|
|
|
|
|