void MapInstanced::CreateInstance(uint32 InstanceId, Map* &map) { if (!IsValidInstance(InstanceId)) { // instance is invalid, need to verify map presence if (map) { // map for the instance is present, but the instance itself is no more valid, destroy map Guard guard(*this); map->Reset(); m_InstancedMaps.erase(InstanceId); delete map; map = NULL; } } // verify, if we have the map created, and create it if needed if (!map) { // map does not exist, create it Guard guard(*this); map = new Map(GetId(), GetGridExpiry(), InstanceId); m_InstancedMaps[InstanceId] = map; } }
BattlegroundMap* MapInstanced::CreateBattleground(uint32 InstanceId, Battleground* bg) { // load/create a map ACE_GUARD_RETURN(ACE_Thread_Mutex, Guard, Lock, NULL); sLog->outDebug(LOG_FILTER_MAPS, "MapInstanced::CreateBattleground: map bg %d for %d created.", InstanceId, GetId()); PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel( bg->GetMapId(), bg->GetMinLevel()); uint8 spawnMode; if (bracketEntry) spawnMode = bracketEntry->difficulty; else spawnMode = REGULAR_DIFFICULTY; BattlegroundMap *map = new BattlegroundMap(GetId(), GetGridExpiry(), InstanceId, this, spawnMode); ASSERT(map->IsBattlegroundOrArena()); map->SetBG(bg); bg->SetBgMap(map); m_InstancedMaps[InstanceId] = map; return map; }
BattlegroundMap* MapInstanced::CreateBattleground(uint32 InstanceId, Battleground* pBg) { if(!pBg) return NULL; // load/create map ACE_GUARD_RETURN(ACE_Thread_Mutex, Guard, Lock, NULL); PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(pBg->GetMapId(), pBg->GetMinLevel()); uint8 spawnMode; if(bracketEntry) spawnMode = bracketEntry->difficulty; else spawnMode = REGULAR_DIFFICULTY; BattlegroundMap* pMap = new BattlegroundMap(GetId(), GetGridExpiry(), InstanceId, this, spawnMode); ASSERT(pMap->IsBattlegroundOrArena()); pMap->SetBG(pBg); pBg->SetBgMap(pMap); m_InstancedMaps[InstanceId] = pMap; return pMap; }
InstanceMap* MapInstanced::CreateInstance(uint32 InstanceId, InstanceSave *save, uint8 difficulty) { // load/create a map Guard guard(*this); // make sure we have a valid map id const MapEntry* entry = sMapStore.LookupEntry(GetId()); if (!entry) { sLog.outError("CreateInstance: no entry for map %d", GetId()); ASSERT(false); } const InstanceTemplate * iTemplate = objmgr.GetInstanceTemplate(GetId()); if (!iTemplate) { sLog.outError("CreateInstance: no instance template for map %d", GetId()); ASSERT(false); } // some instances only have one difficulty if (entry && !entry->SupportsHeroicMode()) difficulty = DIFFICULTY_NORMAL; sLog.outDebug("MapInstanced::CreateInstance: %s map instance %d for %d created with difficulty %s", save?"":"new ", InstanceId, GetId(), difficulty?"heroic":"normal"); InstanceMap *map = new InstanceMap(GetId(), GetGridExpiry(), InstanceId, difficulty, this); ASSERT(map->IsDungeon()); bool load_data = save != NULL; map->CreateInstanceData(load_data); m_InstancedMaps[InstanceId] = map; return map; }
InstanceMap* MapInstanced::CreateInstance(uint32 InstanceId, InstanceSave* save, Difficulty difficulty) { // load/create a map INFINITY_GUARD(ACE_Thread_Mutex, Lock); // make sure we have a valid map id const MapEntry* entry = sMapStore.LookupEntry(GetId()); if (!entry) { IC_LOG_ERROR("maps", "CreateInstance: no entry for map %d", GetId()); ASSERT(false); } const InstanceTemplate* iTemplate = sObjectMgr->GetInstanceTemplate(GetId()); if (!iTemplate) { IC_LOG_ERROR("maps", "CreateInstance: no instance template for map %d", GetId()); ASSERT(false); } IC_LOG_DEBUG("maps", "MapInstanced::CreateInstance: %s map instance %d for %d created with difficulty %s", save?"":"new ", InstanceId, GetId(), difficulty?"heroic":"normal"); InstanceMap* map = new InstanceMap(GetId(), GetGridExpiry(), InstanceId, difficulty, this); ASSERT(map->IsDungeon()); map->LoadRespawnTimes(); bool load_data = save != NULL; map->CreateInstanceData(load_data); m_InstancedMaps[InstanceId] = map; return map; }
InstanceMap* MapInstanced::CreateInstanceMap(uint32 InstanceId, Difficulty difficulty, InstanceSave *save) { // load/create a map Guard guard(*this); // make sure we have a valid map id if (!sMapStore.LookupEntry(GetId())) { sLog.outError("CreateInstanceMap: no entry for map %d", GetId()); MANGOS_ASSERT(false); } if (!ObjectMgr::GetInstanceTemplate(GetId())) { sLog.outError("CreateInstanceMap: no instance template for map %d", GetId()); MANGOS_ASSERT(false); } // some instances only have one difficulty if (!GetMapDifficultyData(GetId(),difficulty)) difficulty = DUNGEON_DIFFICULTY_NORMAL; DEBUG_LOG("MapInstanced::CreateInstanceMap: %s map instance %d for %d created with difficulty %d", save?"":"new ", InstanceId, GetId(), difficulty); InstanceMap *map = new InstanceMap(GetId(), GetGridExpiry(), InstanceId, difficulty, this); MANGOS_ASSERT(map->IsDungeon()); bool load_data = save != NULL; map->CreateInstanceData(load_data); m_InstancedMaps[InstanceId] = map; return map; }
InstanceMap* MapInstanced::CreateInstance(uint32 InstanceId, InstanceSave* save, Difficulty difficulty) { // load/create a map TRINITY_GUARD(ACE_Thread_Mutex, Lock); // make sure we have a valid map id const MapEntry* entry = sMapStore.LookupEntry(GetId()); if (!entry) { sLog->outError("CreateInstance: no entry for map %d", GetId()); ASSERT(false); } const InstanceTemplate* iTemplate = sObjectMgr->GetInstanceTemplate(GetId()); if (!iTemplate) { sLog->outError("CreateInstance: no instance template for map %d", GetId()); ASSERT(false); } // some instances only have one difficulty GetDownscaledMapDifficultyData(GetId(), difficulty); sLog->outDebug(LOG_FILTER_MAPS, "MapInstanced::CreateInstance: %s map instance %d for %d created with difficulty %s", save?"":"new ", InstanceId, GetId(), difficulty?"heroic":"normal"); InstanceMap* map = new InstanceMap(GetId(), GetGridExpiry(), InstanceId, difficulty, this); ASSERT(map->IsDungeon()); bool load_data = save != NULL; map->CreateInstanceData(load_data); m_InstancedMaps[InstanceId] = map; return map; }
GarrisonMap* MapInstanced::CreateGarrison(uint32 instanceId, Player* owner) { std::lock_guard<std::mutex> lock(_mapLock); GarrisonMap* map = new GarrisonMap(GetId(), GetGridExpiry(), instanceId, this, owner->GetGUID()); ASSERT(map->IsGarrison()); m_InstancedMaps[instanceId] = map; return map; }
BattleGroundMap* MapInstanced::CreateBattleGround(uint32 InstanceId) { // load/create a map Guard guard(*this); sLog.outDebug("MapInstanced::CreateBattleGround: map bg %d for %d created.", InstanceId, GetId()); BattleGroundMap *map = new BattleGroundMap(GetId(), GetGridExpiry(), InstanceId); assert(map->IsBattleGroundOrArena()); m_InstancedMaps[InstanceId] = map; return map; }
BattlegroundMap* MapInstanced::CreateBattleground(uint32 InstanceId, Battleground* bg) { // load/create a map ACE_GUARD_RETURN(ACE_Thread_Mutex, Guard, Lock, NULL); sLog->outDebug (LOG_FILTER_NETWORKIO, "MapInstanced::CreateBattleground: map bg %d for %d created.", InstanceId, GetId()); BattlegroundMap *map = new BattlegroundMap(GetId(), GetGridExpiry(), InstanceId, this); ASSERT(map->IsBattlegroundOrArena()); map->SetBG(bg); bg->SetBgMap(map); m_InstancedMaps[InstanceId] = map; return map; }
BattleGroundMap* MapInstanced::CreateBattleGroundMap(uint32 InstanceId, BattleGround* bg) { // load/create a map Guard guard(*this); DEBUG_LOG("MapInstanced::CreateBattleGroundMap: instance:%d for map:%d and bgType:%d created.", InstanceId, GetId(), bg->GetTypeID()); BattleGroundMap *map = new BattleGroundMap(GetId(), GetGridExpiry(), InstanceId, this); MANGOS_ASSERT(map->IsBattleGroundOrArena()); map->SetBG(bg); bg->SetBgMap(map); m_InstancedMaps[InstanceId] = map; return map; }
BattlegroundMap* MapInstanced::CreateBattleground(uint32 InstanceId, Battleground* bg) { // load/create a map std::lock_guard<std::mutex> lock(_mapLock); TC_LOG_DEBUG("maps", "MapInstanced::CreateBattleground: map bg %d for %d created.", InstanceId, GetId()); BattlegroundMap* map = new BattlegroundMap(GetId(), GetGridExpiry(), InstanceId, this, DIFFICULTY_NONE); ASSERT(map->IsBattlegroundOrArena()); map->SetBG(bg); bg->SetBgMap(map); m_InstancedMaps[InstanceId] = map; return map; }
BattleGroundMap* MapInstanced::CreateBattleGround(uint32 InstanceId, BattleGround* bg) { // load/create a map Guard guard(*this); sLog.outDebug("MapInstanced::CreateBattleGround: map bg %d for %d created.", InstanceId, GetId()); BattleGroundMap *map = new BattleGroundMap(GetId(), GetGridExpiry(), InstanceId, this); ASSERT(map->IsBattleGroundOrArena()); map->SetBG(bg); bg->SetBgMap(map); m_InstancedMaps[InstanceId] = map; return map; }
BattlegroundMap* MapInstanced::CreateBattleground(uint32 InstanceId, Battleground* bg) { // load/create a map INFINITY_GUARD(ACE_Thread_Mutex, Lock); IC_LOG_DEBUG("maps", "MapInstanced::CreateBattleground: map bg %d for %d created.", InstanceId, GetId()); uint8 spawnMode; spawnMode = REGULAR_DIFFICULTY; BattlegroundMap* map = new BattlegroundMap(GetId(), GetGridExpiry(), InstanceId, this, spawnMode); ASSERT(map->IsBattlegroundOrArena()); map->SetBG(bg); bg->SetBgMap(map); m_InstancedMaps[InstanceId] = map; return map; }
BattleGroundMap* MapInstanced::CreateBattleGroundMap(uint32 InstanceId, BattleGround* bg) { // load/create a map Guard guard(*this); DEBUG_LOG("MapInstanced::CreateBattleGroundMap: instance:%d for map:%d and bgType:%d created.", InstanceId, GetId(), bg->GetTypeID()); PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(bg->GetMapId(),bg->GetMinLevel()); uint8 spawnMode = bracketEntry ? bracketEntry->difficulty : REGULAR_DIFFICULTY; BattleGroundMap *map = new BattleGroundMap(GetId(), GetGridExpiry(), InstanceId, this, spawnMode); MANGOS_ASSERT(map->IsBattleGroundOrArena()); map->SetBG(bg); bg->SetBgMap(map); m_InstancedMaps[InstanceId] = map; return map; }
InstanceMap* MapInstanced::CreateInstance(uint32 InstanceId, InstanceSave* save, Difficulty difficulty, TeamId team) { // load/create a map std::lock_guard<std::mutex> lock(_mapLock); // make sure we have a valid map id const MapEntry* entry = sMapStore.LookupEntry(GetId()); if (!entry) { TC_LOG_ERROR("maps", "CreateInstance: no entry for map %d", GetId()); ABORT(); } const InstanceTemplate* iTemplate = sObjectMgr->GetInstanceTemplate(GetId()); if (!iTemplate) { TC_LOG_ERROR("maps", "CreateInstance: no instance template for map %d", GetId()); ABORT(); } // some instances only have one difficulty sDB2Manager.GetDownscaledMapDifficultyData(GetId(), difficulty); TC_LOG_DEBUG("maps", "MapInstanced::CreateInstance: %s map instance %d for %d created with difficulty %s", save ? "" : "new ", InstanceId, GetId(), difficulty ? "heroic" : "normal"); InstanceMap* map = new InstanceMap(GetId(), GetGridExpiry(), InstanceId, difficulty, this); ASSERT(map->IsDungeon()); map->LoadRespawnTimes(); map->LoadCorpseData(); bool load_data = save != NULL; map->CreateInstanceData(load_data); if (InstanceScenario* instanceScenario = sScenarioMgr->CreateInstanceScenario(map, team)) map->SetInstanceScenario(instanceScenario); if (sWorld->getBoolConfig(CONFIG_INSTANCEMAP_LOAD_GRIDS)) map->LoadAllCells(); m_InstancedMaps[InstanceId] = map; return map; }
BattlegroundMap* MapInstanced::CreateBattleground(uint32 InstanceId, Battleground* bg) { // load/create a map std::lock_guard<std::mutex> lock(_mapLock); TC_LOG_DEBUG("maps", "MapInstanced::CreateBattleground: map bg %d for %d created.", InstanceId, GetId()); PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(bg->GetMapId(), bg->GetMinLevel()); uint8 spawnMode; if (bracketEntry) spawnMode = bracketEntry->difficulty; else spawnMode = REGULAR_DIFFICULTY; BattlegroundMap* map = new BattlegroundMap(GetId(), GetGridExpiry(), InstanceId, this, spawnMode); ASSERT(map->IsBattlegroundOrArena()); map->SetBG(bg); bg->SetBgMap(map); m_InstancedMaps[InstanceId] = map; return map; }
InstanceMap* MapInstanced::CreateInstance(uint32 InstanceId, InstanceSave* save, Difficulty difficulty) { // load/create a map std::lock_guard<std::mutex> lock(_mapLock); // make sure we have a valid map id const MapEntry* entry = sMapStore.LookupEntry(GetId()); if (!entry) { TC_LOG_ERROR("maps", "CreateInstance: no entry for map %d", GetId()); ASSERT(false); } const InstanceTemplate* iTemplate = sObjectMgr->GetInstanceTemplate(GetId()); if (!iTemplate) { TC_LOG_ERROR("maps", "CreateInstance: no instance template for map %d", GetId()); ASSERT(false); } // some instances only have one difficulty GetDownscaledMapDifficultyData(GetId(), difficulty); TC_LOG_DEBUG("maps", "MapInstanced::CreateInstance: %s map instance %d for %d created with difficulty %s", save ? "" : "new ", InstanceId, GetId(), difficulty ? "heroic" : "normal"); InstanceMap* map = new InstanceMap(GetId(), GetGridExpiry(), InstanceId, difficulty, this); ASSERT(map->IsDungeon()); map->LoadRespawnTimes(); map->LoadCorpseData(); bool load_data = save != NULL; map->CreateInstanceData(load_data); m_InstancedMaps[InstanceId] = map; return map; }