Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
LFGQueue.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_LFGQUEUE_H
7#define SF_LFGQUEUE_H
8
9#include "LFG.h"
10
11namespace lfg
12{
13
27
38
41 {
45
46 LfgQueueData(time_t _joinTime, LfgDungeonSet const& _dungeons, LfgRolesMap const& _roles) :
48 dps(LFG_DPS_NEEDED), dungeons(_dungeons), roles(_roles)
49 { }
50
51 time_t joinTime;
57 std::string bestCompatible;
58 };
59
61 {
62 LfgWaitTime() : time(-1), number(0) { }
65 };
66
67 typedef std::map<uint32, LfgWaitTime> LfgWaitTimesContainer;
68 typedef std::map<std::string, LfgCompatibilityData> LfgCompatibleContainer;
69 typedef std::map<uint64, LfgQueueData> LfgQueueDataContainer;
70
75 {
76 public:
77 // Add/Remove from queue
78 void AddToQueue(uint64 guid, bool reQueue = false);
79 void RemoveFromQueue(uint64 guid);
80 void AddQueueData(uint64 guid, time_t joinTime, LfgDungeonSet const& dungeons, LfgRolesMap const& rolesMap);
81 void RemoveQueueData(uint64 guid);
82 bool HasQueueData(uint64 guid) const;
83
84 // Update Timers (when proposal success)
85 void UpdateWaitTimeAvg(int32 waitTime, uint32 dungeonId);
86 void UpdateWaitTimeTank(int32 waitTime, uint32 dungeonId);
87 void UpdateWaitTimeHealer(int32 waitTime, uint32 dungeonId);
88 void UpdateWaitTimeDps(int32 waitTime, uint32 dungeonId);
89
90 // Update Queue timers
91 void UpdateQueueTimers(uint8 queueId, time_t currTime);
92 time_t GetJoinTime(uint64 guid) const;
93
94 // Find new group
96
97 // Just for debugging purposes
98 std::string DumpQueueInfo(bool full = false) const;
99 std::string DumpCompatibleInfo(bool full = false) const;
100
101 private:
102 void SetQueueUpdateData(std::string const& strGuids, LfgRolesMap const& proposalRoles);
104
105 void AddToNewQueue(uint64 guid);
106 void AddToCurrentQueue(uint64 guid);
107 void RemoveFromNewQueue(uint64 guid);
109
110 void SetCompatibles(std::string const& key, LfgCompatibility compatibles);
111 LfgCompatibility GetCompatibles(std::string const& key);
112 void RemoveFromCompatibles(uint64 guid);
113
114 void SetCompatibilityData(std::string const& key, LfgCompatibilityData const& compatibles);
115 LfgCompatibilityData* GetCompatibilityData(std::string const& key);
116 void FindBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQueue);
117 void UpdateBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQueue, std::string const& key, LfgRolesMap const& roles);
118
121
122 // Queue
125
132 };
133
134} // namespace lfg
135
136#endif
std::int32_t int32
Definition Define.h:73
std::uint8_t uint8
Definition Define.h:79
std::uint32_t uint32
Definition Define.h:77
std::uint64_t uint64
Definition Define.h:76
LfgCompatibility GetCompatibles(std::string const &key)
Definition LFGQueue.cpp:438
LfgQueueDataContainer QueueDataStore
Queued groups.
Definition LFGQueue.h:123
LfgRolesMap const & RemoveFromQueueUpdateData(uint64 guid)
void RemoveFromQueue(uint64 guid)
Definition LFGQueue.cpp:308
LfgCompatibilityData * GetCompatibilityData(std::string const &key)
Definition LFGQueue.cpp:447
void UpdateBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQueue, std::string const &key, LfgRolesMap const &roles)
Definition LFGQueue.cpp:965
void UpdateQueueTimers(uint8 queueId, time_t currTime)
Definition LFGQueue.cpp:790
LfgCompatibleContainer CompatibleMapStore
Compatible dungeons.
Definition LFGQueue.h:124
void AddToCurrentQueue(uint64 guid)
Definition LFGQueue.cpp:342
LfgGuidList currentQueueStore
Ordered list. Used to find groups.
Definition LFGQueue.h:130
void AddToQueue(uint64 guid, bool reQueue=false)
Definition LFGQueue.cpp:293
time_t GetJoinTime(uint64 guid) const
Definition LFGQueue.cpp:836
LfgWaitTimesContainer waitTimesTankStore
Average wait time to find a group queuing as tank.
Definition LFGQueue.h:127
std::string DumpQueueInfo(bool full=false) const
Definition LFGQueue.cpp:845
void UpdateWaitTimeAvg(int32 waitTime, uint32 dungeonId)
Definition LFGQueue.cpp:371
LfgWaitTimesContainer waitTimesAvgStore
Average wait time to find a group queuing as multiple roles.
Definition LFGQueue.h:126
void RemoveFromNewQueue(uint64 guid)
Definition LFGQueue.cpp:337
void FindBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQueue)
Definition LFGQueue.cpp:953
std::string DumpCompatibleInfo(bool full=false) const
Definition LFGQueue.cpp:942
bool HasQueueData(uint64 guid) const
Definition LFGQueue.cpp:366
void SetCompatibles(std::string const &key, LfgCompatibility compatibles)
Definition LFGQueue.cpp:421
LfgGuidList newToQueueStore
New groups to add to queue.
Definition LFGQueue.h:131
uint8 FindGroups()
Definition LFGQueue.cpp:456
void RemoveFromCurrentQueue(uint64 guid)
Definition LFGQueue.cpp:348
void UpdateWaitTimeHealer(int32 waitTime, uint32 dungeonId)
Definition LFGQueue.cpp:385
LfgCompatibility CheckCompatibility(LfgGuidList check)
Definition LFGQueue.cpp:524
void SetCompatibilityData(std::string const &key, LfgCompatibilityData const &compatibles)
Definition LFGQueue.cpp:427
LfgWaitTimesContainer waitTimesDpsStore
Average wait time to find a group queuing as dps.
Definition LFGQueue.h:129
void RemoveQueueData(uint64 guid)
Definition LFGQueue.cpp:359
void UpdateWaitTimeTank(int32 waitTime, uint32 dungeonId)
Definition LFGQueue.cpp:378
LfgWaitTimesContainer waitTimesHealerStore
Average wait time to find a group queuing as healer.
Definition LFGQueue.h:128
void UpdateWaitTimeDps(int32 waitTime, uint32 dungeonId)
Definition LFGQueue.cpp:392
void AddQueueData(uint64 guid, time_t joinTime, LfgDungeonSet const &dungeons, LfgRolesMap const &rolesMap)
Definition LFGQueue.cpp:353
void SetQueueUpdateData(std::string const &strGuids, LfgRolesMap const &proposalRoles)
void AddToNewQueue(uint64 guid)
Definition LFGQueue.cpp:331
void RemoveFromCompatibles(uint64 guid)
Definition LFGQueue.cpp:404
LfgCompatibility FindNewGroups(LfgGuidList &check, LfgGuidList &all)
Definition LFGQueue.cpp:486
Definition LFG.cpp:11
std::map< std::string, LfgCompatibilityData > LfgCompatibleContainer
Definition LFGQueue.h:68
@ LFG_HEALERS_NEEDED
Definition LFG.h:17
@ LFG_TANKS_NEEDED
Definition LFG.h:16
@ LFG_DPS_NEEDED
Definition LFG.h:18
LfgCompatibility
Definition LFGQueue.h:15
@ LFG_COMPATIBLES_WITH_LESS_PLAYERS
Definition LFGQueue.h:23
@ LFG_INCOMPATIBLES_HAS_IGNORES
Definition LFGQueue.h:20
@ LFG_INCOMPATIBLES_MULTIPLE_LFG_GROUPS
Definition LFGQueue.h:19
@ LFG_INCOMPATIBLES_NO_DUNGEONS
Definition LFGQueue.h:22
@ LFG_COMPATIBILITY_PENDING
Definition LFGQueue.h:16
@ LFG_COMPATIBLES_MATCH
Definition LFGQueue.h:25
@ LFG_INCOMPATIBLES_TOO_MUCH_PLAYERS
Definition LFGQueue.h:18
@ LFG_INCOMPATIBLES_WRONG_GROUP_SIZE
Definition LFGQueue.h:17
@ LFG_INCOMPATIBLES_NO_ROLES
Definition LFGQueue.h:21
@ LFG_COMPATIBLES_BAD_STATES
Definition LFGQueue.h:24
std::map< uint64, LfgQueueData > LfgQueueDataContainer
Definition LFGQueue.h:69
std::map< uint32, LfgWaitTime > LfgWaitTimesContainer
Definition LFGQueue.h:67
std::set< uint32 > LfgDungeonSet
Definition LFG.h:107
std::list< uint64 > LfgGuidList
Definition LFG.h:111
std::map< uint64, uint8 > LfgRolesMap
Definition LFG.h:112
LfgCompatibility compatibility
Definition LFGQueue.h:35
LfgCompatibilityData(LfgCompatibility _compatibility, LfgRolesMap const &_roles)
Definition LFGQueue.h:32
LfgCompatibilityData(LfgCompatibility _compatibility)
Definition LFGQueue.h:31
LfgRolesMap roles
Selected Player Role/s.
Definition LFGQueue.h:56
time_t joinTime
Player queue join time (to calculate wait times).
Definition LFGQueue.h:51
std::string bestCompatible
Best compatible combination of people queued.
Definition LFGQueue.h:57
uint8 tanks
Tanks needed.
Definition LFGQueue.h:52
LfgDungeonSet dungeons
Selected Player/Group Dungeon/s.
Definition LFGQueue.h:55
uint8 healers
Healers needed.
Definition LFGQueue.h:53
LfgQueueData(time_t _joinTime, LfgDungeonSet const &_dungeons, LfgRolesMap const &_roles)
Definition LFGQueue.h:46
uint8 dps
Dps needed.
Definition LFGQueue.h:54
int32 time
Wait time.
Definition LFGQueue.h:63
uint32 number
Number of people used to get that wait time.
Definition LFGQueue.h:64