void OkButtonClick(Game game, Widget widget)
        {
            string text = inputWidget.GetText();

            if (text.Length == 0)
            {
                MakeDescWidget("Please enter a filename");
                return;
            }
            string file = Path.ChangeExtension(text, ".cw");

            text = Path.Combine(Program.AppDirectory, "maps");
            text = Path.Combine(text, file);

            if (File.Exists(text))
            {
                buttons[1] = ButtonWidget.Create(game, 0, 90, 260, 30, "Overwrite existing?",
                                                 Anchor.Centre, Anchor.Centre, titleFont, OverwriteButtonClick);
            }
            else
            {
                // NOTE: We don't immediately save here, because otherwise the 'saving...'
                // will not be rendered in time because saving is done on the main thread.
                MakeDescWidget("Saving..");
                textPath = text;
                RemoveOverwriteButton();
            }
        }
        public override void Init()
        {
            game.Keyboard.KeyRepeat = true;
            base.Init();
            int size = game.Drawer2D.UseBitmappedChat ? 14 : 18;

            labelFont   = new Font(game.FontName, size, FontStyle.Regular);
            titleFont   = new Font(game.FontName, size, FontStyle.Bold);
            regularFont = new Font(game.FontName, 16, FontStyle.Regular);

            inputs = new [] {
                MakeInput(-100, false, game.Map.Width.ToString()),
                MakeInput(-60, false, game.Map.Height.ToString()),
                MakeInput(-20, false, game.Map.Length.ToString()),
                MakeInput(20, true, "")
            };
            labels = new [] {
                MakeLabel(-150, -100, "Width:"), MakeLabel(-150, -60, "Height:"),
                MakeLabel(-150, -20, "Length:"), MakeLabel(-140, 20, "Seed:"),
            };
            widgets = new [] {
                ButtonWidget.Create(game, 0, 80, 250, 35, "Generate flatgrass", Anchor.Centre,
                                    Anchor.Centre, titleFont, GenFlatgrassClick),
                ButtonWidget.Create(game, 0, 130, 250, 35, "Generate notchy", Anchor.Centre,
                                    Anchor.Centre, titleFont, GenNotchyClick),
                MakeBack(false, titleFont,
                         (g, w) => g.SetNewScreen(new PauseScreen(g))),
            };
        }
Beispiel #3
0
        protected ButtonWidget MakeBack(bool toGame, Font font, Action <Game, Widget> onClick)
        {
            string text = toGame ? "Back to game" : "Back to menu";

            return(ButtonWidget.Create(
                       game, 0, 5, 180, 35, text,
                       Anchor.Centre, Anchor.BottomOrRight, font, LeftOnly(onClick)));
        }
        protected ButtonWidget MakeClassic(int x, int y, string text, ClickHandler onClick,
                                           Func <Game, string> getter, Action <Game, string> setter)
        {
            ButtonWidget widget = ButtonWidget.Create(game, x, y, 301, 41, text, Anchor.Centre,
                                                      Anchor.Centre, titleFont, onClick);

            widget.GetValue = getter; widget.SetValue = setter;
            return(widget);
        }
