mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-07-19 21:31:24 -05:00
Remove optional gameversion for enc generators
Simplifies some of the logic a little.
This commit is contained in:
parent
824e868efe
commit
ea87140aea
|
|
@ -43,7 +43,7 @@ public abstract record EncounterStatic(GameVersion Version) : IEncounterable, IM
|
|||
|
||||
private const string _name = "Static Encounter";
|
||||
public string Name => _name;
|
||||
public string LongName => Version == GameVersion.Any ? _name : $"{_name} ({Version})";
|
||||
public string LongName => $"{_name} ({Version})";
|
||||
public bool IsShiny => Shiny.IsShiny();
|
||||
|
||||
public bool IsRandomUnspecificForm => Form >= FormDynamic;
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ private static IEnumerable<IEncounterable> GenerateRawEncounters3CXD(PKM pkm)
|
|||
}
|
||||
|
||||
// Encounter Slots
|
||||
foreach (var z in GetValidWildEncounters34(pkm, chain))
|
||||
foreach (var z in GetValidWildEncounters(pkm, chain))
|
||||
{
|
||||
var match = z.GetMatchRating(pkm);
|
||||
if (match == PartialMatch)
|
||||
|
|
@ -167,7 +167,7 @@ private static IEnumerable<IEncounterable> GenerateRawEncounters3(PKM pkm, Legal
|
|||
|
||||
// Encounter Slots
|
||||
var slots = FrameFinder.GetFrames(info.PIDIV, pkm).ToList();
|
||||
foreach (var z in GetValidWildEncounters34(pkm, chain))
|
||||
foreach (var z in GetValidWildEncounters(pkm, chain))
|
||||
{
|
||||
var match = z.GetMatchRating(pkm);
|
||||
if (match == PartialMatch)
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ private static IEnumerable<IEncounterable> GenerateRawEncounters4(PKM pkm, Legal
|
|||
}
|
||||
|
||||
var slots = FrameFinder.GetFrames(info.PIDIV, pkm).ToList();
|
||||
foreach (var slot in GetValidWildEncounters34(pkm, chain))
|
||||
foreach (var slot in GetValidWildEncounters(pkm, chain))
|
||||
{
|
||||
var z = (EncounterSlot4)slot;
|
||||
var match = z.GetMatchRating(pkm);
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace PKHeX.Core
|
|||
{
|
||||
public static class EncounterSlotGenerator
|
||||
{
|
||||
public static IEnumerable<EncounterSlot> GetPossible(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource = Any)
|
||||
public static IEnumerable<EncounterSlot> GetPossible(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource)
|
||||
{
|
||||
var possibleAreas = GetAreasByGame(pkm, gameSource);
|
||||
return possibleAreas.SelectMany(z => z.GetSpecies(chain));
|
||||
|
|
@ -40,7 +40,7 @@ public static IEnumerable<EncounterSlot> GetPossible(PKM pkm, IReadOnlyList<EvoC
|
|||
SI => SlotsSV,
|
||||
C => SlotsC,
|
||||
|
||||
_ => GetEncounterSlots(pkm, gameSource),
|
||||
_ => GetEncounterTable(pkm, gameSource),
|
||||
};
|
||||
|
||||
private static IEnumerable<EncounterSlot> GetRawEncounterSlots(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource)
|
||||
|
|
@ -57,46 +57,20 @@ private static IEnumerable<EncounterSlot> GetRawEncounterSlots(PKM pkm, IReadOnl
|
|||
}
|
||||
}
|
||||
|
||||
public static IEnumerable<EncounterSlot> GetValidWildEncounters34(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource = Any)
|
||||
public static IEnumerable<EncounterSlot> GetValidWildEncounters12(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource)
|
||||
{
|
||||
if (gameSource == Any)
|
||||
gameSource = (GameVersion)pkm.Version;
|
||||
|
||||
var slots = GetRawEncounterSlots(pkm, chain, gameSource);
|
||||
|
||||
return slots; // defer deferrals to the method consuming this collection
|
||||
}
|
||||
|
||||
public static IEnumerable<EncounterSlot> GetValidWildEncounters12(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource = Any)
|
||||
{
|
||||
if (gameSource == Any)
|
||||
gameSource = (GameVersion)pkm.Version;
|
||||
|
||||
return GetRawEncounterSlots(pkm, chain, gameSource);
|
||||
}
|
||||
|
||||
public static IEnumerable<EncounterSlot> GetValidWildEncounters(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource = Any)
|
||||
public static IEnumerable<EncounterSlot> GetValidWildEncounters(PKM pkm, IReadOnlyList<EvoCriteria> chain)
|
||||
{
|
||||
if (gameSource == Any)
|
||||
gameSource = (GameVersion)pkm.Version;
|
||||
|
||||
var gameSource = (GameVersion)pkm.Version;
|
||||
return GetRawEncounterSlots(pkm, chain, gameSource);
|
||||
}
|
||||
|
||||
public static IEnumerable<EncounterArea> GetEncounterSlots(PKM pkm, GameVersion gameSource = Any)
|
||||
private static IEnumerable<EncounterArea> GetEncounterAreas(PKM pkm, GameVersion gameSource)
|
||||
{
|
||||
if (gameSource == Any)
|
||||
gameSource = (GameVersion)pkm.Version;
|
||||
|
||||
return GetEncounterTable(pkm, gameSource);
|
||||
}
|
||||
|
||||
private static IEnumerable<EncounterArea> GetEncounterAreas(PKM pkm, GameVersion gameSource = Any)
|
||||
{
|
||||
if (gameSource == Any)
|
||||
gameSource = (GameVersion)pkm.Version;
|
||||
|
||||
var slots = GetEncounterSlots(pkm, gameSource: gameSource);
|
||||
var slots = GetEncounterTable(pkm, gameSource);
|
||||
bool noMet = !pkm.HasOriginalMetLocation || (pkm.Format == 2 && gameSource != C);
|
||||
if (noMet)
|
||||
return slots;
|
||||
|
|
@ -106,7 +80,7 @@ private static IEnumerable<EncounterArea> GetEncounterAreas(PKM pkm, GameVersion
|
|||
|
||||
internal static EncounterSlot? GetCaptureLocation(PKM pkm, IReadOnlyList<EvoCriteria> chain)
|
||||
{
|
||||
return GetPossible(pkm, chain)
|
||||
return GetPossible(pkm, chain, (GameVersion)pkm.Version)
|
||||
.OrderBy(z => !chain.Any(s => s.Species == z.Species && s.Form == z.Form))
|
||||
.ThenBy(z => z.LevelMin)
|
||||
.FirstOrDefault();
|
||||
|
|
@ -157,7 +131,7 @@ private static IEnumerable<EncounterArea> GetEncounterAreas(PKM pkm, GameVersion
|
|||
_ => Array.Empty<EncounterArea>(),
|
||||
};
|
||||
|
||||
private static IEnumerable<EncounterArea> GetEncounterTableGSC(PKM pkm)
|
||||
private static EncounterArea[] GetEncounterTableGSC(PKM pkm)
|
||||
{
|
||||
if (!ParseSettings.AllowGen2Crystal(pkm))
|
||||
return SlotsGS;
|
||||
|
|
|
|||
|
|
@ -22,11 +22,8 @@ namespace PKHeX.Core
|
|||
{
|
||||
public static class EncounterStaticGenerator
|
||||
{
|
||||
public static IEnumerable<EncounterStatic> GetPossible(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource = Any)
|
||||
public static IEnumerable<EncounterStatic> GetPossible(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource)
|
||||
{
|
||||
if (gameSource == Any)
|
||||
gameSource = (GameVersion)pkm.Version;
|
||||
|
||||
var table = gameSource switch
|
||||
{
|
||||
RD or GN or BU or YW => StaticRBY.Where(z => z.Version.Contains(gameSource)),
|
||||
|
|
@ -51,16 +48,15 @@ static IEnumerable<EncounterStatic> GetEvents(GameVersion g)
|
|||
return table.Where(e => chain.Any(d => d.Species == e.Species));
|
||||
}
|
||||
|
||||
public static IEnumerable<EncounterStatic> GetValidStaticEncounter(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource = Any)
|
||||
public static IEnumerable<EncounterStatic> GetValidStaticEncounter(PKM pkm, IReadOnlyList<EvoCriteria> chain)
|
||||
{
|
||||
if (gameSource == Any)
|
||||
gameSource = (GameVersion)pkm.Version;
|
||||
return GetValidStaticEncounter(pkm, chain, (GameVersion)pkm.Version);
|
||||
}
|
||||
|
||||
public static IEnumerable<EncounterStatic> GetValidStaticEncounter(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource)
|
||||
{
|
||||
var table = GetEncounterStaticTable(pkm, gameSource);
|
||||
var poss = table.Where(e => chain.Any(d => d.Species == e.Species));
|
||||
|
||||
// Back Check against pkm
|
||||
return GetMatchingStaticEncounters(pkm, poss, chain);
|
||||
return GetMatchingStaticEncounters(pkm, table, chain);
|
||||
}
|
||||
|
||||
public static IEnumerable<EncounterStatic> GetValidGBGifts(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion gameSource)
|
||||
|
|
@ -142,7 +138,7 @@ private static int GetVCSpecies(IReadOnlyList<EvoCriteria> chain, PKM pkm, int m
|
|||
case 2:
|
||||
return EncounterStatic7.GetVC2(MaxSpeciesID_2, (byte)pkm.Met_Level);
|
||||
default:
|
||||
return GetPossible(pkm, chain)
|
||||
return GetPossible(pkm, chain, (GameVersion)pkm.Version)
|
||||
.OrderBy(z => !chain.Any(s => s.Species == z.Species && s.Form == z.Form))
|
||||
.ThenBy(z => z.LevelMin)
|
||||
.FirstOrDefault();
|
||||
|
|
|
|||
|
|
@ -42,22 +42,21 @@ public static IEnumerable<EncounterTradeGB> GetValidEncounterTradesVC(PKM pkm, I
|
|||
}
|
||||
}
|
||||
|
||||
public static IEnumerable<EncounterTrade> GetValidEncounterTrades(PKM pkm, IReadOnlyList<EvoCriteria> chain, GameVersion game = Any)
|
||||
public static IEnumerable<EncounterTrade> GetValidEncounterTrades(PKM pkm, IReadOnlyList<EvoCriteria> chain)
|
||||
{
|
||||
if (game == Any)
|
||||
game = (GameVersion)pkm.Version;
|
||||
|
||||
// Pre-filter for some language scenarios
|
||||
int lang = pkm.Language;
|
||||
if (lang == (int)LanguageID.UNUSED_6) // invalid language
|
||||
return Array.Empty<EncounterTrade>();
|
||||
if (lang == (int)LanguageID.Hacked && !EncounterTrade5PID.IsValidMissingLanguage(pkm)) // Japanese trades in BW have no language ID
|
||||
return Array.Empty<EncounterTrade>();
|
||||
|
||||
var poss = GetPossible(chain, game);
|
||||
return GetValidEncounterTrades(pkm, chain, poss);
|
||||
var game = (GameVersion)pkm.Version;
|
||||
var table = GetTable(game);
|
||||
return GetValidEncounterTrades(pkm, chain, table);
|
||||
}
|
||||
|
||||
private static IEnumerable<EncounterTrade> GetValidEncounterTrades(PKM pkm, IReadOnlyList<EvoCriteria> chain, IEnumerable<EncounterTrade> poss)
|
||||
private static IEnumerable<EncounterTrade> GetValidEncounterTrades(PKM pkm, IReadOnlyList<EvoCriteria> chain, EncounterTrade[] poss)
|
||||
{
|
||||
foreach (var p in poss)
|
||||
{
|
||||
|
|
@ -81,7 +80,7 @@ private static IEnumerable<EncounterTradeGB> GetTableVC(GameVersion game)
|
|||
return Array.Empty<EncounterTradeGB>();
|
||||
}
|
||||
|
||||
private static IEnumerable<EncounterTrade> GetTable(GameVersion game) => game switch
|
||||
private static EncounterTrade[] GetTable(GameVersion game) => game switch
|
||||
{
|
||||
R or S or E => Encounters3.TradeGift_RSE,
|
||||
FR or LG => Encounters3.TradeGift_FRLG,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user