ME3LibWV.PCCPackage.ReadChunks C# (CSharp) Method

ReadChunks() private method

private ReadChunks ( Stream s ) : void
s Stream
return void
        private void ReadChunks(Stream s)
        {
            try
            {
                DebugLog.PrintLn("Reading Chunks...");
                for (int i = 0; i < Header.Chunks.Count; i++)
                {
                    if(verbose)
                        DebugLog.PrintLn("Reading Chunk(" + i + ") Header...");
                    CompressedChunk c = Header.Chunks[i];
                    s.Seek(c.CompOffset, 0);
                    c.Magic = ReadUInt(s);
                    if (c.Magic != 0x9E2A83C1)
                        throw new Exception("Not a valid Chunkheader, wrong magic!(#" + i + ")");
                    c.BlockSize = ReadUInt(s);
                    ReadUInt(s); 
                    ReadUInt(s);
                    uint count = (c.UnCompSize + c.BlockSize - 1) / c.BlockSize;
                    c.Blocks = new List<CompressedChunkBlock>();
                    if (verbose)
                        DebugLog.PrintLn("Reading Chunk(" + i + ") Blocks...");
                    for (int j = 0; j < count; j++)
                    {
                        CompressedChunkBlock b = new CompressedChunkBlock();
                        b.CompSize = ReadUInt(s);
                        b.UnCompSize = ReadUInt(s);
                        b.loaded = false;
                        c.Blocks.Add(b);
                    }
                    Header.Chunks[i] = c;
                }
                if (Header.Chunks.Count != 0)
                {
                    uint FullSize = Header.Chunks[Header.Chunks.Count - 1].UnCompOffset + Header.Chunks[Header.Chunks.Count - 1].UnCompSize;
                    Header.DeCompBuffer = new MemoryStream(new byte[FullSize]);
                    Header.DeCompBuffer.Seek(0, 0);
                    Source.Seek(0, 0);
                    byte[]buff = new byte[Header._offsetCompFlagEnd];
                    Source.Read(buff, 0, (int)Header._offsetCompFlagEnd);
                    Header.DeCompBuffer.Write(buff, 0, (int)Header._offsetCompFlagEnd);
                    Header.DeCompBuffer.Write(BitConverter.GetBytes(0), 0, 4);
                    Header.DeCompBuffer.Write(BitConverter.GetBytes(Header.unk7), 0, 4);
                    Header.DeCompBuffer.Write(BitConverter.GetBytes(Header.unk8), 0, 4);
                    Header.DeCompBuffer.Seek(Header._offsetFlag, 0);
                    uint newFlags = (Header.Flags ^ 0x02000000);
                    Header.DeCompBuffer.Write(BitConverter.GetBytes(newFlags), 0, 4);
                }
            }
            catch (Exception ex)
            {
                DebugLog.PrintLn("PCCPACKAGE::READCHUNKS ERROR:\n" + ex.Message);
            }
        }
        private void ReadNameTable()