diff options
-rw-r--r-- | src/common/Utilities/EventMap.cpp | 6 | ||||
-rw-r--r-- | src/common/Utilities/EventMap.h | 6 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/Outland/BlackTemple/boss_illidan.cpp | 4 | ||||
-rw-r--r-- | tests/common/test-EventMap.cpp | 20 |
6 files changed, 22 insertions, 21 deletions
diff --git a/src/common/Utilities/EventMap.cpp b/src/common/Utilities/EventMap.cpp index 917ef02b575..e4a1b447579 100644 --- a/src/common/Utilities/EventMap.cpp +++ b/src/common/Utilities/EventMap.cpp @@ -146,11 +146,11 @@ void EventMap::CancelEventGroup(uint32 group) } } -uint32 EventMap::GetTimeUntilEvent(uint32 eventId) const +Milliseconds EventMap::GetTimeUntilEvent(uint32 eventId) const { for (std::pair<TimePoint const, uint32> const& itr : _eventMap) if (eventId == (itr.second & 0x0000FFFF)) - return std::chrono::duration_cast<Milliseconds>((itr.first - _time)).count(); + return std::chrono::duration_cast<Milliseconds>(itr.first - _time); - return std::numeric_limits<uint32>::max(); + return Milliseconds::max(); } diff --git a/src/common/Utilities/EventMap.h b/src/common/Utilities/EventMap.h index 8d69524f2be..81f06b33b51 100644 --- a/src/common/Utilities/EventMap.h +++ b/src/common/Utilities/EventMap.h @@ -219,11 +219,11 @@ public: /** * @name GetTimeUntilEvent - * @brief Returns time in milliseconds until next event. + * @brief Returns time as std::chrono type until next event. * @param eventId of the event. - * @return Time of next event. + * @return Time of next event. If event is not scheduled returns Milliseconds::max() */ - uint32 GetTimeUntilEvent(uint32 eventId) const; + Milliseconds GetTimeUntilEvent(uint32 eventId) const; private: /** diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp index fb89fbf224b..465bfaffa40 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp @@ -186,7 +186,8 @@ public: switch (eventId) { case EVENT_IMPALE: - if (events.GetTimeUntilEvent(EVENT_LOCUST) < 5 * IN_MILLISECONDS) break; // don't chain impale tank -> locust swarm + if (events.GetTimeUntilEvent(EVENT_LOCUST) < 5s) + break; // don't chain impale tank -> locust swarm if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) DoCast(target, SPELL_IMPALE); else diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index 775551819fb..3844e85d44b 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -879,7 +879,7 @@ class boss_leviathan_mk_ii : public CreatureScript DoCastVictim(SPELL_SCRIPT_EFFECT_PLASMA_BLAST); events.RescheduleEvent(EVENT_PLASMA_BLAST, 30s, 45s, 0, PHASE_LEVIATHAN_MK_II); - if (events.GetTimeUntilEvent(EVENT_NAPALM_SHELL) < 9000) + if (events.GetTimeUntilEvent(EVENT_NAPALM_SHELL) < 9s) events.RescheduleEvent(EVENT_NAPALM_SHELL, 9s, 0, PHASE_LEVIATHAN_MK_II); // The actual spell is cast by the turret, we should not let it interrupt itself. break; case EVENT_SHOCK_BLAST: @@ -894,7 +894,7 @@ class boss_leviathan_mk_ii : public CreatureScript DoCastAOE(SPELL_FORCE_CAST_NAPALM_SHELL); events.RescheduleEvent(EVENT_NAPALM_SHELL, 6s, 15s, 0, PHASE_LEVIATHAN_MK_II); - if (events.GetTimeUntilEvent(EVENT_PLASMA_BLAST) < 2000) + if (events.GetTimeUntilEvent(EVENT_PLASMA_BLAST) < 2s) events.RescheduleEvent(EVENT_PLASMA_BLAST, 2s, 0, PHASE_LEVIATHAN_MK_II); // The actual spell is cast by the turret, we should not let it interrupt itself. break; case EVENT_MOVE_POINT_2: diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp index 9e05549923c..8a48275ce55 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp @@ -915,8 +915,8 @@ struct boss_illidan_stormrage : public BossAI if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 150.0f, true)) DoCast(target, SPELL_DARK_BARRAGE); events.RescheduleEvent(EVENT_EYE_BLAST, Seconds(5), GROUP_PHASE_2); - uint32 currentTime = events.GetTimeUntilEvent(EVENT_FLY_TO_RANDOM_PILLAR); - events.RescheduleEvent(EVENT_FLY_TO_RANDOM_PILLAR, Seconds(currentTime) + Seconds(30), GROUP_PHASE_2); + Milliseconds currentTime = events.GetTimeUntilEvent(EVENT_FLY_TO_RANDOM_PILLAR); + events.RescheduleEvent(EVENT_FLY_TO_RANDOM_PILLAR, currentTime + 30s, GROUP_PHASE_2); break; } case EVENT_FIREBALL: diff --git a/tests/common/test-EventMap.cpp b/tests/common/test-EventMap.cpp index 2de4756b14c..563fd9b4873 100644 --- a/tests/common/test-EventMap.cpp +++ b/tests/common/test-EventMap.cpp @@ -54,7 +54,7 @@ TEST_CASE("Schedule an event", "[EventMap]") REQUIRE(id == 0); REQUIRE_FALSE(eventMap.Empty()); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 900); + REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 900ms); } SECTION("Event has reached its delay") @@ -64,7 +64,7 @@ TEST_CASE("Schedule an event", "[EventMap]") REQUIRE(id == EVENT_1); REQUIRE(eventMap.Empty()); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == std::numeric_limits<uint32>::max()); + REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == Milliseconds::max()); } } @@ -269,14 +269,14 @@ TEST_CASE("Delay all events", "[EventMap]") EventMap eventMap; eventMap.ScheduleEvent(EVENT_1, 1s); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1000); + REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1s); SECTION("Without timer update") { eventMap.DelayEvents(1s); - // Timer hasn't ticked yet, so maximum delay is 0ms - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1000); + // Timer hasn't ticked yet, so maximum delay is 0ms: 1s (init) + 0s (delay) = 1s + REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1s); } SECTION("With timer update smaller than delay") @@ -284,7 +284,7 @@ TEST_CASE("Delay all events", "[EventMap]") eventMap.Update(500); eventMap.DelayEvents(1s); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1000); + REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 1s); } SECTION("With timer update larger than delay") @@ -293,7 +293,7 @@ TEST_CASE("Delay all events", "[EventMap]") eventMap.DelayEvents(1s); // 1s (init) + 1s (delay) - 2s (tick) = 0s - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 0); + REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 0s); } } @@ -307,9 +307,9 @@ TEST_CASE("Delay grouped events", "[EventMap]") eventMap.Update(2000); eventMap.DelayEvents(3s, GROUP_1); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 2000); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_2) == 0); - REQUIRE(eventMap.GetTimeUntilEvent(EVENT_3) == 4000); + REQUIRE(eventMap.GetTimeUntilEvent(EVENT_1) == 2s); + REQUIRE(eventMap.GetTimeUntilEvent(EVENT_2) == 0s); + REQUIRE(eventMap.GetTimeUntilEvent(EVENT_3) == 4s); } TEST_CASE("Reset map", "[EventMap]") |