EvEmu  0.8.4
11 September 2021
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
FleetService.h
Go to the documentation of this file.
1 
12 #ifndef EVEMU_SRC_FLEET_SVC_H_
13 #define EVEMU_SRC_FLEET_SVC_H_
14 
15 #include "eve-common.h"
16 #include "utils/Singleton.h"
17 
18 #include "Client.h"
19 #include "EntityList.h"
20 #include "packets/Fleet.h"
21 #include "fleet/FleetData.h"
22 
24 : public Singleton<FleetService>
25 {
26 public:
27  FleetService();
28  ~FleetService() { /* do nothing here */ }
29 
30  void Initialize(PyServiceMgr* svc);
31 
32  uint32 CreateFleet(Client* pClient);
33  PyRep* CreateWing(uint32 fleetID);
34  void CreateSquad(uint32 fleetID, uint32 wingID);
35  void DeleteFleet(uint32 fleetID);
36  void DeleteWing(uint32 wingID);
37  void DeleteSquad(uint32 squadID);
38 
40  PyRep* GetWings(uint32 fleetID);
41 
42  PyRep* GetFleetAdvert(uint32 fleetID);
43  void CreateFleetAdvert(uint32 fleetID, FleetAdvert data);
44  void RemoveFleetAdvert(uint32 fleetID);
45 
46  void GetWingIDs(uint32 fleetID, std::vector< uint32 >& wingIDs);
47  void GetSquadIDs(uint32 wingID, std::vector< uint32 >& squadIDs);
48 
49  void GetFleetData(uint32 fleetID, FleetData& data);
50  void GetWingData(uint32 wingID, WingData& data);
51  void GetSquadData(uint32 squadID, SquadData& data);
52  void GetMemeberVec(uint32 fleetID, std::vector<Client*>& data);
53 
54  bool IsWingActive(int32 wingID);
55 
56  void SetMOTD(uint32 fleetID, std::string motd);
57  PyRep* GetMOTD(uint32 fleetID);
58 
59  void RenameWing(uint32 wingID, std::string name);
60  void RenameSquad(uint32 squadID, std::string name);
61 
62  void UpdateBoost(uint32 fleetID, bool fleet, std::list< int32 >& wing, std::list< int32 >& squad);
63  void UpdateOptions(uint32 fleetID, bool isFreeMove, bool isRegistered, bool isVoiceEnabled);
64 
65  bool AddMember(Client* pClient, uint32 fleetID, int32 wingID, int32 squadID, int8 job, int8 role, int8 booster);
66  bool UpdateMember(uint32 charID, uint32 fleetID, int32 newWingID, int32 newSquadID, int8 newJob, int8 newRole, int8 newBooster);
67 
68  Client* GetFleetLeader(uint32 fleetID);
70  Client* GetWingLeader(uint32 wingID);
72  Client* GetSquadLeader(uint32 squadID);
74 
75  std::string GetFleetName(uint32 fleetID);
76  std::string GetWingName(uint32 wingID);
77  std::string GetSquadName(uint32 squadID);
78 
79  std::string GetFleetDescription(uint32 fleetID);
80 
81  void GetRandUnitIDs(uint32 fleetID, int32& wingID, int32& squadID);
82 
83  void LeaveFleet(Client* pClient);
84 
85  void FleetBroadcast(Client* pFrom, uint32 itemID, int8 scope, int8 group, std::string msg);
86 
87  void SendActiveStatus(uint32 fleetID, int32 wingID, int32 squadID);
88  // this sends "*fleetid" update to all fleet memebers and is sequenced
89  void SendFleetUpdate(uint32 fleetID, const char *notifyType, PyTuple *payload);
90 
91  std::string GetBoosterData(uint32 fleetID, uint16& length);
92 
93  bool GetInviteData(uint32 charID, InviteData& data);
94  bool SaveInviteData(uint32 charID, InviteData& data);
95  void RemoveInviteData(uint32 charID);
96 
97  bool AddJoinRequest(uint32 fleetID, Client* pClient);
98  void GetJoinRequests(uint32 fleetID, std::vector<Client*>& data);
99  void RemoveJoinRequest(uint32 fleetID, Client* pClient);
100 
101  uint8 GetFleetMemberCount(uint32 fleetID) { return m_fleetMembers.count(fleetID); }
102 
103  std::string GetJobName(int8 job);
104  std::string GetRoleName(int8 role);
105  std::string GetBoosterName(int8 booster);
106 
107  std::string GetBCastScopeName(int8 scope);
108  std::string GetBCastGroupName(int8 group);
109 
110  void GetFleetMembersOnGrid(Client* pClient, std::vector<uint32>& data);
111  void GetFleetMembersInSystem(Client* pClient, std::vector<uint32>& data);
112  void GetFleetClientsInSystem(Client* pClient, std::vector<Client*>& data);
113  std::vector<Client *> GetFleetClients(uint32 fleetID);
114 
115 protected:
116  void RemoveMember(Client* pClient);
117 
118  void IncFleetSquads(uint32 fleetID, uint32 wingID);
119  void DecFleetSquads(uint32 fleetID, uint32 wingID);
120 
121  void SetWingBoostData(uint32 wingID, BoostData& bData);
122  void SetSquadBoostData(uint32 squadID, BoostData bData, bool& sboost);
123 
127 
128 private:
131 
132  std::map<uint32, InviteData> m_inviteData; // charID/data
133 
134  std::map<uint32, FleetAdvert> m_fleetAdvertMap; // fleetID/data
135 
136  std::map<uint32, FleetData> m_fleetDataMap; // fleetID/data
137  std::map<uint32, WingData> m_wingDataMap; // wingID/data
138  std::map<uint32, SquadData> m_squadDataMap; // squadID/data
139 
140  std::multimap<uint32, Client*> m_joinReq; // fleetID/Client*
141  std::multimap<uint32, Client*> m_fleetMembers; // fleetID/Client*
142  std::multimap<uint32, uint32> m_fleetWings; // fleetID/wingIDs
143  std::multimap<uint32, uint32> m_wingSquads; // wingID/squadIDs
144 };
145 
146 //Singleton
147 #define sFltSvc \
148  ( FleetService::get() )
149 
150 #endif // EVEMU_SRC_FLEET_SVC_H_
std::multimap< uint32, Client * > m_fleetMembers
Definition: FleetService.h:141
Base Python wire object.
Definition: PyRep.h:66
void GetSquadData(uint32 squadID, SquadData &data)
uint32 CreateFleet(Client *pClient)
unsigned __int8 uint8
Definition: eve-compat.h:46
void SendFleetUpdate(uint32 fleetID, const char *notifyType, PyTuple *payload)
void FleetBroadcast(Client *pFrom, uint32 itemID, int8 scope, int8 group, std::string msg)
std::map< uint32, InviteData > m_inviteData
Definition: FleetService.h:132
bool SaveInviteData(uint32 charID, InviteData &data)
void GetRandUnitIDs(uint32 fleetID, int32 &wingID, int32 &squadID)
std::multimap< uint32, uint32 > m_wingSquads
Definition: FleetService.h:143
std::multimap< uint32, uint32 > m_fleetWings
Definition: FleetService.h:142
void SetWingBoostData(uint32 wingID, BoostData &bData)
void RemoveJoinRequest(uint32 fleetID, Client *pClient)
uint32 GetFleetLeaderID(uint32 fleetID)
void SetSquadBoostData(uint32 squadID, BoostData bData, bool &sboost)
void UpdateBoost(uint32 fleetID, bool fleet, std::list< int32 > &wing, std::list< int32 > &squad)
bool AddJoinRequest(uint32 fleetID, Client *pClient)
void DeleteFleet(uint32 fleetID)
uint8 GetFleetMemberCount(uint32 fleetID)
Definition: FleetService.h:101
PyRep * GetAvailableFleets()
std::vector< Client * > GetFleetClients(uint32 fleetID)
void GetWingData(uint32 wingID, WingData &data)
PyRep * GetMOTD(uint32 fleetID)
bool IsWingActive(int32 wingID)
std::multimap< uint32, Client * > m_joinReq
Definition: FleetService.h:140
Python tuple.
Definition: PyRep.h:567
void CreateFleetAdvert(uint32 fleetID, FleetAdvert data)
signed __int8 int8
Definition: eve-compat.h:45
std::map< uint32, FleetData > m_fleetDataMap
Definition: FleetService.h:136
Client * GetSquadLeader(uint32 squadID)
signed __int32 int32
Definition: eve-compat.h:49
std::string GetBoosterName(int8 booster)
void GetFleetData(uint32 fleetID, FleetData &data)
void GetMemeberVec(uint32 fleetID, std::vector< Client * > &data)
std::string GetWingName(uint32 wingID)
bool GetInviteData(uint32 charID, InviteData &data)
void RemoveInviteData(uint32 charID)
PyRep * GetFleetAdvert(uint32 fleetID)
PyRep * CreateWing(uint32 fleetID)
PyServiceMgr * m_services
Definition: FleetService.h:129
bool UpdateMember(uint32 charID, uint32 fleetID, int32 newWingID, int32 newSquadID, int8 newJob, int8 newRole, int8 newBooster)
void SendActiveStatus(uint32 fleetID, int32 wingID, int32 squadID)
void DecFleetSquads(uint32 fleetID, uint32 wingID)
Client * GetFleetLeader(uint32 fleetID)
std::map< uint32, FleetAdvert > m_fleetAdvertMap
Definition: FleetService.h:134
std::string GetJobName(int8 job)
void LeaveFleet(Client *pClient)
void GetFleetClientsInSystem(Client *pClient, std::vector< Client * > &data)
std::string GetBCastScopeName(int8 scope)
std::string GetFleetDescription(uint32 fleetID)
Client * GetWingLeader(uint32 wingID)
std::string GetRoleName(int8 role)
void Initialize(PyServiceMgr *svc)
void RenameWing(uint32 wingID, std::string name)
Definition: Client.h:66
unsigned __int32 uint32
Definition: eve-compat.h:50
void RemoveMember(Client *pClient)
void UpdateOptions(uint32 fleetID, bool isFreeMove, bool isRegistered, bool isVoiceEnabled)
void CreateSquad(uint32 fleetID, uint32 wingID)
void RemoveFleetAdvert(uint32 fleetID)
std::map< uint32, SquadData > m_squadDataMap
Definition: FleetService.h:138
void GetFleetMembersInSystem(Client *pClient, std::vector< uint32 > &data)
uint32 m_fleetID
Definition: FleetService.h:124
void DeleteWing(uint32 wingID)
std::string GetBoosterData(uint32 fleetID, uint16 &length)
void GetFleetMembersOnGrid(Client *pClient, std::vector< uint32 > &data)
uint32 m_wingID
Definition: FleetService.h:125
void GetSquadIDs(uint32 wingID, std::vector< uint32 > &squadIDs)
void IncFleetSquads(uint32 fleetID, uint32 wingID)
typeID Spawn an NPC with the specified type text Search for items matching the specified query() type()() itemID() copy() materialLevel()() itemID(attributeID)-Retrieves attribute value." ) COMMAND( setattr
Template used for singleton classes.
Definition: Singleton.h:43
std::string GetFleetName(uint32 fleetID)
void DeleteSquad(uint32 squadID)
uint32 GetWingLeaderID(uint32 wingID)
uint32 GetSquadLeaderID(uint32 squadID)
PyRep * GetWings(uint32 fleetID)
uint32 m_squadID
Definition: FleetService.h:126
void GetJoinRequests(uint32 fleetID, std::vector< Client * > &data)
void SetMOTD(uint32 fleetID, std::string motd)
unsigned __int16 uint16
Definition: eve-compat.h:48
std::string GetBCastGroupName(int8 group)
std::map< uint32, WingData > m_wingDataMap
Definition: FleetService.h:137
bool AddMember(Client *pClient, uint32 fleetID, int32 wingID, int32 squadID, int8 job, int8 role, int8 booster)
std::string GetSquadName(uint32 squadID)
void RenameSquad(uint32 squadID, std::string name)
void GetWingIDs(uint32 fleetID, std::vector< uint32 > &wingIDs)