public FileProxy(FileProxy file, string virtualFileName, int offset, int size) { Size = size; Offset = file.Offset + offset; FilePath = file.FilePath; Name = virtualFileName; if (size > file.Size) Utils.TerminateWithError("Некорректное описание файла. Виртуальный файл выходит за приделы родительского виртуального файла"); }
/// <summary> /// Подгружает .txd-архив - источник текстур их массива байт. /// </summary> public void AddTexturesArchive(FileProxy fileProxy) { loadedArchives.Add(Path.GetFileNameWithoutExtension(fileProxy.Name).ToLower()); var archive = new TXDArchive(fileProxy); Dictionary<string, Texture2D> archiveItems; try { archiveItems = archive.Load(); } catch (Exception er) { Log.Instance.Print(String.Format("Failed to load TXD archive {0} ({1}). {2}", fileProxy.FilePath, fileProxy.Name, er.Message), MessageType.Error); return; } foreach (var item in archiveItems) textures[item.Key] = item.Value; }
private void LoadArchiveContents(BinaryReader input, int entriesInArchive) { for (int i = 0; i != entriesInArchive; ++i) { int pos = input.ReadInt32() * 2048; int length = input.ReadInt32() * 2048; byte[] name = new byte[24]; input.Read(name, 0, name.Length); int nameLen = 0; while (nameLen < name.Length && name[nameLen] != 0) ++nameLen; string strName = Encoding.ASCII.GetString(name, 0, nameLen).ToLower(); FileProxy entry = new FileProxy(archiveFile, strName, pos, length); files.Add(entry); } }
public IMGArchive(string filePath, GtaVersion gtaVersion) { this.gtaVersion = gtaVersion; archiveFile = new FileProxy(filePath); }
public TXDArchive(FileProxy archiveFile) { txdName = Path.GetFileNameWithoutExtension(archiveFile.Name); this.archiveFile = archiveFile; fin = new BinaryReader(new MemoryStream(archiveFile.GetData())); }
public ModelEntry(FileProxy fileProxy) { this.FileProxy = fileProxy; }