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);
        }
        void HandleEnumOption(ButtonWidget button)
        {
            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);
        }
        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);
        }
示例#4
0
        protected void OnWidgetClick( Game game, ButtonWidget widget )
        {
            if( widget == buttons[okayIndex] ) {
                ChangeSetting();
                return;
            }

            int index = Array.IndexOf<ButtonWidget>( buttons, widget );
            MenuInputValidator validator = validators[index];
            if( validator is BooleanValidator ) {
                string value = widget.GetValue( game );
                widget.SetValue( game, value == "yes" ? "no" : "yes" );
                UpdateDescription( widget );
                return;
            }

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

            targetWidget = selectedWidget;
            inputWidget = MenuInputWidget.Create( game, 0, 150, 400, 25, widget.GetValue( game ),
                                                 Anchor.Centre, Anchor.Centre, regularFont, titleFont,
                                                 hintFont, validator );
            buttons[okayIndex] = ButtonWidget.Create( game, 240, 150, 30, 30, "OK",
                                                     Anchor.Centre, Anchor.Centre, titleFont, OnWidgetClick );
            UpdateDescription( targetWidget );
        }