diff --git a/game/characters/enemies/state_machine/fall_left_state.gd b/game/characters/enemies/state_machine/fall_left_state.gd index c9b47bb..b747aed 100644 --- a/game/characters/enemies/state_machine/fall_left_state.gd +++ b/game/characters/enemies/state_machine/fall_left_state.gd @@ -1,17 +1,5 @@ -extends CultistFallState - - -@export var fall_state: CultistState +extends CultistFallSidewaysState func enter() -> void: cultist.sprite.play(CultistSprite.ANIMATION_FALL_LEFT) - - -func physics_process(delta: float) -> void: - cultist.velocity += cultist.get_gravity() * delta - cultist.move_and_slide() - if cultist.is_on_floor(): - switch_state.emit(look_around_state) - elif is_zero_approx(cultist.velocity.x): - switch_state.emit(fall_state) diff --git a/game/characters/enemies/state_machine/fall_right_state.gd b/game/characters/enemies/state_machine/fall_right_state.gd index 53cb3c2..72295bc 100644 --- a/game/characters/enemies/state_machine/fall_right_state.gd +++ b/game/characters/enemies/state_machine/fall_right_state.gd @@ -1,17 +1,5 @@ -extends CultistFallState - - -@export var fall_state: CultistState +extends CultistFallSidewaysState func enter() -> void: cultist.sprite.play(CultistSprite.ANIMATION_FALL_RIGHT) - - -func physics_process(delta: float) -> void: - cultist.velocity += cultist.get_gravity() * delta - cultist.move_and_slide() - if cultist.is_on_floor(): - switch_state.emit(look_around_state) - elif is_zero_approx(cultist.velocity.x): - switch_state.emit(fall_state) diff --git a/game/characters/enemies/state_machine/fall_sideways_state.gd b/game/characters/enemies/state_machine/fall_sideways_state.gd new file mode 100644 index 0000000..7028667 --- /dev/null +++ b/game/characters/enemies/state_machine/fall_sideways_state.gd @@ -0,0 +1,11 @@ +class_name CultistFallSidewaysState +extends CultistFallState + + +@export var fall_state: CultistState + + +func physics_process(delta: float) -> void: + var is_on_floor := _move_down_and_check_floor(delta) + if not is_on_floor and is_zero_approx(cultist.velocity.x): + switch_state.emit(fall_state) diff --git a/game/characters/enemies/state_machine/fall_sideways_state.gd.uid b/game/characters/enemies/state_machine/fall_sideways_state.gd.uid new file mode 100644 index 0000000..e1ec2e2 --- /dev/null +++ b/game/characters/enemies/state_machine/fall_sideways_state.gd.uid @@ -0,0 +1 @@ +uid://dknrtf0f5wgnr diff --git a/game/characters/enemies/state_machine/fall_state.gd b/game/characters/enemies/state_machine/fall_state.gd index 68b78e9..afa50aa 100644 --- a/game/characters/enemies/state_machine/fall_state.gd +++ b/game/characters/enemies/state_machine/fall_state.gd @@ -10,7 +10,13 @@ func enter() -> void: func physics_process(delta: float) -> void: + _move_down_and_check_floor(delta) + + +func _move_down_and_check_floor(delta: float) -> bool: cultist.velocity += cultist.get_gravity() * delta cultist.move_and_slide() if cultist.is_on_floor(): switch_state.emit(look_around_state) + return true + return false