#pragma once #include #include "Utils/ClassUtils.h" #include "ObjContainer/ObjContainerReferenceable.h" #include "ObjContainer/ObjContainerRepository.h" #include "Utils/ObjStream.h" #include "Zone/Zone.h" class IPak final : public ObjContainerReferenceable { class Impl; Impl* m_impl; public: typedef uint32_t Hash; static ObjContainerRepository Repository; IPak(std::string path, std::unique_ptr stream); ~IPak() override; std::string GetName() override; bool Initialize(); _NODISCARD std::unique_ptr GetEntryStream(Hash nameHash, Hash dataHash) const; static Hash HashString(const std::string& str); static Hash HashData(const void* data, size_t dataSize); };