//Button configuration Button SetupButton(string name, float location) { Button button = new Button { Height = 25, Width = 100 }; button.Click += delegate { ((MenuScript)Entity.Get<ScriptComponent>().Scripts[1]).Menu(name); }; TextBlock text = new TextBlock { Height = 20, Width = 80, Font = Asset.Load<SpriteFont>("Font"), Text = name, TextAlignment = TextAlignment.Center }; text.SetCanvasRelativePosition(new Vector3(0, 0, 0)); button.Content = new Canvas { Children = { text } }; button.SetCanvasRelativePosition(new Vector3(0, location, 0)); return button; }
protected override async Task LoadContent() { await base.LoadContent(); var background = new Entity { new BackgroundComponent { Texture = Asset.Load<Texture>("ParadoxBackground") } }; Scene.AddChild(background); button1 = new Button { Content = new TextBlock { Text = "text block button 1", Font = Asset.Load<SpriteFont>("CourierNew12"), SynchronousCharacterGeneration = true } }; button1.SetCanvasRelativePosition(new Vector3(0.025f, 0.05f, 0f)); edit1 = new EditText(Services) { Text = "Edit text 1", Font = Asset.Load<SpriteFont>("CourierNew12"), SynchronousCharacterGeneration = true, }; edit1.SetCanvasRelativePosition(new Vector3(0.025f, 0.15f, 0f)); button2 = new Button { Content = new TextBlock { Text = "text block button 2", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15"), SynchronousCharacterGeneration = true } }; edit2 = new EditText(Services) { Text = "Edit text 2", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15"), }; stackPanel = new StackPanel { Children = { button2, edit2 }, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, Orientation = Orientation.Horizontal }; stackPanel.SetCanvasRelativePosition(new Vector3(0.5f, 0.5f, 0f)); stackPanel.SetCanvasPinOrigin(new Vector3(.5f)); canvas = new Canvas { Children = {button1, edit1, stackPanel}, CanBeHitByUser = true }; button1.MouseOverStateChanged += (sender, args) => { triggeredButton1 = true; oldValueButton1 = args.OldValue; newValueButton1 = args.NewValue;}; button2.MouseOverStateChanged += (sender, args) => { triggeredButton2 = true;}; edit1.MouseOverStateChanged += (sender, args) => { triggeredEdit1 = true;}; edit2.MouseOverStateChanged += (sender, args) => { triggeredEdit2 = true;}; canvas.MouseOverStateChanged += (sender, args) => { triggeredCanvas = true;}; stackPanel.MouseOverStateChanged += (sender, args) => { triggeredStackPanel = true;}; UIComponent.RootElement = canvas; }
private void CreateMainMenuUI() { var paradoxLogo = new ImageElement { Source = uiImages["pdx_logo"] }; paradoxLogo.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f)); paradoxLogo.SetCanvasRelativeSize(new Vector3(0.5f, 0.5f, 1f)); paradoxLogo.SetCanvasRelativePosition(new Vector3(0.5f, 0.3f, 1f)); StartButton = new Button { Content = new TextBlock { Font = spriteFont, Text = "Touch to Start", TextColor = Color.Black, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center}, NotPressedImage = buttonImage, PressedImage = buttonImage, MouseOverImage = buttonImage, Padding = new Thickness(80, 27, 25, 35), MinimumWidth = 250f, }; StartButton.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f)); StartButton.SetCanvasRelativePosition(new Vector3(0.5f, 0.7f, 0f)); var mainMenuCanvas = new Canvas(); mainMenuCanvas.Children.Add(paradoxLogo); mainMenuCanvas.Children.Add(StartButton); mainMenuRoot = new ModalElement { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, Content = mainMenuCanvas }; }
private void CreateGameOverUI() { MenuButton = new Button { Content = new TextBlock { Font = spriteFont, Text = "Menu", TextColor = Color.Black, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center}, PressedImage = buttonImage, NotPressedImage = buttonImage, MouseOverImage = buttonImage, Padding = new Thickness(77, 29, 25, 35), MinimumWidth = 190f, }; MenuButton.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f)); MenuButton.SetCanvasRelativePosition(new Vector3(0.70f, 0.7f, 0f)); RetryButton = new Button { Content = new TextBlock { Font = spriteFont, Text = "Retry", TextColor = Color.Black, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center}, Padding = new Thickness(74, 29, 25, 35), MinimumWidth = 190f, PressedImage = buttonImage, MouseOverImage = buttonImage, NotPressedImage = buttonImage }; RetryButton.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f)); RetryButton.SetCanvasRelativePosition(new Vector3(0.3f, 0.7f, 0f)); var gameOverCanvas = new Canvas(); gameOverCanvas.Children.Add(MenuButton); gameOverCanvas.Children.Add(RetryButton); gameOverRoot = new ModalElement { HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, Content = gameOverCanvas, MinimumWidth = 200f, }; }
public void TestComputeAvailableSize() { var child = new Button(); child.SetCanvasPinOrigin(new Vector3(0, 0.5f, 1)); // tests in the cases position is absolute var availableSize = new Vector3(100, 150, 200); child.SetCanvasAbsolutePosition(new Vector3(-1, -2, -3)); Utilities.AreExactlyEqual(new Vector3(0), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasAbsolutePosition(new Vector3(0, 0, 0)); Utilities.AreExactlyEqual(new Vector3(100, 0, 0), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasAbsolutePosition(new Vector3(1, 2, 3)); Utilities.AreExactlyEqual(new Vector3(99, 4, 3), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasAbsolutePosition(availableSize); Utilities.AreExactlyEqual(new Vector3(0, 0, 200), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasAbsolutePosition(availableSize + new Vector3(1, 2, 3)); Utilities.AreExactlyEqual(new Vector3(0), ComputeAvailableSize(child, availableSize, false)); // tests in the cases position is relative child.SetCanvasRelativePosition(new Vector3(-1, -2, -3)); Utilities.AreExactlyEqual(new Vector3(0), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasRelativePosition(new Vector3(0, 0, 0)); Utilities.AreExactlyEqual(new Vector3(100, 0, 0), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasRelativePosition(new Vector3(0.1f, 0.2f, 0.4f)); Utilities.AreExactlyEqual(new Vector3(90, 60, 80), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasRelativePosition(new Vector3(1f)); Utilities.AreExactlyEqual(new Vector3(0, 0, 200), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasRelativePosition(new Vector3(1.1f, 2f, 3f)); Utilities.AreExactlyEqual(new Vector3(0), ComputeAvailableSize(child, availableSize, false)); // tests in the case available size are infinite availableSize = new Vector3(float.PositiveInfinity); child.SetCanvasAbsolutePosition(new Vector3(-1, -2, -3)); Utilities.AreExactlyEqual(new Vector3(0), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasAbsolutePosition(new Vector3(1, 2, 3)); Utilities.AreExactlyEqual(new Vector3(float.PositiveInfinity, 4, 3), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasRelativePosition(new Vector3(-1f, -2f, -3f)); Utilities.AreExactlyEqual(new Vector3(0), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasRelativePosition(new Vector3(1f, 2f, 3f)); Utilities.AreExactlyEqual(new Vector3(float.PositiveInfinity), ComputeAvailableSize(child, availableSize, false)); child.SetCanvasRelativeSize(new Vector3(0, 0.5f, 1.5f)); Utilities.AreExactlyEqual(new Vector3(0, float.PositiveInfinity, float.PositiveInfinity), ComputeAvailableSize(child, availableSize, false)); }
public void TestComputeAbsolutePinPosition() { var child = new Button(); // directly set the values var parentSize = new Vector3(2); child.SetCanvasRelativePosition(new Vector3(float.NaN)); child.SetCanvasAbsolutePosition(new Vector3(-1.5f, 0, 1.5f)); Assert.AreEqual(child.GetCanvasAbsolutePosition(), ComputeAbsolutePinPosition(child, ref parentSize)); child.SetCanvasAbsolutePosition(new Vector3(float.NaN)); child.SetCanvasRelativePosition(new Vector3(-1.5f, 0, 1.5f)); Assert.AreEqual(2*child.GetCanvasRelativePosition(), ComputeAbsolutePinPosition(child, ref parentSize)); // indirectly set the value child.SetCanvasAbsolutePosition(new Vector3(-1.5f, 0, 1.5f)); child.SetCanvasRelativePosition(new Vector3(float.NaN)); Assert.AreEqual(child.GetCanvasAbsolutePosition(), ComputeAbsolutePinPosition(child, ref parentSize)); child.SetCanvasRelativePosition(new Vector3(-1.5f, 0, 1.5f)); child.SetCanvasAbsolutePosition(new Vector3(float.NaN)); Assert.AreEqual(2*child.GetCanvasRelativePosition(), ComputeAbsolutePinPosition(child, ref parentSize)); // indirect/direct mix child.SetCanvasAbsolutePosition(new Vector3(-1.5f, float.NaN, 1.5f)); child.SetCanvasRelativePosition(new Vector3(float.NaN, 1, float.NaN)); Assert.AreEqual(new Vector3(-1.5f, 2, 1.5f), ComputeAbsolutePinPosition(child, ref parentSize)); child.SetCanvasRelativePosition(new Vector3(-1.5f, float.NaN, 1.5f)); child.SetCanvasAbsolutePosition(new Vector3(float.NaN, 1, float.NaN)); Assert.AreEqual(new Vector3(-3f, 1, 3f), ComputeAbsolutePinPosition(child, ref parentSize)); // infinite values parentSize = new Vector3(float.PositiveInfinity); child.SetCanvasRelativePosition(new Vector3(-1.5f, 0, 1.5f)); Utilities.AreExactlyEqual(new Vector3(float.NegativeInfinity, 0f, float.PositiveInfinity), ComputeAbsolutePinPosition(child, ref parentSize)); }
private Button CreateButton(string text, SpriteFont font, int offset) { var button = new Button { Name = text, Padding = Thickness.UniformRectangle(15), HorizontalAlignment = HorizontalAlignment.Left, Content = new TextBlock { Text = text, Font = font, TextSize = 35, TextColor = new Color(200, 200, 200, 255) }, }; button.Click += (sender, args) => ChangeConstraint(offset); button.SetCanvasPinOrigin(new Vector3(offset > 0 ? 1 : 0, 0.5f, 0)); button.SetCanvasRelativePosition(new Vector3(offset > 0 ? 0.97f : 0.03f, 0.93f, 0)); return button; }