private UIElement CreateMainSceneShipStatusStars(string imageName, UIElement content, int rowIndex) { var item = new ContentDecorator { Content = content, BackgroundImage = mainScreneImages[imageName], HorizontalAlignment = HorizontalAlignment.Center }; item.SetGridRow(rowIndex); return item; }
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; }
protected override void LoadScene() { // Allow user to resize the window with the mouse. Game.Window.AllowUserResizing = true; var arial = LoadAsset<SpriteFont>("WesternFont"); var uiImages = LoadAsset<SpriteSheet>("SplashScreenImages"); // Create and initialize "Paradox Samples" Text var paradoxSampleTextBlock = new ContentDecorator { BackgroundImage = uiImages["paradox_sample_text_bg"], Content = new TextBlock { Font = arial, TextSize = 60, Text = "Paradox Samples", TextColor = Color.White, }, Padding = new Thickness(35, 15, 35, 25), HorizontalAlignment = HorizontalAlignment.Center }; paradoxSampleTextBlock.SetPanelZIndex(1); // Create and initialize "UI" Text var uiTextBlock = new ContentDecorator { BackgroundImage = uiImages["ui_text_bg"], Content = new TextBlock { Font = arial, TextSize = 60, Text = "UI", TextColor = Color.White, }, Padding = new Thickness(15, 4, 15, 7), HorizontalAlignment = HorizontalAlignment.Center }; uiTextBlock.SetPanelZIndex(1); uiTextBlock.SetGridRow(1); // Create and initialize Paradox Logo var paradoxLogoImageElement = new ImageElement { Source = uiImages["Logo"], HorizontalAlignment = HorizontalAlignment.Center }; paradoxLogoImageElement.SetPanelZIndex(1); paradoxLogoImageElement.SetGridRow(3); // Create and initialize "Touch Screen to Start" var touchStartLabel = new ContentDecorator { BackgroundImage = uiImages["touch_start_frame"], Content = new TextBlock { Font = arial, TextSize = 42, Text = "Touch Screen to Start", TextColor = Color.White }, Padding = new Thickness(30, 20, 30, 25), HorizontalAlignment = HorizontalAlignment.Center }; touchStartLabel.SetPanelZIndex(1); touchStartLabel.SetGridRow(5); var grid = new Grid { MaximumWidth = 600, MaximumHeight = 900, VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center, }; grid.RowDefinitions.Add(new StripDefinition(StripType.Auto)); grid.RowDefinitions.Add(new StripDefinition(StripType.Auto)); grid.RowDefinitions.Add(new StripDefinition(StripType.Star, 2)); grid.RowDefinitions.Add(new StripDefinition(StripType.Star, 5)); grid.RowDefinitions.Add(new StripDefinition(StripType.Star, 2)); grid.RowDefinitions.Add(new StripDefinition(StripType.Auto)); grid.ColumnDefinitions.Add(new StripDefinition()); grid.LayerDefinitions.Add(new StripDefinition()); grid.Children.Add(paradoxSampleTextBlock); grid.Children.Add(uiTextBlock); grid.Children.Add(paradoxLogoImageElement); grid.Children.Add(touchStartLabel); // Add the background var background = new ImageElement { Source = uiImages["background_uiimage"], StretchType = StretchType.Fill }; background.SetPanelZIndex(-1); Entity.Get<UIComponent>().RootElement = new UniformGrid { Children = { background, grid } }; }