mirror of
https://github.com/kwsch/PKHeX
synced 2024-09-20 14:21:59 +00:00
Refactor savefile tid/sid to int
can now use TrainerID editor control on a savefile... soon?
This commit is contained in:
parent
43507a5ae5
commit
71faaee31c
15 changed files with 63 additions and 59 deletions
|
@ -3,11 +3,9 @@ namespace PKHeX.Core
|
|||
/// <summary>
|
||||
/// Minimal Trainer Information necessary for generating a <see cref="PKM"/>.
|
||||
/// </summary>
|
||||
public interface ITrainerInfo
|
||||
public interface ITrainerInfo : ITrainerID
|
||||
{
|
||||
string OT { get; }
|
||||
ushort TID { get; }
|
||||
ushort SID { get; }
|
||||
int Gender { get; }
|
||||
int Game { get; }
|
||||
int Language { get; }
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
public class SimpleTrainerInfo : ITrainerInfo
|
||||
{
|
||||
public string OT { get; set; } = "PKHeX";
|
||||
public ushort TID { get; set; } = 12345;
|
||||
public ushort SID { get; set; } = 54321;
|
||||
public int TID { get; set; } = 12345;
|
||||
public int SID { get; set; } = 54321;
|
||||
public int Gender { get; set; } = 0;
|
||||
public int Language { get; set; } = (int)LanguageID.English;
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace PKHeX.Core
|
|||
/// <summary>
|
||||
/// Object representing a <see cref="PKM"/>'s data and derived properties.
|
||||
/// </summary>
|
||||
public abstract class PKM : IContestStats
|
||||
public abstract class PKM : IContestStats, ITrainerID
|
||||
{
|
||||
public static readonly string[] Extensions = PKX.GetPKMExtensions();
|
||||
public abstract int SIZE_PARTY { get; }
|
||||
|
|
11
PKHeX.Core/PKM/Shared/ITrainerID.cs
Normal file
11
PKHeX.Core/PKM/Shared/ITrainerID.cs
Normal file
|
@ -0,0 +1,11 @@
|
|||
namespace PKHeX.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Object has Trainer ownership
|
||||
/// </summary>
|
||||
public interface ITrainerID
|
||||
{
|
||||
int TID { get; set; }
|
||||
int SID { get; set; }
|
||||
}
|
||||
}
|
|
@ -249,16 +249,12 @@ namespace PKHeX.Core
|
|||
get => 0;
|
||||
set { }
|
||||
}
|
||||
public override ushort TID
|
||||
public override int TID
|
||||
{
|
||||
get => BigEndian.ToUInt16(Data, Japanese ? 0x25FB : 0x2605);
|
||||
set => BigEndian.GetBytes(value).CopyTo(Data, Japanese ? 0x25FB : 0x2605);
|
||||
}
|
||||
public override ushort SID
|
||||
{
|
||||
get => 0;
|
||||
set { }
|
||||
set => BigEndian.GetBytes((ushort)value).CopyTo(Data, Japanese ? 0x25FB : 0x2605);
|
||||
}
|
||||
public override int SID { get => 0; set { } }
|
||||
|
||||
public bool Yellow => Starter == 0x54; // Pikachu
|
||||
public int Starter => Data[Japanese ? 0x29B9 : 0x29C3];
|
||||
|
|
|
@ -282,15 +282,11 @@ namespace PKHeX.Core
|
|||
Data[Offsets.Palette] = (byte) value;
|
||||
}
|
||||
}
|
||||
public override ushort TID
|
||||
public override int TID
|
||||
{
|
||||
get => BigEndian.ToUInt16(Data, Offsets.Trainer1); set => BigEndian.GetBytes(value).CopyTo(Data, Offsets.Trainer1);
|
||||
}
|
||||
public override ushort SID
|
||||
{
|
||||
get => 0;
|
||||
set { }
|
||||
get => BigEndian.ToUInt16(Data, Offsets.Trainer1); set => BigEndian.GetBytes((ushort)value).CopyTo(Data, Offsets.Trainer1);
|
||||
}
|
||||
public override int SID { get => 0; set { } }
|
||||
public override int PlayedHours
|
||||
{
|
||||
get => BigEndian.ToUInt16(Data, Offsets.TimePlayed);
|
||||
|
|
|
@ -287,15 +287,15 @@ namespace PKHeX.Core
|
|||
get => Data[BlockOfs[0] + 8];
|
||||
set => Data[BlockOfs[0] + 8] = (byte)value;
|
||||
}
|
||||
public override ushort TID
|
||||
public override int TID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, BlockOfs[0] + 0xA + 0);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, BlockOfs[0] + 0xA + 0);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, BlockOfs[0] + 0xA + 0);
|
||||
}
|
||||
public override ushort SID
|
||||
public override int SID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, BlockOfs[0] + 0xC);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, BlockOfs[0] + 0xC);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, BlockOfs[0] + 0xC);
|
||||
}
|
||||
public override int PlayedHours
|
||||
{
|
||||
|
|
|
@ -351,8 +351,8 @@ namespace PKHeX.Core
|
|||
// Trainer Info (offset 0x78, length 0xB18, end @ 0xB90)
|
||||
public override string OT { get => GetString(0x78, 20); set { SetString(value, 10).CopyTo(Data, 0x78); OT2 = value; } }
|
||||
private string OT2 { get => GetString(0x8C, 20); set => SetString(value, 10).CopyTo(Data, 0x8C); }
|
||||
public override ushort SID { get => BigEndian.ToUInt16(Data, 0xA4); set => BigEndian.GetBytes(value).CopyTo(Data, 0xA4); }
|
||||
public override ushort TID { get => BigEndian.ToUInt16(Data, 0xA6); set => BigEndian.GetBytes(value).CopyTo(Data, 0xA6); }
|
||||
public override int SID { get => BigEndian.ToUInt16(Data, 0xA4); set => BigEndian.GetBytes((ushort)value).CopyTo(Data, 0xA4); }
|
||||
public override int TID { get => BigEndian.ToUInt16(Data, 0xA6); set => BigEndian.GetBytes((ushort)value).CopyTo(Data, 0xA6); }
|
||||
|
||||
public override int Gender { get => Data[0xAF8]; set => Data[0xAF8] = (byte)value; }
|
||||
public override uint Money { get => BigEndian.ToUInt32(Data, 0xAFC); set => BigEndian.GetBytes(value).CopyTo(Data, 0xAFC); }
|
||||
|
|
|
@ -237,8 +237,8 @@ namespace PKHeX.Core
|
|||
// Trainer Info
|
||||
public override GameVersion Version { get => GameVersion.XD; protected set { } }
|
||||
public override string OT { get => GetString(Trainer1 + 0x00, 20); set => SetString(value, 10).CopyTo(Data, Trainer1 + 0x00); }
|
||||
public override ushort SID { get => BigEndian.ToUInt16(Data, Trainer1 + 0x2C); set => BigEndian.GetBytes(value).CopyTo(Data, Trainer1 + 0x2C); }
|
||||
public override ushort TID { get => BigEndian.ToUInt16(Data, Trainer1 + 0x2E); set => BigEndian.GetBytes(value).CopyTo(Data, Trainer1 + 0x2E); }
|
||||
public override int SID { get => BigEndian.ToUInt16(Data, Trainer1 + 0x2C); set => BigEndian.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0x2C); }
|
||||
public override int TID { get => BigEndian.ToUInt16(Data, Trainer1 + 0x2E); set => BigEndian.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0x2E); }
|
||||
|
||||
public override int Gender { get => Data[Trainer1 + 0x8E0]; set => Data[Trainer1 + 0x8E0] = (byte)value; }
|
||||
public override uint Money { get => BigEndian.ToUInt32(Data, Trainer1 + 0x8E4); set => BigEndian.GetBytes(value).CopyTo(Data, Trainer1 + 0x8E4); }
|
||||
|
|
|
@ -340,15 +340,15 @@ namespace PKHeX.Core
|
|||
get => GetString(Trainer1, 16);
|
||||
set => SetString(value, OTLength).CopyTo(Data, Trainer1);
|
||||
}
|
||||
public override ushort TID
|
||||
public override int TID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, Trainer1 + 0x10 + 0);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, Trainer1 + 0x10 + 0);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0x10 + 0);
|
||||
}
|
||||
public override ushort SID
|
||||
public override int SID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, Trainer1 + 0x12);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, Trainer1 + 0x12);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0x12);
|
||||
}
|
||||
public override uint Money
|
||||
{
|
||||
|
|
|
@ -310,15 +310,15 @@ namespace PKHeX.Core
|
|||
get => GetString(Trainer1 + 0x4, 16);
|
||||
set => SetString(value, OTLength).CopyTo(Data, Trainer1 + 0x4);
|
||||
}
|
||||
public override ushort TID
|
||||
public override int TID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, Trainer1 + 0x14 + 0);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, Trainer1 + 0x14 + 0);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0x14 + 0);
|
||||
}
|
||||
public override ushort SID
|
||||
public override int SID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, Trainer1 + 0x14 + 2);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, Trainer1 + 0x14 + 2);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, Trainer1 + 0x14 + 2);
|
||||
}
|
||||
public override uint Money
|
||||
{
|
||||
|
|
|
@ -247,15 +247,15 @@ namespace PKHeX.Core
|
|||
}
|
||||
|
||||
// Player Information
|
||||
public override ushort TID
|
||||
public override int TID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, TrainerCard + 0);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, TrainerCard + 0);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, TrainerCard + 0);
|
||||
}
|
||||
public override ushort SID
|
||||
public override int SID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, TrainerCard + 2);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, TrainerCard + 2);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, TrainerCard + 2);
|
||||
}
|
||||
public override int Game
|
||||
{
|
||||
|
|
|
@ -280,15 +280,15 @@ namespace PKHeX.Core
|
|||
}
|
||||
|
||||
// Player Information
|
||||
public override ushort TID
|
||||
public override int TID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, TrainerCard + 0);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, TrainerCard + 0);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, TrainerCard + 0);
|
||||
}
|
||||
public override ushort SID
|
||||
public override int SID
|
||||
{
|
||||
get => BitConverter.ToUInt16(Data, TrainerCard + 2);
|
||||
set => BitConverter.GetBytes(value).CopyTo(Data, TrainerCard + 2);
|
||||
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, TrainerCard + 2);
|
||||
}
|
||||
public override int Game
|
||||
{
|
||||
|
|
|
@ -362,8 +362,8 @@ namespace PKHeX.Core
|
|||
public virtual int Gender { get; set; }
|
||||
public virtual int Language { get => -1; set { } }
|
||||
public virtual int Game { get => -1; set { } }
|
||||
public virtual ushort TID { get; set; }
|
||||
public virtual ushort SID { get; set; }
|
||||
public virtual int TID { get; set; }
|
||||
public virtual int SID { get; set; }
|
||||
public int TrainerID7 => (int)((uint)(TID | (SID << 16)) % 1000000);
|
||||
public virtual string OT { get; set; } = "PKHeX";
|
||||
public virtual int PlayedHours { get; set; }
|
||||
|
|
|
@ -11,39 +11,42 @@ namespace PKHeX.WinForms.Controls
|
|||
public event EventHandler UpdatedID;
|
||||
|
||||
private int Format = -1;
|
||||
private PKM pkm;
|
||||
private ITrainerID Trainer;
|
||||
private readonly ToolTip TSVTooltip = new ToolTip();
|
||||
|
||||
public void UpdateTSV()
|
||||
{
|
||||
if (!(Trainer is PKM pkm))
|
||||
return;
|
||||
string IDstr = $"TSV: {pkm.TSV:d4}";
|
||||
TSVTooltip.SetToolTip(TB_TID, IDstr);
|
||||
TSVTooltip.SetToolTip(TB_SID, IDstr);
|
||||
TSVTooltip.SetToolTip(TB_TID7, IDstr);
|
||||
TSVTooltip.SetToolTip(TB_SID7, IDstr);
|
||||
}
|
||||
public void LoadIDValues(PKM pk)
|
||||
public void LoadIDValues(ITrainerID tr)
|
||||
{
|
||||
pkm = pk;
|
||||
SetFormat(pkm.GenNumber);
|
||||
Trainer = tr;
|
||||
int format = tr is PKM p ? p.GenNumber : tr is SaveFile s ? s.Generation : -1;
|
||||
SetFormat(format);
|
||||
LoadValues();
|
||||
}
|
||||
public void UpdateSID() => LoadValues();
|
||||
public void LoadInfo(ITrainerInfo info)
|
||||
{
|
||||
pkm.TID = info.TID;
|
||||
pkm.SID = info.SID;
|
||||
Trainer.TID = info.TID;
|
||||
Trainer.SID = info.SID;
|
||||
LoadValues();
|
||||
}
|
||||
|
||||
private void LoadValues()
|
||||
{
|
||||
if (Format <= 2)
|
||||
TB_TID.Text = pkm.TID.ToString();
|
||||
TB_TID.Text = Trainer.TID.ToString();
|
||||
else if (Format <= 6)
|
||||
LoadTID(pkm.TID, pkm.SID);
|
||||
LoadTID(Trainer.TID, Trainer.SID);
|
||||
else
|
||||
LoadTID7(pkm.TID, pkm.SID);
|
||||
LoadTID7(Trainer.TID, Trainer.SID);
|
||||
}
|
||||
private void LoadTID(int tid, int sid)
|
||||
{
|
||||
|
@ -113,9 +116,9 @@ namespace PKHeX.WinForms.Controls
|
|||
mt.Text = (val = ushort.MaxValue).ToString();
|
||||
|
||||
if (mt == TB_TID)
|
||||
pkm.TID = val;
|
||||
Trainer.TID = val;
|
||||
else
|
||||
pkm.SID = val;
|
||||
Trainer.SID = val;
|
||||
}
|
||||
|
||||
UpdatedID?.Invoke(sender, e);
|
||||
|
@ -129,8 +132,8 @@ namespace PKHeX.WinForms.Controls
|
|||
return;
|
||||
}
|
||||
|
||||
pkm.SID = (ushort)(repack >> 16);
|
||||
pkm.TID = (ushort)repack;
|
||||
Trainer.SID = (ushort)(repack >> 16);
|
||||
Trainer.TID = (ushort)repack;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue