diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-04-24 12:09:10 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-04-24 12:09:10 +0200 |
| commit | 111fc6ac6fd703bb645046e7a477a986d8519a64 (patch) | |
| tree | c1ecc58df252a2b5144ac721be980ce409890add /src/server/game/Events | |
| parent | 597485f1d4ccadaccf800a2663f3d74342aa5c4d (diff) | |
Core/Battlegrounds: Replace manual criteria timer starts in battlegrounds with new GameEvents api
Diffstat (limited to 'src/server/game/Events')
| -rw-r--r-- | src/server/game/Events/GameEventSender.cpp | 31 | ||||
| -rw-r--r-- | src/server/game/Events/GameEventSender.h | 4 |
2 files changed, 26 insertions, 9 deletions
diff --git a/src/server/game/Events/GameEventSender.cpp b/src/server/game/Events/GameEventSender.cpp index a454ce547a2..0d798826197 100644 --- a/src/server/game/Events/GameEventSender.cpp +++ b/src/server/game/Events/GameEventSender.cpp @@ -22,6 +22,7 @@ #include "InstanceScript.h" #include "Map.h" #include "ObjectMgr.h" +#include "Player.h" #include "Util.h" void GameEvents::Trigger(uint32 gameEventId, WorldObject* source, WorldObject* target) @@ -38,15 +39,27 @@ void GameEvents::Trigger(uint32 gameEventId, WorldObject* source, WorldObject* t zoneScript->ProcessEvent(target, gameEventId, source); Map* map = refForMapAndZoneScript->GetMap(); - if (target) - { - if (GameObject* goTarget = target->ToGameObject()) - if (GameObjectAI* goAI = goTarget->AI()) - goAI->EventInform(gameEventId); - - if (BattlegroundMap* bgMap = map->ToBattlegroundMap()) - bgMap->GetBG()->ProcessEvent(target, gameEventId, source); - } + if (GameObject* goTarget = Object::ToGameObject(target)) + if (GameObjectAI* goAI = goTarget->AI()) + goAI->EventInform(gameEventId); + + if (Player* sourcePlayer = Object::ToPlayer(source)) + TriggerForPlayer(gameEventId, sourcePlayer); + + TriggerForMap(gameEventId, map, source, target); +} + +void GameEvents::TriggerForPlayer(uint32 gameEventId, Player* source) +{ + Map* map = source->GetMap(); + if (map->Instanceable()) + source->StartCriteriaTimer(CriteriaStartEvent::SendEvent, gameEventId); +} + +void GameEvents::TriggerForMap(uint32 gameEventId, Map* map, WorldObject* source, WorldObject* target) +{ + if (BattlegroundMap* bgMap = map->ToBattlegroundMap()) + bgMap->GetBG()->ProcessEvent(target, gameEventId, source); map->ScriptsStart(sEventScripts, gameEventId, source, target); } diff --git a/src/server/game/Events/GameEventSender.h b/src/server/game/Events/GameEventSender.h index b2e599ddb51..5ec31aa41c5 100644 --- a/src/server/game/Events/GameEventSender.h +++ b/src/server/game/Events/GameEventSender.h @@ -20,11 +20,15 @@ #include "Define.h" +class Map; +class Player; class WorldObject; namespace GameEvents { TC_GAME_API void Trigger(uint32 gameEventId, WorldObject* source, WorldObject* target); +TC_GAME_API void TriggerForPlayer(uint32 gameEventId, Player* source); +TC_GAME_API void TriggerForMap(uint32 gameEventId, Map* map, WorldObject* source = nullptr, WorldObject* target = nullptr); } #endif // GameEventSender_h__ |
