PKHeX/PKHeX.Core/Legality/RNG/ClassicEra/LeadEncounter.cs
Kurt 95fbf66a6e
Refactor: Gen3/4 Lead Encounters, property fixing (#4193)
In addition to the Method 1 (and other sibling PIDIV types) correlation, an encounter can only be triggered if the calls prior land on the Method {1} seed. The RNG community has dubbed these patterns as "Method J" (D/P/Pt), "Method K" (HG/SS), and "Method H" (Gen3, coined by yours truly). The basic gist of these is that they are pre-requisites, like the Shadow locks of Colosseum/XD. 

Rename/re-type a bunch of properties to get the codebase more in line with correct property names & more obvious underlying types.
2024-02-22 21:20:54 -06:00

28 lines
754 B
C#

using System.Collections.Generic;
namespace PKHeX.Core;
public readonly struct LeadEncounterQueue<TEnc>
{
public readonly List<LeadEncounter<TEnc>> List = new(0);
public LeadEncounterQueue() { }
public void Insert(LeadSeed lead, TEnc encounter) => Insert(new(lead, encounter));
public void Insert(LeadEncounter<TEnc> toInsert)
{
for (int i = 0; i < List.Count; i++)
{
if (!toInsert.IsBetterThan(List[i]))
continue;
List.Insert(i, toInsert);
return;
}
List.Add(toInsert);
}
}
public readonly record struct LeadEncounter<T>(LeadSeed Lead, T Encounter)
{
public bool IsBetterThan(LeadEncounter<T> other) => Lead.IsBetterThan(other.Lead);
}