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(); }
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()); }
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); } } } } }