aboutsummaryrefslogtreecommitdiff
path: root/src/common/Collision/Maps
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2017-01-22 12:06:02 +0100
committerShauren <shauren.trinity@gmail.com>2017-01-22 12:06:02 +0100
commitc90882ed6e2aba3b2d421abdc17cb57bea61d04b (patch)
tree3daf95f79375d77574bb1c92806263581db90af2 /src/common/Collision/Maps
parentc83092a1276f522cf11f5e3ceded7306e8fdb937 (diff)
Core/Vmaps: Changed error message when loading outdated vmaps
Closes #18431 Closes #18857
Diffstat (limited to 'src/common/Collision/Maps')
-rw-r--r--src/common/Collision/Maps/MapTree.cpp19
-rw-r--r--src/common/Collision/Maps/MapTree.h3
2 files changed, 12 insertions, 10 deletions
diff --git a/src/common/Collision/Maps/MapTree.cpp b/src/common/Collision/Maps/MapTree.cpp
index 6b10c414103..f3fe8c1f56f 100644
--- a/src/common/Collision/Maps/MapTree.cpp
+++ b/src/common/Collision/Maps/MapTree.cpp
@@ -237,40 +237,41 @@ namespace VMAP
}
//=========================================================
-
- bool StaticMapTree::CanLoadMap(const std::string &vmapPath, uint32 mapID, uint32 tileX, uint32 tileY)
+ LoadResult StaticMapTree::CanLoadMap(const std::string &vmapPath, uint32 mapID, uint32 tileX, uint32 tileY)
{
std::string basePath = vmapPath;
if (basePath.length() > 0 && basePath[basePath.length()-1] != '/' && basePath[basePath.length()-1] != '\\')
basePath.push_back('/');
std::string fullname = basePath + VMapManager2::getMapFileName(mapID);
- bool success = true;
+
+ LoadResult result = LoadResult::Success;
+
FILE* rf = fopen(fullname.c_str(), "rb");
if (!rf)
- return false;
- /// @todo check magic number when implemented...
+ return LoadResult::FileNotFound;
+
char tiled;
char chunk[8];
if (!readChunk(rf, chunk, VMAP_MAGIC, 8) || fread(&tiled, sizeof(char), 1, rf) != 1)
{
fclose(rf);
- return false;
+ return LoadResult::VersionMismatch;
}
if (tiled)
{
std::string tilefile = basePath + getTileFileName(mapID, tileX, tileY);
FILE* tf = fopen(tilefile.c_str(), "rb");
if (!tf)
- success = false;
+ result = LoadResult::FileNotFound;
else
{
if (!readChunk(tf, chunk, VMAP_MAGIC, 8))
- success = false;
+ result = LoadResult::VersionMismatch;
fclose(tf);
}
}
fclose(rf);
- return success;
+ return result;
}
//=========================================================
diff --git a/src/common/Collision/Maps/MapTree.h b/src/common/Collision/Maps/MapTree.h
index 7f1415ff939..f5c11dd2bce 100644
--- a/src/common/Collision/Maps/MapTree.h
+++ b/src/common/Collision/Maps/MapTree.h
@@ -29,6 +29,7 @@ namespace VMAP
class ModelInstance;
class GroupModel;
class VMapManager2;
+ enum class LoadResult : uint8;
enum class ModelIgnoreFlags : uint32;
struct TC_COMMON_API LocationInfo
@@ -65,7 +66,7 @@ namespace VMAP
static std::string getTileFileName(uint32 mapID, uint32 tileX, uint32 tileY);
static uint32 packTileID(uint32 tileX, uint32 tileY) { return tileX<<16 | tileY; }
static void unpackTileID(uint32 ID, uint32 &tileX, uint32 &tileY) { tileX = ID>>16; tileY = ID&0xFF; }
- static bool CanLoadMap(const std::string &basePath, uint32 mapID, uint32 tileX, uint32 tileY);
+ static LoadResult CanLoadMap(const std::string &basePath, uint32 mapID, uint32 tileX, uint32 tileY);
StaticMapTree(uint32 mapID, const std::string &basePath);
~StaticMapTree();