Example #1
0
        public TitleScreen()
        {
            InitializeComponent();
            AllowDrop           = true;
            DragEnter          += tabMain_DragEnter;
            DragDrop           += tabMain_DragDrop;
            PB_Image.AllowDrop  = true;
            PB_Image.DragEnter += tabMain_DragEnter;
            PB_Image.DragDrop  += tabMain_DragDrop;

            // Add tooltip to image
            new ToolTip().SetToolTip(PB_Image, "Click to toggle Green Screen\nRightClick for I/O\nCTRL+Click for Copy->Clipboard.");

            // Add context menus
            ContextMenuStrip  mnu  = new ContextMenuStrip();
            ToolStripMenuItem mnuR = new ToolStripMenuItem("Replace with...");
            ToolStripMenuItem mnuS = new ToolStripMenuItem("Save as...");

            // Assign event handlers
            mnuR.Click += clickOpen;
            mnuS.Click += clickSave;
            // Add to main context menu
            mnu.Items.AddRange(new ToolStripItem[] { mnuR, mnuS, });

            // Assign
            PB_Image.ContextMenuStrip = mnu;

            // Set up languages
            string[] languages = (Main.oras ? new[] { "JP1" } : new string[] {}).Concat(new[] { "DE", "ES", "FR", "IT", "JP", "KO", "EN" }).ToArray();
            string[] games     = Main.oras ? new[] { "OR", "AS" } : new[] { "X", "Y" };
            for (int i = 0; i < darcs.Length / 2; i++)
            {
                CB_DARC.Items.Add($"{games[0]} - {languages[i]}");
            }
            for (int i = darcs.Length / 2; i < darcs.Length; i++)
            {
                CB_DARC.Items.Add($"{games[1]} - {languages[i - darcs.Length/2]}");
            }

            // Load darcs
            for (int i = 0; i < darcs.Length; i++)
            {
                // Get DARC name and assign the decompressed name
                usedFiles[i] = "titlescreen\\" + (compressed ? "dec_" : "") + Path.GetFileName(files[darcFiles[i]]);
                if (compressed) // Decompress file (XY does not compress)
                {
                    CTR.LZSS.Decompress(files[darcFiles[i]], usedFiles[i]);
                }
                // Read decompressed file
                var data = File.ReadAllBytes(usedFiles[i]);

                // Find darc data offset (ignore header)
                int pos = 0;
                while (BitConverter.ToUInt32(data, pos) != 0x63726164)
                {
                    pos += 4;
                    if (pos >= data.Length)
                    {
                        throw new Exception("Invalid DARC?\n\n" + usedFiles[i]);
                    }
                }
                var darcData = data.Skip(pos).ToArray();
                darcs[i] = new CTR.DARC(darcData);
            }

            CB_DARC.SelectedIndex = CB_DARC.Items.Count - 1; // last (english game2)
        }
        public TitleScreenEditor6()
        {
            InitializeComponent();
            AllowDrop = true;
            DragEnter += tabMain_DragEnter;
            DragDrop += tabMain_DragDrop;
            PB_Image.AllowDrop = true;
            PB_Image.DragEnter += tabMain_DragEnter;
            PB_Image.DragDrop += tabMain_DragDrop;

            // Add tooltip to image
            new ToolTip().SetToolTip(PB_Image, "Click to toggle Green Screen\nRightClick for I/O\nCTRL+Click for Copy->Clipboard.");

            // Add context menus
            ContextMenuStrip mnu = new ContextMenuStrip();
            ToolStripMenuItem mnuR = new ToolStripMenuItem("Replace with...");
            ToolStripMenuItem mnuS = new ToolStripMenuItem("Save as...");
            // Assign event handlers
            mnuR.Click += clickOpen;
            mnuS.Click += clickSave;
            // Add to main context menu
            mnu.Items.AddRange(new ToolStripItem[] { mnuR, mnuS, });

            // Assign
            PB_Image.ContextMenuStrip = mnu;

            // Set up languages
            string[] languages = (Main.Config.ORAS ? new[] {"JP1"} : new string[] {}).Concat(new[] {"DE", "ES", "FR", "IT", "JP", "KO", "EN"}).ToArray();
            string[] games = Main.Config.ORAS ? new[] {"OR", "AS"} : new[] {"X", "Y"};
            for (int i = 0; i < darcs.Length/2; i++)
                CB_DARC.Items.Add($"{games[0]} - {languages[i]}");
            for (int i = darcs.Length/2; i < darcs.Length; i++)
                CB_DARC.Items.Add($"{games[1]} - {languages[i - darcs.Length/2]}");

            // Load darcs
            for (int i = 0; i < darcs.Length; i++)
            {
                // Get DARC name and assign the decompressed name
                usedFiles[i] = "titlescreen\\" + (compressed ? "dec_" : "") + Path.GetFileName(files[darcFiles[i]]);
                if (compressed) // Decompress file (XY does not compress)
                    CTR.LZSS.Decompress(files[darcFiles[i]], usedFiles[i]);
                // Read decompressed file
                var data = File.ReadAllBytes(usedFiles[i]);

                // Find darc data offset (ignore header)
                int pos = 0;
                while (BitConverter.ToUInt32(data, pos) != 0x63726164)
                {
                    pos += 4;
                    if (pos >= data.Length)
                        throw new Exception("Invalid DARC?\n\n" + usedFiles[i]);
                }
                var darcData = data.Skip(pos).ToArray();
                darcs[i] = new CTR.DARC(darcData);
            }

            CB_DARC.SelectedIndex = CB_DARC.Items.Count - 1; // last (english game2)
        }