namespace NResLib; /// /// Архив NRes (файл NRes) /// public record NResArchive(NResArchiveHeader Header, List Files); /// /// Заголовок файла /// /// [0..4] ASCII NRes /// [4..8] Версия кодировщика (должно быть всегда 0x100) /// [8..12] Количество файлов /// [12..16] Длина всего архива public record NResArchiveHeader(string NRes, int Version, int FileCount, int TotalFileLengthBytes); /// /// В конце файла есть список метаданных, /// каждый элемент это 64 байта, /// найти начало можно как (Header.TotalFileLengthBytes - Header.FileCount * 64) /// /// [0..4] ASCII описание типа файла, например TEXM или MAT0 /// [4..8] Количество элементов в файле (если файл составной, например .trf) /// [8..12] Неизвестное число /// [12..16] Длина файла в байтах /// [16..20] Размер элемента в файле (если файл составной, например .trf) /// [20..40] ASCII имя файла /// [40..44] Неизвестное число /// [44..48] Неизвестное число /// [48..52] Неизвестное число /// [52..56] Неизвестное число /// [56..60] Смещение подфайла от начала NRes (именно самого NRes) в байтах /// [60..64] Индекс в файле (от 0, не больше чем кол-во файлов) public record ListMetadataItem( string FileType, uint ElementCount, int Magic1, int FileLength, int ElementSize, string FileName, int Magic3, int Magic4, int Magic5, int Magic6, int OffsetInFile, int Index );