#include "PackIndex.h" #include "BinaryIO.h" #include "Game.h" #include "Logger.h" PackIndex::PackIndex(const std::filesystem::path& filePath) { m_FileStream = std::ifstream(filePath / "versions" / "primary.pki", std::ios::in | std::ios::binary); BinaryIO::BinaryRead(m_FileStream, m_Version); BinaryIO::BinaryRead(m_FileStream, m_PackPathCount); m_PackPaths.resize(m_PackPathCount); for (auto& item : m_PackPaths) { BinaryIO::ReadString(m_FileStream, item, BinaryIO::ReadType::String); } BinaryIO::BinaryRead(m_FileStream, m_PackFileIndexCount); for (int i = 0; i < m_PackFileIndexCount; i++) { PackFileIndex packFileIndex; BinaryIO::BinaryRead(m_FileStream, packFileIndex); m_PackFileIndices.push_back(packFileIndex); } Log::Info("Loaded pack catalog with {:d} pack files and {:d} files", m_PackPaths.size(), m_PackFileIndices.size()); for (auto& item : m_PackPaths) { std::replace(item.begin(), item.end(), '\\', '/'); auto* pack = new Pack(filePath / item); m_Packs.push_back(pack); } m_FileStream.close(); } PackIndex::~PackIndex() { for (const auto* item : m_Packs) { delete item; } }