public static MenuInputWidget Create( Game game, int x, int y, int width, int height, string text, Anchor horizontal,
            Anchor vertical, Font font, Font tildeFont, MenuInputValidator validator)
        {
            MenuInputWidget widget = new MenuInputWidget( game, font, tildeFont );

            widget.HorizontalAnchor = horizontal;
            widget.VerticalAnchor = vertical;
            widget.XOffset = x;
            widget.YOffset = y;
            widget.DesiredMaxWidth = width;
            widget.DesiredMaxHeight = height;
            widget.chatInputText.Append( 0, text );
            widget.Validator = validator;
            widget.Init();
            return widget;
        }
        public override void Init()
        {
            game.Keyboard.KeyRepeat = true;
            base.Init();
            regularFont = new Font( game.FontName, 16, FontStyle.Regular );

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

            widgets = 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 ) ) ),
            };
        }
        void SaveChangesClick(Game game, Widget widget)
        {
            if (origHotkey.BaseKey != Key.Unknown)
            {
                hotkeys.RemoveHotkey(origHotkey.BaseKey, origHotkey.Flags);
                hotkeys.UserRemovedHotkey(origHotkey.BaseKey, origHotkey.Flags);
            }
            MenuInputWidget input = (MenuInputWidget)widgets[actionI];

            if (curHotkey.BaseKey != Key.Unknown)
            {
                hotkeys.AddHotkey(curHotkey.BaseKey, curHotkey.Flags,
                                  input.GetText(), curHotkey.StaysOpen);
                hotkeys.UserAddedHotkey(curHotkey.BaseKey, curHotkey.Flags,
                                        curHotkey.StaysOpen, input.GetText());
            }
            game.SetNewScreen(new HotkeyListScreen(game));
        }
예제 #4
0
        public override void Init()
        {
            game.Keyboard.KeyRepeat = true;
            base.Init();
            regularFont = new Font(game.FontName, 16, FontStyle.Regular);

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

            widgets = new Widget[] {
                ButtonWidget.Create(game, 0, 20, 301, 40, "Save", Anchor.Centre,
                                    Anchor.Centre, titleFont, SaveClassic),
                ButtonWidget.Create(game, -150, 120, 201, 40, "Save schematic", Anchor.Centre,
                                    Anchor.Centre, titleFont, SaveSchematic),
                ChatTextWidget.Create(game, 110, 120, "&eCan be imported into MCEdit", Anchor.Centre,
                                      Anchor.Centre, regularFont),
                null,
                MakeBack(false, titleFont,
                         (g, w) => g.SetNewScreen(new PauseScreen(g))),
            };
        }
