public override void Reset() { base.Reset(); WorkingBeatmap beatmap = null; var beatmapInfo = db.Query <BeatmapInfo>().FirstOrDefault(b => b.Mode == PlayMode.Osu); if (beatmapInfo != null) { beatmap = db.GetWorkingBeatmap(beatmapInfo); } if (beatmap?.Track == null) { var objects = new List <HitObject>(); int time = 1500; for (int i = 0; i < 50; i++) { objects.Add(new HitCircle { StartTime = time, Position = new Vector2(i % 4 == 0 || i % 4 == 2 ? 0 : 512, i % 4 < 2 ? 0 : 384), NewCombo = i % 4 == 0 }); time += 500; } Beatmap b = new Beatmap { HitObjects = objects, BeatmapInfo = new BeatmapInfo { Difficulty = new BeatmapDifficulty(), Metadata = new BeatmapMetadata { Artist = @"Unknown", Title = @"Sample Beatmap", Author = @"peppy", } } }; beatmap = new TestWorkingBeatmap(b); } Add(new Box { RelativeSizeAxes = Framework.Graphics.Axes.Both, Colour = Color4.Black, }); Add(new PlayerLoader(Player = CreatePlayer(beatmap)) { Beatmap = beatmap }); }
public void TestDecodeBeatmapLyric() { using (var resStream = TestResources.OpenBeatmapResource("karaoke-file-samples")) using (var stream = new LineBufferedReader(resStream)) { var decoder = Decoder.GetDecoder <Beatmap>(stream); Assert.AreEqual(typeof(KaraokeLegacyBeatmapDecoder), decoder.GetType()); var working = new TestWorkingBeatmap(decoder.Decode(stream)); Assert.AreEqual(1, working.BeatmapInfo.BeatmapVersion); Assert.AreEqual(1, working.Beatmap.BeatmapInfo.BeatmapVersion); Assert.AreEqual(1, working.GetPlayableBeatmap(new KaraokeRuleset().RulesetInfo, Array.Empty <Mod>()).BeatmapInfo.BeatmapVersion); // Test lyric part decode result var lyrics = working.Beatmap.HitObjects.OfType <Lyric>(); Assert.AreEqual(54, lyrics.Count()); // Test note decode part var notes = working.Beatmap.HitObjects.OfType <Note>().Where(x => x.Display).ToList(); Assert.AreEqual(36, notes.Count); testNote("た", 0, note: notes[0]); testNote("だ", 0, note: notes[1]); testNote("か", 0, note: notes[2]); // 風,か testNote("ぜ", 0, note: notes[3]); // 風,ぜ testNote("に", 1, note: notes[4]); testNote("揺", 2, note: notes[5]); testNote("ら", 3, note: notes[6]); testNote("れ", 4, true, notes[7]); testNote("て", 3, note: notes[8]); } }
private void load() { AddStep("Hit!", () => addHitJudgement(false)); AddStep("Kiai hit", () => addHitJudgement(true)); AddStep("Miss :(", addMissJudgement); AddStep("DrumRoll", () => addDrumRoll(false)); AddStep("Strong DrumRoll", () => addDrumRoll(true)); AddStep("Swell", () => addSwell()); AddStep("Centre", () => addCentreHit(false)); AddStep("Strong Centre", () => addCentreHit(true)); AddStep("Rim", () => addRimHit(false)); AddStep("Strong Rim", () => addRimHit(true)); AddStep("Add bar line", () => addBarLine(false)); AddStep("Add major bar line", () => addBarLine(true)); AddStep("Height test 1", () => changePlayfieldSize(1)); AddStep("Height test 2", () => changePlayfieldSize(2)); AddStep("Height test 3", () => changePlayfieldSize(3)); AddStep("Height test 4", () => changePlayfieldSize(4)); AddStep("Height test 5", () => changePlayfieldSize(5)); AddStep("Reset height", () => changePlayfieldSize(6)); var controlPointInfo = new ControlPointInfo(); controlPointInfo.TimingPoints.Add(new TimingControlPoint()); WorkingBeatmap beatmap = new TestWorkingBeatmap(new Beatmap { HitObjects = new List <HitObject> { new CentreHit() }, BeatmapInfo = new BeatmapInfo { BaseDifficulty = new BeatmapDifficulty(), Metadata = new BeatmapMetadata { Artist = @"Unknown", Title = @"Sample Beatmap", AuthorString = @"peppy", }, Ruleset = new TaikoRuleset().RulesetInfo }, ControlPointInfo = controlPointInfo }); var rateAdjustClock = new StopwatchClock(true) { Rate = 1 }; Add(playfieldContainer = new Container { Anchor = Anchor.Centre, Origin = Anchor.Centre, RelativeSizeAxes = Axes.X, Height = 768, Clock = new FramedClock(rateAdjustClock), Children = new[] { rulesetContainer = new TaikoRulesetContainer(new TaikoRuleset(), beatmap) } }); }
public static GameplayState Create(Ruleset ruleset, IReadOnlyList <Mod>?mods = null, Score?score = null) { var beatmap = new TestBeatmap(ruleset.RulesetInfo); var workingBeatmap = new TestWorkingBeatmap(beatmap); var playableBeatmap = workingBeatmap.GetPlayableBeatmap(ruleset.RulesetInfo, mods); return(new GameplayState(playableBeatmap, ruleset, mods, score)); }
public void TestDecodeBeatmapVersion() { using (var resStream = TestResources.OpenResource("beatmap-version.osu")) using (var stream = new LineBufferedReader(resStream)) { var decoder = Decoder.GetDecoder <Beatmap>(stream); var working = new TestWorkingBeatmap(decoder.Decode(stream)); Assert.AreEqual(6, working.BeatmapInfo.BeatmapVersion); Assert.AreEqual(6, working.Beatmap.BeatmapInfo.BeatmapVersion); Assert.AreEqual(6, working.GetPlayableBeatmap(new OsuRuleset().RulesetInfo, Array.Empty <Mod>()).BeatmapInfo.BeatmapVersion); } }
protected override void LoadComplete() { base.LoadComplete(); var objects = new List <HitObject>(); int time = 1500; for (int i = 0; i < 50; i++) { objects.Add(new HitCircle { StartTime = time, Position = new Vector2(i % 4 == 0 || i % 4 == 2 ? 0 : OsuPlayfield.BASE_SIZE.X, i % 4 < 2 ? 0 : OsuPlayfield.BASE_SIZE.Y), NewCombo = i % 4 == 0 }); time += 500; } Beatmap b = new Beatmap { HitObjects = objects, BeatmapInfo = new BeatmapInfo { Difficulty = new BeatmapDifficulty(), Ruleset = rulesets.Query <RulesetInfo>().First(), Metadata = new BeatmapMetadata { Artist = @"Unknown", Title = @"Sample Beatmap", Author = @"peppy", } } }; WorkingBeatmap beatmap = new TestWorkingBeatmap(b); Add(new Box { RelativeSizeAxes = Framework.Graphics.Axes.Both, Colour = Color4.Black, }); Add(Player = CreatePlayer(beatmap)); }
public void TestStacking() { using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(beatmap_data))) using (var reader = new StreamReader(stream)) { var beatmap = Decoder.GetDecoder <Beatmap>(reader).Decode(reader); var converted = new TestWorkingBeatmap(beatmap).GetPlayableBeatmap(new OsuRuleset().RulesetInfo, Array.Empty <Mod>()); var objects = converted.HitObjects.ToList(); // The last hitobject triggers the stacking for (int i = 0; i < objects.Count - 1; i++) { Assert.AreEqual(0, ((OsuHitObject)objects[i]).StackHeight); } } }
public void TestDecodeBeatmapVersion() { using (var resStream = Resource.OpenResource("beatmap-version.osu")) using (var stream = new StreamReader(resStream)) { var decoder = Decoder.GetDecoder <Beatmap>(stream); stream.BaseStream.Position = 0; stream.DiscardBufferedData(); var working = new TestWorkingBeatmap(decoder.Decode(stream)); Assert.AreEqual(6, working.BeatmapInfo.BeatmapVersion); Assert.AreEqual(6, working.Beatmap.BeatmapInfo.BeatmapVersion); Assert.AreEqual(6, working.GetPlayableBeatmap(new OsuRuleset().RulesetInfo).BeatmapInfo.BeatmapVersion); } }
private Player loadPlayerFor(Ruleset r) { var beatmap = CreateBeatmap(r); working = new TestWorkingBeatmap(beatmap); working.Mods.Value = new[] { r.GetAllMods().First(m => m is ModNoFail) }; if (Player != null) { Remove(Player); } var player = CreatePlayer(working, r); LoadComponentAsync(player, LoadScreen); return(player); }
public TestCaseScrollingPlayfield() { Clock = new FramedClock(); var objects = new List <HitObject>(); int time = 1500; for (int i = 0; i < 50; i++) { objects.Add(new TestHitObject { StartTime = time }); time += 500; } Beatmap b = new Beatmap { HitObjects = objects, BeatmapInfo = new BeatmapInfo { Difficulty = new BeatmapDifficulty(), Metadata = new BeatmapMetadata() } }; WorkingBeatmap beatmap = new TestWorkingBeatmap(b); TestRulesetContainer horizontalRulesetContainer; Add(horizontalRulesetContainer = new TestRulesetContainer(Axes.X, beatmap, true)); TestRulesetContainer verticalRulesetContainer; Add(verticalRulesetContainer = new TestRulesetContainer(Axes.Y, beatmap, true)); AddStep("Reverse direction", () => { horizontalRulesetContainer.Playfield.Reverse(); verticalRulesetContainer.Playfield.Reverse(); }); }
private void loadPlayerFor(RulesetInfo r) { var beatmap = CreateBeatmap(); beatmap.BeatmapInfo.Ruleset = r; var instance = r.CreateInstance(); WorkingBeatmap working = new TestWorkingBeatmap(beatmap); working.Mods.Value = new[] { instance.GetAllMods().First(m => m is ModNoFail) }; if (Player != null) { Remove(Player); } LoadScreen(CreatePlayer(working, instance)); }
private void load() { var beatmap = new TestWorkingBeatmap(new OsuRuleset().RulesetInfo, null); beatmap.BeatmapSetInfo.OnlineInfo.HasVideo = true; beatmap.BeatmapSetInfo.OnlineInfo.HasStoryboard = true; Child = new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, Padding = new MarginPadding(20), Spacing = new Vector2(0, 20), Children = new Drawable[] { new DirectGridPanel(beatmap.BeatmapSetInfo), new DirectListPanel(beatmap.BeatmapSetInfo) } }; }
public RulesetFactory(Beatmap beatmap, int modeNumber = 0) { var workingBeatmap = new TestWorkingBeatmap(beatmap); var rulesetId = workingBeatmap.BeatmapInfo.RulesetID; Ruleset = GetRuleset(workingBeatmap.BeatmapInfo.RulesetID); workingBeatmap.BeatmapInfo.Ruleset = Ruleset.RulesetInfo; var playableBeatmap = workingBeatmap.GetPlayableBeatmap(Ruleset.RulesetInfo); //Convert beatmaps if (rulesetId == 0 && modeNumber != rulesetId) { Ruleset = GetRuleset(modeNumber); playableBeatmap = Ruleset.CreateBeatmapConverter(playableBeatmap).Convert(); } workingBeatmap = new TestWorkingBeatmap(playableBeatmap); workingBeatmap.BeatmapInfo.Ruleset = Ruleset.RulesetInfo; WorkingBeatmap = workingBeatmap; }
private Player loadPlayerFor(RulesetInfo r) { var beatmap = CreateBeatmap(); beatmap.BeatmapInfo.Ruleset = r; var instance = r.CreateInstance(); working = new TestWorkingBeatmap(beatmap); working.Mods.Value = new[] { instance.GetAllMods().First(m => m is ModNoFail) }; if (Player != null) { Remove(Player); } var player = CreatePlayer(working, instance); LoadComponentAsync(player, LoadScreen); return(player); }
private void loadPlayerFor(RulesetInfo r) { Beatmap beatmap; using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(test_beatmap_data))) using (var reader = new StreamReader(stream)) beatmap = BeatmapDecoder.GetDecoder(reader).Decode(reader); beatmap.BeatmapInfo.Ruleset = r; var instance = r.CreateInstance(); WorkingBeatmap working = new TestWorkingBeatmap(beatmap); working.Mods.Value = new[] { instance.GetAllMods().First(m => m is ModNoFail) }; if (Player != null) { Remove(Player); } Add(Player = CreatePlayer(working, instance)); }
private Player loadPlayerFor(Ruleset r) { var beatmap = CreateBeatmap(r); var working = new TestWorkingBeatmap(beatmap); workingWeakReferences.Add(working); Beatmap.Value = working; Beatmap.Value.Mods.Value = new[] { r.GetAllMods().First(m => m is ModNoFail) }; Player?.Exit(); var player = CreatePlayer(r); playerWeakReferences.Add(player); LoadComponentAsync(player, p => { Player = p; LoadScreen(p); }); return(player); }
public override void Reset() { base.Reset(); List <HitObject> objects = new List <HitObject>(); int time = 500; for (int i = 0; i < 100; i++) { objects.Add(new HitCircle { StartTime = time, Position = new Vector2(RNG.Next(0, (int)OsuPlayfield.BASE_SIZE.X), RNG.Next(0, (int)OsuPlayfield.BASE_SIZE.Y)), Scale = RNG.NextSingle(0.5f, 1.0f), }); time += RNG.Next(50, 500); } WorkingBeatmap beatmap = new TestWorkingBeatmap(new Beatmap { HitObjects = objects, BeatmapInfo = new BeatmapInfo { Difficulty = new BeatmapDifficulty(), Ruleset = rulesets.Query <RulesetInfo>().First(), Metadata = new BeatmapMetadata { Artist = @"Unknown", Title = @"Sample Beatmap", Author = @"peppy", } } }); Add(new Drawable[] { new Container { RelativeSizeAxes = Axes.Both, //ensure we are at offset 0 Clock = new FramedClock(), Children = new Drawable[] { new OsuHitRenderer(beatmap) { Scale = new Vector2(0.5f), Anchor = Anchor.TopLeft, Origin = Anchor.TopLeft }, new TaikoHitRenderer(beatmap) { Scale = new Vector2(0.5f), Anchor = Anchor.TopRight, Origin = Anchor.TopRight }, new CatchHitRenderer(beatmap) { Scale = new Vector2(0.5f), Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft }, new ManiaHitRenderer(beatmap) { Scale = new Vector2(0.5f), Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight } } } }); }
protected override void LoadComplete() { base.LoadComplete(); List <HitObject> objects = new List <HitObject>(); int time = 500; for (int i = 0; i < 100; i++) { objects.Add(new HitCircle { StartTime = time, Position = new Vector2(RNG.Next(0, (int)OsuPlayfield.BASE_SIZE.X), RNG.Next(0, (int)OsuPlayfield.BASE_SIZE.Y)), Scale = RNG.NextSingle(0.5f, 1.0f), }); time += RNG.Next(50, 500); } var controlPointInfo = new ControlPointInfo(); controlPointInfo.TimingPoints.Add(new TimingControlPoint { BeatLength = 200 }); WorkingBeatmap beatmap = new TestWorkingBeatmap(new Beatmap { HitObjects = objects, BeatmapInfo = new BeatmapInfo { Difficulty = new BeatmapDifficulty(), Ruleset = rulesets.Query <RulesetInfo>().First(), Metadata = new BeatmapMetadata { Artist = @"Unknown", Title = @"Sample Beatmap", Author = @"peppy", }, }, ControlPointInfo = controlPointInfo }); AddRange(new Drawable[] { new Container { RelativeSizeAxes = Axes.Both, //ensure we are at offset 0 Clock = new FramedClock(), Children = new Drawable[] { new OsuRulesetContainer(new OsuRuleset(new RulesetInfo()), beatmap, false) { Scale = new Vector2(0.5f), Anchor = Anchor.TopLeft, Origin = Anchor.TopLeft }, new TaikoRulesetContainer(new TaikoRuleset(new RulesetInfo()), beatmap, false) { Scale = new Vector2(0.5f), Anchor = Anchor.TopRight, Origin = Anchor.TopRight }, new CatchRulesetContainer(new CatchRuleset(new RulesetInfo()), beatmap, false) { Scale = new Vector2(0.5f), Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft }, new ManiaRulesetContainer(new ManiaRuleset(new RulesetInfo()), beatmap, false) { Scale = new Vector2(0.5f), Anchor = Anchor.BottomRight, Origin = Anchor.BottomRight } } } }); }