This commit is contained in:
2026-03-14 12:58:55 -05:00
parent 6738e8d217
commit 1c95315496
22 changed files with 313 additions and 45 deletions

View File

@@ -0,0 +1,30 @@
extends BaseState
class_name PlayerPlayAnimationState
signal PlayAnimation(animation_name: String)
signal AnimationFinished(animation_name: String)
var current_animation_name: String
# Public Methods
func GetAnimationBaseName() -> String:
return "idle"
func GetStateEnum() -> PlayerStateMachine.States:
return PlayerStateMachine.States.PLAY_ANIMATION
func Enter(_extra_parameters: Dictionary) -> void:
current_animation_name = _extra_parameters["animation_name"]
print("Playing Player Animation State: [%s]" % current_animation_name)
PlayAnimation.emit(current_animation_name)
func Exit() -> void:
current_animation_name = ''
func OnAnimationFinished(animation_name: String) -> void:
if animation_name != current_animation_name: return
AnimationFinished.emit(animation_name)

View File

@@ -0,0 +1 @@
uid://wfdtd3xlgrvm

View File

@@ -1,7 +1,8 @@
extends BaseState
@export var walking_speed := 100
signal StartedWalking
@export var walking_speed := 100
@export var movement_component: MovementComponent
@export var direction_component: FacingDirectionComponent
@export var body: CharacterBody2D
@@ -10,6 +11,10 @@ func GetStateEnum() -> PlayerStateMachine.States:
return PlayerStateMachine.States.WALKING
func Enter(_extra_parameters: Dictionary) -> void:
StartedWalking.emit()
func Update(_delta: float) -> void:
if movement_component.movement_vector == Vector2.ZERO:
state_machine.QueueStateChange(PlayerStateMachine.States.IDLE)

View File

@@ -15,7 +15,8 @@ signal SitOnFurnitureTriggered(sitting_position: Vector2, sitting_direction: Enu
signal CutsceneStarted()
signal CutsceneEnded()
@onready var state_machine: PlayerStateMachine = $StateMachine
@export var player_sprite: Node2D
@export var state_machine: PlayerStateMachine
# Public Methods
func OnSitOnFurnitureTriggered(sitting_position: Vector2, sitting_direction: Enums.Directions):

View File

@@ -2,6 +2,7 @@ extends Node2D
signal DrawingBowAnimationFinished
signal FiringArrowAnimationFinished
signal AnimationFinished(animation_name: String)
@export var state_machine: PlayerStateMachine
@export var direction_component: FacingDirectionComponent
@@ -41,6 +42,14 @@ func OnAnimationFinished() -> void:
DrawingBowAnimationFinished.emit()
elif current_animation.begins_with("firing-arrow-"):
FiringArrowAnimationFinished.emit()
AnimationFinished.emit(current_animation)
func PlaySpecifiedAnimation(animation_name: String) -> void:
current_animation = animation_name
for part in all_parts:
part.animation = animation_name
part.play()
# Called when the node enters the scene tree for the first time.

View File

@@ -1,9 +1,11 @@
extends Node
class_name PlayerStateMachine
signal StateChanged
enum States {
UNSET, IDLE, WALKING, USING_ITEM_A, DRAWING_BOW, FIRING_ARROW,
SITTING, CUTSCENE
SITTING, CUTSCENE, PLAY_ANIMATION
}
@export var states_container: Node
@@ -36,7 +38,6 @@ func _ready() -> void:
current_state.Enter({})
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
if current_state:
current_state.Update(delta)
@@ -53,3 +54,5 @@ func _swap_state() -> void:
current_state.Enter(queued_parameters)
queued_state = PlayerStateMachine.States.UNSET
queued_parameters = {}
StateChanged.emit()