protected override Drawable CreateComponent() { var drawable = base.CreateComponent(); FlowContainer.Insert(-1, dropdown = new OsuDropdown <string> { Width = 510 }); return(drawable); }
protected override Drawable CreateComponent() { var drawable = base.CreateComponent(); FlowContainer.Insert(-1, folderButton = new TriangleButton { Text = "Open folder", Width = 100 }); FlowContainer.Insert(-2, dropdown = new OsuDropdown <string> { Width = 510 }); return(drawable); }
private void load(OverlayColourProvider colourProvider, OsuColour colours) { InternalChildren = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = colourProvider.Background4 }, new GridContainer { RelativeSizeAxes = Axes.Both, RowDimensions = new[] { new Dimension(), new Dimension(GridSizeMode.AutoSize), }, Content = new[] { new Drawable[] { new OsuScrollContainer { Padding = new MarginPadding { Horizontal = OsuScreen.HORIZONTAL_OVERFLOW_PADDING, Vertical = 10 }, RelativeSizeAxes = Axes.Both, Children = new[] { new Container { Padding = new MarginPadding { Horizontal = WaveOverlayContainer.WIDTH_PADDING }, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] { new SectionContainer { Padding = new MarginPadding { Right = FIELD_PADDING / 2 }, Children = new[] { new Section("Room name") { Child = NameField = new OsuTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, LengthLimit = 100 }, }, new Section("Duration") { Child = DurationField = new DurationDropdown { RelativeSizeAxes = Axes.X, Items = new[] { TimeSpan.FromMinutes(30), TimeSpan.FromHours(1), TimeSpan.FromHours(2), TimeSpan.FromHours(4), TimeSpan.FromHours(8), TimeSpan.FromHours(12), //TimeSpan.FromHours(16), TimeSpan.FromHours(24), TimeSpan.FromDays(3), TimeSpan.FromDays(7) } } }, new Section("Allowed attempts (across all playlist items)") { Child = MaxAttemptsField = new OsuNumberBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, PlaceholderText = "Unlimited", }, }, new Section("Room visibility") { Alpha = disabled_alpha, Child = AvailabilityPicker = new RoomAvailabilityPicker { Enabled = { Value = false } }, }, new Section("Max participants") { Alpha = disabled_alpha, Child = MaxParticipantsField = new OsuNumberBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, ReadOnly = true, }, }, new Section("Password (optional)") { Alpha = disabled_alpha, Child = new OsuPasswordTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, ReadOnly = true, }, }, }, }, new SectionContainer { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, Padding = new MarginPadding { Left = FIELD_PADDING / 2 }, Children = new[] { new Section("Playlist") { Child = new GridContainer { RelativeSizeAxes = Axes.X, Height = 448, Content = new[] { new Drawable[] { playlist = new DrawableRoomPlaylist(true, true) { RelativeSizeAxes = Axes.Both } }, new Drawable[] { playlistLength = new OsuSpriteText { Margin = new MarginPadding { Vertical = 5 }, Colour = colours.Yellow, Font = OsuFont.GetFont(size: 12), } }, new Drawable[] { editPlaylistButton = new PurpleTriangleButton { RelativeSizeAxes = Axes.X, Height = 40, Text = "Edit playlist", Action = () => EditPlaylist?.Invoke() } } }, RowDimensions = new[] { new Dimension(), new Dimension(GridSizeMode.AutoSize), new Dimension(GridSizeMode.AutoSize), } } }, }, }, }, } }, }, }, new Drawable[] { new Container { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, Y = 2, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = colourProvider.Background5 }, new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, Spacing = new Vector2(0, 20), Margin = new MarginPadding { Vertical = 20 }, Padding = new MarginPadding { Horizontal = OsuScreen.HORIZONTAL_OVERFLOW_PADDING }, Children = new Drawable[] { ApplyButton = new CreateRoomButton { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Size = new Vector2(230, 55), Enabled = { Value = false }, Action = apply, }, ErrorText = new OsuSpriteText { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Alpha = 0, Depth = 1, Colour = colours.RedDark } } } } } } } }, loadingLayer = new LoadingLayer(true) }; RoomName.BindValueChanged(name => NameField.Text = name.NewValue, true); Availability.BindValueChanged(availability => AvailabilityPicker.Current.Value = availability.NewValue, true); MaxParticipants.BindValueChanged(count => MaxParticipantsField.Text = count.NewValue?.ToString(), true); MaxAttempts.BindValueChanged(count => MaxAttemptsField.Text = count.NewValue?.ToString(), true); Duration.BindValueChanged(duration => DurationField.Current.Value = duration.NewValue ?? TimeSpan.FromMinutes(30), true); playlist.Items.BindTo(Playlist); Playlist.BindCollectionChanged(onPlaylistChanged, true); }
private void load(OsuColour colours) { Container dimContent; InternalChildren = new Drawable[] { dimContent = new Container { RelativeSizeAxes = Axes.Both, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = Color4Extensions.FromHex(@"28242d"), }, new GridContainer { RelativeSizeAxes = Axes.Both, RowDimensions = new[] { new Dimension(GridSizeMode.Distributed), new Dimension(GridSizeMode.AutoSize), }, Content = new[] { new Drawable[] { new OsuScrollContainer { Padding = new MarginPadding { Horizontal = OsuScreen.HORIZONTAL_OVERFLOW_PADDING, Vertical = 10 }, RelativeSizeAxes = Axes.Both, Children = new[] { new Container { Padding = new MarginPadding { Horizontal = SearchableListOverlay.WIDTH_PADDING }, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] { new SectionContainer { Padding = new MarginPadding { Right = field_padding / 2 }, Children = new[] { new Section("Room name") { Child = NameField = new SettingsTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, }, }, new Section("Duration") { Child = DurationField = new DurationDropdown { RelativeSizeAxes = Axes.X, Items = new[] { TimeSpan.FromMinutes(30), TimeSpan.FromHours(1), TimeSpan.FromHours(2), TimeSpan.FromHours(4), TimeSpan.FromHours(8), TimeSpan.FromHours(12), //TimeSpan.FromHours(16), TimeSpan.FromHours(24), TimeSpan.FromDays(3), TimeSpan.FromDays(7) } } }, new Section("Room visibility") { Alpha = disabled_alpha, Child = AvailabilityPicker = new RoomAvailabilityPicker { Enabled = { Value = false } }, }, new Section("Game type") { Alpha = disabled_alpha, Child = new FillFlowContainer { AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, Direction = FillDirection.Vertical, Spacing = new Vector2(7), Children = new Drawable[] { TypePicker = new GameTypePicker { RelativeSizeAxes = Axes.X, Enabled = { Value = false } }, typeLabel = new OsuSpriteText { Font = OsuFont.GetFont(size: 14), Colour = colours.Yellow }, }, }, }, new Section("Max participants") { Alpha = disabled_alpha, Child = MaxParticipantsField = new SettingsNumberTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, ReadOnly = true, }, }, new Section("Password (optional)") { Alpha = disabled_alpha, Child = new SettingsPasswordTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, ReadOnly = true, }, }, }, }, new SectionContainer { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, Padding = new MarginPadding { Left = field_padding / 2 }, Children = new[] { new Section("Playlist") { Child = new GridContainer { RelativeSizeAxes = Axes.X, Height = 300, Content = new[] { new Drawable[] { playlist = new DrawableRoomPlaylist(true, true) { RelativeSizeAxes = Axes.Both } }, new Drawable[] { new PurpleTriangleButton { RelativeSizeAxes = Axes.X, Height = 40, Text = "Edit playlist", Action = () => EditPlaylist?.Invoke() } } }, RowDimensions = new[] { new Dimension(), new Dimension(GridSizeMode.AutoSize), } } }, }, }, }, } }, }, }, new Drawable[] { new Container { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, Y = 2, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = Color4Extensions.FromHex(@"28242d").Darken(0.5f).Opacity(1f), }, new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, Spacing = new Vector2(0, 20), Margin = new MarginPadding { Vertical = 20 }, Padding = new MarginPadding { Horizontal = OsuScreen.HORIZONTAL_OVERFLOW_PADDING }, Children = new Drawable[] { ApplyButton = new CreateRoomButton { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Size = new Vector2(230, 55), Enabled = { Value = false }, Action = apply, }, ErrorText = new OsuSpriteText { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Alpha = 0, Depth = 1, Colour = colours.RedDark } } } } } } } }, } }, loadingLayer = new LoadingLayer(dimContent) }; TypePicker.Current.BindValueChanged(type => typeLabel.Text = type.NewValue?.Name ?? string.Empty, true); RoomName.BindValueChanged(name => NameField.Text = name.NewValue, true); Availability.BindValueChanged(availability => AvailabilityPicker.Current.Value = availability.NewValue, true); Type.BindValueChanged(type => TypePicker.Current.Value = type.NewValue, true); MaxParticipants.BindValueChanged(count => MaxParticipantsField.Text = count.NewValue?.ToString(), true); Duration.BindValueChanged(duration => DurationField.Current.Value = duration.NewValue, true); playlist.Items.BindTo(Playlist); }
private void load(OsuColour colours) { InternalChildren = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = OsuColour.FromHex(@"28242d"), }, new GridContainer { RelativeSizeAxes = Axes.Both, RowDimensions = new[] { new Dimension(GridSizeMode.Distributed), new Dimension(GridSizeMode.AutoSize), }, Content = new[] { new Drawable[] { new OsuScrollContainer { Padding = new MarginPadding { Horizontal = OsuScreen.HORIZONTAL_OVERFLOW_PADDING, Vertical = 10 }, RelativeSizeAxes = Axes.Both, Children = new[] { new Container { Padding = new MarginPadding { Horizontal = SearchableListOverlay.WIDTH_PADDING }, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] { new SectionContainer { Padding = new MarginPadding { Right = field_padding / 2 }, Children = new[] { new Section("房间名") { Child = NameField = new SettingsTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, OnCommit = (sender, text) => apply(), }, }, new Section("房间可见性") { Alpha = disabled_alpha, Child = AvailabilityPicker = new RoomAvailabilityPicker { Enabled = { Value = false } }, }, new Section("游戏类型") { Alpha = disabled_alpha, Child = new FillFlowContainer { AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, Direction = FillDirection.Vertical, Spacing = new Vector2(7), Children = new Drawable[] { TypePicker = new GameTypePicker { RelativeSizeAxes = Axes.X, Enabled = { Value = false } }, typeLabel = new OsuSpriteText { Font = OsuFont.GetFont(size: 14), Colour = colours.Yellow }, }, }, }, }, }, new SectionContainer { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, Padding = new MarginPadding { Left = field_padding / 2 }, Children = new[] { new Section("最大人数") { Alpha = disabled_alpha, Child = MaxParticipantsField = new SettingsNumberTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, ReadOnly = true, OnCommit = (sender, text) => apply() }, }, new Section("持续时间") { Child = DurationField = new DurationDropdown { RelativeSizeAxes = Axes.X, Items = new[] { TimeSpan.FromMinutes(30), TimeSpan.FromHours(1), TimeSpan.FromHours(2), TimeSpan.FromHours(4), TimeSpan.FromHours(8), TimeSpan.FromHours(12), //TimeSpan.FromHours(16), TimeSpan.FromHours(24), TimeSpan.FromDays(3), TimeSpan.FromDays(7) } } }, new Section("密码(可选)") { Alpha = disabled_alpha, Child = new SettingsPasswordTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, ReadOnly = true, OnCommit = (sender, text) => apply() }, }, }, }, }, } }, }, }, new Drawable[] { new Container { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, Y = 2, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = OsuColour.FromHex(@"28242d").Darken(0.5f).Opacity(1f), }, new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, Spacing = new Vector2(0, 20), Margin = new MarginPadding { Vertical = 20 }, Padding = new MarginPadding { Horizontal = OsuScreen.HORIZONTAL_OVERFLOW_PADDING }, Children = new Drawable[] { ApplyButton = new CreateRoomButton { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Size = new Vector2(230, 55), Enabled = { Value = false }, Action = apply, }, ErrorText = new OsuSpriteText { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Alpha = 0, Depth = 1, Colour = colours.RedDark } } } } } } } }, processingOverlay = new ProcessingOverlay { Alpha = 0 } }; TypePicker.Current.BindValueChanged(type => typeLabel.Text = type.NewValue?.Name ?? string.Empty, true); RoomName.BindValueChanged(name => NameField.Text = name.NewValue, true); Availability.BindValueChanged(availability => AvailabilityPicker.Current.Value = availability.NewValue, true); Type.BindValueChanged(type => TypePicker.Current.Value = type.NewValue, true); MaxParticipants.BindValueChanged(count => MaxParticipantsField.Text = count.NewValue?.ToString(), true); Duration.BindValueChanged(duration => DurationField.Current.Value = duration.NewValue, true); }
public MatchSettingsOverlay(Room room) { this.room = room; bindings.Room = room; Masking = true; Child = content = new Container { RelativeSizeAxes = Axes.Both, RelativePositionAxes = Axes.Y, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = OsuColour.FromHex(@"28242d"), }, new GridContainer { RelativeSizeAxes = Axes.Both, RowDimensions = new[] { new Dimension(GridSizeMode.Distributed), new Dimension(GridSizeMode.AutoSize), }, Content = new[] { new Drawable[] { new ScrollContainer { Padding = new MarginPadding { Horizontal = OsuScreen.HORIZONTAL_OVERFLOW_PADDING, Vertical = 10 }, RelativeSizeAxes = Axes.Both, Children = new[] { new Container { Padding = new MarginPadding { Horizontal = SearchableListOverlay.WIDTH_PADDING }, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] { new SectionContainer { Padding = new MarginPadding { Right = field_padding / 2 }, Children = new[] { new Section("Room name") { Child = NameField = new SettingsTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, OnCommit = (sender, text) => apply(), }, }, new Section("Room visibility") { Alpha = disabled_alpha, Child = AvailabilityPicker = new RoomAvailabilityPicker(), }, new Section("Game type") { Alpha = disabled_alpha, Child = new FillFlowContainer { AutoSizeAxes = Axes.Y, RelativeSizeAxes = Axes.X, Direction = FillDirection.Vertical, Spacing = new Vector2(7), Children = new Drawable[] { TypePicker = new GameTypePicker { RelativeSizeAxes = Axes.X, }, typeLabel = new OsuSpriteText { TextSize = 14, }, }, }, }, }, }, new SectionContainer { Anchor = Anchor.TopRight, Origin = Anchor.TopRight, Padding = new MarginPadding { Left = field_padding / 2 }, Children = new[] { new Section("Max participants") { Alpha = disabled_alpha, Child = MaxParticipantsField = new SettingsNumberTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, OnCommit = (sender, text) => apply(), }, }, new Section("Duration") { Child = DurationField = new DurationDropdown { RelativeSizeAxes = Axes.X, Items = new[] { TimeSpan.FromMinutes(30), TimeSpan.FromHours(1), TimeSpan.FromHours(2), TimeSpan.FromHours(4), TimeSpan.FromHours(8), TimeSpan.FromHours(12), //TimeSpan.FromHours(16), TimeSpan.FromHours(24), TimeSpan.FromDays(3), TimeSpan.FromDays(7) } } }, new Section("Password (optional)") { Alpha = disabled_alpha, Child = PasswordField = new SettingsPasswordTextBox { RelativeSizeAxes = Axes.X, TabbableContentContainer = this, OnCommit = (sender, text) => apply() }, }, }, }, }, } }, }, }, new Drawable[] { new Container { Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, Y = 2, RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Children = new Drawable[] { new Box { RelativeSizeAxes = Axes.Both, Colour = OsuColour.FromHex(@"28242d").Darken(0.5f).Opacity(1f), }, new FillFlowContainer { RelativeSizeAxes = Axes.X, AutoSizeAxes = Axes.Y, Direction = FillDirection.Vertical, Spacing = new Vector2(0, 20), Margin = new MarginPadding { Vertical = 20 }, Padding = new MarginPadding { Horizontal = OsuScreen.HORIZONTAL_OVERFLOW_PADDING }, Children = new Drawable[] { ApplyButton = new CreateRoomButton { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Size = new Vector2(230, 55), Action = apply, }, ErrorText = new OsuSpriteText { Anchor = Anchor.BottomCentre, Origin = Anchor.BottomCentre, Alpha = 0, Depth = 1 } } } } } } } }, processingOverlay = new ProcessingOverlay { Alpha = 0 } }, }; TypePicker.Current.ValueChanged += t => typeLabel.Text = t.Name; bindings.Name.BindValueChanged(n => NameField.Text = n, true); bindings.Availability.BindValueChanged(a => AvailabilityPicker.Current.Value = a, true); bindings.Type.BindValueChanged(t => TypePicker.Current.Value = t, true); bindings.MaxParticipants.BindValueChanged(m => MaxParticipantsField.Text = m?.ToString(), true); bindings.Duration.BindValueChanged(d => DurationField.Current.Value = d, true); }
public TestSceneLyricLineStyle() { Child = new GridContainer { RelativeSizeAxes = Axes.Both, ColumnDimensions = new[] { new Dimension(GridSizeMode.Absolute, 410f) }, Content = new[] { new Drawable[] { new GridContainer { Name = "Edit container", RelativeSizeAxes = Axes.Both, Content = new[] { new Drawable[] { new Container { Name = "Color section", RelativeSizeAxes = Axes.Both, Children = new Drawable[] { new Box { Name = "Setting background", RelativeSizeAxes = Axes.Both, Colour = Color4.Gray }, new FillFlowContainer { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding(5), Spacing = new Vector2(10), Children = new Drawable[] { new EditSection { Name = "Color", Children = new Drawable[] { new OsuSpriteText { Text = "Color" }, colorAreaDropdown = new OsuDropdown <ColorArea> { RelativeSizeAxes = Axes.X, Items = EnumUtils.GetValues <ColorArea>() } } }, new EditSection { Name = "Brush type", Children = new Drawable[] { new OsuSpriteText { Text = "Brush type" }, brushTypeDropdown = new OsuDropdown <BrushType> { RelativeSizeAxes = Axes.X, Items = EnumUtils.GetValues <BrushType>() } } }, new EditSection { Name = "Color picker", Children = new Drawable[] { new OsuSpriteText { Text = "Color picker" }, colorPicker = new ColorPicker { RelativeSizeAxes = Axes.X, } } }, } } } } }, new Drawable[] { new Container { Name = "Font section", RelativeSizeAxes = Axes.Both, Children = new Drawable[] { new Box { Name = "Setting background", RelativeSizeAxes = Axes.Both, Colour = Color4.Gray }, fontSection = new FillFlowContainer { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding(5), Spacing = new Vector2(10), Children = new Drawable[] { new EditSection { Name = "Font area", Children = new Drawable[] { new OsuSpriteText { Text = "Font area" }, fontAreaDropdown = new OsuDropdown <FontArea> { RelativeSizeAxes = Axes.X, Items = EnumUtils.GetValues <FontArea>() } } }, new EditSection { // TODO : implement Name = "Font", Alpha = 0, Children = new Drawable[] { new OsuSpriteText { Text = "Font" }, fontDropdown = new OsuDropdown <Font> { RelativeSizeAxes = Axes.X, Items = EnumUtils.GetValues <Font>() } } }, boldCheckbox = new OsuCheckbox { LabelText = "Bold" }, new EditSection { Name = "Font size", Children = new Drawable[] { new OsuSpriteText { Text = "Font size" }, fontSizeSliderBar = new OsuSliderBar <float> { RelativeSizeAxes = Axes.X, Current = new BindableFloat { Value = 30, MinValue = 10, MaxValue = 70 } } } }, new EditSection { Name = "Border size", Children = new Drawable[] { new OsuSpriteText { Text = "Border size" }, borderSliderBar = new OsuSliderBar <int> { RelativeSizeAxes = Axes.X, Current = new BindableInt { Value = 10, MinValue = 0, MaxValue = 20 } } } }, displayShaderCheckbox = new OsuCheckbox { LabelText = "Display shadow" }, new EditSection { Name = "Shadow X", Children = new Drawable[] { new OsuSpriteText { Text = "Shadow X" }, shadowXSliderBar = new OsuSliderBar <float> { RelativeSizeAxes = Axes.X, Current = new BindableFloat { Value = 10, MinValue = 0, MaxValue = 20 } } } }, new EditSection { Name = "Shadow Y", Children = new Drawable[] { new OsuSpriteText { Text = "Shadow Y" }, shadowYSliderBar = new OsuSliderBar <float> { RelativeSizeAxes = Axes.X, Current = new BindableFloat { Value = 10, MinValue = 0, MaxValue = 20 } } } } } } } } } } }, new Container { Name = "Preview container", RelativeSizeAxes = Axes.Both, Children = new Drawable[] { new Box { Name = "Preview background", RelativeSizeAxes = Axes.Both, Colour = Color4.WhiteSmoke }, layoutArea = new SkinProvidingContainer(new KaraokeStyleEditorSkin()) { RelativeSizeAxes = Axes.Both, } } } }, } }; colorAreaDropdown.Current.BindValueChanged(value => { brushTypeDropdown.Current.Value = drawableLyricLine.GetBrushInfo(value.NewValue).Type; }); brushTypeDropdown.Current.BindValueChanged(value => drawableLyricLine.ApplyProperty(selectedColorArea, x => x.Type = value.NewValue)); fontAreaDropdown.Current.BindValueChanged(value => { var fontInfo = drawableLyricLine.GetFontInfo(value.NewValue); boldCheckbox.Current.Value = fontInfo.Bold; fontSizeSliderBar.Current.Value = fontInfo.CharSize; borderSliderBar.Current.Value = fontInfo.EdgeSize; }); boldCheckbox.Current.BindValueChanged(value => drawableLyricLine.ApplyProperty(selectedFontArea, x => x.Bold = value.NewValue)); fontSizeSliderBar.Current.BindValueChanged(value => drawableLyricLine.ApplyProperty(selectedFontArea, x => x.CharSize = value.NewValue)); borderSliderBar.Current.BindValueChanged(value => drawableLyricLine.ApplyProperty(selectedFontArea, x => x.EdgeSize = value.NewValue)); displayShaderCheckbox.Current.BindValueChanged(value => { var karaokeFont = drawableLyricLine.Font; shadowXSliderBar.Current.Value = karaokeFont.ShadowOffset.X; shadowYSliderBar.Current.Value = karaokeFont.ShadowOffset.Y; // Update view fontSection.Children.Where(x => x.Name.StartsWith("Shadow ")).ForEach(x => x.Alpha = value.NewValue ? 1 : 0); // Update property drawableLyricLine.ApplyProperty(x => x.UseShadow = value.NewValue); }); shadowXSliderBar.Current.BindValueChanged(value => drawableLyricLine.ApplyProperty(x => x.ShadowOffset = new Vector2(value.NewValue, x.ShadowOffset.Y))); shadowYSliderBar.Current.BindValueChanged(value => drawableLyricLine.ApplyProperty(x => x.ShadowOffset = new Vector2(x.ShadowOffset.X, value.NewValue))); AddStep("Test", () => initialLyricLine(createDefaultLyricLine())); }
public TestSceneLyricLineLayout() { Child = new GridContainer { RelativeSizeAxes = Axes.Both, ColumnDimensions = new[] { new Dimension(GridSizeMode.Absolute, 210f) }, Content = new[] { new Drawable[] { new Container { RelativeSizeAxes = Axes.Both, Children = new Drawable[] { new Box { Name = "Setting background", RelativeSizeAxes = Axes.Both, Colour = Color4.Gray }, new FillFlowContainer { RelativeSizeAxes = Axes.Both, Padding = new MarginPadding(5), Spacing = new Vector2(10), Children = new Drawable[] { new EditSection { Name = "Name section", Children = new Drawable[] { new OsuSpriteText { Text = "Name" }, nameTextBox = new OsuTextBox { Width = 200 } } }, new EditSection { Name = "Anchor section", Children = new Drawable[] { new OsuSpriteText { Text = "Anchor" }, alignmentDropdown = new OsuDropdown <Anchor> { RelativeSizeAxes = Axes.X, Items = (Anchor[])Enum.GetValues(typeof(Anchor)) } } }, new EditSection { Name = "Horizontal margin section", Children = new Drawable[] { new OsuSpriteText { Text = "Horizontal margin" }, horizontalMarginSliderBar = new OsuSliderBar <int> { RelativeSizeAxes = Axes.X, Current = new BindableNumber <int> { MinValue = 0, MaxValue = 500, Value = 30, Default = 30 } } } }, new EditSection { Name = "Vertical margin section", Children = new Drawable[] { new OsuSpriteText { Text = "Vertical margin" }, verticalMarginSliderBar = new OsuSliderBar <int> { RelativeSizeAxes = Axes.X, Current = new BindableNumber <int> { MinValue = 0, MaxValue = 500, Value = 30, Default = 30 } } } }, continuousCheckbox = new OsuCheckbox { Name = "Continuous section", LabelText = "Continuous" }, new EditSection { Name = "Smart horizon section", Children = new Drawable[] { new OsuSpriteText { Text = "Smart horizon" }, smartHorizonDropdown = new OsuDropdown <KaraokeTextSmartHorizon> { RelativeSizeAxes = Axes.X, Items = (KaraokeTextSmartHorizon[])Enum.GetValues(typeof(KaraokeTextSmartHorizon)) } } }, new EditSection { Name = "Lyrics interval section", Children = new Drawable[] { new OsuSpriteText { Text = "Lyrics interval" }, lyricIntervalSliderBar = new OsuSliderBar <int> { RelativeSizeAxes = Axes.X, Current = new BindableNumber <int> { MinValue = 0, MaxValue = 30, Value = 10, Default = 10 } } } }, new EditSection { Name = "Ruby interval section", Children = new Drawable[] { new OsuSpriteText { Text = "Ruby interval" }, rubyIntervalSliderBar = new OsuSliderBar <int> { RelativeSizeAxes = Axes.X, Current = new BindableNumber <int> { MinValue = 0, MaxValue = 30, Value = 10, Default = 10 } } } }, new EditSection { Name = "Romaji interval section", Children = new Drawable[] { new OsuSpriteText { Text = "Romaji interval" }, romajiIntervalSliderBar = new OsuSliderBar <int> { RelativeSizeAxes = Axes.X, Current = new BindableNumber <int> { MinValue = 0, MaxValue = 30, Value = 10, Default = 10 } } } }, new EditSection { Name = "Ruby alignment section", Children = new Drawable[] { new OsuSpriteText { Text = "Ruby alignment" }, rubyAlignmentDropdown = new OsuDropdown <LyricTextAlignment> { RelativeSizeAxes = Axes.X, Items = (LyricTextAlignment[])Enum.GetValues(typeof(LyricTextAlignment)) } } }, new EditSection { Name = "Romaji alignment section", Children = new Drawable[] { new OsuSpriteText { Text = "Romaji alignment" }, romajiAlignmentDropdown = new OsuDropdown <LyricTextAlignment> { RelativeSizeAxes = Axes.X, Items = (LyricTextAlignment[])Enum.GetValues(typeof(LyricTextAlignment)) } } }, new EditSection { Name = "Ruby margin section", Children = new Drawable[] { new OsuSpriteText { Text = "Ruby margin" }, rubyMarginSliderBar = new OsuSliderBar <int> { RelativeSizeAxes = Axes.X, Current = new BindableNumber <int> { MinValue = 0, MaxValue = 30, Value = 10, Default = 10 } } } }, new EditSection { Name = "Romaji margin section", Children = new Drawable[] { new OsuSpriteText { Text = "Romaji margin" }, romajiMarginSliderBar = new OsuSliderBar <int> { RelativeSizeAxes = Axes.X, Current = new BindableNumber <int> { MinValue = 0, MaxValue = 30, Value = 10, Default = 10 } } } }, } } } }, new Container { RelativeSizeAxes = Axes.Both, Children = new Drawable[] { new Box { Name = "Setting background", RelativeSizeAxes = Axes.Both, Colour = Color4.WhiteSmoke }, layoutArea = new SkinProvidingContainer(new KaraokeLayoutEditorSkin()) { RelativeSizeAxes = Axes.Both, } } } } } }; // Initial bindable nameTextBox.Current.BindValueChanged(x => { /*TODO : maybe do something in the future.*/ }); alignmentDropdown.Current.BindValueChanged(x => applyChange(l => l.Alignment = x.NewValue)); horizontalMarginSliderBar.Current.BindValueChanged(x => applyChange(l => l.HorizontalMargin = x.NewValue)); verticalMarginSliderBar.Current.BindValueChanged(x => applyChange(l => l.VerticalMargin = x.NewValue)); continuousCheckbox.Current.BindValueChanged(x => applyChange(l => l.Continuous = x.NewValue)); smartHorizonDropdown.Current.BindValueChanged(x => applyChange(l => l.SmartHorizon = x.NewValue)); lyricIntervalSliderBar.Current.BindValueChanged(x => applyChange(l => l.LyricsInterval = x.NewValue)); rubyIntervalSliderBar.Current.BindValueChanged(x => applyChange(l => l.RubyInterval = x.NewValue)); romajiIntervalSliderBar.Current.BindValueChanged(x => applyChange(l => l.RomajiInterval = x.NewValue)); rubyAlignmentDropdown.Current.BindValueChanged(x => applyChange(l => l.RubyAlignment = x.NewValue)); romajiAlignmentDropdown.Current.BindValueChanged(x => applyChange(l => l.RomajiAlignment = x.NewValue)); rubyMarginSliderBar.Current.BindValueChanged(x => applyChange(l => l.RubyMargin = x.NewValue)); romajiMarginSliderBar.Current.BindValueChanged(x => applyChange(l => l.RomajiMargin = x.NewValue)); AddStep("Small size lyric layout", () => initialLyricLine(createDefaultLyricLine("@カラオケ", new[] { "@Ruby1=カ,か", "@Ruby2=ラ,ら", "@Ruby3=オ,お", "@Ruby4=ケ,け" }, new[] { "@Romaji1=カ,ka", "@Romaji2=ラ,ra", "@Romaji3=オ,o", "@Romaji4=ケ,ke" } , "karaoke"))); AddStep("Medium size lyric layout", () => initialLyricLine(createDefaultLyricLine("@[00:18:58]た[00:18:81]だ[00:19:36]風[00:20:09]に[00:20:29]揺[00:20:49]ら[00:20:68]れ[00:20:89]て[00:20:93]", new[] { "@Ruby1=風,かぜ", "@Ruby2=揺,ゆ" }, new[] { "@Romaji1=た,ta", "@Romaji2=だ,da", "@Romaji3=風,kaze", "@Romaji4=に,ni", "@Romaji5=揺,yu", "@Romaji6=ら,ra", "@Romaji7=れ,re", "@Romaji8=て,te" } , "karaoke"))); AddStep("Large size lyric layout", () => initialLyricLine(createDefaultLyricLine("@灰色(いろ)(いろ)の景色(いろ)(いろ)さえ色づき始める", Array.Empty <string>(), Array.Empty <string>(), "karaoke"))); }