diff options
Diffstat (limited to 'src/server/game/Scripting/ScriptSystem.h')
-rw-r--r-- | src/server/game/Scripting/ScriptSystem.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptSystem.h b/src/server/game/Scripting/ScriptSystem.h new file mode 100644 index 0000000000..cc65d493f3 --- /dev/null +++ b/src/server/game/Scripting/ScriptSystem.h @@ -0,0 +1,80 @@ +/* Copyright (C) 2006 - 2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> +* This program is free software licensed under GPL version 2 +* Please see the included DOCS/LICENSE.TXT for more information */ + +#ifndef SC_SYSTEM_H +#define SC_SYSTEM_H + +#include "ScriptMgr.h" +#include <ace/Singleton.h> + +#define TEXT_SOURCE_RANGE -1000000 //the amount of entries each text source has available + +//TODO: find better namings and definitions. +//N=Neutral, A=Alliance, H=Horde. +//NEUTRAL or FRIEND = Hostility to player surroundings (not a good definition) +//ACTIVE or PASSIVE = Hostility to environment surroundings. +enum eEscortFaction +{ + FACTION_ESCORT_A_NEUTRAL_PASSIVE = 10, + FACTION_ESCORT_H_NEUTRAL_PASSIVE = 33, + FACTION_ESCORT_N_NEUTRAL_PASSIVE = 113, + + FACTION_ESCORT_A_NEUTRAL_ACTIVE = 231, + FACTION_ESCORT_H_NEUTRAL_ACTIVE = 232, + FACTION_ESCORT_N_NEUTRAL_ACTIVE = 250, + + FACTION_ESCORT_N_FRIEND_PASSIVE = 290, + FACTION_ESCORT_N_FRIEND_ACTIVE = 495, + + FACTION_ESCORT_A_PASSIVE = 774, + FACTION_ESCORT_H_PASSIVE = 775, + + FACTION_ESCORT_N_ACTIVE = 1986, + FACTION_ESCORT_H_ACTIVE = 2046 +}; + +struct ScriptPointMove +{ + uint32 uiCreatureEntry; + uint32 uiPointId; + float fX; + float fY; + float fZ; + uint32 uiWaitTime; +}; + +typedef std::vector<ScriptPointMove> ScriptPointVector; + +class SystemMgr +{ + friend class ACE_Singleton<SystemMgr, ACE_Null_Mutex>; + SystemMgr() {} + ~SystemMgr() {} + + public: + typedef UNORDERED_MAP<uint32, ScriptPointVector> PointMoveMap; + + //Database + void LoadScriptWaypoints(); + + ScriptPointVector const& GetPointMoveList(uint32 creatureEntry) const + { + PointMoveMap::const_iterator itr = m_mPointMoveMap.find(creatureEntry); + + if (itr == m_mPointMoveMap.end()) + return _empty; + + return itr->second; + } + + protected: + PointMoveMap m_mPointMoveMap; //coordinates for waypoints + + private: + static ScriptPointVector const _empty; +}; + +#define sScriptSystemMgr ACE_Singleton<SystemMgr, ACE_Null_Mutex>::instance() + +#endif |