private static void InitBinding(ButtonBinding binding, params Keys[] defaultKeys) { if (binding.Keys.Count == 0) { binding.Keys = defaultKeys.ToList(); } }
public IBuildable ExecuteOnPerformed(Action action) { var b = new ButtonBinding(currAction, action); bindings.Add(b); return(this); }
// // Update bindings and comboboxes // private void UpdateBindings() { // Mouse comboBoxMouse.Items.Clear(); foreach (DictionaryEntry entry in mouseBindings) { ButtonBinding binding = (ButtonBinding)entry.Value; binding.Key = (string)entry.Key; if (binding.Visible) { comboBoxMouse.Items.Add(binding); } } // Multimedia comboBoxMultimedia.Items.Clear(); foreach (DictionaryEntry entry in multimediaBindings) { ButtonBinding binding = (ButtonBinding)entry.Value; binding.Key = (string)entry.Key; if (binding.Visible) { comboBoxMultimedia.Items.Add(binding); } } }
// // Check key value // public void CheckKeyValue() { string keys = button.Content.ToString().ToUpper().Trim(); comboBoxMouse.SelectedIndex = 0; comboBoxMultimedia.SelectedIndex = 0; // Mouse if (mouseBindings.Contains(keys)) { foreach (var item in comboBoxMouse.Items) { ButtonBinding binding = (ButtonBinding)item; if (binding.Key == keys) { comboBoxMouse.SelectedItem = item; comboBoxMouse.Focus(); } } } // Multimedia else if (multimediaBindings.Contains(keys)) { comboBoxMultimedia.SelectedIndex = 0; foreach (ButtonBinding item in comboBoxMultimedia.Items) { //ButtonBinding binding = (ButtonBinding)item; if (item.Key == keys) { comboBoxMultimedia.SelectedItem = item; comboBoxMultimedia.Focus(); } } } // Launch application else if (keys.StartsWith(applicationCommand)) { textApplication.Text = keys.Remove(0, applicationCommand.Length); } // Keyboard else { textKeyboard.Focus(); textKeyboard.Text = keys; } textCustom.Text = keys; }
// // Multimedia key changed // private void ComboBoxMultimedia_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!IsLoaded) { return; } if (comboBoxMultimedia.SelectedIndex >= 0 && comboBoxMultimedia.SelectedItem is ButtonBinding) { ButtonBinding binding = (ButtonBinding)comboBoxMultimedia.SelectedItem; if (comboBoxMultimedia.SelectedIndex > 0) { comboBoxMouse.SelectedIndex = 0; } textKeyboard.Text = binding.Key; textCustom.Text = binding.Key; } }
// // Check key value // public void CheckKeyValue() { string keys = button.Content.ToString().ToUpper().Trim(); comboBoxMouse.SelectedIndex = 0; comboBoxMultimedia.SelectedIndex = 0; // Mouse if (mouseBindings.Contains(keys)) { foreach (var item in comboBoxMouse.Items) { ButtonBinding binding = (ButtonBinding)item; if (binding.Key == keys) { comboBoxMouse.SelectedItem = item; comboBoxMouse.Focus(); } } } // Multimedia else if (multimediaBindings.Contains(keys)) { comboBoxMultimedia.SelectedIndex = 0; foreach (ButtonBinding item in comboBoxMultimedia.Items) { //ButtonBinding binding = (ButtonBinding)item; if (item.Key == keys) { comboBoxMultimedia.SelectedItem = item; comboBoxMultimedia.Focus(); } } } // Keyboard else { textKeyboard.Focus(); } textKeyboard.Text = keys; textCustom.Text = keys; }
/// <summary> /// Add a Button binding that can be checked for state (Pressed, Released, Active) /// </summary> public static bool AddBinding(this InputManager inputManager, string bindingName, Buttons button, params InputBinding[] modifiers) { DefaultBinding inputBinding = new ButtonBinding(button, modifiers); return inputManager.AddBinding(bindingName, inputBinding); }
public static Hotkey BindingToHotkey(ButtonBinding binding) { return(new Hotkey(binding.Keys, null, true, ReferenceEquals(binding, Settings.KeyFastForward))); }
/// <summary> /// Links a real button to the virtual button /// </summary> /// <param name="btn">Button instance</param> /// <param name="priority">Priority of the button</param> public void AddButton(AbstractButton btn, short priority) { ButtonBinding binding = new ButtonBinding(btn, priority); _hardwareButtons.Add(binding); _hardwareButtons.Sort(ButtonBinding.Comparison); }
/// <summary> /// Compare two instance of ButtonBinding /// </summary> /// <param name="first">First instance</param> /// <param name="second">Second instance</param> /// <returns>Return a value indicating the position of the first instance</returns> internal static int Comparison(ButtonBinding first, ButtonBinding second) { if (first._priority < second._priority) return -1; return (first._priority > second._priority) ? 1 : 0; }
public CustomBirdTutorial(EntityData data, Vector2 offset) : base(data, offset) { BirdId = data.Attr("birdId"); onlyOnce = data.Bool("onlyOnce"); caw = data.Bool("caw"); Facing = data.Bool("faceLeft") ? Facings.Left : Facings.Right; // apply the facing immediately Sprite.Scale.X = (float)Facing; object info; object[] controls; // parse the info ("title") string infoString = data.Attr("info"); if (GFX.Gui.Has(infoString)) { info = GFX.Gui[infoString]; } else { info = Dialog.Clean(infoString); } int extraAdvance = 0; // go ahead and parse the controls. Controls can be textures, VirtualButtons, directions or strings. string[] controlsStrings = data.Attr("controls").Split(','); controls = new object[controlsStrings.Length]; for (int i = 0; i < controls.Length; i++) { string controlString = controlsStrings[i]; object modCommand = Everest.Events.CustomBirdTutorial.ParseCommand(controlString); if (modCommand is ButtonBinding binding) { // convert ButtonBinding to VirtualButton for convenience. modCommand = binding.Button; } if (modCommand != null) { // this is a command a mod registered. controls[i] = modCommand; } else if (controlString.StartsWith("mod:")) { // formatted like `mod:MaxHelpingHand/ShowHints` string[] autoBinding = controlString.Substring(4).Split('/'); EverestModule module = Everest.Modules.FirstOrDefault(m => m.Metadata.Name == autoBinding[0]); if (module?.SettingsType != null) { PropertyInfo matchingInput = module.SettingsType.GetProperty(autoBinding[1]); ButtonBinding val = matchingInput?.GetGetMethod()?.Invoke(module._Settings, null) as ButtonBinding; if (val?.Button != null) { controls[i] = val.Button; } else { Logger.Log(LogLevel.Warn, "CustomBird", $"Public ButtonBinding property not found in {module.SettingsType}. ControlString: {controlString}"); } } else { Logger.Log(LogLevel.Warn, "CustomBird", "EverestModule or EverestModule.SettingsType not found. ControlString: " + controlString); } } else if (GFX.Gui.Has(controlString)) { // this is a texture. controls[i] = GFX.Gui[controlString]; } else if (directions.ContainsKey(controlString)) { // this is a direction. controls[i] = directions[controlString]; } else { FieldInfo matchingInput = typeof(Input).GetField(controlString, BindingFlags.Static | BindingFlags.Public); if (matchingInput?.GetValue(null)?.GetType() == typeof(VirtualButton)) { // this is a button. controls[i] = matchingInput.GetValue(null); } else { if (controlString.StartsWith("dialog:")) { // treat that as a dialog key. controls[i] = Dialog.Clean(controlString.Substring("dialog:".Length)); } else { // treat that as a plain string. controls[i] = controlString; } } } if (controls[i] is string) { // when BirdTutorialGui renders text, it is offset by 1px on the right. // width computation doesn't take this 1px into account, so we should add it back in. extraAdvance++; if (i == 0) { // as the text is rendered 1px to the right, if the first thing is a string, there will be 1px more padding on the left. // we should add that extra px on the right as well. extraAdvance++; } } } gui = new BirdTutorialGui(this, new Vector2(0f, -16f), info, controls); DynData <BirdTutorialGui> guiData = new DynData <BirdTutorialGui>(gui); // if there is no first line, resize the bubble accordingly. if (string.IsNullOrEmpty(infoString)) { guiData["infoHeight"] = 0f; } // apply the extra width. guiData["controlsWidth"] = guiData.Get <float>("controlsWidth") + extraAdvance; }