diff options
Diffstat (limited to 'src/game/MotionMaster.h')
-rw-r--r-- | src/game/MotionMaster.h | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/game/MotionMaster.h b/src/game/MotionMaster.h index d68a94b7a1f..d23b6351955 100644 --- a/src/game/MotionMaster.h +++ b/src/game/MotionMaster.h @@ -45,7 +45,10 @@ enum MovementGeneratorType POINT_MOTION_TYPE = 8, // PointMovementGenerator.h FLEEING_MOTION_TYPE = 9, // FleeingMovementGenerator.h DISTRACT_MOTION_TYPE = 10, // IdleMovementGenerator.h - NULL_MOTION_TYPE = 11, + ASSISTANCE_MOTION_TYPE= 11, // PointMovementGenerator.h (first part of flee for assistance) + ASSISTANCE_DISTRACT_MOTION_TYPE = 12, // IdleMovementGenerator.h (second part of flee for assistance) + TIMED_FLEEING_MOTION_TYPE = 13, // FleeingMovementGenerator.h (alt.second part of flee for assistance) + NULL_MOTION_TYPE = 14, }; enum MovementSlot @@ -63,6 +66,9 @@ enum MMCleanFlag MMCF_RESET = 2 // Flag if need top()->Reset() }; +// assume it is 25 yard per 0.6 second +#define SPEED_CHARGE 42.0f + class TRINITY_DLL_SPEC MotionMaster //: private std::stack<MovementGenerator *> { private: @@ -73,7 +79,7 @@ class TRINITY_DLL_SPEC MotionMaster //: private std::stack<MovementGenerator *> typedef std::vector<_Ty> ExpireList; int i_top; - bool empty() const { return i_top < 0; } + bool empty() const { return (i_top < 0); } void pop() { Impl[i_top] = NULL; --i_top; } void push(_Ty _Val) { ++i_top; Impl[i_top] = _Val; } @@ -83,7 +89,7 @@ class TRINITY_DLL_SPEC MotionMaster //: private std::stack<MovementGenerator *> explicit MotionMaster(Unit *unit) : i_owner(unit), m_expList(NULL), m_cleanFlag(MMCF_NONE), i_top(-1) { - for(int i = 0; i < MAX_MOTION_SLOT; ++i) + for(uint8 i = 0; i < MAX_MOTION_SLOT; ++i) { Impl[i] = NULL; needInit[i] = true; @@ -92,6 +98,7 @@ class TRINITY_DLL_SPEC MotionMaster //: private std::stack<MovementGenerator *> ~MotionMaster(); void Initialize(); + void InitDefault(); int size() const { return i_top + 1; } _Ty top() const { return Impl[i_top]; } @@ -131,12 +138,17 @@ class TRINITY_DLL_SPEC MotionMaster //: private std::stack<MovementGenerator *> void MoveIdle(MovementSlot slot = MOTION_SLOT_ACTIVE); void MoveTargetedHome(); void MoveRandom(float spawndist = 0.0f); - void MoveFollow(Unit* target, float dist, float angle); + void MoveFollow(Unit* target, float dist, float angle, MovementSlot slot = MOTION_SLOT_ACTIVE); void MoveChase(Unit* target, float dist = 0.0f, float angle = 0.0f); void MoveConfused(); - void MoveFleeing(Unit* enemy); + void MoveFleeing(Unit* enemy, uint32 time = 0); void MovePoint(uint32 id, float x,float y,float z); - void MoveCharge(float x, float y, float z); + void MoveCharge(float x, float y, float z, float speed = SPEED_CHARGE); + void MoveKnockbackFrom(float srcX, float srcY, float speedXY, float speedZ); + void MoveJumpTo(float angle, float speedXY, float speedZ); + void MoveJump(float x, float y, float z, float speedXY, float speedZ); + void MoveSeekAssistance(float x,float y,float z); + void MoveSeekAssistanceDistract(uint32 timer); void MoveTaxiFlight(uint32 path, uint32 pathnode); void MoveDistract(uint32 time); void MovePath(uint32 path_id, bool repeatable); |