diff --git a/MLEM.Ui/UiControls.cs b/MLEM.Ui/UiControls.cs index 9821353..f8f5ebb 100644 --- a/MLEM.Ui/UiControls.cs +++ b/MLEM.Ui/UiControls.cs @@ -57,11 +57,11 @@ namespace MLEM.Ui { /// /// AA that acts as the buttons on a gamepad that perform the action. /// - public readonly Keybind GamepadButtons = new Keybind().Add(Buttons.A); + public readonly Keybind GamepadButtons = new Keybind(Buttons.A); /// /// A that acts as the buttons on a gamepad that perform the action. /// - public readonly Keybind SecondaryGamepadButtons = new Keybind().Add(Buttons.X); + public readonly Keybind SecondaryGamepadButtons = new Keybind(Buttons.X); /// /// A that acts as the buttons that select a that is above the currently selected element. /// diff --git a/MLEM/Input/Keybind.cs b/MLEM/Input/Keybind.cs index 18756cc..8fdca99 100644 --- a/MLEM/Input/Keybind.cs +++ b/MLEM/Input/Keybind.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; @@ -12,7 +13,27 @@ namespace MLEM.Input { public class Keybind { [DataMember] - private readonly List combinations = new List(); + private Combination[] combinations = Array.Empty(); + + /// + /// Creates a new keybind and adds the given key and modifiers using + /// + /// The key to be pressed. + /// The modifier keys that have to be held down. + public Keybind(GenericInput key, params GenericInput[] modifiers) { + this.Add(key, modifiers); + } + + /// + public Keybind(GenericInput key, ModifierKey modifier) { + this.Add(key, modifier); + } + + /// + /// Creates a new keybind with no default combinations + /// + public Keybind() { + } /// /// Adds a new key combination to this keybind that can optionally be pressed for the keybind to trigger. @@ -21,7 +42,7 @@ namespace MLEM.Input { /// The modifier keys that have to be held down. /// This keybind, for chaining public Keybind Add(GenericInput key, params GenericInput[] modifiers) { - this.combinations.Add(new Combination(key, modifiers)); + this.combinations = this.combinations.Append(new Combination(key, modifiers)).ToArray(); return this; } @@ -35,7 +56,7 @@ namespace MLEM.Input { /// /// This keybind, for chaining public Keybind Clear() { - this.combinations.Clear(); + this.combinations = Array.Empty(); return this; } @@ -46,7 +67,7 @@ namespace MLEM.Input { /// The keybind to copy from /// This keybind, for chaining public Keybind CopyFrom(Keybind other) { - this.combinations.AddRange(other.combinations); + this.combinations = this.combinations.Concat(other.combinations).ToArray(); return this; }