feat: introduce escoria-ui-keyboard-9verbs to verify register_custom_input_handler() API

This commit was started by copying `addons/escoria-ui-9verbs` as the
basis for `addons/escoria-ui-keyboard-9verbs`. It was then amended to
wire up keyboard shortcuts for each verb using the new
`register_custom_input_handler()` API.

Note that `addons/escoria-ui-keyboard-9verbs/input_map.gd` introduces
one action per verb and provides a `add_actions_to_input_map()`
function to add the actions to the `InputMap`. The `_process_input()`
function in `game.gd` is responsible for mapping each action to the
appropriate call to `verbs_menu.on_action_selected()`.
This commit is contained in:
Michael Bolin
2022-02-23 09:40:01 -08:00
committed by Julian Murgia
parent 14cf1327fe
commit 5a77bd6fdc
13 changed files with 897 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
extends Control
"""
This script is out of Escoria's scope. It controls the UI reaction to an
UI event (eg right click) to change the cursor accordingly.
"""
var selected_action
func _ready():
for but in get_children():
but.connect("pressed", self, "on_action_selected", [but.name])
but.toggle_mode = true
func on_action_selected(action: String):
if escoria.inputs_manager.input_mode != escoria.inputs_manager.INPUT_ALL:
unselect_actions()
return
escoria.action_manager.set_current_action(action)
for but in get_children():
but.set_pressed(but.get_name() == action)
func unselect_actions():
for but in get_children():
but.set_pressed(false)
func set_by_name(action_name: String):
selected_action = action_name
for but in get_children():
but.set_pressed(but.get_name() == action_name)