mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Prefilter on modes that don't rely on devices or slots
This commit is contained in:
@@ -4,7 +4,7 @@ using System.IO;
|
|||||||
#if NET40_OR_GREATER || NETCOREAPP
|
#if NET40_OR_GREATER || NETCOREAPP
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
#endif
|
#endif
|
||||||
using SabreTools.Core.Tools;
|
using SabreTools.Core.Filter;
|
||||||
using SabreTools.DatFiles;
|
using SabreTools.DatFiles;
|
||||||
using SabreTools.DatItems;
|
using SabreTools.DatItems;
|
||||||
using SabreTools.IO;
|
using SabreTools.IO;
|
||||||
@@ -39,9 +39,10 @@ namespace SabreTools.DatTools
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="datFile">Current DatFile object to run operations on</param>
|
/// <param name="datFile">Current DatFile object to run operations on</param>
|
||||||
/// <param name="useTags">True if DatFile tags override splitting, false otherwise</param>
|
/// <param name="useTags">True if DatFile tags override splitting, false otherwise</param>
|
||||||
|
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||||
/// <param name="throwOnError">True if the error that is thrown should be thrown back to the caller, false otherwise</param>
|
/// <param name="throwOnError">True if the error that is thrown should be thrown back to the caller, false otherwise</param>
|
||||||
/// <returns>True if the DatFile was split, false on error</returns>
|
/// <returns>True if the DatFile was split, false on error</returns>
|
||||||
public bool ApplySplitting(DatFile datFile, bool useTags, bool throwOnError = false)
|
public bool ApplySplitting(DatFile datFile, bool useTags, FilterRunner? filterRunner = null, bool throwOnError = false)
|
||||||
{
|
{
|
||||||
InternalStopwatch watch = new("Applying splitting to DAT");
|
InternalStopwatch watch = new("Applying splitting to DAT");
|
||||||
|
|
||||||
@@ -59,17 +60,29 @@ namespace SabreTools.DatTools
|
|||||||
// No-op
|
// No-op
|
||||||
break;
|
break;
|
||||||
case MergingFlag.Split:
|
case MergingFlag.Split:
|
||||||
|
if (filterRunner != null)
|
||||||
|
datFile.ExecuteFilters(filterRunner);
|
||||||
|
|
||||||
datFile.ApplySplit();
|
datFile.ApplySplit();
|
||||||
break;
|
break;
|
||||||
case MergingFlag.Merged:
|
case MergingFlag.Merged:
|
||||||
|
if (filterRunner != null)
|
||||||
|
datFile.ExecuteFilters(filterRunner);
|
||||||
|
|
||||||
datFile.ApplyMerged();
|
datFile.ApplyMerged();
|
||||||
break;
|
break;
|
||||||
case MergingFlag.NonMerged:
|
case MergingFlag.NonMerged:
|
||||||
|
if (filterRunner != null)
|
||||||
|
datFile.ExecuteFilters(filterRunner);
|
||||||
|
|
||||||
datFile.ApplyNonMerged();
|
datFile.ApplyNonMerged();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Nonstandard
|
// Nonstandard
|
||||||
case MergingFlag.FullMerged:
|
case MergingFlag.FullMerged:
|
||||||
|
if (filterRunner != null)
|
||||||
|
datFile.ExecuteFilters(filterRunner);
|
||||||
|
|
||||||
datFile.ApplyFullyMerged();
|
datFile.ApplyFullyMerged();
|
||||||
break;
|
break;
|
||||||
case MergingFlag.DeviceNonMerged:
|
case MergingFlag.DeviceNonMerged:
|
||||||
|
|||||||
@@ -577,7 +577,7 @@ Reset the internal state: reset();";
|
|||||||
|
|
||||||
// Apply the merging flag
|
// Apply the merging flag
|
||||||
MergeSplit splitter = new() { SplitType = mergingFlag };
|
MergeSplit splitter = new() { SplitType = mergingFlag };
|
||||||
splitter.ApplySplitting(batchState.DatFile, false, false);
|
splitter.ApplySplitting(batchState.DatFile, useTags: false, throwOnError: false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ namespace SabreTools.Features
|
|||||||
// Perform additional processing steps
|
// Perform additional processing steps
|
||||||
Extras!.ApplyExtras(datdata);
|
Extras!.ApplyExtras(datdata);
|
||||||
Extras!.ApplyExtrasDB(datdata);
|
Extras!.ApplyExtrasDB(datdata);
|
||||||
Splitter!.ApplySplitting(datdata, useTags: false);
|
Splitter!.ApplySplitting(datdata, useTags: false, filterRunner: FilterRunner);
|
||||||
datdata.ExecuteFilters(FilterRunner!);
|
datdata.ExecuteFilters(FilterRunner!);
|
||||||
Cleaner!.ApplyCleaning(datdata);
|
Cleaner!.ApplyCleaning(datdata);
|
||||||
Remover!.ApplyRemovals(datdata);
|
Remover!.ApplyRemovals(datdata);
|
||||||
|
|||||||
@@ -537,7 +537,7 @@ namespace SabreTools.Features
|
|||||||
{
|
{
|
||||||
Extras!.ApplyExtras(datFile);
|
Extras!.ApplyExtras(datFile);
|
||||||
Extras!.ApplyExtrasDB(datFile);
|
Extras!.ApplyExtrasDB(datFile);
|
||||||
Splitter!.ApplySplitting(datFile, useTags: false);
|
Splitter!.ApplySplitting(datFile, useTags: false, filterRunner: FilterRunner);
|
||||||
datFile.ExecuteFilters(FilterRunner!);
|
datFile.ExecuteFilters(FilterRunner!);
|
||||||
Cleaner!.ApplyCleaning(datFile);
|
Cleaner!.ApplyCleaning(datFile);
|
||||||
Remover!.ApplyRemovals(datFile);
|
Remover!.ApplyRemovals(datFile);
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ namespace SabreTools.Features
|
|||||||
// Perform additional processing steps
|
// Perform additional processing steps
|
||||||
Extras!.ApplyExtras(datdata);
|
Extras!.ApplyExtras(datdata);
|
||||||
Extras!.ApplyExtrasDB(datdata);
|
Extras!.ApplyExtrasDB(datdata);
|
||||||
Splitter!.ApplySplitting(datdata, useTags: true);
|
Splitter!.ApplySplitting(datdata, useTags: true, filterRunner: FilterRunner);
|
||||||
datdata.ExecuteFilters(FilterRunner!);
|
datdata.ExecuteFilters(FilterRunner!);
|
||||||
Cleaner!.ApplyCleaning(datdata);
|
Cleaner!.ApplyCleaning(datdata);
|
||||||
Remover!.ApplyRemovals(datdata);
|
Remover!.ApplyRemovals(datdata);
|
||||||
@@ -128,7 +128,7 @@ namespace SabreTools.Features
|
|||||||
// Perform additional processing steps
|
// Perform additional processing steps
|
||||||
Extras!.ApplyExtras(datdata);
|
Extras!.ApplyExtras(datdata);
|
||||||
Extras!.ApplyExtrasDB(datdata);
|
Extras!.ApplyExtrasDB(datdata);
|
||||||
Splitter!.ApplySplitting(datdata, useTags: true);
|
Splitter!.ApplySplitting(datdata, useTags: true, filterRunner: FilterRunner);
|
||||||
datdata.ExecuteFilters(FilterRunner!);
|
datdata.ExecuteFilters(FilterRunner!);
|
||||||
Cleaner!.ApplyCleaning(datdata);
|
Cleaner!.ApplyCleaning(datdata);
|
||||||
Remover!.ApplyRemovals(datdata);
|
Remover!.ApplyRemovals(datdata);
|
||||||
|
|||||||
Reference in New Issue
Block a user