Files
TCPlayerbotCore/src/server/game/Scripting/ScriptSystem.h
T

103 lines
2.7 KiB
C++
Raw Normal View History

2009-08-16 17:30:05 +02:00
/* 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 */
2009-10-17 15:51:44 -07:00
2009-08-16 17:30:05 +02:00
#ifndef SC_SYSTEM_H
#define SC_SYSTEM_H
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
#define TEXT_SOURCE_RANGE -1000000 //the amount of entries each text source has available
2009-10-17 15:51:44 -07:00
//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,
2009-10-17 15:51:44 -07:00
FACTION_ESCORT_A_NEUTRAL_ACTIVE = 231,
FACTION_ESCORT_H_NEUTRAL_ACTIVE = 232,
FACTION_ESCORT_N_NEUTRAL_ACTIVE = 250,
2009-10-17 15:51:44 -07:00
FACTION_ESCORT_N_FRIEND_PASSIVE = 290,
FACTION_ESCORT_N_FRIEND_ACTIVE = 495,
2009-10-17 15:51:44 -07:00
FACTION_ESCORT_A_PASSIVE = 774,
FACTION_ESCORT_H_PASSIVE = 775,
2009-10-17 15:51:44 -07:00
FACTION_ESCORT_N_ACTIVE = 1986,
FACTION_ESCORT_H_ACTIVE = 2046
};
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
struct ScriptPointMove
{
uint32 uiCreatureEntry;
uint32 uiPointId;
float fX;
float fY;
float fZ;
uint32 uiWaitTime;
};
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
struct StringTextData
{
uint32 uiSoundId;
uint8 uiType;
uint32 uiLanguage;
uint32 uiEmote;
};
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
class SystemMgr
{
public:
2010-08-04 00:24:04 +02:00
2009-08-16 19:38:18 +02:00
SystemMgr();
~SystemMgr() {}
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
static SystemMgr& Instance();
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
//Maps and lists
typedef UNORDERED_MAP<int32, StringTextData> TextDataMap;
typedef UNORDERED_MAP<uint32, std::vector<ScriptPointMove> > PointMoveMap;
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
//Database
void LoadVersion();
void LoadScriptTexts();
void LoadScriptTextsCustom();
void LoadScriptWaypoints();
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
//Retrive from storage
StringTextData const* GetTextData(int32 uiTextId) const
{
TextDataMap::const_iterator itr = m_mTextDataMap.find(uiTextId);
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
if (itr == m_mTextDataMap.end())
return NULL;
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
return &itr->second;
}
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
std::vector<ScriptPointMove> const &GetPointMoveList(uint32 uiCreatureEntry) const
{
static std::vector<ScriptPointMove> vEmpty;
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
PointMoveMap::const_iterator itr = m_mPointMoveMap.find(uiCreatureEntry);
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
if (itr == m_mPointMoveMap.end())
return vEmpty;
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
return itr->second;
}
2009-10-17 15:51:44 -07:00
2009-08-16 19:38:18 +02:00
protected:
2010-08-04 00:24:04 +02:00
2009-08-16 19:38:18 +02:00
TextDataMap m_mTextDataMap; //additional data for text strings
PointMoveMap m_mPointMoveMap; //coordinates for waypoints
};
2009-10-17 15:51:44 -07:00
#define sScriptSystemMgr SystemMgr::Instance()
2010-08-04 00:24:04 +02:00
2009-08-16 17:30:05 +02:00
#endif