public void Options_GearUpKeybindValueChanged(object sender, KeybindChangedEventArgs e)
 {
     if (e.Id != "gearUpKeybindPress")
     {
         return;
     }
     Config.GearUpKeybindValue = e.Key;
     PlayerPrefsExtra.SetKeyCode("GearUpKeybindPress", e.Key);
 }
示例#2
0
        private void Options_KeybindChanged(object sender, KeybindChangedEventArgs e)
        {
            if (e.Id == "boostKey")
            {
                Config.GetConfig().SpeedBoostToggle = e.Key;
            }

            Config.SaveConfig();
        }
示例#3
0
 public void Options_ToggleAirVentsKeybindValueChanged(object sender, KeybindChangedEventArgs e)
 {
     if (e.Id != "toggleAirVentsKeybindPress")
     {
         return;
     }
     Config.ToggleAirVentsKeybindValue = e.Key;
     PlayerPrefsExtra.SetKeyCode("ToggleAirVentsKeybindPress", e.Key);
 }
示例#4
0
        public void Options_KeybindChanged(object sender, KeybindChangedEventArgs e)
        {
            if (e.Id == "ExosuitToggleLightKey")
            {
                Config <LightsConfig> .Get().ExosuitToggleLightKey = e.Key;

                Changed();
            }
        }
示例#5
0
 private void KeyBindChangeEvent(KeybindChangedEventArgs e)
 {
     switch (e.Id)
     {
     case "BoostKey":
         MainPatch.BoostKey = e.Key;
         break;
     }
 }
 public void Options_LightsLoHiKeybindValueChanged(object sender, KeybindChangedEventArgs e)
 {
     if (e.Id != "lightsLoHiKeybindPress")
     {
         return;
     }
     Config.LightsLoHiKeybindValue = e.Key;
     PlayerPrefsExtra.SetKeyCode("LightsLoHiKeybindPress", e.Key);
 }
示例#7
0
 public void Options_KeybindChanged(object sender, KeybindChangedEventArgs e)
 {
     if (e.Id != "exampleKeybind")
     {
         return;
     }
     Config.KeybindKey = e.Key;
     PlayerPrefsExtra.SetKeyCode("SMLHelperExampleModKeybind", e.Key);
 }
示例#8
0
        //============ EVENTS ============
        #region Events

        private void OnKeybindChanged(object sender, KeybindChangedEventArgs e)
        {
            // Stop cannot be unbound for safety reasons
            if (sender == keybindReaderStop)
            {
                if (keybindReaderStop.Keybind == Keybind.None)
                {
                    TriggerMessageBox.Show(this, MessageIcon.Warning, "Cannot unassign the stop keybind!", "Can't Unbind");
                    keybindReaderStop.Keybind = e.Previous;
                    return;
                }
            }

            // Make sure the keybind isn't already in use
            if (e.New != Keybind.None)
            {
                string name = "";
                if (e.New == keybindReaderPlay.Keybind && sender != keybindReaderPlay)
                {
                    name = "Play Midi";
                }
                else if (e.New == keybindReaderPause.Keybind && sender != keybindReaderPause)
                {
                    name = "Pause Midi";
                }
                else if (e.New == keybindReaderStop.Keybind && sender != keybindReaderStop)
                {
                    name = "Stop Midi";
                }
                else if (e.New == keybindReaderClose.Keybind && sender != keybindReaderClose)
                {
                    name = "Close Window";
                }
                else if (e.New == keybindReaderMount.Keybind && sender != keybindReaderMount)
                {
                    name = "Toggle Mount";
                }
                else
                {
                    for (int i = 0; i < Config.Midis.Count; i++)
                    {
                        if (e.New == Config.Midis[i].Keybind)
                        {
                            name = Config.Midis[i].ProperName;
                            break;
                        }
                    }
                }
                if (name != "")
                {
                    // Nag the user about making poor life choices
                    TriggerMessageBox.Show(this, MessageIcon.Warning, "Keybind is already in use by the '" + name + "' keybind!", "Keybind in Use");
                    ((KeybindReader)sender).Keybind = e.Previous;
                }
            }
        }
