class_name Player extends CharacterBody2D var current_state: PlayerState: set = set_state var current_direction: Vector2: set = set_direction var current_speed := 150.0 @onready var state_idle: PlayerStateIdle = %StateIdle @onready var state_moving: PlayerStateMoving = %StateMoving @onready var sprite: AnimatedSprite2D = $AnimatedSprite2D @onready var ray_cast_up: RayCast2D = $RayCastUp @onready var ray_cast_down: RayCast2D = $RayCastDown @onready var ray_cast_left: RayCast2D = $RayCastLeft @onready var ray_cast_right: RayCast2D = $RayCastRight func _ready() -> void: current_state = $States/StateIdle func set_state(value: PlayerState) -> void: if current_state: current_state._state_exit() current_state.process_mode = Node.PROCESS_MODE_DISABLED current_state = value current_state.process_mode = Node.PROCESS_MODE_INHERIT current_state._state_enter() func set_direction(value: Vector2) -> void: current_direction = value Game.current_direction = value