aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-08-09 11:37:17 +0200
committerShauren <shauren.trinity@gmail.com>2023-08-09 11:37:17 +0200
commit1dd4b38170339e2d1d959c45ecad1b3b8dceb216 (patch)
treec91c0c31e763753a6d5aff4a9874b6e904f17984 /src/server/game/Entities
parentf75cf381e8fe6f3749d52b983f2ad65cac650851 (diff)
Core/Creatures: std::chrono-ify TempSummon
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Creature/TemporarySummon.cpp36
-rw-r--r--src/server/game/Entities/Creature/TemporarySummon.h16
-rw-r--r--src/server/game/Entities/Object/Object.cpp6
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Totem/Totem.cpp16
-rw-r--r--src/server/game/Entities/Totem/Totem.h10
-rw-r--r--src/server/game/Entities/Transport/Transport.cpp2
-rw-r--r--src/server/game/Entities/Transport/Transport.h2
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
9 files changed, 46 insertions, 46 deletions
diff --git a/src/server/game/Entities/Creature/TemporarySummon.cpp b/src/server/game/Entities/Creature/TemporarySummon.cpp
index 961bf1e453a..a101b874cad 100644
--- a/src/server/game/Entities/Creature/TemporarySummon.cpp
+++ b/src/server/game/Entities/Creature/TemporarySummon.cpp
@@ -34,7 +34,7 @@
TempSummon::TempSummon(SummonPropertiesEntry const* properties, WorldObject* owner, bool isWorldObject) :
Creature(isWorldObject), m_Properties(properties), m_type(TEMPSUMMON_MANUAL_DESPAWN),
-m_timer(0), m_lifetime(0), m_canFollowOwner(true)
+m_timer(0ms), m_lifetime(0ms), m_canFollowOwner(true)
{
if (owner)
m_summonerGUID = owner->GetGUID();
@@ -75,6 +75,8 @@ void TempSummon::Update(uint32 diff)
UnSummon();
return;
}
+
+ Milliseconds msDiff = Milliseconds(diff);
switch (m_type)
{
case TEMPSUMMON_MANUAL_DESPAWN:
@@ -82,26 +84,26 @@ void TempSummon::Update(uint32 diff)
break;
case TEMPSUMMON_TIMED_DESPAWN:
{
- if (m_timer <= diff)
+ if (m_timer <= msDiff)
{
UnSummon();
return;
}
- m_timer -= diff;
+ m_timer -= msDiff;
break;
}
case TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT:
{
if (!IsInCombat())
{
- if (m_timer <= diff)
+ if (m_timer <= msDiff)
{
UnSummon();
return;
}
- m_timer -= diff;
+ m_timer -= msDiff;
}
else if (m_timer != m_lifetime)
m_timer = m_lifetime;
@@ -113,13 +115,13 @@ void TempSummon::Update(uint32 diff)
{
if (m_deathState == CORPSE)
{
- if (m_timer <= diff)
+ if (m_timer <= msDiff)
{
UnSummon();
return;
}
- m_timer -= diff;
+ m_timer -= msDiff;
}
break;
}
@@ -144,13 +146,13 @@ void TempSummon::Update(uint32 diff)
if (!IsInCombat())
{
- if (m_timer <= diff)
+ if (m_timer <= msDiff)
{
UnSummon();
return;
}
else
- m_timer -= diff;
+ m_timer -= msDiff;
}
else if (m_timer != m_lifetime)
m_timer = m_lifetime;
@@ -160,13 +162,13 @@ void TempSummon::Update(uint32 diff)
{
if (!IsInCombat() && IsAlive())
{
- if (m_timer <= diff)
+ if (m_timer <= msDiff)
{
UnSummon();
return;
}
else
- m_timer -= diff;
+ m_timer -= msDiff;
}
else if (m_timer != m_lifetime)
m_timer = m_lifetime;
@@ -179,7 +181,7 @@ void TempSummon::Update(uint32 diff)
}
}
-void TempSummon::InitStats(WorldObject* summoner, uint32 duration)
+void TempSummon::InitStats(WorldObject* summoner, Milliseconds duration)
{
ASSERT(!IsPet());
@@ -187,7 +189,7 @@ void TempSummon::InitStats(WorldObject* summoner, uint32 duration)
m_lifetime = duration;
if (m_type == TEMPSUMMON_MANUAL_DESPAWN)
- m_type = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
+ m_type = (duration == 0ms) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
if (summoner && summoner->IsPlayer())
{
@@ -369,7 +371,7 @@ std::string TempSummon::GetDebugInfo() const
sstr << Creature::GetDebugInfo() << "\n"
<< std::boolalpha
<< "TempSummonType: " << std::to_string(GetSummonType()) << " Summoner: " << GetSummonerGUID().ToString()
- << "Timer: " << GetTimer();
+ << "Timer: " << GetTimer().count() << "ms";
return sstr.str();
}
@@ -383,7 +385,7 @@ Minion::Minion(SummonPropertiesEntry const* properties, Unit* owner, bool isWorl
InitCharmInfo();
}
-void Minion::InitStats(WorldObject* summoner, uint32 duration)
+void Minion::InitStats(WorldObject* summoner, Milliseconds duration)
{
TempSummon::InitStats(summoner, duration);
@@ -452,7 +454,7 @@ Guardian::Guardian(SummonPropertiesEntry const* properties, Unit* owner, bool is
}
}
-void Guardian::InitStats(WorldObject* summoner, uint32 duration)
+void Guardian::InitStats(WorldObject* summoner, Milliseconds duration)
{
Minion::InitStats(summoner, duration);
@@ -490,7 +492,7 @@ Puppet::Puppet(SummonPropertiesEntry const* properties, Unit* owner)
m_unitTypeMask |= UNIT_MASK_PUPPET;
}
-void Puppet::InitStats(WorldObject* summoner, uint32 duration)
+void Puppet::InitStats(WorldObject* summoner, Milliseconds duration)
{
Minion::InitStats(summoner, duration);
SetReactState(REACT_PASSIVE);
diff --git a/src/server/game/Entities/Creature/TemporarySummon.h b/src/server/game/Entities/Creature/TemporarySummon.h
index fcfbb0ac1ec..a6883d4872d 100644
--- a/src/server/game/Entities/Creature/TemporarySummon.h
+++ b/src/server/game/Entities/Creature/TemporarySummon.h
@@ -46,8 +46,8 @@ class TC_GAME_API TempSummon : public Creature
public:
explicit TempSummon(SummonPropertiesEntry const* properties, WorldObject* owner, bool isWorldObject);
virtual ~TempSummon() { }
- void Update(uint32 time) override;
- virtual void InitStats(WorldObject* summoner, uint32 lifetime);
+ void Update(uint32 diff) override;
+ virtual void InitStats(WorldObject* summoner, Milliseconds duration);
virtual void InitSummon(WorldObject* summoner);
void UpdateObjectVisibilityOnCreate() override;
void UpdateObjectVisibilityOnDestroy() override;
@@ -61,7 +61,7 @@ class TC_GAME_API TempSummon : public Creature
GameObject* GetSummonerGameObject() const;
ObjectGuid GetSummonerGUID() const { return m_summonerGUID; }
TempSummonType GetSummonType() const { return m_type; }
- uint32 GetTimer() const { return m_timer; }
+ Milliseconds GetTimer() const { return m_timer; }
Optional<uint32> GetCreatureIdVisibleToSummoner() const { return m_creatureIdVisibleToSummoner; }
Optional<uint32> GetDisplayIdVisibleToSummoner() const { return m_displayIdVisibleToSummoner; }
bool CanFollowOwner() const { return m_canFollowOwner; }
@@ -72,8 +72,8 @@ class TC_GAME_API TempSummon : public Creature
std::string GetDebugInfo() const override;
private:
TempSummonType m_type;
- uint32 m_timer;
- uint32 m_lifetime;
+ Milliseconds m_timer;
+ Milliseconds m_lifetime;
ObjectGuid m_summonerGUID;
Optional<uint32> m_creatureIdVisibleToSummoner;
Optional<uint32> m_displayIdVisibleToSummoner;
@@ -84,7 +84,7 @@ class TC_GAME_API Minion : public TempSummon
{
public:
Minion(SummonPropertiesEntry const* properties, Unit* owner, bool isWorldObject);
- void InitStats(WorldObject* summoner, uint32 duration) override;
+ void InitStats(WorldObject* summoner, Milliseconds duration) override;
void RemoveFromWorld() override;
void setDeathState(DeathState s) override;
Unit* GetOwner() const { return m_owner; }
@@ -119,7 +119,7 @@ class TC_GAME_API Guardian : public Minion
{
public:
Guardian(SummonPropertiesEntry const* properties, Unit* owner, bool isWorldObject);
- void InitStats(WorldObject* summoner, uint32 duration) override;
+ void InitStats(WorldObject* summoner, Milliseconds duration) override;
bool InitStatsForLevel(uint8 level);
void InitSummon(WorldObject* summoner) override;
@@ -145,7 +145,7 @@ class TC_GAME_API Puppet : public Minion
{
public:
Puppet(SummonPropertiesEntry const* properties, Unit* owner);
- void InitStats(WorldObject* summoner, uint32 duration) override;
+ void InitStats(WorldObject* summoner, Milliseconds duration) override;
void InitSummon(WorldObject* summoner) override;
void Update(uint32 time) override;
};
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 855138c3c6f..75f9ec052f4 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1820,7 +1820,7 @@ void WorldObject::AddObjectToRemoveList()
map->AddObjectToRemoveList(this);
}
-TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties /*= nullptr*/, uint32 duration /*= 0*/, WorldObject* summoner /*= nullptr*/, uint32 spellId /*= 0*/, uint32 vehId /*= 0*/, ObjectGuid privateObjectOwner /*= ObjectGuid::Empty*/, SmoothPhasingInfo const* smoothPhasingInfo /* = nullptr*/)
+TempSummon* Map::SummonCreature(uint32 entry, Position const& pos, SummonPropertiesEntry const* properties /*= nullptr*/, Milliseconds duration /*= 0ms*/, WorldObject* summoner /*= nullptr*/, uint32 spellId /*= 0*/, uint32 vehId /*= 0*/, ObjectGuid privateObjectOwner /*= ObjectGuid::Empty*/, SmoothPhasingInfo const* smoothPhasingInfo /* = nullptr*/)
{
uint32 mask = UNIT_MASK_SUMMON;
if (properties)
@@ -2013,7 +2013,7 @@ TempSummon* WorldObject::SummonCreature(uint32 entry, Position const& pos, TempS
{
if (Map* map = FindMap())
{
- if (TempSummon* summon = map->SummonCreature(entry, pos, nullptr, despawnTime.count(), this, spellId, vehId, privateObjectOwner))
+ if (TempSummon* summon = map->SummonCreature(entry, pos, nullptr, despawnTime, this, spellId, vehId, privateObjectOwner))
{
summon->SetTempSummonType(despawnType);
return summon;
@@ -2039,7 +2039,7 @@ TempSummon* WorldObject::SummonPersonalClone(Position const& pos, TempSummonType
if (Map* map = FindMap())
{
SmoothPhasingInfo smoothPhasingInfo{GetGUID(), true, true};
- if (TempSummon* summon = map->SummonCreature(GetEntry(), pos, nullptr, despawnTime.count(), privateObjectOwner, spellId, vehId, privateObjectOwner->GetGUID(), &smoothPhasingInfo))
+ if (TempSummon* summon = map->SummonCreature(GetEntry(), pos, nullptr, despawnTime, privateObjectOwner, spellId, vehId, privateObjectOwner->GetGUID(), &smoothPhasingInfo))
{
summon->SetTempSummonType(despawnType);
return summon;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index d1967a2283c..f4ccc1e4051 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -21641,7 +21641,7 @@ void Player::VehicleSpellInitialize()
petSpells.PetGUID = vehicle->GetGUID();
petSpells._CreatureFamily = 0; // Pet Family (0 for all vehicles)
petSpells.Specialization = 0;
- petSpells.TimeLimit = vehicle->IsSummon() ? vehicle->ToTempSummon()->GetTimer() : 0;
+ petSpells.TimeLimit = vehicle->IsSummon() ? vehicle->ToTempSummon()->GetTimer().count() : 0;
petSpells.ReactState = vehicle->GetReactState();
petSpells.CommandState = COMMAND_FOLLOW;
petSpells.Flag = 0x8;
diff --git a/src/server/game/Entities/Totem/Totem.cpp b/src/server/game/Entities/Totem/Totem.cpp
index ce72bcba9b7..ea648eec73d 100644
--- a/src/server/game/Entities/Totem/Totem.cpp
+++ b/src/server/game/Entities/Totem/Totem.cpp
@@ -26,14 +26,12 @@
#include "SpellMgr.h"
#include "TotemPackets.h"
-Totem::Totem(SummonPropertiesEntry const* properties, Unit* owner) : Minion(properties, owner, false)
+Totem::Totem(SummonPropertiesEntry const* properties, Unit* owner) : Minion(properties, owner, false), m_type(TOTEM_PASSIVE), m_duration(0ms)
{
m_unitTypeMask |= UNIT_MASK_TOTEM;
- m_duration = 0;
- m_type = TOTEM_PASSIVE;
}
-void Totem::Update(uint32 time)
+void Totem::Update(uint32 diff)
{
if (!GetOwner()->IsAlive() || !IsAlive())
{
@@ -41,18 +39,18 @@ void Totem::Update(uint32 time)
return;
}
- if (m_duration <= time)
+ if (m_duration <= Milliseconds(diff))
{
UnSummon(); // remove self
return;
}
- else
- m_duration -= time;
- Creature::Update(time);
+ m_duration -= Milliseconds(diff);
+
+ Creature::Update(diff);
}
-void Totem::InitStats(WorldObject* summoner, uint32 duration)
+void Totem::InitStats(WorldObject* summoner, Milliseconds duration)
{
// client requires SMSG_TOTEM_CREATED to be sent before adding to world and before removing old totem
if (Player* owner = GetOwner()->ToPlayer())
diff --git a/src/server/game/Entities/Totem/Totem.h b/src/server/game/Entities/Totem/Totem.h
index ca8de920643..72066cc2996 100644
--- a/src/server/game/Entities/Totem/Totem.h
+++ b/src/server/game/Entities/Totem/Totem.h
@@ -32,13 +32,13 @@ class TC_GAME_API Totem : public Minion
public:
Totem(SummonPropertiesEntry const* properties, Unit* owner);
virtual ~Totem() { }
- void Update(uint32 time) override;
- void InitStats(WorldObject* summoner, uint32 duration) override;
+ void Update(uint32 diff) override;
+ void InitStats(WorldObject* summoner, Milliseconds duration) override;
void InitSummon(WorldObject* summoner) override;
void UnSummon(uint32 msTime = 0) override;
uint32 GetSpell(uint8 slot = 0) const { return m_spells[slot]; }
- uint32 GetTotemDuration() const { return m_duration; }
- void SetTotemDuration(uint32 duration) { m_duration = duration; }
+ Milliseconds GetTotemDuration() const { return m_duration; }
+ void SetTotemDuration(Milliseconds duration) { m_duration = duration; }
TotemType GetTotemType() const { return m_type; }
bool UpdateStats(Stats /*stat*/) override { return true; }
@@ -54,6 +54,6 @@ class TC_GAME_API Totem : public Minion
protected:
TotemType m_type;
- uint32 m_duration;
+ Milliseconds m_duration;
};
#endif
diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp
index f3c03fe3421..a535f11756c 100644
--- a/src/server/game/Entities/Transport/Transport.cpp
+++ b/src/server/game/Entities/Transport/Transport.cpp
@@ -406,7 +406,7 @@ GameObject* Transport::CreateGOPassenger(ObjectGuid::LowType guid, GameObjectDat
return go;
}
-TempSummon* Transport::SummonPassenger(uint32 entry, Position const& pos, TempSummonType summonType, SummonPropertiesEntry const* properties /*= nullptr*/, uint32 duration /*= 0*/, Unit* summoner /*= nullptr*/, uint32 spellId /*= 0*/, uint32 vehId /*= 0*/)
+TempSummon* Transport::SummonPassenger(uint32 entry, Position const& pos, TempSummonType summonType, SummonPropertiesEntry const* properties /*= nullptr*/, Milliseconds duration /*= 0ms*/, Unit* summoner /*= nullptr*/, uint32 spellId /*= 0*/, uint32 vehId /*= 0*/)
{
Map* map = FindMap();
if (!map)
diff --git a/src/server/game/Entities/Transport/Transport.h b/src/server/game/Entities/Transport/Transport.h
index 46edfebd082..9a9989990b1 100644
--- a/src/server/game/Entities/Transport/Transport.h
+++ b/src/server/game/Entities/Transport/Transport.h
@@ -66,7 +66,7 @@ class TC_GAME_API Transport : public GameObject, public TransportBase
*
* @return Summoned creature.
*/
- TempSummon* SummonPassenger(uint32 entry, Position const& pos, TempSummonType summonType, SummonPropertiesEntry const* properties = nullptr, uint32 duration = 0, Unit* summoner = nullptr, uint32 spellId = 0, uint32 vehId = 0);
+ TempSummon* SummonPassenger(uint32 entry, Position const& pos, TempSummonType summonType, SummonPropertiesEntry const* properties = nullptr, Milliseconds duration = 0ms, Unit* summoner = nullptr, uint32 spellId = 0, uint32 vehId = 0);
ObjectGuid GetTransportGUID() const override { return GetGUID(); }
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 1296f001c22..de2ad5d3756 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -485,7 +485,7 @@ class TC_GAME_API ProcEventInfo
ProcFlagsSpellType spellTypeMask, ProcFlagsSpellPhase spellPhaseMask, ProcFlagsHit hitMask,
Spell* spell, DamageInfo* damageInfo, HealInfo* healInfo);
- Unit* GetActor() { return _actor; }
+ Unit* GetActor() const { return _actor; }
Unit* GetActionTarget() const { return _actionTarget; }
Unit* GetProcTarget() const { return _procTarget; }