diff --git a/dCommon/dClient/AssetManager.cpp b/dCommon/dClient/AssetManager.cpp index 2b6f84e3..0cb2db31 100644 --- a/dCommon/dClient/AssetManager.cpp +++ b/dCommon/dClient/AssetManager.cpp @@ -67,6 +67,8 @@ 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); }); + // Special case for unpacked client have BrickModels in upper case + if (this->m_AssetBundleType == eAssetBundleType::Unpacked) GeneralUtils::ReplaceInString(fixedName, "brickmodels", "BrickModels"); std::replace(fixedName.begin(), fixedName.end(), '\\', '/'); if (std::filesystem::exists(m_ResPath / fixedName)) return true; @@ -92,17 +94,19 @@ bool AssetManager::GetFile(const char* name, char** data, uint32_t* len) { 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(), '\\', '/'); // On the off chance someone has the wrong slashes, force forward slashes - auto realPathName = fixedName; - if (std::filesystem::exists(m_ResPath / realPathName)) { + // Special case for unpacked client have BrickModels in upper case + if (this->m_AssetBundleType == eAssetBundleType::Unpacked) GeneralUtils::ReplaceInString(fixedName, "brickmodels", "BrickModels"); + + if (std::filesystem::exists(m_ResPath / fixedName)) { FILE* file; #ifdef _WIN32 - fopen_s(&file, (m_ResPath / realPathName).string().c_str(), "rb"); + fopen_s(&file, (m_ResPath / fixedName).string().c_str(), "rb"); #elif __APPLE__ // macOS has 64bit file IO by default - file = fopen((m_ResPath / realPathName).string().c_str(), "rb"); + file = fopen((m_ResPath / fixedName).string().c_str(), "rb"); #else - file = fopen64((m_ResPath / realPathName).string().c_str(), "rb"); + file = fopen64((m_ResPath / fixedName).string().c_str(), "rb"); #endif fseek(file, 0, SEEK_END); *len = ftell(file); diff --git a/dGame/dComponents/PetComponent.cpp b/dGame/dComponents/PetComponent.cpp index 8863f9be..0b136a5c 100644 --- a/dGame/dComponents/PetComponent.cpp +++ b/dGame/dComponents/PetComponent.cpp @@ -194,21 +194,7 @@ void PetComponent::OnUse(Entity* originator) { return; } - auto lxfAsset = std::string(result.getStringField(0)); - - std::vector lxfAssetSplit = GeneralUtils::SplitString(lxfAsset, '\\'); - - lxfAssetSplit.erase(lxfAssetSplit.begin()); - - buildFile = "res/BrickModels"; - - for (auto part : lxfAssetSplit) { - std::transform(part.begin(), part.end(), part.begin(), [](unsigned char c) { - return std::tolower(c); - }); - - buildFile += "/" + part; - } + buildFile = std::string(result.getStringField(0)); PetPuzzleData data; data.buildFile = buildFile; diff --git a/dGame/dUtilities/BrickDatabase.cpp b/dGame/dUtilities/BrickDatabase.cpp index 4e873278..c36a1097 100644 --- a/dGame/dUtilities/BrickDatabase.cpp +++ b/dGame/dUtilities/BrickDatabase.cpp @@ -18,7 +18,7 @@ std::vector& BrickDatabase::GetBricks(const std::string& lxfmlPath) { return cached->second; } - AssetMemoryBuffer buffer = Game::assetManager->GetFileAsBuffer(("client/" + lxfmlPath).c_str()); + AssetMemoryBuffer buffer = Game::assetManager->GetFileAsBuffer((lxfmlPath).c_str()); std::istream file(&buffer); if (!file.good()) { return emptyCache;