Exemple #1
0
        private void InitializeMainPage()
        {
            var rootElement = page.RootElement;

            // counters
            bonusCounter = rootElement.FindVisualChildOfType <TextBlock>("bonusCounter");
            lifeCounter  = rootElement.FindVisualChildOfType <TextBlock>("lifeCounter");
            moneyCounter = rootElement.FindVisualChildOfType <TextBlock>("moneyCounter");
            Bonus        = 30;
            LifeStatus   = 3;
            Money        = 30;

            // lifebar
            lifebarGaugeImage = MainSceneImages["life_bar"];
            lifebarGrid       = rootElement.FindVisualChildOfType <Grid>("lifebarGrid");
            gaugeBarRegion    = lifebarGaugeImage.Region;

            // character name
            nameTextBlock = rootElement.FindVisualChildOfType <TextBlock>("nameTextBlock");

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

            explanationText.Text = "Pictogram-based alphabets are easily supported.\n日本語も簡単に入れることが出来ます。";

            // status stars
            var statusPanel = rootElement.FindVisualChildOfType <UniformGrid>("statusPanel");

            powerStatusStar   = statusPanel.FindVisualChildOfType <ImageElement>("powerStatusStar");
            controlStatusStar = statusPanel.FindVisualChildOfType <ImageElement>("controlStatusStar");
            speedStatusStar   = statusPanel.FindVisualChildOfType <ImageElement>("speedStatusStar");
            PowerStatus       = shipList[activeShipIndex].Power;
            ControlStatus     = shipList[activeShipIndex].Control;
            SpeedStatus       = shipList[activeShipIndex].Speed;

            // ship selection
            var currentShipButton = rootElement.FindVisualChildOfType <Button>("currentShipButton");

            currentShipButton.Click += delegate
            {
                // Once click, update the SpaceShip status pop-up and show it.
                UpdateShipStatus();
                ShowShipSelectionPopup();
            };
            currentShipImage = currentShipButton.FindVisualChildOfType <ImageElement>("currentShipImage");

            // upgrade buttons
            var statusUpgradePanel = rootElement.FindVisualChildOfType <UniformGrid>("statusUpgradePanel");

            SetupStatusButton(statusUpgradePanel.FindVisualChildOfType <ButtonBase>("powerStatusButton"), 2, 0, () => PowerStatus, () => PowerStatus++);
            SetupStatusButton(statusUpgradePanel.FindVisualChildOfType <ButtonBase>("controlStatusButton"), 2, 0, () => ControlStatus, () => ControlStatus++);
            SetupStatusButton(statusUpgradePanel.FindVisualChildOfType <ButtonBase>("speedStatusButton"), 2, 0, () => SpeedStatus, () => SpeedStatus++);
            SetupStatusButton(statusUpgradePanel.FindVisualChildOfType <ButtonBase>("lifeStatusButton"), 1, 1, () => 0, () => LifeStatus++);

            // quit button
            var quitButton = rootElement.FindVisualChildOfType <Button>("quitButton");

            quitButton.Click += delegate { UIGame.Exit(); };
        }
Exemple #2
0
        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     = SpriteFromSheet.Create(MainSceneImages, "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 = SpriteFromSheet.Create(MainSceneImages, "character"),
                HorizontalAlignment = HorizontalAlignment.Center,
            };

            characterImage.SetGridRow(2);

            // Create Explanation TextBlock
            var explanationLabel = new ContentDecorator
            {
                BackgroundImage     = SpriteFromSheet.Create(MainSceneImages, "description_frame"),
                HorizontalAlignment = HorizontalAlignment.Center,
                Content             = new TextBlock
                {
                    Font                = JapaneseFont,
                    TextSize            = 28,
                    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);
        }