示例#1
0
        public TestCaseHitObjects()
        {
            var rateAdjustClock = new StopwatchClock(true);

            framedClock = new FramedClock(rateAdjustClock);
            playbackSpeed.ValueChanged += delegate { rateAdjustClock.Rate = playbackSpeed.Value; };

            playbackSpeed.TriggerChange();

            AddStep(@"circles", () => loadHitobjects(HitObjectType.Circle));
            AddStep(@"slider", () => loadHitobjects(HitObjectType.Slider));
            AddStep(@"spinner", () => loadHitobjects(HitObjectType.Spinner));

            AddToggleStep(@"auto", state => { auto = state; loadHitobjects(mode); });

            BasicSliderBar <double> sliderBar;

            Add(new Container
            {
                Anchor       = Anchor.TopRight,
                Origin       = Anchor.TopRight,
                AutoSizeAxes = Axes.Both,
                Children     = new Drawable[]
                {
                    new SpriteText {
                        Text = "Playback Speed"
                    },
                    sliderBar = new BasicSliderBar <double>
                    {
                        Width          = 150,
                        Height         = 10,
                        SelectionColor = Color4.Orange,
                    }
                }
            });

            sliderBar.Current.BindTo(playbackSpeed);

            framedClock.ProcessFrame();

            var clockAdjustContainer = new Container
            {
                RelativeSizeAxes = Axes.Both,
                Clock            = framedClock,
                Children         = new[]
                {
                    playfieldContainer = new Container {
                        RelativeSizeAxes = Axes.Both
                    },
                    approachContainer = new Container {
                        RelativeSizeAxes = Axes.Both
                    }
                }
            };

            Add(clockAdjustContainer);
        }
示例#2
0
        private void load(TestBrowser browser)
        {
            Padding = new MarginPadding {
                Horizontal = 5
            };

            BasicSliderBar <double> rateAdjustSlider;
            SpriteText         rateText;
            ClickableContainer clickableReset;

            InternalChild = new GridContainer
            {
                RelativeSizeAxes = Axes.Both,
                ColumnDimensions = new[]
                {
                    new Dimension(GridSizeMode.AutoSize),
                    new Dimension(GridSizeMode.AutoSize),
                    new Dimension(),
                },
                Content = new[]
                {
                    new Drawable[]
                    {
                        new SpriteText
                        {
                            Padding = new MarginPadding(5)
                            {
                                Right = 0
                            },
                            Text = "Rate:",
                            Font = FrameworkFont.Condensed
                        },
                        clickableReset = new ClickableContainer
                        {
                            AutoSizeAxes = Axes.Both,
                            Child        = rateText = new SpriteText
                            {
                                Padding = new MarginPadding(5),
                                Width   = 45,
                                Colour  = FrameworkColour.Yellow,
                                Font    = FrameworkFont.Condensed
                            },
                        },
                        rateAdjustSlider = new BasicSliderBar <double>
                        {
                            RelativeSizeAxes = Axes.Both,
                            Current          = browser.PlaybackRate
                        },
                    }
                }
            };

            rateAdjustSlider.Current.BindValueChanged(e => rateText.Text = e.NewValue.ToString("0%"), true);
            clickableReset.Action = () => rateAdjustSlider.Current.SetDefault();
        }
示例#3
0
        public TestCaseSliderbar()
        {
            sliderBarValue = new BindableDouble(8)
            {
                MinValue = -10,
                MaxValue = 10
            };
            sliderBarValue.ValueChanged += sliderBarValueChanged;

            sliderbarText = new SpriteText
            {
                Text     = $"Selected value: {sliderBarValue.Value}",
                Position = new Vector2(25, 0)
            };

            SliderBar <double> sliderBar = new BasicSliderBar <double>
            {
                Size           = new Vector2(200, 10),
                Position       = new Vector2(25, 25),
                Color          = Color4.White,
                SelectionColor = Color4.Pink,
                KeyboardStep   = 1
            };

            sliderBar.Current.BindTo(sliderBarValue);

            Add(sliderBar);
            Add(sliderbarText);

            Add(sliderBar = new BasicSliderBar <double>
            {
                Size           = new Vector2(200, 10),
                RangePadding   = 20,
                Position       = new Vector2(25, 45),
                Color          = Color4.White,
                SelectionColor = Color4.Pink,
                KeyboardStep   = 1,
            });

            sliderBar.Current.BindTo(sliderBarValue);

            AddSliderStep("Value", -10.0, 10.0, 0.0, v => sliderBarValue.Value = v);
        }
        public override void Reset()
        {
            base.Reset();

            iterationsBindable = new BindableInt(2000)
            {
                MinValue = 50,
                MaxValue = 20000,
            };

            SliderBar <int> iterations;

            Add(iterations = new BasicSliderBar <int>
            {
                Size           = new Vector2(200, 20),
                SelectionColor = Color4.Pink,
                KeyboardStep   = 100
            });

            Add(iterationsText = new SpriteText
            {
                X        = 210,
                TextSize = 16
            });

            iterations.Current.BindTo(iterationsBindable);
            iterations.Current.ValueChanged += v => Invalidate(Invalidation.DrawNode, shallPropagate: false);

            Add(scroll = new ScrollContainer
            {
                RelativeSizeAxes = Axes.Both,
                Y        = 25,
                Children = new[]
                {
                    flow = new FillFlowContainer <SpriteText>
                    {
                        AutoSizeAxes = Axes.Both,
                        Direction    = FillDirection.Vertical
                    }
                }
            });
        }
