From cab19045624fbddd5affd71b6ca7e52bdef004d5 Mon Sep 17 00:00:00 2001 From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com> Date: Sun, 26 Mar 2023 17:38:51 +0200 Subject: [PATCH] fixed steps skipping --- source/funkin/menus/StoryMenuState.hx | 2 ++ source/funkin/system/Conductor.hx | 36 +++++++++++++++++++++------ 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/source/funkin/menus/StoryMenuState.hx b/source/funkin/menus/StoryMenuState.hx index 1efb8a8a..956fb36b 100644 --- a/source/funkin/menus/StoryMenuState.hx +++ b/source/funkin/menus/StoryMenuState.hx @@ -173,6 +173,8 @@ class StoryMenuState extends MusicBeatState { characterSprites.members[i].changeCharacter(characters[weeks[curWeek].chars[i]]); changeDifficulty(0, true); + + MemoryUtil.clearMinor(); } var __oldDiffName = null; diff --git a/source/funkin/system/Conductor.hx b/source/funkin/system/Conductor.hx index 491b1ccf..1cd85181 100644 --- a/source/funkin/system/Conductor.hx +++ b/source/funkin/system/Conductor.hx @@ -196,25 +196,45 @@ class Conductor curBeatFloat = curStepFloat / stepsPerBeat; curMeasureFloat = curBeatFloat / beatsPerMesure; + var oldStep = curStep; + var oldBeat = curBeat; + var oldMeasure = curMeasure; if (curStep != (curStep = Std.int(curStepFloat))) { // updates step __updateBeat = curBeat != (curBeat = Std.int(curBeatFloat)); __updateMeasure = __updateBeat && (curMeasure != (curMeasure = Std.int(curMeasureFloat))); - onStepHit.dispatch(curStep); - if (__updateBeat) - onBeatHit.dispatch(curBeat); + if (curStep > oldStep) { + for(i in oldStep...curStep) { + onStepHit.dispatch(i+1); + } + } + if (__updateBeat && curBeat > oldBeat) { + for(i in oldBeat...curBeat) { + onBeatHit.dispatch(i+1); + } + } if (FlxG.state is IBeatReceiver) { var state = FlxG.state; while(state != null) { if (state is IBeatReceiver && (state.subState == null || state.persistentUpdate)) { var st = cast(state, IBeatReceiver); - st.stepHit(curStep); - if (__updateBeat) - st.beatHit(curBeat); - if (__updateMeasure) - st.measureHit(curMeasure); + if (curStep > oldStep) { + for(i in oldStep...curStep) { + st.stepHit(i+1); + } + } + if (__updateBeat && curBeat > oldBeat) { + for(i in oldBeat...curBeat) { + st.beatHit(i+1); + } + } + if (__updateMeasure && curMeasure > oldMeasure) { + for(i in oldMeasure...curMeasure) { + st.measureHit(i+1); + } + } } state = state.subState; }