public CustomFormDialog(uint formId, BedrockFormManager parent, CustomForm form, InputManager inputManager) : base(formId, parent, inputManager) { Container.AddChild(new GuiTextElement() { Anchor = Alignment.TopCenter, Text = form.Title, FontStyle = FontStyle.Bold, Scale = 2f, TextColor = TextColor.White }); Form = form; GuiScrollableStackContainer stackContainer = new GuiScrollableStackContainer(); stackContainer.Orientation = Orientation.Vertical; stackContainer.Anchor = Alignment.Fill; stackContainer.ChildAnchor = Alignment.MiddleFill; var margin = new Thickness(5, 5); foreach (var element in form.Content) { switch (element) { case Label label: { stackContainer.AddChild(new GuiTextElement() { Text = label.Text, Margin = margin }); } break; case Input input: { GuiTextInput guiInput = new GuiTextInput() { Value = input.Value, PlaceHolder = input.Placeholder, Margin = margin }; guiInput.ValueChanged += (sender, s) => { input.Value = s; }; stackContainer.AddChild(guiInput); } break; case Toggle toggle: { GuiToggleButton guiToggle; stackContainer.AddChild(guiToggle = new GuiToggleButton(toggle.Text) { Margin = margin, Value = !toggle.Value }); guiToggle.DisplayFormat = new ValueFormatter <bool>((val) => { return($"{toggle.Text}: {val.ToString()}"); }); guiToggle.Value = toggle.Value; guiToggle.ValueChanged += (sender, b) => { toggle.Value = b; }; } break; case Slider slider: { GuiSlider guiSlider; stackContainer.AddChild(guiSlider = new GuiSlider() { Label = { Text = slider.Text }, Value = slider.Value, MaxValue = slider.Max, MinValue = slider.Min, StepInterval = slider.Step, Margin = margin }); guiSlider.ValueChanged += (sender, d) => { slider.Value = (float)d; }; } break; case StepSlider stepSlider: { stackContainer.AddChild(new GuiTextElement() { Text = "Unsupported stepslider", TextColor = TextColor.Red, Margin = margin }); } break; case Dropdown dropdown: { stackContainer.AddChild(new GuiTextElement() { Text = "Unsupported dropdown", TextColor = TextColor.Red, Margin = margin }); } break; } } SubmitButton = new GuiButton("Submit", SubmitPressed); stackContainer.AddChild(SubmitButton); Container.AddChild(stackContainer); }
public CustomFormDialog(uint formId, BedrockFormManager parent, CustomForm form, InputManager inputManager) : base(formId, parent, inputManager) { Form = form; GuiScrollableStackContainer stackContainer = new GuiScrollableStackContainer(); stackContainer.Orientation = Orientation.Vertical; stackContainer.Anchor = Alignment.Fill; stackContainer.ChildAnchor = Alignment.MiddleFill; stackContainer.Background = Color.Black * 0.35f; var margin = new Thickness(5, 5); foreach (var element in form.Content) { switch (element) { case Label label: { stackContainer.AddChild(new GuiTextElement() { Text = label.Text, Margin = margin }); } break; case Input input: { GuiTextInput guiInput = new GuiTextInput() { Value = input.Value, PlaceHolder = !string.IsNullOrWhiteSpace(input.Placeholder) ? input.Placeholder : input.Text, Margin = margin }; guiInput.ValueChanged += (sender, s) => { input.Value = s; }; stackContainer.AddChild(guiInput); } break; case Toggle toggle: { GuiToggleButton guiToggle; stackContainer.AddChild(guiToggle = new GuiToggleButton(toggle.Text) { Margin = margin, Value = !toggle.Value }); guiToggle.DisplayFormat = new ValueFormatter <bool>((val) => { return($"{toggle.Text}: {val.ToString()}"); }); guiToggle.Value = toggle.Value; guiToggle.ValueChanged += (sender, b) => { toggle.Value = b; }; } break; case Slider slider: { GuiSlider guiSlider; stackContainer.AddChild(guiSlider = new GuiSlider() { Label = { Text = slider.Text }, Value = slider.Value, MaxValue = slider.Max, MinValue = slider.Min, StepInterval = slider.Step, Margin = margin }); guiSlider.ValueChanged += (sender, d) => { slider.Value = (float)d; }; } break; case StepSlider stepSlider: { stackContainer.AddChild(new GuiTextElement() { Text = "Unsupported stepslider", TextColor = TextColor.Red, Margin = margin }); } break; case Dropdown dropdown: { stackContainer.AddChild(new GuiTextElement() { Text = "Unsupported dropdown", TextColor = TextColor.Red, Margin = margin }); } break; } } SubmitButton = new GuiButton("Submit", SubmitPressed); stackContainer.AddChild(SubmitButton); Background = Color.Transparent; var width = 356; var height = width; ContentContainer.Width = ContentContainer.MinWidth = ContentContainer.MaxWidth = width; ContentContainer.Height = ContentContainer.MinHeight = ContentContainer.MaxHeight = height; SetFixedSize(width, height); ContentContainer.AutoSizeMode = AutoSizeMode.None; Container.Anchor = Alignment.MiddleCenter; var bodyWrapper = new GuiContainer(); bodyWrapper.Anchor = Alignment.Fill; bodyWrapper.Padding = new Thickness(5, 0); bodyWrapper.AddChild(stackContainer); Container.AddChild(bodyWrapper); Container.AddChild(Header = new GuiStackContainer() { Anchor = Alignment.TopFill, ChildAnchor = Alignment.BottomCenter, Height = 32, Padding = new Thickness(3), Background = Color.Black * 0.5f }); Header.AddChild(new GuiTextElement() { Text = FixContrast(form.Title), TextColor = TextColor.White, Scale = 2f, FontStyle = FontStyle.DropShadow, Anchor = Alignment.BottomCenter, }); stackContainer.Margin = new Thickness(0, Header.Height, 0, 0); }