private void InitializeWelcomePopup()
        {
            welcomePopup = UILibrary.InstantiateElement <ModalElement>("WelcomePopup");
            welcomePopup.SetPanelZIndex(1);

            // FIXME: UI asset should support multiline text
            var welcomeText = welcomePopup.FindVisualChildOfType <TextBlock>("welcomeText");

            welcomeText.Text = "Welcome to stride UI sample.\nPlease name your character";

            var cancelButton = welcomePopup.FindVisualChildOfType <Button>("cancelButton");

            cancelButton.Click += delegate
            {
                nameTextBlock.Text = DefaultName;
                CloseWelcomePopup();
            };

            var nameEditText = welcomePopup.FindVisualChildOfType <EditText>("nameEditText");

            nameEditText.Text = DefaultName;
            var validateButton = welcomePopup.FindVisualChildOfType <Button>("validateButton");

            validateButton.Click += delegate
            {
                nameTextBlock.Text = nameEditText.Text.Trim();
                CloseWelcomePopup();
            };
        }
 private void AddSettled(List <Element> list, ModalElement element)
 {
     if (element.IsSettled)
     {
         list.Add(element);
     }
 }
        private void InitializeShipSelectionPopup()
        {
            shipSelectPopup = UILibrary.InstantiateElement <ModalElement>("ShipSelectPopup");
            shipSelectPopup.SetPanelZIndex(1);

            // Layout elements in vertical StackPanel
            var contentStackpanel = shipSelectPopup.FindVisualChildOfType <StackPanel>("contentStackPanel");

            // Create and Add SpaceShip to the stack layout
            foreach (var ship in shipList)
            {
                contentStackpanel.Children.Add(CreateShipSelectionItem(ship));
            }

            // Uncomment those lines to have an example of stack panel item virtualization
            //var shipInitialCount = shipList.Count;
            //contentStackpanel.ItemVirtualizationEnabled = true;
            //for (var i = 0; i < 200; i++)
            //{
            //    shipList.Add(new SpaceShip { Name = shipList[i % shipInitialCount].Name });
            //    contentStackpanel.Children.Add(CreateShipSelectionItem(shipList[shipList.Count - 1]));
            //}

            UpdateShipStatus();
            CloseShipSelectPopup();
        }
Exemple #4
0
        private void CreateGameOverUI()
        {
            var menuButton = new Button
            {
                Content = new TextBlock {
                    Font = Font, Text = "Menu", TextColor = Color.Black,
                    HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center
                },
                PressedImage    = buttonImage,
                NotPressedImage = buttonImage,
                MouseOverImage  = buttonImage,
                Padding         = new Thickness(77, 30, 25, 30),
                MinimumWidth    = 190f,
            };

            menuButton.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f));
            menuButton.SetCanvasRelativePosition(new Vector3(0.70f, 0.7f, 0f));
            menuButton.Click += (sender, args) =>
            {
                GameGlobals.GameResetEventKey.Broadcast();
                StartMainMenuMode();
            };

            var retryButton = new Button
            {
                Content = new TextBlock {
                    Font = Font, Text = "Retry", TextColor = Color.Black,
                    HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center
                },
                Padding         = new Thickness(74, 30, 25, 30),
                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));
            retryButton.Click += (sender, args) =>
            {
                GameGlobals.GameResetEventKey.Broadcast();
                GameGlobals.GameStartedventKey.Broadcast();
                StartGameMode();
            };

            var gameOverCanvas = new Canvas();

            gameOverCanvas.Children.Add(menuButton);
            gameOverCanvas.Children.Add(retryButton);

            gameOverRoot = new ModalElement
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                Content             = gameOverCanvas
            };
        }
Exemple #5
0
 private void CloseModal()
 {
     if (IsModalOpen())
     {
         if (configuration.UseKeyboardInsteadOfMouseToInteract)
         {
             ModalElement.SendKeys(Keys.Escape);
         }
         else
         {
             CloseModalElement.Click();
         }
     }
 }
Exemple #6
0
        public override void Start()
        {
            var menuControl = ControlsLibrary.InstantiateElement <Grid>("FantasyGrid");
            var modal       = new ModalElement {
                Content = menuControl
            };

            UI.Page = new UIPage {
                RootElement = modal
            };
            modal.OutsideClick += (sender, e) => Hide();
            playerClick         = new EventReceiver <Raycaster.ClickResult>(PlayerInput.OnClickable);
            Hide();
        }
        private void InitializeLoginGrid()
        {
            m_LoginGrid = UILibrary.InstantiateElement <ModalElement>("LoginPopup");
            Button enter = m_LoginGrid.FindVisualChildOfType <Button>("Enter");

            enter.Click += delegate
            {
                Log.Info("Mouse button clicked");
                EditText name = m_LoginGrid.FindVisualChildOfType <EditText>("Name");
                m_SceneController.SubmitForm(name.Text);

                CloseLoginGrid();
            };
        }
