mapio: fix load on new maps

This commit is contained in:
Ahmed Samy 2013-12-06 23:08:08 +02:00
parent 772ec208c0
commit 9154c0a678
1 changed files with 11 additions and 7 deletions

View File

@ -35,16 +35,20 @@
void Map::loadOtbm(const std::string& fileName) void Map::loadOtbm(const std::string& fileName)
{ {
try { try {
FileStreamPtr fin = g_resources.openFile(fileName);
if(!fin)
stdext::throw_exception(stdext::format("Unable to load map '%s'", fileName));
fin->cache();
if(!g_things.isOtbLoaded()) if(!g_things.isOtbLoaded())
stdext::throw_exception("OTB isn't loaded yet to load a map."); stdext::throw_exception("OTB isn't loaded yet to load a map.");
if(fin->getU32()) FileStreamPtr fin = g_resources.openFile(fileName);
stdext::throw_exception("Unknown file version detected"); if(!fin)
stdext::throw_exception(stdext::format("Unable to load map '%s'", fileName));
fin->cache();
char identifier[4];
if(fin->read(identifier, 1, 4) < 4)
stdext::throw_exception("Could not read file identifier");
if(memcmp(identifier, "OTBM", 4) != 0 && memcmp(identifier, "\0\0\0\0", 4) != 0)
stdext::throw_exception(stdext::format("Invalid file identifier detected: %s", identifier));
BinaryTreePtr root = fin->getBinaryTree(); BinaryTreePtr root = fin->getBinaryTree();
if(root->getU8()) if(root->getU8())