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
|
#region builtins
|
||||||
func _ready() -> void:
|
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()
|
_set_labels()
|
||||||
|
|
||||||
|
|
||||||
@ -341,7 +342,7 @@ func _play_sfx(stream: AudioStream) -> void:
|
|||||||
|
|
||||||
|
|
||||||
#region event handlers
|
#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()
|
var center := rect.get_center()
|
||||||
_default_position = _init_position
|
_default_position = _init_position
|
||||||
_default_position.x -= center.x
|
_default_position.x -= center.x
|
||||||
@ -350,4 +351,10 @@ func _on_layout_size_changed(rect: Rect2) -> void:
|
|||||||
if not _pos_sod:
|
if not _pos_sod:
|
||||||
_reset_animations()
|
_reset_animations()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_keyboard_keys_requested(filter_func: Callable) -> void:
|
||||||
|
if not filter_func.call(self):
|
||||||
|
return
|
||||||
|
keyboard.key_request_respond(self)
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@ -3,6 +3,7 @@ class_name GameKeyboard extends Node3D
|
|||||||
signal key_press_changed(game_key: GameKey, event: InputEventKey)
|
signal key_press_changed(game_key: GameKey, event: InputEventKey)
|
||||||
signal layout_size_changed(rect: Rect2)
|
signal layout_size_changed(rect: Rect2)
|
||||||
signal prompt_page_turned(page: int)
|
signal prompt_page_turned(page: int)
|
||||||
|
signal keys_requested(filter_func: Callable)
|
||||||
|
|
||||||
#region variables
|
#region variables
|
||||||
@export_group("Node references")
|
@export_group("Node references")
|
||||||
@ -32,6 +33,8 @@ var prompt_pages_total: int = 0
|
|||||||
|
|
||||||
var _rot_sod: SecondOrderDynamics
|
var _rot_sod: SecondOrderDynamics
|
||||||
|
|
||||||
|
var _requested_keys: Array[GameKey] = []
|
||||||
|
|
||||||
@onready var _gap_to_size_ratio: float
|
@onready var _gap_to_size_ratio: float
|
||||||
@onready var _pressing_lean_rad := Vector2(
|
@onready var _pressing_lean_rad := Vector2(
|
||||||
deg_to_rad(_pressing_lean_deg.x), deg_to_rad(_pressing_lean_deg.y)
|
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)
|
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
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user