Simpler invocations of common code

This commit is contained in:
Matt Nadareski
2025-05-02 13:56:40 -04:00
parent 0c3c09ee34
commit 0e052be2d0
2 changed files with 21 additions and 12 deletions

View File

@@ -15,6 +15,11 @@ namespace SabreTools.Core.Filter
/// </summary> /// </summary>
public readonly FilterObject[] Filters; public readonly FilterObject[] Filters;
/// <summary>
/// Cached item type names for filter selection
/// </summary>
private readonly string[] _datItemTypeNames = TypeHelper.GetDatItemTypeNames();
public FilterRunner(FilterObject[] filters) public FilterRunner(FilterObject[] filters)
{ {
Filters = filters; Filters = filters;
@@ -54,7 +59,7 @@ namespace SabreTools.Core.Filter
foreach (var filter in Filters) foreach (var filter in Filters)
{ {
// Skip filters not applicable to the item // Skip filters not applicable to the item
if (filter.Key.ItemName == "item" && Array.IndexOf(TypeHelper.GetDatItemTypeNames(), itemName) == -1) if (filter.Key.ItemName == "item" && Array.IndexOf(_datItemTypeNames, itemName) == -1)
continue; continue;
else if (filter.Key.ItemName != "item" && filter.Key.ItemName != itemName) else if (filter.Key.ItemName != "item" && filter.Key.ItemName != itemName)
continue; continue;

View File

@@ -203,19 +203,23 @@ namespace SabreTools.DatFiles
/// </summary> /// </summary>
public void ClearMarked() public void ClearMarked()
{ {
foreach (string key in SortedKeys) string[] keys = [.. SortedKeys];
#if NET452_OR_GREATER || NETCOREAPP
Parallel.ForEach(keys, Core.Globals.ParallelOptions, key =>
#elif NET40_OR_GREATER
Parallel.ForEach(keys, key =>
#else
foreach (var key in keys)
#endif
{ {
// Get the unfiltered list var list = GetItemsForBucket(key, filter: true);
List<DatItem> list = GetItemsForBucket(key, filter: false); RemoveBucket(key);
list.ForEach(item => AddItem(key, item));
foreach (DatItem datItem in list) #if NET40_OR_GREATER || NETCOREAPP
{ });
if (datItem.GetBoolFieldValue(DatItem.RemoveKey) != true) #else
continue;
RemoveItem(key, datItem);
}
} }
#endif
} }
/// <summary> /// <summary>