예제 #1
0
파일: SettingsScreen.cs 프로젝트: gmich/Gem
        public SettingsScreen(GemGui gui, GuiExample game)
        {
            Color textColor   = new Color(137, 161, 161);
            Color colorMap    = new Color(200, 161, 161);
            int   entryOffset = 10;

            var backButton =
                gui.Button(0, 0, 100, 50,
                           Style.ColorMap(textColor, colorMap),
                           Pattern.SolidColor(colorMap))
                .Text(gui.Fonts["segoe-18"], "Back")
                .TextColor(new Color(200, 200, 200))
                .TextHorizontalAlignment(HorizontalAlignment.Center)
                .TextVerticalAlignment(VerticalAlignment.Center)
                .ScreenAlignment(HorizontalAlignment.Center,
                                 VerticalAlignment.Bottom)
                .OnClick((sender, args) =>
                         gui.Swap(GuiScreen.Settings, GuiScreen.MainMenu));

            var nameTextBox = gui.TextField(x: 300, y: 100,
                                            sizeX: 300, sizeY: 30,
                                            textColor: Color.Black,
                                            font: gui.Fonts["segoe-18"],
                                            style: Style.Transparent,
                                            pattern: Pattern.TextViewPattern(Color.Black, Color.White),
                                            hint: "Your name")
                              .OnTextEntry((sender, text) => game.PlayerName = text)
                              .ScreenAlignment(HorizontalAlignment.Center,
                                               VerticalAlignment.Center);

            var emailTextBox = gui.TextField(x: 300, y: 100,
                                             sizeX: 300, sizeY: 30,
                                             textColor: Color.Black,
                                             font: gui.Fonts["segoe-18"],
                                             style: Style.Transparent,
                                             pattern: Pattern.TextViewPattern(Color.Black, Color.White),
                                             hint: "Your email");

            var checkBox =
                gui.CheckBox(10, 10, 140, 30,
                             Pattern.SolidColor(textColor),
                             20, 20,
                             Pattern.Border(Color.DarkGreen, textColor),
                             Pattern.Border(Color.DarkGreen, Color.Transparent),
                             Style.CustomisedTransparent(0.6f, 0.3f, 0.0f),
                             "CheckBox",
                             gui.Fonts["segoe-18"])
                .OnCheckChanged((sender, value) => Console.WriteLine("Checkbox new value is {0}", value))
                .TextColor(Color.Black);

            var slider =
                gui.Slider(x: 50, y: 50,
                           sizeX: 200, sizeY: 20,
                           sliderSizeX: 15, sliderSizeY: 25,
                           sliderInfo: new Controls.SliderInfo(minValue: 10.0f, maxValue: 170.0f, step: 1.0f, initialPosition: 10.0f),
                           background: Pattern.SolidColor(Color.White),
                           slider: Pattern.SolidColor(Color.Black),
                           filling: Pattern.SolidColor(new Color(0, 0, 0, 100)),
                           border: Pattern.Border(Color.Black, Color.Transparent),
                           style: Style.CustomisedTransparent(0.6f, 0.3f, 0.0f));

            var sliderLabel =
                gui.Label(x: 10, y: 10,
                          sizeX: 30, sizeY: 30,
                          text: slider.SliderValue.ToString(),
                          font: gui.Fonts["segoe-18"],
                          textColor: Color.White,
                          horizontalAlignment: HorizontalAlignment.Center,
                          verticalAlignment: VerticalAlignment.Center,
                          pattern: Pattern.SolidColor(Color.Black))
                .StretchToText(true);

            var label =
                gui.Label(x: 300, y: 100,
                          sizeX: 300, sizeY: 30,
                          text: "Profile",
                          font: gui.Fonts["segoe-18"],
                          textColor: Color.White,
                          horizontalAlignment: HorizontalAlignment.Center,
                          verticalAlignment: VerticalAlignment.Center,
                          pattern: Pattern.SolidColor(Color.Transparent));

            slider.OnValueChanging += (sender, value) => sliderLabel.Text.Value = value.ToString();
            slider.ScreenAlignment(HorizontalAlignment.Center,
                                   slider.VerticalRelativeTo(checkBox, () => checkBox.Region.Position.Y
                                                             + checkBox.Region.Size.Y
                                                             + entryOffset * Configuration.Settings.Scale.Y));

            sliderLabel.ScreenAlignment(sliderLabel.HorizontalRelativeTo(slider, () => slider.Region.Frame.Right + 5 * Configuration.Settings.Scale.X),
                                        sliderLabel.VerticalRelativeTo(slider, () => slider.Region.Position.Y));

            emailTextBox.ScreenAlignment(HorizontalAlignment.Center,
                                         emailTextBox.VerticalRelativeTo(nameTextBox, () => nameTextBox.Region.Position.Y
                                                                         + nameTextBox.Region.Size.Y
                                                                         + entryOffset * Configuration.Settings.Scale.Y));

            checkBox.ScreenAlignment(checkBox.HorizontalRelativeTo(emailTextBox, () => emailTextBox.Region.Position.X),
                                     checkBox.VerticalRelativeTo(emailTextBox, () => emailTextBox.Region.Position.Y
                                                                 + emailTextBox.Region.Size.Y
                                                                 + entryOffset * Configuration.Settings.Scale.Y));



            label.ScreenAlignment(HorizontalAlignment.Center,
                                  label.VerticalRelativeTo(nameTextBox, () => nameTextBox.Region.Position.Y - label.Region.Size.Y));

            gui.AddGuiHost(GuiScreen.Settings, nameTextBox, emailTextBox, checkBox, slider, backButton, label, sliderLabel);

            gui[GuiScreen.Settings].Transition = new TimedTransition(
                TimeSpan.FromSeconds(0.5),
                (state, progress, target, batch) =>
                batch.Draw(target,
                           (float)Math.Pow(progress - 1.0f, 2) * new Vector2(0, 300),
                           Color.White * progress));
        }
