protected override async Task LoadContent() { await base.LoadContent(); Sprites = Asset.Load<SpriteSheet>("UIImages"); var lifeBar = new ImageElement { Source = Sprites["Logo"], HorizontalAlignment = HorizontalAlignment.Center }; lifeBar.DependencyProperties.Set(GridBase.ColumnSpanPropertyKey, 3); var quitGameButton = new Button { Content = new TextBlock { Text = "Quit Game", Font = Asset.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 = Asset.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 = Asset.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; }
//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(); UIComponent.VirtualResolution = new Vector3(GraphicsDevice.BackBuffer.Width, GraphicsDevice.BackBuffer.Height, 500); textBlock = new TextBlock { WrapText = true, TextSize = 15, TextColor = Color.Black, Font = Asset.Load<SpriteFont>("MSMincho10"), Text = @"This is a very long sentence that will hopefully be wrapped up. Does it work with kanjis too? let's see that in the following line. Here we goes. 漢字も大丈夫そうですね!良かった!でも、文章の切る所は本当に合ってますか?どうかな。。 やった!", SynchronousCharacterGeneration = true, }; var decorator = new ContentDecorator { Width = 200, Content = textBlock, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, BackgroundImage = new UIImage(Asset.Load<Texture>("DumbWhite")) }; UIComponent.RootElement = decorator; }
public override void Start() { base.Start(); var font = Asset.Load<SpriteFont>("Font"); var textBlock = new TextBlock { TextColor = Color.White, Font = font, Text = UIText }; textBlock.SetCanvasPinOrigin(new Vector3(1, 0, 0)); textBlock.SetCanvasRelativePosition(new Vector3(0.63f, 0.8f, 0f)); Entity.Get<UIComponent>().RootElement = new Canvas { Children = { textBlock } }; }
// Create the UI layout and content public void Start() { textBlock = new TextBlock { Text = "Tap The Screen!", Font = Asset.Load<SpriteFont>("Font"), TextAlignment = TextAlignment.Center, }; textBlock.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 0f)); textBlock.SetCanvasRelativePosition(new Vector3(0.5f, 0.85f, 0f)); Entity.Get<UIComponent>().RootElement = new Canvas { Children = { textBlock } }; }
public override void Start() { var font = Asset.Load<SpriteFont>("Font"); var textBlock = new TextBlock { Font = font, TextSize = 18, TextColor = Color.Gold, Text = "Shoot : Touch in a vertical section where the Agent resides\n" + "Move : Touch in the screen on the corresponding side of the Agent", }; textBlock.SetCanvasRelativePosition(new Vector3(0.008f, 0.9f, 0)); Entity.Get<UIComponent>().RootElement = new Canvas { Children = { textBlock } }; }
public override void Start() { base.Start(); var textBlock = new TextBlock { Text = "Shoot the cubes!", Font = Asset.Load<SpriteFont>("Font"), TextColor = Color.White, TextSize = 60 }; textBlock.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 0)); textBlock.SetCanvasRelativePosition(new Vector3(0.5f, 0.9f, 0f)); Entity.Get<UIComponent>().RootElement = new Canvas { Children = { textBlock } }; }
public override void Start() { simulation = Entity.Get<PhysicsComponent>().Simulation; simulation.Gravity = new Vector3(0, -9, 0); cubeRigidBody = cube.Get<PhysicsComponent>()[0].RigidBody; cubeRigidBody.CanSleep = false; sphereRigidBody = sphere.Get<PhysicsComponent>()[0].RigidBody; sphereRigidBody.CanSleep = false; // Create the UI var font = Asset.Load<SpriteFont>("Font"); constraintNameBlock = new TextBlock { Font = font, TextSize = 55, TextColor = Color.White, }; constraintNameBlock.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 0)); constraintNameBlock.SetCanvasRelativePosition(new Vector3(0.5f, 0.93f, 0)); Entity.Get<UIComponent>().RootElement = new Canvas { Children = { constraintNameBlock, CreateButton("Next Constraint", font, 1), CreateButton("Last Constraint", font, -1) } }; // Create and initialize constraint constraintsList.Add(CreatePoint2PointConstraint); constraintsList.Add(CreateHingeConstraint); constraintsList.Add(CreateGearConstraint); constraintsList.Add(CreateSliderConstraint); constraintsList.Add(CreateConeTwistConstraint); constraintsList.Add(CreateGeneric6DoFConstraint); constraintsList[constraintIndex](); }
protected override async Task LoadContent() { await base.LoadContent(); // setup the camera var camera = new TestCamera { Yaw = 0, Pitch = 0, Position = new Vector3(0, 0, 1000), MoveSpeed = 100 }; CameraComponent = camera.Camera; Script.Add(camera); UIRoot.Transform.Rotation = Quaternion.RotationX(MathUtil.Pi / 3f); UIComponent.RootElement = new ImageElement { Source = new Sprite(Asset.Load<Texture>("uv"))}; UIComponent.IsFullScreen = false; UIComponent.IsBillboard = false; UIComponent.VirtualResolution = new Vector3(200, 200, 100); var cube = new Entity { new ModelComponent { Model = Asset.Load<Model>("cube Model") } }; cube.Transform.Scale = new Vector3(10000); cube.Transform.Position = new Vector3(0, 0, 10); Scene.AddChild(cube); var font = Asset.Load<SpriteFont>("CourierNew12"); var textBlockZ0 = new TextBlock { Font = font, TextColor = Color.Black, TextSize = 20, Text = "At depth 0", VerticalAlignment = VerticalAlignment.Center, SynchronousCharacterGeneration = true, BackgroundColor = Color.Red }; var entity1 = new Entity { new UIComponent { RootElement = textBlockZ0, IsFullScreen = false, IsBillboard = false, VirtualResolution = new Vector3(150) } }; entity1.Transform.Position = new Vector3(-500, 0, 0); Scene.AddChild(entity1); var textBlockZ500 = new TextBlock { Font = font, TextColor = Color.Black, TextSize = 20, Text = "At depth 300", VerticalAlignment = VerticalAlignment.Center, SynchronousCharacterGeneration = true, BackgroundColor = Color.Red }; var entity2 = new Entity { new UIComponent { RootElement = textBlockZ500, IsFullScreen = false, IsBillboard = false, VirtualResolution = new Vector3(150) } }; entity2.Transform.Position = new Vector3(300, 0, 300); Scene.AddChild(entity2); var textBlockZM500 = new TextBlock { Font = font, TextColor = Color.Black, TextSize = 20, Text = "At depth -300", VerticalAlignment = VerticalAlignment.Center, SynchronousCharacterGeneration = true, BackgroundColor = Color.Red }; var entity3 = new Entity { new UIComponent { RootElement = textBlockZM500, IsFullScreen = false, IsBillboard = false, VirtualResolution = new Vector3(150) } }; entity3.Transform.Position = new Vector3(0, 300, -300); Scene.AddChild(entity3); elements.Add(entity1); elements.Add(entity2); elements.Add(entity3); }
protected override async Task LoadContent() { await base.LoadContent(); UIComponent.VirtualResolution = new Vector3(GraphicsDevice.BackBuffer.Width, GraphicsDevice.BackBuffer.Height, 500); textBlock = new TextBlock { TextColor = Color.Black, Font = Asset.Load<SpriteFont>("MSMincho10"), Text = @"Text Block test にほんご ニホンゴ 人 Several line of texts with different width. Next is empty. This is the last line.", SynchronousCharacterGeneration = true, BackgroundColor = Color.LightSkyBlue }; UIComponent.RootElement = textBlock; }
protected override async Task LoadContent() { await base.LoadContent(); textBlock = new TextBlock { TextColor = Color.Black, Font = Asset.Load<SpriteFont>("MSMincho10"), Text = @"Simple sample text surrounded by decorator.", SynchronousCharacterGeneration = true }; var decorator = new ContentDecorator { Content = textBlock, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, BackgroundImage = new Sprite(Asset.Load<Texture>("DumbWhite")) }; UIComponent.RootElement = decorator; }
protected override async Task LoadContent() { await base.LoadContent(); var imgElt = new ImageElement { Source = new Sprite(Asset.Load<Texture>("uv")), StretchType = StretchType.Fill }; imgElt.DependencyProperties.Set(GridBase.RowSpanPropertyKey, 2); imgElt.DependencyProperties.Set(GridBase.ColumnSpanPropertyKey, 2); imgElt.DependencyProperties.Set(GridBase.RowPropertyKey, 1); imgElt.DependencyProperties.Set(GridBase.ColumnPropertyKey, 1); var button1 = new Button(); button1.DependencyProperties.Set(GridBase.RowPropertyKey, 3); button1.DependencyProperties.Set(GridBase.ColumnPropertyKey, 0); var button2 = new Button(); button2.DependencyProperties.Set(GridBase.RowPropertyKey, 3); button2.DependencyProperties.Set(GridBase.ColumnPropertyKey, 3); var text = new TextBlock { Text = "Test Uniform Grid", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15"), HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center }; text.DependencyProperties.Set(GridBase.ColumnSpanPropertyKey, 2); text.DependencyProperties.Set(GridBase.RowPropertyKey, 0); text.DependencyProperties.Set(GridBase.ColumnPropertyKey, 1); var grid = new UniformGrid { Rows = 4, Columns = 4}; grid.Children.Add(imgElt); grid.Children.Add(button1); grid.Children.Add(button2); grid.Children.Add(text); UIComponent.RootElement = grid; }
public override async Task Execute() { var textBlock = new TextBlock { Text = "Use arrows to play with gravity!", Font = Asset.Load<SpriteFont>("SpriteFont"), TextColor = Color.White, TextSize = 40 }; textBlock.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 0)); textBlock.SetCanvasRelativePosition(new Vector3(0.5f, 0.75f, 0f)); Entity.Get<UIComponent>().RootElement = new Canvas { Children = { textBlock } }; while (Game.IsRunning) { await Script.NextFrame(); if (!Input.IsKeyPressed(Keys.Left) && !Input.IsKeyPressed(Keys.Right) && !Input.IsKeyPressed(Keys.Up) && !Input.IsKeyPressed(Keys.Down)) continue; Entity.Get<UIComponent>().RootElement = null; return; } }
protected override async Task LoadContent() { await base.LoadContent(); textBlock = new TextBlock { Font = Asset.Load<SpriteFont>("MSMincho10"), Text = "Simple Text - 簡単な文章。", TextColor = Color.Black, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, SynchronousCharacterGeneration = true }; decorator = new ContentDecorator { VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, BackgroundImage = new UIImage(Asset.Load<Texture>("DumbWhite")), Content = textBlock }; UIComponent.RootElement = decorator; }
private void CreateWelcomePopup() { // Create welcome text var welcomeText = new TextBlock { Font = westernFont, TextSize = 42, TextColor = Color.White, Text = "Welcome to paradox 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(Services) { Font = westernFont, TextSize = 32, TextColor = Color.White, Text = DefaultName, MaxLength = 15, TextAlignment = TextAlignment.Center, ActiveImage = mainScreneImages["tex_edit_activated_background"], InactiveImage = mainScreneImages["tex_edit_inactivated_background"], MouseOverImage = mainScreneImages["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); }
private void CreateGameUI() { distanceTextBlock = new TextBlock { Font = spriteFont, TextColor = Color.Gold, VerticalAlignment = VerticalAlignment.Center }; distanceTextBlock.SetCanvasPinOrigin(new Vector3(0.5f, 0.5f, 1f)); distanceTextBlock.SetCanvasRelativePosition(new Vector3(0.2f, 0.05f, 0f)); var scoreBoard = new ContentDecorator { BackgroundImage = uiImages["distance_bg"], Content = distanceTextBlock, Padding = new Thickness(60, 31, 25, 35), MinimumWidth = 290f // Set the minimum width of score button so that it wont modify when the content (text) changes, and less than minimum. }; gameRoot = new Canvas(); gameRoot.Children.Add(scoreBoard); }
//Textblock configuration TextBlock SetupTextBlock(string text, float x, float y) { TextBlock textBlock = new TextBlock { Height = 25, Width = 100, Font = Asset.Load<SpriteFont>("Font"), Text = text, TextAlignment = TextAlignment.Center }; textBlock.SetCanvasRelativePosition(new Vector3(x, y, 0)); return textBlock; }
protected override async Task LoadContent() { await base.LoadContent(); var resolution = (Vector3)UIComponent.VirtualResolution; var canvas = new Canvas(); var imgElt = new ImageElement { Name = "UV image", Source = new Sprite(Asset.Load<Texture>("uv")), Width = resolution.X / 5, Height = resolution.Y / 5, StretchType = StretchType.Fill }; imgElt.DependencyProperties.Set(Canvas.PinOriginPropertyKey, 0.5f * Vector3.One); imgElt.DependencyProperties.Set(Canvas.AbsolutePositionPropertyKey, new Vector3(resolution.X / 10, resolution.Y / 10, 0)); imgElt.DependencyProperties.Set(Panel.ZIndexPropertyKey, -1); stackPanel = new StackPanel { Orientation = Orientation.Vertical }; scrollViewer = new ScrollViewer { ScrollMode = ScrollingMode.Vertical }; scrollViewer.DependencyProperties.Set(Canvas.AbsolutePositionPropertyKey, new Vector3(resolution.X / 4, resolution.Y / 10, 0)); scrollViewer.Content = stackPanel; var button1 = new Button { Margin = Thickness.UniformRectangle(5), Padding = Thickness.UniformRectangle(5), LocalMatrix = Matrix.Scaling(2, 2, 2) }; var textOnly = new TextBlock { Text = "Text only button", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15"), TextColor = new Color(1f, 0, 0, 0.5f) }; button1.Content = textOnly; var button2 = new Button { Name = "Button2", Margin = Thickness.UniformRectangle(5), Padding = Thickness.UniformRectangle(5) }; var imageContent = new ImageElement { Name = "Image Button2", Source = new Sprite(Asset.Load<Texture>("uv")), StretchType = StretchType.FillOnStretch, MaximumHeight = 50 }; button2.Content = imageContent; var button3 = new Button { Margin = Thickness.UniformRectangle(5), Padding = Thickness.UniformRectangle(5) }; var stackContent = new StackPanel { Orientation = Orientation.Horizontal }; var stackImage = new ImageElement { Name = "Image stack panel", Source = new Sprite(Asset.Load<Texture>("uv")), MaximumHeight = 50 }; var stackText = new TextBlock { Text = "button text", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15"), Margin = Thickness.UniformRectangle(5) }; stackContent.Children.Add(stackImage); stackContent.Children.Add(stackText); button3.Content = stackContent; var button4 = new Button { Margin = Thickness.UniformRectangle(5), HorizontalAlignment = HorizontalAlignment.Right, Padding = Thickness.UniformRectangle(5) }; var imageContent2 = new ImageElement { Name = "button 4 uv image", Source = new Sprite(Asset.Load<Texture>("uv")), StretchType = StretchType.FillOnStretch, MaximumHeight = 40, Opacity = 0.5f }; button4.Content = imageContent2; var button5 = new Button { Margin = Thickness.UniformRectangle(5), HorizontalAlignment = HorizontalAlignment.Left, Padding = Thickness.UniformRectangle(5) }; var textOnly2 = new TextBlock { Text = "Left aligned", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15") }; button5.Content = textOnly2; var button6 = new ImageButton { Height = 50, Margin = Thickness.UniformRectangle(5), HorizontalAlignment = HorizontalAlignment.Center, PressedImage = new Sprite(Asset.Load<Texture>("ImageButtonPressed")), NotPressedImage = new Sprite(Asset.Load<Texture>("ImageButtonNotPressed")), }; toggle = new ToggleButton { Content = new TextBlock { Text = "Toggle button test", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15") }, IsThreeState = true }; scrollingText = new ScrollingText { Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15"), Text = "<<<--- Scrolling text in a button ", IsEnabled = IsUpdateAutomatic }; var button7 = new Button { Margin = Thickness.UniformRectangle(5), Content = scrollingText }; var uniformGrid = new UniformGrid { Rows = 2, Columns = 2 }; var gridText = new TextBlock { Text = "Uniform grid", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15"), TextAlignment = TextAlignment.Center}; gridText.DependencyProperties.Set(GridBase.ColumnSpanPropertyKey, 2); var buttonLeft = new Button { Content = new TextBlock { Text = "unif-grid left", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15"), TextAlignment = TextAlignment.Center } }; buttonLeft.DependencyProperties.Set(GridBase.RowPropertyKey, 1); var buttonRight = new Button { Content = new TextBlock { Text = "unif-grid right", Font = Asset.Load<SpriteFont>("MicrosoftSansSerif15"), TextAlignment = TextAlignment.Center } }; buttonRight.DependencyProperties.Set(GridBase.RowPropertyKey, 1); buttonRight.DependencyProperties.Set(GridBase.ColumnPropertyKey, 1); uniformGrid.Children.Add(gridText); uniformGrid.Children.Add(buttonLeft); uniformGrid.Children.Add(buttonRight); stackPanel.Children.Add(button1); stackPanel.Children.Add(button2); stackPanel.Children.Add(button3); stackPanel.Children.Add(button4); stackPanel.Children.Add(button5); stackPanel.Children.Add(button6); stackPanel.Children.Add(toggle); stackPanel.Children.Add(button7); stackPanel.Children.Add(uniformGrid); canvas.Children.Add(imgElt); canvas.Children.Add(scrollViewer); UIComponent.RootElement = canvas; }
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 scrollViewerBackgroundImage = mainScreneImages["scroll_background"]; var scrollViewerDecorator = new ContentDecorator { BackgroundImage = scrollViewerBackgroundImage, 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); }
private UIElement CreateMainScene() { // the top life bar var topBar = CreateMainScreneTopBar(); // Create Name label nameTextBlock = new TextBlock { Font = westernFont, TextSize = 52, TextColor = Color.LightGreen, HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(50, 0, 50, 0) }; var nameLabel = new ContentDecorator { BackgroundImage = mainScreneImages["tex_edit_inactivated_background"], Content = nameTextBlock, Padding = new Thickness(20, 15, 20, 20), HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center }; nameLabel.SetGridRow(1); // Create Character image var characterImage = new ImageElement { Name = "HeroImage", Source = mainScreneImages["character"], HorizontalAlignment = HorizontalAlignment.Center, }; characterImage.SetGridRow(2); // Create Explanation TextBlock var explanationLabel = new ContentDecorator { BackgroundImage = mainScreneImages["description_frame"], HorizontalAlignment = HorizontalAlignment.Center, Content = new TextBlock { Font = LoadAsset<SpriteFont>("JapaneseFont"), TextSize = 34, TextColor = Color.White, Text = "Pictogram-based alphabets are easily supported.\n日本語も簡単に入れることが出来ます。", HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, WrapText = true }, Padding = new Thickness(50, 30, 50, 40), }; explanationLabel.SetGridRow(3); // The ship status panel var shipStatusPanel = CreateMainSceneShipStatusPanel(); shipStatusPanel.SetGridRow(4); // Create quit button (Last element) var quitButton = CreateTextButton("Quit Sample"); quitButton.HorizontalAlignment = HorizontalAlignment.Center; quitButton.VerticalAlignment = VerticalAlignment.Center; quitButton.Click += delegate { UIGame.Exit(); }; quitButton.SetGridRow(5); // Put region together in the main grid var mainLayout = new Grid(); mainLayout.ColumnDefinitions.Add(new StripDefinition()); mainLayout.RowDefinitions.Add(new StripDefinition(StripType.Star, 15)); mainLayout.RowDefinitions.Add(new StripDefinition(StripType.Star, 10)); mainLayout.RowDefinitions.Add(new StripDefinition(StripType.Star, 20)); mainLayout.RowDefinitions.Add(new StripDefinition(StripType.Star, 20)); mainLayout.RowDefinitions.Add(new StripDefinition(StripType.Star, 25)); mainLayout.RowDefinitions.Add(new StripDefinition(StripType.Star, 10)); mainLayout.LayerDefinitions.Add(new StripDefinition()); // set minimal and maximal size of rows mainLayout.RowDefinitions[0].MaximumSize = topBar.MaximumHeight; mainLayout.RowDefinitions[1].MinimumSize = 100; mainLayout.RowDefinitions[3].MinimumSize = 120; mainLayout.RowDefinitions[5].MinimumSize = 90; mainLayout.Children.Add(topBar); mainLayout.Children.Add(nameLabel); mainLayout.Children.Add(characterImage); mainLayout.Children.Add(explanationLabel); mainLayout.Children.Add(shipStatusPanel); mainLayout.Children.Add(quitButton); return mainLayout; }
private UIElement CreateShipStatusTextBlock(string statusName, int elementIndex) { var textBlock = new TextBlock { TextSize = 19, Font = westernFont, Text = statusName, TextColor = Color.Black, HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Center, }; textBlock.SetGridRow(elementIndex); return textBlock; }
private UIElement CreateMainScreneTopBar() { // Create Life bar lifeBarGaugeImage = mainScreneImages["life_bar"]; var lifeBarCoverImage = mainScreneImages["character_frame"]; gaugeBarRegion = lifeBarGaugeImage.Region; var lifebarGauge = new ImageElement { Name = "LifeBarBackground", Source = lifeBarGaugeImage, StretchType = StretchType.Fill, }; lifebarGauge.SetGridColumn(1); lifeBarGrid = new Grid(); lifeBarGrid.Children.Add(lifebarGauge); lifeBarGrid.ColumnDefinitions.Add(new StripDefinition(StripType.Fixed, lifeBarCoverImage.Borders.X)); lifeBarGrid.ColumnDefinitions.Add(new StripDefinition(StripType.Star, 0)); lifeBarGrid.ColumnDefinitions.Add(new StripDefinition(StripType.Star, 100)); lifeBarGrid.ColumnDefinitions.Add(new StripDefinition(StripType.Fixed, lifeBarCoverImage.Borders.Y)); lifeBarGrid.RowDefinitions.Add(new StripDefinition()); lifeBarGrid.LayerDefinitions.Add(new StripDefinition()); lifeBarGrid.SetCanvasRelativePosition(new Vector3(0f, 0.185f, 0f)); lifeBarGrid.SetCanvasRelativeSize(new Vector3(1f, 0.25f, 1f)); lifeBarGrid.SetPanelZIndex(-1); var lifebarForeground = new ImageElement { Name = "LifeBarForeGround", Source = lifeBarCoverImage, StretchType = StretchType.Fill, }; lifebarForeground.SetGridColumnSpan(3); lifebarForeground.SetGridRowSpan(3); lifebarForeground.SetCanvasRelativeSize(new Vector3(1f, 1f, 1f)); // Life count lifeCounter = new TextBlock { Text = CreateLifeCountText(), TextColor = Color.Gold, Font = westernFont, TextSize = 32, HorizontalAlignment = HorizontalAlignment.Left }; lifeCounter.SetCanvasAbsolutePosition(new Vector3(lifeBarCoverImage.Borders.X, float.NaN, float.NaN)); lifeCounter.SetCanvasRelativePosition(new Vector3(float.NaN, 0.44f, 0f)); lifeCounter.SetPanelZIndex(1); LifeStatus = 3; // Bonus items var bonusIcon = new ImageElement { Source = mainScreneImages["gold_icon"], Name = "bonus Icon", VerticalAlignment = VerticalAlignment.Center }; bonusCounter = new TextBlock { Text = CreateBonusCountText(), TextColor = Color.White, TextSize = 27, Font = westernFont, VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(10, 0, 0, 0) }; // Money var moneyIcon = new ImageElement { Source = mainScreneImages["money_icon"], Name = "money Icon", Margin = new Thickness(20, 0, 0, 0), VerticalAlignment = VerticalAlignment.Center }; moneyCounter = new TextBlock { Text = CreateMoneyCountText(), TextColor = Color.White, TextSize = 27, Font = westernFont, VerticalAlignment = VerticalAlignment.Center, Margin = new Thickness(10, 0, 0, 0) }; // Stack panel containing the bonus and money counters var moneyBonusStackPanel = new StackPanel { Name = "MoneyBonusStackPanel", Orientation = Orientation.Horizontal, }; moneyBonusStackPanel.Children.Add(bonusIcon); moneyBonusStackPanel.Children.Add(bonusCounter); moneyBonusStackPanel.Children.Add(moneyIcon); moneyBonusStackPanel.Children.Add(moneyCounter); moneyBonusStackPanel.SetCanvasRelativePosition(new Vector3(0.93f, 0.44f, 0f)); moneyBonusStackPanel.SetCanvasRelativeSize(new Vector3(float.NaN, 0.4f, 1f)); moneyBonusStackPanel.SetCanvasPinOrigin(new Vector3(1f, 0f, 0f)); moneyBonusStackPanel.SetPanelZIndex(1); // the main grid of the top bar var mainLayer = new Canvas { VerticalAlignment = VerticalAlignment.Top, MaximumHeight = 150 }; mainLayer.Children.Add(lifeBarGrid); mainLayer.Children.Add(lifebarForeground); mainLayer.Children.Add(lifeCounter); mainLayer.Children.Add(moneyBonusStackPanel); return mainLayer; }
private void BuildUI() { var width = 400; var bufferRatio = GraphicsDevice.Presenter.BackBuffer.Width / (float)GraphicsDevice.Presenter.BackBuffer.Height; var ui = new UIComponent { VirtualResolution = new Vector3(width, width / bufferRatio, 500) }; SceneSystem.SceneInstance.Scene.Entities.Add(new Entity { ui }); currentText = new TextBlock { Font = font, TextColor = Color.White, VerticalAlignment = VerticalAlignment.Bottom, HorizontalAlignment = HorizontalAlignment.Center }; var buttonBack = new Button { Content = new TextBlock { Font = font, Text = "Previous" }, VerticalAlignment = VerticalAlignment.Bottom, HorizontalAlignment = HorizontalAlignment.Left }; var buttonNext = new Button { Content = new TextBlock { Font = font, Text = "Next" }, VerticalAlignment = VerticalAlignment.Bottom, HorizontalAlignment = HorizontalAlignment.Right }; currentText.SetGridColumn(1); buttonNext.SetGridColumn(2); buttonBack.Click += (o, _) => ChangeScene(-1); buttonNext.Click += (o, _) => ChangeScene(+1); ui.RootElement = new UniformGrid { Columns = 3, Children = { buttonBack, currentText, buttonNext } }; }