Exemple #8
0
        private void CreateMainMenuUI()
        {
            var strideLogo = new ImageElement {
                Source = SpriteFromSheet.Create(UIImages, "sd_logo")
            };

            strideLogo.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f));
            strideLogo.SetCanvasRelativeSize(new Vector3(0.75f, 0.5f, 1f));
            strideLogo.SetCanvasRelativePosition(new Vector3(0.5f, 0.3f, 1f));

            var startButton = new Button
            {
                Content = new TextBlock
                {
                    Font                = Font,
                    Text                = "Touch to Start",
                    TextColor           = Color.Black,
                    HorizontalAlignment = HorizontalAlignment.Center,
                    VerticalAlignment   = VerticalAlignment.Center
                },
                NotPressedImage = buttonImage,
                PressedImage    = buttonImage,
                MouseOverImage  = buttonImage,
                Padding         = new Thickness(77, 30, 25, 30),
                MinimumWidth    = 250f,
            };

            startButton.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f));
            startButton.SetCanvasRelativePosition(new Vector3(0.5f, 0.7f, 0f));
            startButton.Click += (sender, args) =>
            {
                GameGlobals.GameStartedEventKey.Broadcast();
                StartGameMode();
            };

            var mainMenuCanvas = new Canvas();

            mainMenuCanvas.Children.Add(strideLogo);
            mainMenuCanvas.Children.Add(startButton);

            mainMenuRoot = new ModalElement
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                Content             = mainMenuCanvas
            };
        }
Exemple #9
0
        private void CreateGameOverUI()
        {
            MenuButton = new Button
            {
                Content = new TextBlock {
                    Font = Font, 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 = Font, 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,
            };
        }
Exemple #10
0
        private void CreateMainMenuUI()
        {
            var xenkoLogo = new ImageElement {
                Source = SpriteFromSheet.Create(UIImages, "xk_logo")
            };

            xenkoLogo.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f));
            xenkoLogo.SetCanvasRelativeSize(new Vector3(0.75f, 0.5f, 1f));
            xenkoLogo.SetCanvasRelativePosition(new Vector3(0.5f, 0.3f, 1f));

            StartButton = new Button
            {
                Content = new TextBlock {
                    Font = Font, Text = "Touch to Start", TextColor = Color.Black,
                    HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center
                },
                NotPressedImage = buttonImage,
                PressedImage    = buttonImage,
                MouseOverImage  = buttonImage,
                Padding         = new Thickness(77, 30, 25, 30),
                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(xenkoLogo);
            mainMenuCanvas.Children.Add(StartButton);

            mainMenuRoot = new ModalElement
            {
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                Content             = mainMenuCanvas
            };
        }
Exemple #11
0
        protected override async Task LoadContent()
        {
            await base.LoadContent();

            sprites = Content.Load <SpriteSheet>("UIImages");

            // Also draw a texture during the clear renderer
            // TODO: Use a custom compositor as soon as we have visual scripting?
            var topChildRenderer = ((SceneCameraRenderer)SceneSystem.GraphicsCompositor.Game).Child;
            var forwardRenderer  = (topChildRenderer as SceneRendererCollection)?.Children.OfType <ForwardRenderer>().FirstOrDefault() ?? (ForwardRenderer)topChildRenderer;

            forwardRenderer.Clear = new ClearAndDrawTextureRenderer {
                Color = forwardRenderer.Clear.Color, Texture = sprites["GameScreen"].Texture
            };

            var lifeBar = new ImageElement {
                Source = SpriteFromSheet.Create(sprites, "Logo"), HorizontalAlignment = HorizontalAlignment.Center
            };

            lifeBar.DependencyProperties.Set(GridBase.ColumnSpanPropertyKey, 3);

            var quitText = new TextBlock {
                Text = "Quit Game", Font = Content.Load <SpriteFont>("MicrosoftSansSerif15")
            };

            ApplyTextBlockDefaultStyle(quitText);
            var quitGameButton = new Button
            {
                Content             = quitText,
                VerticalAlignment   = VerticalAlignment.Bottom,
                HorizontalAlignment = HorizontalAlignment.Left,
                Padding             = Thickness.UniformRectangle(10),
            };

            ApplyButtonDefaultStyle(quitGameButton);
            quitGameButton.DependencyProperties.Set(GridBase.ColumnPropertyKey, 0);
            quitGameButton.DependencyProperties.Set(GridBase.RowPropertyKey, 2);
            quitGameButton.Click += (sender, args) => Exit();

            modalButton1Text = new TextBlock {
                Text = "Close Modal window 1", Font = Content.Load <SpriteFont>("MicrosoftSansSerif15")
            };
            ApplyTextBlockDefaultStyle(modalButton1Text);
            var modalButton1 = new Button
            {
                Name                = "Button Modal 1",
                Content             = modalButton1Text,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center,
                Padding             = Thickness.UniformRectangle(10),
            };

            ApplyButtonDefaultStyle(modalButton1);
            modalButton1.Click += ModalButton1OnClick;
            modal1              = new ModalElement {
                Content = modalButton1, Name = "Modal 1"
            };
            modal1.DependencyProperties.Set(Panel.ZIndexPropertyKey, 1);
            modal1.DependencyProperties.Set(GridBase.ColumnPropertyKey, 1);
            modal1.DependencyProperties.Set(GridBase.RowPropertyKey, 1);
            modal1.OutsideClick += Modal1OnOutsideClick;

            modalButton2Text = new TextBlock {
                Text = "Close Modal window 2", Font = Content.Load <SpriteFont>("MicrosoftSansSerif15")
            };
            ApplyTextBlockDefaultStyle(modalButton2Text);
            var modalButton2 = new Button
            {
                Name                = "Button Modal 2",
                Content             = modalButton2Text,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center,
                Padding             = Thickness.UniformRectangle(10),
            };

            ApplyButtonDefaultStyle(modalButton2);
            modalButton2.Click += ModalButton2OnClick;
            modal2              = new ModalElement {
                Content = modalButton2, Name = "Modal 2"
            };
            modal2.DependencyProperties.Set(Panel.ZIndexPropertyKey, 2);
            modal2.DependencyProperties.Set(GridBase.ColumnPropertyKey, 1);
            modal2.DependencyProperties.Set(GridBase.RowPropertyKey, 2);
            modal2.OutsideClick += Modal2OnOutsideClick;

            uniformGrid = new UniformGrid {
                Columns = 3, Rows = 3
            };
            uniformGrid.Children.Add(modal1);
            uniformGrid.Children.Add(modal2);
            uniformGrid.Children.Add(lifeBar);
            uniformGrid.Children.Add(quitGameButton);

            UIComponent.Page = new Engine.UIPage {
                RootElement = uniformGrid
            };
        }
