feat(Core/Battlegrounds) Reworked enhanced bg system for modules (#2521)
This commit is contained in:
@@ -1780,17 +1780,24 @@ void GameObject::Use(Unit* user)
|
||||
GameObjectTemplate const* info = GetGOInfo();
|
||||
if (info)
|
||||
{
|
||||
switch (info->entry)
|
||||
if (GameObject::gameObjectToEventFlag.find(info->entry) != GameObject::gameObjectToEventFlag.end())
|
||||
{
|
||||
case 179785: // Silverwing Flag
|
||||
case 179786: // Warsong Flag
|
||||
if (bg->GetBgTypeID(true) == BATTLEGROUND_WS)
|
||||
bg->EventPlayerClickedOnFlag(player, this);
|
||||
break;
|
||||
case 184142: // Netherstorm Flag
|
||||
if (bg->GetBgTypeID(true) == BATTLEGROUND_EY)
|
||||
bg->EventPlayerClickedOnFlag(player, this);
|
||||
break;
|
||||
GameObject::gameObjectToEventFlag[info->entry](player, this, bg);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (info->entry)
|
||||
{
|
||||
case 179785: // Silverwing Flag
|
||||
case 179786: // Warsong Flag
|
||||
if (bg->GetBgTypeID(true) == BATTLEGROUND_WS)
|
||||
bg->EventPlayerClickedOnFlag(player, this);
|
||||
break;
|
||||
case 184142: // Netherstorm Flag
|
||||
if (bg->GetBgTypeID(true) == BATTLEGROUND_EY)
|
||||
bg->EventPlayerClickedOnFlag(player, this);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//this cause to call return, all flags must be deleted here!!
|
||||
@@ -2490,3 +2497,5 @@ void GameObject::UpdateModelPosition()
|
||||
GetMap()->InsertGameObjectModel(*m_model);
|
||||
}
|
||||
}
|
||||
|
||||
std::unordered_map<int, goEventFlag> GameObject::gameObjectToEventFlag = {};
|
||||
|
||||
@@ -20,6 +20,8 @@ class Transport;
|
||||
class StaticTransport;
|
||||
class MotionTransport;
|
||||
|
||||
typedef void(*goEventFlag)(Player*, GameObject*, Battleground*);
|
||||
|
||||
#define MAX_GAMEOBJECT_QUEST_ITEMS 6
|
||||
|
||||
// from `gameobject_template`
|
||||
@@ -879,6 +881,8 @@ class GameObject : public WorldObject, public GridObject<GameObject>, public Mov
|
||||
|
||||
void UpdateModelPosition();
|
||||
|
||||
static std::unordered_map<int, goEventFlag> gameObjectToEventFlag; // Gameobject -> event flag
|
||||
|
||||
protected:
|
||||
bool AIM_Initialize();
|
||||
void UpdateModel(); // updates model in case displayId were changed
|
||||
|
||||
Reference in New Issue
Block a user