diff options
author | Gildor <gildor55@gmail.com> | 2019-07-25 12:55:42 +0200 |
---|---|---|
committer | Giacomo Pozzoni <giacomopoz@gmail.com> | 2019-07-25 12:55:42 +0200 |
commit | 6d2cd7f6873202877b3cf3685eb14f6690b6c6fb (patch) | |
tree | 4b53488634a6dfcbe15e460ebf6a4d174ba21627 | |
parent | 0c317498a57b3983de61d381d684a77176b281e4 (diff) |
Core/Arenas: Remove doors in RL, NA and BE when arena has begun (#23606)
6 files changed, 114 insertions, 0 deletions
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp index abb75bc8361..5b10369889e 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.cpp @@ -27,6 +27,27 @@ BattlegroundBE::BattlegroundBE() BgObjects.resize(BG_BE_OBJECT_MAX); } +void BattlegroundBE::PostUpdateImpl(uint32 diff) +{ + if (GetStatus() != STATUS_IN_PROGRESS) + return; + + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case BG_BE_EVENT_REMOVE_DOORS: + for (uint32 i = BG_BE_OBJECT_DOOR_1; i <= BG_BE_OBJECT_DOOR_2; ++i) + DelObject(i); + break; + default: + break; + } + } +} + void BattlegroundBE::StartingEventCloseDoors() { for (uint32 i = BG_BE_OBJECT_DOOR_1; i <= BG_BE_OBJECT_DOOR_4; ++i) @@ -40,6 +61,7 @@ void BattlegroundBE::StartingEventOpenDoors() { for (uint32 i = BG_BE_OBJECT_DOOR_1; i <= BG_BE_OBJECT_DOOR_2; ++i) DoorOpen(i); + _events.ScheduleEvent(BG_BE_EVENT_REMOVE_DOORS, BG_BE_REMOVE_DOORS_TIMER); for (uint32 i = BG_BE_OBJECT_BUFF_1; i <= BG_BE_OBJECT_BUFF_2; ++i) SpawnBGObject(i, 60); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundBE.h b/src/server/game/Battlegrounds/Zones/BattlegroundBE.h index 9db9f9de5ed..7f6b1e157e3 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundBE.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundBE.h @@ -20,6 +20,7 @@ #define __BATTLEGROUNDBE_H #include "Arena.h" +#include "EventMap.h" enum BattlegroundBEObjectTypes { @@ -42,6 +43,16 @@ enum BattlegroundBEGameObjects BG_BE_OBJECT_TYPE_BUFF_2 = 184664 }; +enum BattlegroundBEData +{ + BG_BE_REMOVE_DOORS_TIMER = 5000 +}; + +enum BattlegroundBEEvents +{ + BG_BE_EVENT_REMOVE_DOORS = 1 +}; + class BattlegroundBE : public Arena { public: @@ -54,5 +65,10 @@ class BattlegroundBE : public Arena void HandleAreaTrigger(Player* Source, uint32 Trigger) override; bool SetupBattleground() override; void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; + + private: + void PostUpdateImpl(uint32 diff) override; + + EventMap _events; }; #endif diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp index cae952d8326..1fb9884ce90 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.cpp @@ -27,6 +27,27 @@ BattlegroundNA::BattlegroundNA() BgObjects.resize(BG_NA_OBJECT_MAX); } +void BattlegroundNA::PostUpdateImpl(uint32 diff) +{ + if (GetStatus() != STATUS_IN_PROGRESS) + return; + + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case BG_NA_EVENT_REMOVE_DOORS: + for (uint32 i = BG_NA_OBJECT_DOOR_1; i <= BG_NA_OBJECT_DOOR_2; ++i) + DelObject(i); + break; + default: + break; + } + } +} + void BattlegroundNA::StartingEventCloseDoors() { for (uint32 i = BG_NA_OBJECT_DOOR_1; i <= BG_NA_OBJECT_DOOR_4; ++i) @@ -37,6 +58,7 @@ void BattlegroundNA::StartingEventOpenDoors() { for (uint32 i = BG_NA_OBJECT_DOOR_1; i <= BG_NA_OBJECT_DOOR_2; ++i) DoorOpen(i); + _events.ScheduleEvent(BG_NA_EVENT_REMOVE_DOORS, BG_NA_REMOVE_DOORS_TIMER); for (uint32 i = BG_NA_OBJECT_BUFF_1; i <= BG_NA_OBJECT_BUFF_2; ++i) SpawnBGObject(i, 60); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundNA.h b/src/server/game/Battlegrounds/Zones/BattlegroundNA.h index 2bd1c5be3f9..0243f41c3e1 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundNA.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundNA.h @@ -19,6 +19,7 @@ #define __BATTLEGROUNDNA_H #include "Arena.h" +#include "EventMap.h" enum BattlegroundNAObjectTypes { @@ -41,6 +42,16 @@ enum BattlegroundNAGameObjects BG_NA_OBJECT_TYPE_BUFF_2 = 184664 }; +enum BattlegroundNAData +{ + BG_NA_REMOVE_DOORS_TIMER = 5000 +}; + +enum BattlegroundNAEvents +{ + BG_NA_EVENT_REMOVE_DOORS = 1 +}; + class BattlegroundNA : public Arena { public: @@ -53,5 +64,10 @@ class BattlegroundNA : public Arena void HandleAreaTrigger(Player* Source, uint32 Trigger) override; bool SetupBattleground() override; void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; + + private: + void PostUpdateImpl(uint32 diff) override; + + EventMap _events; }; #endif diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp index 6b68dc04f6c..5ac05722f35 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.cpp @@ -27,6 +27,27 @@ BattlegroundRL::BattlegroundRL() BgObjects.resize(BG_RL_OBJECT_MAX); } +void BattlegroundRL::PostUpdateImpl(uint32 diff) +{ + if (GetStatus() != STATUS_IN_PROGRESS) + return; + + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case BG_RL_EVENT_REMOVE_DOORS: + for (uint32 i = BG_RL_OBJECT_DOOR_1; i <= BG_RL_OBJECT_DOOR_2; ++i) + DelObject(i); + break; + default: + break; + } + } +} + void BattlegroundRL::StartingEventCloseDoors() { for (uint32 i = BG_RL_OBJECT_DOOR_1; i <= BG_RL_OBJECT_DOOR_2; ++i) @@ -37,6 +58,7 @@ void BattlegroundRL::StartingEventOpenDoors() { for (uint32 i = BG_RL_OBJECT_DOOR_1; i <= BG_RL_OBJECT_DOOR_2; ++i) DoorOpen(i); + _events.ScheduleEvent(BG_RL_EVENT_REMOVE_DOORS, BG_RL_REMOVE_DOORS_TIMER); for (uint32 i = BG_RL_OBJECT_BUFF_1; i <= BG_RL_OBJECT_BUFF_2; ++i) SpawnBGObject(i, 60); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundRL.h b/src/server/game/Battlegrounds/Zones/BattlegroundRL.h index 759fdf4a659..d7514832b35 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundRL.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundRL.h @@ -19,6 +19,7 @@ #define __BATTLEGROUNDRL_H #include "Arena.h" +#include "EventMap.h" enum BattlegroundRLObjectTypes { @@ -37,6 +38,16 @@ enum BattlegroundRLGameObjects BG_RL_OBJECT_TYPE_BUFF_2 = 184664 }; +enum BattlegroundRLData +{ + BG_RL_REMOVE_DOORS_TIMER = 5000 +}; + +enum BattlegroundRLEvents +{ + BG_RL_EVENT_REMOVE_DOORS = 1 +}; + class BattlegroundRL : public Arena { public: @@ -49,5 +60,10 @@ class BattlegroundRL : public Arena void HandleAreaTrigger(Player* Source, uint32 Trigger) override; bool SetupBattleground() override; + + private: + void PostUpdateImpl(uint32 diff) override; + + EventMap _events; }; #endif |