From 3b91247d122e41fe85cf4957f3bb5861fe924e22 Mon Sep 17 00:00:00 2001 From: yugecin Date: Sun, 25 Dec 2016 18:29:57 +0100 Subject: [PATCH] don't recreate knorkesliders when loading checkpoint (part of #104) --- src/itdelatrisu/opsu/states/Game.java | 30 +++++++++++++++++++-------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/itdelatrisu/opsu/states/Game.java b/src/itdelatrisu/opsu/states/Game.java index c3239624..0c29abae 100644 --- a/src/itdelatrisu/opsu/states/Game.java +++ b/src/itdelatrisu/opsu/states/Game.java @@ -1606,16 +1606,26 @@ public class Game extends BasicGameState { SoundController.mute(false); if (Options.isMergingSliders()) { - // let's create knorkesliders - List curvepoints = new ArrayList<>(); - for (GameObject gameObject : gameObjects) { - if (gameObject.isSlider()) { - ((Slider) gameObject).baseSliderFrom = curvepoints.size(); - curvepoints.addAll(Arrays.asList(((Slider) gameObject).getCurve().getCurvePoints())); + if (knorkesliders == null) { + // let's create knorkesliders + List curvepoints = new ArrayList<>(); + for (GameObject gameObject : gameObjects) { + if (gameObject.isSlider()) { + ((Slider) gameObject).baseSliderFrom = curvepoints.size(); + curvepoints.addAll(Arrays.asList(((Slider) gameObject).getCurve().getCurvePoints())); + } + } + if (curvepoints.size() > 0) { + knorkesliders = new FakeCombinedCurve(curvepoints.toArray(new Vec2f[curvepoints.size()])); + } + } else { + int base = 0; + for (GameObject gameObject : gameObjects) { + if (gameObject.isSlider()) { + ((Slider) gameObject).baseSliderFrom = base; + base += ((Slider) gameObject).getCurve().getCurvePoints().length; + } } - } - if (curvepoints.size() > 0) { - knorkesliders = new FakeCombinedCurve(curvepoints.toArray(new Vec2f[curvepoints.size()])); } } } @@ -1647,6 +1657,8 @@ public class Game extends BasicGameState { // container.setMouseGrabbed(false); skippedToCheckpoint = false; + knorkesliders = null; + sbOverlay.leave(); Dancer.instance.setGameObjects(null);