extends SceneTree ## Verifica la colonna sonora in loop: nodo presente, stream OGG con loop attivo, ## volume da sottofondo, durata attesa e riproduzione avviata. const EXPECTED_LENGTH := 57.6 const EXPECTED_VOLUME_DB := -11.0 func _initialize() -> void: call_deferred("run_test") func run_test() -> void: var world = load("res://scenes/main.tscn").instantiate() root.add_child(world) world.start_game("Test", false) # come premere GIOCA, senza toccare il profilo salvato await process_frame var players := get_nodes_in_group("music") assert(players.size() == 1) var music: AudioStreamPlayer = players[0] assert(music.name == "Music") assert(music.stream is AudioStreamOggVorbis) assert(music.stream.loop) assert(absf(music.volume_db - EXPECTED_VOLUME_DB) < 0.001) var length: float = music.stream.get_length() assert(absf(length - EXPECTED_LENGTH) < 0.3) assert(music.playing) var first := music.get_playback_position() await create_timer(0.5).timeout assert(music.playing) var second := music.get_playback_position() print("PASS: Music loop=%s durata=%.2fs volume=%.1fdB posizione %.2f -> %.2f | driver audio: %s" % [music.stream.loop, length, music.volume_db, first, second, AudioServer.get_driver_name()]) # La musica deve restare in riproduzione anche a giocatore morto. world.player.take_damage(9999) await create_timer(0.3).timeout assert(music.playing) print("PASS: musica attiva anche dopo la morte del giocatore") world.queue_free() await process_frame quit()