extends CharacterBody2D

const move_speed = 400
const acceleration = 0.25
const max_boost_speed = 800

var previous_direction = Vector2.ZERO
var boost_speed = 0
var flute = null

func _ready() -> void:
	flute = load("res://scripts/Instrument/Flute.gd").new()
	flute.set_scene_parent(get_tree().get_root())



func _physics_process(delta: float) -> void:
	move_and_slide()

func _process(delta: float) -> void:
	var direction : Vector2 = Vector2.ZERO
	direction.x = Input.get_action_raw_strength("BOUGER_DROITE") - Input.get_action_raw_strength("BOUGER_GAUCHE")
	direction.y = Input.get_action_raw_strength("BOUGER_BAS") - Input.get_action_raw_strength("BOUGER_HAUT")
	

	if direction != Vector2.ZERO:
		if direction == previous_direction:
			if direction.x != 0 and direction.y != 0:
				boost_speed = min(boost_speed + acceleration / 16, (max_boost_speed - move_speed) / 8)
			else:
				boost_speed = min(boost_speed + acceleration, max_boost_speed - move_speed)
		else:
			boost_speed = 0
			
	previous_direction = direction
	velocity = direction * (move_speed + boost_speed)
	
	if Input.is_action_just_pressed("JOUER_MUSIQUE_HAUT") or Input.is_action_just_pressed("JOUER_MUSIQUE_BAS") or Input.is_action_just_pressed("JOUER_MUSIQUE_DROITE") or Input.is_action_just_pressed("JOUER_MUSIQUE_GAUCHE"):
		var direction_balle = Vector2.ZERO
		var angle = 0
		if Input.is_action_just_pressed("JOUER_MUSIQUE_HAUT"):
			direction_balle = Vector2(0, -1)
			angle = 180
		elif Input.is_action_just_pressed("JOUER_MUSIQUE_BAS"):
			direction_balle = Vector2(0, 1)
			angle = 0
		elif Input.is_action_just_pressed("JOUER_MUSIQUE_DROITE"):
			direction_balle = Vector2(1, 0)
			angle = 270
		elif Input.is_action_just_pressed("JOUER_MUSIQUE_GAUCHE"):
			direction_balle = Vector2(-1, 0)
			angle = 90

		flute.jouer_melodie(position, direction_balle, angle)
	pass
