gae_wild_jam/scripts/level_up_manager.gd

68 lines
2.2 KiB
GDScript

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)