예제 #2
0
파일: MainMenuScreen.cs 프로젝트: gmich/Gem
        public MainMenuScreen(GemGui gui, GuiExample game)
        {
            Color textColor = new Color(137, 161, 161);
            Color colorMap  = new Color(200, 161, 161);

            var newGameButton =
                gui.Button(0, 0, 180, 80,
                           Style.ColorMap(textColor, colorMap),
                           Pattern.SolidColor(colorMap))
                .Text(gui.Fonts["segoe-18"], "New Game")
                .TextColor(textColor)
                .TextHorizontalAlignment(HorizontalAlignment.Center)
                .TextVerticalAlignment(VerticalAlignment.Center)
                .Padding(top: 20, bottom: 10)
                .OnClick((sender, args) =>
                         gui.Swap(GuiScreen.MainMenu, GuiScreen.NewGame));

            var settingsButton =
                gui.Button(0, 0, 180, 80, Style.ColorMap(textColor, colorMap), pattern: Pattern.SolidColor(colorMap))
                .Text(gui.Fonts["segoe-18"], "Settings")
                .TextColor(textColor)
                .TextHorizontalAlignment(HorizontalAlignment.Center)
                .TextVerticalAlignment(VerticalAlignment.Center)
                .Padding(top: 10, bottom: 10)
                .OnClick((sender, args) =>
                         gui.Swap(GuiScreen.MainMenu, GuiScreen.Settings));

            var exitButton =
                gui.Button(0, 0, 180, 80, style: Style.ColorMap(textColor, colorMap), pattern: Pattern.SolidColor(colorMap))
                .Text(gui.Fonts["segoe-18"], "Quit")
                .TextColor(textColor)
                .TextHorizontalAlignment(HorizontalAlignment.Center)
                .TextVerticalAlignment(VerticalAlignment.Center)
                .Padding(top: 10, bottom: 10)
                .OnClick((sender, args) => game.Exit());

            var listView =
                gui.ListView(x: 0, y: 0,
                             sizeX: 200, sizeY: 300,
                             orientation: Layout.Orientation.Portrait,
                             horizontalAlignment: HorizontalAlignment.Center,
                             verticalAlignment: VerticalAlignment.Center,
                             alignmentTransition: AlignmentTransition.Instant,
                             controls: new[] { newGameButton, settingsButton, exitButton })
                .ScreenAlignment(HorizontalAlignment.Center,
                                 VerticalAlignment.Center)
                .Color(Color.Transparent);

            gui.AddGuiHost(GuiScreen.MainMenu, listView);

            gui[GuiScreen.MainMenu].OnEntering += (sender, args) =>
            {
                Input.InputManager.KeyboardInputKeys.Previous = Keys.Up;
                Input.InputManager.KeyboardInputKeys.Next     = Keys.Down;
            };

            gui[GuiScreen.MainMenu].Transition = new TimedTransition(
                TimeSpan.FromSeconds(0.5),
                (state, progress, target, batch) =>
                batch.Draw(target,
                           (float)Math.Pow(progress - 1.0f, 2) * new Vector2(300, 0) * Configuration.Settings.Scale,
                           Color.White * progress));
        }
예제 #3
0
 static void Main()
 {
     using (var game = new GuiExample())
         game.Run();
 }
