PKHeX.Form1.pbBoxSlot_DragDrop C# (CSharp) Method

pbBoxSlot_DragDrop() private method

private pbBoxSlot_DragDrop ( object sender, DragEventArgs e ) : void
sender object
e DragEventArgs
return void
        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)
Form1