From c6b12507d962bf7e2e22e22f1945cf48136c43bf Mon Sep 17 00:00:00 2001 From: yuki Date: Sat, 22 Nov 2025 12:07:47 -0300 Subject: [PATCH] add match and watch helpers to player state --- classes/state/player_state.gd | 22 ++++++++++++++++++++++ scenes/player/states/player_idle.gd | 13 ++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/classes/state/player_state.gd b/classes/state/player_state.gd index ff10e0e..ebda6b5 100644 --- a/classes/state/player_state.gd +++ b/classes/state/player_state.gd @@ -30,3 +30,25 @@ func _state_update(_delta: float) -> void: func _state_physics_update(_delta: float) -> void: pass + + +func match_state(exclude: Array[StringName] = []) -> StringName: + var movement_vector: Vector2 = player.get_movement_vector() + + if movement_vector.length() > player.DEADZONE: + if WALKING in exclude: return "" + return WALKING + elif movement_vector.length() < player.DEADZONE: + if IDLE in exclude: return "" + return IDLE + + return "" + + +func watch_state(exclude: Array[StringName] = []) -> bool: + var next_state: StringName = match_state(exclude) + if next_state != "": + finished.emit(next_state) + return true + + return false diff --git a/scenes/player/states/player_idle.gd b/scenes/player/states/player_idle.gd index 4e64ca8..960b36c 100644 --- a/scenes/player/states/player_idle.gd +++ b/scenes/player/states/player_idle.gd @@ -6,11 +6,14 @@ var next_state: StringName func _enter(_previous_state_path: String, _data: Dictionary[StringName, Variant] = {}) -> void: print('entering idle') - #print('entered') + + player.velocity = Vector2.ZERO + player.move_and_slide() + + # TODO: animations + + print('entered') func _state_physics_update(_delta: float) -> void: - next_state = player.match_state([IDLE]) - if next_state != "": - finished.emit(next_state) - return + if watch_state([IDLE]): return