extends NodeState

@export var player: Player
@export var animatedSprite2D: AnimatedSprite2D
@export var collisionShapeMove: AnimationPlayer

@onready var friction = player.friction

@warning_ignore("unused_parameter")
func on_process(delta: float) -> void:
	pass

@warning_ignore("unused_parameter")
func on_phyisics_process(delta: float) -> void:
	
	player.velocity.x = move_toward(player.velocity.x, 0, friction * delta)
	
	transition_states()
	
	

func enter() -> void:
	collisionShapeMove.play("Crouch")
	animatedSprite2D.play("Crouch")


func exit() -> void:
	animatedSprite2D.stop()

func transition_states() -> void:
	#transition states
	
	#run state
	var direction = GameInputEvents.movement_input()
	
	if !player.is_on_floor():
		collisionShapeMove.play("Normal")
		transition.emit("fall")
	
	if direction and player.is_on_floor():
		transition.emit("crouchwalk")
	
	#jump state
	if GameInputEvents.jump_input():
		collisionShapeMove.play("Normal")
		transition.emit("jump")
	
	#idle state
	if not Input.is_action_pressed("crouch"):
		collisionShapeMove.play("Normal")
		transition.emit("idle")
