improved old map support

This commit is contained in:
Perttu Ahola 2011-04-11 00:19:40 +03:00
parent dc6966cb9d
commit 3236032101

@ -5122,13 +5122,30 @@ MapSector* ServerMap::loadSectorMeta(std::string dirname)
v2s16 p2d = getSectorPos(dirname); v2s16 p2d = getSectorPos(dirname);
std::string dir = m_savedir + "/sectors/" + dirname; std::string dir = m_savedir + "/sectors/" + dirname;
ServerMapSector *sector = NULL;
std::string fullpath = dir + "/meta"; std::string fullpath = dir + "/meta";
std::ifstream is(fullpath.c_str(), std::ios_base::binary); std::ifstream is(fullpath.c_str(), std::ios_base::binary);
if(is.good() == false) if(is.good() == false)
throw FileNotGoodException("Cannot open sector metafile"); {
// If the directory exists anyway, it probably is in some old
ServerMapSector *sector = ServerMapSector::deSerialize // format. Just go ahead and create the sector.
(is, this, p2d, m_sectors); if(fs::PathExists(dir))
{
dstream<<"ServerMap::loadSectorMeta(): Sector metafile "
<<fullpath<<" doesn't exist but directory does."
<<" Continuing with a sector with no metadata."
<<std::endl;
sector = createSector(p2d);
}
else
throw FileNotGoodException("Cannot open sector metafile");
}
else
{
sector = ServerMapSector::deSerialize
(is, this, p2d, m_sectors);
}
sector->differs_from_disk = false; sector->differs_from_disk = false;