mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
EventMap: Change GetTimeUntilEvent to return std::chrono types
(cherry picked from commit 8cb35b0d5f)
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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]")
|
||||
|
||||
Reference in New Issue
Block a user