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(); }
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 }; }
private void CloseModal() { if (IsModalOpen()) { if (configuration.UseKeyboardInsteadOfMouseToInteract) { ModalElement.SendKeys(Keys.Escape); } else { CloseModalElement.Click(); } } }
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(); }; }
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 }; }
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, }; }
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 }; }
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 }; }
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 }; }
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 }; }
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; }
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); }
/// <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; }
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); }