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); }
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 ); }