示例#5
0
        private void load(TestBrowser browser)
        {
            BasicSliderBar <double> rateAdjustSlider;
            SpriteText rateText;

            InternalChild = new GridContainer
            {
                RelativeSizeAxes = Axes.Both,
                ColumnDimensions = new[]
                {
                    new Dimension(GridSizeMode.AutoSize),
                    new Dimension(GridSizeMode.Distributed),
                    new Dimension(GridSizeMode.AutoSize),
                },
                Content = new[]
                {
                    new Drawable[]
                    {
                        new SpriteText
                        {
                            Padding = new MarginPadding(5),
                            Text    = "Rate:"
                        },
                        rateAdjustSlider = new BasicSliderBar <double>
                        {
                            RelativeSizeAxes = Axes.Both,
                        },
                        rateText = new SpriteText
                        {
                            Padding      = new MarginPadding(5),
                            AutoSizeAxes = Axes.None,
                            Width        = 60,
                        },
                    }
                }
            };

            rateAdjustSlider.Current.BindTo(browser.PlaybackRate);
            rateAdjustSlider.Current.BindValueChanged(v => rateText.Text = v.ToString("0%"), true);
        }
示例#6
0
        public TestCaseScrollingHitObjects()
        {
            OsuSpriteText             timeRangeText;
            SpeedAdjustmentCollection adjustmentCollection;

            timeRangeBindable = new BindableDouble(2000)
            {
                MinValue = 200,
                MaxValue = 4000,
            };

            SliderBar <double> timeRange;

            Add(timeRange = new BasicSliderBar <double>
            {
                Size           = new Vector2(200, 20),
                SelectionColor = Color4.Pink,
                KeyboardStep   = 100
            });

            Add(timeRangeText = new OsuSpriteText
            {
                X        = 210,
                TextSize = 16,
            });

            timeRange.Current.BindTo(timeRangeBindable);
            timeRangeBindable.ValueChanged += v => timeRangeText.Text = $"Visible Range: {v:#,#.#}";
            timeRangeBindable.ValueChanged += v => bottomLabel.Text = $"t minus {v:#,#}";

            AddRange(new Drawable[]
            {
                new Container
                {
                    Anchor   = Anchor.Centre,
                    Origin   = Anchor.Centre,
                    Size     = new Vector2(100, 500),
                    Children = new Drawable[]
                    {
                        new Box
                        {
                            RelativeSizeAxes = Axes.Both,
                            Alpha            = 0.25f
                        },
                        adjustmentCollection = new SpeedAdjustmentCollection(Axes.Y)
                        {
                            RelativeSizeAxes = Axes.Both,
                            VisibleTimeRange = timeRangeBindable,
                            Masking          = true,
                        },
                        new OsuSpriteText
                        {
                            Text     = "t minus 0",
                            Margin   = new MarginPadding(2),
                            TextSize = 14,
                            Anchor   = Anchor.TopRight,
                        },
                        bottomLabel = new OsuSpriteText
                        {
                            Text     = "t minus x",
                            Margin   = new MarginPadding(2),
                            TextSize = 14,
                            Anchor   = Anchor.BottomRight,
                            Origin   = Anchor.BottomLeft,
                        },
                        topTime = new OsuSpriteText
                        {
                            Margin   = new MarginPadding(2),
                            TextSize = 14,
                            Anchor   = Anchor.TopLeft,
                            Origin   = Anchor.TopRight,
                        },
                        bottomTime = new OsuSpriteText
                        {
                            Margin   = new MarginPadding(2),
                            TextSize = 14,
                            Anchor   = Anchor.BottomLeft,
                            Origin   = Anchor.BottomRight,
                        },
                    }
                }
            });

            timeRangeBindable.TriggerChange();

            adjustmentCollection.Add(new TestSpeedAdjustmentContainer(new MultiplierControlPoint()));

            AddStep("Add hit object", () => adjustmentCollection.Add(new TestDrawableHitObject(new HitObject {
                StartTime = Time.Current + 2000
            })));
        }
