Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
TargetedMovementGenerator.h
Go to the documentation of this file.
1
/*
2
* This file is part of Project SkyFire https://www.projectskyfire.org.
3
* See LICENSE.md file for Copyright information
4
*/
5
#ifndef SKYFIRE_TARGETEDMOVEMENTGENERATOR_H
6
#define SKYFIRE_TARGETEDMOVEMENTGENERATOR_H
7
8
#include "
FollowerReference.h
"
9
#include "
MovementGenerator.h
"
10
#include "
PathGenerator.h
"
11
#include "
Timer.h
"
12
#include "
Unit.h
"
13
14
class
TargetedMovementGeneratorBase
15
{
16
public
:
17
TargetedMovementGeneratorBase
(
Unit
* target) {
i_target
.link(target,
this
); }
18
void
stopFollowing
() { }
19
protected
:
20
FollowerReference
i_target
;
21
};
22
23
template
<
class
T,
typename
D>
24
class
TargetedMovementGeneratorMedium
:
public
MovementGeneratorMedium
< T, D >,
public
TargetedMovementGeneratorBase
25
{
26
protected
:
27
TargetedMovementGeneratorMedium
(
Unit
* target,
float
offset,
float
angle) :
28
TargetedMovementGeneratorBase
(target),
i_path
(NULL),
29
i_recheckDistance
(0),
i_offset
(offset),
i_angle
(angle),
30
i_recalculateTravel
(false),
i_targetReached
(false)
31
{
32
}
33
~TargetedMovementGeneratorMedium
() {
delete
i_path
; }
34
35
public
:
36
bool
DoUpdate
(T*,
uint32
);
37
Unit
*
GetTarget
()
const
{
return
i_target
.getTarget(); }
38
39
void
unitSpeedChanged
() {
i_recalculateTravel
=
true
; }
40
bool
IsReachable
()
const
{
return
(
i_path
) ? (
i_path
->GetPathType() &
PATHFIND_NORMAL
) :
true
; }
41
protected
:
42
void
_setTargetLocation
(T* owner,
bool
updateDestination);
43
44
PathGenerator
*
i_path
;
45
TimeTrackerSmall
i_recheckDistance
;
46
float
i_offset
;
47
float
i_angle
;
48
bool
i_recalculateTravel
: 1;
49
bool
i_targetReached
: 1;
50
};
51
52
template
<
class
T>
53
class
ChaseMovementGenerator
:
public
TargetedMovementGeneratorMedium
<T, ChaseMovementGenerator<T> >
54
{
55
public
:
56
ChaseMovementGenerator
(
Unit
* target)
57
:
TargetedMovementGeneratorMedium
<T,
ChaseMovementGenerator
<T> >(target) { }
58
ChaseMovementGenerator
(
Unit
* target,
float
offset,
float
angle)
59
:
TargetedMovementGeneratorMedium
<T,
ChaseMovementGenerator
<T> >(target, offset, angle) { }
60
~ChaseMovementGenerator
() { }
61
62
MovementGeneratorType
GetMovementGeneratorType
() {
return
CHASE_MOTION_TYPE
; }
63
64
void
DoInitialize
(T*);
65
void
DoFinalize
(T*);
66
void
DoReset
(T*);
67
void
MovementInform
(T*);
68
69
static
void
_clearUnitStateMove
(T* u) { u->ClearUnitState(
UNIT_STATE_CHASE_MOVE
); }
70
static
void
_addUnitStateMove
(T* u) { u->AddUnitState(
UNIT_STATE_CHASE_MOVE
); }
71
bool
EnableWalking
()
const
{
return
false
; }
72
bool
_lostTarget
(T* u)
const
{
return
u->GetVictim() != this->
GetTarget
(); }
73
void
_reachTarget
(T*);
74
};
75
76
template
<
class
T>
77
class
FollowMovementGenerator
:
public
TargetedMovementGeneratorMedium
<T, FollowMovementGenerator<T> >
78
{
79
public
:
80
FollowMovementGenerator
(
Unit
* target)
81
:
TargetedMovementGeneratorMedium
<T,
FollowMovementGenerator
<T> >(target) { }
82
FollowMovementGenerator
(
Unit
* target,
float
offset,
float
angle)
83
:
TargetedMovementGeneratorMedium
<T,
FollowMovementGenerator
<T> >(target, offset, angle) { }
84
~FollowMovementGenerator
() { }
85
86
MovementGeneratorType
GetMovementGeneratorType
() {
return
FOLLOW_MOTION_TYPE
; }
87
88
void
DoInitialize
(T*);
89
void
DoFinalize
(T*);
90
void
DoReset
(T*);
91
void
MovementInform
(T*);
92
93
static
void
_clearUnitStateMove
(T* u) { u->ClearUnitState(
UNIT_STATE_FOLLOW_MOVE
); }
94
static
void
_addUnitStateMove
(T* u) { u->AddUnitState(
UNIT_STATE_FOLLOW_MOVE
); }
95
bool
EnableWalking
()
const
;
96
bool
_lostTarget
(T*)
const
{
return
false
; }
97
void
_reachTarget
(T*) { }
98
private
:
99
void
_updateSpeed
(T* owner);
100
};
101
102
#endif
uint32
std::uint32_t uint32
Definition
Define.h:77
FollowerReference.h
MovementGeneratorType
MovementGeneratorType
Definition
MotionMaster.h:23
CHASE_MOTION_TYPE
@ CHASE_MOTION_TYPE
Definition
MotionMaster.h:30
FOLLOW_MOTION_TYPE
@ FOLLOW_MOTION_TYPE
Definition
MotionMaster.h:39
MovementGenerator.h
PathGenerator.h
PATHFIND_NORMAL
@ PATHFIND_NORMAL
Definition
PathGenerator.h:31
Timer.h
Unit.h
UNIT_STATE_CHASE_MOVE
@ UNIT_STATE_CHASE_MOVE
Definition
Unit.h:537
UNIT_STATE_FOLLOW_MOVE
@ UNIT_STATE_FOLLOW_MOVE
Definition
Unit.h:538
ChaseMovementGenerator::ChaseMovementGenerator
ChaseMovementGenerator(Unit *target)
Definition
TargetedMovementGenerator.h:56
ChaseMovementGenerator::ChaseMovementGenerator
ChaseMovementGenerator(Unit *target, float offset, float angle)
Definition
TargetedMovementGenerator.h:58
ChaseMovementGenerator::EnableWalking
bool EnableWalking() const
Definition
TargetedMovementGenerator.h:71
ChaseMovementGenerator::_addUnitStateMove
static void _addUnitStateMove(T *u)
Definition
TargetedMovementGenerator.h:70
ChaseMovementGenerator::GetMovementGeneratorType
MovementGeneratorType GetMovementGeneratorType()
Definition
TargetedMovementGenerator.h:62
ChaseMovementGenerator::DoFinalize
void DoFinalize(T *)
Definition
TargetedMovementGenerator.cpp:231
ChaseMovementGenerator::DoReset
void DoReset(T *)
Definition
TargetedMovementGenerator.cpp:237
ChaseMovementGenerator::DoInitialize
void DoInitialize(T *)
ChaseMovementGenerator::_lostTarget
bool _lostTarget(T *u) const
Definition
TargetedMovementGenerator.h:72
ChaseMovementGenerator::MovementInform
void MovementInform(T *)
Definition
TargetedMovementGenerator.cpp:243
ChaseMovementGenerator::~ChaseMovementGenerator
~ChaseMovementGenerator()
Definition
TargetedMovementGenerator.h:60
ChaseMovementGenerator::_clearUnitStateMove
static void _clearUnitStateMove(T *u)
Definition
TargetedMovementGenerator.h:69
ChaseMovementGenerator::_reachTarget
void _reachTarget(T *)
Definition
TargetedMovementGenerator.cpp:209
FollowMovementGenerator::FollowMovementGenerator
FollowMovementGenerator(Unit *target, float offset, float angle)
Definition
TargetedMovementGenerator.h:82
FollowMovementGenerator::EnableWalking
bool EnableWalking() const
FollowMovementGenerator::_addUnitStateMove
static void _addUnitStateMove(T *u)
Definition
TargetedMovementGenerator.h:94
FollowMovementGenerator::DoReset
void DoReset(T *)
Definition
TargetedMovementGenerator.cpp:309
FollowMovementGenerator::_reachTarget
void _reachTarget(T *)
Definition
TargetedMovementGenerator.h:97
FollowMovementGenerator::_lostTarget
bool _lostTarget(T *) const
Definition
TargetedMovementGenerator.h:96
FollowMovementGenerator::GetMovementGeneratorType
MovementGeneratorType GetMovementGeneratorType()
Definition
TargetedMovementGenerator.h:86
FollowMovementGenerator::DoFinalize
void DoFinalize(T *)
Definition
TargetedMovementGenerator.cpp:302
FollowMovementGenerator::_updateSpeed
void _updateSpeed(T *owner)
FollowMovementGenerator::FollowMovementGenerator
FollowMovementGenerator(Unit *target)
Definition
TargetedMovementGenerator.h:80
FollowMovementGenerator::~FollowMovementGenerator
~FollowMovementGenerator()
Definition
TargetedMovementGenerator.h:84
FollowMovementGenerator::_clearUnitStateMove
static void _clearUnitStateMove(T *u)
Definition
TargetedMovementGenerator.h:93
FollowMovementGenerator::DoInitialize
void DoInitialize(T *)
FollowMovementGenerator::MovementInform
void MovementInform(T *)
Definition
TargetedMovementGenerator.cpp:315
FollowerReference
Definition
FollowerReference.h:15
MovementGeneratorMedium
Definition
MovementGenerator.h:39
PathGenerator
Definition
PathGenerator.h:40
TargetedMovementGeneratorBase::i_target
FollowerReference i_target
Definition
TargetedMovementGenerator.h:20
TargetedMovementGeneratorBase::TargetedMovementGeneratorBase
TargetedMovementGeneratorBase(Unit *target)
Definition
TargetedMovementGenerator.h:17
TargetedMovementGeneratorBase::stopFollowing
void stopFollowing()
Definition
TargetedMovementGenerator.h:18
TargetedMovementGeneratorMedium::GetTarget
Unit * GetTarget() const
Definition
TargetedMovementGenerator.h:37
TargetedMovementGeneratorMedium::~TargetedMovementGeneratorMedium
~TargetedMovementGeneratorMedium()
Definition
TargetedMovementGenerator.h:33
TargetedMovementGeneratorMedium::i_path
PathGenerator * i_path
Definition
TargetedMovementGenerator.h:44
TargetedMovementGeneratorMedium::i_angle
float i_angle
Definition
TargetedMovementGenerator.h:47
TargetedMovementGeneratorMedium::i_offset
float i_offset
Definition
TargetedMovementGenerator.h:46
TargetedMovementGeneratorMedium::IsReachable
bool IsReachable() const
Definition
TargetedMovementGenerator.h:40
TargetedMovementGeneratorMedium::unitSpeedChanged
void unitSpeedChanged()
Definition
TargetedMovementGenerator.h:39
TargetedMovementGeneratorMedium::i_targetReached
bool i_targetReached
Definition
TargetedMovementGenerator.h:49
TargetedMovementGeneratorMedium::TargetedMovementGeneratorMedium
TargetedMovementGeneratorMedium(Unit *target, float offset, float angle)
Definition
TargetedMovementGenerator.h:27
TargetedMovementGeneratorMedium::i_recheckDistance
TimeTrackerSmall i_recheckDistance
Definition
TargetedMovementGenerator.h:45
TargetedMovementGeneratorMedium::_setTargetLocation
void _setTargetLocation(T *owner, bool updateDestination)
Definition
TargetedMovementGenerator.cpp:23
TargetedMovementGeneratorMedium::DoUpdate
bool DoUpdate(T *, uint32)
Definition
TargetedMovementGenerator.cpp:144
TargetedMovementGeneratorMedium::i_recalculateTravel
bool i_recalculateTravel
Definition
TargetedMovementGenerator.h:48
Unit
Definition
Unit.h:1367
TimeTrackerSmall
Definition
Timer.h:105
src
server
game
Movement
MovementGenerators
TargetedMovementGenerator.h
Generated on
for Project SkyFire Core by
1.17.0