diff --git a/osu.Game.Rulesets.Osu/OsuAutoReplay.cs b/osu.Game.Rulesets.Osu/OsuAutoReplay.cs index 4e10179819..76ddb48730 100644 --- a/osu.Game.Rulesets.Osu/OsuAutoReplay.cs +++ b/osu.Game.Rulesets.Osu/OsuAutoReplay.cs @@ -138,8 +138,8 @@ namespace osu.Game.Rulesets.Osu if (h is Spinner) { - targetPosition.X = Frames[Frames.Count - 1].MouseX; - targetPosition.Y = Frames[Frames.Count - 1].MouseY; + targetPosition.X = Frames[Frames.Count - 1].Position.X; + targetPosition.Y = Frames[Frames.Count - 1].Position.Y; Vector2 difference = spinner_centre - targetPosition; @@ -193,7 +193,7 @@ namespace osu.Game.Rulesets.Osu addFrameToReplay(lastFrame); } - Vector2 lastPosition = new Vector2(lastFrame.MouseX, lastFrame.MouseY); + Vector2 lastPosition = lastFrame.Position; double timeDifference = applyModsToTime(h.StartTime - lastFrame.Time); diff --git a/osu.Game.Rulesets.Taiko/Replays/TaikoAutoReplay.cs b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoReplay.cs index a8187d68ab..df862a5cb0 100644 --- a/osu.Game.Rulesets.Taiko/Replays/TaikoAutoReplay.cs +++ b/osu.Game.Rulesets.Taiko/Replays/TaikoAutoReplay.cs @@ -24,8 +24,8 @@ namespace osu.Game.Rulesets.Taiko.Replays { bool hitButton = true; - Frames.Add(new ReplayFrame(-100000, 320, 240, ReplayButtonState.None)); - Frames.Add(new ReplayFrame(beatmap.HitObjects[0].StartTime - 1000, 320, 240, ReplayButtonState.None)); + Frames.Add(new ReplayFrame(-100000, null, null, ReplayButtonState.None)); + Frames.Add(new ReplayFrame(beatmap.HitObjects[0].StartTime - 1000, null, null, ReplayButtonState.None)); for (int i = 0; i < beatmap.HitObjects.Count; i++) { @@ -64,7 +64,7 @@ namespace osu.Game.Rulesets.Taiko.Replays break; } - Frames.Add(new ReplayFrame(j, 0, 0, button)); + Frames.Add(new ReplayFrame(j, null, null, button)); d = (d + 1) % 4; if (++count > req) break; @@ -74,7 +74,7 @@ namespace osu.Game.Rulesets.Taiko.Replays { foreach (var tick in drumRoll.Ticks) { - Frames.Add(new ReplayFrame(tick.StartTime, 0, 0, hitButton ? ReplayButtonState.Left1 : ReplayButtonState.Left2)); + Frames.Add(new ReplayFrame(tick.StartTime, null, null, hitButton ? ReplayButtonState.Left1 : ReplayButtonState.Left2)); hitButton = !hitButton; } } @@ -95,18 +95,18 @@ namespace osu.Game.Rulesets.Taiko.Replays button = hitButton ? ReplayButtonState.Left1 : ReplayButtonState.Left2; } - Frames.Add(new ReplayFrame(h.StartTime, 0, 0, button)); + Frames.Add(new ReplayFrame(h.StartTime, null, null, button)); } else throw new Exception("Unknown hit object type."); - Frames.Add(new ReplayFrame(endTime + KEY_UP_DELAY, 0, 0, ReplayButtonState.None)); + Frames.Add(new ReplayFrame(endTime + KEY_UP_DELAY, null, null, ReplayButtonState.None)); if (i < beatmap.HitObjects.Count - 1) { double waitTime = beatmap.HitObjects[i + 1].StartTime - 1000; if (waitTime > endTime) - Frames.Add(new ReplayFrame(waitTime, 0, 0, ReplayButtonState.None)); + Frames.Add(new ReplayFrame(waitTime, null, null, ReplayButtonState.None)); } hitButton = !hitButton; diff --git a/osu.Game/Database/ScoreDatabase.cs b/osu.Game/Database/ScoreDatabase.cs index 99fa9fbf9a..8ea836aceb 100644 --- a/osu.Game/Database/ScoreDatabase.cs +++ b/osu.Game/Database/ScoreDatabase.cs @@ -108,7 +108,7 @@ namespace osu.Game.Database using (var lzma = new LzmaStream(properties, replayInStream, compressedSize, outSize)) using (var reader = new StreamReader(lzma)) - score.Replay = createReplay(reader); + score.Replay = createLegacyReplay(reader); } } @@ -116,11 +116,11 @@ namespace osu.Game.Database } /// - /// Creates a replay which is read from a stream. + /// Creates a legacy replay which is read from a stream. /// /// The stream reader. - /// The replay. - private Replay createReplay(StreamReader reader) + /// The legacy replay. + private Replay createLegacyReplay(StreamReader reader) { var frames = new List(); diff --git a/osu.Game/Rulesets/Replays/ReplayFrame.cs b/osu.Game/Rulesets/Replays/ReplayFrame.cs index 31f952abdf..b2bda84851 100644 --- a/osu.Game/Rulesets/Replays/ReplayFrame.cs +++ b/osu.Game/Rulesets/Replays/ReplayFrame.cs @@ -7,12 +7,12 @@ namespace osu.Game.Rulesets.Replays { public class ReplayFrame { - public Vector2 Position => new Vector2(MouseX, MouseY); + public Vector2 Position => new Vector2(MouseX ?? 0, MouseY ?? 0); - public bool IsImportant => MouseLeft || MouseRight; + public bool IsImportant => (MouseX.HasValue && MouseY.HasValue) && (MouseLeft || MouseRight); - public float MouseX; - public float MouseY; + public float? MouseX; + public float? MouseY; public bool MouseLeft => MouseLeft1 || MouseLeft2; public bool MouseRight => MouseRight1 || MouseRight2; @@ -55,10 +55,10 @@ namespace osu.Game.Rulesets.Replays } - public ReplayFrame(double time, float posX, float posY, ReplayButtonState buttonState) + public ReplayFrame(double time, float? mouseX, float? mouseY, ReplayButtonState buttonState) { - MouseX = posX; - MouseY = posY; + MouseX = mouseX; + MouseY = mouseY; ButtonState = buttonState; Time = time; }