mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-03-21 17:48:28 -05:00
Changed: Inventory editor no longer needs to clone the save file on GUI open Changed: some method signatures have moved from SAV3* to the specific block Allows the block structures to be used without a SAV3 object Allows the Inventory editor to open from a blank save file.
106 lines
2.9 KiB
C#
106 lines
2.9 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using PKHeX.Core;
|
|
|
|
namespace PKHeX.WinForms;
|
|
|
|
public partial class SAV_SimplePokedex : Form
|
|
{
|
|
private readonly SaveFile SAV;
|
|
private readonly int MaxSpeciesID;
|
|
|
|
public SAV_SimplePokedex(SaveFile sav)
|
|
{
|
|
InitializeComponent();
|
|
WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);
|
|
SAV = sav;
|
|
var count = MaxSpeciesID = SAV.MaxSpeciesID;
|
|
|
|
var speciesNames = GameInfo.Strings.specieslist.AsSpan(1, count);
|
|
AddAllSpecies(speciesNames);
|
|
LoadAllFlags(SAV, count);
|
|
}
|
|
|
|
private void AddAllSpecies(ReadOnlySpan<string> speciesNames)
|
|
{
|
|
for (var i = 0; i < speciesNames.Length; i++)
|
|
{
|
|
var text = $"{i+1:000} - {speciesNames[i]}";
|
|
CLB_Seen.Items.Add(text);
|
|
CLB_Caught.Items.Add(text);
|
|
}
|
|
}
|
|
|
|
private void LoadAllFlags(SaveFile sav, int count)
|
|
{
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
ushort species = (ushort)(i + 1);
|
|
CLB_Seen.SetItemChecked(i, sav.GetSeen(species));
|
|
CLB_Caught.SetItemChecked(i, sav.GetCaught(species));
|
|
}
|
|
}
|
|
|
|
private void SaveAllFlags(SaveFile sav, int count)
|
|
{
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
ushort species = (ushort)(i + 1);
|
|
sav.SetSeen(species, CLB_Seen.GetItemChecked(i));
|
|
sav.SetCaught(species, CLB_Caught.GetItemChecked(i));
|
|
}
|
|
}
|
|
|
|
private void B_Save_Click(object sender, EventArgs e)
|
|
{
|
|
SaveAllFlags(SAV, MaxSpeciesID);
|
|
SanityCheck();
|
|
SAV.State.Edited = true;
|
|
Close();
|
|
}
|
|
|
|
private void SanityCheck()
|
|
{
|
|
// Remove any foreign species dex bits.
|
|
if (SAV is SAV3FRLG { IsVirtualConsole: true })
|
|
{
|
|
for (int i = 150; i < MaxSpeciesID; i++)
|
|
{
|
|
ushort species = (ushort)(i + 1);
|
|
if (!Legal.IsForeignFRLG(species))
|
|
continue;
|
|
//SAV.SetSeen(species, false); // some can be seen via trainers; don't bother
|
|
SAV.SetCaught(species, false);
|
|
}
|
|
}
|
|
if (SAV is SAV3 s3)
|
|
s3.MirrorSeenFlags();
|
|
}
|
|
|
|
private void B_Cancel_Click(object sender, EventArgs e) => Close();
|
|
|
|
private void B_SeenAll_Click(object sender, EventArgs e)
|
|
{
|
|
for (int i = 0; i < MaxSpeciesID; i++)
|
|
CLB_Seen.SetItemChecked(i, true);
|
|
}
|
|
|
|
private void B_SeenNone_Click(object sender, EventArgs e)
|
|
{
|
|
for (int i = 0; i < MaxSpeciesID; i++)
|
|
CLB_Seen.SetItemChecked(i, false);
|
|
}
|
|
|
|
private void B_CaughtAll_Click(object sender, EventArgs e)
|
|
{
|
|
for (int i = 0; i < MaxSpeciesID; i++)
|
|
CLB_Caught.SetItemChecked(i, true);
|
|
}
|
|
|
|
private void B_CaughtNone_Click(object sender, EventArgs e)
|
|
{
|
|
for (int i = 0; i < MaxSpeciesID; i++)
|
|
CLB_Caught.SetItemChecked(i, false);
|
|
}
|
|
}
|