aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarbenium <carbenium@outlook.com>2020-07-25 16:46:43 +0200
committerShauren <shauren.trinity@gmail.com>2022-01-23 23:59:46 +0100
commit27c1f475987bee079bb0bb616b6028d346d3b1b6 (patch)
treefda1d8effcf52c1f19064e5217ad45480086bdcf
parent7847589d9ca35de80dce68ac5cf5cf42c77b39a4 (diff)
EventMap: Change GetTimeUntilEvent to return std::chrono types
(cherry picked from commit 8cb35b0d5f1462387033e6bd2f99d0ea829fdcd8)
-rw-r--r--src/common/Utilities/EventMap.cpp6
-rw-r--r--src/common/Utilities/EventMap.h6
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp4
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidan.cpp4
-rw-r--r--tests/common/test-EventMap.cpp20
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]")