Esempio n. 1
0
        /// <summary>
        /// Parse directory/file nodes.
        /// </summary>
        /// <param name="fs">Filestream of U8 file.</param>
        public void ParseNodes(FileStream fs)
        {
            u8Node node = new u8Node();
            uint   maxNodeId;

            // read first node
            node.NodeType   = ParseFile.ReadByte(fs, this.RootNodeOffset);
            node.NameOffset = ParseFile.ReadUint24BE(fs, this.RootNodeOffset + 1);
            node.DataOffset = ParseFile.ReadUintBE(fs, this.RootNodeOffset + 4);
            node.DataSize   = ParseFile.ReadUintBE(fs, this.RootNodeOffset + 8);
            this.NodeArray.Add(node);

            maxNodeId = node.DataSize;

            // parse each node
            for (int i = 1; i < maxNodeId; i++)
            {
                node            = new u8Node();
                node.NodeType   = ParseFile.ReadByte(fs, this.RootNodeOffset + (i * 0xC));
                node.NameOffset = ParseFile.ReadUint24BE(fs, this.RootNodeOffset + (i * 0xC) + 1);
                node.DataOffset = ParseFile.ReadUintBE(fs, this.RootNodeOffset + (i * 0xC) + 4);
                node.DataSize   = ParseFile.ReadUintBE(fs, this.RootNodeOffset + (i * 0xC) + 8);
                this.NodeArray.Add(node);
            }
        }