예제 #4
0
        public NewGameScreen(GemGui gui, GuiExample game)
        {
            this.gui = gui;
            var playButton =
                gui.Button(0, 0, 100, 100, style: Style.Transparent, pattern: Pattern.SolidColor(Color.White))
                .Sprite("frame", gui.Textures["frame"])
                .Color(Color.White)
                .Text(gui.Fonts["segoe-18"], "Play")
                .TextColor(Color.Black)
                .TextHorizontalAlignment(HorizontalAlignment.Center)
                .TextVerticalAlignment(VerticalAlignment.Center)
                .ScreenAlignment(HorizontalAlignment.RelativeTo(() => 0.0f),
                                 VerticalAlignment.Center)
                .OnClick((sender, args) => gui.Hide(GuiScreen.NewGame));

            var backButton =
                gui.Button(0, 0, 100, 100, Style.Transparent, Pattern.SolidColor(Color.White))
                .Color(Color.White)
                .Text(gui.Fonts["segoe-18"], "Back")
                .TextColor(Color.Black)
                .TextHorizontalAlignment(HorizontalAlignment.Center)
                .TextVerticalAlignment(VerticalAlignment.Center)
                .ScreenAlignment(HorizontalAlignment.Right,
                                 VerticalAlignment.Center)
                .OnClick((sender, args) =>
                         gui.Swap(GuiScreen.NewGame, GuiScreen.MainMenu));

            var slider =
                gui.Slider(x: 50, y: 50,
                           sizeX: 200, sizeY: 20,
                           sliderSizeX: 15, sliderSizeY: 25,
                           sliderInfo: new Controls.SliderInfo(minValue: 10.0f, maxValue: 170.0f, step: 1.0f, initialPosition: 10.0f),
                           background: Pattern.SolidColor(Color.White),
                           slider: Pattern.SolidColor(Color.Black),
                           filling: Pattern.SolidColor(new Color(0, 0, 0, 100)),
                           border: Pattern.Border(Color.Black, Color.Transparent),
                           style: Style.CustomisedTransparent(0.6f, 0.3f, 0.0f))
                .ValueChanged((sender, value) => Console.WriteLine("slider: " + value));

            var largeStepSlider =
                gui.Slider(x: 50, y: 50,
                           sizeX: 300, sizeY: 20,
                           sliderSizeX: 15, sliderSizeY: 25,
                           sliderInfo: new Controls.SliderInfo(minValue: 1.0f, maxValue: 4.0f, step: 1.0f, initialPosition: 1.0f),
                           background: Pattern.SolidColor(Color.White),
                           slider: Pattern.SolidColor(Color.Black),
                           filling: Pattern.SolidColor(new Color(0, 0, 0, 100)),
                           border: Pattern.Border(Color.Black, Color.Transparent),
                           style: Style.CustomisedTransparent(0.6f, 0.3f, 0.0f))
                .ValueChanged((sender, value) => Console.WriteLine("LargeStepSlider: " + value))
                .ScreenAlignment(HorizontalAlignment.Center,
                                 VerticalAlignment.Bottom);
            var tinyStepSlider =
                gui.Slider(x: 50, y: 50,
                           sizeX: 200, sizeY: 20,
                           sliderSizeX: 15, sliderSizeY: 25,
                           sliderInfo: new Controls.SliderInfo(minValue: 10.0f, maxValue: 170.0f, step: 0.01f, initialPosition: 10.0f),
                           background: Pattern.SolidColor(Color.White),
                           slider: Pattern.SolidColor(Color.Black),
                           filling: Pattern.SolidColor(new Color(0, 0, 0, 100)),
                           border: Pattern.Border(Color.Black, Color.Transparent),
                           style: Style.CustomisedTransparent(0.6f, 0.3f, 0.0f))
                .ValueChanged((sender, value) => Console.WriteLine("tinyStepSlider: " + value))
                .ScreenAlignment(HorizontalAlignment.Center,
                                 VerticalAlignment.Top);

            var label = gui.Label(x: 10, y: 10,
                                  sizeX: 30, sizeY: 30,
                                  text: slider.SliderValue.ToString(),
                                  font: gui.Fonts["segoe-18"],
                                  textColor: Color.White,
                                  horizontalAlignment: HorizontalAlignment.Center,
                                  verticalAlignment: VerticalAlignment.Center,
                                  pattern: Pattern.SolidColor(Color.Black));

            label.StretchToText = true;

            slider.OnValueChanged += (sender, value) => label.Text.Value = value.ToString();
            slider.ScreenAlignment(HorizontalAlignment.Center,
                                   VerticalAlignment.Center);

            label.ScreenAlignment(label.HorizontalRelativeTo(slider, () => slider.Region.Frame.Right + 5 * Configuration.Settings.Scale.X),
                                  VerticalAlignment.Center);

            gui.AddGuiHost(GuiScreen.NewGame, playButton, largeStepSlider, slider, tinyStepSlider, backButton, label);

            gui[GuiScreen.NewGame].OnEntering += (sender, args) =>
            {
                // Input.InputManager.KeyboardInputKeys.Previous = Keys.Left;
                // Input.InputManager.KeyboardInputKeys.Next = Keys.Right;
            };

            gui[GuiScreen.NewGame].Transition = new TimedTransition(
                TimeSpan.FromSeconds(0.5),
                (state, progress, target, batch) =>
                batch.Draw(target,
                           Vector2.Zero,
                           Color.White * progress));
        }