From 03b8ceb5aba6574b869735db0383ffbf47fe83e6 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sun, 13 Feb 2022 11:02:22 -0800 Subject: [PATCH] Allow TypeSuggestion to operate on interfaces Add ganbaru clear/suggest, lgpe iawakened clear/suggest, hyperatrain/geolocation clear --- PKHeX.Core/Editing/Bulk/BatchMods.cs | 18 ++++++++++-------- .../Editing/Bulk/Suggestion/TypeSuggestion.cs | 10 ++++++---- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/PKHeX.Core/Editing/Bulk/BatchMods.cs b/PKHeX.Core/Editing/Bulk/BatchMods.cs index 31f09f9b0..00100ac34 100644 --- a/PKHeX.Core/Editing/Bulk/BatchMods.cs +++ b/PKHeX.Core/Editing/Bulk/BatchMods.cs @@ -9,14 +9,16 @@ public static class BatchMods { public static readonly List SuggestionMods = new() { - // PB7 Specific - new TypeSuggestion(nameof(PB7.Stat_CP), p => p.ResetCP()), - new TypeSuggestion(nameof(PB7.HeightAbsolute), p => p.HeightAbsolute = p.CalcHeightAbsolute), - new TypeSuggestion(nameof(PB7.WeightAbsolute), p => p.WeightAbsolute = p.CalcWeightAbsolute), - - // PA8 Specific - new TypeSuggestion(nameof(PA8.HeightAbsolute), p => p.HeightAbsolute = p.CalcHeightAbsolute), - new TypeSuggestion(nameof(PA8.WeightAbsolute), p => p.WeightAbsolute = p.CalcWeightAbsolute), + // Interface Specific + new TypeSuggestion(nameof(ICombatPower.Stat_CP), p => p.ResetCP()), + new TypeSuggestion(nameof(IScaledSizeValue.HeightAbsolute), p => p.ResetHeight()), + new TypeSuggestion(nameof(IScaledSizeValue.WeightAbsolute), p => p.ResetWeight()), + new TypeSuggestion(nameof(Extensions.HyperTrainClear), p => p.HyperTrainClear()), + new TypeSuggestion(nameof(Extensions.ClearGeoLocationData), p => p.ClearGeoLocationData()), + new TypeSuggestion(nameof(Extensions.AwakeningClear), p => p.AwakeningClear()), + new TypeSuggestion(nameof(Extensions.AwakeningMax), p => p.AwakeningMax()), + new TypeSuggestion(nameof(GanbaruExtensions.ClearGanbaruValues), p => p.ClearGanbaruValues()), + new TypeSuggestion(nameof(GanbaruExtensions.SetSuggestedGanbaruValues), p => p.SetSuggestedGanbaruValues((PKM)p)), // Date Copy new TypeSuggestion(nameof(PKM.EggMetDate), p => p.EggMetDate = p.MetDate), diff --git a/PKHeX.Core/Editing/Bulk/Suggestion/TypeSuggestion.cs b/PKHeX.Core/Editing/Bulk/Suggestion/TypeSuggestion.cs index 5e6699251..979fd9595 100644 --- a/PKHeX.Core/Editing/Bulk/Suggestion/TypeSuggestion.cs +++ b/PKHeX.Core/Editing/Bulk/Suggestion/TypeSuggestion.cs @@ -4,7 +4,7 @@ namespace PKHeX.Core { /// /// Specific (or not) type - public sealed class TypeSuggestion : ISuggestModification where T : PKM + public sealed class TypeSuggestion : ISuggestModification { public readonly string Keyword; public readonly Action Action; @@ -28,10 +28,12 @@ public bool IsMatch(string name, string value, BatchInfo info) public ModifyResult Modify(string name, string value, BatchInfo info) { - var pk = (T) info.Entity; - if (!Criteria(pk)) + var pk = info.Entity; + if (pk is not T x) return ModifyResult.Invalid; - Action(pk, value); + if (!Criteria(x)) + return ModifyResult.Invalid; + Action(x, value); return ModifyResult.Modified; } }