using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Xml.Serialization; using Configuration.Properties; namespace Configuration { [XmlRoot(ElementName = "Configuration")] public class Configuration : INotifyPropertyChanged { #region Public Events & Delegates public event PropertyChangedEventHandler PropertyChanged; #endregion #region Public Enums, Properties and Fields [XmlElement(ElementName = "BoundButton")] public List BoundButton { get => _boundButton; set { if (Equals(value, _boundButton)) { return; } _boundButton = value; OnPropertyChanged(); } } [XmlElement(ElementName = "BoundSpeedButton")] public List BoundSpeedButton { get => _boundSpeedButton; set { if (Equals(value, _boundSpeedButton)) { return; } _boundSpeedButton = value; OnPropertyChanged(); } } [XmlElement(ElementName = "BoundSlowButton")] public List BoundSlowButton { get => _boundSlowButton; set { if (Equals(value, _boundSlowButton)) { return; } _boundSlowButton = value; OnPropertyChanged(); } } [XmlElement(ElementName = "Spring")] public Spring Spring { get => _spring; set { if (Equals(value, _spring)) { return; } _spring = value; OnPropertyChanged(); } } [XmlElement(ElementName = "HUD")] public HUD HUD { get => _hud; set { if (Equals(value, _hud)) { return; } _hud = value; OnPropertyChanged(); } } #endregion #region Private Delegates, Events, Enums, Properties, Indexers and Fields private List _boundButton = new List(); private List _boundSlowButton = new List(); private List _boundSpeedButton = new List(); private HUD _hud = new HUD(); private Spring _spring = new Spring(); #endregion #region Constructors, Destructors and Finalizers [UsedImplicitly] public Configuration() { } #endregion #region Private Methods [NotifyPropertyChangedInvocator] protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion } }