diff options
author | Dustin Paul <dmpaul26@yahoo.com> | 2016-04-11 12:33:25 -0400 |
---|---|---|
committer | DDuarte <dnpd.dd@gmail.com> | 2016-04-16 01:31:36 +0100 |
commit | 38cc1b902d4941d14144722e2b5e0b191a808365 (patch) | |
tree | 2ae31153805b52adccb1f3dcb9b7020a78980924 /src | |
parent | d26b0419c3fc5aa7e3cfee25170453770027eae9 (diff) |
Core/LFG: Readd players to queue when proposal fails because someone else declined it (#16279)
(cherry picked from commit bdeeab13bdfd545192fd619028a9114379235394)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 2 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGQueue.cpp | 12 | ||||
-rw-r--r-- | src/server/game/DungeonFinding/LFGQueue.h | 3 |
3 files changed, 13 insertions, 4 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 33b252008c9..25732e32f93 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -1148,7 +1148,7 @@ void LFGMgr::RemoveProposal(LfgProposalContainer::iterator itProposal, LfgUpdate for (GuidList::const_iterator it = proposal.queues.begin(); it != proposal.queues.end(); ++it) { ObjectGuid guid = *it; - queue.AddToQueue(guid); + queue.AddToQueue(guid, true); } ProposalsStore.erase(itProposal); diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp index 766eee2f471..d80485afbf4 100644 --- a/src/server/game/DungeonFinding/LFGQueue.cpp +++ b/src/server/game/DungeonFinding/LFGQueue.cpp @@ -117,7 +117,7 @@ std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check) const return o.str(); } -void LFGQueue::AddToQueue(ObjectGuid guid) +void LFGQueue::AddToQueue(ObjectGuid guid, bool reAdd) { LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(guid); if (itQueue == QueueDataStore.end()) @@ -126,7 +126,10 @@ void LFGQueue::AddToQueue(ObjectGuid guid) return; } - AddToNewQueue(guid); + if (reAdd) + AddToFrontCurrentQueue(guid); + else + AddToNewQueue(guid); } void LFGQueue::RemoveFromQueue(ObjectGuid guid) @@ -171,6 +174,11 @@ void LFGQueue::AddToCurrentQueue(ObjectGuid guid) currentQueueStore.push_back(guid); } +void LFGQueue::AddToFrontCurrentQueue(ObjectGuid guid) +{ + currentQueueStore.push_front(guid); +} + void LFGQueue::RemoveFromCurrentQueue(ObjectGuid guid) { currentQueueStore.remove(guid); diff --git a/src/server/game/DungeonFinding/LFGQueue.h b/src/server/game/DungeonFinding/LFGQueue.h index c69b3cecb64..f2d49d20c23 100644 --- a/src/server/game/DungeonFinding/LFGQueue.h +++ b/src/server/game/DungeonFinding/LFGQueue.h @@ -89,7 +89,7 @@ class TC_GAME_API LFGQueue // Add/Remove from queue std::string GetDetailedMatchRoles(GuidList const& check) const; - void AddToQueue(ObjectGuid guid); + void AddToQueue(ObjectGuid guid, bool reAdd = false); void RemoveFromQueue(ObjectGuid guid); void AddQueueData(ObjectGuid guid, time_t joinTime, LfgDungeonSet const& dungeons, LfgRolesMap const& rolesMap); void RemoveQueueData(ObjectGuid guid); @@ -116,6 +116,7 @@ class TC_GAME_API LFGQueue void AddToNewQueue(ObjectGuid guid); void AddToCurrentQueue(ObjectGuid guid); + void AddToFrontCurrentQueue(ObjectGuid guid); void RemoveFromNewQueue(ObjectGuid guid); void RemoveFromCurrentQueue(ObjectGuid guid); |