void Load() { char filename[1024]; if ( LoadVMap ( mapid,gx,gy ) != VMAP::VMAP_LOAD_RESULT_OK ) { printf("Cannot load vmap: Map %d , GridX %d, GridY %d\n",mapid,gx,gy); return; } sprintf ( filename,"maps/%03u%02d%02d.map",mapid, gx,gy); map = new GridMap; cout << "Loading " << filename << endl; bool r = map->loadData ( filename ); if ( !r ) { cout << "Failed to load map " << filename << endl; delete map; VMAP::VMapFactory::createOrGetVMapManager()->unloadMap(mapid,gx,gy); map = NULL; return; } loaded = true; loadedmaps++; }
GridMap * TerrainInfo::LoadMapAndVMap( const uint32 x, const uint32 y ) { //double checked lock pattern if(!m_GridMaps[x][y]) { LOCK_GUARD lock(m_mutex); if(!m_GridMaps[x][y]) { GridMap * map = new GridMap(); // map file name char *tmp=NULL; int len = sWorld.GetDataPath().length()+strlen("maps/%03u%02u%02u.map")+1; tmp = new char[len]; snprintf(tmp, len, (char *)(sWorld.GetDataPath()+"maps/%03u%02u%02u.map").c_str(),m_mapId, x, y); sLog.outDetail("Loading map %s",tmp); if(!map->loadData(tmp)) { sLog.outError("Error load map file: \n %s\n", tmp); //ASSERT(false); } delete [] tmp; m_GridMaps[x][y] = map; //load VMAPs for current map/grid... const MapEntry * i_mapEntry = sMapStore.LookupEntry(m_mapId); const char* mapName = i_mapEntry ? i_mapEntry->name[sWorld.GetDefaultDbcLocale()] : "UNNAMEDMAP\x0"; int vmapLoadResult = VMAP::VMapFactory::createOrGetVMapManager()->loadMap((sWorld.GetDataPath()+ "vmaps").c_str(), m_mapId, x, y); switch(vmapLoadResult) { case VMAP::VMAP_LOAD_RESULT_OK: sLog.outDetail("VMAP loaded name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", mapName, m_mapId, x,y,x,y); break; case VMAP::VMAP_LOAD_RESULT_ERROR: sLog.outDetail("Could not load VMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", mapName, m_mapId, x,y,x,y); break; case VMAP::VMAP_LOAD_RESULT_IGNORED: DEBUG_LOG("Ignored VMAP name:%s, id:%d, x:%d, y:%d (vmap rep.: x:%d, y:%d)", mapName, m_mapId, x,y,x,y); break; } // load navmesh MMAP::MMapFactory::createOrGetMMapManager()->loadMap(m_mapId, x, y); } } return m_GridMaps[x][y]; }
int main(int argc,char ** argv) { GridMap * map; map = new GridMap; char filename[1024]; float x= atof(argv[1]);float y = atof(argv[2]); sprintf(filename,"maps/%03u%02d%02d.map",1,(int)(32-x/SIZE_OF_GRIDS),(int)(32-y/SIZE_OF_GRIDS)); cout << "Loading " << filename << endl; bool r = map->loadData(filename); if (!r) cout << "Cannot load " << filename << " Replacing with blackmap" << endl; else{ printf("%f\n",map->getHeight(x,y)); } }
MapTerrain2::MapTerrain2(uint32 MapId) { m_MapId = MapId; memset( GridMaps, NULL, sizeof( GridMaps ) ); for(uint32 y=0;y<MAX_NUMBER_OF_GRIDS;y++) for(uint32 x=0;x<MAX_NUMBER_OF_GRIDS;x++) { //gen filename char filename[500]; snprintf(filename, 500, "maps2/%03u%02u%02u.map",m_MapId,x,y); //see if file exist FILE *pf=fopen(filename,"rb"); if( pf == NULL ) continue; fclose( pf ); //load content into mem GridMap *gm = new GridMap(); gm->loadData(filename); //store the struct GridMaps[ x ] [ y ] = gm; } }