예제 #5
0
        public override void Init()
        {
            game.Keyboard.KeyRepeat = true;
            base.Init();
            regularFont = new Font( game.FontName, 16, FontStyle.Regular );

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

            widgets = new Widget[] {
                ButtonWidget.Create( game, 0, 20, 301, 40, "Save", Anchor.Centre,
                                    Anchor.Centre, titleFont, SaveClassic ),
                ButtonWidget.Create( game, -150, 120, 201, 40, "Save schematic", Anchor.Centre,
                                    Anchor.Centre, titleFont, SaveSchematic ),
                ChatTextWidget.Create( game, 110, 120, "&eCan be imported into MCEdit", Anchor.Centre,
                                    Anchor.Centre, regularFont ),
                null,
                MakeBack( false, titleFont,
                         (g, w) => g.SetNewScreen( new PauseScreen( g ) ) ),
            };
        }
        public override void Init()
        {
            game.Keyboard.KeyRepeat = true;
            base.Init();
            regularFont = new Font(game.FontName, 16, FontStyle.Regular);
            string flags = HotkeyListScreen.MakeFlagsString(curHotkey.Flags);

            if (curHotkey.Text == null)
            {
                curHotkey.Text = "";
            }
            string staysOpen = curHotkey.StaysOpen ? "yes" : "no";
            bool   existed   = origHotkey.BaseKey != Key.Unknown;

            widgets = new Widget[] {
                Make(0, -150, "Key: " + curHotkey.BaseKey,
                     301, 40, titleFont, BaseKeyClick),
                Make(0, -100, "Modifiers:" + flags,
                     301, 40, titleFont, ModifiersClick),

                MenuInputWidget.Create(
                    game, 0, -35, 500, 30, curHotkey.Text,
                    Anchor.Centre, Anchor.Centre,
                    regularFont, titleFont, new StringValidator(64)),
                Make(-100, 10, "Input stays open: " + staysOpen,
                     301, 40, titleFont, LeaveOpenClick),

                Make(0, 80, existed ? "Save changes" : "Add hotkey",
                     301, 40, titleFont, SaveChangesClick),
                Make(0, 130, existed ? "Remove hotkey" : "Cancel",
                     301, 40, titleFont, RemoveHotkeyClick),

                MakeBack(false, titleFont,
                         (g, w) => g.SetNewScreen(new PauseScreen(g))),
            };
        }
        void DisposeEditingWidgets()
        {
            if( currentAction != null ) {
                currentAction.Dispose();
                currentAction = null;
            }

            for( int i = 8; i < widgets.Length - 1; i++ ) {
                if( widgets[i] != null ) {
                    widgets[i].Dispose();
                    widgets[i] = null;
                }
            }
            focusWidget = null;
        }
        void CreateEditingWidgets()
        {
            DisposeEditingWidgets();

            widgets[8] = Make( -140, 45, "Key: " + curHotkey.BaseKey,
                              250, 35, textFont, BaseKeyClick );
            widgets[9] = Make( 140, 45, "Modifiers: " + MakeFlagsString( curHotkey.Flags ),
                              250, 35, textFont, ModifiersClick );
            widgets[10] = Make( -10, 110, curHotkey.MoreInput ? "yes" : "no",
                               50, 25, textFont, LeaveOpenClick );
            widgets[11] = Make( -120, 150, "Save changes",
                               180, 35, textFont, SaveChangesClick );
            widgets[12] = Make( 120, 150, "Remove hotkey",
                               180, 35, textFont, RemoveHotkeyClick );

            currentAction = MenuInputWidget.Create(
                game, 0, 80, 600, 30, "", Anchor.Centre, Anchor.Centre,
                regularFont, titleFont, new StringValidator( 64 ) );
            currentMoreInputLabel = ChatTextWidget.Create(
                game, -150, 110, "Keep input bar open:",
                Anchor.Centre, Anchor.Centre, titleFont );

            if( curHotkey.Text == null ) curHotkey.Text = "";
            currentAction.SetText( curHotkey.Text );
        }
        void InputClick( Game game, Widget widget, MouseButton mouseBtn )
        {
            if( mouseBtn != MouseButton.Left ) return;
            if( selectedWidget != null )
                selectedWidget.Active = false;

            selectedWidget = (MenuInputWidget)widget;
            selectedWidget.Active = true;
        }
        void DisposeWidgets()
        {
            if( inputWidget != null )
                inputWidget.Dispose();
            widgets[widgets.Length - 2] = null;
            inputWidget = null;

            int okayIndex = widgets.Length - 1;
            if( widgets[okayIndex] != null )
                widgets[okayIndex].Dispose();
            widgets[okayIndex] = null;
        }
        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 ) {
                Type type = ((EnumValidator)validator).EnumType;
                HandleEnumOption( button, type );
                return;
            }

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

            targetWidget = selectedWidget;
            inputWidget = MenuInputWidget.Create( game, 0, 110, 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, 110, 40, 30, "OK",
                                                              Anchor.Centre, Anchor.Centre, titleFont, OnWidgetClick );
            InputOpened();
            UpdateDescription( targetWidget );
        }