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;
 }
 public ModelEntry(FileProxy fileProxy)
 {
     this.FileProxy = fileProxy;
 }
 public TXDArchive(FileProxy archiveFile)
 {
     txdName          = Path.GetFileNameWithoutExtension(archiveFile.Name);
     this.archiveFile = archiveFile;
     fin = new BinaryReader(new MemoryStream(archiveFile.GetData()));
 }