PKHeX/PKHeX.Core/Legality/Structures/SimpleTrainerInfo.cs
Kurt 88830e0d00
Update from .NET Framework 4.6 to .NET 7 (#3729)
Updates from net46->net7, dropping support for mono in favor of using the latest runtime (along with the performance/API improvements). Releases will be posted as 64bit only for now.

Refactors a good amount of internal API methods to be more performant and more customizable for future updates & fixes.

Adds functionality for Batch Editor commands to `>`, `<` and <=/>=

TID/SID properties renamed to TID16/SID16 for clarity; other properties exposed for Gen7 / display variants.

Main window has a new layout to account for DPI scaling (8 point grid)

Fixed: Tatsugiri and Paldean Tauros now output Showdown form names as Showdown expects
Changed: Gen9 species now interact based on the confirmed National Dex IDs (closes #3724)
Fixed: Pokedex set all no longer clears species with unavailable non-base forms (closes #3720)
Changed: Hyper Training suggestions now apply for level 50 in SV. (closes #3714)
Fixed: B2/W2 hatched egg met locations exclusive to specific versions are now explicitly checked (closes #3691)
Added: Properties for ribbon/mark count (closes #3659)
Fixed: Traded SV eggs are now checked correctly (closes #3692)
2023-01-21 20:02:33 -08:00

52 lines
1.7 KiB
C#

namespace PKHeX.Core;
/// <summary>
/// Simple record containing trainer data
/// </summary>
public sealed record SimpleTrainerInfo : ITrainerInfo, IRegionOrigin
{
public string OT { get; set; } = "PKHeX";
public ushort TID16 { get; set; } = 12345;
public ushort SID16 { get; set; } = 54321;
public int Gender { get; set; }
public int Language { get; set; } = (int)LanguageID.English;
public uint ID32 { get => (uint)(TID16 | (SID16 << 16)); set => (TID16, SID16) = ((ushort)value, (ushort)(value >> 16)); }
public TrainerIDFormat TrainerIDDisplayFormat => this.GetTrainerIDFormat();
// IRegionOrigin for generation 6/7
public byte ConsoleRegion { get; set; } = 1; // North America
public byte Region { get; set; } = 7; // California
public byte Country { get; set; } = 49; // USA
public int Game { get; }
public int Generation { get; init; } = PKX.Generation;
public EntityContext Context { get; init; } = PKX.Context;
public SimpleTrainerInfo(GameVersion game = PKX.Version)
{
Game = (int) game;
SanityCheckRegionOrigin(game);
}
private void SanityCheckRegionOrigin(GameVersion game)
{
if (GameVersion.Gen7b.Contains(game) || game.GetGeneration() >= 8)
this.ClearRegionOrigin();
}
public SimpleTrainerInfo(ITrainerInfo other) : this((GameVersion)other.Game)
{
OT = other.OT;
TID16 = other.TID16;
SID16 = other.SID16;
Gender = other.Gender;
Language = other.Language;
Generation = other.Generation;
Context = other.Context;
if (other is IRegionOrigin r)
r.CopyRegionOrigin(this);
SanityCheckRegionOrigin((GameVersion)Game);
}
}