extends CharacterBody2D

@export var move_speed: float = 400.0
var current_animation: String = "idle"
var angle: int = 0


func _physics_process(delta: float) -> void:
	current_animation = "idle"
	var direction = Input.get_vector("move_left", "move_right", "move_up", "move_down")
	if direction.length()  != 0:
		angle = direction.angle() / (PI/8)
		angle = wrapi(int(angle), 0, 16)
		current_animation = "walk"
	velocity = direction * move_speed
	move_and_slide()
	$AnimatedSprite2D.play(current_animation + str(angle))


func _process(delta: float) -> void:
	var snap_angle = (TAU/16)
	var half_snap_angle = snap_angle / 2
	var snapped_direction = snappedf(angle + half_snap_angle, snap_angle) - half_snap_angle
	var mouse = get_local_mouse_position()
	angle = snappedf(mouse.angle(), PI/8) / (PI/8)
	angle = wrapi(int(angle), 0, 16)
