Fix some issues with Weekend 1.

This commit is contained in:
EliteMasterEric 2024-03-26 23:24:59 -04:00
parent 99ea7bbe84
commit 6b35898ed9
5 changed files with 25 additions and 14 deletions

2
assets

@ -1 +1 @@
Subproject commit 5f1726f1b0c11fc747b7473708cf4e5f28be05f1 Subproject commit 0a2b524a8dd1d94909e2f078dbdcb191e1b55b8c

View file

@ -1,17 +1,18 @@
package funkin.audio; package funkin.audio;
import flixel.sound.FlxSound;
import flixel.group.FlxGroup.FlxTypedGroup; import flixel.group.FlxGroup.FlxTypedGroup;
import flixel.util.FlxSignal.FlxTypedSignal; import flixel.math.FlxMath;
import flixel.sound.FlxSound;
import flixel.system.FlxAssets.FlxSoundAsset; 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.SongData.SongMusicData;
import funkin.data.song.SongRegistry; import funkin.data.song.SongRegistry;
import funkin.audio.waveform.WaveformData; import funkin.util.tools.ICloneable;
import openfl.media.SoundMixer;
import funkin.audio.waveform.WaveformDataParser;
import flixel.math.FlxMath;
import openfl.Assets; import openfl.Assets;
import openfl.media.SoundMixer;
#if (openfl >= "8.0.0") #if (openfl >= "8.0.0")
import openfl.utils.AssetType; import openfl.utils.AssetType;
#end #end
@ -325,6 +326,7 @@ class FunkinSound extends FlxSound implements ICloneable<FunkinSound>
if (FlxG.sound.music != null) if (FlxG.sound.music != null)
{ {
FlxG.sound.music.fadeTween?.cancel();
FlxG.sound.music.stop(); FlxG.sound.music.stop();
FlxG.sound.music.kill(); FlxG.sound.music.kill();
} }
@ -401,6 +403,8 @@ class FunkinSound extends FlxSound implements ICloneable<FunkinSound>
{ {
// trace('[FunkinSound] Destroying sound "${this._label}"'); // trace('[FunkinSound] Destroying sound "${this._label}"');
super.destroy(); super.destroy();
FlxTween.cancelTweensOf(this);
this._label = 'unknown';
} }
/** /**

View file

@ -151,11 +151,14 @@ class SoundGroup extends FlxTypedGroup<FunkinSound>
* Stop all the sounds in the group. * Stop all the sounds in the group.
*/ */
public function stop() public function stop()
{
if (members != null)
{ {
forEachAlive(function(sound:FunkinSound) { forEachAlive(function(sound:FunkinSound) {
sound.stop(); sound.stop();
}); });
} }
}
public override function destroy() public override function destroy()
{ {

View file

@ -160,7 +160,9 @@ class VoicesGroup extends SoundGroup
public override function destroy():Void public override function destroy():Void
{ {
playerVoices.destroy(); playerVoices.destroy();
playerVoices = null;
opponentVoices.destroy(); opponentVoices.destroy();
opponentVoices = null;
super.destroy(); super.destroy();
} }
} }

View file

@ -1925,14 +1925,14 @@ class PlayState extends MusicBeatSubState
FlxG.sound.music.play(true, startTimestamp - Conductor.instance.instrumentalOffset); FlxG.sound.music.play(true, startTimestamp - Conductor.instance.instrumentalOffset);
FlxG.sound.music.pitch = playbackRate; FlxG.sound.music.pitch = playbackRate;
// I am going insane. // Prevent the volume from being wrong.
FlxG.sound.music.volume = 1.0; FlxG.sound.music.volume = 1.0;
FlxG.sound.music.fadeTween?.cancel(); FlxG.sound.music.fadeTween?.cancel();
trace('Playing vocals...'); trace('Playing vocals...');
add(vocals); add(vocals);
vocals.play(); vocals.play();
vocals.volume = 1.0;
vocals.pitch = playbackRate; vocals.pitch = playbackRate;
resyncVocals(); resyncVocals();
@ -2927,6 +2927,9 @@ class PlayState extends MusicBeatSubState
// If the camera is being tweened, stop it. // If the camera is being tweened, stop it.
cancelAllCameraTweens(); cancelAllCameraTweens();
// Dispatch the destroy event.
dispatchEvent(new ScriptEvent(DESTROY, false));
if (currentConversation != null) if (currentConversation != null)
{ {
remove(currentConversation); remove(currentConversation);
@ -2970,7 +2973,6 @@ class PlayState extends MusicBeatSubState
{ {
remove(currentStage); remove(currentStage);
currentStage.kill(); currentStage.kill();
dispatchEvent(new ScriptEvent(DESTROY, false));
currentStage = null; currentStage = null;
} }