Exemple #12
0
        public void CreateUI()
        {
            // https://github.com/stride3d/stride/blob/master/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Game/Code/TutorialUI.cs#L34


            // 2. create our grid of buttons...
            var numButtons = 50;

            var grid = new UniformGrid {
                Name = "grid 1",
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                BackgroundColor     = Color.Yellow,
                Columns             = 2, Rows = numButtons,
            };
            var scrollV = new ScrollViewer {
                Name                = "scroll 1",
                ScrollMode          = ScrollingMode.Vertical,
                BackgroundColor     = Color.Purple,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                ScrollBarThickness  = 50,
            };


            var mainCanvas = new Canvas {
                BackgroundColor = new Color(1.0f, 0f, 0f, 0.5f),
            };



            // https://github.com/stride3d/stride/blob/273dfddd462fd3746569f833e1493700c070b14d/sources/engine/Stride.UI.Tests/Regression/CanvasGridTest.cs
            for (int i = 0; i < numButtons; i++)
            {
                var cur_i       = i;
                var startButton = new Button {
                    Content = new TextBlock {
                        Text = "Button #" + i,
                        Font = myFont, TextColor = Color.Black,
                        HorizontalAlignment = HorizontalAlignment.Center,
                        VerticalAlignment   = VerticalAlignment.Center,
                        BackgroundColor     = Color.LightBlue,
                    },
                    Padding         = new Thickness(77, 30, 25, 30),
                    ClickMode       = ClickMode.Press,
                    BackgroundColor = Color.Green,
                    MinimumWidth    = 250f,
                };
                var objPos = new Vector3(0f, 4f, 1f * i);
                startButton.Click += (object sender, Stride.UI.Events.RoutedEventArgs e) =>
                {
                    // do something to show we clicked a button
                    // like set the text of some other UI control
                    DebugText.Print("Button Clicked #" + cur_i, new Int2(50, 50));
                };

                startButton.DependencyProperties.Set(GridBase.RowPropertyKey, i / 2);
                startButton.DependencyProperties.Set(GridBase.ColumnPropertyKey, i % 2);


                grid.Children.Add(startButton);
            }

            scrollV.Content = grid;
            mainCanvas.Children.Add(scrollV);

            var mainMenuRoot = new ModalElement {
                Width  = 500,
                Height = 500,
                HorizontalAlignment = HorizontalAlignment.Left,
                VerticalAlignment   = VerticalAlignment.Bottom,
                DefaultHeight       = 200,
                OverlayColor        = new Color(0.5f, 0f, 0f, 0.5f), // clear
                Content             = mainCanvas,
            };

            Entity.Get <UIComponent>().Page = new UIPage {
                RootElement = mainMenuRoot
            };
        }
