feat(Core/Instance): InstanceScript: create Remove functions (#17702)

InstanceScript: create `Remove` helper functions
This commit is contained in:
KJack
2023-11-14 06:13:28 -05:00
committed by GitHub
parent 2e4ad36d20
commit 3d20f8902b
16 changed files with 77 additions and 47 deletions

View File

@@ -56,26 +56,26 @@ void InstanceScript::SaveToDB()
void InstanceScript::OnCreatureCreate(Creature* creature)
{
AddObject(creature, true);
AddMinion(creature, true);
AddObject(creature);
AddMinion(creature);
}
void InstanceScript::OnCreatureRemove(Creature* creature)
{
AddObject(creature, false);
AddMinion(creature, false);
RemoveObject(creature);
RemoveMinion(creature);
}
void InstanceScript::OnGameObjectCreate(GameObject* go)
{
AddObject(go, true);
AddDoor(go, true);
AddObject(go);
AddDoor(go);
}
void InstanceScript::OnGameObjectRemove(GameObject* go)
{
AddObject(go, false);
AddDoor(go, false);
RemoveObject(go);
RemoveObject(go);
}
ObjectGuid InstanceScript::GetObjectGuid(uint32 type) const
@@ -262,6 +262,11 @@ void InstanceScript::AddObject(Creature* obj, bool add)
}
}
void InstanceScript::RemoveObject(Creature* obj)
{
AddObject(obj, false);
}
void InstanceScript::AddObject(GameObject* obj, bool add)
{
ObjectInfoMap::const_iterator j = _gameObjectInfo.find(obj->GetEntry());
@@ -271,6 +276,11 @@ void InstanceScript::AddObject(GameObject* obj, bool add)
}
}
void InstanceScript::RemoveObject(GameObject* obj)
{
AddObject(obj, false);
}
void InstanceScript::AddObject(WorldObject* obj, uint32 type, bool add)
{
if (add)
@@ -287,6 +297,11 @@ void InstanceScript::AddObject(WorldObject* obj, uint32 type, bool add)
}
}
void InstanceScript::RemoveObject(WorldObject* obj, uint32 type)
{
AddObject(obj, type, false);
}
void InstanceScript::AddDoor(GameObject* door, bool add)
{
DoorInfoMapBounds range = doors.equal_range(door->GetEntry());
@@ -309,6 +324,11 @@ void InstanceScript::AddDoor(GameObject* door, bool add)
UpdateDoorState(door);
}
void InstanceScript::RemoveDoor(GameObject* door)
{
AddDoor(door, false);
}
void InstanceScript::AddMinion(Creature* minion, bool add)
{
MinionInfoMap::iterator itr = minions.find(minion->GetEntry());
@@ -321,6 +341,11 @@ void InstanceScript::AddMinion(Creature* minion, bool add)
itr->second.bossInfo->minion.erase(minion);
}
void InstanceScript::RemoveMinion(Creature* minion)
{
AddMinion(minion, false);
}
bool InstanceScript::SetBossState(uint32 id, EncounterState state)
{
if (id < bosses.size())

View File

@@ -275,12 +275,17 @@ protected:
void LoadMinionData(MinionData const* data);
void LoadObjectData(ObjectData const* creatureData, ObjectData const* gameObjectData);
void AddObject(Creature* obj, bool add);
void AddObject(GameObject* obj, bool add);
void AddObject(WorldObject* obj, uint32 type, bool add);
void AddObject(Creature* obj, bool add = true);
void RemoveObject(Creature* obj);
void AddObject(GameObject* obj, bool add = true);
void RemoveObject(GameObject* obj);
void AddObject(WorldObject* obj, uint32 type, bool add = true);
void RemoveObject(WorldObject* obj, uint32 type);
void AddDoor(GameObject* door, bool add);
void AddMinion(Creature* minion, bool add);
void AddDoor(GameObject* door, bool add = true);
void RemoveDoor(GameObject* door);
void AddMinion(Creature* minion, bool add = true);
void RemoveMinion(Creature* minion);
void UpdateDoorState(GameObject* door);
void UpdateMinionState(Creature* minion, EncounterState state);