extends CharacterBody2D @export var interface : Control 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 var tambour = null var lyre = null var flute_timer = 0.0 var tambour_timer = 0.0 var lyre_timer = 0.0 var flute_cooldown = 0.5 var tambour_cooldown = 3.0 var lyre_cooldown = 1 var instrument_list = [ "", "" ] var vie = 10 func _ready() -> void: flute = load("res://scripts/Instrument/Flute.gd").new() flute.set_scene_parent(get_tree().get_root()) tambour = load("res://scripts/Instrument/Tambour.gd").new() tambour.set_scene_parent(get_tree().get_root()) lyre = load("res://scripts/Instrument/Lyre.gd").new() lyre.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) else: velocity = Vector2.ZERO var direction_balle = Vector2.ZERO var angle = 0 var angle_lyre = 0 if Input.is_action_pressed("JOUER_MUSIQUE_HAUT"): direction_balle = Vector2(0, -1) angle = 180 angle_lyre = 270 elif Input.is_action_pressed("JOUER_MUSIQUE_BAS"): direction_balle = Vector2(0, 1) angle_lyre = 90 elif Input.is_action_pressed("JOUER_MUSIQUE_DROITE"): direction_balle = Vector2(1, 0) angle = 270 elif Input.is_action_pressed("JOUER_MUSIQUE_GAUCHE"): direction_balle = Vector2(-1, 0) angle = 90 angle_lyre = 180 if flute_timer > 0: flute_timer -= delta if tambour_timer > 0: tambour_timer -= delta if lyre_timer > 0: lyre_timer -= delta if flute and flute_timer <= 0.0 and direction_balle != Vector2.ZERO: flute.jouer_melodie(position, direction_balle, angle) flute_timer = flute_cooldown if tambour and tambour_timer <= 0.0 and direction_balle != Vector2.ZERO: tambour.jouer_melodie(position) tambour_timer = tambour_cooldown if lyre and lyre_timer <= 0.0 and direction_balle != Vector2.ZERO: lyre.jouer_melodie(position, direction_balle, angle_lyre) lyre_timer = lyre_cooldown func take_damage(dmg : int) : vie -= dmg interface.set_life(vie)