Exemple #13
0
        public void CreateUI()
        {
            // var fontSystem = Services.GetService<FontSystem>();
            // var myFont = fontSystem.NewDynamic(10,"Orkney Regular",FontStyle.Regular);

            // https://github.com/stride3d/stride/blob/master/samples/Tutorials/CSharpBeginner/CSharpBeginner/CSharpBeginner.Game/Code/TutorialUI.cs#L34

            var numRows = 50;

            var grid = new UniformGrid {
                Name = "grid 1",
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                BackgroundColor     = Color.Yellow,
                Columns             = 2, Rows = numRows,
            };
            var scrollV = new ScrollViewer {
                Name                = "scroll 1",
                ScrollMode          = ScrollingMode.Vertical,
                BackgroundColor     = Color.Purple,
                HorizontalAlignment = HorizontalAlignment.Stretch,
                VerticalAlignment   = VerticalAlignment.Stretch,
                ScrollBarThickness  = 50,
            };


            var mainCanvas = new Canvas {
                BackgroundColor = new Color(1.0f, 0f, 0f, 0.5f),
            };



            // https://github.com/stride3d/stride/blob/273dfddd462fd3746569f833e1493700c070b14d/sources/engine/Stride.UI.Tests/Regression/CanvasGridTest.cs
            for (int i = 0; i < numRows; i++)
            {
                var startButton = new Button {
                    Content = new TextBlock {
                        Text = "Create Object #" + i,
                        Font = myFont2, TextColor = Color.Black,
                        HorizontalAlignment = HorizontalAlignment.Center,
                        VerticalAlignment   = VerticalAlignment.Center,
                        BackgroundColor     = Color.LightBlue,
                    },
                    Padding         = new Thickness(77, 30, 25, 30),
                    ClickMode       = ClickMode.Press,
                    BackgroundColor = Color.Green,
                    MinimumWidth    = 250f,
                };
                var objPos = new Vector3(0f, 4f, 1f * i);
                startButton.Click += (object sender, Stride.UI.Events.RoutedEventArgs e) =>
                {
                    scrollV.Name = "scroll fun";
                    LoadAssetTest(objPos);
                };

                startButton.DependencyProperties.Set(GridBase.RowPropertyKey, i / 2);
                startButton.DependencyProperties.Set(GridBase.ColumnPropertyKey, i % 2);


                grid.Children.Add(startButton);
            }

            scrollV.Content = grid;
            mainCanvas.Children.Add(scrollV);

            var mainMenuRoot = new ModalElement {
                Width  = 500,
                Height = 500,
                HorizontalAlignment = HorizontalAlignment.Left,
                VerticalAlignment   = VerticalAlignment.Bottom,
                DefaultHeight       = 200,
                OverlayColor        = new Color(0f, 0f, 0f, 0f), // clear
                Content             = mainCanvas,
            };

            Entity.Get <UIComponent>().Page = new UIPage {
                RootElement = mainMenuRoot
            };
        }
Exemple #14
0
        protected override async Task LoadContent()
        {
            await base.LoadContent();

            sprites = Content.Load <SpriteSheet>("UIImages");

            var lifeBar = new ImageElement {
                Source = SpriteFromSheet.Create(sprites, "Logo"), HorizontalAlignment = HorizontalAlignment.Center
            };

            lifeBar.DependencyProperties.Set(GridBase.ColumnSpanPropertyKey, 3);

            var quitGameButton = new Button
            {
                Content = new TextBlock {
                    Text = "Quit Game", Font = Content.Load <SpriteFont>("MicrosoftSansSerif15")
                },
                VerticalAlignment   = VerticalAlignment.Bottom,
                HorizontalAlignment = HorizontalAlignment.Left,
                Padding             = Thickness.UniformRectangle(10),
            };

            quitGameButton.DependencyProperties.Set(GridBase.ColumnPropertyKey, 0);
            quitGameButton.DependencyProperties.Set(GridBase.RowPropertyKey, 2);
            quitGameButton.Click += (sender, args) => Exit();

            modalButton1Text = new TextBlock {
                Text = "Close Modal window 1", Font = Content.Load <SpriteFont>("MicrosoftSansSerif15")
            };
            var modalButton1 = new Button
            {
                Name                = "Button Modal 1",
                Content             = modalButton1Text,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center,
                Padding             = Thickness.UniformRectangle(10),
            };

            modalButton1.Click += ModalButton1OnClick;
            modal1              = new ModalElement {
                Content = modalButton1, Name = "Modal 1"
            };
            modal1.DependencyProperties.Set(Panel.ZIndexPropertyKey, 1);
            modal1.DependencyProperties.Set(GridBase.ColumnPropertyKey, 1);
            modal1.DependencyProperties.Set(GridBase.RowPropertyKey, 1);
            modal1.OutsideClick += Modal1OnOutsideClick;

            modalButton2Text = new TextBlock {
                Text = "Close Modal window 2", Font = Content.Load <SpriteFont>("MicrosoftSansSerif15")
            };
            var modalButton2 = new Button
            {
                Name                = "Button Modal 2",
                Content             = modalButton2Text,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center,
                Padding             = Thickness.UniformRectangle(10),
            };

            modalButton2.Click += ModalButton2OnClick;
            modal2              = new ModalElement {
                Content = modalButton2, Name = "Modal 2"
            };
            modal2.DependencyProperties.Set(Panel.ZIndexPropertyKey, 2);
            modal2.DependencyProperties.Set(GridBase.ColumnPropertyKey, 1);
            modal2.DependencyProperties.Set(GridBase.RowPropertyKey, 2);
            modal2.OutsideClick += Modal2OnOutsideClick;

            uniformGrid = new UniformGrid {
                Columns = 3, Rows = 3
            };
            uniformGrid.Children.Add(modal1);
            uniformGrid.Children.Add(modal2);
            uniformGrid.Children.Add(lifeBar);
            uniformGrid.Children.Add(quitGameButton);

            UIComponent.RootElement = uniformGrid;
        }
