extends BaseState class_name PlayerIdleState signal PlayerBecameIdle @export var player: PlayerCharacter var _movement_component: MovementComponent var _sit_queued := false var _sit_queue_pos: Vector2 var _sit_queue_dir: Enums.Directions func GetStateEnum() -> PlayerStateMachine.States: return PlayerStateMachine.States.IDLE func Enter(_extra_parameters: Dictionary) -> void: _movement_component = ComponentUtils.GetMovementComponent(player) if not _movement_component: print_rich("[color=yellow]Warning: Player does not have a movement component...[/color]") PlayerBecameIdle.emit() func Update(_delta: float) -> void: var item_a := Input.is_action_just_pressed("use_item_a") if item_a: state_machine.QueueStateChange(PlayerStateMachine.States.USING_ITEM_A, {}) return if _sit_queued: state_machine.QueueStateChange(PlayerStateMachine.States.SITTING, {"pos": _sit_queue_pos, "dir": _sit_queue_dir}) _sit_queued = false return if _movement_component and _movement_component.movement_vector != Vector2.ZERO: state_machine.QueueStateChange(PlayerStateMachine.States.WALKING) func OnSitOnFurnitureTriggered(sitting_position: Vector2, sitting_direction: Enums.Directions) -> void: if state_machine.GetCurrentStateEnum() != GetStateEnum(): return _sit_queued = true _sit_queue_pos = sitting_position _sit_queue_dir = sitting_direction func OnCutsceneStarted() -> void: state_machine.QueueStateChange(PlayerStateMachine.States.CUTSCENE)