extends Node class_name PlayerModel @onready var player: Player = $".." @onready var camera: Camera3D = %camera @onready var moves: Dictionary = { "idle": $Idle, "walk": $Walk, "slash": $Slash, "shoot": $Shoot, "dash": $Dash, "fall": $Fall, "fallToRoll": $FallToRoll, "fallToLanding": $FallToLanding } var current_move: Move ### func _ready() -> void: # assign starting state current_move = moves["idle"] # assign objects to each move for move in moves.values(): move.player = player move.camera = camera func update(input: InputPacket, delta: float): var relevent_move := current_move.should_enter(input) if moves[relevent_move] != current_move: switch_to(relevent_move) current_move.update(input, delta) func switch_to(state: String): player.state = state current_move.on_exit_state() current_move = moves[state] current_move.on_enter_state()