From 6229b0f60bae61eb4111c5cc063a95d528e66384 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 21 Nov 2023 00:21:19 +0900 Subject: [PATCH] audiomanager: will gracefully not play if there is nothing to play --- src/net/torvald/terrarum/audio/AudioMixer.kt | 2 +- .../terrarum/audio/TerrarumAudioFilter.kt | 2 +- .../modulebasegame/TerrarumMusicGovernor.kt | 17 ++++++----------- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/net/torvald/terrarum/audio/AudioMixer.kt b/src/net/torvald/terrarum/audio/AudioMixer.kt index cbd8690a5..94ef6aaaa 100644 --- a/src/net/torvald/terrarum/audio/AudioMixer.kt +++ b/src/net/torvald/terrarum/audio/AudioMixer.kt @@ -97,7 +97,7 @@ object AudioMixer: Disposable { init { masterTrack.filters[0] = SoftLim masterTrack.filters[1] = Buffer - masterTrack.filters[2] = Scope + masterTrack.filters[2] = Scope() fadeBus.addSidechainInput(musicTrack, 1.0) fadeBus.addSidechainInput(ambientTrack, 1.0) diff --git a/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt b/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt index e77ba46a8..4025e3dde 100644 --- a/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt +++ b/src/net/torvald/terrarum/audio/TerrarumAudioFilter.kt @@ -38,7 +38,7 @@ object SoftLim : TerrarumAudioFilter() { } } -object Scope : TerrarumAudioFilter() { +class Scope : TerrarumAudioFilter() { val backbufL = Array(BUFFER_SIZE / 16) { FloatArray(BUFFER_SIZE / 4) } val backbufR = Array(BUFFER_SIZE / 16) { FloatArray(BUFFER_SIZE / 4) } diff --git a/src/net/torvald/terrarum/modulebasegame/TerrarumMusicGovernor.kt b/src/net/torvald/terrarum/modulebasegame/TerrarumMusicGovernor.kt index 4e036e4f2..f07192a65 100644 --- a/src/net/torvald/terrarum/modulebasegame/TerrarumMusicGovernor.kt +++ b/src/net/torvald/terrarum/modulebasegame/TerrarumMusicGovernor.kt @@ -66,6 +66,9 @@ class TerrarumMusicGovernor : MusicGovernor() { songs.forEach { App.disposables.add(it.gdxMusic) } + ambients.forEach { + App.disposables.add(it.gdxMusic) + } } @@ -113,17 +116,9 @@ class TerrarumMusicGovernor : MusicGovernor() { override fun update(ingame: IngameInstance, delta: Float) { - if (songs.isEmpty()) { - if (!warningPrinted) { - warningPrinted = true - printdbg(this, "Warning: songs list is empty") - } - return - } - -// val ingame = ingame as TerrarumIngame - if (musicState == 0) musicState = STATE_INTERMISSION - if (ambState == 0) ambState = STATE_INTERMISSION + // start the song queueing if there is one to play + if (songs.isNotEmpty() && musicState == 0) musicState = STATE_INTERMISSION + if (ambients.isNotEmpty() && ambState == 0) ambState = STATE_INTERMISSION when (musicState) {