diff --git a/RombaSharp/Features/BaseFeature.cs b/RombaSharp/Features/BaseFeature.cs
index e5260492..425a7107 100644
--- a/RombaSharp/Features/BaseFeature.cs
+++ b/RombaSharp/Features/BaseFeature.cs
@@ -784,13 +784,14 @@ CREATE TABLE IF NOT EXISTS dat (
/// Database connection to use
internal void AddDatToDatabase(Rom dat, SqliteConnection dbc)
{
- // Get the dat full path
+ // Get the machine
var machine = dat.GetFieldValue(DatItem.MachineKey);
- string fullpath = Path.Combine(_dats!,
- (machine!.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey) == "dats"
- ? string.Empty
- : machine!.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey))!
- , dat.GetName()!);
+ string? machineName = machine?.GetStringFieldValue(SabreTools.Models.Metadata.Machine.NameKey);
+ if (machine == null || machineName == null)
+ return;
+
+ // Get the dat full path
+ string fullpath = Path.Combine(_dats!, machineName == "dats" ? string.Empty : machineName, dat.GetName()!);
// Parse the Dat if possible
logger.User($"Adding from '{dat.GetName()}'");
diff --git a/SabreTools.DatFiles/DatFile.Removal.cs b/SabreTools.DatFiles/DatFile.Removal.cs
index 6cecc4f3..cc4a5be9 100644
--- a/SabreTools.DatFiles/DatFile.Removal.cs
+++ b/SabreTools.DatFiles/DatFile.Removal.cs
@@ -135,8 +135,9 @@ namespace SabreTools.DatFiles
#region Common
// Handle Machine fields
- if (machineFieldNames.Any() && datItem.GetFieldValue(DatItem.MachineKey) != null)
- RemoveFields(datItem.GetFieldValue(DatItem.MachineKey), machineFieldNames);
+ var machine = datItem.GetFieldValue(DatItem.MachineKey);
+ if (machineFieldNames.Any() && machine != null)
+ RemoveFields(machine, machineFieldNames);
// If there are no field names, return
if (itemFieldNames == null || !itemFieldNames.Any())
@@ -195,10 +196,8 @@ namespace SabreTools.DatFiles
/// Adjuster to remove fields from
private static void RemoveFields(Adjuster adjuster, Dictionary> itemFieldNames)
{
- if (!adjuster.ConditionsSpecified)
- return;
-
- foreach (Condition subCondition in adjuster.GetFieldValue(Models.Metadata.Adjuster.ConditionKey)!)
+ var conditions = adjuster.GetFieldValue(Models.Metadata.Adjuster.ConditionKey) ?? [];
+ foreach (Condition subCondition in conditions)
{
RemoveFields(subCondition, [], itemFieldNames);
}
@@ -210,28 +209,22 @@ namespace SabreTools.DatFiles
/// Configuration to remove fields from
private static void RemoveFields(Configuration configuration, Dictionary> itemFieldNames)
{
- if (configuration.ConditionsSpecified)
+ var conditions = configuration.GetFieldValue(Models.Metadata.Configuration.ConditionKey) ?? [];
+ foreach (Condition subCondition in conditions)
{
- foreach (Condition subCondition in configuration.GetFieldValue(Models.Metadata.Configuration.ConditionKey)!)
- {
- RemoveFields(subCondition, [], itemFieldNames);
- }
+ RemoveFields(subCondition, [], itemFieldNames);
}
- if (configuration.LocationsSpecified)
+ var locations = configuration.GetFieldValue(Models.Metadata.Configuration.ConfLocationKey) ?? [];
+ foreach (ConfLocation subLocation in locations)
{
- foreach (ConfLocation subLocation in configuration.GetFieldValue(Models.Metadata.Configuration.ConfLocationKey)!)
- {
- RemoveFields(subLocation, [], itemFieldNames);
- }
+ RemoveFields(subLocation, [], itemFieldNames);
}
- if (configuration.SettingsSpecified)
+ var settings = configuration.GetFieldValue(Models.Metadata.Configuration.ConfSettingKey) ?? [];
+ foreach (ConfSetting subSetting in settings)
{
- foreach (ConfSetting subSetting in configuration.GetFieldValue(Models.Metadata.Configuration.ConfSettingKey)!)
- {
- RemoveFields(subSetting as DatItem, [], itemFieldNames);
- }
+ RemoveFields(subSetting as DatItem, [], itemFieldNames);
}
}
@@ -241,12 +234,10 @@ namespace SabreTools.DatFiles
/// ConfSetting to remove fields from
private static void RemoveFields(ConfSetting confsetting, Dictionary> itemFieldNames)
{
- if (confsetting.ConditionsSpecified)
+ var conditions = confsetting.GetFieldValue(Models.Metadata.ConfSetting.ConditionKey) ?? [];
+ foreach (Condition subCondition in conditions)
{
- foreach (Condition subCondition in confsetting.GetFieldValue(Models.Metadata.ConfSetting.ConditionKey)!)
- {
- RemoveFields(subCondition, [], itemFieldNames);
- }
+ RemoveFields(subCondition, [], itemFieldNames);
}
}
@@ -256,20 +247,16 @@ namespace SabreTools.DatFiles
/// Device to remove fields from
private static void RemoveFields(Device device, Dictionary> itemFieldNames)
{
- if (device.ExtensionsSpecified)
+ var extensions = device.GetFieldValue(Models.Metadata.Device.ExtensionKey) ?? [];
+ foreach (Extension subExtension in extensions)
{
- foreach (Extension subExtension in device.GetFieldValue(Models.Metadata.Device.ExtensionKey)!)
- {
- RemoveFields(subExtension, [], itemFieldNames);
- }
+ RemoveFields(subExtension, [], itemFieldNames);
}
- if (device.InstancesSpecified)
+ var instances = device.GetFieldValue(Models.Metadata.Device.InstanceKey) ?? [];
+ foreach (Instance subInstance in instances)
{
- foreach (Instance subInstance in device.GetFieldValue(Models.Metadata.Device.InstanceKey)!)
- {
- RemoveFields(subInstance, [], itemFieldNames);
- }
+ RemoveFields(subInstance, [], itemFieldNames);
}
}
@@ -279,32 +266,27 @@ namespace SabreTools.DatFiles
/// DipSwitch to remove fields from
private static void RemoveFields(DipSwitch dipSwitch, Dictionary> itemFieldNames)
{
- if (dipSwitch.ConditionsSpecified)
+ var conditions = dipSwitch.GetFieldValue(Models.Metadata.DipSwitch.ConditionKey) ?? [];
+ foreach (Condition subCondition in conditions)
{
- foreach (Condition subCondition in dipSwitch.GetFieldValue(Models.Metadata.DipSwitch.ConditionKey)!)
- {
- RemoveFields(subCondition, [], itemFieldNames);
- }
+ RemoveFields(subCondition, [], itemFieldNames);
}
- if (dipSwitch.LocationsSpecified)
+ var locations = dipSwitch.GetFieldValue(Models.Metadata.DipSwitch.DipLocationKey) ?? [];
+ foreach (DipLocation subLocation in locations)
{
- foreach (DipLocation subLocation in dipSwitch.GetFieldValue(Models.Metadata.DipSwitch.DipLocationKey)!)
- {
- RemoveFields(subLocation, [], itemFieldNames);
- }
+ RemoveFields(subLocation, [], itemFieldNames);
}
- if (dipSwitch.ValuesSpecified)
+ var dipValues = dipSwitch.GetFieldValue(Models.Metadata.DipSwitch.DipValueKey) ?? [];
+ foreach (DipValue subValue in dipValues)
{
- foreach (DipValue subValue in dipSwitch.GetFieldValue(Models.Metadata.DipSwitch.DipValueKey)!)
- {
- RemoveFields(subValue as DatItem, [], itemFieldNames);
- }
+ RemoveFields(subValue as DatItem, [], itemFieldNames);
}
- if (dipSwitch.PartSpecified)
- RemoveFields(dipSwitch.GetFieldValue(DipSwitch.PartKey)! as DatItem, [], itemFieldNames);
+ var part = dipSwitch.GetFieldValue(DipSwitch.PartKey);
+ if (part != null)
+ RemoveFields(part as DatItem, [], itemFieldNames);
}
///
@@ -313,12 +295,10 @@ namespace SabreTools.DatFiles
/// DipValue to remove fields from
private static void RemoveFields(DipValue dipValue, Dictionary> itemFieldNames)
{
- if (dipValue.ConditionsSpecified)
+ var conditions = dipValue.GetFieldValue(Models.Metadata.DipValue.ConditionKey) ?? [];
+ foreach (Condition subCondition in conditions)
{
- foreach (Condition subCondition in dipValue.GetFieldValue(Models.Metadata.DipValue.ConditionKey)!)
- {
- RemoveFields(subCondition, [], itemFieldNames);
- }
+ RemoveFields(subCondition, [], itemFieldNames);
}
}
@@ -328,11 +308,13 @@ namespace SabreTools.DatFiles
/// Disk to remove fields from
private static void RemoveFields(Disk disk, Dictionary> itemFieldNames)
{
- if (disk.DiskAreaSpecified)
- RemoveFields(disk.GetFieldValue(Disk.DiskAreaKey)! as DatItem, [], itemFieldNames);
+ var diskArea = disk.GetFieldValue(Disk.DiskAreaKey);
+ if (diskArea != null)
+ RemoveFields(diskArea as DatItem, [], itemFieldNames);
- if (disk.PartSpecified)
- RemoveFields(disk.GetFieldValue(Disk.PartKey)! as DatItem, [], itemFieldNames);
+ var part = disk.GetFieldValue(Disk.PartKey);
+ if (part != null)
+ RemoveFields(part as DatItem, [], itemFieldNames);
}
///
@@ -341,12 +323,10 @@ namespace SabreTools.DatFiles
/// Input to remove fields from
private static void RemoveFields(Input input, Dictionary> itemFieldNames)
{
- if (input.ControlsSpecified)
+ var controls = input.GetFieldValue(Models.Metadata.Input.ControlKey) ?? [];
+ foreach (Control subControl in controls)
{
- foreach (Control subControl in input.GetFieldValue(Models.Metadata.Input.ControlKey)!)
- {
- RemoveFields(subControl, [], itemFieldNames);
- }
+ RemoveFields(subControl, [], itemFieldNames);
}
}
@@ -356,12 +336,10 @@ namespace SabreTools.DatFiles
/// Part to remove fields from
private static void RemoveFields(Part part, Dictionary> itemFieldNames)
{
- if (part.FeaturesSpecified)
+ var features = part.GetFieldValue(Models.Metadata.Part.FeatureKey) ?? [];
+ foreach (PartFeature subPartFeature in features)
{
- foreach (PartFeature subPartFeature in part.GetFieldValue(Models.Metadata.Part.FeatureKey)!)
- {
- RemoveFields(subPartFeature, [], itemFieldNames);
- }
+ RemoveFields(subPartFeature, [], itemFieldNames);
}
}
@@ -371,12 +349,10 @@ namespace SabreTools.DatFiles
/// Port to remove fields from
private static void RemoveFields(Port port, Dictionary> itemFieldNames)
{
- if (port.AnalogsSpecified)
+ var analogs = port.GetFieldValue(Models.Metadata.Port.AnalogKey) ?? [];
+ foreach (Analog subAnalog in analogs)
{
- foreach (Analog subAnalog in port.GetFieldValue(Models.Metadata.Port.AnalogKey)!)
- {
- RemoveFields(subAnalog, [], itemFieldNames);
- }
+ RemoveFields(subAnalog, [], itemFieldNames);
}
}
@@ -386,11 +362,13 @@ namespace SabreTools.DatFiles
/// Rom to remove fields from
private static void RemoveFields(Rom rom, Dictionary> itemFieldNames)
{
- if (rom.DataAreaSpecified)
- RemoveFields(rom.GetFieldValue(Rom.DataAreaKey)!, [], itemFieldNames);
+ var dataArea = rom.GetFieldValue(Rom.DataAreaKey);
+ if (dataArea != null)
+ RemoveFields(dataArea as DatItem, [], itemFieldNames);
- if (rom.PartSpecified)
- RemoveFields(rom.GetFieldValue(Rom.PartKey)! as DatItem, [], itemFieldNames);
+ var part = rom.GetFieldValue(Rom.PartKey);
+ if (part != null)
+ RemoveFields(part as DatItem, [], itemFieldNames);
}
///
@@ -399,12 +377,10 @@ namespace SabreTools.DatFiles
/// Slot to remove fields from
private static void RemoveFields(Slot slot, Dictionary> itemFieldNames)
{
- if (slot.SlotOptionsSpecified)
+ var slotOptions = slot.GetFieldValue(Models.Metadata.Slot.SlotOptionKey) ?? [];
+ foreach (SlotOption subSlotOption in slotOptions)
{
- foreach (SlotOption subSlotOption in slot.GetFieldValue(Models.Metadata.Slot.SlotOptionKey)!)
- {
- RemoveFields(subSlotOption, [], itemFieldNames);
- }
+ RemoveFields(subSlotOption, [], itemFieldNames);
}
}
diff --git a/SabreTools.DatFiles/DatFile.cs b/SabreTools.DatFiles/DatFile.cs
index e7db10f1..8e172713 100644
--- a/SabreTools.DatFiles/DatFile.cs
+++ b/SabreTools.DatFiles/DatFile.cs
@@ -119,7 +119,8 @@ namespace SabreTools.DatFiles
/// DatHeader to get the values from
public static DatFile Create(DatHeader datHeader)
{
- DatFile datFile = Create(datHeader.GetFieldValue(DatHeader.DatFormatKey));
+ DatFormat format = datHeader.GetFieldValue(DatHeader.DatFormatKey);
+ DatFile datFile = Create(format);
datFile.Header = (DatHeader)datHeader.Clone();
return datFile;
}
@@ -131,24 +132,29 @@ namespace SabreTools.DatFiles
/// True if the date should be omitted from name and description, false otherwise
public void FillHeaderFromPath(string path, bool bare)
{
+ // Get the header strings
+ string? name = Header.GetStringFieldValue(Models.Metadata.Header.NameKey);
+ string? description = Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey);
+ string? date = Header.GetStringFieldValue(Models.Metadata.Header.DateKey);
+
// If the description is defined but not the name, set the name from the description
- if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.NameKey)) && !string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
+ if (string.IsNullOrEmpty(name) && !string.IsNullOrEmpty(description))
{
- Header.SetFieldValue(Models.Metadata.Header.NameKey, Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
+ Header.SetFieldValue(Models.Metadata.Header.NameKey, description);
}
// If the name is defined but not the description, set the description from the name
- else if (!string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.NameKey)) && string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
+ else if (!string.IsNullOrEmpty(name) && string.IsNullOrEmpty(description))
{
- Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + (bare ? string.Empty : $" ({Header.GetStringFieldValue(Models.Metadata.Header.DateKey)})"));
+ Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, name + (bare ? string.Empty : $" ({date})"));
}
// If neither the name or description are defined, set them from the automatic values
- else if (string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.NameKey)) && string.IsNullOrEmpty(Header.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
+ else if (string.IsNullOrEmpty(name) && string.IsNullOrEmpty(description))
{
string[] splitpath = path.TrimEnd(Path.DirectorySeparatorChar).Split(Path.DirectorySeparatorChar);
Header.SetFieldValue(Models.Metadata.Header.NameKey, splitpath.Last());
- Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, Header.GetStringFieldValue(Models.Metadata.Header.NameKey) + (bare ? string.Empty : $" ({Header.GetStringFieldValue(Models.Metadata.Header.DateKey)})"));
+ Header.SetFieldValue(Models.Metadata.Header.DescriptionKey, splitpath.Last() + (bare ? string.Empty : $" ({date})"));
}
}
@@ -245,14 +251,17 @@ namespace SabreTools.DatFiles
{
// Get machine for the item
var machine = item.GetFieldValue(DatItem.MachineKey);
+ if (machine == null)
+ return string.Empty;
// Initialize strings
+ string? type = item.GetStringFieldValue(Models.Metadata.DatItem.TypeKey);
string fix,
- game = item.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty,
- manufacturer = machine!.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty,
- publisher = machine!.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty,
- category = machine!.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty,
- name = item.GetName() ?? item.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue().AsStringValue() ?? string.Empty,
+ game = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty,
+ manufacturer = machine.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty,
+ publisher = machine.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty,
+ category = machine.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty,
+ name = item.GetName() ?? type.AsEnumValue().AsStringValue() ?? string.Empty,
crc = string.Empty,
md5 = string.Empty,
sha1 = string.Empty,
@@ -262,13 +271,22 @@ namespace SabreTools.DatFiles
size = string.Empty,
spamsum = string.Empty;
+ // Check for quotes
+ bool? quotes = Header.GetBoolFieldValue(DatHeader.QuotesKey);
+
// If we have a prefix
if (prefix)
- fix = Header.GetStringFieldValue(DatHeader.PrefixKey) + (Header.GetBoolFieldValue(DatHeader.QuotesKey) == true ? "\"" : string.Empty);
+ {
+ string? prefixString = Header.GetStringFieldValue(DatHeader.PrefixKey);
+ fix = prefixString + (quotes == true ? "\"" : string.Empty);
+ }
// If we have a postfix
else
- fix = (Header.GetBoolFieldValue(DatHeader.QuotesKey) == true ? "\"" : string.Empty) + Header.GetStringFieldValue(DatHeader.PostfixKey);
+ {
+ string? postfixString = Header.GetStringFieldValue(DatHeader.PostfixKey);
+ fix = (quotes == true ? "\"" : string.Empty) + postfixString;
+ }
// Ensure we have the proper values for replacement
if (item is Disk disk)
@@ -325,14 +343,17 @@ namespace SabreTools.DatFiles
{
// Get machine for the item
var machine = ItemsDB.GetMachineForItem(item.Item1);
+ if (machine.Item2 == null)
+ return string.Empty;
// Initialize strings
+ string? type = item.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey);
string fix,
- game = machine.Item2!.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty,
- manufacturer = machine.Item2!.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty,
- publisher = machine.Item2!.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty,
- category = machine.Item2!.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty,
- name = item.Item2.GetName() ?? item.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue().AsStringValue() ?? string.Empty,
+ game = machine.Item2.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty,
+ manufacturer = machine.Item2.GetStringFieldValue(Models.Metadata.Machine.ManufacturerKey) ?? string.Empty,
+ publisher = machine.Item2.GetStringFieldValue(Models.Metadata.Machine.PublisherKey) ?? string.Empty,
+ category = machine.Item2.GetStringFieldValue(Models.Metadata.Machine.CategoryKey) ?? string.Empty,
+ name = item.Item2.GetName() ?? type.AsEnumValue().AsStringValue() ?? string.Empty,
crc = string.Empty,
md5 = string.Empty,
sha1 = string.Empty,
@@ -342,13 +363,22 @@ namespace SabreTools.DatFiles
size = string.Empty,
spamsum = string.Empty;
+ // Check for quotes
+ bool? quotes = Header.GetBoolFieldValue(DatHeader.QuotesKey);
+
// If we have a prefix
if (prefix)
- fix = Header.GetStringFieldValue(DatHeader.PrefixKey) + (Header.GetBoolFieldValue(DatHeader.QuotesKey) == true ? "\"" : string.Empty);
+ {
+ string? prefixString = Header.GetStringFieldValue(DatHeader.PrefixKey);
+ fix = prefixString + (quotes == true ? "\"" : string.Empty);
+ }
// If we have a postfix
else
- fix = (Header.GetBoolFieldValue(DatHeader.QuotesKey) == true ? "\"" : string.Empty) + Header.GetStringFieldValue(DatHeader.PostfixKey);
+ {
+ string? postfixString = Header.GetStringFieldValue(DatHeader.PostfixKey);
+ fix = (quotes == true ? "\"" : string.Empty) + postfixString;
+ }
// Ensure we have the proper values for replacement
if (item.Item2 is Disk disk)
@@ -411,24 +441,30 @@ namespace SabreTools.DatFiles
if (forceRomName)
Header.SetFieldValue(DatHeader.UseRomNameKey, true);
+ // Get the machine
+ var machine = item.GetFieldValue(DatItem.MachineKey);
+ if (machine == null)
+ return;
+
// Get the name to update
string? name = (Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true
? item.GetName()
- : item.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)) ?? string.Empty;
+ : machine.GetStringFieldValue(Models.Metadata.Machine.NameKey)) ?? string.Empty;
// Create the proper Prefix and Postfix
string pre = CreatePrefixPostfix(item, true);
string post = CreatePrefixPostfix(item, false);
// If we're in Depot mode, take care of that instead
- if (Header.GetFieldValue(DatHeader.OutputDepotKey)?.IsActive == true)
+ var outputDepot = Header.GetFieldValue(DatHeader.OutputDepotKey);
+ if (outputDepot?.IsActive == true)
{
if (item is Disk disk)
{
// We can only write out if there's a SHA-1
if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
{
- name = Utilities.GetDepotPath(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key), Header.GetFieldValue(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
+ name = Utilities.GetDepotPath(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key), outputDepot.Depth)?.Replace('\\', '/');
item.SetName($"{pre}{name}{post}");
}
}
@@ -437,7 +473,7 @@ namespace SabreTools.DatFiles
// We can only write out if there's a SHA-1
if (!string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)))
{
- name = Utilities.GetDepotPath(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key), Header.GetFieldValue(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
+ name = Utilities.GetDepotPath(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key), outputDepot.Depth)?.Replace('\\', '/');
item.SetName($"{pre}{name}{post}");
}
}
@@ -446,7 +482,7 @@ namespace SabreTools.DatFiles
// We can only write out if there's a SHA-1
if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
{
- name = Utilities.GetDepotPath(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key), Header.GetFieldValue(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
+ name = Utilities.GetDepotPath(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key), outputDepot.Depth)?.Replace('\\', '/');
item.SetName($"{pre}{name}{post}");
}
}
@@ -454,31 +490,34 @@ namespace SabreTools.DatFiles
return;
}
- if (!string.IsNullOrEmpty(Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)) || Header.GetBoolFieldValue(DatHeader.RemoveExtensionKey) == true)
+ string? replaceExtension = Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey);
+ bool? removeExtension = Header.GetBoolFieldValue(DatHeader.RemoveExtensionKey);
+ if (!string.IsNullOrEmpty(replaceExtension) || removeExtension == true)
{
- if (Header.GetBoolFieldValue(DatHeader.RemoveExtensionKey) == true)
+ if (removeExtension == true)
Header.SetFieldValue(DatHeader.ReplaceExtensionKey, string.Empty);
string? dir = Path.GetDirectoryName(name);
if (dir != null)
{
dir = dir.TrimStart(Path.DirectorySeparatorChar);
- name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey));
+ name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + replaceExtension);
}
}
- if (!string.IsNullOrEmpty(Header.GetStringFieldValue(DatHeader.AddExtensionKey)))
- name += Header.GetStringFieldValue(DatHeader.AddExtensionKey);
+ string? addExtension = Header.GetStringFieldValue(DatHeader.AddExtensionKey);
+ if (!string.IsNullOrEmpty(addExtension))
+ name += addExtension;
if (Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true && Header.GetBoolFieldValue(DatHeader.GameNameKey) == true)
- name = Path.Combine(item.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty, name);
+ name = Path.Combine(machine.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty, name);
// Now assign back the formatted name
name = $"{pre}{name}{post}";
if (Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true)
item.SetName(name);
- else if (item.GetFieldValue(DatItem.MachineKey) != null)
- item.GetFieldValue(DatItem.MachineKey)!.SetFieldValue(Models.Metadata.Machine.NameKey, name);
+ else
+ machine.SetFieldValue(Models.Metadata.Machine.NameKey, name);
// Restore all relevant values
if (forceRemoveQuotes)
@@ -517,14 +556,15 @@ namespace SabreTools.DatFiles
string post = CreatePrefixPostfixDB(item, false);
// If we're in Depot mode, take care of that instead
- if (Header.GetFieldValue(DatHeader.OutputDepotKey)?.IsActive == true)
+ var outputDepot = Header.GetFieldValue(DatHeader.OutputDepotKey);
+ if (outputDepot?.IsActive == true)
{
if (item.Item2 is Disk disk)
{
// We can only write out if there's a SHA-1
if (!string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)))
{
- name = Utilities.GetDepotPath(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key), Header.GetFieldValue(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
+ name = Utilities.GetDepotPath(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key), outputDepot.Depth)?.Replace('\\', '/');
item.Item2.SetName($"{pre}{name}{post}");
}
}
@@ -533,7 +573,7 @@ namespace SabreTools.DatFiles
// We can only write out if there's a SHA-1
if (!string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)))
{
- name = Utilities.GetDepotPath(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key), Header.GetFieldValue(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
+ name = Utilities.GetDepotPath(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key), outputDepot.Depth)?.Replace('\\', '/');
item.Item2.SetName($"{pre}{name}{post}");
}
}
@@ -542,7 +582,7 @@ namespace SabreTools.DatFiles
// We can only write out if there's a SHA-1
if (!string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)))
{
- name = Utilities.GetDepotPath(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key), Header.GetFieldValue(DatHeader.OutputDepotKey)!.Depth)?.Replace('\\', '/');
+ name = Utilities.GetDepotPath(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key), outputDepot.Depth)?.Replace('\\', '/');
item.Item2.SetName($"{pre}{name}{post}");
}
}
@@ -550,21 +590,24 @@ namespace SabreTools.DatFiles
return;
}
- if (!string.IsNullOrEmpty(Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey)) || Header.GetBoolFieldValue(DatHeader.RemoveExtensionKey) == true)
+ string? replaceExtension = Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey);
+ bool? removeExtension = Header.GetBoolFieldValue(DatHeader.RemoveExtensionKey);
+ if (!string.IsNullOrEmpty(replaceExtension) || removeExtension == true)
{
- if (Header.GetBoolFieldValue(DatHeader.RemoveExtensionKey) == true)
+ if (removeExtension == true)
Header.SetFieldValue(DatHeader.ReplaceExtensionKey, string.Empty);
string? dir = Path.GetDirectoryName(name);
if (dir != null)
{
dir = dir.TrimStart(Path.DirectorySeparatorChar);
- name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + Header.GetStringFieldValue(DatHeader.ReplaceExtensionKey));
+ name = Path.Combine(dir, Path.GetFileNameWithoutExtension(name) + replaceExtension);
}
}
- if (!string.IsNullOrEmpty(Header.GetStringFieldValue(DatHeader.AddExtensionKey)))
- name += Header.GetStringFieldValue(DatHeader.AddExtensionKey);
+ string? addExtension = Header.GetStringFieldValue(DatHeader.AddExtensionKey);
+ if (!string.IsNullOrEmpty(addExtension))
+ name += addExtension;
if (Header.GetBoolFieldValue(DatHeader.UseRomNameKey) == true && Header.GetBoolFieldValue(DatHeader.GameNameKey) == true)
name = Path.Combine(machine.Item2!.GetStringFieldValue(Models.Metadata.Machine.NameKey) ?? string.Empty, name);
@@ -595,20 +638,33 @@ namespace SabreTools.DatFiles
if (item is not Rom rom)
return item;
+ // Get machine for the item
+ var machine = item.GetFieldValue(DatItem.MachineKey);
+ if (machine == null)
+ return item;
+
// If the Rom has "null" characteristics, ensure all fields
- if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null && rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null")
+ if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null
+ && rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null")
{
- logger.Verbose($"Empty folder found: {item.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}");
+ logger.Verbose($"Empty folder found: {machine.GetStringFieldValue(Models.Metadata.Machine.NameKey)}");
rom.SetName(rom.GetName() == "null" ? "-" : rom.GetName());
rom.SetFieldValue(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString());
- rom.SetFieldValue(Models.Metadata.Rom.CRCKey, rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null" ? Constants.CRCZero : null);
- rom.SetFieldValue(Models.Metadata.Rom.MD5Key, rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) == "null" ? Constants.MD5Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SHA1Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) == "null" ? Constants.SHA1Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SHA256Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) == "null" ? Constants.SHA256Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SHA384Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key) == "null" ? Constants.SHA384Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SHA512Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key) == "null" ? Constants.SHA512Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SpamSumKey, rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) == "null" ? Constants.SpamSumZero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.CRCKey,
+ rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null" ? Constants.CRCZero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.MD5Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) == "null" ? Constants.MD5Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SHA1Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) == "null" ? Constants.SHA1Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SHA256Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) == "null" ? Constants.SHA256Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SHA384Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key) == "null" ? Constants.SHA384Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SHA512Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key) == "null" ? Constants.SHA512Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SpamSumKey,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) == "null" ? Constants.SpamSumZero : null);
}
return rom;
@@ -627,21 +683,32 @@ namespace SabreTools.DatFiles
// Get machine for the item
var machine = ItemsDB.GetMachineForItem(item.Item1);
+ var machineObj = machine.Item2;
+ if (machineObj == null)
+ return item;
// If the Rom has "null" characteristics, ensure all fields
- if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null && rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null")
+ if (rom.GetInt64FieldValue(Models.Metadata.Rom.SizeKey) == null
+ && rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null")
{
- logger.Verbose($"Empty folder found: {machine.Item2!.GetStringFieldValue(Models.Metadata.Machine.NameKey)}");
+ logger.Verbose($"Empty folder found: {machineObj.GetStringFieldValue(Models.Metadata.Machine.NameKey)}");
rom.SetName(rom.GetName() == "null" ? "-" : rom.GetName());
rom.SetFieldValue(Models.Metadata.Rom.SizeKey, Constants.SizeZero.ToString());
- rom.SetFieldValue(Models.Metadata.Rom.CRCKey, rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null" ? Constants.CRCZero : null);
- rom.SetFieldValue(Models.Metadata.Rom.MD5Key, rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) == "null" ? Constants.MD5Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SHA1Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) == "null" ? Constants.SHA1Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SHA256Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) == "null" ? Constants.SHA256Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SHA384Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key) == "null" ? Constants.SHA384Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SHA512Key, rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key) == "null" ? Constants.SHA512Zero : null);
- rom.SetFieldValue(Models.Metadata.Rom.SpamSumKey, rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) == "null" ? Constants.SpamSumZero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.CRCKey,
+ rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) == "null" ? Constants.CRCZero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.MD5Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) == "null" ? Constants.MD5Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SHA1Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) == "null" ? Constants.SHA1Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SHA256Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) == "null" ? Constants.SHA256Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SHA384Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key) == "null" ? Constants.SHA384Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SHA512Key,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key) == "null" ? Constants.SHA512Zero : null);
+ rom.SetFieldValue(Models.Metadata.Rom.SpamSumKey,
+ rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) == "null" ? Constants.SpamSumZero : null);
}
return (item.Item1, rom);
@@ -676,7 +743,8 @@ namespace SabreTools.DatFiles
foreach (DatItem datItem in datItems)
{
- if (GetSupportedTypes().Contains(datItem.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue()))
+ ItemType itemType = datItem.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue();
+ if (GetSupportedTypes().Contains(itemType))
return true;
}
@@ -697,7 +765,8 @@ namespace SabreTools.DatFiles
foreach ((long, DatItem) datItem in datItems)
{
- if (GetSupportedTypes().Contains(datItem.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue()))
+ ItemType itemType = datItem.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue();
+ if (GetSupportedTypes().Contains(itemType))
return true;
}
@@ -749,10 +818,11 @@ namespace SabreTools.DatFiles
}
// If we have an item type not in the list of supported values
+ string datFormat = Header?.GetFieldValue(DatHeader.DatFormatKey).ToString() ?? "Unknown Format";
if (!GetSupportedTypes().Contains(datItem.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue()))
{
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
- logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {Header?.GetFieldValue(DatHeader.DatFormatKey)}");
+ logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {datFormat}");
return true;
}
@@ -762,9 +832,9 @@ namespace SabreTools.DatFiles
{
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
#if NET20 || NET35
- logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.GetFieldValue(DatHeader.DatFormatKey)}: {string.Join(", ", [.. missingFields])}");
+ logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {datFormat}: {string.Join(", ", [.. missingFields])}");
#else
- logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.GetFieldValue(DatHeader.DatFormatKey)}: {string.Join(", ", missingFields)}");
+ logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {datFormat}: {string.Join(", ", missingFields)}");
#endif
return true;
}
@@ -817,10 +887,11 @@ namespace SabreTools.DatFiles
}
// If we have an item type not in the list of supported values
+ string datFormat = Header?.GetFieldValue(DatHeader.DatFormatKey).ToString() ?? "Unknown Format";
if (!GetSupportedTypes().Contains(datItem.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue()))
{
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
- logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {Header?.GetFieldValue(DatHeader.DatFormatKey)}");
+ logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {datFormat}");
return true;
}
@@ -830,9 +901,9 @@ namespace SabreTools.DatFiles
{
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
#if NET20 || NET35
- logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.GetFieldValue(DatHeader.DatFormatKey)}: {string.Join(", ", [.. missingFields])}");
+ logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {datFormat}: {string.Join(", ", [.. missingFields])}");
#else
- logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {Header?.GetFieldValue(DatHeader.DatFormatKey)}: {string.Join(", ", missingFields)}");
+ logger?.Verbose($"Item '{itemString}' was skipped because it was missing required fields for {datFormat}: {string.Join(", ", missingFields)}");
#endif
return true;
}
diff --git a/SabreTools.DatFiles/DatHeader.cs b/SabreTools.DatFiles/DatHeader.cs
index 71548d7e..a832cef6 100644
--- a/SabreTools.DatFiles/DatHeader.cs
+++ b/SabreTools.DatFiles/DatHeader.cs
@@ -177,24 +177,42 @@ namespace SabreTools.DatFiles
public DatHeader CloneStandard()
{
var header = new DatHeader();
- header.SetFieldValue(Models.Metadata.Header.AuthorKey, GetStringFieldValue(Models.Metadata.Header.AuthorKey));
- header.SetFieldValue(Models.Metadata.Header.CategoryKey, GetStringFieldValue(Models.Metadata.Header.CategoryKey));
- header.SetFieldValue(Models.Metadata.Header.CommentKey, GetStringFieldValue(Models.Metadata.Header.CommentKey));
- header.SetFieldValue(Models.Metadata.Header.DateKey, GetStringFieldValue(Models.Metadata.Header.DateKey));
- header.SetFieldValue(DatHeader.DatFormatKey, GetFieldValue(DatHeader.DatFormatKey));
- header.SetFieldValue(Models.Metadata.Header.DescriptionKey, GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
- header.SetFieldValue(Models.Metadata.Header.EmailKey, GetStringFieldValue(Models.Metadata.Header.EmailKey));
- header.SetFieldValue(DatHeader.FileNameKey, GetStringFieldValue(DatHeader.FileNameKey));
- header.SetFieldValue(Models.Metadata.Header.ForceMergingKey, GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue().AsStringValue());
- header.SetFieldValue(Models.Metadata.Header.ForceNodumpKey, GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue().AsStringValue());
- header.SetFieldValue(Models.Metadata.Header.ForcePackingKey, GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue().AsStringValue());
- header.SetFieldValue(Models.Metadata.Header.HeaderKey, GetStringFieldValue(Models.Metadata.Header.HeaderKey));
- header.SetFieldValue(Models.Metadata.Header.HomepageKey, GetStringFieldValue(Models.Metadata.Header.HomepageKey));
- header.SetFieldValue(Models.Metadata.Header.NameKey, GetStringFieldValue(Models.Metadata.Header.NameKey));
- header.SetFieldValue(Models.Metadata.Header.RootDirKey, GetStringFieldValue(Models.Metadata.Header.RootDirKey));
- header.SetFieldValue(Models.Metadata.Header.TypeKey, GetStringFieldValue(Models.Metadata.Header.TypeKey));
- header.SetFieldValue(Models.Metadata.Header.UrlKey, GetStringFieldValue(Models.Metadata.Header.UrlKey));
- header.SetFieldValue(Models.Metadata.Header.VersionKey, GetStringFieldValue(Models.Metadata.Header.VersionKey));
+ header.SetFieldValue(Models.Metadata.Header.AuthorKey,
+ GetStringFieldValue(Models.Metadata.Header.AuthorKey));
+ header.SetFieldValue(Models.Metadata.Header.CategoryKey,
+ GetStringFieldValue(Models.Metadata.Header.CategoryKey));
+ header.SetFieldValue(Models.Metadata.Header.CommentKey,
+ GetStringFieldValue(Models.Metadata.Header.CommentKey));
+ header.SetFieldValue(Models.Metadata.Header.DateKey,
+ GetStringFieldValue(Models.Metadata.Header.DateKey));
+ header.SetFieldValue(DatHeader.DatFormatKey,
+ GetFieldValue(DatHeader.DatFormatKey));
+ header.SetFieldValue(Models.Metadata.Header.DescriptionKey,
+ GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
+ header.SetFieldValue(Models.Metadata.Header.EmailKey,
+ GetStringFieldValue(Models.Metadata.Header.EmailKey));
+ header.SetFieldValue(DatHeader.FileNameKey,
+ GetStringFieldValue(DatHeader.FileNameKey));
+ header.SetFieldValue(Models.Metadata.Header.ForceMergingKey,
+ GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue().AsStringValue());
+ header.SetFieldValue(Models.Metadata.Header.ForceNodumpKey,
+ GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue().AsStringValue());
+ header.SetFieldValue(Models.Metadata.Header.ForcePackingKey,
+ GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue().AsStringValue());
+ header.SetFieldValue(Models.Metadata.Header.HeaderKey,
+ GetStringFieldValue(Models.Metadata.Header.HeaderKey));
+ header.SetFieldValue(Models.Metadata.Header.HomepageKey,
+ GetStringFieldValue(Models.Metadata.Header.HomepageKey));
+ header.SetFieldValue(Models.Metadata.Header.NameKey,
+ GetStringFieldValue(Models.Metadata.Header.NameKey));
+ header.SetFieldValue(Models.Metadata.Header.RootDirKey,
+ GetStringFieldValue(Models.Metadata.Header.RootDirKey));
+ header.SetFieldValue(Models.Metadata.Header.TypeKey,
+ GetStringFieldValue(Models.Metadata.Header.TypeKey));
+ header.SetFieldValue(Models.Metadata.Header.UrlKey,
+ GetStringFieldValue(Models.Metadata.Header.UrlKey));
+ header.SetFieldValue(Models.Metadata.Header.VersionKey,
+ GetStringFieldValue(Models.Metadata.Header.VersionKey));
return header;
}
@@ -205,17 +223,28 @@ namespace SabreTools.DatFiles
public DatHeader CloneFiltering()
{
var header = new DatHeader();
- header.SetFieldValue(DatHeader.AddExtensionKey, GetStringFieldValue(DatHeader.AddExtensionKey));
- header.SetFieldValue(DatHeader.DatFormatKey, GetFieldValue(DatHeader.DatFormatKey));
- header.SetFieldValue(DatHeader.GameNameKey, GetBoolFieldValue(DatHeader.GameNameKey));
- header.SetFieldValue(DatHeader.InputDepotKey, GetFieldValue(DatHeader.InputDepotKey)?.Clone() as DepotInformation);
- header.SetFieldValue(DatHeader.OutputDepotKey, GetFieldValue(DatHeader.OutputDepotKey)?.Clone() as DepotInformation);
- header.SetFieldValue(DatHeader.PostfixKey, GetStringFieldValue(DatHeader.PostfixKey));
- header.SetFieldValue(DatHeader.PrefixKey, GetStringFieldValue(DatHeader.PrefixKey));
- header.SetFieldValue(DatHeader.RemoveExtensionKey, GetBoolFieldValue(DatHeader.RemoveExtensionKey));
- header.SetFieldValue(DatHeader.ReplaceExtensionKey, GetStringFieldValue(DatHeader.ReplaceExtensionKey));
- header.SetFieldValue(DatHeader.QuotesKey, GetBoolFieldValue(DatHeader.QuotesKey));
- header.SetFieldValue(DatHeader.UseRomNameKey, GetBoolFieldValue(DatHeader.UseRomNameKey));
+ header.SetFieldValue(DatHeader.AddExtensionKey,
+ GetStringFieldValue(DatHeader.AddExtensionKey));
+ header.SetFieldValue(DatHeader.DatFormatKey,
+ GetFieldValue(DatHeader.DatFormatKey));
+ header.SetFieldValue(DatHeader.GameNameKey,
+ GetBoolFieldValue(DatHeader.GameNameKey));
+ header.SetFieldValue(DatHeader.InputDepotKey,
+ GetFieldValue(DatHeader.InputDepotKey)?.Clone() as DepotInformation);
+ header.SetFieldValue(DatHeader.OutputDepotKey,
+ GetFieldValue(DatHeader.OutputDepotKey)?.Clone() as DepotInformation);
+ header.SetFieldValue(DatHeader.PostfixKey,
+ GetStringFieldValue(DatHeader.PostfixKey));
+ header.SetFieldValue(DatHeader.PrefixKey,
+ GetStringFieldValue(DatHeader.PrefixKey));
+ header.SetFieldValue(DatHeader.RemoveExtensionKey,
+ GetBoolFieldValue(DatHeader.RemoveExtensionKey));
+ header.SetFieldValue(DatHeader.ReplaceExtensionKey,
+ GetStringFieldValue(DatHeader.ReplaceExtensionKey));
+ header.SetFieldValue(DatHeader.QuotesKey,
+ GetBoolFieldValue(DatHeader.QuotesKey));
+ header.SetFieldValue(DatHeader.UseRomNameKey,
+ GetBoolFieldValue(DatHeader.UseRomNameKey));
return header;
}
@@ -230,77 +259,105 @@ namespace SabreTools.DatFiles
return;
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(DatHeader.FileNameKey)))
- SetFieldValue(DatHeader.FileNameKey, datHeader.GetStringFieldValue(DatHeader.FileNameKey));
+ SetFieldValue(DatHeader.FileNameKey,
+ datHeader.GetStringFieldValue(DatHeader.FileNameKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.NameKey)))
- SetFieldValue(Models.Metadata.Header.NameKey, datHeader.GetStringFieldValue(Models.Metadata.Header.NameKey));
+ SetFieldValue(Models.Metadata.Header.NameKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.NameKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.DescriptionKey)))
- SetFieldValue(Models.Metadata.Header.DescriptionKey, datHeader.GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
+ SetFieldValue(Models.Metadata.Header.DescriptionKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.DescriptionKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.RootDirKey)))
- SetFieldValue(Models.Metadata.Header.RootDirKey, datHeader.GetStringFieldValue(Models.Metadata.Header.RootDirKey));
+ SetFieldValue(Models.Metadata.Header.RootDirKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.RootDirKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.CategoryKey)))
- SetFieldValue(Models.Metadata.Header.CategoryKey, datHeader.GetStringFieldValue(Models.Metadata.Header.CategoryKey));
+ SetFieldValue(Models.Metadata.Header.CategoryKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.CategoryKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.VersionKey)))
- SetFieldValue(Models.Metadata.Header.VersionKey, datHeader.GetStringFieldValue(Models.Metadata.Header.VersionKey));
+ SetFieldValue(Models.Metadata.Header.VersionKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.VersionKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.DateKey)))
- SetFieldValue(Models.Metadata.Header.DateKey, datHeader.GetStringFieldValue(Models.Metadata.Header.DateKey));
+ SetFieldValue(Models.Metadata.Header.DateKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.DateKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.AuthorKey)))
- SetFieldValue(Models.Metadata.Header.AuthorKey, datHeader.GetStringFieldValue(Models.Metadata.Header.AuthorKey));
+ SetFieldValue(Models.Metadata.Header.AuthorKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.AuthorKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.EmailKey)))
- SetFieldValue(Models.Metadata.Header.EmailKey, datHeader.GetStringFieldValue(Models.Metadata.Header.EmailKey));
+ SetFieldValue(Models.Metadata.Header.EmailKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.EmailKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.HomepageKey)))
- SetFieldValue(Models.Metadata.Header.HomepageKey, datHeader.GetStringFieldValue(Models.Metadata.Header.HomepageKey));
+ SetFieldValue(Models.Metadata.Header.HomepageKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.HomepageKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.UrlKey)))
- SetFieldValue(Models.Metadata.Header.UrlKey, datHeader.GetStringFieldValue(Models.Metadata.Header.UrlKey));
+ SetFieldValue(Models.Metadata.Header.UrlKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.UrlKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.CommentKey)))
- SetFieldValue(Models.Metadata.Header.CommentKey, datHeader.GetStringFieldValue(Models.Metadata.Header.CommentKey));
+ SetFieldValue(Models.Metadata.Header.CommentKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.CommentKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.HeaderKey)))
- SetFieldValue(Models.Metadata.Header.HeaderKey, datHeader.GetStringFieldValue(Models.Metadata.Header.HeaderKey));
+ SetFieldValue(Models.Metadata.Header.HeaderKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.HeaderKey));
if (!string.IsNullOrEmpty(datHeader.GetStringFieldValue(Models.Metadata.Header.TypeKey)))
- SetFieldValue(Models.Metadata.Header.TypeKey, datHeader.GetStringFieldValue(Models.Metadata.Header.TypeKey));
+ SetFieldValue(Models.Metadata.Header.TypeKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.TypeKey));
if (datHeader.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue() != MergingFlag.None)
- SetFieldValue(Models.Metadata.Header.ForceMergingKey, datHeader.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue().AsStringValue());
+ SetFieldValue(Models.Metadata.Header.ForceMergingKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.ForceMergingKey).AsEnumValue().AsStringValue());
if (datHeader.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue() != NodumpFlag.None)
- SetFieldValue(Models.Metadata.Header.ForceNodumpKey, datHeader.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue().AsStringValue());
+ SetFieldValue(Models.Metadata.Header.ForceNodumpKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.ForceNodumpKey).AsEnumValue().AsStringValue());
if (datHeader.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue() != PackingFlag.None)
- SetFieldValue(Models.Metadata.Header.ForcePackingKey, datHeader.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue().AsStringValue());
+ SetFieldValue(Models.Metadata.Header.ForcePackingKey,
+ datHeader.GetStringFieldValue(Models.Metadata.Header.ForcePackingKey).AsEnumValue