Exemple #15
0
        private void CreateShipSelectionPopup()
        {
            // Create "Please select your SpaceShip" text
            var pleaseSelectText = new TextBlock
            {
                Font          = WesternFont,
                TextSize      = 48,
                TextColor     = Color.White,
                Text          = "Please select your ship",
                TextAlignment = TextAlignment.Center,
                WrapText      = true
            };

            // Layout elements in vertical StackPanel
            var contentStackpanel = new StackPanel {
                Orientation = Orientation.Vertical
            };

            // Create and Add SpaceShip to the stack layout
            foreach (var ship in shipList)
            {
                contentStackpanel.Children.Add(CreateShipButtonElement(ship));
            }

            // Uncomment those lines to have an example of stack panel item virtualization
            //var shipInitialCount = shipList.Count;
            //contentStackpanel.ItemVirtualizationEnabled = true;
            //for (int i = 0; i < 200; i++)
            //{
            //    shipList.Add(new SpaceShip { Name = shipList[i % shipInitialCount].Name });
            //    contentStackpanel.Children.Add(CreateShipButtonElement(shipList[shipList.Count - 1]));
            //}

            UpdateShipStatus();

            var contentScrollView = new ScrollViewer
            {
                MaximumHeight  = 425,
                Content        = contentStackpanel,
                ScrollMode     = ScrollingMode.Vertical,
                Margin         = new Thickness(12, 10, 7, 10),
                Padding        = new Thickness(0, 0, 6, 0),
                ScrollBarColor = Color.Orange
            };

            var scrollViewerDecorator = new ContentDecorator {
                BackgroundImage = SpriteFromSheet.Create(MainSceneImages, "scroll_background"), Content = contentScrollView,
            };

            scrollViewerDecorator.SetGridRow(2);

            var layoutGrid = new Grid();

            layoutGrid.ColumnDefinitions.Add(new StripDefinition());
            layoutGrid.RowDefinitions.Add(new StripDefinition(StripType.Auto));
            layoutGrid.RowDefinitions.Add(new StripDefinition(StripType.Fixed, 10)); // white space
            layoutGrid.RowDefinitions.Add(new StripDefinition(StripType.Star));
            layoutGrid.LayerDefinitions.Add(new StripDefinition());
            layoutGrid.Children.Add(pleaseSelectText);
            layoutGrid.Children.Add(scrollViewerDecorator);

            var shipSelectPopupContent = new ContentDecorator
            {
                BackgroundImage = popupWindowImage,
                Content         = layoutGrid,
                Padding         = new Thickness(110, 120, 100, 140)
            };

            // Create SpaceShip selection popup
            shipSelectPopup = new ModalElement
            {
                Visibility = Visibility.Collapsed,
                Content    = shipSelectPopupContent
            };

            shipSelectPopup.SetPanelZIndex(1);
        }
