2026-10-03 13:21:53 +03:00
|
|
|
extends SceneTree
|
|
|
|
|
|
|
|
|
|
var checks: int = 0
|
|
|
|
|
var failures: int = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func _initialize() -> void:
|
|
|
|
|
call_deferred("run")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func check(condition: bool, message: String) -> void:
|
|
|
|
|
checks += 1
|
|
|
|
|
if not condition:
|
|
|
|
|
failures += 1
|
|
|
|
|
push_error(message)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func run() -> void:
|
|
|
|
|
var player := OwniverseEffectsPlayer.new()
|
|
|
|
|
root.add_child(player)
|
|
|
|
|
|
|
|
|
|
check(player.play_effect("select"), "Known effect starts")
|
|
|
|
|
check(player.stream == player._effects.select and player.playing, "Selected effect is playing")
|
|
|
|
|
var selected_stream: AudioStream = player.stream
|
|
|
|
|
check(not player.play_effect("select"), "Playing effect is not restarted")
|
|
|
|
|
check(player.stream == selected_stream and player.playing, "Rejected duplicate keeps current playback")
|
|
|
|
|
player.stop()
|
2026-10-03 13:36:33 +03:00
|
|
|
check(player.play_effect("select"), "Stopped effect can start again immediately")
|
|
|
|
|
check(player.play_effect("blast"), "Different effect starts immediately")
|
2026-10-03 13:21:53 +03:00
|
|
|
check(not player.play_effect("missing_effect"), "Unknown effect is rejected")
|
2026-10-03 13:36:33 +03:00
|
|
|
check(player.stream == player._effects.blast, "Unknown effect does not interrupt playback")
|
2026-10-03 13:21:53 +03:00
|
|
|
|
|
|
|
|
player.set_enabled(false)
|
|
|
|
|
check(player.stream_paused, "Disabling effects pauses current playback")
|
2026-10-03 13:36:33 +03:00
|
|
|
check(not player.play_effect("select") and player.stream == player._effects.blast, "Disabled player rejects new effects")
|
2026-10-03 13:21:53 +03:00
|
|
|
player.set_enabled(true)
|
|
|
|
|
check(not player.stream_paused, "Enabling effects resumes current playback")
|
|
|
|
|
|
|
|
|
|
player.stop()
|
|
|
|
|
player.stream = null
|
|
|
|
|
player.free()
|
|
|
|
|
await process_frame
|
|
|
|
|
print("Effects player: %d checks, %d failures" % [checks, failures])
|
|
|
|
|
quit(0 if failures == 0 else 1)
|