コード例 #1
0
ファイル: MainForm.cs プロジェクト: cz2eagle/Desco
        private void LoadFile(string file)
        {
            using (FileStream stream = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                string fileExtension = Path.GetExtension(file);

                switch (fileExtension)
                {
                case ".obf":
                    obfBinary = new ObfBinary(stream);
                    break;

                case ".pac":
                {
                    Conversion.PacFile      pac         = new Conversion.PacFile(stream);
                    Conversion.PacFileEntry pacObfEntry = pac.Files.FirstOrDefault(x => x.Filename.EndsWith(".obf"));
                    if (pacObfEntry == null)
                    {
                        break;
                    }

                    stream.Seek(pac.DataStartPosition + pacObfEntry.Offset, SeekOrigin.Begin);
                    using (BinaryReader reader = new BinaryReader(stream))
                    {
                        using (MemoryStream subStream = new MemoryStream(reader.ReadBytes((int)pacObfEntry.CalculatedLength)))
                        {
                            obfBinary = new ObfBinary(subStream);
                        }
                    }
                }
                break;

                default:
                    MessageBox.Show("Unsupported file specified.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;
                }

                if (obfBinary != null)
                {
                    tscmbAssets.ComboBox.DataSource    = obfBinary.Assets.ToList();
                    tscmbAssets.ComboBox.DisplayMember = "Key";
                    tscmbAssets.ComboBox.ValueMember   = "Value";
                }
            }
        }
コード例 #2
0
        public override void ReadFromStream(Stream stream)
        {
            EndianBinaryReader reader = new EndianBinaryReader(stream, Program.Endianness);

            NumFiles    = reader.ReadUInt32();
            Unknown0x04 = reader.ReadUInt32();
            Unknown0x08 = reader.ReadUInt32();
            Unknown0x0C = reader.ReadUInt32();

            Files = new PacFileEntry[NumFiles];
            for (int i = 0; i < Files.Length; i++)
            {
                Files[i] = new PacFileEntry(stream);
            }

            DataStartPosition = stream.Position;
            foreach (PacFileEntry file in Files)
            {
                file.SetLength((int)stream.Length, Files);
            }
        }