add ability to get keyboard keys by filter
This commit is contained in:
parent
2d966647d2
commit
a6e31e55ed
@ -79,7 +79,8 @@ static func instantiate_with_props(
|
||||
|
||||
#region builtins
|
||||
func _ready() -> void:
|
||||
keyboard.layout_size_changed.connect(_on_layout_size_changed)
|
||||
keyboard.layout_size_changed.connect(_on_keyboard_layout_size_changed)
|
||||
keyboard.keys_requested.connect(_on_keyboard_keys_requested)
|
||||
_set_labels()
|
||||
|
||||
|
||||
@ -341,7 +342,7 @@ func _play_sfx(stream: AudioStream) -> void:
|
||||
|
||||
|
||||
#region event handlers
|
||||
func _on_layout_size_changed(rect: Rect2) -> void:
|
||||
func _on_keyboard_layout_size_changed(rect: Rect2) -> void:
|
||||
var center := rect.get_center()
|
||||
_default_position = _init_position
|
||||
_default_position.x -= center.x
|
||||
@ -350,4 +351,10 @@ func _on_layout_size_changed(rect: Rect2) -> void:
|
||||
if not _pos_sod:
|
||||
_reset_animations()
|
||||
|
||||
|
||||
func _on_keyboard_keys_requested(filter_func: Callable) -> void:
|
||||
if not filter_func.call(self):
|
||||
return
|
||||
keyboard.key_request_respond(self)
|
||||
|
||||
#endregion
|
||||
|
||||
@ -3,6 +3,7 @@ class_name GameKeyboard extends Node3D
|
||||
signal key_press_changed(game_key: GameKey, event: InputEventKey)
|
||||
signal layout_size_changed(rect: Rect2)
|
||||
signal prompt_page_turned(page: int)
|
||||
signal keys_requested(filter_func: Callable)
|
||||
|
||||
#region variables
|
||||
@export_group("Node references")
|
||||
@ -32,6 +33,8 @@ var prompt_pages_total: int = 0
|
||||
|
||||
var _rot_sod: SecondOrderDynamics
|
||||
|
||||
var _requested_keys: Array[GameKey] = []
|
||||
|
||||
@onready var _gap_to_size_ratio: float
|
||||
@onready var _pressing_lean_rad := Vector2(
|
||||
deg_to_rad(_pressing_lean_deg.x), deg_to_rad(_pressing_lean_deg.y)
|
||||
@ -105,6 +108,16 @@ func emit_key_press(game_key: GameKey, event: InputEventKey) -> void:
|
||||
key_press_changed.emit(game_key, event)
|
||||
|
||||
|
||||
func request_keys(filter_func: Callable) -> void:
|
||||
_requested_keys = []
|
||||
keys_requested.emit(filter_func)
|
||||
_requested_keys = []
|
||||
|
||||
|
||||
func key_request_respond(game_key: GameKey) -> void:
|
||||
_requested_keys.append(game_key)
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user