diff --git a/scripts/game_keyboard.gd b/scripts/game_keyboard.gd index c0ff5ee..a68d423 100644 --- a/scripts/game_keyboard.gd +++ b/scripts/game_keyboard.gd @@ -37,6 +37,7 @@ var prompt_pages_total: int = 0 var _rot_sod: SecondOrderDynamics var _requested_keys: Array[GameKey] = [] +var _requested_keys_limit: int = 0 @onready var _gap_to_size_ratio: float @onready var _pressing_lean_rad := Vector2( @@ -116,17 +117,23 @@ func emit_key_press(game_key: GameKey, event: InputEventKey) -> void: key_press_changed.emit(game_key, event) -func request_keys(filter_func: Callable) -> Array[GameKey]: +func request_keys(filter_func: Callable, limit: int = 0) -> Array[GameKey]: _requested_keys = [] + _requested_keys_limit = limit + keys_requested.emit(filter_func) var requested_keys := _requested_keys + _requested_keys = [] + _requested_keys_limit = 0 + requested_keys.sort_custom(GameKey.sort_func) return requested_keys func key_request_respond(game_key: GameKey) -> void: - _requested_keys.append(game_key) + if _requested_keys_limit == 0 or _requested_keys.size() < _requested_keys_limit: + _requested_keys.append(game_key) #endregion