fixing notes disappearing early when exiting songs

This commit is contained in:
⍚~Nex
2024-09-16 00:06:04 +02:00
parent 615206769c
commit d8005a3166
2 changed files with 13 additions and 3 deletions
+9 -3
View File
@@ -34,10 +34,16 @@ class NoteGroup extends FlxTypedGroup<Note> {
return FlxSort.byValues(FlxSort.DESCENDING, n1.strumTime, n2.strumTime);
});
}
@:dox(hide) public var __forcedSongPos:Null<Float> = null;
@:dox(hide) private inline function __getSongPos()
return __forcedSongPos == null ? Conductor.songPosition : __forcedSongPos;
public override function update(elapsed:Float) {
i = length-1;
__loopSprite = null;
__time = Conductor.songPosition;
__time = __getSongPos();
while(i >= 0) {
__loopSprite = members[i--];
if (__loopSprite == null || !__loopSprite.exists || !__loopSprite.active) {
@@ -58,7 +64,7 @@ class NoteGroup extends FlxTypedGroup<Note> {
i = length-1;
__loopSprite = null;
__time = Conductor.songPosition;
__time = __getSongPos();
while(i >= 0) {
__loopSprite = members[i--];
if (__loopSprite == null || !__loopSprite.exists || !__loopSprite.visible)
@@ -81,7 +87,7 @@ class NoteGroup extends FlxTypedGroup<Note> {
public override function forEach(noteFunc:Note->Void, recursive:Bool = false) {
i = length-1;
__loopSprite = null;
__time = Conductor.songPosition;
__time = __getSongPos();
var oldCur = __currentlyLooping;
__currentlyLooping = true;
+4
View File
@@ -12,6 +12,7 @@ import flixel.tweens.FlxTween;
import flixel.util.FlxColor;
import funkin.options.keybinds.KeybindsOptions;
import funkin.menus.StoryMenuState;
import funkin.backend.system.Conductor;
import funkin.backend.utils.FunkinParentDisabler;
class PauseSubState extends MusicBeatSubstate
@@ -162,6 +163,9 @@ class PauseSubState extends MusicBeatSubstate
PlayState.resetSongInfos();
if (Charter.instance != null) Charter.instance.__clearStatics();
// prevents certain notes to disappear early when exiting - Nex
game.strumLines.forEachAlive(function(grp) grp.notes.__forcedSongPos = Conductor.songPosition);
CoolUtil.playMenuSong();
FlxG.switchState(PlayState.isStoryMode ? new StoryMenuState() : new FreeplayState());
}