예제 #1
0
        public void TestDecodePostConverted()
        {
            var converted = new OsuBeatmapConverter(decodeAsJson(normal), new OsuRuleset()).Convert();

            var processor = new OsuBeatmapProcessor(converted);

            processor.PreProcess();
            foreach (var o in converted.HitObjects)
            {
                o.ApplyDefaults(converted.ControlPointInfo, converted.Difficulty);
            }
            processor.PostProcess();

            var beatmap = converted.Serialize().Deserialize <Beatmap>();

            var curveData    = beatmap.HitObjects[0] as IHasPathWithRepeats;
            var positionData = beatmap.HitObjects[0] as IHasPosition;

            Assert.IsNotNull(positionData);
            Assert.IsNotNull(curveData);
            Assert.AreEqual(90, curveData.Path.Distance);
            Assert.AreEqual(new Vector2(192, 168), positionData.Position);
            Assert.AreEqual(956, beatmap.HitObjects[0].StartTime);
            Assert.IsTrue(beatmap.HitObjects[0].Samples.Any(s => s.Name == HitSampleInfo.HIT_NORMAL));

            positionData = beatmap.HitObjects[1] as IHasPosition;

            Assert.IsNotNull(positionData);
            Assert.AreEqual(new Vector2(304, 56), positionData.Position);
            Assert.AreEqual(1285, beatmap.HitObjects[1].StartTime);
            Assert.IsTrue(beatmap.HitObjects[1].Samples.Any(s => s.Name == HitSampleInfo.HIT_CLAP));
        }
예제 #2
0
        private static IBeatmap GetBeatmap(string osu_file)
        {
            var osu_streamReader = File.OpenText(osu_file);

            var beatmap = Decoder.GetDecoder <Beatmap>(osu_streamReader).Decode(osu_streamReader);

            var osu_converter     = new OsuBeatmapConverter(beatmap);
            var converter_beatmap = osu_converter.Convert();

            PreprocessHitObjects(converter_beatmap.HitObjects);

            //mumally parse
            foreach (var hitObject in converter_beatmap.HitObjects)
            {
                hitObject.ApplyDefaults(converter_beatmap.ControlPointInfo, converter_beatmap.BeatmapInfo.BaseDifficulty);
            }

            return(converter_beatmap);
        }
예제 #3
0
        public void TestDecodeBeatmapComboOffsetsOsu()
        {
            var decoder = new LegacyBeatmapDecoder();

            using (var resStream = TestResources.OpenResource("hitobject-combo-offset.osu"))
                using (var stream = new LineBufferedReader(resStream))
                {
                    var beatmap = decoder.Decode(stream);

                    var converted = new OsuBeatmapConverter(beatmap, new OsuRuleset()).Convert();
                    new OsuBeatmapProcessor(converted).PreProcess();
                    new OsuBeatmapProcessor(converted).PostProcess();

                    Assert.AreEqual(4, ((IHasComboInformation)converted.HitObjects.ElementAt(0)).ComboIndexWithOffsets);
                    Assert.AreEqual(5, ((IHasComboInformation)converted.HitObjects.ElementAt(2)).ComboIndexWithOffsets);
                    Assert.AreEqual(5, ((IHasComboInformation)converted.HitObjects.ElementAt(4)).ComboIndexWithOffsets);
                    Assert.AreEqual(6, ((IHasComboInformation)converted.HitObjects.ElementAt(6)).ComboIndexWithOffsets);
                    Assert.AreEqual(11, ((IHasComboInformation)converted.HitObjects.ElementAt(8)).ComboIndexWithOffsets);
                    Assert.AreEqual(14, ((IHasComboInformation)converted.HitObjects.ElementAt(11)).ComboIndexWithOffsets);
                }
        }