From 162f84e2857c1fa6b490dde8b5e3acd96d89a985 Mon Sep 17 00:00:00 2001 From: Aaron Kimbrell Date: Fri, 4 Nov 2022 19:45:04 -0500 Subject: [PATCH] simplify path fixing for packed vs unpacked (#816) fix slashes for hasfile for unpacked client checking --- dCommon/dClient/AssetManager.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/dCommon/dClient/AssetManager.cpp b/dCommon/dClient/AssetManager.cpp index ba928340..2b6f84e3 100644 --- a/dCommon/dClient/AssetManager.cpp +++ b/dCommon/dClient/AssetManager.cpp @@ -66,17 +66,15 @@ eAssetBundleType AssetManager::GetAssetBundleType() { bool AssetManager::HasFile(const char* name) { auto fixedName = std::string(name); std::transform(fixedName.begin(), fixedName.end(), fixedName.begin(), [](uint8_t c) { return std::tolower(c); }); + + + std::replace(fixedName.begin(), fixedName.end(), '\\', '/'); + if (std::filesystem::exists(m_ResPath / fixedName)) return true; + + if (this->m_AssetBundleType == eAssetBundleType::Unpacked) return false; + std::replace(fixedName.begin(), fixedName.end(), '/', '\\'); - - auto realPathName = fixedName; - - if (fixedName.rfind("client\\res\\", 0) != 0) { - fixedName = "client\\res\\" + fixedName; - } - - if (std::filesystem::exists(m_ResPath / realPathName)) { - return true; - } + if (fixedName.rfind("client\\res\\", 0) != 0) fixedName = "client\\res\\" + fixedName; uint32_t crc = crc32b(0xFFFFFFFF, (uint8_t*)fixedName.c_str(), fixedName.size()); crc = crc32b(crc, (Bytef*)"\0\0\0\0", 4);