Merge pull request #910 from diath/hotkey_turn_delay
Add turn and hotkey delay
This commit is contained in:
commit
38e9e7c1ed
|
@ -38,11 +38,51 @@ Panel
|
|||
id: displayText
|
||||
!text: tr('Display text messages')
|
||||
|
||||
Label
|
||||
id: turnDelayLabel
|
||||
!text: tr('Turn delay: %sms', 30)
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: prev.bottom
|
||||
margin-top: 12
|
||||
@onSetup: |
|
||||
local value = modules.client_options.getOption('turnDelay')
|
||||
self:setText(tr('Turn delay: %dms', value))
|
||||
|
||||
OptionScrollbar
|
||||
id: turnDelay
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: prev.bottom
|
||||
margin-top: 3
|
||||
minimum: 30
|
||||
maximum: 250
|
||||
|
||||
Label
|
||||
id: hotkeyDelayLabel
|
||||
!text: tr('Hotkey delay: %dms', 30)
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: prev.bottom
|
||||
margin-top: 12
|
||||
@onSetup: |
|
||||
local value = modules.client_options.getOption('hotkeyDelay')
|
||||
self:setText(tr('Hotkey delay: %dms', value))
|
||||
|
||||
OptionScrollbar
|
||||
id: hotkeyDelay
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: prev.bottom
|
||||
margin-top: 3
|
||||
minimum: 30
|
||||
maximum: 250
|
||||
|
||||
Button
|
||||
id: changeLocale
|
||||
!text: tr('Change language')
|
||||
@onClick: modules.client_locales.createWindow()
|
||||
anchors.top: prev.bottom
|
||||
anchors.left: prev.left
|
||||
margin-top: 5
|
||||
margin-top: 12
|
||||
width: 120
|
||||
|
|
|
@ -26,7 +26,9 @@ local defaultOptions = {
|
|||
displayNames = true,
|
||||
displayHealth = true,
|
||||
displayText = true,
|
||||
dontStretchShrink = false
|
||||
dontStretchShrink = false,
|
||||
turnDelay = 50,
|
||||
hotkeyDelay = 50,
|
||||
}
|
||||
|
||||
local optionsWindow
|
||||
|
@ -228,6 +230,10 @@ function setOption(key, value, force)
|
|||
addEvent(function()
|
||||
modules.game_interface.updateStretchShrink()
|
||||
end)
|
||||
elseif key == 'turnDelay' then
|
||||
generalPanel:getChildById('turnDelayLabel'):setText(tr('Turn delay: %sms', value))
|
||||
elseif key == 'hotkeyDelay' then
|
||||
generalPanel:getChildById('hotkeyDelayLabel'):setText(tr('Hotkey delay: %sms', value))
|
||||
end
|
||||
|
||||
-- change value for keybind updates
|
||||
|
|
|
@ -36,6 +36,7 @@ useRadioGroup = nil
|
|||
currentHotkeys = nil
|
||||
boundCombosCallback = {}
|
||||
hotkeysList = {}
|
||||
lastHotkeyTime = g_clock.millis()
|
||||
|
||||
-- public functions
|
||||
function init()
|
||||
|
@ -374,6 +375,12 @@ function doKeyCombo(keyCombo)
|
|||
if not g_game.isOnline() then return end
|
||||
local hotKey = hotkeyList[keyCombo]
|
||||
if not hotKey then return end
|
||||
|
||||
if g_clock.millis() - lastHotkeyTime < modules.client_options.getOption('hotkeyDelay') then
|
||||
return
|
||||
end
|
||||
lastHotkeyTime = g_clock.millis()
|
||||
|
||||
if hotKey.itemId == nil then
|
||||
if not hotKey.value or #hotKey.value == 0 then return end
|
||||
if hotKey.autoSend then
|
||||
|
|
|
@ -17,6 +17,7 @@ smartWalkDirs = {}
|
|||
smartWalkDir = nil
|
||||
walkFunction = nil
|
||||
hookedMenuOptions = {}
|
||||
lastDirTime = g_clock.millis()
|
||||
|
||||
function init()
|
||||
g_ui.importStyle('styles/countwindow')
|
||||
|
@ -80,14 +81,15 @@ function bindKeys()
|
|||
bindWalkKey('Numpad4', West)
|
||||
bindWalkKey('Numpad7', NorthWest)
|
||||
|
||||
g_keyboard.bindKeyPress('Ctrl+Up', function() g_game.turn(North) changeWalkDir(North) end, gameRootPanel)
|
||||
g_keyboard.bindKeyPress('Ctrl+Right', function() g_game.turn(East) changeWalkDir(East) end, gameRootPanel)
|
||||
g_keyboard.bindKeyPress('Ctrl+Down', function() g_game.turn(South) changeWalkDir(South) end, gameRootPanel)
|
||||
g_keyboard.bindKeyPress('Ctrl+Left', function() g_game.turn(West) changeWalkDir(West) end, gameRootPanel)
|
||||
g_keyboard.bindKeyPress('Ctrl+Numpad8', function() g_game.turn(North) changeWalkDir(North) end, gameRootPanel)
|
||||
g_keyboard.bindKeyPress('Ctrl+Numpad6', function() g_game.turn(East) changeWalkDir(East) end, gameRootPanel)
|
||||
g_keyboard.bindKeyPress('Ctrl+Numpad2', function() g_game.turn(South) changeWalkDir(South) end, gameRootPanel)
|
||||
g_keyboard.bindKeyPress('Ctrl+Numpad4', function() g_game.turn(West) changeWalkDir(West) end, gameRootPanel)
|
||||
bindTurnKey('Ctrl+Up', North)
|
||||
bindTurnKey('Ctrl+Right', East)
|
||||
bindTurnKey('Ctrl+Down', South)
|
||||
bindTurnKey('Ctrl+Left', West)
|
||||
bindTurnKey('Ctrl+Numpad8', North)
|
||||
bindTurnKey('Ctrl+Numpad6', East)
|
||||
bindTurnKey('Ctrl+Numpad2', South)
|
||||
bindTurnKey('Ctrl+Numpad4', West)
|
||||
|
||||
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)
|
||||
|
@ -109,6 +111,19 @@ function unbindWalkKey(key)
|
|||
g_keyboard.unbindKeyPress(key, gameRootPanel)
|
||||
end
|
||||
|
||||
function bindTurnKey(key, dir)
|
||||
local function callback(widget, code, repeatTicks)
|
||||
if g_clock.millis() - lastDirTime >= modules.client_options.getOption('turnDelay') then
|
||||
g_game.turn(dir)
|
||||
changeWalkDir(dir)
|
||||
|
||||
lastDirTime = g_clock.millis()
|
||||
end
|
||||
end
|
||||
|
||||
g_keyboard.bindKeyPress(key, callback, gameRootPanel)
|
||||
end
|
||||
|
||||
function terminate()
|
||||
hide()
|
||||
|
||||
|
|
Loading…
Reference in New Issue