Exemplo n.º 1
0
        private void load(Game game, AudioManager Audio)
        {
            API = new BeatmapAPI();

            TestLevel = API.ParseBeatmap(File.ReadAllText("../../../../../Rhythmic.Resources/Beatmap/NULCTRL/level.json"));

            AddStep("aa", null);
            AddStep("Restart", () =>
            {
                Clear();

                foreach (Beatmap.Properties.Level.Object.Object o in TestLevel.Level.Level)
                {
                    Scheduler.AddDelayed(() =>
                    {
                        Add(new DrawableBeatmapObject(o));
                    }, o.Time);
                }
            });
        }
        public TestSceneBeatmapParsing()
        {
            API = new BeatmapAPI();

            Children = new Drawable[]
            {
                new RhythmicScrollContainer(Direction.Vertical)
                {
                    RelativeSizeAxes = Axes.Both,
                    Children         = new[]
                    {
                        Container = new FillFlowContainer
                        {
                            LayoutDuration   = 100,
                            LayoutEasing     = Easing.Out,
                            Spacing          = new Vector2(1, 1),
                            RelativeSizeAxes = Axes.X,
                            AutoSizeAxes     = Axes.Y,
                            Padding          = new MarginPadding(5)
                        }
                    }
                }
            };

            #region BeatmapSetup
            TestLevel = new BeatmapMeta
            {
                Metadata = new BeatmapMetadata
                {
                    Song = new SongMetadata
                    {
                        Author = "Silentroom",
                        Name   = "NULCTRL"
                    },
                    Level = new LevelMetadata
                    {
                        CreatorID   = 0,
                        CreatorName = "Alten",
                        LevelName   = "NULCTRL"
                    }
                },
                SongUrl = "song.mp3"
            };

            TestLevel.Player = new PlayerMeta
            {
                Colour   = new float[] { 255, 255, 255, 255 },
                Cooldown = 2,
                Health   = 3,
                Size     = 20
            };

            TestLevel = API.CreateNewLevel(TestLevel);

            TestLevel.Level.BackgroundColour = new float[] { 10, 10, 10, 10 };

            API.AddObject(new Object
            {
                Name          = "Object 2",
                Time          = 2,
                Shape         = Shape.Square,
                Position      = new float[] { 0, 0 },
                Size          = new float[] { 1, 1 },
                Colour        = new float[] { 255, 255, 255, 255 },
                Rotation      = 0,
                Anchor        = Anchor.Centre,
                Origin        = Anchor.Centre,
                Autokill      = false,
                Masking       = false,
                Empty         = false,
                Helper        = false,
                MoveKeyframes = new List <Keyframe <double[]> >
                {
                    new Keyframe <double[]>
                    {
                        Time     = 0,
                        Value    = new double[] { 0, 0 },
                        EaseType = Easing.None
                    },
                    new Keyframe <double[]>
                    {
                        Time     = 1,
                        Value    = new double[] { 0, 20 },
                        EaseType = Easing.InExpo
                    }
                },
                ScaleKeyframes = new List <Keyframe <double[]> >
                {
                    new Keyframe <double[]>
                    {
                        Time     = 0,
                        Value    = new double[] { 0, 0 },
                        EaseType = Easing.None
                    },
                    new Keyframe <double[]>
                    {
                        Time     = 0.2,
                        Value    = new double[] { 1, 1 },
                        EaseType = Easing.OutExpo
                    }
                }
            }, TestLevel);

            #endregion

            string Json = API.ParseBeatmap(TestLevel);

            System.Console.WriteLine(Json);

            Container.Add(new TextFlowContainer
            {
                Text             = Json,
                RelativeSizeAxes = Axes.X,
                AutoSizeAxes     = Axes.Y,
            });

            AddStep("aa", null);

            //TODO: Add more steps
            #region Steps
            AddStep("Create new object", () =>
            {
                API.AddObject(new Object
                {
                    Name          = "Object " + index,
                    Time          = 2,
                    Shape         = Shape.Square,
                    Position      = new float[] { 0, 0 },
                    Size          = new float[] { 1, 1 },
                    Rotation      = 0,
                    Anchor        = Anchor.Centre,
                    Origin        = Anchor.Centre,
                    Autokill      = false,
                    Masking       = false,
                    Empty         = false,
                    Helper        = false,
                    MoveKeyframes = new List <Keyframe <double[]> >
                    {
                        new Keyframe <double[]>
                        {
                            Time     = 0,
                            Value    = new double[] { 0, 0 },
                            EaseType = Easing.None
                        },
                        new Keyframe <double[]>
                        {
                            Time     = 1,
                            Value    = new double[] { 0, 20 },
                            EaseType = Easing.InExpo
                        }
                    },
                    ScaleKeyframes = new List <Keyframe <double[]> >
                    {
                        new Keyframe <double[]>
                        {
                            Time     = 0,
                            Value    = new double[] { 0, 0 },
                            EaseType = Easing.None
                        },
                        new Keyframe <double[]>
                        {
                            Time     = 0.2,
                            Value    = new double[] { 1, 1 },
                            EaseType = Easing.OutExpo
                        }
                    }
                }, TestLevel);

                Container.Clear();

                Json = JsonConvert.SerializeObject(TestLevel, Formatting.Indented);

                Container.Add(new TextFlowContainer
                {
                    Text             = Json,
                    RelativeSizeAxes = Axes.X,
                    AutoSizeAxes     = Axes.Y,
                });

                index++;
            });
            #endregion
        }
        private void load()
        {
            API = new BeatmapAPI();

            TestLevel = API.CreateNewLevel(new BeatmapMeta
            {
                Metadata = new BeatmapMetadata
                {
                    Level = new LevelMetadata
                    {
                        CreatorID   = 0,
                        CreatorName = "Alten",
                        LevelName   = "NULCTRL"
                    },
                    Song = new SongMetadata
                    {
                        Author = "SilentRoom",
                        Name   = "NULCTRL"
                    }
                },
                Level = new LevelMeta
                {
                    BackgroundColour = new float[] { 20, 20, 20 }
                }
            });

            API.AddObject(new Object
            {
                AutoSizeAxes     = Axes.Both,
                RelativeSizeAxes = Axes.None,
                Size             = new float[] { 1f, 1f },
                Position         = new float[] { 0, -1900 },
                Anchor           = Anchor.Centre,
                Origin           = Anchor.Centre,
                Autokill         = false,
                Colour           = new float[] { 255, 255, 255, 255 },
                Masking          = false,
                MoveKeyframes    = new List <Keyframe <double[]> >
                {
                    new Keyframe <double[]>
                    {
                        EaseType        = Easing.OutExpo,
                        Value           = new double[] { 0, 0 },
                        Time            = 0,
                        TimeUntilFinish = 6000
                    }
                },
                ColourKeyframes          = new List <Keyframe <float[]> >(),
                RotationKeyframes        = new List <Keyframe <double> >(),
                ScaleKeyframes           = new List <Keyframe <double[]> >(),
                BorderColourKeyframes    = new List <Keyframe <float[]> >(),
                BorderThicknessKeyframes = new List <Keyframe <double[]> >(),
                BorderColour             = new float[] { 255, 255, 255, 255 },
                BorderThickness          = 0f,
                Name      = "Test Container",
                Rotation  = 0,
                Shape     = Shape.Container,
                Time      = 0,
                Childrens = new List <Object>()
                {
                    new Object
                    {
                        Origin            = Anchor.Centre,
                        Anchor            = Anchor.Centre,
                        Colour            = new float[] { 255, 255, 255, 255 },
                        Size              = new float[] { 190, 190 },
                        Position          = new float[] { 0, 0 },
                        AutoSizeAxes      = Axes.Both,
                        RelativeSizeAxes  = Axes.None,
                        Autokill          = false,
                        Masking           = false,
                        MoveKeyframes     = new List <Keyframe <double[]> >(),
                        ColourKeyframes   = new List <Keyframe <float[]> >(),
                        RotationKeyframes = new List <Keyframe <double> >(),
                        ScaleKeyframes    = new List <Keyframe <double[]> >(),
                        Name              = "Test Square",
                        Rotation          = 0,
                        Shape             = Shape.Square,
                        Time              = 0,
                    },
                    new Object
                    {
                        AutoSizeAxes             = Axes.None,
                        RelativeSizeAxes         = Axes.None,
                        Size                     = new float[] { 125f, 125f },
                        Position                 = new float[] { 0, 0 },
                        Anchor                   = Anchor.Centre,
                        Origin                   = Anchor.Centre,
                        Autokill                 = false,
                        Colour                   = new float[] { 255, 255, 0, 255 },
                        Masking                  = true,
                        MoveKeyframes            = new List <Keyframe <double[]> >(),
                        ColourKeyframes          = new List <Keyframe <float[]> >(),
                        RotationKeyframes        = new List <Keyframe <double> >(),
                        ScaleKeyframes           = new List <Keyframe <double[]> >(),
                        BorderColourKeyframes    = new List <Keyframe <float[]> >(),
                        BorderThicknessKeyframes = new List <Keyframe <double[]> >(),
                        BorderColour             = new float[] { 255, 255, 255, 255 },
                        BorderThickness          = 0f,
                        Name                     = "Test Circle",
                        Rotation                 = 0,
                        Shape                    = Shape.Circle,
                        Time                     = 0,
                        Childrens                = new List <Object>()
                    },
                    new Object
                    {
                        Origin            = Anchor.Centre,
                        Anchor            = Anchor.Centre,
                        Colour            = new float[] { 255, 0, 255, 150 },
                        Size              = new float[] { 125, 125 },
                        Position          = new float[] { 0, 0 },
                        AutoSizeAxes      = Axes.Both,
                        RelativeSizeAxes  = Axes.None,
                        Autokill          = false,
                        Masking           = false,
                        MoveKeyframes     = new List <Keyframe <double[]> >(),
                        ColourKeyframes   = new List <Keyframe <float[]> >(),
                        RotationKeyframes = new List <Keyframe <double> >(),
                        ScaleKeyframes    = new List <Keyframe <double[]> >(),
                        Name              = "Test Triangle",
                        Rotation          = 0,
                        Shape             = Shape.Triangle,
                        Time              = 0,
                    },
                    new Object
                    {
                        Origin            = Anchor.Centre,
                        Anchor            = Anchor.Centre,
                        Colour            = new float[] { 0, 255, 255, 150 },
                        Size              = new float[] { 70, 70 },
                        Position          = new float[] { 0, 0 },
                        AutoSizeAxes      = Axes.Both,
                        RelativeSizeAxes  = Axes.None,
                        Autokill          = false,
                        Masking           = false,
                        MoveKeyframes     = new List <Keyframe <double[]> >(),
                        ColourKeyframes   = new List <Keyframe <float[]> >(),
                        RotationKeyframes = new List <Keyframe <double> >(),
                        ScaleKeyframes    = new List <Keyframe <double[]> >(),
                        Name              = "Test EquilateralTriangle",
                        Rotation          = 0,
                        Shape             = Shape.EquilateralTriangle,
                        Time              = 0,
                    },
                }
            }, TestLevel);

            foreach (Object obj in TestLevel.Level.Level)
            {
                Scheduler.AddDelayed(() =>
                {
                    Add(new DrawableBeatmapObject(obj));
                }, obj.Time);
            }
        }