/* * Copyright 2022 Peter Han * Permission is hereby granted, free of charge, to any person obtaining a copy of this software * and associated documentation files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or * substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ namespace PeterHan.PLib.Actions { /// /// Represents a single key binding to an action. /// public sealed class PKeyBinding { /// /// The gamepad button to bind. /// public GamepadButton GamePadButton { get; set; } /// /// The key code. /// public KKeyCode Key { get; set; } /// /// The modifier code. /// public Modifier Modifiers { get; set; } public PKeyBinding(KKeyCode keyCode = KKeyCode.None, Modifier modifiers = Modifier. None, GamepadButton gamePadButton = GamepadButton.NumButtons) { GamePadButton = gamePadButton; Key = keyCode; Modifiers = modifiers; } public PKeyBinding(PKeyBinding other) : this() { if (other != null) { GamePadButton = other.GamePadButton; Key = other.Key; Modifiers = other.Modifiers; } } public override bool Equals(object obj) { return obj is PKeyBinding other && other.Key == Key && other.Modifiers == Modifiers && other.GamePadButton == GamePadButton; } public override int GetHashCode() { // Was auto generated by VS, please do not kill me int hashCode = 1488379021 + GamePadButton.GetHashCode(); hashCode = hashCode * -1521134295 + Key.GetHashCode(); hashCode = hashCode * -1521134295 + Modifiers.GetHashCode(); return hashCode; } public override string ToString() { return Modifiers + " " + Key; } } }