From 6b35898ed9235c5f205aebc4fee3d9693dccb049 Mon Sep 17 00:00:00 2001 From: EliteMasterEric Date: Tue, 26 Mar 2024 23:24:59 -0400 Subject: [PATCH] Fix some issues with Weekend 1. --- assets | 2 +- source/funkin/audio/FunkinSound.hx | 18 +++++++++++------- source/funkin/audio/SoundGroup.hx | 9 ++++++--- source/funkin/audio/VoicesGroup.hx | 2 ++ source/funkin/play/PlayState.hx | 8 +++++--- 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/assets b/assets index 5f1726f1b..0a2b524a8 160000 --- a/assets +++ b/assets @@ -1 +1 @@ -Subproject commit 5f1726f1b0c11fc747b7473708cf4e5f28be05f1 +Subproject commit 0a2b524a8dd1d94909e2f078dbdcb191e1b55b8c diff --git a/source/funkin/audio/FunkinSound.hx b/source/funkin/audio/FunkinSound.hx index 687860265..6520ff27f 100644 --- a/source/funkin/audio/FunkinSound.hx +++ b/source/funkin/audio/FunkinSound.hx @@ -1,17 +1,18 @@ package funkin.audio; -import flixel.sound.FlxSound; import flixel.group.FlxGroup.FlxTypedGroup; -import flixel.util.FlxSignal.FlxTypedSignal; +import flixel.math.FlxMath; +import flixel.sound.FlxSound; import flixel.system.FlxAssets.FlxSoundAsset; -import funkin.util.tools.ICloneable; +import flixel.tweens.FlxTween; +import flixel.util.FlxSignal.FlxTypedSignal; +import funkin.audio.waveform.WaveformData; +import funkin.audio.waveform.WaveformDataParser; import funkin.data.song.SongData.SongMusicData; import funkin.data.song.SongRegistry; -import funkin.audio.waveform.WaveformData; -import openfl.media.SoundMixer; -import funkin.audio.waveform.WaveformDataParser; -import flixel.math.FlxMath; +import funkin.util.tools.ICloneable; import openfl.Assets; +import openfl.media.SoundMixer; #if (openfl >= "8.0.0") import openfl.utils.AssetType; #end @@ -325,6 +326,7 @@ class FunkinSound extends FlxSound implements ICloneable if (FlxG.sound.music != null) { + FlxG.sound.music.fadeTween?.cancel(); FlxG.sound.music.stop(); FlxG.sound.music.kill(); } @@ -401,6 +403,8 @@ class FunkinSound extends FlxSound implements ICloneable { // trace('[FunkinSound] Destroying sound "${this._label}"'); super.destroy(); + FlxTween.cancelTweensOf(this); + this._label = 'unknown'; } /** diff --git a/source/funkin/audio/SoundGroup.hx b/source/funkin/audio/SoundGroup.hx index 9a754049b..020d5f5bb 100644 --- a/source/funkin/audio/SoundGroup.hx +++ b/source/funkin/audio/SoundGroup.hx @@ -152,9 +152,12 @@ class SoundGroup extends FlxTypedGroup */ public function stop() { - forEachAlive(function(sound:FunkinSound) { - sound.stop(); - }); + if (members != null) + { + forEachAlive(function(sound:FunkinSound) { + sound.stop(); + }); + } } public override function destroy() diff --git a/source/funkin/audio/VoicesGroup.hx b/source/funkin/audio/VoicesGroup.hx index 5daebc89d..91054cfb0 100644 --- a/source/funkin/audio/VoicesGroup.hx +++ b/source/funkin/audio/VoicesGroup.hx @@ -160,7 +160,9 @@ class VoicesGroup extends SoundGroup public override function destroy():Void { playerVoices.destroy(); + playerVoices = null; opponentVoices.destroy(); + opponentVoices = null; super.destroy(); } } diff --git a/source/funkin/play/PlayState.hx b/source/funkin/play/PlayState.hx index 169809a63..6dc41e3f9 100644 --- a/source/funkin/play/PlayState.hx +++ b/source/funkin/play/PlayState.hx @@ -1925,14 +1925,14 @@ class PlayState extends MusicBeatSubState FlxG.sound.music.play(true, startTimestamp - Conductor.instance.instrumentalOffset); FlxG.sound.music.pitch = playbackRate; - // I am going insane. + // Prevent the volume from being wrong. FlxG.sound.music.volume = 1.0; - FlxG.sound.music.fadeTween?.cancel(); trace('Playing vocals...'); add(vocals); vocals.play(); + vocals.volume = 1.0; vocals.pitch = playbackRate; resyncVocals(); @@ -2927,6 +2927,9 @@ class PlayState extends MusicBeatSubState // If the camera is being tweened, stop it. cancelAllCameraTweens(); + // Dispatch the destroy event. + dispatchEvent(new ScriptEvent(DESTROY, false)); + if (currentConversation != null) { remove(currentConversation); @@ -2970,7 +2973,6 @@ class PlayState extends MusicBeatSubState { remove(currentStage); currentStage.kill(); - dispatchEvent(new ScriptEvent(DESTROY, false)); currentStage = null; }