From 2c8f2ce495136f0afbcf9d253fa6d9083b206ae8 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Sun, 10 Mar 2024 17:38:44 -0400 Subject: [PATCH] Add fields and constructors for typed DatItem --- SabreTools.DatItems/DatItem.cs | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs index eb9d1d88..9e2017bf 100644 --- a/SabreTools.DatItems/DatItem.cs +++ b/SabreTools.DatItems/DatItem.cs @@ -703,6 +703,43 @@ namespace SabreTools.DatItems /// public abstract class DatItem : DatItem, IEquatable>, IComparable>, ICloneable where T : Models.Metadata.DatItem { + #region Fields + + /// + /// Item type for the object + /// + protected abstract ItemType ItemType { get; } + + #endregion + + #region Constructors + + /// + /// Create a default, empty object + /// + public DatItem() + { + _internal = Activator.CreateInstance(); + + SetName(string.Empty); + SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType); + SetFieldValue(DatItem.MachineKey, new Machine()); + } + + /// + /// Create an object from the internal model + /// + public DatItem(T item) + { + _internal = item; + + SetFieldValue(Models.Metadata.DatItem.TypeKey, ItemType); + SetFieldValue(DatItem.MachineKey, new Machine()); + } + + #endregion + + // TODO: Figure out how to replace individual versions with this #region Cloning Methods ///