private void pbBoxSlot_DragDrop(object sender, DragEventArgs e)
{
int slot = getSlot(sender);
int offset = getPKXOffset(slot);
// Check for In-Dropped files (PKX,SAV,ETC)
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if (Directory.Exists(files[0])) { loadBoxesFromDB(files[0]); return; }
if (pkm_from_offset == 0)
{
if (files.Length > 0)
{
FileInfo fi = new FileInfo(files[0]);
// Detect if PKM/PKX
if ((fi.Length == 136) || (fi.Length == 220) || (fi.Length == 236) || (fi.Length == 100) || (fi.Length == 80))
{
byte[] input = File.ReadAllBytes(files[0]);
var Converter = new pk2pk();
if (!PKX.verifychk(input)) Util.Alert("Invalid File Loaded.", "Checksum is not valid.");
try // to convert past gen pkm
{
byte[] data = Converter.ConvertPKM(input, savefile, savindex);
Array.Copy(PKX.encryptArray(data), 0, savefile, offset, 0xE8);
}
catch
{ Util.Error("Attempted to load previous generation PKM.", "Conversion failed."); }
}
else if (fi.Length == 232 || fi.Length == 260)
{
byte[] data = File.ReadAllBytes(files[0]);
if (fi.Extension == ".pkx" || fi.Extension == ".pk6")
data = PKX.encryptArray(data);
else if (fi.Extension != ".ekx" && fi.Extension != ".ek6")
{ openQuick(files[0]); return; } // lazy way of aborting
byte[] decdata = PKX.decryptArray(data);
if (!PKX.verifychk(decdata))
Util.Alert("Attempted to load Invalid File.", "Checksum is not valid.");
else
{
Array.Copy(data, 0, savefile, offset, 0xE8);
setPokedex(decdata);
getQuickFiller(getPictureBox(slot), decdata);
getSlotColor(slot, Properties.Resources.slotSet);
}
}
else // not PKX/EKX, so load with the general function
{ openQuick(files[0]); }
}
}
else
{
if (ModifierKeys == Keys.Alt && slot > -1) // overwrite delete old slot
{
byte[] cleardata = new Byte[0xE8];
// Clear from slot picture
getQuickFiller(getPictureBox(pkm_from_slot), cleardata);
// Clear from slot data
Array.Copy(PKX.encryptArray(cleardata), 0, savefile, pkm_from_offset, 0xE8);
}
else if (ModifierKeys != Keys.Control && slot > -1)
{
// Load data from destination
byte[] swapdata = new Byte[0xE8];
Array.Copy(savefile, offset, swapdata, 0, 0xE8);
// Swap slot picture
getQuickFiller(getPictureBox(pkm_from_slot), PKX.decryptArray(swapdata));
// Swap slot data to source
Array.Copy(swapdata, 0, savefile, pkm_from_offset, 0xE8);
}
// Copy from temp slot to new.
Array.Copy(pkm_from, 0, savefile, offset, 0xE8);
getQuickFiller(getPictureBox(slot), PKX.decryptArray(pkm_from));
pkm_from_offset = 0; // Clear offset value
}
savedited = true;
}
private void pbBoxSlot_DragEnter(object sender, DragEventArgs e)