feat(Core/Battlegrounds) Reworked enhanced bg system for modules (#2521)

This commit is contained in:
Shard
2020-01-19 17:09:02 +01:00
committed by Francesco Borzì
parent bb42c7c5eb
commit eadcb1a782
6 changed files with 659 additions and 602 deletions
@@ -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