aboutsummaryrefslogtreecommitdiff
path: root/src/game/FleeingMovementGenerator.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/FleeingMovementGenerator.h')
-rw-r--r--src/game/FleeingMovementGenerator.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/game/FleeingMovementGenerator.h b/src/game/FleeingMovementGenerator.h
index 98a2058ad1d..0bc4bdb9757 100644
--- a/src/game/FleeingMovementGenerator.h
+++ b/src/game/FleeingMovementGenerator.h
@@ -17,31 +17,39 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+
#ifndef TRINITY_FLEEINGMOVEMENTGENERATOR_H
#define TRINITY_FLEEINGMOVEMENTGENERATOR_H
+
#include "MovementGenerator.h"
#include "DestinationHolder.h"
#include "Traveller.h"
+
template<class T>
class TRINITY_DLL_SPEC FleeingMovementGenerator
: public MovementGeneratorMedium< T, FleeingMovementGenerator<T> >
{
public:
FleeingMovementGenerator(uint64 fright) : i_frightGUID(fright), i_nextCheckTime(0) {}
+
void Initialize(T &);
void Finalize(T &);
void Reset(T &);
bool Update(T &, const uint32 &);
bool GetDestination(float &x, float &y, float &z) const;
+
MovementGeneratorType GetMovementGeneratorType() { return FLEEING_MOTION_TYPE; }
+
private:
void _setTargetLocation(T &owner);
bool _getPoint(T &owner, float &x, float &y, float &z);
bool _setMoveData(T &owner);
void _Init(T &);
+
bool is_water_ok :1;
bool is_land_ok :1;
bool i_only_forward:1;
+
float i_caster_x;
float i_caster_y;
float i_caster_z;
@@ -50,8 +58,10 @@ class TRINITY_DLL_SPEC FleeingMovementGenerator
float i_cur_angle;
uint64 i_frightGUID;
TimeTracker i_nextCheckTime;
+
DestinationHolder< Traveller<T> > i_destinationHolder;
};
+
class MANGOS_DLL_SPEC TimedFleeingMovementGenerator
: public FleeingMovementGenerator<Creature>
{
@@ -59,11 +69,14 @@ class MANGOS_DLL_SPEC TimedFleeingMovementGenerator
TimedFleeingMovementGenerator(uint64 fright, uint32 time) :
FleeingMovementGenerator<Creature>(fright),
i_totalFleeTime(time) {}
+
MovementGeneratorType GetMovementGeneratorType() { return TIMED_FLEEING_MOTION_TYPE; }
bool Update(Unit &, const uint32 &);
void Finalize(Unit &);
+
private:
TimeTracker i_totalFleeTime;
};
+
#endif