コード例 #1
0
ファイル: WorldTexFile.cs プロジェクト: Stranho/bgda-explorer
        public static TexEntry[] ReadEntries(byte[] fileData)
        {
            List<TexEntry> entries = new List<TexEntry>();

            var reader = new DataReader(fileData);

            // Unknown
            reader.ReadInt32();

            while (true)
            {
                var entry = new TexEntry();

                entry.CellOffset = reader.ReadInt32();
                entry.DirectoryOffset = reader.ReadInt32();
                entry.Size = reader.ReadInt32();

                if (entry.CellOffset < 0)
                    break;

                entries.Add(entry);
            }

            return entries.ToArray();
        }
コード例 #2
0
        public static TexEntry[] ReadEntries(byte[] fileData)
        {
            List <TexEntry> entries = new List <TexEntry>();

            var reader = new DataReader(fileData);

            // Unknown
            reader.ReadInt32();

            while (true)
            {
                var entry = new TexEntry();

                entry.CellOffset      = reader.ReadInt32();
                entry.DirectoryOffset = reader.ReadInt32();
                entry.Size            = reader.ReadInt32();

                if (entry.CellOffset < 0)
                {
                    break;
                }

                entries.Add(entry);
            }

            return(entries.ToArray());
        }
コード例 #3
0
 private void ReadFileRecursive(byte[] data)
 {
     if (GZ.IsValid(data))
     {
         using (MemoryStream memstream = new MemoryStream(data))
         {
             GZ gz = new GZ(memstream);
             ReadFileRecursive(gz.ContentBuffer);
         }
     }
     if (AFS.IsValid(data))
     {
         using (MemoryStream memstream = new MemoryStream(data))
         {
             AFS afs = new AFS(memstream);
             foreach (var entry in afs.Entries)
             {
                 ReadFileRecursive(entry.Buffer);
             }
         }
     }
     if (PKF.IsValid(data))
     {
         using (MemoryStream memstream = new MemoryStream(data))
         {
             PKF pkf = new PKF(memstream);
             foreach (var entry in pkf.Entries)
             {
                 ReadFileRecursive(entry.Buffer);
             }
         }
     }
     if (PKS.IsValid(data))
     {
         using (MemoryStream memstream = new MemoryStream(data))
         {
             PKS pks = new PKS(memstream);
             foreach (var entry in pks.IPAC.Entries)
             {
                 ReadFileRecursive(entry.Buffer);
             }
         }
     }
     if (TEXN.IsValid(data))
     {
         using (MemoryStream memstream = new MemoryStream(data))
         {
             TEXN     tex   = new TEXN(memstream);
             TexEntry entry = new TexEntry();
             entry.texID = tex.TextureID;
             entry.image = tex.Texture;
             textures.Add(entry);
         }
     }
     if (MT5.IsValid(data))
     {
         using (MemoryStream memstream = new MemoryStream(data))
         {
             MT5 mt5 = new MT5(memstream);
             foreach (var tex in mt5.Textures)
             {
                 if (tex.Image != null)
                 {
                     TexEntry entry = new TexEntry();
                     entry.texID = tex.TextureID;
                     entry.image = tex.Image;
                     textures.Add(entry);
                 }
             }
         }
     }
     if (MT7.IsValid(data))
     {
         using (MemoryStream memstream = new MemoryStream(data))
         {
             MT7 mt7 = new MT7(memstream);
             foreach (var tex in mt7.Textures)
             {
                 if (tex.Image != null)
                 {
                     TexEntry entry = new TexEntry();
                     entry.texID = tex.TextureID;
                     entry.image = tex.Image;
                     textures.Add(entry);
                 }
             }
         }
     }
 }