Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
CreatureGroups.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 SF_FORMATIONS_H
7
#define SF_FORMATIONS_H
8
9
#include "
Define.h
"
10
#include "
Platform/Singleton.h
"
11
#include "
UnorderedMap.h
"
12
#include <map>
13
14
class
Creature
;
15
class
CreatureGroup
;
16
17
struct
FormationInfo
18
{
19
uint32
leaderGUID
;
20
float
follow_dist
;
21
float
follow_angle
;
22
uint8
groupAI
;
23
uint16
point_1
;
24
uint16
point_2
;
25
};
26
27
typedef
UNORDERED_MAP
<
uint32
/*memberDBGUID*/
,
FormationInfo
*>
CreatureGroupInfoType
;
28
29
class
FormationMgr
30
{
31
friend
class
Skyfire::Singleton
<
FormationMgr
,
Skyfire
::NullMutex>;
32
public
:
33
FormationMgr
() { }
34
~FormationMgr
();
35
void
AddCreatureToGroup
(
uint32
group_id,
Creature
* creature);
36
void
RemoveCreatureFromGroup
(
CreatureGroup
* group,
Creature
* creature);
37
void
LoadCreatureFormations
();
38
CreatureGroupInfoType
CreatureGroupMap
;
39
};
40
41
class
CreatureGroup
42
{
43
private
:
44
Creature
*
m_leader
;
//Important do not forget sometimes to work with pointers instead synonims :D:D
45
typedef
std::map<Creature*, FormationInfo*>
CreatureGroupMemberType
;
46
CreatureGroupMemberType
m_members
;
47
48
uint32
m_groupID
;
49
bool
m_Formed
;
50
51
public
:
52
//Group cannot be created empty
53
explicit
CreatureGroup
(
uint32
id
) :
m_leader
(NULL),
m_groupID
(id),
m_Formed
(false) { }
54
~CreatureGroup
() { }
55
56
Creature
*
getLeader
()
const
{
return
m_leader
; }
57
uint32
GetId
()
const
{
return
m_groupID
; }
58
bool
isEmpty
()
const
{
return
m_members
.empty(); }
59
bool
isFormed
()
const
{
return
m_Formed
; }
60
61
void
AddMember
(
Creature
* member);
62
void
RemoveMember
(
Creature
* member);
63
void
FormationReset
(
bool
dismiss);
64
65
void
LeaderMoveTo
(
float
x,
float
y,
float
z);
66
void
MemberAttackStart
(
Creature
* member,
Unit
* target);
67
};
68
69
#define sFormationMgr Skyfire::Singleton<FormationMgr, Skyfire::NullMutex>::instance()
70
71
#endif
CreatureGroupInfoType
UNORDERED_MAP< uint32, FormationInfo * > CreatureGroupInfoType
Definition
CreatureGroups.h:27
Define.h
uint8
std::uint8_t uint8
Definition
Define.h:79
uint32
std::uint32_t uint32
Definition
Define.h:77
uint16
std::uint16_t uint16
Definition
Define.h:78
Singleton.h
UnorderedMap.h
UNORDERED_MAP
#define UNORDERED_MAP
Definition
UnorderedMap.h:58
CreatureGroup
Definition
CreatureGroups.h:42
CreatureGroup::GetId
uint32 GetId() const
Definition
CreatureGroups.h:57
CreatureGroup::~CreatureGroup
~CreatureGroup()
Definition
CreatureGroups.h:54
CreatureGroup::m_Formed
bool m_Formed
Definition
CreatureGroups.h:49
CreatureGroup::FormationReset
void FormationReset(bool dismiss)
Definition
CreatureGroups.cpp:184
CreatureGroup::isEmpty
bool isEmpty() const
Definition
CreatureGroups.h:58
CreatureGroup::m_members
CreatureGroupMemberType m_members
Definition
CreatureGroups.h:46
CreatureGroup::RemoveMember
void RemoveMember(Creature *member)
Definition
CreatureGroups.cpp:144
CreatureGroup::MemberAttackStart
void MemberAttackStart(Creature *member, Unit *target)
Definition
CreatureGroups.cpp:153
CreatureGroup::LeaderMoveTo
void LeaderMoveTo(float x, float y, float z)
Definition
CreatureGroups.cpp:200
CreatureGroup::CreatureGroup
CreatureGroup(uint32 id)
Definition
CreatureGroups.h:53
CreatureGroup::isFormed
bool isFormed() const
Definition
CreatureGroups.h:59
CreatureGroup::getLeader
Creature * getLeader() const
Definition
CreatureGroups.h:56
CreatureGroup::CreatureGroupMemberType
std::map< Creature *, FormationInfo * > CreatureGroupMemberType
Definition
CreatureGroups.h:45
CreatureGroup::m_leader
Creature * m_leader
Definition
CreatureGroups.h:44
CreatureGroup::AddMember
void AddMember(Creature *member)
Definition
CreatureGroups.cpp:129
CreatureGroup::m_groupID
uint32 m_groupID
Definition
CreatureGroups.h:48
Creature
Definition
Creature.h:427
FormationMgr::RemoveCreatureFromGroup
void RemoveCreatureFromGroup(CreatureGroup *group, Creature *creature)
Definition
CreatureGroups.cpp:44
FormationMgr::~FormationMgr
~FormationMgr()
Definition
CreatureGroups.cpp:14
FormationMgr::CreatureGroupMap
CreatureGroupInfoType CreatureGroupMap
Definition
CreatureGroups.h:38
FormationMgr::FormationMgr
FormationMgr()
Definition
CreatureGroups.h:33
FormationMgr::AddCreatureToGroup
void AddCreatureToGroup(uint32 group_id, Creature *creature)
Definition
CreatureGroups.cpp:20
FormationMgr::LoadCreatureFormations
void LoadCreatureFormations()
Definition
CreatureGroups.cpp:61
Skyfire::Singleton
Definition
Singleton.h:15
Unit
Definition
Unit.h:1367
Skyfire
Definition
AuthPatchTransfer.h:12
FormationInfo
Definition
CreatureGroups.h:18
FormationInfo::groupAI
uint8 groupAI
Definition
CreatureGroups.h:22
FormationInfo::point_1
uint16 point_1
Definition
CreatureGroups.h:23
FormationInfo::point_2
uint16 point_2
Definition
CreatureGroups.h:24
FormationInfo::follow_dist
float follow_dist
Definition
CreatureGroups.h:20
FormationInfo::leaderGUID
uint32 leaderGUID
Definition
CreatureGroups.h:19
FormationInfo::follow_angle
float follow_angle
Definition
CreatureGroups.h:21
src
server
game
Entities
Creature
CreatureGroups.h
Generated on
for Project SkyFire Core by
1.17.0