Ejemplo n.º 1
0
 private void Save_Click(object sender, EventArgs e)
 {
     if (FormatIndex == NodeIndexBin && treeView1.Nodes.ContainsKey("BIN"))
     {
         var fileList = new List <byte[]>();
         for (int i = 0; i < BinFileList[treeView1.SelectedNode.Index].Count; i++)    // For Each G1T file of the selected bin file
         {
             fileList.Add(KTGZip.Compress(BinFileList[treeView1.SelectedNode.Index][i].Write()));
         }
         BinFile.Write(fileList, FilePathBinGZList[treeView1.SelectedNode.Index]);
     }
     if (FormatIndex == NodeIndexG1T && treeView1.Nodes.ContainsKey("G1T"))
     {
         using (var fs = new FileStream(FilePathG1TList[treeView1.SelectedNode.Index], FileMode.Create))
         {
             var g1tFile = G1TFileList[treeView1.SelectedNode.Index].Write();
             fs.Write(g1tFile, 0x0, g1tFile.Length);
         }
     }
 }
Ejemplo n.º 2
0
        private void SaveAs_Click(object sender, EventArgs e)
        {
            if (FormatIndex == NodeIndexBin && treeView1.Nodes.ContainsKey("BIN"))
            {
                using (var savedialog = new SaveFileDialog())
                {
                    savedialog.DefaultExt = ".bin";
                    savedialog.Filter     = "Koei Tecmo Binary Archive|*.bin";

                    if (savedialog.ShowDialog() == DialogResult.OK)
                    {
                        var fileList = new List <byte[]>();
                        for (int i = 0; i < BinFileList[treeView1.SelectedNode.Index].Count; i++)    // For Each G1T file of the selected bin file
                        {
                            fileList.Add(KTGZip.Compress(BinFileList[treeView1.SelectedNode.Index][i].Write()));
                        }
                        BinFile.Write(fileList, savedialog.FileName);
                    }
                }
            }
            if (FormatIndex == NodeIndexG1T && treeView1.Nodes.ContainsKey("G1T"))
            {
                using (var savedialog = new SaveFileDialog())
                {
                    savedialog.DefaultExt = ".g1t";
                    savedialog.Filter     = "Koei Tecmo Texture Archive|*.g1t";

                    if (savedialog.ShowDialog() == DialogResult.OK)
                    {
                        using (var fs = new FileStream(savedialog.FileName, FileMode.Create))
                        {
                            var g1tFile = G1TFileList[treeView1.SelectedNode.Index].Write();
                            fs.Write(g1tFile, 0x0, g1tFile.Length);
                        }
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void OpenFile()
        {
            BinFileList = new List <List <G1T> >();
            G1TFileList = new List <G1T>();
            var imageList = new ImageList();

            imageList.ColorDepth = ColorDepth.Depth32Bit;

            #region BIN
            for (int i = 0; i < FilePathBinGZList.Count; i++)
            {
                imageList.Images.Add(i.ToString(), Icon.ExtractAssociatedIcon(FilePathBinGZList[i]));
                var node = new TreeNode()
                {
                    Text             = Path.GetFileName(FilePathBinGZList[i]),
                    ImageKey         = i.ToString(),
                    SelectedImageKey = i.ToString(),
                };

                treeView1.Nodes[NodeIndexBin].Nodes.Add(node);
                BinFile = new KTBin();
                var binEntries = new List <G1T>();
                var dummyEntry = new G1T();

                BinFile.Read(FilePathBinGZList[i]);
                for (int ii = 0; ii < BinFile.FileList.Count; ii++)
                {
                    if (BinFile.FileList[ii].Length != 0)
                    {
                        #region Compressed Entries
                        try
                        {
                            int magicID = BitConverter.ToInt32(KTGZip.Decompress(BinFile.FileList[ii]), 0x0);
                            switch (magicID)
                            {
                            case (0x47314D5F):      // G1M_
                            {
                                treeView1.Nodes[NodeIndexBin].Nodes[i].Nodes.Add(new TreeNode(ii.ToString() + ".g1m"));
                                binEntries.Add(dummyEntry);
                            }
                            break;

                            case (0x47315447):      // G1TG
                            {
                                treeView1.Nodes[NodeIndexBin].Nodes[i].Nodes.Add(new TreeNode(ii.ToString() + ".g1t"));

                                var g1t = new G1T();
                                g1t.Read(KTGZip.Decompress(BinFile.FileList[ii]));
                                for (int iii = 0; iii < g1t.Textures.Count; iii++)
                                {
                                    treeView1.Nodes[NodeIndexBin].Nodes[i].Nodes[ii].Nodes.Add(iii.ToString() + ".dds");
                                }
                                binEntries.Add(g1t);
                            }
                            break;

                            default:
                            {
                                treeView1.Nodes[NodeIndexBin].Nodes[i].Nodes.Add(new TreeNode(ii.ToString() + ".bin"));
                                binEntries.Add(dummyEntry);
                            }
                            break;
                            }
                        }
                        #endregion
                        // Need a new list to make sure to not compress when saving
                        #region Uncompressed Entries
                        catch (Exception)
                        {
                            int magicID = BitConverter.ToInt32(BinFile.FileList[ii], 0x0);
                            switch (magicID)
                            {
                            case (0x47314D5F):      // G1M_
                            {
                                treeView1.Nodes[NodeIndexBin].Nodes[i].Nodes.Add(new TreeNode(ii.ToString() + ".g1m"));
                                binEntries.Add(dummyEntry);
                            }
                            break;

                            case (0x47315447):      // G1TG
                            {
                                var g1tList = new List <List <G1Texture> >();
                                treeView1.Nodes[NodeIndexBin].Nodes[i].Nodes.Add(new TreeNode(ii.ToString() + ".g1t"));

                                var g1t = new G1T();
                                g1t.Read(BinFile.FileList[ii]);
                                for (int iii = 0; iii < g1t.Textures.Count; iii++)
                                {
                                    treeView1.Nodes[NodeIndexBin].Nodes[i].Nodes[ii].Nodes.Add(iii.ToString() + ".dds");
                                }
                                binEntries.Add(g1t);
                            }
                            break;

                            default:
                            {
                                treeView1.Nodes[NodeIndexBin].Nodes[i].Nodes.Add(new TreeNode(ii.ToString() + ".bin"));
                                binEntries.Add(dummyEntry);
                            }
                            break;
                            }
                            // New List for bin with uncompressed files
                            if (!FilePathBinList.Contains(FilePathBinGZList[i]))
                            {
                                FilePathBinList.Add(FilePathBinGZList[i]);
                            }
                        }
                        #endregion
                    }
                    #region Dummy Entries
                    else
                    {
                        treeView1.Nodes[NodeIndexBin].Nodes[i].Nodes.Add(new TreeNode(ii.ToString() + ".bin"));
                        binEntries.Add(dummyEntry);
                    }
                }
                #endregion
                BinFileList.Add(binEntries);
            }
            // Remove bin with uncompressed files from binGZ
            for (int i = 0; i < FilePathBinList.Count; i++)
            {
                FilePathBinGZList.RemoveAt(FilePathBinGZList.IndexOf(FilePathBinList[i]));
            }
            #endregion
            #region G1T
            for (int i = 0; i < FilePathG1TList.Count; i++)
            {
                imageList.Images.Add(i.ToString(), Icon.ExtractAssociatedIcon(FilePathG1TList[i]));
                var node = new TreeNode()
                {
                    Text             = Path.GetFileName(FilePathG1TList[i]),
                    ImageKey         = i.ToString(),
                    SelectedImageKey = i.ToString(),
                };

                treeView1.Nodes[NodeIndexG1T].Nodes.Add(node);
                using (var fs = new FileStream(FilePathG1TList[i], FileMode.Open))
                {
                    int    fileSize = (int)new FileInfo(FilePathG1TList[i]).Length;
                    byte[] buffer   = new byte[fileSize];
                    fs.Read(buffer, 0, fileSize);

                    var g1t = new G1T();
                    g1t.Read(buffer);

                    for (int ii = 0; ii < g1t.Textures.Count; ii++)
                    {
                        treeView1.Nodes[NodeIndexG1T].Nodes[i].Nodes.Add(new TreeNode(ii.ToString() + ".dds"));
                    }
                    G1TFileList.Add(g1t);
                }
            }
            #endregion

            /*
             * switch (Path.GetExtension(openFileDialog.FileNames[i]))
             * {
             #region GZ
             *  case ".gz":
             *      {
             *          using (var fs = new FileStream(openFileDialog.FileNames[i], FileMode.Open))
             *          {
             *              var ktGZip = new KTGZip();
             *              int fileSize = (int)new FileInfo(openFileDialog.FileNames[i]).Length;
             *              byte[] buffer = new byte[fileSize];
             *              fs.Read(buffer, 0, fileSize);
             *
             *              currentG1T = new G1T();
             *              currentG1T.Read(ktGZip.Decompress(buffer));
             *          }
             *          var list = new List<string>();
             *          list.Add(Path.GetFileNameWithoutExtension(openFileDialog.FileNames[i]));
             *
             *      }
             *      break;
             #endregion
             #region DDS
             *  case ".dds":
             *      {
             *          treeView1.Nodes[3].Nodes.Add(node);
             *
             *          DDS temp = new DDS();
             *          temp.Read(openFileDialog.FileNames[i]);
             *          pictureBox1.Image = temp.Texture.GetBitmap();
             *      }
             *      break;
             * }
             #endregion
             */
            treeView1.ImageList = imageList;
        }