fix replay hit results
This commit is contained in:
@@ -85,7 +85,9 @@ public class Circle extends GameObject {
|
||||
|
||||
@Override
|
||||
public GameObject clone(GameData data) {
|
||||
return new Circle(hitObject, game, data, comboColorIndex, comboEnd);
|
||||
Circle c = new Circle(hitObject, game, data, comboColorIndex, comboEnd);
|
||||
c.isreplay = true;
|
||||
return c;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -170,12 +172,13 @@ public class Circle extends GameObject {
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean isreplay;
|
||||
@Override
|
||||
public boolean update(boolean overlap, int delta, int mouseX, int mouseY, boolean keyPressed, int trackPosition) {
|
||||
int time = hitObject.getTime();
|
||||
|
||||
int[] hitResultOffset = game.getHitResultOffsets();
|
||||
boolean isAutoMod = GameMod.AUTO.isActive();
|
||||
boolean isAutoMod = !isreplay && GameMod.AUTO.isActive();
|
||||
|
||||
if (trackPosition > time + hitResultOffset[GameData.HIT_50]) {
|
||||
if (isAutoMod) {// "auto" mod: catch any missed notes due to lag
|
||||
|
||||
@@ -191,7 +191,9 @@ public class Slider extends GameObject {
|
||||
|
||||
@Override
|
||||
public GameObject clone(GameData data) {
|
||||
return new Slider(hitObject, game, data, comboColorIndex, comboEnd);
|
||||
Slider s = new Slider(hitObject, game, data, comboColorIndex, comboEnd);
|
||||
s.isreplay = true;
|
||||
return s;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -627,11 +629,12 @@ public class Slider extends GameObject {
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isreplay;
|
||||
@Override
|
||||
public boolean update(boolean overlap, int delta, int mouseX, int mouseY, boolean keyPressed, int trackPosition) {
|
||||
int repeatCount = hitObject.getRepeatCount();
|
||||
int[] hitResultOffset = game.getHitResultOffsets();
|
||||
boolean isAutoMod = GameMod.AUTO.isActive();
|
||||
boolean isAutoMod = !isreplay && GameMod.AUTO.isActive();
|
||||
|
||||
if (!sliderClickedInitial) {
|
||||
int time = hitObject.getTime();
|
||||
|
||||
@@ -1558,6 +1558,9 @@ public class Game extends ComplexOpsuState {
|
||||
}
|
||||
|
||||
gameObjects = new GameObject[beatmap.objects.length];
|
||||
for (ReplayPlayback replayPlayback : replays) {
|
||||
replayPlayback.gameObjects = new GameObject[gameObjects.length];
|
||||
}
|
||||
playbackSpeed = PlaybackSpeed.NORMAL;
|
||||
|
||||
// reset game data
|
||||
@@ -1604,6 +1607,9 @@ public class Game extends ComplexOpsuState {
|
||||
} else if (hitObject.isSpinner()) {
|
||||
gameObjects[i] = new Spinner(hitObject, this, data);
|
||||
}
|
||||
for (ReplayPlayback replayPlayback : replays) {
|
||||
replayPlayback.gameObjects[i] = gameObjects[i].clone(replayPlayback.gdata);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
String message = String.format("Failed to create %s at index %d:\n%s", hitObject.getTypeName(), i, hitObject.toString());
|
||||
Log.error(message, e);
|
||||
@@ -1718,14 +1724,6 @@ public class Game extends ComplexOpsuState {
|
||||
}
|
||||
}
|
||||
|
||||
for (ReplayPlayback replayPlayback : replays) {
|
||||
GameObject[] objs = new GameObject[gameObjects.length];
|
||||
for (int i = 0; i < objs.length; i++) {
|
||||
objs[i] = gameObjects[i].clone(replayPlayback.new GData());
|
||||
}
|
||||
replayPlayback.setGameObjects(objs);
|
||||
}
|
||||
|
||||
Dancer.instance.setGameObjects(gameObjects);
|
||||
storyboardOverlay.setGameObjects(gameObjects);
|
||||
if (!skippedToCheckpoint) {
|
||||
|
||||
Reference in New Issue
Block a user