示例#9
0
 private void Options_KeybindChanged(object sender, KeybindChangedEventArgs e)
 {
     switch (e.Id)
     {
     case "free_look":
         freeLookKey = e.Key;
         break;
     }
     UpdateJSON();
 }
        public void OnMidiKeybindChanged(object sender, KeybindChangedEventArgs e)
        {
            if (!loaded)
            {
                return;
            }

            string name = "";

            if (e.New != Keybind.None)
            {
                if (e.New == Config.Keybinds.Play)
                {
                    name = "Play Midi";
                }
                else if (e.New == Config.Keybinds.Pause)
                {
                    name = "Pause Midi";
                }
                else if (e.New == Config.Keybinds.Stop)
                {
                    name = "Stop Midi";
                }
                else if (e.New == Config.Keybinds.Close)
                {
                    name = "Close Window";
                }
                else if (e.New == Config.Keybinds.Mount)
                {
                    name = "Toggle Mount";
                }
                else
                {
                    for (int i = 0; i < Config.MidiCount; i++)
                    {
                        if (i != Config.MidiIndex && e.New == Config.Midis[i].Keybind)
                        {
                            name = Config.Midis[i].ProperName;
                            break;
                        }
                    }
                }
            }
            if (name == "")
            {
                // The name can safely be changed
                Config.Midi.Keybind = e.New;
            }
            else
            {
                // Nag the user about poor life choices
                TriggerMessageBox.Show(this, MessageIcon.Error, "Keybind is already in use by the '" + name + "' keybind!", "Keybind in Use");
                keybindReaderMidi.Keybind = e.Previous;
            }
        }
示例#11
0
 public void Options_KeybindChanged(object sender, KeybindChangedEventArgs e)
 {
     if (e.Id == "waterhotkey")
     {
         Config.WaterHotKey = e.Key;
         PlayerPrefsExtra.SetKeyCode("WaterHotKey", e.Key);
     }
     else if (e.Id == "foodhotkey")
     {
         Config.FoodHotKey = e.Key;
         PlayerPrefsExtra.SetKeyCode("FoodHotKey", e.Key);
     }
 }
 public void Options_KeybindChanged(object sender, KeybindChangedEventArgs e)
 {
     if (e.Id == "exampleKeybindLeft")
     {
         Config.KeybindKeyLeft = e.Key;
         PlayerPrefsExtra.SetKeyCode("SMLHelperExampleModKeybindLeft", e.Key);
     }
     if (e.Id == "exampleKeybindRight")
     {
         Config.KeybindKeyRight = e.Key;
         PlayerPrefsExtra.SetKeyCode("SMLHelperExampleModKeybindRight", e.Key);
     }
 }
示例#13
0
 private void OnKeybindChanged(object sender, KeybindChangedEventArgs e)
 {
     if (e.Id == "sleepStart")
     {
         keySleepStart = e.Key;
         Save();
     }
     else if (e.Id == "sleepStop")
     {
         keySleepStop = e.Key;
         Save();
     }
 }
示例#14
0
        private void Options_KeybindChanged(object sender, KeybindChangedEventArgs e)
        {
            switch (e.Id)
            {
            case "debuggerKey":
                ToggleDebuggerVisibilityKey = e.Key;
                break;

            case "pauseKey":
                TogglePauseKey = e.Key;
                break;
            }
            UpdateJSON();
        }
        /// <summary>
        /// Sets the value in the <see cref="Config"/>, optionally saving the <see cref="Config"/> to disk if the
        /// <see cref="MenuAttribute.SaveEvents.ChangeValue"/> flag is set, before passing off to
        /// <see cref="InvokeOnChangeEvents{TSource}(ModOptionAttributeMetadata{T}, object, TSource)"/>
        /// to invoke any methods specified with an <see cref="OnChangeAttribute"/>.
        /// </summary>
        /// <param name="sender">The sender of the original keybind changed event.</param>
        /// <param name="e">The <see cref="KeybindChangedEventArgs"/> for the keybind changed event.</param>
        public void HandleKeybindChanged(object sender, KeybindChangedEventArgs e)
        {
            if (TryGetMetadata(e.Id, out ModOptionAttributeMetadata <T> modOptionMetadata))
            {
                // Set the value in the Config
                modOptionMetadata.MemberInfoMetadata.SetValue(Config, e.Key);

                // Optionally save the Config to disk
                if (MenuAttribute.SaveOn.HasFlag(MenuAttribute.SaveEvents.ChangeValue))
                {
                    Config.Save();
                }

                // Invoke any OnChange methods specified
                InvokeOnChangeEvents(modOptionMetadata, sender, e);
            }
        }
