Make WaypointMgr to singleton.

Move global waypoint_map variable to WaypointMgr's private variable.

--HG--
branch : trunk
This commit is contained in:
Anubisss
2010-05-13 00:08:30 +02:00
parent 8223af6576
commit 4a448eca37
6 changed files with 11 additions and 9 deletions

View File

@@ -2433,7 +2433,7 @@ bool ChatHandler::HandleReloadAllPaths(const char* args)
return false;
PSendSysMessage("%s%s|r|cff00ffff%u|r", "|cff00ff00", "Loading Path: ", id);
WaypointMgr.UpdatePath(id);
sWaypointMgr->UpdatePath(id);
return true;
}

View File

@@ -3555,7 +3555,7 @@ void Map::ScriptsProcess()
break;
}
if (!WaypointMgr.GetPath(step.script->datalong))
if (!sWaypointMgr->GetPath(step.script->datalong))
{
sLog.outError("SCRIPT_COMMAND_START_MOVE source mover has an invallid path, skipping.", step.script->datalong2);
break;

View File

@@ -24,9 +24,6 @@
#include "ProgressBar.h"
#include "MapManager.h"
UNORDERED_MAP<uint32, WaypointPath*> waypoint_map;
WaypointStore WaypointMgr;
void WaypointStore::Free()
{
waypoint_map.clear();

View File

@@ -21,6 +21,8 @@
#ifndef TRINITY_WAYPOINTMANAGER_H
#define TRINITY_WAYPOINTMANAGER_H
#include <ace/Singleton.h>
#include <ace/Null_Mutex.h>
#include <vector>
struct WaypointData
@@ -34,14 +36,17 @@ struct WaypointData
};
typedef std::vector<WaypointData*> WaypointPath;
extern UNORDERED_MAP<uint32, WaypointPath*> waypoint_map;
class WaypointStore
{
private :
uint32 records;
UNORDERED_MAP<uint32, WaypointPath*> waypoint_map;
public:
// Null Mutex is OK because WaypointMgr is initialized in the World thread before World is initialized
static WaypointStore* instance() { return ACE_Singleton<WaypointStore, ACE_Null_Mutex>::instance(); }
void UpdatePath(uint32 id);
void Load();
void Free();
@@ -56,7 +61,7 @@ class WaypointStore
inline uint32 GetRecordsCount() { return records; }
};
extern WaypointStore WaypointMgr;
#define sWaypointMgr WaypointStore::instance()
#endif

View File

@@ -103,7 +103,7 @@ WaypointMovementGenerator<Creature>::Initialize(Creature &u)
StopedByPlayer = false;
if (!path_id)
path_id = u.GetWaypointPath();
waypoints = WaypointMgr.GetPath(path_id);
waypoints = sWaypointMgr->GetPath(path_id);
i_currentNode = 0;
if (waypoints && waypoints->size())
{

View File

@@ -1562,7 +1562,7 @@ void World::SetInitialWorldSettings()
objmgr.LoadTrainerSpell(); // must be after load CreatureTemplate
sLog.outString("Loading Waypoints...");
WaypointMgr.Load();
sWaypointMgr->Load();
sLog.outString("Loading Creature Formations...");
formation_mgr.LoadCreatureFormations();