Updated Copyright year to 2013
[getmangos.git] / src / game / PointMovementGenerator.h
blob58eda0b95d7d1d6ed8d35329e9e11af9cda34e67
1 /*
2 * Copyright (C) 2005-2013 MaNGOS <http://getmangos.com/>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #ifndef MANGOS_POINTMOVEMENTGENERATOR_H
20 #define MANGOS_POINTMOVEMENTGENERATOR_H
22 #include "MovementGenerator.h"
23 #include "FollowerReference.h"
24 #include "Creature.h"
26 template<class T>
27 class MANGOS_DLL_SPEC PointMovementGenerator
28 : public MovementGeneratorMedium< T, PointMovementGenerator<T> >
30 public:
31 PointMovementGenerator(uint32 _id, float _x, float _y, float _z, bool _generatePath) :
32 id(_id), i_x(_x), i_y(_y), i_z(_z), m_generatePath(_generatePath) {}
34 void Initialize(T&);
35 void Finalize(T&);
36 void Interrupt(T&);
37 void Reset(T& unit);
38 bool Update(T&, const uint32& diff);
40 void MovementInform(T&);
42 MovementGeneratorType GetMovementGeneratorType() const override { return POINT_MOTION_TYPE; }
44 bool GetDestination(float& x, float& y, float& z) const { x = i_x; y = i_y; z = i_z; return true; }
45 private:
46 uint32 id;
47 float i_x, i_y, i_z;
48 bool m_generatePath;
51 class MANGOS_DLL_SPEC AssistanceMovementGenerator
52 : public PointMovementGenerator<Creature>
54 public:
55 AssistanceMovementGenerator(float _x, float _y, float _z) :
56 PointMovementGenerator<Creature>(0, _x, _y, _z, true) {}
58 MovementGeneratorType GetMovementGeneratorType() const override { return ASSISTANCE_MOTION_TYPE; }
59 void Finalize(Unit&) override;
62 // Does almost nothing - just doesn't allows previous movegen interrupt current effect. Can be reused for charge effect
63 class EffectMovementGenerator : public MovementGenerator
65 public:
66 explicit EffectMovementGenerator(uint32 Id) : m_Id(Id) {}
67 void Initialize(Unit&) override {}
68 void Finalize(Unit& unit) override;
69 void Interrupt(Unit&) override {}
70 void Reset(Unit&) override {}
71 bool Update(Unit& u, const uint32&) override;
72 MovementGeneratorType GetMovementGeneratorType() const override { return EFFECT_MOTION_TYPE; }
73 private:
74 uint32 m_Id;
77 #endif