// // Created by Иван_Архипов on 07.11.2017. // #ifndef LOTRO_DAT_PATCHER_SUBDIRECTORY_H #define LOTRO_DAT_PATCHER_SUBDIRECTORY_H #include #include #include #include extern "C++" { namespace LOTRO_DAT { enum FILE_TYPE : int; class DatFile; class DatException; class BinaryData; class Subfile; class SubDirectory { public: SubDirectory(); SubDirectory(long long offset, DatFile *dat, long long max_subdirs = 63); ~SubDirectory(); void MakeDictionary(std::unordered_map &dict); void UpdateDirectories(std::unordered_set &patched_files, std::unordered_map &dict); private: void MakeSubDirectories(); void MakeSubFiles(); Subfile* MakeSubfile(long long dictionary_offset, long long fragments_count, long long unknown1, long long file_id, long long file_offset, long long file_size, long long timestamp, long long version, long long block_size); FILE_TYPE GetSubfileType(long long file_id, long long file_offset) const; DatFile *dat_; long long offset_; long long max_subdirs_; std::vector subdirs_; std::vector subfiles_; }; } }; #endif //LOTRO_DAT_PATCHER_SUBDIRECTORY_H