Beispiel #5
0
        ButtonWidget Make(int x, int y, string text, Action <Game, Widget> onClick,
                          Func <Game, string> getter, Action <Game, string> setter)
        {
            ButtonWidget widget = ButtonWidget.Create(game, x, y, 240, 35, text, Anchor.Centre,
                                                      Anchor.Centre, titleFont, onClick);

            widget.GetValue = getter;
            widget.SetValue = setter;
            return(widget);
        }
 public override void Init()
 {
     graphicsApi.ClearColour(new FastColour(65, 31, 31));
     widgets = new Widget[] {
         ChatTextWidget.Create(game, 0, -30, title, Anchor.Centre, Anchor.Centre, titleFont),
         ChatTextWidget.Create(game, 0, 10, message, Anchor.Centre, Anchor.Centre, messageFont),
         ButtonWidget.Create(game, 0, 80, 280, 35, "Try to reconnect.. " + delay,
                             Anchor.Centre, Anchor.Centre, titleFont, ReconnectClick),
     };
     initTime     = DateTime.UtcNow;
     lastSecsLeft = delay;
 }
 void InitStandardButtons()
 {
     widgets = new ButtonWidget[] {
         ButtonWidget.Create(game, -110, 30, 160, 35, "Yes", Anchor.Centre,
                             Anchor.Centre, titleFont, OnYesClick),
         ButtonWidget.Create(game, 110, 30, 160, 35, "No", Anchor.Centre,
                             Anchor.Centre, titleFont, OnNoClick),
         ButtonWidget.Create(game, -110, 80, 160, 35, "Always yes", Anchor.Centre,
                             Anchor.Centre, titleFont, OnYesAlwaysClick),
         ButtonWidget.Create(game, 110, 80, 160, 35, "Always no", Anchor.Centre,
                             Anchor.Centre, titleFont, OnNoAlwaysClick),
     };
 }
        void InitConfirmButtons(bool always)
        {
            ClickHandler noHandler = always ? (ClickHandler)OnNoAlwaysClick: (ClickHandler)OnNoClick;

            widgets = new ButtonWidget[] {
                ButtonWidget.Create(game, -110, 30, 160, 35, "I'm sure", Anchor.Centre,
                                    Anchor.Centre, titleFont, noHandler),
                ButtonWidget.Create(game, 110, 30, 160, 35, "Go back", Anchor.Centre,
                                    Anchor.Centre, titleFont, GoBackClick),
            };
            confirmMode = true;
            SetText(lastTitle, lastBody);
        }
Beispiel #9
0
        ButtonWidget MakeHotkey(int x, int y, int index)
        {
            string       text   = Get(index + currentIndex);
            ButtonWidget button = ButtonWidget.Create(
                game, x, y, 240, 30, text, Anchor.Centre, Anchor.Centre,
                textFont, TextButtonClick);

            button.Metadata = default(Hotkey);
            if (text != "-----")
            {
                button.Metadata = hotkeys.Hotkeys[index + currentIndex];
            }
            return(button);
        }
Beispiel #10
0
 public override void Init()
 {
     base.Init();
     descriptions = normDescriptions;
     originKey    = KeyBinding.Speed;
     widgets      = new Widget[descriptions.Length + 2];
     MakeKeys(KeyBinding.Speed, 0, 7, -150);
     MakeKeys(KeyBinding.Screenshot, 7, 7, 150);
     widgets[index++] = MakeBack(false, titleFont,
                                 (g, w) => g.SetNewScreen(new OptionsGroupScreen(g)));
     widgets[index++] = ButtonWidget.Create(
         game, 0, 170, 300, 35, "Mouse key bindings",
         Anchor.Centre, Anchor.Centre, titleFont, NextClick);
 }