示例#16
0
        private void KeyBindChangeEvent(KeybindChangedEventArgs e)
        {
            switch (e.Id)
            {
            case "WaterHotKey":
                MainPatch.FoodDrinkHotKey = e.Key;
                break;

            case "MedHotKey":
                MainPatch.MedHotKey = e.Key;
                break;

            case "HeatHotKey":
                MainPatch.HeatHotkey = e.Key;
                break;
            }
        }
示例#17
0
        public void OnKeybindChanged(object sender, KeybindChangedEventArgs eventArgs)
        {
            switch (eventArgs.Id)
            {
            case "toggle":
                SnapBuilder.Config.Snapping.KeyCode = SnapBuilder.Config.ToggleSnappingKey = eventArgs.Key;
                break;

            case "fineSnap":
                SnapBuilder.Config.FineSnapping.KeyCode = SnapBuilder.Config.FineSnappingKey = eventArgs.Key;
                break;

            case "fineRotate":
                SnapBuilder.Config.FineRotation.KeyCode = SnapBuilder.Config.FineRotationKey = eventArgs.Key;
                break;
            }
            SnapBuilder.Config.Save();
        }
示例#18
0
        private void OnKeybindChanged(object _sender, KeybindChangedEventArgs _args)
        {
            switch (_args.Id)
            {
            case OPT_IDENT_KB_MODIF_KEY:
                CyclopsStrafeMod.ModConfig.StrafeModifierKey = _args.Key;
                break;

            case OPT_IDENT_KB_STRAFE_LEFT:
                CyclopsStrafeMod.ModConfig.StrafeLeftKey = _args.Key;
                break;

            case OPT_IDENT_KB_STRAFE_RIGHT:
                CyclopsStrafeMod.ModConfig.StrafeRightKey = _args.Key;
                break;

            default: throw new System.ArgumentException("Invalid id argument " + _args.Id + " for keybind supplied by smlhelper.");
            }
            CyclopsStrafeMod.ModConfig.Save();
        }
示例#19
0
        private void Options_KeybindChanged(object sender, KeybindChangedEventArgs e)
        {
            switch (e.Id)
            {
            case PLAY_PAUSE_ID:
                CustomTunes.Config.PlayPauseKey = e.Key;
                break;

            case NEXT_TRACK_ID:
                CustomTunes.Config.NextTrackKey = e.Key;
                break;

            case PREV_TRACK_ID:
                CustomTunes.Config.PreviousTrackKey = e.Key;
                break;

            case STOP_TRACK_ID:
                CustomTunes.Config.StopKey = e.Key;
                break;
            }
            CustomTunes.Config.Save();
        }
