PKHeX/PKHeX.Core/Editing/Bulk/Suggestion/ComplexSuggestion.cs
Kurt e2086d2a0d Misc tweaks
Allow pkm batch editor to take readonlyspan property names
concrete types over `default` for clarity
encounterverifier: use const values for egg levels for clarity
batchediting: fetch all properties only once
etrade4: reduce object size/init by having Contest as a property
2024-12-31 12:53:51 -06:00

34 lines
1.1 KiB
C#

using System;
using System.Diagnostics.CodeAnalysis;
namespace PKHeX.Core;
/// <inheritdoc cref="ISuggestModification"/>
public sealed class ComplexSuggestion(
[ConstantExpected] string Keyword,
Func<ReadOnlySpan<char>, ReadOnlySpan<char>, BatchInfo, ModifyResult> Action)
: ISuggestModification
{
public readonly string Keyword = Keyword;
public readonly Func<PKM, bool> Criteria = _ => true;
public readonly Func<ReadOnlySpan<char>, ReadOnlySpan<char>, BatchInfo, ModifyResult> Action = Action;
public ComplexSuggestion(
[ConstantExpected] string Keyword,
Func<PKM, bool> criteria,
Func<ReadOnlySpan<char>, ReadOnlySpan<char>, BatchInfo, ModifyResult> action) : this(Keyword, action)
{
Criteria = criteria;
}
public bool IsMatch(ReadOnlySpan<char> name, ReadOnlySpan<char> value, BatchInfo info)
{
return name.SequenceEqual(Keyword) && Criteria(info.Entity);
}
public ModifyResult Modify(ReadOnlySpan<char> name, ReadOnlySpan<char> value, BatchInfo info)
{
return Action(name, value, info);
}
}