Beispiel #11
0
 public override void Init()
 {
     base.Init();
     descriptions = normDescriptions;
     originKey    = KeyBinding.Speed;
     buttons      = new ButtonWidget[descriptions.Length + 2];
     MakeKeys(KeyBinding.Speed, 0, 6, -150);
     MakeKeys(KeyBinding.HideFps, 6, 7, 150);
     buttons[index++] = MakeBack(false, titleFont,
                                 (g, w) => g.SetNewScreen(new PauseScreen(g)));
     buttons[index++] = ButtonWidget.Create(
         game, 0, 170, 300, 35, "Normal key bindings",
         Anchor.Centre, Anchor.Centre, titleFont, NextClick);
 }
        protected void OnWidgetClick(Game game, Widget widget)
        {
            if (widget == buttons[okayIndex])
            {
                ChangeSetting();
                return;
            }
            ButtonWidget button = (ButtonWidget)widget;

            int index = Array.IndexOf <ButtonWidget>(buttons, button);
            MenuInputValidator validator = validators[index];

            if (validator is BooleanValidator)
            {
                string value = button.GetValue(game);
                button.SetValue(game, value == "yes" ? "no" : "yes");
                UpdateDescription(button);
                return;
            }
            else if (validator is EnumValidator)
            {
                string value     = button.GetValue(game);
                Type   type      = (Type)button.Metadata;
                int    enumValue = (int)Enum.Parse(type, value, true);
                enumValue++;
                // go back to first value
                if (!Enum.IsDefined(type, enumValue))
                {
                    enumValue = 0;
                }
                button.SetValue(game, Enum.GetName(type, enumValue));

                UpdateDescription(button);
                return;
            }

            if (inputWidget != null)
            {
                inputWidget.Dispose();
            }

            targetWidget = selectedWidget;
            inputWidget  = MenuInputWidget.Create(game, 0, 150, 400, 25, button.GetValue(game), Anchor.Centre,
                                                  Anchor.Centre, regularFont, titleFont, validator);
            buttons[okayIndex] = ButtonWidget.Create(game, 240, 150, 40, 30, "OK",
                                                     Anchor.Centre, Anchor.Centre, titleFont, OnWidgetClick);
            InputOpened();
            UpdateDescription(targetWidget);
        }
        protected void MakeKeys(KeyBinding start, int descStart, int len, int x)
        {
            int y = -180;

            for (int i = 0; i < len; i++)
            {
                KeyBinding binding = (KeyBinding)((int)start + i);
                string     text    = descriptions[descStart + i] + ": "
                                     + keyNames[(int)game.Mapping(binding)];

                buttons[index++] = ButtonWidget.Create(game, x, y, 260, 35, text,
                                                       Anchor.Centre, Anchor.Centre, keyFont, OnBindingClick);
                y += 45;
            }
        }
        protected void OnWidgetClick(Game game, Widget widget, MouseButton mouseBtn)
        {
            ButtonWidget button = widget as ButtonWidget;

            if (mouseBtn != MouseButton.Left)
            {
                return;
            }
            if (widget == widgets[widgets.Length - 1])
            {
                ChangeSetting(); return;
            }
            if (button == null)
            {
                return;
            }
            DisposeExtendedHelp();

            int index = Array.IndexOf <Widget>(widgets, button);
            MenuInputValidator validator = validators[index];

            if (validator is BooleanValidator)
            {
                string value = button.GetValue(game);
                button.SetValue(game, value == "yes" ? "no" : "yes");
                UpdateDescription(button);
                return;
            }
            else if (validator is EnumValidator)
            {
                HandleEnumOption(button);
                return;
            }

            if (inputWidget != null)
            {
                inputWidget.Dispose();
            }

            targetWidget = selectedWidget;
            inputWidget  = MenuInputWidget.Create(game, 0, 150, 400, 30, button.GetValue(game), Anchor.Centre,
                                                  Anchor.Centre, regularFont, titleFont, validator);
            widgets[widgets.Length - 2] = inputWidget;
            widgets[widgets.Length - 1] = ButtonWidget.Create(game, 240, 150, 40, 30, "OK",
                                                              Anchor.Centre, Anchor.Centre, titleFont, OnWidgetClick);
            InputOpened();
            UpdateDescription(targetWidget);
        }