示例#7
0
            private void load()
            {
                SpriteText playbackSpeedDisplay;

                InternalChildren = new Drawable[]
                {
                    new Box
                    {
                        RelativeSizeAxes = Axes.Both,
                        Colour           = Color4.Black,
                    },
                    new Container
                    {
                        Padding          = new MarginPadding(10),
                        RelativeSizeAxes = Axes.Both,
                        Child            = new GridContainer
                        {
                            RelativeSizeAxes = Axes.Both,
                            ColumnDimensions = new[]
                            {
                                new Dimension(GridSizeMode.AutoSize),
                                new Dimension(GridSizeMode.Distributed),
                            },
                            Content = new[]
                            {
                                new Drawable[]
                                {
                                    new FillFlowContainer
                                    {
                                        Spacing          = new Vector2(5),
                                        Direction        = FillDirection.Horizontal,
                                        RelativeSizeAxes = Axes.Y,
                                        AutoSizeAxes     = Axes.X,
                                        Children         = new Drawable[]
                                        {
                                            new SpriteText
                                            {
                                                Padding = new MarginPadding(5),
                                                Text    = "Current Assembly:"
                                            },
                                            AssemblyDropdown = new BasicDropdown <Assembly>
                                            {
                                                Width = 300,
                                            },
                                            RunAllSteps = new BasicCheckbox
                                            {
                                                LabelText    = "Run all steps",
                                                AutoSizeAxes = Axes.Y,
                                                Width        = 140,
                                                Anchor       = Anchor.CentreLeft,
                                                Origin       = Anchor.CentreLeft,
                                            },
                                        }
                                    },
                                    new GridContainer
                                    {
                                        RelativeSizeAxes = Axes.Both,
                                        ColumnDimensions = new[]
                                        {
                                            new Dimension(GridSizeMode.AutoSize),
                                            new Dimension(GridSizeMode.Distributed),
                                            new Dimension(GridSizeMode.AutoSize),
                                        },
                                        Content = new[]
                                        {
                                            new Drawable[]
                                            {
                                                new SpriteText
                                                {
                                                    Padding = new MarginPadding(5),
                                                    Text    = "Rate:"
                                                },
                                                RateAdjustSlider = new BasicSliderBar <double>
                                                {
                                                    RelativeSizeAxes = Axes.Both,
                                                    Colour           = Color4.MediumPurple,
                                                    SelectionColor   = Color4.White,
                                                },
                                                playbackSpeedDisplay = new SpriteText
                                                {
                                                    Padding = new MarginPadding(5),
                                                },
                                            }
                                        }
                                    }
                                }
                            },
                        },
                    },
                };

                RateAdjustSlider.Current.ValueChanged += v => playbackSpeedDisplay.Text = v.ToString("0%");
            }
