mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 11:14:23 +00:00
Reduce more Linq usage
This commit is contained in:
@@ -87,7 +87,7 @@ namespace SabreTools.Core.Tools
|
||||
if (string.IsNullOrEmpty(input))
|
||||
return string.Empty;
|
||||
|
||||
return new string(input.Where(c => c <= 255).ToArray());
|
||||
return new string(input!.Where(c => c <= 255).ToArray());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Xml.Serialization;
|
||||
using SabreTools.Models;
|
||||
@@ -22,21 +21,13 @@ namespace SabreTools.Core.Tools
|
||||
if (fields == null)
|
||||
return null;
|
||||
|
||||
#if NET20 || NET35 || NET40
|
||||
return fields
|
||||
.Where(f => f.IsLiteral && !f.IsInitOnly)
|
||||
.Where(f => Attribute.GetCustomAttributes(f, typeof(NoFilterAttribute)).Length == 0)
|
||||
.Select(f => f.GetRawConstantValue() as string)
|
||||
.Where(v => v != null)
|
||||
.ToArray()!;
|
||||
#else
|
||||
return fields
|
||||
.Where(f => f.IsLiteral && !f.IsInitOnly)
|
||||
.Where(f => !f.CustomAttributes.Any(a => a.AttributeType == typeof(NoFilterAttribute)))
|
||||
.Select(f => f.GetRawConstantValue() as string)
|
||||
.Where(v => v != null)
|
||||
.ToArray()!;
|
||||
#endif
|
||||
FieldInfo[] noFilterFields = Array.FindAll(fields,
|
||||
f => f.IsLiteral
|
||||
&& !f.IsInitOnly
|
||||
&& Attribute.GetCustomAttributes(f, typeof(NoFilterAttribute)).Length == 0);
|
||||
string[] constantValues = Array.ConvertAll(noFilterFields,
|
||||
f => (f.GetRawConstantValue() as string) ?? string.Empty);
|
||||
return Array.FindAll(constantValues, s => s.Length > 0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using SabreTools.Core.Tools;
|
||||
using SabreTools.DatItems;
|
||||
|
||||
@@ -270,8 +269,7 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
if (item.ContainsKey(Models.Metadata.Machine.DiskKey))
|
||||
{
|
||||
var items = ReadItemArray<Models.Metadata.Disk>(item, Models.Metadata.Machine.DiskKey)
|
||||
?? ReadItemArray<Models.Metadata.DatItem>(item, Models.Metadata.Machine.DiskKey)?.Select(d => (d as Models.Metadata.Disk)!)?.ToArray(); // TODO: Remove case when Serialization fixed
|
||||
var items = ReadItemArray<Models.Metadata.Disk>(item, Models.Metadata.Machine.DiskKey);
|
||||
ProcessItems(items, machine, machineIndex, source, sourceIndex, statsOnly);
|
||||
}
|
||||
if (item.ContainsKey(Models.Metadata.Machine.DisplayKey))
|
||||
@@ -332,8 +330,7 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
if (item.ContainsKey(Models.Metadata.Machine.RomKey))
|
||||
{
|
||||
var items = ReadItemArray<Models.Metadata.Rom>(item, Models.Metadata.Machine.RomKey)
|
||||
?? ReadItemArray<Models.Metadata.DatItem>(item, Models.Metadata.Machine.RomKey)?.Select(d => (d as Models.Metadata.Rom)!)?.ToArray(); // TODO: Remove case when Serialization fixed
|
||||
var items = ReadItemArray<Models.Metadata.Rom>(item, Models.Metadata.Machine.RomKey);
|
||||
ProcessItems(items, machine, machineIndex, source, sourceIndex, statsOnly);
|
||||
}
|
||||
if (item.ContainsKey(Models.Metadata.Machine.SampleKey))
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
using SabreTools.Core.Filter;
|
||||
@@ -829,7 +828,8 @@ namespace SabreTools.DatFiles
|
||||
|
||||
// If we have an item type not in the list of supported values
|
||||
string datFormat = Header?.GetFieldValue<DatFormat>(DatHeader.DatFormatKey).ToString() ?? "Unknown Format";
|
||||
if (!GetSupportedTypes().Contains(datItem.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>()))
|
||||
ItemType itemType = datItem.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>();
|
||||
if (!Array.Exists(GetSupportedTypes(), t => t == itemType))
|
||||
{
|
||||
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
|
||||
logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {datFormat}");
|
||||
@@ -898,7 +898,8 @@ namespace SabreTools.DatFiles
|
||||
|
||||
// If we have an item type not in the list of supported values
|
||||
string datFormat = Header?.GetFieldValue<DatFormat>(DatHeader.DatFormatKey).ToString() ?? "Unknown Format";
|
||||
if (!GetSupportedTypes().Contains(datItem.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>()))
|
||||
ItemType itemType = datItem.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue<ItemType>();
|
||||
if (!Array.Exists(GetSupportedTypes(), t => t == itemType))
|
||||
{
|
||||
string itemString = JsonConvert.SerializeObject(datItem, Formatting.None);
|
||||
logger?.Verbose($"Item '{itemString}' was skipped because it was not supported in {datFormat}");
|
||||
|
||||
@@ -434,10 +434,9 @@ namespace SabreTools.DatFiles
|
||||
return [];
|
||||
|
||||
// Filter the list
|
||||
return fi.Where(i => i != null)
|
||||
.Where(i => i.GetBoolFieldValue(DatItem.RemoveKey) != true)
|
||||
.Where(i => i.GetFieldValue<Machine>(DatItem.MachineKey) != null)
|
||||
.ToList();
|
||||
return fi.FindAll(i => i != null)
|
||||
.FindAll(i => i.GetBoolFieldValue(DatItem.RemoveKey) != true)
|
||||
.FindAll(i => i.GetFieldValue<Machine>(DatItem.MachineKey) != null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1116,11 +1115,9 @@ namespace SabreTools.DatFiles
|
||||
if (datItem is Rom)
|
||||
{
|
||||
string[] splitname = machine.Split('.');
|
||||
#if NET20 || NET35
|
||||
machine = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) + $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1).ToArray())}";
|
||||
#else
|
||||
machine = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) + $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}";
|
||||
#endif
|
||||
machine = datItem.GetFieldValue<Machine>(DatItem.MachineKey)!
|
||||
.GetStringFieldValue(Models.Metadata.Machine.NameKey)
|
||||
+ $"/{string.Join(".", splitname, 0, splitname.Length > 1 ? splitname.Length - 1 : 1)}";
|
||||
}
|
||||
|
||||
// Strip off "Default" prefix only for ORPG
|
||||
@@ -1254,17 +1251,17 @@ namespace SabreTools.DatFiles
|
||||
|
||||
// Get all device reference names from the current machine
|
||||
List<string?> deviceReferences = this[machine]!
|
||||
.Where(i => i is DeviceRef)
|
||||
.Select(i => i as DeviceRef)
|
||||
.Select(dr => dr!.GetName())
|
||||
.FindAll(i => i is DeviceRef)
|
||||
.ConvertAll(i => i as DeviceRef)
|
||||
.ConvertAll(dr => dr!.GetName())
|
||||
.Distinct()
|
||||
.ToList();
|
||||
|
||||
// Get all slot option names from the current machine
|
||||
List<string?> slotOptions = this[machine]!
|
||||
.Where(i => i is Slot)
|
||||
.Select(i => i as Slot)
|
||||
.Where(s => s!.SlotOptionsSpecified)
|
||||
.FindAll(i => i is Slot)
|
||||
.ConvertAll(i => i as Slot)
|
||||
.FindAll(s => s!.SlotOptionsSpecified)
|
||||
.SelectMany(s => s!.GetFieldValue<SlotOption[]?>(Models.Metadata.Slot.SlotOptionKey)!)
|
||||
.Select(so => so.GetStringFieldValue(Models.Metadata.SlotOption.DevNameKey))
|
||||
.Distinct()
|
||||
@@ -1287,15 +1284,15 @@ namespace SabreTools.DatFiles
|
||||
continue;
|
||||
|
||||
newDeviceReferences.UnionWith(devItems
|
||||
.Where(i => i is DeviceRef)
|
||||
.Select(i => (i as DeviceRef)!.GetName()!));
|
||||
.FindAll(i => i is DeviceRef)
|
||||
.ConvertAll(i => (i as DeviceRef)!.GetName()!));
|
||||
|
||||
// Set new machine information and add to the current machine
|
||||
DatItem copyFrom = this[machine]![0];
|
||||
foreach (DatItem item in devItems)
|
||||
{
|
||||
// If the parent machine doesn't already contain this item, add it
|
||||
if (!this[machine]!.Any(i => i.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) == item.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) && i.GetName() == item.GetName()))
|
||||
if (!this[machine]!.Exists(i => i.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) == item.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) && i.GetName() == item.GetName()))
|
||||
{
|
||||
// Set that we found new items
|
||||
foundnew = true;
|
||||
@@ -1337,8 +1334,8 @@ namespace SabreTools.DatFiles
|
||||
continue;
|
||||
|
||||
newSlotOptions.UnionWith(slotItems
|
||||
.Where(i => i is Slot)
|
||||
.Where(s => (s as Slot)!.SlotOptionsSpecified)
|
||||
.FindAll(i => i is Slot)
|
||||
.FindAll(s => (s as Slot)!.SlotOptionsSpecified)
|
||||
.SelectMany(s => (s as Slot)!.GetFieldValue<SlotOption[]?>(Models.Metadata.Slot.SlotOptionKey)!)
|
||||
.Select(o => o.GetStringFieldValue(Models.Metadata.SlotOption.DevNameKey)!));
|
||||
|
||||
@@ -1347,7 +1344,7 @@ namespace SabreTools.DatFiles
|
||||
foreach (DatItem item in slotItems)
|
||||
{
|
||||
// If the parent machine doesn't already contain this item, add it
|
||||
if (!this[machine]!.Any(i => i.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) == item.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) && i.GetName() == item.GetName()))
|
||||
if (!this[machine]!.Exists(i => i.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) == item.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) && i.GetName() == item.GetName()))
|
||||
{
|
||||
// Set that we found new items
|
||||
foundnew = true;
|
||||
@@ -1486,16 +1483,16 @@ namespace SabreTools.DatFiles
|
||||
|
||||
// If the merge tag exists and the parent already contains it, skip
|
||||
if (mergeTag != null && this[cloneOf!]!
|
||||
.Where(i => i is Disk)
|
||||
.Select(i => (i as Disk)!.GetName()).Contains(mergeTag))
|
||||
.FindAll(i => i is Disk)
|
||||
.ConvertAll(i => (i as Disk)!.GetName()).Contains(mergeTag))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// If the merge tag exists but the parent doesn't contain it, add to parent
|
||||
else if (mergeTag != null && !this[cloneOf!]!
|
||||
.Where(i => i is Disk)
|
||||
.Select(i => (i as Disk)!.GetName()).Contains(mergeTag))
|
||||
.FindAll(i => i is Disk)
|
||||
.ConvertAll(i => (i as Disk)!.GetName()).Contains(mergeTag))
|
||||
{
|
||||
disk.CopyMachineInformation(copyFrom);
|
||||
Add(cloneOf!, disk);
|
||||
@@ -1514,7 +1511,8 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
// If the merge tag exists and the parent already contains it, skip
|
||||
if (rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey) != null && this[cloneOf!]!
|
||||
.Where(i => i is Rom).Select(i => (i as Rom)!.GetName())
|
||||
.FindAll(i => i is Rom)
|
||||
.ConvertAll(i => (i as Rom)!.GetName())
|
||||
.Contains(rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey)))
|
||||
{
|
||||
continue;
|
||||
@@ -1522,7 +1520,8 @@ namespace SabreTools.DatFiles
|
||||
|
||||
// If the merge tag exists but the parent doesn't contain it, add to subfolder of parent
|
||||
else if (rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey) != null && !this[cloneOf!]!
|
||||
.Where(i => i is Rom).Select(i => (i as Rom)!.GetName())
|
||||
.FindAll(i => i is Rom)
|
||||
.ConvertAll(i => (i as Rom)!.GetName())
|
||||
.Contains(rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey)))
|
||||
{
|
||||
if (subfolder)
|
||||
|
||||
@@ -302,7 +302,7 @@ namespace SabreTools.DatFiles
|
||||
#endif
|
||||
|
||||
// If there are no non-blank items, remove
|
||||
else if (!_buckets[key].Any(i => GetItem(i) != null && GetItem(i) is not Blank))
|
||||
else if (!_buckets[key].Exists(i => GetItem(i) != null && GetItem(i) is not Blank))
|
||||
#if NET40_OR_GREATER || NETCOREAPP
|
||||
_buckets.TryRemove(key, out _);
|
||||
#else
|
||||
@@ -653,7 +653,8 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
|
||||
// Add back all roms with the proper flags
|
||||
_buckets[key] = output.Concat(left).Select(i => i.Item1).ToList();
|
||||
List<(long, DatItem)> combined = [.. output, .. left];
|
||||
_buckets[key] = combined.ConvertAll(i => i.Item1);
|
||||
return output;
|
||||
}
|
||||
|
||||
@@ -699,7 +700,8 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
|
||||
// Add back all roms with the proper flags
|
||||
_buckets[key] = output.Concat(left).Select(i => i.Item1).ToList();
|
||||
List<(long, DatItem)> combined = [.. output, .. left];
|
||||
_buckets[key] = combined.ConvertAll(i => i.Item1);
|
||||
return output;
|
||||
}
|
||||
|
||||
@@ -1110,13 +1112,12 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
|
||||
var datItems = itemIndices
|
||||
.Where(i => _items.ContainsKey(i))
|
||||
.Select(i => (i, _items[i]))
|
||||
.ToList();
|
||||
.FindAll(i => _items.ContainsKey(i))
|
||||
.ConvertAll(i => (i, _items[i]));
|
||||
|
||||
Sort(ref datItems, norename);
|
||||
|
||||
_buckets[bucketKeys[i]] = datItems.Select(m => m.Item1).ToList();
|
||||
_buckets[bucketKeys[i]] = datItems.ConvertAll(m => m.Item1);
|
||||
#if NET40_OR_GREATER || NETCOREAPP
|
||||
});
|
||||
#else
|
||||
@@ -1532,11 +1533,9 @@ namespace SabreTools.DatFiles
|
||||
if (datItem.Item2 is Rom)
|
||||
{
|
||||
string[] splitname = machineName.Split('.');
|
||||
#if NET20 || NET35
|
||||
machineName = datItem.Item2.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) + $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1).ToArray())}";
|
||||
#else
|
||||
machineName = datItem.Item2.GetFieldValue<Machine>(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey) + $"/{string.Join(".", splitname.Take(splitname.Length > 1 ? splitname.Length - 1 : 1))}";
|
||||
#endif
|
||||
machineName = datItem.Item2.GetFieldValue<Machine>(DatItem.MachineKey)!
|
||||
.GetStringFieldValue(Models.Metadata.Machine.NameKey)
|
||||
+ $"/{string.Join(".", splitname, 0, splitname.Length > 1 ? splitname.Length - 1 : 1)}";
|
||||
}
|
||||
|
||||
// Strip off "Default" prefix only for ORPG
|
||||
@@ -1682,18 +1681,19 @@ namespace SabreTools.DatFiles
|
||||
continue;
|
||||
|
||||
// Get all device reference names from the current machine
|
||||
List<string?> deviceReferences = items
|
||||
.Where(i => i.Item2 is DeviceRef)
|
||||
.Select(i => i.Item2 as DeviceRef)
|
||||
.Select(dr => dr!.GetName())
|
||||
List<(long, DatItem)> itemsList = [.. items];
|
||||
List<string?> deviceReferences = itemsList
|
||||
.FindAll(i => i.Item2 is DeviceRef)
|
||||
.ConvertAll(i => i.Item2 as DeviceRef)
|
||||
.ConvertAll(dr => dr!.GetName())
|
||||
.Distinct()
|
||||
.ToList();
|
||||
|
||||
// Get all slot option names from the current machine
|
||||
List<string?> slotOptions = items
|
||||
.Where(i => i.Item2 is Slot)
|
||||
.Select(i => i.Item2 as Slot)
|
||||
.Where(s => s!.SlotOptionsSpecified)
|
||||
List<string?> slotOptions = itemsList
|
||||
.FindAll(i => i.Item2 is Slot)
|
||||
.ConvertAll(i => i.Item2 as Slot)
|
||||
.FindAll(s => s!.SlotOptionsSpecified)
|
||||
.SelectMany(s => s!.GetFieldValue<SlotOption[]?>(Models.Metadata.Slot.SlotOptionKey)!)
|
||||
.Select(so => so.GetStringFieldValue(Models.Metadata.SlotOption.DevNameKey))
|
||||
.Distinct()
|
||||
@@ -1716,20 +1716,21 @@ namespace SabreTools.DatFiles
|
||||
continue;
|
||||
|
||||
// Add to the list of new device reference names
|
||||
newDeviceReferences.UnionWith(devItems
|
||||
.Where(i => i.Item2 is DeviceRef)
|
||||
.Select(i => (i.Item2 as DeviceRef)!.GetName()!));
|
||||
List<(long, DatItem)> devItemsList = [.. devItems];
|
||||
newDeviceReferences.UnionWith(devItemsList
|
||||
.FindAll(i => i.Item2 is DeviceRef)
|
||||
.ConvertAll(i => (i.Item2 as DeviceRef)!.GetName()!));
|
||||
|
||||
// Set new machine information and add to the current machine
|
||||
var copyFrom = GetMachineForItem(GetItemsForBucket(game)![0].Item1);
|
||||
var copyFrom = GetMachineForItem(items[0].Item1);
|
||||
if (copyFrom.Item2 == null)
|
||||
continue;
|
||||
|
||||
foreach ((long, DatItem) item in devItems)
|
||||
{
|
||||
// If the parent machine doesn't already contain this item, add it
|
||||
if (!GetItemsForBucket(game)!
|
||||
.Any(i => i.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) == item.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey)
|
||||
if (!Array.Exists(items,
|
||||
i => i.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) == item.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey)
|
||||
&& i.Item2.GetName() == item.Item2.GetName()))
|
||||
{
|
||||
// Set that we found new items
|
||||
@@ -1771,9 +1772,10 @@ namespace SabreTools.DatFiles
|
||||
continue;
|
||||
|
||||
// Add to the list of new slot option names
|
||||
newSlotOptions.UnionWith(slotItems
|
||||
.Where(i => i.Item2 is Slot)
|
||||
.Where(s => (s.Item2 as Slot)!.SlotOptionsSpecified)
|
||||
List<(long, DatItem)> slotItemsList = [.. slotItems];
|
||||
newSlotOptions.UnionWith(slotItemsList
|
||||
.FindAll(i => i.Item2 is Slot)
|
||||
.FindAll(s => (s.Item2 as Slot)!.SlotOptionsSpecified)
|
||||
.SelectMany(s => (s.Item2 as Slot)!.GetFieldValue<SlotOption[]?>(Models.Metadata.Slot.SlotOptionKey)!)
|
||||
.Select(o => o.GetStringFieldValue(Models.Metadata.SlotOption.DevNameKey)!));
|
||||
|
||||
@@ -1785,8 +1787,8 @@ namespace SabreTools.DatFiles
|
||||
foreach ((long, DatItem) item in slotItems)
|
||||
{
|
||||
// If the parent machine doesn't already contain this item, add it
|
||||
if (!GetItemsForBucket(game)!
|
||||
.Any(i => i.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) == item.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey)
|
||||
if (!Array.Exists(items,
|
||||
i => i.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey) == item.Item2.GetStringFieldValue(Models.Metadata.DatItem.TypeKey)
|
||||
&& i.Item2.GetName() == item.Item2.GetName()))
|
||||
{
|
||||
// Set that we found new items
|
||||
@@ -1915,9 +1917,10 @@ namespace SabreTools.DatFiles
|
||||
{
|
||||
// Get the parent items and current machine name
|
||||
var parentItems = GetItemsForBucket(cloneOf!);
|
||||
if (parentItems == null)
|
||||
if (parentItems == null || parentItems.Length == 0)
|
||||
continue;
|
||||
|
||||
List<(long, DatItem)> parentItemslist = [.. parentItems];
|
||||
string? machineName = GetMachineForItem(item.Item1).Item2?.GetStringFieldValue(Models.Metadata.Machine.NameKey);
|
||||
|
||||
// Special disk handling
|
||||
@@ -1926,18 +1929,18 @@ namespace SabreTools.DatFiles
|
||||
string? mergeTag = disk.GetStringFieldValue(Models.Metadata.Disk.MergeKey);
|
||||
|
||||
// If the merge tag exists and the parent already contains it, skip
|
||||
if (mergeTag != null && parentItems
|
||||
.Where(i => i.Item2 is Disk)
|
||||
.Select(i => (i.Item2 as Disk)!.GetName())
|
||||
if (mergeTag != null && parentItemslist
|
||||
.FindAll(i => i.Item2 is Disk)
|
||||
.ConvertAll(i => (i.Item2 as Disk)!.GetName())
|
||||
.Contains(mergeTag))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// If the merge tag exists but the parent doesn't contain it, add to parent
|
||||
else if (mergeTag != null && !parentItems
|
||||
.Where(i => i.Item2 is Disk)
|
||||
.Select(i => (i.Item2 as Disk)!.GetName())
|
||||
else if (mergeTag != null && !parentItemslist
|
||||
.FindAll(i => i.Item2 is Disk)
|
||||
.ConvertAll(i => (i.Item2 as Disk)!.GetName())
|
||||
.Contains(mergeTag))
|
||||
{
|
||||
_itemToMachineMapping[item.Item1] = cloneOfMachine.Item1;
|
||||
@@ -1956,18 +1959,18 @@ namespace SabreTools.DatFiles
|
||||
else if (item.Item2 is Rom rom)
|
||||
{
|
||||
// If the merge tag exists and the parent already contains it, skip
|
||||
if (rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey) != null && parentItems
|
||||
.Where(i => i.Item2 is Rom)
|
||||
.Select(i => (i.Item2 as Rom)!.GetName())
|
||||
if (rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey) != null && parentItemslist
|
||||
.FindAll(i => i.Item2 is Rom)
|
||||
.ConvertAll(i => (i.Item2 as Rom)!.GetName())
|
||||
.Contains(rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// If the merge tag exists but the parent doesn't contain it, add to subfolder of parent
|
||||
else if (rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey) != null && !parentItems
|
||||
.Where(i => i.Item2 is Rom)
|
||||
.Select(i => (i.Item2 as Rom)!.GetName())
|
||||
else if (rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey) != null && !parentItemslist
|
||||
.FindAll(i => i.Item2 is Rom)
|
||||
.ConvertAll(i => (i.Item2 as Rom)!.GetName())
|
||||
.Contains(rom.GetStringFieldValue(Models.Metadata.Rom.MergeKey)))
|
||||
{
|
||||
if (subfolder)
|
||||
@@ -1989,7 +1992,7 @@ namespace SabreTools.DatFiles
|
||||
}
|
||||
|
||||
// All other that would be missing to subfolder of parent
|
||||
else if (Array.IndexOf(parentItems, item) == -1)
|
||||
else if (parentItemslist.IndexOf(item) == -1)
|
||||
{
|
||||
if (subfolder)
|
||||
item.Item2.SetName($"{machineName}\\{item.Item2.GetName()}");
|
||||
|
||||
@@ -462,10 +462,7 @@ namespace SabreTools.FileTypes.Archives
|
||||
BinaryWriter sw = new(outputStream);
|
||||
|
||||
// Write standard header and TGZ info
|
||||
byte[] data = TorrentGZHeader
|
||||
.Concat(baseFile.MD5!) // MD5
|
||||
.Concat(baseFile.CRC!) // CRC
|
||||
.ToArray();
|
||||
byte[] data = [.. TorrentGZHeader, .. baseFile.MD5!, .. baseFile.CRC!];
|
||||
sw.Write(data);
|
||||
sw.Write((ulong)(baseFile.Size ?? 0)); // Long size (Unsigned, Mirrored)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user