using Microsoft.Xna.Framework.Input; using System; using System.Collections.Generic; namespace OpenVIII { [Serializable] public class InputButton { #region Fields public List Combo; public GamePadButtons GamePadButton; public double HoldMS; public Keys Key; public MouseButtons MouseButton; public ButtonTrigger Trigger = ButtonTrigger.OnPress; #endregion Fields #region Methods public InputButton Clone() { var i = (InputButton)MemberwiseClone(); i.Combo = new List(Combo.Count); foreach (var item in Combo) { i.Combo.Add(item.Clone()); } return i; } public override bool Equals(object obj) { var o = (InputButton)obj; if (o.Key == Key && o.MouseButton == MouseButton && o.GamePadButton == GamePadButton && //(o.Trigger & Trigger)!=0 && (o.Combo == null || o.Combo.Equals(Combo))) return true; return false; } public override int GetHashCode() { var hashCode = 37823841; hashCode = hashCode * -1521134295 + EqualityComparer>.Default.GetHashCode(Combo); hashCode = hashCode * -1521134295 + GamePadButton.GetHashCode(); hashCode = hashCode * -1521134295 + Key.GetHashCode(); hashCode = hashCode * -1521134295 + MouseButton.GetHashCode(); return hashCode; } public override string ToString() { var s = ""; if (Key != Keys.None) s = Key.ToString(); if (GamePadButton != GamePadButtons.None) s = GamePadButton.ToString(); if (MouseButton != MouseButtons.None) s = MouseButton.ToString(); if (Combo != null) { foreach (var item in Combo) { s = $"{s}+{item}"; } } return s.Replace('_',' ').Trim(); } #endregion Methods } }