Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
MovementGenerator.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
6
#ifndef SKYFIRE_MOVEMENTGENERATOR_H
7
#define SKYFIRE_MOVEMENTGENERATOR_H
8
9
#include "
Common.h
"
10
#include "
Define.h
"
11
#include "
FactoryHolder.h
"
12
#include "
MotionMaster.h
"
13
#include "
ObjectRegistry.h
"
14
15
class
Unit
;
16
17
class
MovementGenerator
18
{
19
public
:
20
virtual
~MovementGenerator
();
21
22
virtual
void
Initialize
(
Unit
*) = 0;
23
virtual
void
Finalize
(
Unit
*) = 0;
24
25
virtual
void
Reset
(
Unit
*) = 0;
26
27
virtual
bool
Update
(
Unit
*,
uint32
time_diff) = 0;
28
29
virtual
MovementGeneratorType
GetMovementGeneratorType
() = 0;
30
31
virtual
void
unitSpeedChanged
() { }
32
33
// used by Evade code for select point to evade with expected restart default movement
34
virtual
bool
GetResetPosition
(
Unit
*,
float
&
/*x*/
,
float
&
/*y*/
,
float
&
/*z*/
) {
return
false
; }
35
};
36
37
template
<
class
T,
class
D>
38
class
MovementGeneratorMedium
:
public
MovementGenerator
39
{
40
public
:
41
void
Initialize
(
Unit
* u)
42
{
43
//u->AssertIsType<T>();
44
(
static_cast<
D*
>
(
this
))->DoInitialize(
static_cast<
T*
>
(u));
45
}
46
47
void
Finalize
(
Unit
* u)
48
{
49
//u->AssertIsType<T>();
50
(
static_cast<
D*
>
(
this
))->DoFinalize(
static_cast<
T*
>
(u));
51
}
52
53
void
Reset
(
Unit
* u)
54
{
55
//u->AssertIsType<T>();
56
(
static_cast<
D*
>
(
this
))->DoReset(
static_cast<
T*
>
(u));
57
}
58
59
bool
Update
(
Unit
* u,
uint32
time_diff)
60
{
61
//u->AssertIsType<T>();
62
return
(
static_cast<
D*
>
(
this
))->DoUpdate(
static_cast<
T*
>
(u), time_diff);
63
}
64
};
65
66
struct
SelectableMovement
:
public
FactoryHolder
<MovementGenerator, MovementGeneratorType>
67
{
68
SelectableMovement
(
MovementGeneratorType
mgt) :
FactoryHolder
<
MovementGenerator
,
MovementGeneratorType
>(mgt) { }
69
};
70
71
template
<
class
REAL_MOVEMENT>
72
struct
MovementGeneratorFactory
:
public
SelectableMovement
73
{
74
MovementGeneratorFactory
(
MovementGeneratorType
mgt) :
SelectableMovement
(mgt) { }
75
76
MovementGenerator
*
Create
(
void
*)
const
;
77
};
78
79
typedef
FactoryHolder<MovementGenerator, MovementGeneratorType>
MovementGeneratorCreator
;
80
typedef
FactoryHolder<MovementGenerator, MovementGeneratorType>::FactoryHolderRegistry
MovementGeneratorRegistry
;
81
typedef
FactoryHolder<MovementGenerator, MovementGeneratorType>::FactoryHolderRepository
MovementGeneratorRepository
;
82
#endif
Common.h
Define.h
uint32
std::uint32_t uint32
Definition
Define.h:77
FactoryHolder.h
MotionMaster.h
MovementGeneratorType
MovementGeneratorType
Definition
MotionMaster.h:23
MovementGeneratorRepository
FactoryHolder< MovementGenerator, MovementGeneratorType >::FactoryHolderRepository MovementGeneratorRepository
Definition
MovementGenerator.h:81
MovementGeneratorRegistry
FactoryHolder< MovementGenerator, MovementGeneratorType >::FactoryHolderRegistry MovementGeneratorRegistry
Definition
MovementGenerator.h:80
MovementGeneratorCreator
FactoryHolder< MovementGenerator, MovementGeneratorType > MovementGeneratorCreator
Definition
MovementGenerator.h:79
ObjectRegistry.h
FactoryHolder
Definition
FactoryHolder.h:18
FactoryHolder< MovementGenerator, MovementGeneratorType >::FactoryHolder
FactoryHolder(MovementGeneratorType k)
Definition
FactoryHolder.h:24
FactoryHolder::FactoryHolderRepository
Skyfire::Singleton< FactoryHolderRegistry, Skyfire::NullMutex > FactoryHolderRepository
Definition
FactoryHolder.h:22
FactoryHolder::FactoryHolderRegistry
ObjectRegistry< FactoryHolder< T, Key >, Key > FactoryHolderRegistry
Definition
FactoryHolder.h:20
MovementGenerator
Definition
MovementGenerator.h:18
MovementGenerator::Initialize
virtual void Initialize(Unit *)=0
MovementGenerator::unitSpeedChanged
virtual void unitSpeedChanged()
Definition
MovementGenerator.h:31
MovementGenerator::~MovementGenerator
virtual ~MovementGenerator()
Definition
MovementGenerator.cpp:8
MovementGenerator::GetResetPosition
virtual bool GetResetPosition(Unit *, float &, float &, float &)
Definition
MovementGenerator.h:34
MovementGenerator::GetMovementGeneratorType
virtual MovementGeneratorType GetMovementGeneratorType()=0
MovementGenerator::Reset
virtual void Reset(Unit *)=0
MovementGenerator::Update
virtual bool Update(Unit *, uint32 time_diff)=0
MovementGenerator::Finalize
virtual void Finalize(Unit *)=0
MovementGeneratorMedium
Definition
MovementGenerator.h:39
MovementGeneratorMedium::Initialize
void Initialize(Unit *u)
Definition
MovementGenerator.h:41
MovementGeneratorMedium::Reset
void Reset(Unit *u)
Definition
MovementGenerator.h:53
MovementGeneratorMedium::Update
bool Update(Unit *u, uint32 time_diff)
Definition
MovementGenerator.h:59
MovementGeneratorMedium::Finalize
void Finalize(Unit *u)
Definition
MovementGenerator.h:47
Unit
Definition
Unit.h:1367
MovementGeneratorFactory::Create
MovementGenerator * Create(void *) const
Abstract Factory create method.
Definition
MovementGeneratorImpl.h:13
MovementGeneratorFactory::MovementGeneratorFactory
MovementGeneratorFactory(MovementGeneratorType mgt)
Definition
MovementGenerator.h:74
SelectableMovement::SelectableMovement
SelectableMovement(MovementGeneratorType mgt)
Definition
MovementGenerator.h:68
src
server
game
Movement
MovementGenerator.h
Generated on
for Project SkyFire Core by
1.17.0