mirror of
https://github.com/edubart/otclient.git
synced 2025-10-14 03:24:55 +02:00
walk and key event system rework with some regressions
This commit is contained in:
@@ -8,7 +8,7 @@ function PingBar.init()
|
||||
pingLabel:applyStyle({ ['anchors.left'] = 'prev.right',
|
||||
['anchors.top'] = 'parent.top',
|
||||
['margin-top'] = 12,
|
||||
['margin-left'] = 10,
|
||||
['margin-left'] = 20,
|
||||
font = 'verdana-11px-rounded',
|
||||
color = '#FE6500',
|
||||
width = 120,
|
||||
|
@@ -4,7 +4,7 @@ Module
|
||||
author: OTClient team
|
||||
website: https://github.com/edubart/otclient
|
||||
|
||||
autoLoad: false
|
||||
autoLoad: true
|
||||
autoLoadAntecedence: 1000
|
||||
|
||||
onLoad: |
|
||||
|
@@ -108,16 +108,16 @@ function Terminal.init()
|
||||
terminalWidget:setVisible(false)
|
||||
|
||||
terminalButton = TopMenu.addButton('terminalButton', 'Terminal (Ctrl + T)', '/core_styles/icons/terminal.png', Terminal.toggle)
|
||||
Hotkeys.bind('Ctrl+T', Terminal.toggle)
|
||||
Hotkeys.bindKeyDown('Ctrl+T', Terminal.toggle)
|
||||
|
||||
commandHistory = Settings.getList('terminal-history')
|
||||
|
||||
commandLineEdit = terminalWidget:getChildById('commandLineEdit')
|
||||
Hotkeys.bind('Up', function() navigateCommand(1) end, commandLineEdit)
|
||||
Hotkeys.bind('Down', function() navigateCommand(-1) end, commandLineEdit)
|
||||
Hotkeys.bind('Tab', completeCommand, commandLineEdit)
|
||||
Hotkeys.bind('Enter', doCommand, commandLineEdit)
|
||||
Hotkeys.bind('Return', doCommand, commandLineEdit)
|
||||
Hotkeys.bindKeyDown('Up', function() navigateCommand(1) end, commandLineEdit)
|
||||
Hotkeys.bindKeyDown('Down', function() navigateCommand(-1) end, commandLineEdit)
|
||||
Hotkeys.bindKeyDown('Tab', completeCommand, commandLineEdit)
|
||||
Hotkeys.bindKeyDown('Enter', doCommand, commandLineEdit)
|
||||
Hotkeys.bindKeyDown('Return', doCommand, commandLineEdit)
|
||||
|
||||
terminalBuffer = terminalWidget:getChildById('terminalBuffer')
|
||||
Logger.setOnLog(onLog)
|
||||
@@ -126,7 +126,7 @@ end
|
||||
|
||||
function Terminal.terminate()
|
||||
Settings.setList('terminal-history', commandHistory)
|
||||
Hotkeys.unbind('Ctrl+T')
|
||||
Hotkeys.unbindKeyDown('Ctrl+T')
|
||||
Logger.setOnLog(nil)
|
||||
terminalButton:destroy()
|
||||
terminalButton = nil
|
||||
|
@@ -6,7 +6,8 @@ local loadBox
|
||||
local characterList
|
||||
|
||||
-- private functions
|
||||
local function onCharactersWindowKeyPress(self, keyCode, keyText, keyboardModifiers)
|
||||
local function onCharactersWindowKeyPress(self, keyCode, keyboardModifiers, wouldFilter)
|
||||
if wouldFilter then return end
|
||||
if keyboardModifiers == KeyboardNoModifier then
|
||||
if keyCode == KeyUp then
|
||||
characterList:focusPreviousChild(ActiveFocusReason)
|
||||
|
@@ -57,7 +57,7 @@ end
|
||||
-- public functions
|
||||
function EnterGame.init()
|
||||
enterGameButton = TopMenu.addButton('enterGameButton', 'Login (Ctrl + G)', '/core_styles/icons/login.png', EnterGame.openWindow)
|
||||
Hotkeys.bind('Ctrl+G', EnterGame.openWindow)
|
||||
Hotkeys.bindKeyDown('Ctrl+G', EnterGame.openWindow)
|
||||
motdButton = TopMenu.addButton('motdButton', 'Message of the day', '/core_styles/icons/motd.png', EnterGame.displayMotd)
|
||||
motdButton:hide()
|
||||
enterGame = displayUI('entergame.otui')
|
||||
@@ -82,7 +82,7 @@ function EnterGame.init()
|
||||
end
|
||||
|
||||
function EnterGame.terminate()
|
||||
Hotkeys.unbind('Ctrl+G')
|
||||
Hotkeys.unbindKeyDown('Ctrl+G')
|
||||
enterGame:destroy()
|
||||
enterGame = nil
|
||||
enterGameButton:destroy()
|
||||
|
@@ -25,11 +25,11 @@ function Options.init()
|
||||
optionsWindow = displayUI('options.otui')
|
||||
optionsWindow:setVisible(false)
|
||||
optionsButton = TopMenu.addButton('settingsButton', 'Options (Ctrl+O)', '/core_styles/icons/settings.png', Options.toggle)
|
||||
Hotkeys.bind('Ctrl+O', Options.toggle)
|
||||
Hotkeys.bindKeyDown('Ctrl+O', Options.toggle)
|
||||
end
|
||||
|
||||
function Options.terminate()
|
||||
Hotkeys.unbind('Ctrl+O')
|
||||
Hotkeys.unbindKeyDown('Ctrl+O')
|
||||
optionsWindow:destroy()
|
||||
optionsWindow = nil
|
||||
optionsButton:destroy()
|
||||
|
@@ -23,11 +23,11 @@ function TopMenu.init()
|
||||
gameButtonsPanel = topMenu:getChildById('gameButtonsPanel')
|
||||
|
||||
TopMenu.addRightButton('logoutButton', 'Logout (Ctrl+Q)', '/core_styles/icons/logout.png', onLogout)
|
||||
Hotkeys.bind('Ctrl+Q', onLogout)
|
||||
Hotkeys.bindKeyDown('Ctrl+Q', onLogout)
|
||||
end
|
||||
|
||||
function TopMenu.terminate()
|
||||
Hotkeys.unbind('Ctrl+Q')
|
||||
Hotkeys.unbindKeyDown('Ctrl+Q')
|
||||
leftButtonsPanel = nil
|
||||
rightButtonsPanel = nil
|
||||
topMenu:destroy()
|
||||
|
@@ -45,6 +45,15 @@ AlignTopCenter = 20
|
||||
AlignBottomCenter = 24
|
||||
AlignCenter = 48
|
||||
|
||||
North = 0
|
||||
East = 1
|
||||
South = 2
|
||||
West = 3
|
||||
NorthEast = 4
|
||||
SouthEast = 5
|
||||
SouthWest = 6
|
||||
NorthWest = 7
|
||||
|
||||
|
||||
KeyUnknown = 0
|
||||
KeyEscape = 1
|
||||
|
@@ -58,10 +58,10 @@ local function determineKeyComboDesc(keyCode, keyboardModifiers)
|
||||
return translateKeyCombo(keyCombo)
|
||||
end
|
||||
|
||||
local function onWidgetKeyPress(widget, keyCode, keyText, keyboardModifiers)
|
||||
local function onWidgetKeyDown(widget, keyCode, keyboardModifiers)
|
||||
if keyCode == KeyUnknown then return end
|
||||
local keyComboDesc = determineKeyComboDesc(keyCode, keyboardModifiers)
|
||||
local callback = widget.boundKeyCombos[keyComboDesc]
|
||||
local callback = widget.boundKeyDownCombos[keyComboDesc]
|
||||
if callback then
|
||||
callback()
|
||||
return true
|
||||
@@ -69,29 +69,57 @@ local function onWidgetKeyPress(widget, keyCode, keyText, keyboardModifiers)
|
||||
return false
|
||||
end
|
||||
|
||||
local function connectWidgetHotkeyEvent(widget)
|
||||
if widget.boundKeyCombos then return end
|
||||
local function onWidgetKeyPress(widget, keyCode, keyboardModifiers, wouldFilter)
|
||||
local keyComboDesc = determineKeyComboDesc(keyCode, keyboardModifiers)
|
||||
if keyCode == KeyUnknown then return end
|
||||
local callback = widget.boundKeyPressCombos[keyComboDesc]
|
||||
if callback then
|
||||
callback()
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local function connectKeyDownEvent(widget)
|
||||
if widget.boundKeyDownCombos then return end
|
||||
connect(widget, { onKeyDown = onWidgetKeyDown })
|
||||
widget.boundKeyDownCombos = {}
|
||||
end
|
||||
|
||||
local function connectKeyPressEvent(widget)
|
||||
if widget.boundKeyPressCombos then return end
|
||||
connect(widget, { onKeyPress = onWidgetKeyPress })
|
||||
widget.boundKeyCombos = {}
|
||||
widget.boundKeyPressCombos = {}
|
||||
end
|
||||
|
||||
-- public functions
|
||||
function Hotkeys.bind(keyComboDesc, callback, widget)
|
||||
function Hotkeys.bindKeyDown(keyComboDesc, callback, widget)
|
||||
widget = widget or rootWidget
|
||||
connectWidgetHotkeyEvent(widget)
|
||||
connectKeyDownEvent(widget)
|
||||
local keyComboDesc = retranslateKeyComboDesc(keyComboDesc)
|
||||
if keyComboDesc then
|
||||
widget.boundKeyCombos[keyComboDesc] = callback
|
||||
widget.boundKeyDownCombos[keyComboDesc] = callback
|
||||
else
|
||||
error('key combo \'' .. keyComboDesc .. '\' is failed')
|
||||
end
|
||||
end
|
||||
|
||||
function Hotkeys.unbind(keyComboDesc, widget)
|
||||
function Hotkeys.bindKeyPress(keyComboDesc, callback, widget)
|
||||
widget = widget or rootWidget
|
||||
if widget.boundKeyCombos == nil then return end
|
||||
connectKeyPressEvent(widget)
|
||||
local keyComboDesc = retranslateKeyComboDesc(keyComboDesc)
|
||||
if keyComboDesc then
|
||||
widget.boundKeyCombos[keyComboDesc] = nil
|
||||
widget.boundKeyPressCombos[keyComboDesc] = callback
|
||||
else
|
||||
error('key combo \'' .. keyComboDesc .. '\' is failed')
|
||||
end
|
||||
end
|
||||
|
||||
function Hotkeys.unbindKeyDown(keyComboDesc, widget)
|
||||
widget = widget or rootWidget
|
||||
if widget.boundKeyDownCombos == nil then return end
|
||||
local keyComboDesc = retranslateKeyComboDesc(keyComboDesc)
|
||||
if keyComboDesc then
|
||||
widget.boundKeyDownCombos[keyComboDesc] = nil
|
||||
end
|
||||
end
|
||||
|
@@ -5,7 +5,7 @@ local displayedMenuList = {}
|
||||
function UIPopupMenu.create()
|
||||
local menu = UIPopupMenu.internalCreate()
|
||||
local layout = UIVerticalLayout.create(menu)
|
||||
layout:setFitParent(true)
|
||||
layout:setFitChildren(true)
|
||||
menu:setLayout(layout)
|
||||
return menu
|
||||
end
|
||||
@@ -53,7 +53,8 @@ function UIPopupMenu:onMousePress(mousePos, mouseButton)
|
||||
return false
|
||||
end
|
||||
|
||||
function UIPopupMenu:onKeyPress(keyCode, keyText, keyboardModifiers)
|
||||
function UIPopupMenu:onKeyPress(keyCode, keyboardModifiers, wouldFilter)
|
||||
if wouldFilter then return end
|
||||
if keyCode == KeyEscape then
|
||||
self:destroy()
|
||||
return true
|
||||
|
@@ -6,7 +6,8 @@ function UIWindow.create()
|
||||
return window
|
||||
end
|
||||
|
||||
function UIWindow:onKeyPress(keyCode, keyText, keyboardModifiers)
|
||||
function UIWindow:onKeyPress(keyCode, keyboardModifiers, wouldFilter)
|
||||
if wouldFilter then return end
|
||||
if keyboardModifiers == KeyboardNoModifier then
|
||||
if keyCode == KeyReturn or keyCode == KeyEnter then
|
||||
signalcall(self.onEnter, self)
|
||||
|
@@ -1,5 +1,6 @@
|
||||
-- private functions
|
||||
local function onGameKeyPress(self, keyCode, keyText, keyboardModifiers)
|
||||
local function onGameKeyPress(self, keyCode, keyboardModifiers, wouldFilter)
|
||||
if wouldFilter then return end
|
||||
if keyboardModifiers == KeyboardCtrlModifier then
|
||||
if keyCode == KeyG then
|
||||
CharacterList.show()
|
||||
@@ -17,6 +18,17 @@ function Game.createInterface()
|
||||
Background.hide()
|
||||
CharacterList.destroyLoadBox()
|
||||
Game.gameUi = displayUI('game.otui')
|
||||
|
||||
--Hotkeys.bindKeyPress('Up', function() Game.walk(North) end)
|
||||
--Hotkeys.bindKeyPress('Down', function() Game.walk(South) end)
|
||||
--Hotkeys.bindKeyPress('Left', function() Game.walk(West) end)
|
||||
--Hotkeys.bindKeyPress('Right', function() Game.walk(East) end)
|
||||
|
||||
Hotkeys.bindKeyPress('Ctrl+Shift+Up', function() Game.forceWalk(North) end)
|
||||
Hotkeys.bindKeyPress('Ctrl+Shift+Down', function() Game.forceWalk(South) end)
|
||||
Hotkeys.bindKeyPress('Ctrl+Shift+Left', function() Game.forceWalk(West) end)
|
||||
Hotkeys.bindKeyPress('Ctrl+Shift+Right', function() Game.forceWalk(East) end)
|
||||
|
||||
rootWidget:moveChildToIndex(Game.gameUi, 1)
|
||||
Game.gameMapPanel = Game.gameUi:getChildById('gameMapPanel')
|
||||
Game.gameRightPanel = Game.gameUi:getChildById('gameRightPanel')
|
||||
|
@@ -48,10 +48,10 @@ function Console.create()
|
||||
Console.addChannel('Default', 0)
|
||||
Console.addTab('Server Log')
|
||||
|
||||
Hotkeys.bind('Tab', function() consoleTabBar:selectNextTab() end, consolePanel)
|
||||
Hotkeys.bind('Shift+Tab', function() consoleTabBar:selectPrevTab() end, consolePanel)
|
||||
Hotkeys.bind('Enter', Console.sendCurrentMessage, consolePanel)
|
||||
Hotkeys.bind('Return', Console.sendCurrentMessage, consolePanel)
|
||||
Hotkeys.bindKeyDown('Tab', function() consoleTabBar:selectNextTab() end, consolePanel)
|
||||
Hotkeys.bindKeyDown('Shift+Tab', function() consoleTabBar:selectPrevTab() end, consolePanel)
|
||||
Hotkeys.bindKeyDown('Enter', Console.sendCurrentMessage, consolePanel)
|
||||
Hotkeys.bindKeyDown('Return', Console.sendCurrentMessage, consolePanel)
|
||||
end
|
||||
|
||||
function Console.destroy()
|
||||
|
@@ -1,18 +1,18 @@
|
||||
-- this file use loaded after everything is loaded and initialized
|
||||
-- you can place any custom user code here
|
||||
|
||||
Hotkeys.bind('F1', function() Game.talk('exura gran') end)
|
||||
Hotkeys.bind('F2', function() Game.talk('exori mort') end)
|
||||
Hotkeys.bind('F3', function() Game.talk('exori frigo') end)
|
||||
Hotkeys.bind('F4', function() Game.talk('exevo vis hur') end)
|
||||
Hotkeys.bind('F5', function() Game.talk('utani gran hur') end)
|
||||
Hotkeys.bind('F6', function() Game.talk('exani tera') end)
|
||||
Hotkeys.bindKeyDown('F1', function() Game.talk('exura gran') end)
|
||||
Hotkeys.bindKeyDown('F2', function() Game.talk('exori mort') end)
|
||||
Hotkeys.bindKeyDown('F3', function() Game.talk('exori frigo') end)
|
||||
Hotkeys.bindKeyDown('F4', function() Game.talk('exevo vis hur') end)
|
||||
Hotkeys.bindKeyDown('F5', function() Game.talk('utani gran hur') end)
|
||||
Hotkeys.bindKeyDown('F6', function() Game.talk('exani tera') end)
|
||||
|
||||
local function reload()
|
||||
runscript('otclientrc.lua')
|
||||
TextMessage.displayEventAdvance('Script otclientrc.lua reloaded.')
|
||||
print('Script otclient.rc lua reloaded')
|
||||
end
|
||||
Hotkeys.bind('Ctrl+R', reload)
|
||||
Hotkeys.bindKeyDown('Ctrl+R', reload)
|
||||
|
||||
rcloaded = true
|
||||
|
Reference in New Issue
Block a user