mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-08-28 07:16:22 -05:00
Add template -> pkm method
fix signature if no versions are provided (empty params is [0], not null)
This commit is contained in:
@@ -14,6 +14,32 @@ public static class EncounterMovesetGenerator
|
||||
/// </summary>
|
||||
private static readonly GameVersion[] Versions = ((GameVersion[]) Enum.GetValues(typeof(GameVersion))).Where(z => z < GameVersion.RB && z > 0).Reverse().ToArray();
|
||||
|
||||
/// <summary>
|
||||
/// Gets possible <see cref="PKM"/> objects that allow all moves requested to be learned.
|
||||
/// </summary>
|
||||
/// <param name="pk">Rough Pokémon data which contains the requested species, gender, and form.</param>
|
||||
/// <param name="info">Trainer information of the receiver.</param>
|
||||
/// <param name="moves">Moves that the resulting <see cref="IEncounterable"/> must be able to learn.</param>
|
||||
/// <param name="versions">Any specific version(s) to iterate for. If left blank, all will be checked.</param>
|
||||
/// <returns>A consumable <see cref="PKM"/> list of possible results.</returns>
|
||||
public static IEnumerable<PKM> GeneratePKMs(PKM pk, ITrainerInfo info, int[] moves = null, params GameVersion[] versions)
|
||||
{
|
||||
var m = moves ?? pk.Moves;
|
||||
var vers = versions?.Length >= 1 ? versions : Versions.Where(z => z <= (GameVersion) pk.MaxGameID);
|
||||
foreach (var ver in vers)
|
||||
{
|
||||
var encs = GenerateVersionEncounters(pk, m, ver);
|
||||
foreach (var enc in encs)
|
||||
{
|
||||
var result = enc.ConvertToPKM(info);
|
||||
result.Version = (int)ver; // some encounters don't have explicit versions defined, provide one
|
||||
if (result.GenNumber <= 2)
|
||||
result.SID = 0;
|
||||
yield return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets possible encounters that allow all moves requested to be learned.
|
||||
/// </summary>
|
||||
@@ -23,7 +49,9 @@ public static class EncounterMovesetGenerator
|
||||
/// <returns>A consumable <see cref="IEncounterable"/> list of possible encounters.</returns>
|
||||
public static IEnumerable<IEncounterable> GenerateEncounters(PKM pk, int[] moves = null, params GameVersion[] versions)
|
||||
{
|
||||
return (versions ?? Versions).SelectMany(ver => GenerateVersionEncounters(pk, moves ?? pk.Moves, ver));
|
||||
var m = moves ?? pk.Moves;
|
||||
var vers = versions?.Length >= 1 ? versions : Versions.Where(z => z <= (GameVersion)pk.MaxGameID);
|
||||
return vers.SelectMany(ver => GenerateVersionEncounters(pk, m, ver));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -37,6 +37,10 @@ public void SimulatorGetEncounters()
|
||||
|
||||
var la = new LegalityAnalysis(pk);
|
||||
Assert.IsTrue(la.Valid);
|
||||
|
||||
var test = EncounterMovesetGenerator.GeneratePKMs(pk7, info);
|
||||
var la2 = new LegalityAnalysis(test.First());
|
||||
Assert.IsTrue(la2.Valid);
|
||||
}
|
||||
|
||||
private const string SetGlaceonUSUMTutor =
|
||||
|
||||
Reference in New Issue
Block a user