extends Control @onready var perk_effects = get_node("/root/Game/PerkEffects") var level_sound = preload("res://assets/music&sfx/sfx/lesiakower-level-up-enhancement-8-bit-retro-sound-effect-153002.mp3") var select_sound = preload("res://assets/music&sfx/sfx/47313572-experimental-8-bit-sound-270302.mp3") var card_shuffle_sound = preload("res://assets/music&sfx/sfx/card_shuffle.wav") var perks var player = AudioStreamPlayer.new() var select_player = AudioStreamPlayer.new() var shuffle_player = AudioStreamPlayer.new() @onready var perkCard = preload("res://scenes/PerkCard.tscn") var _particles_scene = preload("res://scenes/level_up_particles.tscn") func _ready() -> void: perks = perk_effects.available_perks get_node("/root/Game/DropManager").leveled_up.connect(show_perks) add_child(player) add_child(select_player) add_child(shuffle_player) player.volume_db = -10 select_player.volume_db = -10 shuffle_player.volume_db = -10 select_player.stream = select_sound shuffle_player.stream = card_shuffle_sound func _process(delta: float) -> void: pass func show_perks(): player.stream = level_sound player.play() if perks.is_empty(): return var tween = create_tween() tween.tween_property($ColorRect, "color:a", 0.6, 0.3) get_tree().paused = true var shuffled = perks.duplicate() shuffled.shuffle() var chosen = shuffled.slice(0, 3) await get_tree().create_timer(0.4).timeout for x in chosen: var card = perkCard.instantiate() $HBoxContainer.add_child(card) card.setup(x, func(): select_perk(x), func(): select_player.play()) shuffle_player.play() await get_tree().create_timer(0.25).timeout func select_perk(perk): perk.effect.call() get_tree().paused = false _spawn_level_up_particles(get_node("/root/Game/Witch").global_position) _spawn_level_up_particles(get_node("/root/Game/Player").global_position) perks.erase(perk) for child in $HBoxContainer.get_children(): child.queue_free() var tween = create_tween() tween.tween_property($ColorRect, "color:a", 0.0, 0.3) await tween.finished func _spawn_level_up_particles(pos: Vector2) -> void: var p = _particles_scene.instantiate() p.global_position = pos p.z_index = 10 get_node("/root/Game").add_child(p) get_tree().create_timer(1.2).timeout.connect(p.queue_free)