Exemple #16
0
        /// <summary>
        /// Creates UI showing parameters of Fault formation algorithm
        /// </summary>
        private void CreateUI()
        {
            var virtualResolution = new Vector3(GraphicsDevice.Presenter.BackBuffer.Width, GraphicsDevice.Presenter.BackBuffer.Height, 1);

            loadingModal = new ModalElement {
                Visibility = Visibility.Collapsed
            };

            loadingTextBlock = new TextBlock {
                Font = Font, Text = "Loading a model...", Visibility = Visibility.Collapsed, TextColor = Color.White, TextSize = 22
            };

            loadingTextBlock.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f));
            loadingTextBlock.SetCanvasRelativePosition(new Vector3(0.5f, 0.5f, 0));

            // Parameters Grid
            var parametersGrid = new Grid();

            parametersGrid.LayerDefinitions.Add(new StripDefinition(StripType.Auto));
            parametersGrid.RowDefinitions.Add(new StripDefinition(StripType.Auto));
            parametersGrid.RowDefinitions.Add(new StripDefinition(StripType.Auto));
            parametersGrid.RowDefinitions.Add(new StripDefinition(StripType.Auto));
            parametersGrid.RowDefinitions.Add(new StripDefinition(StripType.Auto));
            parametersGrid.RowDefinitions.Add(new StripDefinition(StripType.Auto));
            parametersGrid.ColumnDefinitions.Add(new StripDefinition(StripType.Auto));
            parametersGrid.ColumnDefinitions.Add(new StripDefinition(StripType.Star));
            parametersGrid.ColumnDefinitions.Add(new StripDefinition(StripType.Fixed, 30));
            parametersGrid.ColumnDefinitions.Add(new StripDefinition(StripType.Fixed, 30));

            // Terrain Size
            var terrainSizeText = new TextBlock
            {
                Font                = Font,
                Text                = "" + (int)Math.Pow(2, terrainSizePowerFactor),
                TextAlignment       = TextAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center,
                MinimumWidth        = 60
            };

            terrainSizeText.SetGridRow(0);
            terrainSizeText.SetGridColumn(1);

            var terrainSizeIncButton = new Button {
                Content = new TextBlock {
                    Text = "+", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            terrainSizeIncButton.SetGridRow(0);
            terrainSizeIncButton.SetGridColumn(3);

            var terrainSizeDecButton = new Button {
                Content = new TextBlock {
                    Text = "-", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            terrainSizeDecButton.SetGridRow(0);
            terrainSizeDecButton.SetGridColumn(2);

            terrainSizeIncButton.Click += (s, e) =>
            {
                TerrainSizePowerFactor++;
                terrainSizeText.Text = "" + (int)Math.Pow(2, TerrainSizePowerFactor);
            };

            terrainSizeDecButton.Click += (s, e) =>
            {
                TerrainSizePowerFactor--;
                terrainSizeText.Text = "" + (int)Math.Pow(2, TerrainSizePowerFactor);
            };

            var terrainSizeDescription = new TextBlock
            {
                Font                = Font,
                Text                = "Terrain Size:",
                TextAlignment       = TextAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Left
            };

            terrainSizeDescription.SetGridRow(0);
            terrainSizeDescription.SetGridColumn(0);

            parametersGrid.Children.Add(terrainSizeDescription);
            parametersGrid.Children.Add(terrainSizeText);
            parametersGrid.Children.Add(terrainSizeDecButton);
            parametersGrid.Children.Add(terrainSizeIncButton);

            // Iteration
            var iterationText = new TextBlock
            {
                Font                = Font,
                Text                = "" + (int)Math.Pow(2, IterationPowerFactor),
                TextAlignment       = TextAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center
            };

            iterationText.SetGridRow(1);
            iterationText.SetGridColumn(1);

            var iterationIncButton = new Button {
                Content = new TextBlock {
                    Text = "+", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            iterationIncButton.SetGridRow(1);
            iterationIncButton.SetGridColumn(3);

            var iterationDecButton = new Button {
                Content = new TextBlock {
                    Text = "-", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            iterationDecButton.SetGridRow(1);
            iterationDecButton.SetGridColumn(2);

            iterationIncButton.Click += (s, e) =>
            {
                IterationPowerFactor++;
                iterationText.Text = "" + (int)Math.Pow(2, IterationPowerFactor);
            };

            iterationDecButton.Click += (s, e) =>
            {
                IterationPowerFactor--;
                iterationText.Text = "" + (int)Math.Pow(2, IterationPowerFactor);
            };

            var iterationDescription = new TextBlock
            {
                Font                = Font,
                Text                = "Iteration:",
                TextAlignment       = TextAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Left
            };

            iterationDescription.SetGridRow(1);
            iterationDescription.SetGridColumn(0);

            parametersGrid.Children.Add(iterationDescription);
            parametersGrid.Children.Add(iterationText);
            parametersGrid.Children.Add(iterationDecButton);
            parametersGrid.Children.Add(iterationIncButton);

            // Filter Intensity
            var filterIntensityText = new TextBlock
            {
                Font                = Font,
                Text                = "" + FilterHeightBandStrength,
                TextAlignment       = TextAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center
            };

            filterIntensityText.SetGridRow(2);
            filterIntensityText.SetGridColumn(1);

            var filterIncButton = new Button {
                Content = new TextBlock {
                    Text = "+", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            filterIncButton.SetGridRow(2);
            filterIncButton.SetGridColumn(3);

            var filterDecButton = new Button {
                Content = new TextBlock {
                    Text = "-", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            filterDecButton.SetGridRow(2);
            filterDecButton.SetGridColumn(2);

            filterIncButton.Click += (s, e) =>
            {
                FilterHeightBandStrength += 0.1f;
                filterIntensityText.Text  = "" + FilterHeightBandStrength;
            };

            filterDecButton.Click += (s, e) =>
            {
                FilterHeightBandStrength -= 0.1f;
                filterIntensityText.Text  = "" + FilterHeightBandStrength;
            };

            var filterIntensityDescription = new TextBlock
            {
                Font                = Font,
                Text                = "Filter Intensity:",
                TextAlignment       = TextAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Left
            };

            filterIntensityDescription.SetGridRow(2);
            filterIntensityDescription.SetGridColumn(0);

            parametersGrid.Children.Add(filterIntensityDescription);
            parametersGrid.Children.Add(filterIntensityText);
            parametersGrid.Children.Add(filterDecButton);
            parametersGrid.Children.Add(filterIncButton);

            // Height Scale
            var heightScaleText = new TextBlock
            {
                Font                = Font,
                Text                = "" + TerrainHeightScale,
                TextAlignment       = TextAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Center
            };

            heightScaleText.SetGridRow(3);
            heightScaleText.SetGridColumn(1);

            var heightScaleIncButton = new Button {
                Content = new TextBlock {
                    Text = "+", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            heightScaleIncButton.SetGridRow(3);
            heightScaleIncButton.SetGridColumn(3);

            var heightScaleDecButton = new Button {
                Content = new TextBlock {
                    Text = "-", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            heightScaleDecButton.SetGridRow(3);
            heightScaleDecButton.SetGridColumn(2);

            heightScaleIncButton.Click += (s, e) =>
            {
                TerrainHeightScale++;
                heightScaleText.Text = "" + TerrainHeightScale;
            };

            heightScaleDecButton.Click += (s, e) =>
            {
                TerrainHeightScale--;
                heightScaleText.Text = "" + TerrainHeightScale;
            };

            var heightScaleDescription = new TextBlock
            {
                Font                = Font,
                Text                = "Height Scale:",
                TextAlignment       = TextAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Left
            };

            heightScaleDescription.SetGridRow(3);
            heightScaleDescription.SetGridColumn(0);

            parametersGrid.Children.Add(heightScaleDescription);
            parametersGrid.Children.Add(heightScaleText);
            parametersGrid.Children.Add(heightScaleDecButton);
            parametersGrid.Children.Add(heightScaleIncButton);

            // Zoom
            var zoomFactorIncButton = new Button {
                Content = new TextBlock {
                    Text = "+", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            zoomFactorIncButton.SetGridRow(4);
            zoomFactorIncButton.SetGridColumn(3);

            var zoomFactorDecButton = new Button {
                Content = new TextBlock {
                    Text = "-", Font = Font, TextAlignment = TextAlignment.Center
                }
            };

            zoomFactorDecButton.SetGridRow(4);
            zoomFactorDecButton.SetGridColumn(2);

            zoomFactorIncButton.Click += (s, e) =>
            {
                zoomFactor -= 0.1f;
                UpdateCamera();
            };

            zoomFactorDecButton.Click += (s, e) =>
            {
                zoomFactor += 0.1f;
                UpdateCamera();
            };

            var zoomDescription = new TextBlock
            {
                Font                = Font,
                Text                = "Zoom",
                TextAlignment       = TextAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                HorizontalAlignment = HorizontalAlignment.Right
            };

            zoomDescription.SetGridRow(4);
            zoomDescription.SetGridColumn(0);

            parametersGrid.Children.Add(zoomDescription);
            parametersGrid.Children.Add(zoomFactorDecButton);
            parametersGrid.Children.Add(zoomFactorIncButton);

            // Light toggle button
            var lightToggleButton = new Button {
                Content = new TextBlock {
                    Text = "Directional Light Off", Font = Font
                }, HorizontalAlignment = HorizontalAlignment.Left
            };

            lightToggleButton.Click += (s, e) =>
            {
                var ligh0 = DirectionalLight0.Get <LightComponent>();
                var ligh1 = DirectionalLight1.Get <LightComponent>();

                ligh0.Enabled = !ligh0.Enabled;
                ligh1.Enabled = !ligh1.Enabled;
                ((TextBlock)lightToggleButton.Content).Text = ligh0.Enabled ? "Directional Light Off" : "Directional Light On";
            };

            // Re-create terrain
            var reCreateTerrainButton = new Button {
                Content = new TextBlock {
                    Text = "Recreate terrain", Font = Font
                }, HorizontalAlignment = HorizontalAlignment.Left
            };

            reCreateTerrainButton.Click += (s, e) => GenerateTerrain();

            var descriptionCanvas = new StackPanel
            {
                Children =
                {
                    new TextBlock {
                        Font = Font, Text = "Fault formation parameters", TextSize = 19
                    },
                    parametersGrid,
                    lightToggleButton,
                    reCreateTerrainButton
                }
            };

            var activeButton = new Button
            {
                Content = new TextBlock {
                    Text = "Description Off", Font = Font
                },
                Padding             = new Thickness(10, 10, 10, 10),
                Margin              = new Thickness(0, 0, 0, 20),
                HorizontalAlignment = HorizontalAlignment.Left
            };

            var isDescriptionOn = true;

            activeButton.Click += (s, e) =>
            {
                isDescriptionOn = !isDescriptionOn;
                ((TextBlock)activeButton.Content).Text = isDescriptionOn ? "Description Off" : "Description On";
                descriptionCanvas.Visibility           = isDescriptionOn ? Visibility.Visible : Visibility.Collapsed;
            };

            var buttonDescription = new StackPanel {
                Orientation = Orientation.Vertical, Children = { activeButton, descriptionCanvas }
            };

            var uiComponent = UIEntity.Get <UIComponent>();

            uiComponent.Page.RootElement = new Canvas {
                Children = { buttonDescription, loadingModal, loadingTextBlock }
            };
            uiComponent.Resolution = virtualResolution;
        }
Exemple #17
0
        private void CreateWelcomePopup()
        {
            // Create welcome text
            var welcomeText = new TextBlock
            {
                Font                = WesternFont,
                TextSize            = 42,
                TextColor           = Color.White,
                Text                = "Welcome to xenko UI sample.\n" + "Please name your character",
                TextAlignment       = TextAlignment.Center,
                WrapText            = true,
                Margin              = new Thickness(20, 0, 20, 0),
                HorizontalAlignment = HorizontalAlignment.Center
            };

            // Create Edit text
            var nameEditText = new EditText()
            {
                Font                = WesternFont,
                TextSize            = 32,
                TextColor           = Color.White,
                Text                = DefaultName,
                MaxLength           = 15,
                TextAlignment       = TextAlignment.Center,
                ActiveImage         = SpriteFromSheet.Create(MainSceneImages, "tex_edit_activated_background"),
                InactiveImage       = SpriteFromSheet.Create(MainSceneImages, "tex_edit_inactivated_background"),
                MouseOverImage      = SpriteFromSheet.Create(MainSceneImages, "tex_edit_inactivated_background"),
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
                MinimumWidth        = 340,
                Padding             = new Thickness(30, 30, 30, 40), // Pad text (Content inside),
                Margin              = new Thickness(0, 80, 0, 80),   // Space around the edit
            };

            nameEditText.SetGridRow(1);

            // Create cancel and validate button
            var cancelButton = CreateTextButton("Cancel");

            cancelButton.SetGridColumn(1);

            cancelButton.Click += delegate
            {
                nameTextBlock.Text      = DefaultName;
                welcomePopup.Visibility = Visibility.Collapsed;
            };

            var validateButton = CreateTextButton("Validate");

            validateButton.SetGridColumn(3);

            validateButton.Click += delegate
            {
                nameTextBlock.Text      = nameEditText.Text.Trim();
                welcomePopup.Visibility = Visibility.Collapsed;
            };

            // Put cancel and validate buttons in stack panel (Left-right orientation placement)
            var buttonPanel = new Grid();

            buttonPanel.ColumnDefinitions.Add(new StripDefinition(StripType.Star));
            buttonPanel.ColumnDefinitions.Add(new StripDefinition(StripType.Auto));
            buttonPanel.ColumnDefinitions.Add(new StripDefinition(StripType.Star));
            buttonPanel.ColumnDefinitions.Add(new StripDefinition(StripType.Auto));
            buttonPanel.ColumnDefinitions.Add(new StripDefinition(StripType.Star));
            buttonPanel.RowDefinitions.Add(new StripDefinition());
            buttonPanel.LayerDefinitions.Add(new StripDefinition());

            buttonPanel.Children.Add(cancelButton);
            buttonPanel.Children.Add(validateButton);
            buttonPanel.SetGridRow(2);

            // Create a stack panel to store items (Top-down orientation placement)
            var popupContentPanel = new Grid
            {
                MaximumWidth        = 580,
                MaximumHeight       = 900,
                HorizontalAlignment = HorizontalAlignment.Center,
                VerticalAlignment   = VerticalAlignment.Center,
            };

            popupContentPanel.ColumnDefinitions.Add(new StripDefinition());
            popupContentPanel.RowDefinitions.Add(new StripDefinition(StripType.Auto));
            popupContentPanel.RowDefinitions.Add(new StripDefinition(StripType.Star));
            popupContentPanel.RowDefinitions.Add(new StripDefinition(StripType.Auto));
            popupContentPanel.LayerDefinitions.Add(new StripDefinition());

            popupContentPanel.Children.Add(welcomeText);
            popupContentPanel.Children.Add(nameEditText);
            popupContentPanel.Children.Add(buttonPanel);

            var welcomePopupContent = new ContentDecorator
            {
                BackgroundImage = popupWindowImage,
                Content         = popupContentPanel,
                Padding         = new Thickness(85, 130, 85, 110)
            };

            welcomePopup = new ModalElement
            {
                Visibility = Visibility.Collapsed,
                Content    = welcomePopupContent,
            };
            welcomePopup.SetPanelZIndex(1);
        }