public IEnumerable <FileProxy> Load() { using (Log.Instance.EnterStage("Loading IMG archive: " + archiveFile.FilePath)) { switch (gtaVersion) { case GtaVersion.III: case GtaVersion.ViceCity: string dirFilePath = Path.ChangeExtension(archiveFile.FilePath, "dir"); using (BinaryReader inputDir = new BinaryReader(new FileStream(dirFilePath, FileMode.Open))) { int entries = (int)inputDir.BaseStream.Length / 32; LoadArchiveContents(inputDir, entries); } break; case GtaVersion.SanAndreas: using (BinaryReader inputImg = new BinaryReader(new MemoryStream(archiveFile.GetData()))) { byte[] header = new byte[4]; inputImg.Read(header, 0, header.Length); if (Encoding.ASCII.GetString(header) != "VER2") { Utils.TerminateWithError("Incorrect IMG archive for GTA San Andreas. Expected IMG archive ver2."); } int entries = inputImg.ReadInt32(); LoadArchiveContents(inputImg, entries); } break; default: Utils.TerminateWithError("IMGArchive lodaer does not suppport this GTA version."); break; } Log.Instance.Print(String.Format("Loaded {0} entries", files.Count)); return(files); } }
public TXDArchive(FileProxy archiveFile) { txdName = Path.GetFileNameWithoutExtension(archiveFile.Name); this.archiveFile = archiveFile; fin = new BinaryReader(new MemoryStream(archiveFile.GetData())); }
public TXDArchive(FileProxy archiveFile) { txdName = Path.GetFileNameWithoutExtension(archiveFile.Name); this.archiveFile = archiveFile; fin = new BinaryReader(new MemoryStream(archiveFile.GetData())); }