Handle internal implementations better (nw)

This commit is contained in:
Matt Nadareski
2025-01-11 22:00:26 -05:00
parent 4f6354802f
commit 457ddf67d9
35 changed files with 1845 additions and 924 deletions

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +33,17 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Adjuster() : base() { }
public Adjuster(Models.Metadata.Adjuster item) : base(item) { }
public Adjuster(Models.Metadata.Adjuster item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Adjuster.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.Adjuster.DefaultKey, GetBoolFieldValue(Models.Metadata.Adjuster.DefaultKey).FromYesNo());
// Handle subitems
var condition = item.Read<Models.Metadata.Condition>(Models.Metadata.Adjuster.ConditionKey);
if (condition != null)
SetFieldValue(Models.Metadata.Adjuster.ConditionKey, new Condition(condition));
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public BiosSet() : base() { }
public BiosSet(Models.Metadata.BiosSet item) : base(item) { }
public BiosSet(Models.Metadata.BiosSet item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.BiosSet.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.BiosSet.DefaultKey, GetBoolFieldValue(Models.Metadata.BiosSet.DefaultKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,14 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Chip() : base() { }
public Chip(Models.Metadata.Chip item) : base(item) { }
public Chip(Models.Metadata.Chip item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Chip.SoundOnlyKey) != null)
SetFieldValue<string?>(Models.Metadata.Chip.SoundOnlyKey, GetBoolFieldValue(Models.Metadata.Chip.SoundOnlyKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Chip.ChipTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Chip.ChipTypeKey, GetStringFieldValue(Models.Metadata.Chip.ChipTypeKey).AsEnumValue<ChipType>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Condition() : base() { }
public Condition(Models.Metadata.Condition item) : base(item) { }
public Condition(Models.Metadata.Condition item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.Condition.RelationKey) != null)
SetFieldValue<string?>(Models.Metadata.Condition.RelationKey, GetStringFieldValue(Models.Metadata.Condition.RelationKey).AsEnumValue<Relation>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public ConfLocation() : base() { }
public ConfLocation(Models.Metadata.ConfLocation item) : base(item) { }
public ConfLocation(Models.Metadata.ConfLocation item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.ConfLocation.InvertedKey) != null)
SetFieldValue<string?>(Models.Metadata.ConfLocation.InvertedKey, GetBoolFieldValue(Models.Metadata.ConfLocation.InvertedKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +33,17 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public ConfSetting() : base() { }
public ConfSetting(Models.Metadata.ConfSetting item) : base(item) { }
public ConfSetting(Models.Metadata.ConfSetting item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.ConfSetting.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.ConfSetting.DefaultKey, GetBoolFieldValue(Models.Metadata.ConfSetting.DefaultKey).FromYesNo());
// Handle subitems
var condition = GetFieldValue<Models.Metadata.Condition>(Models.Metadata.ConfSetting.ConditionKey);
if (condition != null)
SetFieldValue<Condition?>(Models.Metadata.ConfSetting.ConditionKey, new Condition(condition));
}
#endregion
}

View File

@@ -1,5 +1,7 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
namespace SabreTools.DatItems.Formats
{
@@ -52,7 +54,27 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Configuration() : base() { }
public Configuration(Models.Metadata.Configuration item) : base(item) { }
public Configuration(Models.Metadata.Configuration item) : base(item)
{
// Handle subitems
var condition = item.Read<Models.Metadata.Condition>(Models.Metadata.Configuration.ConditionKey);
if (condition != null)
SetFieldValue<Condition?>(Models.Metadata.Configuration.ConditionKey, new Condition(condition));
var confLocations = item.ReadItemArray<Models.Metadata.ConfLocation>(Models.Metadata.Configuration.ConfLocationKey);
if (confLocations != null)
{
ConfLocation[] confLocationItems = Array.ConvertAll(confLocations, confLocation => new ConfLocation(confLocation));
SetFieldValue<ConfLocation[]?>(Models.Metadata.Configuration.ConfLocationKey, confLocationItems);
}
var confSettings = item.ReadItemArray<Models.Metadata.ConfSetting>(Models.Metadata.Configuration.ConfSettingKey);
if (confSettings != null)
{
ConfSetting[] confSettingItems = Array.ConvertAll(confSettings, confSetting => new ConfSetting(confSetting));
SetFieldValue<ConfSetting[]?>(Models.Metadata.Configuration.ConfSettingKey, confSettingItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,28 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Control() : base() { }
public Control(Models.Metadata.Control item) : base(item) { }
public Control(Models.Metadata.Control item) : base(item)
{
// Process flag values
if (GetInt64FieldValue(Models.Metadata.Control.ButtonsKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.ButtonsKey, GetInt64FieldValue(Models.Metadata.Control.ButtonsKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.KeyDeltaKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.KeyDeltaKey, GetInt64FieldValue(Models.Metadata.Control.KeyDeltaKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.MaximumKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.MaximumKey, GetInt64FieldValue(Models.Metadata.Control.MaximumKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.MinimumKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.MinimumKey, GetInt64FieldValue(Models.Metadata.Control.MinimumKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.PlayerKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.PlayerKey, GetInt64FieldValue(Models.Metadata.Control.PlayerKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Control.ReqButtonsKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.ReqButtonsKey, GetInt64FieldValue(Models.Metadata.Control.ReqButtonsKey).ToString());
if (GetBoolFieldValue(Models.Metadata.Control.ReverseKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.ReverseKey, GetBoolFieldValue(Models.Metadata.Control.ReverseKey).FromYesNo());
if (GetInt64FieldValue(Models.Metadata.Control.SensitivityKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.SensitivityKey, GetInt64FieldValue(Models.Metadata.Control.SensitivityKey).ToString());
if (GetStringFieldValue(Models.Metadata.Control.ControlTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Control.ControlTypeKey, GetStringFieldValue(Models.Metadata.Control.ControlTypeKey).AsEnumValue<ControlType>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -23,7 +24,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public DataArea() : base() { }
public DataArea(Models.Metadata.DataArea item) : base(item) { }
public DataArea(Models.Metadata.DataArea item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.DataArea.EndiannessKey) != null)
SetFieldValue<string?>(Models.Metadata.DataArea.EndiannessKey, GetStringFieldValue(Models.Metadata.DataArea.EndiannessKey).AsEnumValue<Endianness>().AsStringValue());
if (GetInt64FieldValue(Models.Metadata.DataArea.SizeKey) != null)
SetFieldValue<string?>(Models.Metadata.DataArea.SizeKey, GetInt64FieldValue(Models.Metadata.DataArea.SizeKey).ToString());
if (GetInt64FieldValue(Models.Metadata.DataArea.WidthKey) != null)
SetFieldValue<string?>(Models.Metadata.DataArea.WidthKey, GetInt64FieldValue(Models.Metadata.DataArea.WidthKey).ToString());
}
#endregion
}

View File

@@ -1,5 +1,8 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -42,7 +45,26 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Device() : base() { }
public Device(Models.Metadata.Device item) : base(item) { }
public Device(Models.Metadata.Device item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Device.MandatoryKey) != null)
SetFieldValue<string?>(Models.Metadata.Device.MandatoryKey, GetBoolFieldValue(Models.Metadata.Device.MandatoryKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Device.DeviceTypeKey, GetStringFieldValue(Models.Metadata.Device.DeviceTypeKey).AsEnumValue<DeviceType>().AsStringValue());
// Handle subitems
var instance = item.Read<Models.Metadata.Instance>(Models.Metadata.Device.InstanceKey);
if (instance != null)
SetFieldValue<Instance?>(Models.Metadata.Device.InstanceKey, new Instance(instance));
var extensions = item.ReadItemArray<Models.Metadata.Extension>(Models.Metadata.Device.ExtensionKey);
if (extensions != null)
{
Extension[] extensionItems = Array.ConvertAll(extensions, extension => new Extension(extension));
SetFieldValue<Extension[]?>(Models.Metadata.Device.ExtensionKey, extensionItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public DipLocation() : base() { }
public DipLocation(Models.Metadata.DipLocation item) : base(item) { }
public DipLocation(Models.Metadata.DipLocation item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.DipLocation.InvertedKey) != null)
SetFieldValue<string?>(Models.Metadata.DipLocation.InvertedKey, GetBoolFieldValue(Models.Metadata.DipLocation.InvertedKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,8 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -73,7 +76,31 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public DipSwitch() : base() { }
public DipSwitch(Models.Metadata.DipSwitch item) : base(item) { }
public DipSwitch(Models.Metadata.DipSwitch item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.DipSwitch.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.DipSwitch.DefaultKey, GetBoolFieldValue(Models.Metadata.DipSwitch.DefaultKey).FromYesNo());
// Handle subitems
var condition = item.Read<Models.Metadata.Condition>(Models.Metadata.DipSwitch.ConditionKey);
if (condition != null)
SetFieldValue<Condition?>(Models.Metadata.DipSwitch.ConditionKey, new Condition(condition));
var dipLocations = item.ReadItemArray<Models.Metadata.DipLocation>(Models.Metadata.DipSwitch.DipLocationKey);
if (dipLocations != null)
{
DipLocation[] dipLocationItems = Array.ConvertAll(dipLocations, dipLocation => new DipLocation(dipLocation));
SetFieldValue<DipLocation[]?>(Models.Metadata.DipSwitch.DipLocationKey, dipLocationItems);
}
var dipValues = item.ReadItemArray<Models.Metadata.DipValue>(Models.Metadata.DipSwitch.DipValueKey);
if (dipValues != null)
{
DipValue[] dipValueItems = Array.ConvertAll(dipValues, dipValue => new DipValue(dipValue));
SetFieldValue<DipValue[]?>(Models.Metadata.DipSwitch.DipValueKey, dipValueItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +33,17 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public DipValue() : base() { }
public DipValue(Models.Metadata.DipValue item) : base(item) { }
public DipValue(Models.Metadata.DipValue item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.DipValue.DefaultKey, GetBoolFieldValue(Models.Metadata.DipValue.DefaultKey).FromYesNo());
// Handle subitems
var condition = GetFieldValue<Models.Metadata.Condition>(Models.Metadata.DipValue.ConditionKey);
if (condition != null)
SetFieldValue<Condition?>(Models.Metadata.DipValue.ConditionKey, new Condition(condition));
}
#endregion
}

View File

@@ -68,6 +68,20 @@ namespace SabreTools.DatItems.Formats
public Disk(Models.Metadata.Disk item) : base(item)
{
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Disk.OptionalKey) != null)
SetFieldValue<string?>(Models.Metadata.Disk.OptionalKey, GetBoolFieldValue(Models.Metadata.Disk.OptionalKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Disk.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Disk.StatusKey, GetStringFieldValue(Models.Metadata.Disk.StatusKey).AsEnumValue<ItemStatus>().AsStringValue());
if (GetBoolFieldValue(Models.Metadata.Disk.WritableKey) != null)
SetFieldValue<string?>(Models.Metadata.Disk.WritableKey, GetBoolFieldValue(Models.Metadata.Disk.WritableKey).FromYesNo());
// Process hash values
if (GetStringFieldValue(Models.Metadata.Disk.MD5Key) != null)
SetFieldValue<string?>(Models.Metadata.Disk.MD5Key, TextHelper.NormalizeMD5(GetStringFieldValue(Models.Metadata.Disk.MD5Key)));
if (GetStringFieldValue(Models.Metadata.Disk.SHA1Key) != null)
SetFieldValue<string?>(Models.Metadata.Disk.SHA1Key, TextHelper.NormalizeSHA1(GetStringFieldValue(Models.Metadata.Disk.SHA1Key)));
}
#endregion

View File

@@ -23,7 +23,36 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Display() : base() { }
public Display(Models.Metadata.Display item) : base(item) { }
public Display(Models.Metadata.Display item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Display.FlipXKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.FlipXKey, GetBoolFieldValue(Models.Metadata.Display.FlipXKey).FromYesNo());
if (GetInt64FieldValue(Models.Metadata.Display.HBEndKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HBEndKey, GetInt64FieldValue(Models.Metadata.Display.HBEndKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.HBStartKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HBStartKey, GetInt64FieldValue(Models.Metadata.Display.HBStartKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.HeightKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HeightKey, GetInt64FieldValue(Models.Metadata.Display.HeightKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.HTotalKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HTotalKey, GetInt64FieldValue(Models.Metadata.Display.HTotalKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.PixClockKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.PixClockKey, GetInt64FieldValue(Models.Metadata.Display.PixClockKey).ToString());
if (GetDoubleFieldValue(Models.Metadata.Display.RefreshKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.RefreshKey, GetDoubleFieldValue(Models.Metadata.Display.RefreshKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.RotateKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.RotateKey, GetInt64FieldValue(Models.Metadata.Display.RotateKey).ToString());
if (GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.DisplayTypeKey, GetStringFieldValue(Models.Metadata.Display.DisplayTypeKey).AsEnumValue<DisplayType>().AsStringValue());
if (GetInt64FieldValue(Models.Metadata.Display.VBEndKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.VBEndKey, GetInt64FieldValue(Models.Metadata.Display.VBEndKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.VBStartKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.VBStartKey, GetInt64FieldValue(Models.Metadata.Display.VBStartKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.VTotalKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.VTotalKey, GetInt64FieldValue(Models.Metadata.Display.VTotalKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Display.WidthKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.WidthKey, GetInt64FieldValue(Models.Metadata.Display.WidthKey).ToString());
}
public Display(Models.Metadata.Video item) : base()
{
@@ -43,6 +72,20 @@ namespace SabreTools.DatItems.Formats
SetFieldValue<long?>(Models.Metadata.Display.RotateKey, 90);
break;
}
// Process flag values
if (GetInt64FieldValue(Models.Metadata.Video.AspectXKey) != null)
SetFieldValue<string?>(Models.Metadata.Video.AspectXKey, GetInt64FieldValue(Models.Metadata.Video.AspectXKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Video.AspectYKey) != null)
SetFieldValue<string?>(Models.Metadata.Video.AspectYKey, GetInt64FieldValue(Models.Metadata.Video.AspectYKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Video.HeightKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.HeightKey, GetInt64FieldValue(Models.Metadata.Video.HeightKey).ToString());
if (GetDoubleFieldValue(Models.Metadata.Video.RefreshKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.RefreshKey, GetDoubleFieldValue(Models.Metadata.Video.RefreshKey).ToString());
if (GetStringFieldValue(Models.Metadata.Video.ScreenKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.DisplayTypeKey, GetStringFieldValue(Models.Metadata.Video.ScreenKey).AsEnumValue<DisplayType>().AsStringValue());
if (GetInt64FieldValue(Models.Metadata.Video.WidthKey) != null)
SetFieldValue<string?>(Models.Metadata.Display.WidthKey, GetInt64FieldValue(Models.Metadata.Video.WidthKey).ToString());
}
#endregion

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,32 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Driver() : base() { }
public Driver(Models.Metadata.Driver item) : base(item) { }
public Driver(Models.Metadata.Driver item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.Driver.CocktailKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.CocktailKey, GetStringFieldValue(Models.Metadata.Driver.CocktailKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Driver.ColorKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.ColorKey, GetStringFieldValue(Models.Metadata.Driver.ColorKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Driver.EmulationKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.EmulationKey, GetStringFieldValue(Models.Metadata.Driver.EmulationKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetBoolFieldValue(Models.Metadata.Driver.IncompleteKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.IncompleteKey, GetBoolFieldValue(Models.Metadata.Driver.IncompleteKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.NoSoundHardwareKey, GetBoolFieldValue(Models.Metadata.Driver.NoSoundHardwareKey).FromYesNo());
if (GetInt64FieldValue(Models.Metadata.Driver.PaletteSizeKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.PaletteSizeKey, GetInt64FieldValue(Models.Metadata.Driver.PaletteSizeKey).ToString());
if (GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.RequiresArtworkKey, GetBoolFieldValue(Models.Metadata.Driver.RequiresArtworkKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Driver.SaveStateKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.SaveStateKey, GetStringFieldValue(Models.Metadata.Driver.SaveStateKey).AsEnumValue<Supported>().AsStringValue(useSecond: true));
if (GetStringFieldValue(Models.Metadata.Driver.SoundKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.SoundKey, GetStringFieldValue(Models.Metadata.Driver.SoundKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Driver.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.StatusKey, GetStringFieldValue(Models.Metadata.Driver.StatusKey).AsEnumValue<SupportStatus>().AsStringValue());
if (GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey) != null)
SetFieldValue<string?>(Models.Metadata.Driver.UnofficialKey, GetBoolFieldValue(Models.Metadata.Driver.UnofficialKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Feature() : base() { }
public Feature(Models.Metadata.Feature item) : base(item) { }
public Feature(Models.Metadata.Feature item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.Feature.OverallKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.OverallKey, GetStringFieldValue(Models.Metadata.Feature.OverallKey).AsEnumValue<FeatureStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Feature.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.StatusKey, GetStringFieldValue(Models.Metadata.Feature.StatusKey).AsEnumValue<FeatureStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.FeatureTypeKey, GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey).AsEnumValue<FeatureType>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,8 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +35,28 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Input() : base() { }
public Input(Models.Metadata.Input item) : base(item) { }
public Input(Models.Metadata.Input item) : base(item)
{
// Process flag values
if (GetInt64FieldValue(Models.Metadata.Input.ButtonsKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.ButtonsKey, GetInt64FieldValue(Models.Metadata.Input.ButtonsKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Input.CoinsKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.CoinsKey, GetInt64FieldValue(Models.Metadata.Input.CoinsKey).ToString());
if (GetInt64FieldValue(Models.Metadata.Input.PlayersKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.PlayersKey, GetInt64FieldValue(Models.Metadata.Input.PlayersKey).ToString());
if (GetBoolFieldValue(Models.Metadata.Input.ServiceKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.ServiceKey, GetBoolFieldValue(Models.Metadata.Input.ServiceKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Input.TiltKey) != null)
SetFieldValue<string?>(Models.Metadata.Input.TiltKey, GetBoolFieldValue(Models.Metadata.Input.TiltKey).FromYesNo());
// Handle subitems
var controls = item.ReadItemArray<Models.Metadata.Control>(Models.Metadata.Input.ControlKey);
if (controls != null)
{
Control[] controlItems = Array.ConvertAll(controls, control => new Control(control));
SetFieldValue<Control[]?>(Models.Metadata.Input.ControlKey, controlItems);
}
}
#endregion
}

View File

@@ -1,6 +1,7 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -30,6 +31,14 @@ namespace SabreTools.DatItems.Formats
public Media(Models.Metadata.Media item) : base(item)
{
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
// Process hash values
if (GetStringFieldValue(Models.Metadata.Media.MD5Key) != null)
SetFieldValue<string?>(Models.Metadata.Media.MD5Key, TextHelper.NormalizeMD5(GetStringFieldValue(Models.Metadata.Media.MD5Key)));
if (GetStringFieldValue(Models.Metadata.Media.SHA1Key) != null)
SetFieldValue<string?>(Models.Metadata.Media.SHA1Key, TextHelper.NormalizeSHA1(GetStringFieldValue(Models.Metadata.Media.SHA1Key)));
if (GetStringFieldValue(Models.Metadata.Media.SHA256Key) != null)
SetFieldValue<string?>(Models.Metadata.Media.SHA256Key, TextHelper.NormalizeSHA256(GetStringFieldValue(Models.Metadata.Media.SHA256Key)));
}
#endregion

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -31,7 +32,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public PartFeature() : base() { }
public PartFeature(Models.Metadata.Feature item) : base(item) { }
public PartFeature(Models.Metadata.Feature item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.Feature.OverallKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.OverallKey, GetStringFieldValue(Models.Metadata.Feature.OverallKey).AsEnumValue<FeatureStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Feature.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.StatusKey, GetStringFieldValue(Models.Metadata.Feature.StatusKey).AsEnumValue<FeatureStatus>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey) != null)
SetFieldValue<string?>(Models.Metadata.Feature.FeatureTypeKey, GetStringFieldValue(Models.Metadata.Feature.FeatureTypeKey).AsEnumValue<FeatureType>().AsStringValue());
}
#endregion
}

View File

@@ -1,5 +1,7 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +34,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Port() : base() { }
public Port(Models.Metadata.Port item) : base(item) { }
public Port(Models.Metadata.Port item) : base(item)
{
// Handle subitems
var analogs = item.ReadItemArray<Models.Metadata.Analog>(Models.Metadata.Port.AnalogKey);
if (analogs != null)
{
Analog[] analogItems = Array.ConvertAll(analogs, analog => new Analog(analog));
SetFieldValue<Analog[]?>(Models.Metadata.Port.AnalogKey, analogItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public RamOption() : base() { }
public RamOption(Models.Metadata.RamOption item) : base(item) { }
public RamOption(Models.Metadata.RamOption item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.RamOption.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.RamOption.DefaultKey, GetBoolFieldValue(Models.Metadata.RamOption.DefaultKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Release() : base() { }
public Release(Models.Metadata.Release item) : base(item) { }
public Release(Models.Metadata.Release item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Release.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.Release.DefaultKey, GetBoolFieldValue(Models.Metadata.Release.DefaultKey).FromYesNo());
}
#endregion
}

View File

@@ -92,6 +92,44 @@ namespace SabreTools.DatItems.Formats
public Rom(Models.Metadata.Rom item) : base(item)
{
SetFieldValue<DupeType>(DatItem.DupeTypeKey, 0x00);
// Process flag values
if (GetBoolFieldValue(Models.Metadata.Rom.DisposeKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.DisposeKey, GetBoolFieldValue(Models.Metadata.Rom.DisposeKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Rom.InvertedKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.InvertedKey, GetBoolFieldValue(Models.Metadata.Rom.InvertedKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Rom.LoadFlagKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.LoadFlagKey, GetStringFieldValue(Models.Metadata.Rom.LoadFlagKey).AsEnumValue<LoadFlag>().AsStringValue());
if (GetStringFieldValue(Models.Metadata.Rom.OpenMSXMediaType) != null)
SetFieldValue<string?>(Models.Metadata.Rom.OpenMSXMediaType, GetStringFieldValue(Models.Metadata.Rom.OpenMSXMediaType).AsEnumValue<OpenMSXSubType>().AsStringValue());
if (GetBoolFieldValue(Models.Metadata.Rom.MIAKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.MIAKey, GetBoolFieldValue(Models.Metadata.Rom.MIAKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Rom.OptionalKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.OptionalKey, GetBoolFieldValue(Models.Metadata.Rom.OptionalKey).FromYesNo());
if (GetBoolFieldValue(Models.Metadata.Rom.SoundOnlyKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SoundOnlyKey, GetBoolFieldValue(Models.Metadata.Rom.SoundOnlyKey).FromYesNo());
if (GetStringFieldValue(Models.Metadata.Rom.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.StatusKey, GetStringFieldValue(Models.Metadata.Rom.StatusKey).AsEnumValue<ItemStatus>().AsStringValue());
// Process hash values
if (GetInt64FieldValue(Models.Metadata.Rom.SizeKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SizeKey, GetInt64FieldValue(Models.Metadata.Rom.SizeKey).ToString());
if (GetStringFieldValue(Models.Metadata.Rom.CRCKey) != null)
SetFieldValue<string?>(Models.Metadata.Rom.CRCKey, TextHelper.NormalizeCRC32(GetStringFieldValue(Models.Metadata.Rom.CRCKey)));
if (GetStringFieldValue(Models.Metadata.Rom.MD2Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.MD2Key, TextHelper.NormalizeMD2(GetStringFieldValue(Models.Metadata.Rom.MD2Key)));
if (GetStringFieldValue(Models.Metadata.Rom.MD4Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.MD4Key, TextHelper.NormalizeMD4(GetStringFieldValue(Models.Metadata.Rom.MD4Key)));
if (GetStringFieldValue(Models.Metadata.Rom.MD5Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.MD5Key, TextHelper.NormalizeMD5(GetStringFieldValue(Models.Metadata.Rom.MD5Key)));
if (GetStringFieldValue(Models.Metadata.Rom.SHA1Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SHA1Key, TextHelper.NormalizeSHA1(GetStringFieldValue(Models.Metadata.Rom.SHA1Key)));
if (GetStringFieldValue(Models.Metadata.Rom.SHA256Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SHA256Key, TextHelper.NormalizeSHA256(GetStringFieldValue(Models.Metadata.Rom.SHA256Key)));
if (GetStringFieldValue(Models.Metadata.Rom.SHA384Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SHA384Key, TextHelper.NormalizeSHA384(GetStringFieldValue(Models.Metadata.Rom.SHA384Key)));
if (GetStringFieldValue(Models.Metadata.Rom.SHA512Key) != null)
SetFieldValue<string?>(Models.Metadata.Rom.SHA512Key, TextHelper.NormalizeSHA512(GetStringFieldValue(Models.Metadata.Rom.SHA512Key)));
}
#endregion

View File

@@ -1,5 +1,7 @@
using System.Xml.Serialization;
using System;
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core;
namespace SabreTools.DatItems.Formats
{
@@ -32,7 +34,16 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Slot() : base() { }
public Slot(Models.Metadata.Slot item) : base(item) { }
public Slot(Models.Metadata.Slot item) : base(item)
{
// Handle subitems
var slotOptions = item.ReadItemArray<Models.Metadata.SlotOption>(Models.Metadata.Slot.SlotOptionKey);
if (slotOptions != null)
{
SlotOption[] slotOptionItems = Array.ConvertAll(slotOptions, slotOption => new SlotOption(slotOption));
SetFieldValue<SlotOption[]?>(Models.Metadata.Slot.SlotOptionKey, slotOptionItems);
}
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public SlotOption() : base() { }
public SlotOption(Models.Metadata.SlotOption item) : base(item) { }
public SlotOption(Models.Metadata.SlotOption item) : base(item)
{
// Process flag values
if (GetBoolFieldValue(Models.Metadata.SlotOption.DefaultKey) != null)
SetFieldValue<string?>(Models.Metadata.SlotOption.DefaultKey, GetBoolFieldValue(Models.Metadata.SlotOption.DefaultKey).FromYesNo());
}
#endregion
}

View File

@@ -1,5 +1,6 @@
using System.Xml.Serialization;
using Newtonsoft.Json;
using SabreTools.Core.Tools;
namespace SabreTools.DatItems.Formats
{
@@ -22,7 +23,15 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public SoftwareList() : base() { }
public SoftwareList(Models.Metadata.SoftwareList item) : base(item) { }
public SoftwareList(Models.Metadata.SoftwareList item) : base(item)
{
// Process flag values
if (GetStringFieldValue(Models.Metadata.SoftwareList.StatusKey) != null)
SetFieldValue<string?>(Models.Metadata.SoftwareList.StatusKey, GetStringFieldValue(Models.Metadata.SoftwareList.StatusKey).AsEnumValue<SoftwareListStatus>().AsStringValue());
// Handle subitems
// TODO: Handle the Software subitem
}
#endregion
}

View File

@@ -22,7 +22,12 @@ namespace SabreTools.DatItems.Formats
#region Constructors
public Sound() : base() { }
public Sound(Models.Metadata.Sound item) : base(item) { }
public Sound(Models.Metadata.Sound item) : base(item)
{
// Process flag values
if (GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey) != null)
SetFieldValue<string?>(Models.Metadata.Sound.ChannelsKey, GetInt64FieldValue(Models.Metadata.Sound.ChannelsKey).ToString());
}
#endregion
}