5 @onready var moves: Dictionary = {
12 "fallToRoll": $FallToRoll,
13 "fallToLanding": $FallToLanding
16 @onready var player: Player = $".."
17 @onready var skeleton: Skeleton3D = $Skeleton3D
18 @onready var animation_tree: ModelAnimationTree = $AnimationTree
20 var current_move: Move
23 func _ready() -> void:
24 for state_name in moves.keys():
25 var move: Move = moves[state_name]
27 move.state_name = state_name
29 assign_current_move("idle")
32 func update(input: InputPacket, delta: float):
33 var relevent_move := current_move.should_enter(input)
34 if moves[relevent_move] != current_move:
35 switch_to(relevent_move)
36 current_move.update(input, delta)
37 animation_tree.set_walking_speed(player.velocity.length())
40 func switch_to(state: String):
41 animation_tree.animation_started.disconnect(current_move._on_animation_started)
42 animation_tree.animation_finished.disconnect(current_move._on_animation_finished)
43 current_move.on_exit_state()
44 assign_current_move(state)
47 func assign_current_move(state: String):
48 current_move = moves[state]
49 current_move.on_enter_state()
51 animation_tree.animation_started.connect(current_move._on_animation_started)
52 animation_tree.animation_finished.connect(current_move._on_animation_finished)
53 animation_tree.transition(state)