diff --git a/.gitignore b/.gitignore index daba92762..89dd521c5 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,6 @@ perl/ *cbp submodules/* -cmake-build-debug/ \ No newline at end of file +cmake-build-debug/ + +.nfs.* \ No newline at end of file diff --git a/zone/map.cpp b/zone/map.cpp index a0e3e6400..dbfa3928e 100644 --- a/zone/map.cpp +++ b/zone/map.cpp @@ -242,46 +242,65 @@ bool Map::Load(std::string filename, bool force_mmf_overwrite) return true; } #else -bool Map::Load(std::string filename) + +/** + * @param filename + * @return + */ +bool Map::Load(const std::string &filename) { #endif /*USE_MAP_MMFS*/ - FILE *f = fopen(filename.c_str(), "rb"); - if(f) { + FILE *map_file = fopen(filename.c_str(), "rb"); + if (map_file) { uint32 version; - if(fread(&version, sizeof(version), 1, f) != 1) { - fclose(f); + if (fread(&version, sizeof(version), 1, map_file) != 1) { + fclose(map_file); return false; } - - if(version == 0x01000000) { + + if (version == 0x01000000) { LogInfo("Loaded V1 Map File [{}]", filename.c_str()); - bool v = LoadV1(f); - fclose(f); + bool loaded_map_file = LoadV1(map_file); + fclose(map_file); + + if (loaded_map_file) { + LogInfo("Loaded V1 Map File [{}]", filename.c_str()); + } else { + LogError("Failed to load V1 Map File [{}]", filename.c_str()); + } #ifdef USE_MAP_MMFS if (v) return SaveMMF(filename, force_mmf_overwrite); #endif /*USE_MAP_MMFS*/ - return v; - } else if(version == 0x02000000) { - LogInfo("Loaded V2 Map File [{}]", filename.c_str()); - bool v = LoadV2(f); - fclose(f); + return loaded_map_file; + } + else if (version == 0x02000000) { + LogInfo("Loading V2 Map File [{}]", filename.c_str()); + bool loaded_map_file = LoadV2(map_file); + fclose(map_file); + + if (loaded_map_file) { + LogInfo("Loaded V2 Map File [{}]", filename.c_str()); + } else { + LogError("Failed to load V2 Map File [{}]", filename.c_str()); + } #ifdef USE_MAP_MMFS if (v) return SaveMMF(filename, force_mmf_overwrite); #endif /*USE_MAP_MMFS*/ - return v; - } else { - fclose(f); + return loaded_map_file; + } + else { + fclose(map_file); return false; } } - + return false; } diff --git a/zone/map.h b/zone/map.h index 8a2ec7f68..eefb43f2d 100644 --- a/zone/map.h +++ b/zone/map.h @@ -47,7 +47,7 @@ public: #ifdef USE_MAP_MMFS bool Load(std::string filename, bool force_mmf_overwrite = false); #else - bool Load(std::string filename); + bool Load(const std::string& filename); #endif static Map *LoadMapFile(std::string file); diff --git a/zone/water_map.cpp b/zone/water_map.cpp index d2e6daad1..ec5575f24 100644 --- a/zone/water_map.cpp +++ b/zone/water_map.cpp @@ -10,10 +10,34 @@ #include #include +/** + * @param name + * @return + */ +inline bool file_exists(const std::string& name) { + std::ifstream f(name.c_str()); + return f.good(); +} + +/** + * @param zone_name + * @return + */ WaterMap* WaterMap::LoadWaterMapfile(std::string zone_name) { std::transform(zone_name.begin(), zone_name.end(), zone_name.begin(), ::tolower); - - std::string file_path = Config->MapDir + "water/" + zone_name + std::string(".wtr"); + + std::string filename; + if (file_exists("maps")) { + filename = "maps"; + } + else if (file_exists("Maps")) { + filename = "Maps"; + } + else { + filename = Config->MapDir; + } + + std::string file_path = filename + "/water/" + zone_name + std::string(".wtr"); LogDebug("Attempting to load water map with path [{}]", file_path.c_str()); FILE *f = fopen(file_path.c_str(), "rb"); if(f) {