mirror of
https://github.com/osukey/osukey.git
synced 2025-05-09 23:57:18 +09:00
Fix some huge oversights
This commit is contained in:
parent
e9a22a5c5d
commit
2bd75fd8ae
@ -75,17 +75,8 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
Ruleset = new OsuRuleset().RulesetInfo
|
Ruleset = new OsuRuleset().RulesetInfo
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
AddUntilStep(() => Beatmap.Value.BeatmapLoaded, "Wait until beatmap is loaded");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[SetUp]
|
|
||||||
public void Setup() => Schedule(() =>
|
|
||||||
{
|
|
||||||
allJudgedFired = false;
|
|
||||||
judgementResults = new List<JudgementResult>();
|
|
||||||
});
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Scenario:
|
/// Scenario:
|
||||||
/// - Press a key before a slider starts
|
/// - Press a key before a slider starts
|
||||||
@ -95,21 +86,15 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
/// A passing test case will have the cursor lose tracking on replay frame 3.
|
/// A passing test case will have the cursor lose tracking on replay frame 3.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Test]
|
[Test]
|
||||||
public void TestLeftBeforeSliderThenRight()
|
public void TestInvalidKeyTransfer()
|
||||||
{
|
{
|
||||||
AddStep("Invalid key transfer test", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
||||||
{
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking lost", assertMidSliderJudgementFail);
|
AddAssert("Tracking lost", assertMidSliderJudgementFail);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,19 +109,13 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestLeftBeforeSliderThenRightThenLettingGoOfLeft()
|
public void TestLeftBeforeSliderThenRightThenLettingGoOfLeft()
|
||||||
{
|
{
|
||||||
AddStep("Left to both to right test", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start },
|
||||||
{
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_during_slide_1 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.RightButton }, Time = time_during_slide_2 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_during_slide_1 },
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.RightButton }, Time = time_during_slide_2 },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking retained", assertGreatJudge);
|
AddAssert("Tracking retained", assertGreatJudge);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -151,19 +130,13 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestTrackingRetentionLeftRightLeft()
|
public void TestTrackingRetentionLeftRightLeft()
|
||||||
{
|
{
|
||||||
AddStep("Tracking retention test", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
||||||
{
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.RightButton }, Time = time_during_slide_1 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.RightButton }, Time = time_during_slide_1 },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking retained", assertGreatJudge);
|
AddAssert("Tracking retained", assertGreatJudge);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,19 +151,13 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestTrackingLeftBeforeSliderToRight()
|
public void TestTrackingLeftBeforeSliderToRight()
|
||||||
{
|
{
|
||||||
AddStep("Tracking retention test", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
||||||
{
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.RightButton }, Time = time_during_slide_1 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.RightButton }, Time = time_during_slide_1 },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking retained", assertGreatJudge);
|
AddAssert("Tracking retained", assertGreatJudge);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,17 +171,11 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestTrackingPreclicked()
|
public void TestTrackingPreclicked()
|
||||||
{
|
{
|
||||||
AddStep("Tracking retention test", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
||||||
{
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking retained, sliderhead miss", assertHeadMissTailTracked);
|
AddAssert("Tracking retained, sliderhead miss", assertHeadMissTailTracked);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -230,21 +191,15 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestTrackingReturnMidSlider()
|
public void TestTrackingReturnMidSlider()
|
||||||
{
|
{
|
||||||
AddStep("Mid-sldier tracking re-acquisition", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start },
|
||||||
{
|
new OsuReplayFrame { Position = new Vector2(150, 150), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start },
|
new OsuReplayFrame { Position = new Vector2(200, 200), Actions = { OsuAction.LeftButton }, Time = time_during_slide_2 },
|
||||||
new OsuReplayFrame { Position = new Vector2(150, 150), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_3 },
|
||||||
new OsuReplayFrame { Position = new Vector2(200, 200), Actions = { OsuAction.LeftButton }, Time = time_during_slide_2 },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_4 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_3 },
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_4 },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking re-acquired", assertMidSliderJudgements);
|
AddAssert("Tracking re-acquired", assertMidSliderJudgements);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,22 +216,16 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestTrackingReturnMidSliderKeyDownBefore()
|
public void TestTrackingReturnMidSliderKeyDownBefore()
|
||||||
{
|
{
|
||||||
AddStep("Key held down before slider, mid-slider tracking re-acquisition", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
||||||
{
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
new OsuReplayFrame { Position = new Vector2(200, 200), Actions = { OsuAction.LeftButton }, Time = time_during_slide_2 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_3 },
|
||||||
new OsuReplayFrame { Position = new Vector2(200, 200), Actions = { OsuAction.LeftButton }, Time = time_during_slide_2 },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_4 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_3 },
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_4 },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking lost", assertMidSliderJudgementFail);
|
AddAssert("Tracking lost", assertMidSliderJudgementFail);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,20 +240,14 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestTrackingMidSlider()
|
public void TestTrackingMidSlider()
|
||||||
{
|
{
|
||||||
AddStep("Mid-slider new tracking acquisition", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(150, 150), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
||||||
{
|
new OsuReplayFrame { Position = new Vector2(200, 200), Actions = { OsuAction.LeftButton }, Time = time_during_slide_2 },
|
||||||
new OsuReplayFrame { Position = new Vector2(150, 150), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_3 },
|
||||||
new OsuReplayFrame { Position = new Vector2(200, 200), Actions = { OsuAction.LeftButton }, Time = time_during_slide_2 },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_4 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_3 },
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_4 },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking acquired", assertMidSliderJudgements);
|
AddAssert("Tracking acquired", assertMidSliderJudgements);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -319,22 +262,16 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
/// A passing test case will have the slider track the cursor after the cursor enters the slider body.
|
/// A passing test case will have the slider track the cursor after the cursor enters the slider body.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Test]
|
[Test]
|
||||||
public void TestTrackingReleasedKeys()
|
public void TestMidSliderTrackingAcquired()
|
||||||
{
|
{
|
||||||
AddStep("Mid-slider new tracking acquisition", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
||||||
{
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_before_slider },
|
new OsuReplayFrame { Position = new Vector2(100, 100), Time = time_during_slide_1 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton, OsuAction.RightButton }, Time = time_slider_start },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_2 },
|
||||||
new OsuReplayFrame { Position = new Vector2(100, 100), Time = time_during_slide_1 },
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_2 },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking acquired", assertMidSliderJudgements);
|
AddAssert("Tracking acquired", assertMidSliderJudgements);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -351,45 +288,25 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestTrackingReleasedValidKey()
|
public void TestTrackingReleasedValidKey()
|
||||||
{
|
{
|
||||||
AddStep("Mid-slider new tracking acquisition", () =>
|
performTest(new List<ReplayFrame>
|
||||||
{
|
{
|
||||||
var frames = new List<ReplayFrame>
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start },
|
||||||
{
|
new OsuReplayFrame { Position = new Vector2(100, 100), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_slider_start },
|
new OsuReplayFrame { Position = new Vector2(100, 100), Time = time_during_slide_2 },
|
||||||
new OsuReplayFrame { Position = new Vector2(100, 100), Actions = { OsuAction.LeftButton }, Time = time_during_slide_1 },
|
new OsuReplayFrame { Position = new Vector2(100, 100), Actions = { OsuAction.LeftButton }, Time = time_during_slide_3 },
|
||||||
new OsuReplayFrame { Position = new Vector2(100, 100), Time = time_during_slide_2 },
|
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_4 },
|
||||||
new OsuReplayFrame { Position = new Vector2(100, 100), Actions = { OsuAction.LeftButton }, Time = time_during_slide_3 },
|
|
||||||
new OsuReplayFrame { Position = new Vector2(0, 0), Actions = { OsuAction.LeftButton }, Time = time_during_slide_4 },
|
|
||||||
};
|
|
||||||
|
|
||||||
performTest(frames);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
waitForJudged();
|
|
||||||
AddAssert("Tracking acquired", assertMidSliderJudgements);
|
AddAssert("Tracking acquired", assertMidSliderJudgements);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void waitForJudged() => AddUntilStep(() => allJudgedFired, "Wait for all judged");
|
private bool assertGreatJudge() => judgementResults.Last().Type == HitResult.Great;
|
||||||
|
|
||||||
private bool assertGreatJudge()
|
private bool assertHeadMissTailTracked() => judgementResults[judgementResults.Count - 2].Type == HitResult.Great && judgementResults.First().Type == HitResult.Miss;
|
||||||
{
|
|
||||||
return judgementResults.Last().Type == HitResult.Great;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool assertHeadMissTailTracked()
|
private bool assertMidSliderJudgements() => judgementResults[judgementResults.Count - 2].Type == HitResult.Great;
|
||||||
{
|
|
||||||
return judgementResults[judgementResults.Count - 2].Type == HitResult.Great && judgementResults.First().Type == HitResult.Miss;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool assertMidSliderJudgements()
|
private bool assertMidSliderJudgementFail() => judgementResults[judgementResults.Count - 2].Type == HitResult.Miss;
|
||||||
{
|
|
||||||
return judgementResults[judgementResults.Count - 2].Type == HitResult.Great;
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool assertMidSliderJudgementFail()
|
|
||||||
{
|
|
||||||
return judgementResults[judgementResults.Count - 2].Type == HitResult.Miss;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void performTest(List<ReplayFrame> frames)
|
private void performTest(List<ReplayFrame> frames)
|
||||||
{
|
{
|
||||||
@ -398,17 +315,27 @@ namespace osu.Game.Rulesets.Osu.Tests
|
|||||||
// Likely requires some discussion regarding how first frame inputs should be handled.
|
// Likely requires some discussion regarding how first frame inputs should be handled.
|
||||||
frames.Insert(0, new OsuReplayFrame());
|
frames.Insert(0, new OsuReplayFrame());
|
||||||
|
|
||||||
LoadComponentAsync(new ScoreAccessibleReplayPlayer(new Score { Replay = new Replay { Frames = frames } })
|
var p = new ScoreAccessibleReplayPlayer(new Score { Replay = new Replay { Frames = frames } })
|
||||||
{
|
{
|
||||||
AllowPause = false,
|
AllowPause = false,
|
||||||
AllowLeadIn = false,
|
AllowLeadIn = false,
|
||||||
AllowResults = false
|
AllowResults = false
|
||||||
}, p =>
|
};
|
||||||
|
|
||||||
|
p.OnLoadComplete += _ =>
|
||||||
{
|
{
|
||||||
Child = p;
|
|
||||||
p.ScoreProcessor.NewJudgement += result => judgementResults.Add(result);
|
p.ScoreProcessor.NewJudgement += result => judgementResults.Add(result);
|
||||||
p.ScoreProcessor.AllJudged += () => { allJudgedFired = true; };
|
p.ScoreProcessor.AllJudged += () => { allJudgedFired = true; };
|
||||||
|
};
|
||||||
|
|
||||||
|
AddStep("load player", () => LoadScreen(p));
|
||||||
|
AddUntilStep(() => p.IsLoaded, "Wait until player is loaded");
|
||||||
|
AddStep("reset counts", () =>
|
||||||
|
{
|
||||||
|
allJudgedFired = false;
|
||||||
|
judgementResults = new List<JudgementResult>();
|
||||||
});
|
});
|
||||||
|
AddUntilStep(() => allJudgedFired, "Wait for all judged");
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ScoreAccessibleReplayPlayer : ReplayPlayer
|
private class ScoreAccessibleReplayPlayer : ReplayPlayer
|
||||||
|
Loading…
x
Reference in New Issue
Block a user