Project SkyFire Core
SkyFire 5.4.8 server core API documentation
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
14class Creature;
15class CreatureGroup;
16
26
28
30{
31 friend class Skyfire::Singleton<FormationMgr, Skyfire::NullMutex>;
32public:
35 void AddCreatureToGroup(uint32 group_id, Creature* creature);
36 void RemoveCreatureFromGroup(CreatureGroup* group, Creature* creature);
39};
40
42{
43private:
44 Creature* m_leader; //Important do not forget sometimes to work with pointers instead synonims :D:D
45 typedef std::map<Creature*, FormationInfo*> CreatureGroupMemberType;
47
50
51public:
52 //Group cannot be created empty
53 explicit CreatureGroup(uint32 id) : m_leader(NULL), m_groupID(id), m_Formed(false) { }
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
UNORDERED_MAP< uint32, FormationInfo * > CreatureGroupInfoType
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::uint16_t uint16
Definition Define.h:78
#define UNORDERED_MAP
uint32 GetId() const
void FormationReset(bool dismiss)
bool isEmpty() const
CreatureGroupMemberType m_members
void RemoveMember(Creature *member)
void MemberAttackStart(Creature *member, Unit *target)
void LeaderMoveTo(float x, float y, float z)
CreatureGroup(uint32 id)
bool isFormed() const
Creature * getLeader() const
std::map< Creature *, FormationInfo * > CreatureGroupMemberType
Creature * m_leader
void AddMember(Creature *member)
void RemoveCreatureFromGroup(CreatureGroup *group, Creature *creature)
CreatureGroupInfoType CreatureGroupMap
void AddCreatureToGroup(uint32 group_id, Creature *creature)
void LoadCreatureFormations()
Definition Unit.h:1367