AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
TimedFleeingMovementGenerator Class Reference

#include "FleeingMovementGenerator.h"

Inheritance diagram for TimedFleeingMovementGenerator:
FleeingMovementGenerator< Creature > MovementGeneratorMedium< T, D > MovementGenerator

Public Member Functions

 TimedFleeingMovementGenerator (ObjectGuid fright, uint32 time)
 
MovementGeneratorType GetMovementGeneratorType ()
 
bool Update (Unit *, uint32)
 
void Finalize (Unit *)
 
- Public Member Functions inherited from FleeingMovementGenerator< Creature >
 FleeingMovementGenerator (ObjectGuid fleeTargetGUID)
 
void DoInitialize (Creature *)
 
void DoFinalize (Creature *)
 
void DoFinalize (Player *owner)
 
void DoReset (Creature *)
 
bool DoUpdate (Creature *, uint32)
 
- Public Member Functions inherited from MovementGeneratorMedium< T, D >
void Initialize (Unit *u) override
 
void Reset (Unit *u) override
 
- Public Member Functions inherited from MovementGenerator
virtual ~MovementGenerator ()
 
virtual uint32 GetSplineId () const
 
virtual void unitSpeedChanged ()
 
virtual void Pause (uint32)
 
virtual void Resume (uint32)
 
virtual bool GetResetPosition (float &, float &, float &)
 

Private Attributes

TimeTracker i_totalFleeTime
 

Detailed Description

Constructor & Destructor Documentation

◆ TimedFleeingMovementGenerator()

TimedFleeingMovementGenerator::TimedFleeingMovementGenerator ( ObjectGuid  fright,
uint32  time 
)
inline
52 :
54 i_totalFleeTime(time) {}
Definition FleeingMovementGenerator.h:27
TimeTracker i_totalFleeTime
Definition FleeingMovementGenerator.h:61

Member Function Documentation

◆ Finalize()

void TimedFleeingMovementGenerator::Finalize ( Unit owner)
virtual

Reimplemented from MovementGeneratorMedium< T, D >.

233{
236
237 if (Unit* victim = owner->GetVictim())
238 {
239 owner->SetTarget(victim->GetGUID());
240 }
241
242 if (Creature* ownerCreature = owner->ToCreature())
243 {
244 if (CreatureAI* AI = ownerCreature->AI())
245 {
246 AI->MovementInform(TIMED_FLEEING_MOTION_TYPE, 0);
247 }
248 }
249}
@ TIMED_FLEEING_MOTION_TYPE
Definition MotionMaster.h:53
@ UNIT_STATE_FLEEING_MOVE
Definition UnitDefines.h:194
@ UNIT_STATE_FLEEING
Definition UnitDefines.h:177
@ UNIT_FLAG_FLEEING
Definition UnitDefines.h:273
Definition CreatureAI.h:70
Definition Creature.h:43
Creature * ToCreature()
Definition Object.h:205
Definition Unit.h:636
void ClearUnitState(uint32 f)
Definition Unit.h:708
Unit * GetVictim() const
Definition Unit.h:862
virtual void SetTarget(ObjectGuid=ObjectGuid::Empty)=0
void RemoveUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:720

References Unit::ClearUnitState(), Unit::GetVictim(), Unit::RemoveUnitFlag(), Unit::SetTarget(), TIMED_FLEEING_MOTION_TYPE, Object::ToCreature(), UNIT_FLAG_FLEEING, UNIT_STATE_FLEEING, and UNIT_STATE_FLEEING_MOVE.

◆ GetMovementGeneratorType()

MovementGeneratorType TimedFleeingMovementGenerator::GetMovementGeneratorType ( )
inlinevirtual

◆ Update()

bool TimedFleeingMovementGenerator::Update ( Unit owner,
uint32  time_diff 
)
virtual

Reimplemented from MovementGeneratorMedium< T, D >.

252{
253 if (!owner->IsAlive())
254 return false;
255
257 {
258 owner->StopMoving();
259 return true;
260 }
261
262 i_totalFleeTime.Update(time_diff);
264 return false;
265
266 // This calls grant-parent Update method hiden by FleeingMovementGenerator::Update(Creature &, uint32) version
267 // This is done instead of casting Unit& to Creature& and call parent method, then we can use Unit directly
269}
@ UNIT_STATE_NOT_MOVE
Definition UnitDefines.h:218
Definition MovementGenerator.h:56
bool Update(Unit *, uint32)
Definition FleeingMovementGenerator.cpp:251
virtual bool IsMovementPreventedByCasting() const
Definition Unit.cpp:4191
bool IsAlive() const
Definition Unit.h:1707
void StopMoving()
Definition Unit.cpp:16702
bool HasUnitState(const uint32 f) const
Definition Unit.h:707
void Update(time_t diff)
Definition Timer.h:207
bool Passed() const
Definition Timer.h:212

References Unit::HasUnitState(), i_totalFleeTime, Unit::IsAlive(), Unit::IsMovementPreventedByCasting(), TimeTracker::Passed(), Unit::StopMoving(), UNIT_STATE_NOT_MOVE, TimeTracker::Update(), and Update().

Referenced by Update().

Member Data Documentation

◆ i_totalFleeTime

TimeTracker TimedFleeingMovementGenerator::i_totalFleeTime
private

Referenced by Update().


The documentation for this class was generated from the following files: