This commit is contained in:
team3
2026-09-16 17:55:38 +02:00
parent c9416ed3c6
commit f012dd7cd5
17 changed files with 878 additions and 160 deletions

View File

@@ -17,6 +17,7 @@ signal ready_for_play()
var sounds: Dictionary = {}
var music_on := true
var loaded := false
var music_loaded := false
var clacks := 0 ## Zähler, damit sich das testen lässt
var last_played := "" ## zuletzt gestarteter Klang
@@ -63,28 +64,32 @@ func _exit_tree() -> void:
## Läuft im Thread: nur Rechnen, keine Godot-Knoten anfassen.
func _build_async() -> void:
var pcm: Dictionary = Sfx.build_all()
pcm["music"] = Sfx.build_music()
call_deferred("_finish_build", pcm)
call_deferred("_publish_sfx", Sfx.build_all())
call_deferred("_publish_music", Sfx.build_music())
func _finish_build(pcm: Dictionary) -> void:
if _thread != null:
_thread.wait_to_finish()
_thread = null
## Die kurzen Klänge sind schnell fertig - sie gehen zuerst live.
func _publish_sfx(pcm: Dictionary) -> void:
for name in pcm.keys():
var loop: bool = name == "music" or LOOPS.has(name)
sounds[name] = Synth.to_stream(pcm[name], loop)
_music.stream = sounds["music"]
_music.volume_db = MUSIC_DB if music_on else -80.0
_music.play()
sounds[name] = Synth.to_stream(pcm[name], LOOPS.has(name))
_rumble.stream = sounds["rumble"]
_rumble.play()
_squeal.stream = sounds["squeal"]
_squeal.play()
loaded = true
print("[audio] %d Klänge in %d ms erzeugt" % [sounds.size(), Time.get_ticks_msec() - _t0])
print("[audio] %d Klänge in %d ms" % [sounds.size(), Time.get_ticks_msec() - _t0])
ready_for_play.emit()
func _publish_music(pcm: PackedByteArray) -> void:
if _thread != null:
_thread.wait_to_finish()
_thread = null
sounds["music"] = Synth.to_stream(pcm, true)
_music.stream = sounds["music"]
_music.volume_db = MUSIC_DB if music_on else -80.0
_music.play()
music_loaded = true
print("[audio] Musik in %d ms" % (Time.get_ticks_msec() - _t0))
func toggle_music() -> bool:
music_on = not music_on
_music.volume_db = MUSIC_DB if music_on else -80.0