示例#20
0
        private void Options_KeybindChanged(object sender, KeybindChangedEventArgs e)
        {
            switch (e.Id)
            {
            case "roll_to_port":
                rollToPortKey = e.Key;
                break;

            case "roll_to_starboard":
                rollToStarboardKey = e.Key;
                break;

            case "seamoth_roll_toggle":
                seamothRollToggleKey = e.Key;
                break;

            case "scuba_roll_toggle":
                scubaRollToggleKey = e.Key;
                break;
            }
            UpdateJSON();
        }
 private void ToggleSnappingKeyChanged(KeybindChangedEventArgs e)
 => Snapping.KeyCode = e.Key;
        /// <summary>
        /// Invokes the relevant method(s) specified with the <see cref="OnChangeAttribute"/>(s)
        /// and passes parameters when a value is changed when loaded from disk.
        /// </summary>
        /// <param name="modOptionMetadata">The metadata for the mod option.</param>
        /// <param name="sender">The sender of the event.</param>
        private void InvokeOnChangeEvents(ModOptionAttributeMetadata <T> modOptionMetadata, object sender)
        {
            string id = modOptionMetadata.ModOptionAttribute.Id;
            MemberInfoMetadata <T> memberInfoMetadata = modOptionMetadata.MemberInfoMetadata;

            switch (modOptionMetadata.ModOptionAttribute)
            {
            case ChoiceAttribute choiceAttribute when memberInfoMetadata.ValueType.IsEnum &&
                (choiceAttribute.Options == null || !choiceAttribute.Options.Any()):
                // Enum-based choice where the values are parsed from the enum type
            {
                string[] options   = Enum.GetNames(memberInfoMetadata.ValueType);
                string   value     = memberInfoMetadata.GetValue(Config).ToString();
                var      eventArgs = new ChoiceChangedEventArgs(id, Array.IndexOf(options, value), value);
                InvokeOnChangeEvents(modOptionMetadata, sender, eventArgs);
            }
            break;

            case ChoiceAttribute _ when memberInfoMetadata.ValueType.IsEnum:
                // Enum-based choice where the values are defined as custom strings
            {
                string value     = memberInfoMetadata.GetValue(Config).ToString();
                int    index     = Math.Max(Array.IndexOf(Enum.GetValues(memberInfoMetadata.ValueType), value), 0);
                var    eventArgs = new ChoiceChangedEventArgs(id, index, value);
                InvokeOnChangeEvents(modOptionMetadata, sender, eventArgs);
            }
            break;

            case ChoiceAttribute choiceAttribute when memberInfoMetadata.ValueType == typeof(string):
                // string-based choice value
            {
                string[] options   = choiceAttribute.Options;
                string   value     = memberInfoMetadata.GetValue <string>(Config);
                var      eventArgs = new ChoiceChangedEventArgs(id, Array.IndexOf(options, value), value);
                InvokeOnChangeEvents(modOptionMetadata, sender, eventArgs);
            }
            break;

            case ChoiceAttribute choiceAttribute when memberInfoMetadata.ValueType == typeof(int):
                // index-based choice value
            {
                string[] options   = choiceAttribute.Options;
                int      index     = memberInfoMetadata.GetValue <int>(Config);
                var      eventArgs = new ChoiceChangedEventArgs(id, index, options[index]);
                InvokeOnChangeEvents(modOptionMetadata, sender, eventArgs);
            }
            break;

            case KeybindAttribute _:
            {
                var eventArgs = new KeybindChangedEventArgs(id, memberInfoMetadata.GetValue <KeyCode>(Config));
                InvokeOnChangeEvents(modOptionMetadata, sender, eventArgs);
            }
            break;

            case SliderAttribute _:
            {
                var eventArgs = new SliderChangedEventArgs(id, Convert.ToSingle(memberInfoMetadata.GetValue(Config)));
                InvokeOnChangeEvents(modOptionMetadata, sender, eventArgs);
            }
            break;

            case ToggleAttribute _:
            {
                var eventArgs = new ToggleChangedEventArgs(id, memberInfoMetadata.GetValue <bool>(Config));
                InvokeOnChangeEvents(modOptionMetadata, sender, eventArgs);
            }
            break;
            }
        }
 private void FineRotationKeyChanged(KeybindChangedEventArgs e)
 => FineRotation.KeyCode = e.Key;
 private void FineSnappingKeyChanged(KeybindChangedEventArgs e)
 => FineSnapping.KeyCode = e.Key;
 private void EnableRotationKeyChanged(KeybindChangedEventArgs e)
 => ToggleRotation.KeyCode = e.Key;