示例#8
0
        public TestCaseSliderbar()
        {
            sliderBarValue = new BindableDouble(8)
            {
                MinValue = -10,
                MaxValue = 10
            };
            sliderBarValue.ValueChanged += sliderBarValueChanged;

            sliderbarText = new SpriteText
            {
                Text     = $"Selected value: {sliderBarValue.Value}",
                Position = new Vector2(25, 0)
            };

            SliderBar <double> sliderBar = new BasicSliderBar <double>
            {
                Size             = new Vector2(200, 10),
                Position         = new Vector2(25, 25),
                BackgroundColour = Color4.White,
                SelectionColour  = Color4.Pink,
                KeyboardStep     = 1
            };

            sliderBar.Current.BindTo(sliderBarValue);

            Add(sliderBar);
            Add(sliderbarText);

            Add(sliderBar = new BasicSliderBar <double>
            {
                Size             = new Vector2(200, 10),
                RangePadding     = 20,
                Position         = new Vector2(25, 45),
                BackgroundColour = Color4.White,
                SelectionColour  = Color4.Pink,
                KeyboardStep     = 1,
            });

            sliderBar.Current.BindTo(sliderBarValue);

            AddSliderStep("Value", -10.0, 10.0, -10.0, v => sliderBarValue.Value = v);

            AddStep("Click at x = 50", () => sliderBar.TriggerOnClick(new InputState
            {
                Mouse = new MouseState
                {
                    Position = sliderBar.ToScreenSpace(sliderBar.DrawSize / 4)
                },
                Keyboard = new KeyboardState()
            }));

            AddAssert("Value == -6,25", () => sliderBarValue == -6.25);

            AddStep("Press left arrow key", () =>
            {
                var before          = sliderBar.IsHovered;
                sliderBar.IsHovered = true;
                sliderBar.TriggerOnKeyDown(null, new KeyDownEventArgs
                {
                    Key = OpenTK.Input.Key.Left,
                });
                sliderBar.IsHovered = before;
            });

            AddAssert("Value == -7,25", () => sliderBarValue == -7.25);

            AddStep("Click at x = 150 with shift", () =>
            {
                var drawSize = sliderBar.DrawSize;
                drawSize.X  *= 0.75f;
                sliderBar.TriggerOnClick(new InputState
                {
                    Mouse = new MouseState
                    {
                        Position = sliderBar.ToScreenSpace(drawSize)
                    },
                    Keyboard = new KeyboardState {
                        Keys = { OpenTK.Input.Key.LShift }
                    }
                });
            });

            AddAssert("Value == 6", () => sliderBarValue == 6);
        }
示例#9
0
            private void load()
            {
                SpriteText playbackSpeedDisplay;

                InternalChildren = new Drawable[]
                {
                    new Box
                    {
                        RelativeSizeAxes = Axes.Both,
                        Colour           = Color4.Black,
                    },
                    new Container
                    {
                        Padding          = new MarginPadding(10),
                        RelativeSizeAxes = Axes.Both,
                        Child            = new GridContainer
                        {
                            RelativeSizeAxes = Axes.Both,
                            ColumnDimensions = new[]
                            {
                                new Dimension(GridSizeMode.AutoSize),
                                new Dimension(GridSizeMode.Distributed),
                            },
                            Content = new[]
                            {
                                new Drawable[]
                                {
                                    new FillFlowContainer
                                    {
                                        Spacing          = new Vector2(5),
                                        Direction        = FillDirection.Horizontal,
                                        RelativeSizeAxes = Axes.Y,
                                        AutoSizeAxes     = Axes.X,
                                        Children         = new Drawable[]
                                        {
                                            new SpriteText
                                            {
                                                Padding = new MarginPadding(5),
                                                Text    = "Current Assembly:"
                                            },
                                            AssemblyDropdown = new BasicDropdown <Assembly>
                                            {
                                                Width = 300,
                                            },
                                            runAllButton = new Button
                                            {
                                                Text             = "Run all steps",
                                                BackgroundColour = Color4.MediumPurple,
                                                Action           = delegate
                                                {
                                                    runAllButton.Enabled.Value    = false;
                                                    runAllButton.BackgroundColour = Color4.DimGray;
                                                    RunAllSteps?.Invoke();
                                                },
                                                Width            = 140,
                                                RelativeSizeAxes = Axes.Y,
                                            },
                                        }
                                    },
                                    new GridContainer
                                    {
                                        RelativeSizeAxes = Axes.Both,
                                        ColumnDimensions = new[]
                                        {
                                            new Dimension(GridSizeMode.AutoSize),
                                            new Dimension(GridSizeMode.Distributed),
                                            new Dimension(GridSizeMode.AutoSize),
                                        },
                                        Content = new[]
                                        {
                                            new Drawable[]
                                            {
                                                new SpriteText
                                                {
                                                    Padding = new MarginPadding(5),
                                                    Text    = "Playback Speed:"
                                                },
                                                RateAdjustSlider = new BasicSliderBar <double>
                                                {
                                                    RelativeSizeAxes = Axes.Both,
                                                    Colour           = Color4.MediumPurple,
                                                    SelectionColor   = Color4.White,
                                                },
                                                playbackSpeedDisplay = new SpriteText
                                                {
                                                    Padding = new MarginPadding(5),
                                                },
                                            }
                                        }
                                    }
                                }
                            },
                        },
                    },
                };

                RateAdjustSlider.Current.ValueChanged += v => playbackSpeedDisplay.Text = v.ToString("0%");
            }