예제 #1
0
 private void PckEditor_FormClosed(object sender, FormClosedEventArgs e)
 {
     // unreference memory-intensive objects (WEM)
     TreeView_Wems.Nodes.Clear();
     WemGrid.SelectedObject     = null;
     TreeView_Wems.SelectedNode = null;
     pck = null;
     // trigger LOH compactification
     GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHeapCompactionMode.CompactOnce;
     GC.Collect();
 }
예제 #2
0
        private void BuildData()
        {
            pck = new PCK(PckFile.FullName);

            for (int i = 0; i != pck.WemList.Count; i++)
            {
                TreeNode node = new TreeNode(pck.WemList[i].Name);
                node.Name = pck.WemList[i].ID.ToString();
                node.Tag  = pck.WemList[i];
                TreeView_Wems.Nodes.Add(node);
            }
        }
예제 #3
0
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            if (ofd.ShowDialog() == DialogResult.OK)
            {
                using (BinaryStream s = new BinaryStream(new FileStream(ofd.FileName, FileMode.Open), Syroot.BinaryData.ByteConverter.Big))
                {
                    PCK p = PCK.Read(s);
                    MessageBox.Show($"pos is {s.BaseStream.Position}");

                    p.FileTable.Entries.ForEach(f =>
                    {
                        TreeNode t = new TreeNode();
                        t.Text     = f.Name;
                        t.Tag      = f;

                        switch (Path.GetExtension(f.Name))
                        {
                        case ".pck":
                            t.Text = $"[Pack] {t.Text}";
                            break;

                        case ".loc":
                            t.Text = $"[Localization] {t.Text}";
                            break;

                        case ".binka":
                            t.Text = $"[Binka] {t.Text}";
                            break;

                        case ".png":
                            t.Text = $"[PNG] {t.Text}";
                            break;

                        default:
                            t.Text = $"[?] {t.Text}";
                            break;
                        }

                        if (f.Name == "0")
                        {
                            t.Text = $"Dummy File";
                        }

                        treeView1.Nodes.Add(t);
                    });

                    label1.Text = $"Files: {treeView1.Nodes.Count}";
                    label2.Text = $"Pack Version: {p.Header.Version}";
                }
            }
        }
예제 #4
0
        private void PckEditor_Closing(object sender, FormClosingEventArgs e)
        {
            if (bIsFileEdited)
            {
                System.Windows.MessageBoxResult SaveChanges = System.Windows.MessageBox.Show(Language.GetString("$SAVE_PROMPT"), "Toolkit", System.Windows.MessageBoxButton.YesNoCancel);

                if (SaveChanges == System.Windows.MessageBoxResult.Yes)
                {
                    Save();
                }
                else if (SaveChanges == System.Windows.MessageBoxResult.Cancel)
                {
                    e.Cancel = true;
                }
            }

            pck = null;
        }
예제 #5
0
        public void LoadPack(string fileName)
        {
            FileName = fileName;
            int entries = 0;

            dataGridView.Enabled = false; // prevent the user-induced damages
            Thread t = new Thread(() =>
            {
                folders = PCK.Read(FileName);
                if (folders == null || folders.Length == 0)
                {
                    return;
                }

                List <DataGridViewRow> rows = new List <DataGridViewRow>();
                foreach (PCK.Folder folder in folders)
                {
                    foreach (PCK.Entry entry in folder.Entries)
                    {
                        DataGridViewRow row = new DataGridViewRow
                        {
                            Tag = entry
                        };

                        DataGridViewTextBoxCell name = new DataGridViewTextBoxCell
                        {
                            Value = entry.NameHash.ToString("X8")
                        };
                        row.Cells.Add(name);

                        DataGridViewTextBoxCell size = new DataGridViewTextBoxCell
                        {
                            Value = entry.Size
                        };
                        row.Cells.Add(size);

                        DataGridViewTextBoxCell offset = new DataGridViewTextBoxCell
                        {
                            Value = entry.Offset
                        };
                        row.Cells.Add(offset);

                        DataGridViewTextBoxCell isBank = new DataGridViewTextBoxCell
                        {
                            Value = entry.IsSoundbank ? "True" : "False"
                        };
                        row.Cells.Add(isBank);

                        DataGridViewTextBoxCell id = new DataGridViewTextBoxCell
                        {
                            Value = entry.FolderID
                        };
                        row.Cells.Add(id);

                        DataGridViewTextBoxCell path = new DataGridViewTextBoxCell
                        {
                            Value = entry.Path
                        };
                        row.Cells.Add(path);

                        rows.Add(row);
                        entries++;
                    }
                }

                Invoke(new Action(() =>
                {
                    dataGridView.Rows.AddRange(rows.ToArray());
                    entriesToolStripLabel.Text = $"Entries: {entries}";
                    foldersToolStripLabel.Text = $"Folders: {folders.Length}";
                    dataGridView.Enabled       = true;
                }));
            });

            t.Start();
        }