Beispiel #15
0
 public override void Init()
 {
     base.Init();
     descriptions = normDescriptions;
     originKey    = KeyBinding.MouseLeft;
     widgets      = new Widget[descriptions.Length + 3];
     MakeKeys(KeyBinding.MouseLeft, 0, 3, 0);
     widgets[index++] = MakeBack(false, titleFont,
                                 (g, w) => g.SetNewScreen(new PauseScreen(g)));
     widgets[index++] = ButtonWidget.Create(
         game, 0, 170, 300, 35, "Normal key bindings",
         Anchor.Centre, Anchor.Centre, titleFont, NextClick);
     widgets[index++] = ChatTextWidget.Create(
         game, 0, -40, "&eRight click to remove the key binding",
         Anchor.Centre, Anchor.Centre, regularFont);
 }
        public override void Init()
        {
            titleFont   = new Font("Arial", 16, FontStyle.Bold);
            regularFont = new Font("Arial", 14, FontStyle.Regular);

            buttons = new ButtonWidget[] {
                ButtonWidget.Create(game, -110, 30, 160, 35, "Yes", Anchor.Centre,
                                    Anchor.Centre, titleFont, OnYesClick),
                ButtonWidget.Create(game, 110, 30, 160, 35, "No", Anchor.Centre,
                                    Anchor.Centre, titleFont, OnNoClick),
                ButtonWidget.Create(game, -110, 80, 160, 35, "Always yes", Anchor.Centre,
                                    Anchor.Centre, titleFont, OnYesAlwaysClick),
                ButtonWidget.Create(game, 110, 80, 160, 35, "Always no", Anchor.Centre,
                                    Anchor.Centre, titleFont, OnNoAlwaysClick),
            };
            SetText(title, body);
        }
        public override void Init()
        {
            game.Keyboard.KeyRepeat = true;
            base.Init();
            regularFont = new Font("Arial", 16, FontStyle.Regular);

            inputWidget = MenuInputWidget.Create(
                game, -30, 50, 500, 25, "", Anchor.Centre, Anchor.Centre,
                regularFont, titleFont, new PathValidator());

            buttons = new [] {
                ButtonWidget.Create(game, 260, 50, 60, 30, "Save", Anchor.Centre,
                                    Anchor.Centre, titleFont, OkButtonClick),
                null,
                MakeBack(false, titleFont,
                         (g, w) => g.SetNewScreen(new PauseScreen(g))),
            };
        }
        public override void Init()
        {
            game.Keyboard.KeyRepeat = true;
            base.Init();
            int size = game.Drawer2D.UseBitmappedChat ? 14 : 18;

            titleFont   = new Font("Arial", size, FontStyle.Bold);
            regularFont = new Font("Arial", 16, FontStyle.Regular);

            inputs = new [] { MakeInput(-80), MakeInput(-40),
                              MakeInput(0), MakeInput(40) };
            labels = new [] { MakeLabel(-80, "Width:"), MakeLabel(-40, "Height:"),
                              MakeLabel(0, "Length:"), MakeLabel(40, "Seed:"), };
            buttons = new [] {
                ButtonWidget.Create(game, 0, 90, 250, 30, "Generate flatgrass", Anchor.Centre,
                                    Anchor.Centre, titleFont, GenFlatgrassClick),
                ButtonWidget.Create(game, 0, 140, 250, 30, "Generate notchy", Anchor.Centre,
                                    Anchor.Centre, titleFont, GenNotchyClick),
                MakeBack(false, titleFont,
                         (g, w) => g.SetNewScreen(new PauseScreen(g))),
            };
        }
 ButtonWidget MakeOther(int x, int y, int width, string text, Anchor hAnchor, Action <Game, Widget> onClick)
 {
     return(ButtonWidget.Create(game, x, y, width, 35, text,
                                hAnchor, Anchor.BottomOrRight, titleFont, LeftOnly(onClick)));
 }
 ButtonWidget Make(int x, int y, string text, Action <Game, Widget> onClick)
 {
     return(ButtonWidget.Create(game, x, y, 240, 35, text,
                                Anchor.Centre, Anchor.Centre, titleFont, LeftOnly(onClick)));
 }
 ButtonWidget Make(int x, int y, string text, Action <Game, Widget> onClick)
 {
     return(ButtonWidget.Create(game, x, y, 40, 40, text,
                                Anchor.Centre, Anchor.Centre, arrowFont, onClick));
 }
Beispiel #22
0
 ButtonWidget Make(int x, int y, string text, int width, int height,
                   Font font, Action <Game, Widget> onClick)
 {
     return(ButtonWidget.Create(game, x, y, width, height, text,
                                Anchor.Centre, Anchor.Centre, font, LeftOnly(onClick)));
 }
Beispiel #23
0
 protected override void InputOpened()
 {
     buttons[defaultIndex] = ButtonWidget.Create(
         game, 0, 200, 180, 35, "Default value", Anchor.Centre,
         Anchor.Centre, titleFont, DefaultButtonClick);
 }
 ButtonWidget MakeText(int x, int y, string text)
 {
     return(ButtonWidget.Create(game, x, y, 240, 30, text,
                                Anchor.Centre, Anchor.Centre, textFont, TextButtonClick));
 }