private void mainMenuBoxDumpLoad(object sender, EventArgs e)
{
DialogResult dr = Util.Prompt(MessageBoxButtons.YesNoCancel, "Press Yes to Import All from Folder." + Environment.NewLine + "Press No to Dump All to Folder.", "Press Cancel to Abort.");
if (dr == DialogResult.Cancel) return;
string exepath = Application.StartupPath;
string path = "";
{
int offset = SaveGame.Box;
const int size = 232;
if (dr == DialogResult.Yes) // Import
{
if (Directory.Exists(Path.Combine(exepath, "db")))
{
DialogResult ld = Util.Prompt(MessageBoxButtons.YesNo, "Load from PKHeX's database?");
if (ld == DialogResult.Yes)
path = Path.Combine(exepath, "db");
else if (ld == DialogResult.No)
{
// open folder dialog
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
path = fbd.SelectedPath;
}
else return;
}
else
{
// open folder dialog
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
path = fbd.SelectedPath;
}
loadBoxesFromDB(path);
}
else if (dr == DialogResult.No)
{
// Dump all of box content to files.
{
DialogResult ld = Util.Prompt(MessageBoxButtons.YesNo, "Save to PKHeX's database?");
if (ld == DialogResult.Yes)
{
path = Path.Combine(exepath, "db");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
}
else if (ld == DialogResult.No)
{
// open folder dialog
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == DialogResult.OK)
path = fbd.SelectedPath;
}
else return;
}
for (int i = 0; i < 31 * 30 * size; i += size)
{
byte[] ekxdata = new byte[size];
Array.Copy(savefile, offset + i, ekxdata, 0, size);
byte[] pkxdata = PKX.decryptArray(ekxdata);
int species = BitConverter.ToInt16(pkxdata, 0x08);
if (species == 0) continue;
uint chk = BitConverter.ToUInt16(pkxdata, 0x06);
uint EC = BitConverter.ToUInt32(pkxdata, 0);
uint IV32 = BitConverter.ToUInt32(pkxdata, 0x74);
string nick;
if (Convert.ToBoolean((IV32 >> 31) & 1))
nick = Util.TrimFromZero(Encoding.Unicode.GetString(pkxdata, 0x40, 24)) + " (" + specieslist[species] + ")";
else
nick = specieslist[species];
if (Convert.ToBoolean((IV32 >> 30) & 1))
nick += " (" + eggname + ")";
string isshiny = "";
// Is Shiny
if (PKX.getIsShiny(BitConverter.ToUInt32(pkxdata, 0x18), Util.ToUInt32(TB_TID.Text), Util.ToUInt32(TB_SID.Text)))
isshiny = " ★";
string savedname =
species.ToString("000") + isshiny + " - "
+ nick + " - "
+ chk.ToString("X4") + EC.ToString("X8")
+ ".pk6";
Array.Resize(ref pkxdata, 232);
if (!File.Exists(Path.Combine(path, savedname)))
File.WriteAllBytes(Path.Combine(path, Util.CleanFileName(savedname)), pkxdata);
}
}
}
}
private void loadBoxesFromDB(string path)