PKHeX/PKHeX.Core/Legality/Encounters/IEncounterTemplate.cs
Kurt 4e1276a954 -8 bytes from each encounter template
saves about ~1MB RAM savings (>=179,142 objects)
2022-03-06 23:25:47 -08:00

35 lines
1.1 KiB
C#

namespace PKHeX.Core
{
public interface IEncounterTemplate : ISpeciesForm, IVersion, IGeneration, IShiny
{
/// <summary>
/// Indicates if the encounter originated as an egg.
/// </summary>
bool EggEncounter { get; }
/// <summary>
/// Minimum level for the encounter.
/// </summary>
byte LevelMin { get; }
byte LevelMax { get; }
}
public static partial class Extensions
{
private static bool IsWithinEncounterRange(this IEncounterTemplate encounter, int lvl)
{
return encounter.LevelMin <= lvl && lvl <= encounter.LevelMax;
}
public static bool IsWithinEncounterRange(this IEncounterTemplate encounter, PKM pkm)
{
if (!pkm.HasOriginalMetLocation)
return encounter.IsWithinEncounterRange(pkm.CurrentLevel);
if (encounter.EggEncounter)
return pkm.CurrentLevel == encounter.LevelMin;
if (encounter is MysteryGift g)
return pkm.CurrentLevel == g.Level;
return pkm.CurrentLevel == pkm.Met_Level;
}
}
}