mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-04-25 16:35:02 -05:00
Fix Gen1 party+clear
Closes #4410 Also fix trash bytes persistence (only overwrite nickname with default if it visually differs from what is present in the textbox). Add trash edits to Gen3 HoF
This commit is contained in:
parent
674a778bf9
commit
520c849287
|
|
@ -70,7 +70,7 @@ public sealed class HallFame3PKM(Memory<byte> Raw, bool Japanese) : ISpeciesForm
|
|||
public ushort SID16 { get => ReadUInt16LittleEndian(Data[2..]); set => WriteUInt16LittleEndian(Data[2..], value); }
|
||||
public uint PID { get => ReadUInt32LittleEndian(Data[4..]); set => WriteUInt32LittleEndian(Data[4..], value); }
|
||||
private ushort SpecLevel { get => ReadUInt16LittleEndian(Data[8..]); set => WriteUInt16LittleEndian(Data[8..], (ushort)value); }
|
||||
private Span<byte> NicknameTrash => Data.Slice(10, 10);
|
||||
public Span<byte> NicknameTrash => Data.Slice(10, 10);
|
||||
|
||||
public string Nickname
|
||||
{
|
||||
|
|
|
|||
|
|
@ -171,7 +171,9 @@ private void SaveEntity(HallOfFameEntity1 pk)
|
|||
|
||||
pk.Species = species;
|
||||
pk.Level = (byte)NUD_Level.Value;
|
||||
pk.Nickname = TB_Nickname.Text;
|
||||
|
||||
if (pk.Nickname != TB_Nickname.Text) // preserve trash
|
||||
pk.Nickname = TB_Nickname.Text;
|
||||
}
|
||||
|
||||
private void UpdateNickname(object sender, EventArgs e)
|
||||
|
|
@ -186,8 +188,9 @@ private void UpdateNickname(object sender, EventArgs e)
|
|||
bool isNone = species is 0 or > (int)Species.Mew;
|
||||
var pk = Fame.GetEntity(Team, Slot);
|
||||
var name = isNone ? string.Empty : SpeciesName.GetSpeciesNameGeneration(species, SAV.Language, 1);
|
||||
pk.Nickname = name;
|
||||
TB_Nickname.Text = name;
|
||||
if (pk.Nickname != name) // preserve trash
|
||||
pk.Nickname = name;
|
||||
}
|
||||
TB_Nickname.ReadOnly = !CHK_Nicknamed.Checked;
|
||||
}
|
||||
|
|
@ -203,16 +206,18 @@ private void ClickNickname(object sender, MouseEventArgs e)
|
|||
|
||||
var team = LB_DataEntry.SelectedIndex;
|
||||
var member = (int)NUP_PartyIndex.Value - 1;
|
||||
var data = Fame.GetEntity(team, member);
|
||||
data.Nickname = tb.Text;
|
||||
var pk = Fame.GetEntity(team, member);
|
||||
if (tb.Text != pk.Nickname) // preserve trash
|
||||
pk.Nickname = tb.Text;
|
||||
|
||||
var nicktrash = data.NicknameTrash;
|
||||
var nicktrash = pk.NicknameTrash;
|
||||
var d = new TrashEditor(tb, nicktrash, SAV, SAV.Generation, SAV.Context);
|
||||
d.ShowDialog();
|
||||
tb.Text = d.FinalString;
|
||||
d.FinalBytes.CopyTo(nicktrash);
|
||||
|
||||
TB_Nickname.Text = data.Nickname;
|
||||
if (tb.Text != pk.Nickname) // preserve trash
|
||||
tb.Text = pk.Nickname;
|
||||
}
|
||||
|
||||
private void B_Delete_Click(object sender, EventArgs e)
|
||||
|
|
@ -236,10 +241,12 @@ private void B_ClearSlot_Click(object sender, EventArgs e)
|
|||
|
||||
private void B_SetParty_Click(object sender, EventArgs e)
|
||||
{
|
||||
LoadingFields = true;
|
||||
var count = Fame.RegisterParty(SAV, SAV.HallOfFameCount);
|
||||
ResetListBox();
|
||||
NUD_Clears.Value = SAV.HallOfFameCount = count;
|
||||
Team = -1;
|
||||
LoadingFields = false;
|
||||
|
||||
var index = count - 1;
|
||||
ResetListBox(index);
|
||||
|
|
@ -278,6 +285,7 @@ private void TB_Nickname_TextChanged(object sender, EventArgs e)
|
|||
private void B_ClearAll_Click(object sender, EventArgs e)
|
||||
{
|
||||
Fame.Clear();
|
||||
NUD_Clears.Value = 0;
|
||||
SaveAndClose(entity: false);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ public SAV_HallOfFame3(SAV3 sav)
|
|||
TB_TID.TextChanged += (_, _) => ValidateIDs();
|
||||
TB_SID.TextChanged += (_, _) => ValidateIDs();
|
||||
TB_PID.TextChanged += (_, _) => ValidateIDs();
|
||||
TB_Nickname.Click += ClickNickname;
|
||||
CB_Species.SelectedValueChanged += (_, _) => UpdateSprite();
|
||||
NUD_Members.ValueChanged += (_, _) =>
|
||||
{
|
||||
|
|
@ -85,7 +86,8 @@ private void UpdatePKM(HallFame3PKM pk)
|
|||
pk.TID16 = Convert.ToUInt16(TB_TID.Text);
|
||||
pk.SID16 = Convert.ToUInt16(TB_SID.Text);
|
||||
pk.PID = Util.GetHexValue(TB_PID.Text);
|
||||
pk.Nickname = TB_Nickname.Text;
|
||||
if (pk.Nickname != TB_Nickname.Text) // preserve trash
|
||||
pk.Nickname = TB_Nickname.Text;
|
||||
pk.Level = (int)NUD_Level.Value;
|
||||
pk.Species = (ushort)WinFormsUtil.GetIndex(CB_Species);
|
||||
}
|
||||
|
|
@ -135,4 +137,27 @@ private void UpdateSprite()
|
|||
}
|
||||
|
||||
private void B_Clear_Click(object sender, EventArgs e) => ClearFields();
|
||||
|
||||
private void ClickNickname(object? sender, EventArgs e)
|
||||
{
|
||||
if (sender is not TextBox tb)
|
||||
return;
|
||||
|
||||
// Special Character Form
|
||||
if (ModifierKeys != Keys.Control)
|
||||
return;
|
||||
|
||||
var pk = Fame[LB_Entries.SelectedIndex].Team[(int)NUD_Members.Value];
|
||||
if (tb.Text != pk.Nickname) // preserve trash
|
||||
pk.Nickname = tb.Text;
|
||||
|
||||
var nicktrash = pk.NicknameTrash;
|
||||
var d = new TrashEditor(tb, nicktrash, SAV, SAV.Generation, SAV.Context);
|
||||
d.ShowDialog();
|
||||
tb.Text = d.FinalString;
|
||||
d.FinalBytes.CopyTo(nicktrash);
|
||||
|
||||
if (tb.Text != pk.Nickname) // preserve trash
|
||||
tb.Text = pk.Nickname;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user