Esempio n. 1
0
        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
            });
        }
Esempio n. 2
0
        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]);
                }
        }
Esempio n. 3
0
        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) }
            });
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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);
                }
        }
Esempio n. 6
0
        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));
        }
Esempio n. 7
0
        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);
                }
        }
Esempio n. 9
0
        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);
        }
Esempio n. 10
0
        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();
            });
        }
Esempio n. 11
0
        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));
        }
Esempio n. 12
0
        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)
                }
            };
        }
Esempio n. 13
0
        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;
        }
Esempio n. 14
0
        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);
        }
Esempio n. 15
0
        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));
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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
                        }
                    }
                }
            });
        }
Esempio n. 18
0
        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
                        }
                    }
                }
            });
        }