Example #1
0
            public FileInfo(ArchiveFile parent, byte[] data, int offset)
            {
                ParentArchive = parent;

                FileSize       = BitConverter.ToUInt32(data, offset);
                FileNameOffset = BitConverter.ToUInt32(data, offset + 0x04);

                if (ParentArchive.MagicWord == ArchiveFile.magicWordGAR)
                {
                    FullPathOffset = BitConverter.ToUInt32(data, offset + 0x08);

                    int nameLength = (int)(Array.IndexOf(data, (byte)'\0', (int)FullPathOffset) - FullPathOffset);
                    if (nameLength > 0)
                    {
                        FilePath = Encoding.ASCII.GetString(data, (int)FullPathOffset, nameLength).TrimEnd('\0');
                    }
                }
                else
                {
                    int nameLength = (int)(Array.IndexOf(data, (byte)'\0', (int)FileNameOffset) - FileNameOffset);
                    if (nameLength > 0)
                    {
                        FilePath = Encoding.ASCII.GetString(data, (int)FileNameOffset, nameLength).TrimEnd('\0');
                    }
                }
            }
Example #2
0
        private void openFileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (Properties.Settings.Default.LastFile != string.Empty)
            {
                ofdOpenFile.InitialDirectory = Path.GetDirectoryName(Properties.Settings.Default.LastFile);
                ofdOpenFile.FileName         = Path.GetFileName(Properties.Settings.Default.LastFile);
            }

            if (ofdOpenFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Properties.Settings.Default.LastFile = ofdOpenFile.FileName;

                meshToRender = -1;
                renderError  = false;

                if (modelFile != null)
                {
                    modelFile.Dispose();
                }
                if (animFile != null)
                {
                    animFile.Dispose();
                }
                if (zsiFile != null)
                {
                    zsiFile.Dispose();
                }

                if (archiveFile != null)
                {
                    archiveFile = null;
                }
                treeViewEx1.Nodes.Clear();

                byte[] fileData = File.ReadAllBytes(Properties.Settings.Default.LastFile);

                PerformFileAction(fileData);

                archiveToolStripMenuItem.Enabled = (archiveFile != null);
                dumpToolStripMenuItem.Enabled    = (modelFile != null);

                this.Text = string.Format("{0} - [{1}]", Program.Description, Path.GetFileName(Properties.Settings.Default.LastFile));
            }
        }
Example #3
0
        private void PerformFileAction(byte[] fileData)
        {
            FileTypes fileType = IdentifyFile(fileData);

            switch (fileType)
            {
            case FileTypes.cmb:
                modelFile = new ModelHandler(fileData, 0, fileData.Length);
                treeViewEx1.Nodes.Add(new TreeNode(Path.GetFileName(Properties.Settings.Default.LastFile))
                {
                    ImageKey = "default"
                });
                AddSepdChunksToTree(treeViewEx1, treeViewEx1.TopNode);
                break;

            case FileTypes.ZAR:
            case FileTypes.GAR:
                archiveFile         = new ArchiveFile(fileData);
                treeViewEx1.Enabled = true;
                CreateArchiveTree();
                break;

            case FileTypes.LzS:
                byte[] decData = LZSS.Decompress(fileData);
                string outfile = @"H:\temp\mm3d-test\" + Path.GetFileName(Properties.Settings.Default.LastFile) + ".dec";
                //File.WriteAllBytes(outfile, decData);
                PerformFileAction(decData);
                break;

            case FileTypes.ZSI:
                treeViewEx1.Nodes.Add(new TreeNode(Path.GetFileName(Properties.Settings.Default.LastFile))
                {
                    ImageKey = "default"
                });
                zsiFile = new ZSIHandler(fileData, 0, fileData.Length);
                if (zsiFile.SelectedSetup != null)
                {
                    modelFile = zsiFile.SelectedSetup.Model;
                }
                AddZsiDataToTree(treeViewEx1, treeViewEx1.TopNode);
                break;
            }
        }
Example #4
0
            public FileType(ArchiveFile parent, byte[] data, int offset)
            {
                ParentArchive = parent;

                NumberOfFilesWithType = BitConverter.ToUInt32(data, offset);
                FileNumberIndexOffset = BitConverter.ToUInt32(data, offset + 0x04);
                FileTypeNameOffset    = BitConverter.ToUInt32(data, offset + 0x08);
                AssumedConstant       = BitConverter.ToUInt32(data, offset + 0x0C);

                int nameLength = (int)(Array.IndexOf(data, (byte)'\0', (int)FileTypeNameOffset) - FileTypeNameOffset);

                if (nameLength > 0)
                {
                    FileTypeName = Encoding.ASCII.GetString(data, (int)FileTypeNameOffset, nameLength).TrimEnd('\0');
                }

                FileNumberIndex = new uint[NumberOfFilesWithType];
                for (int i = 0; i < FileNumberIndex.Length; i++)
                {
                    FileNumberIndex[i] = BitConverter.ToUInt32(data, (int)(FileNumberIndexOffset + (i * 4)));
                }
            }