aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/GameEventMgr.cpp18
-rw-r--r--src/game/Map.h6
-rw-r--r--src/game/ObjectMgr.cpp4
-rw-r--r--src/game/PoolHandler.cpp16
-rw-r--r--src/shared/Database/DBCFileLoader.h6
5 files changed, 20 insertions, 30 deletions
diff --git a/src/game/GameEventMgr.cpp b/src/game/GameEventMgr.cpp
index 3d19b8197cb..7c879d86e7f 100644
--- a/src/game/GameEventMgr.cpp
+++ b/src/game/GameEventMgr.cpp
@@ -1221,26 +1221,21 @@ void GameEventMgr::GameEventSpawn(int16 event_id)
for (GuidList::iterator itr = mGameEventCreatureGuids[internal_event_id].begin(); itr != mGameEventCreatureGuids[internal_event_id].end(); ++itr)
{
// Add to correct cell
- CreatureData const* data = objmgr.GetCreatureData(*itr);
- if (data)
+ if (CreatureData const* data = objmgr.GetCreatureData(*itr))
{
objmgr.AddCreatureToGrid(*itr, data);
// Spawn if necessary (loaded grids only)
Map* map = const_cast<Map*>(MapManager::Instance().CreateBaseMap(data->mapid));
// We use spawn coords to spawn
- if(!map->Instanceable() && !map->IsRemovalGrid(data->posX,data->posY))
+ if (!map->Instanceable() && map->IsLoaded(data->posX, data->posY))
{
Creature* pCreature = new Creature;
//sLog.outDebug("Spawning creature %u",*itr);
if (!pCreature->LoadFromDB(*itr, map))
- {
delete pCreature;
- }
else
- {
map->Add(pCreature);
- }
}
}
}
@@ -1254,25 +1249,22 @@ void GameEventMgr::GameEventSpawn(int16 event_id)
for (GuidList::iterator itr = mGameEventGameobjectGuids[internal_event_id].begin(); itr != mGameEventGameobjectGuids[internal_event_id].end(); ++itr)
{
// Add to correct cell
- GameObjectData const* data = objmgr.GetGOData(*itr);
- if (data)
+ if (GameObjectData const* data = objmgr.GetGOData(*itr))
{
objmgr.AddGameobjectToGrid(*itr, data);
// Spawn if necessary (loaded grids only)
// this base map checked as non-instanced and then only existed
Map* map = const_cast<Map*>(MapManager::Instance().CreateBaseMap(data->mapid));
// We use current coords to unspawn, not spawn coords since creature can have changed grid
- if(!map->Instanceable() && !map->IsRemovalGrid(data->posX, data->posY))
+ if (!map->Instanceable() && map->IsLoaded(data->posX, data->posY))
{
GameObject* pGameobject = new GameObject;
//sLog.outDebug("Spawning gameobject %u", *itr);
if (!pGameobject->LoadFromDB(*itr, map))
- {
delete pGameobject;
- }
else
{
- if(pGameobject->isSpawnedByDefault())
+ if (pGameobject->isSpawnedByDefault())
map->Add(pGameobject);
}
}
diff --git a/src/game/Map.h b/src/game/Map.h
index 783683d6d75..fa4e7a03468 100644
--- a/src/game/Map.h
+++ b/src/game/Map.h
@@ -304,6 +304,12 @@ class MANGOS_DLL_SPEC Map : public GridRefManager<NGridType>, public MaNGOS::Obj
return !getNGrid(p.x_coord, p.y_coord) || getNGrid(p.x_coord, p.y_coord)->GetGridState() == GRID_STATE_REMOVAL;
}
+ bool IsLoaded(float x, float y) const
+ {
+ GridPair p = Trinity::ComputeGridPair(x, y);
+ return loaded(p);
+ }
+
bool GetUnloadLock(const GridPair &p) const { return getNGrid(p.x_coord, p.y_coord)->getUnloadLock(); }
void SetUnloadLock(const GridPair &p, bool on) { getNGrid(p.x_coord, p.y_coord)->setUnloadExplicitLock(on); }
void LoadGrid(float x, float y);
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index f8b915c0189..43a59c3aa61 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -1447,10 +1447,10 @@ uint32 ObjectMgr::AddGOData(uint32 entry, uint32 mapId, float x, float y, float
// Spawn if necessary (loaded grids only)
// We use spawn coords to spawn
- if(!map->Instanceable() && !map->IsRemovalGrid(x, y))
+ if(!map->Instanceable() && map->IsLoaded(x, y))
{
GameObject *go = new GameObject;
- if(!go->LoadFromDB(guid, map))
+ if (!go->LoadFromDB(guid, map))
{
sLog.outError("AddGOData: cannot add gameobject entry %u to map", entry);
delete go;
diff --git a/src/game/PoolHandler.cpp b/src/game/PoolHandler.cpp
index e12fc048e97..ff7d0146b3d 100644
--- a/src/game/PoolHandler.cpp
+++ b/src/game/PoolHandler.cpp
@@ -229,26 +229,21 @@ void PoolGroup<T>::SpawnObject(uint32 limit, bool cache)
template <>
bool PoolGroup<Creature>::Spawn1Object(uint32 guid)
{
- CreatureData const* data = objmgr.GetCreatureData(guid);
- if (data)
+ if (CreatureData const* data = objmgr.GetCreatureData(guid))
{
objmgr.AddCreatureToGrid(guid, data);
// Spawn if necessary (loaded grids only)
Map* map = const_cast<Map*>(MapManager::Instance().CreateBaseMap(data->mapid));
// We use spawn coords to spawn
- if (!map->Instanceable() && !map->IsRemovalGrid(data->posX, data->posY))
+ if (!map->Instanceable() && map->IsLoaded(data->posX, data->posY))
{
Creature* pCreature = new Creature;
//sLog.outDebug("Spawning creature %u",guid);
if (!pCreature->LoadFromDB(guid, map))
- {
delete pCreature;
- }
else
- {
map->Add(pCreature);
- }
}
return true;
}
@@ -259,22 +254,19 @@ bool PoolGroup<Creature>::Spawn1Object(uint32 guid)
template <>
bool PoolGroup<GameObject>::Spawn1Object(uint32 guid)
{
- GameObjectData const* data = objmgr.GetGOData(guid);
- if (data)
+ if (GameObjectData const* data = objmgr.GetGOData(guid))
{
objmgr.AddGameobjectToGrid(guid, data);
// Spawn if necessary (loaded grids only)
// this base map checked as non-instanced and then only existed
Map* map = const_cast<Map*>(MapManager::Instance().CreateBaseMap(data->mapid));
// We use current coords to unspawn, not spawn coords since creature can have changed grid
- if (!map->Instanceable() && !map->IsRemovalGrid(data->posX, data->posY))
+ if (!map->Instanceable() && map->IsLoaded(data->posX, data->posY))
{
GameObject* pGameobject = new GameObject;
//sLog.outDebug("Spawning gameobject %u", guid);
if (!pGameobject->LoadFromDB(guid, map))
- {
delete pGameobject;
- }
else
{
if (pGameobject->isSpawnedByDefault())
diff --git a/src/shared/Database/DBCFileLoader.h b/src/shared/Database/DBCFileLoader.h
index ef29af84bc1..a97ab4d60fa 100644
--- a/src/shared/Database/DBCFileLoader.h
+++ b/src/shared/Database/DBCFileLoader.h
@@ -89,11 +89,11 @@ class DBCFileLoader
Record getRecord(size_t id);
/// Get begin iterator over records
- uint32 GetNumRows() const { return recordCount;}
- uint32 GetRowSize() const { return recordSize;}
+ uint32 GetNumRows() const { return recordCount; }
+ uint32 GetRowSize() const { return recordSize; }
uint32 GetCols() const { return fieldCount; }
uint32 GetOffset(size_t id) const { return (fieldsOffset != NULL && id < fieldCount) ? fieldsOffset[id] : 0; }
- bool IsLoaded() {return (data!=NULL);}
+ bool IsLoaded() { return data != NULL; }
char* AutoProduceData(const char* fmt, uint32& count, char**& indexTable, uint32 sqlRecordCount, uint32 sqlHighestIndex, char *& sqlDataTable);
char* AutoProduceStrings(const char* fmt, char* dataTable);
static uint32 GetFormatRecordSize(const char * format, int32 * index_pos = NULL);