diff --git a/dZoneManager/Zone.cpp b/dZoneManager/Zone.cpp index 68adb943..95bb07bc 100644 --- a/dZoneManager/Zone.cpp +++ b/dZoneManager/Zone.cpp @@ -42,7 +42,15 @@ void Zone::LoadZoneIntoMemory() { m_ZonePath = m_ZoneFilePath.substr(0, m_ZoneFilePath.rfind('/') + 1); if (m_ZoneFilePath == "ERR") return; + // try to open with regular cased path first std::ifstream file(m_ZoneFilePath, std::ios::binary); + if (!file) { + // if that fails try the path in lowercase + std::transform(m_ZoneFilePath.begin(), m_ZoneFilePath.end(), m_ZoneFilePath.begin(), ::tolower); + + file.open(m_ZoneFilePath, std::ios::binary); + } + if (file) { BinaryIO::BinaryRead(file, m_ZoneFileFormatVersion); @@ -171,8 +179,7 @@ std::string Zone::GetFilePathForZoneID() { CDZoneTableTable * zoneTable = CDClientManager::Instance()->GetTable("ZoneTable"); const CDZoneTable* zone = zoneTable->Query(this->GetZoneID().GetMapID()); if (zone != nullptr) { - std::string toReturn = "./res/maps/" + zone->zoneName; - std::transform(toReturn.begin(), toReturn.end(), toReturn.begin(), ::tolower); + std::string toReturn = "./res/maps/" + zone->zoneName; return toReturn; }