using System; using System.Collections.Generic; using SabreTools.Library.Data; namespace SabreTools.Library.Items { public class Machine : ICloneable { #region Protected instance variables private Guid _guid; #endregion #region Publicly facing variables // Machine information public string Name; public string Comment; public string Description; public string Year; public string Manufacturer; public string RomOf; public string CloneOf; public string SampleOf; public string SourceFile; public bool? Runnable; public string Board; public string RebuildTo; public List Devices; public MachineType MachineType; #endregion #region Constructors /// /// Create a new Machine object /// public Machine() { Name = null; Comment = null; Description = null; Year = null; Manufacturer = null; RomOf = null; CloneOf = null; SampleOf = null; SourceFile = null; Runnable = null; Board = null; RebuildTo = null; Devices = null; MachineType = MachineType.NULL; _guid = new Guid(); } /// /// Create a new Machine object with the included information /// /// Name of the machine /// Description of the machine public Machine(string name, string description) { Name = name; Comment = null; Description = description; Year = null; Manufacturer = null; RomOf = null; CloneOf = null; SampleOf = null; SourceFile = null; Runnable = null; Board = null; RebuildTo = null; Devices = null; MachineType = MachineType.NULL; _guid = new Guid(); } #endregion #region Cloning methods /// /// Create a clone of the current machine /// /// New machine with the same values as the current one public object Clone() { return new Machine() { Name = this.Name, Comment = this.Comment, Description = this.Description, Year = this.Year, Manufacturer = this.Manufacturer, RomOf = this.RomOf, CloneOf = this.CloneOf, SampleOf = this.SampleOf, SourceFile = this.SourceFile, Runnable = this.Runnable, Board = this.Board, RebuildTo = this.RebuildTo, Devices = this.Devices, MachineType = this.MachineType, }; } #endregion #region Equality comparerers /// /// Override the Equals method /// public override bool Equals(object o) { if (this == null && o == null) { return true; } else if (this == null || o == null) { return false; } else if (o.GetType() != typeof(Machine)) { return false; } Machine b = (Machine)o; return (this.Name == b.Name && this.Comment == b.Comment && this.Description == b.Description && this.Year == b.Year && this.Manufacturer == b.Manufacturer && this.RomOf == b.RomOf && this.CloneOf == b.CloneOf && this.SampleOf == b.SampleOf && this.SourceFile == b.SourceFile && this.Runnable == b.Runnable && this.Board == b.Board && this.RebuildTo == b.RebuildTo && this.Devices == b.Devices && this.MachineType == b.MachineType); } #endregion } }