From 73c5e258b7faf7c548005a2da8326ee4c6ebf4d5 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 29 Jun 2024 10:58:30 -0500 Subject: [PATCH] Move Breeding.CanGameGenerateEggs to generator Already have a reference to it, no need to re-pivot off version. Remove old method for checking if a Daycare exists; not all daycares give eggs, and not all egg-producing games have daycares. --- PKHeX.Core/Legality/Breeding.cs | 20 ------------------- .../ByGeneration/EncounterGenerator1.cs | 1 + .../ByGeneration/EncounterGenerator2.cs | 1 + .../ByGeneration/EncounterGenerator3.cs | 1 + .../ByGeneration/EncounterGenerator3GC.cs | 1 + .../ByGeneration/EncounterGenerator4.cs | 1 + .../ByGeneration/EncounterGenerator5.cs | 1 + .../ByGeneration/EncounterGenerator6.cs | 1 + .../ByGeneration/EncounterGenerator7.cs | 1 + .../ByGeneration/EncounterGenerator7GG.cs | 1 + .../ByGeneration/EncounterGenerator7GO.cs | 1 + .../ByGeneration/EncounterGenerator8.cs | 1 + .../ByGeneration/EncounterGenerator8GO.cs | 1 + .../ByGeneration/EncounterGenerator8a.cs | 1 + .../ByGeneration/EncounterGenerator8b.cs | 1 + .../ByGeneration/EncounterGenerator9.cs | 1 + .../ByGeneration/Lump/EncounterGenerator12.cs | 1 + .../ByGeneration/Lump/EncounterGenerator7X.cs | 1 + .../ByGeneration/Lump/EncounterGenerator8X.cs | 1 + .../Lump/EncounterGeneratorDummy.cs | 1 + .../ByGeneration/Lump/EncounterGeneratorGO.cs | 1 + .../ByGeneration/Lump/IEncounterGenerator.cs | 1 + .../Moveset/EncounterMovesetGenerator.cs | 10 +++++----- 23 files changed, 26 insertions(+), 25 deletions(-) diff --git a/PKHeX.Core/Legality/Breeding.cs b/PKHeX.Core/Legality/Breeding.cs index 2cf9aee9b..78066378d 100644 --- a/PKHeX.Core/Legality/Breeding.cs +++ b/PKHeX.Core/Legality/Breeding.cs @@ -1,4 +1,3 @@ -using static PKHeX.Core.GameVersion; using static PKHeX.Core.Species; namespace PKHeX.Core; @@ -8,25 +7,6 @@ namespace PKHeX.Core; /// public static class Breeding { - /// - /// Checks if the game has a Daycare, and returns true if it does. - /// - /// Version ID to check for. - public static bool CanGameGenerateEggs(GameVersion game) => game switch - { - R or S or E or FR or LG => true, - D or P or Pt or HG or SS => true, - B or W or B2 or W2 => true, - X or Y or OR or AS => true, - SN or MN or US or UM => true, - GD or SI or C => true, - SW or SH or BD or SP => true, - SL or VL => true, - - GS => true, - _ => false, - }; - /// /// Species that have special handling for breeding. /// diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator1.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator1.cs index ac06cc209..f132d71ba 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator1.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator1.cs @@ -6,6 +6,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator1 : IEncounterGenerator { public static readonly EncounterGenerator1 Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator2.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator2.cs index 612b628a8..3a99ced25 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator2.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator2.cs @@ -7,6 +7,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator2 : IEncounterGenerator { public static readonly EncounterGenerator2 Instance = new(); + public bool CanGenerateEggs => true; public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3.cs index 6fcae19d6..825544e62 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3.cs @@ -7,6 +7,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator3 : IEncounterGenerator { public static readonly EncounterGenerator3 Instance = new(); + public bool CanGenerateEggs => true; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3GC.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3GC.cs index 9a6827f7d..7221766de 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3GC.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator3GC.cs @@ -6,6 +6,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator3GC : IEncounterGenerator { public static readonly EncounterGenerator3GC Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion __, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator4.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator4.cs index 13482648b..ffa9c43b9 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator4.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator4.cs @@ -7,6 +7,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator4 : IEncounterGenerator { public static readonly EncounterGenerator4 Instance = new(); + public bool CanGenerateEggs => true; // Utility internal static readonly PGT RangerManaphy = new() { Data = { [0] = 7, [8] = 1 } }; diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator5.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator5.cs index 831c14368..2500faf38 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator5.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator5.cs @@ -7,6 +7,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator5 : IEncounterGenerator { public static readonly EncounterGenerator5 Instance = new(); + public bool CanGenerateEggs => true; public IEnumerable GetEncounters(PKM pk, LegalInfo info) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator6.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator6.cs index 008b588b6..b5ccc09d9 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator6.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator6.cs @@ -7,6 +7,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator6 : IEncounterGenerator { public static readonly EncounterGenerator6 Instance = new(); + public bool CanGenerateEggs => true; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7.cs index a8508e160..3f52c9d58 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7.cs @@ -7,6 +7,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator7 : IEncounterGenerator { public static readonly EncounterGenerator7 Instance = new(); + public bool CanGenerateEggs => true; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GG.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GG.cs index 19da12437..bdc9321b2 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GG.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GG.cs @@ -8,6 +8,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator7GG : IEncounterGenerator { public static readonly EncounterGenerator7GG Instance = new(); + public bool CanGenerateEggs => true; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GO.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GO.cs index 06dc3b479..77e539fc0 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GO.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator7GO.cs @@ -5,6 +5,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator7GO : IEncounterGenerator { public static readonly EncounterGenerator7GO Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion __, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8.cs index 76cbd5fc2..86a84ae6b 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8.cs @@ -7,6 +7,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator8 : IEncounterGenerator { public static readonly EncounterGenerator8 Instance = new(); + public bool CanGenerateEggs => true; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8GO.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8GO.cs index 18f5f4fea..340f13f26 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8GO.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8GO.cs @@ -5,6 +5,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator8GO : IEncounterGenerator { public static readonly EncounterGenerator8GO Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion __, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8a.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8a.cs index 81f7ce069..4db0c8ed2 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8a.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8a.cs @@ -5,6 +5,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator8a : IEncounterGenerator { public static readonly EncounterGenerator8a Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetPossible(PKM _, EvoCriteria[] chain, GameVersion __, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8b.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8b.cs index b624d7c71..1de24a392 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8b.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator8b.cs @@ -7,6 +7,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator8b : IEncounterGenerator { public static readonly EncounterGenerator8b Instance = new(); + public bool CanGenerateEggs => true; public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator9.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator9.cs index 2086fe620..6b887d4b1 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator9.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/EncounterGenerator9.cs @@ -7,6 +7,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator9 : IEncounterGenerator { public static readonly EncounterGenerator9 Instance = new(); + public bool CanGenerateEggs => true; public IEnumerable GetEncounters(PKM pk, LegalInfo info) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator12.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator12.cs index 4b13d73cd..611079546 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator12.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator12.cs @@ -9,6 +9,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator12 : IEncounterGenerator { public static readonly EncounterGenerator12 Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetEncounters(PKM pk, LegalInfo info) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator7X.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator7X.cs index d3d644383..c1a8f0ba9 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator7X.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator7X.cs @@ -5,6 +5,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator7X : IEncounterGenerator { public static readonly EncounterGenerator7X Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) => pk.Version switch { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator8X.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator8X.cs index 1066c9557..a56d9a1f5 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator8X.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGenerator8X.cs @@ -6,6 +6,7 @@ namespace PKHeX.Core; public sealed class EncounterGenerator8X : IEncounterGenerator { public static readonly EncounterGenerator8X Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) => game switch { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorDummy.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorDummy.cs index 74f1c2406..00588760b 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorDummy.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorDummy.cs @@ -5,6 +5,7 @@ namespace PKHeX.Core; internal sealed class EncounterGeneratorDummy : IEncounterGenerator { public static readonly EncounterGeneratorDummy Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups) => []; public IEnumerable GetEncounters(PKM pk, EvoCriteria[] chain, LegalInfo info) => []; diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorGO.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorGO.cs index 61fa72a3f..b1563d2d6 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorGO.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/EncounterGeneratorGO.cs @@ -5,6 +5,7 @@ namespace PKHeX.Core; public sealed class EncounterGeneratorGO : IEncounterGenerator { public static readonly EncounterGeneratorGO Instance = new(); + public bool CanGenerateEggs => false; public IEnumerable GetEncounters(PKM pk, EvoCriteria[] chain, LegalInfo info) { diff --git a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/IEncounterGenerator.cs b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/IEncounterGenerator.cs index f5765ba3b..9262e98ae 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/IEncounterGenerator.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/ByGeneration/Lump/IEncounterGenerator.cs @@ -7,4 +7,5 @@ public interface IEncounterGenerator IEnumerable GetEncounters(PKM pk, EvoCriteria[] chain, LegalInfo info); IEnumerable GetPossible(PKM pk, EvoCriteria[] chain, GameVersion game, EncounterTypeGroup groups); + bool CanGenerateEggs { get; } } diff --git a/PKHeX.Core/Legality/Encounters/Generator/Moveset/EncounterMovesetGenerator.cs b/PKHeX.Core/Legality/Encounters/Generator/Moveset/EncounterMovesetGenerator.cs index a4ff8f229..16c18600a 100644 --- a/PKHeX.Core/Legality/Encounters/Generator/Moveset/EncounterMovesetGenerator.cs +++ b/PKHeX.Core/Legality/Encounters/Generator/Moveset/EncounterMovesetGenerator.cs @@ -259,11 +259,11 @@ private static IEnumerable GetPossibleOfType(PKM pk, ReadOnlyMem /// Moves which cannot be taught by the player. /// Origin possible evolution chain /// Specific version to iterate for. Necessary for retrieving possible Egg Moves. - /// + /// Encounter generator to use. /// A consumable list of possible encounters. private static IEnumerable GetEggs(PKM pk, ReadOnlyMemory needs, EvoCriteria[] chain, GameVersion version, IEncounterGenerator generator) { - if (!Breeding.CanGameGenerateEggs(version)) + if (!generator.CanGenerateEggs) yield break; // no eggs from these games var eggs = generator.GetPossible(pk, chain, version, Egg); @@ -303,7 +303,7 @@ private static IEnumerable GetGifts(PKM pk, ReadOnlyMemoryMoves which cannot be taught by the player. /// Origin possible evolution chain /// Specific version to iterate for. - /// + /// Encounter generator to use. /// A consumable list of possible encounters. private static IEnumerable GetStatic(PKM pk, ReadOnlyMemory needs, EvoCriteria[] chain, GameVersion version, IEncounterGenerator generator) { @@ -325,7 +325,7 @@ private static IEnumerable GetStatic(PKM pk, ReadOnlyMemoryMoves which cannot be taught by the player. /// Origin possible evolution chain /// Specific version to iterate for. - /// + /// Encounter generator to use. /// A consumable list of possible encounters. private static IEnumerable GetTrades(PKM pk, ReadOnlyMemory needs, EvoCriteria[] chain, GameVersion version, IEncounterGenerator generator) { @@ -347,7 +347,7 @@ private static IEnumerable GetTrades(PKM pk, ReadOnlyMemoryMoves which cannot be taught by the player. /// Origin possible evolution chain /// Origin version - /// + /// Encounter generator to use. /// A consumable list of possible encounters. private static IEnumerable GetSlots(PKM pk, ReadOnlyMemory needs, EvoCriteria[] chain, GameVersion version, IEncounterGenerator generator) {