SubDirectory.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //
  2. // Created by Иван_Архипов on 07.11.2017.
  3. //
  4. #ifndef LOTRO_DAT_PATCHER_SUBDIRECTORY_H
  5. #define LOTRO_DAT_PATCHER_SUBDIRECTORY_H
  6. #include <vector>
  7. #include <map>
  8. #include <unordered_map>
  9. #include <unordered_set>
  10. extern "C++"
  11. {
  12. namespace LOTRO_DAT
  13. {
  14. enum FILE_TYPE : int;
  15. class DatFile;
  16. class DatException;
  17. class BinaryData;
  18. class Subfile;
  19. class SubDirectory
  20. {
  21. public:
  22. SubDirectory();
  23. SubDirectory(long long offset, DatFile *dat, long long max_subdirs = 63);
  24. ~SubDirectory();
  25. void MakeDictionary(std::unordered_map<long long, Subfile*> &dict);
  26. void UpdateDirectories(std::unordered_set<long long> &patched_files, std::unordered_map<long long, Subfile*> &dict);
  27. private:
  28. void MakeSubDirectories();
  29. void MakeSubFiles();
  30. Subfile* MakeSubfile(long long dictionary_offset, long long fragments_count, long long unknown1, long long file_id, long long file_offset,
  31. long long file_size, long long timestamp, long long version, long long block_size);
  32. FILE_TYPE GetSubfileType(long long file_id, long long file_offset) const;
  33. DatFile *dat_;
  34. long long offset_;
  35. long long max_subdirs_;
  36. std::vector<SubDirectory *> subdirs_;
  37. std::vector<Subfile *> subfiles_;
  38. };
  39. }
  40. };
  41. #endif //LOTRO_DAT_PATCHER_SUBDIRECTORY_H