fix(Core/Conditions): correctly check if player queued random dungeon (#24424)
This commit is contained in:
@@ -139,4 +139,13 @@ namespace lfg
|
||||
return m_KicksLeft;
|
||||
}
|
||||
|
||||
void LfgGroupData::AddRandomQueuedPlayer(ObjectGuid guid)
|
||||
{
|
||||
m_RandomQueuedPlayers.insert(guid);
|
||||
}
|
||||
|
||||
[[nodiscard]] bool LfgGroupData::IsRandomQueuedPlayer(ObjectGuid guid) const
|
||||
{
|
||||
return m_RandomQueuedPlayers.contains(guid);
|
||||
}
|
||||
} // namespace lfg
|
||||
|
||||
@@ -37,6 +37,8 @@ namespace lfg
|
||||
void SetState(LfgState state);
|
||||
void RestoreState();
|
||||
void AddPlayer(ObjectGuid guid);
|
||||
void AddRandomQueuedPlayer(ObjectGuid guid);
|
||||
[[nodiscard]] bool IsRandomQueuedPlayer(ObjectGuid guid) const;
|
||||
uint8 RemovePlayer(ObjectGuid guid);
|
||||
void RemoveAllPlayers();
|
||||
void SetLeader(ObjectGuid guid);
|
||||
@@ -66,6 +68,7 @@ namespace lfg
|
||||
LfgState m_OldState; ///< Old State
|
||||
ObjectGuid m_Leader; ///< Leader GUID
|
||||
LfgGuidSet m_Players; ///< Players in group
|
||||
LfgGuidSet m_RandomQueuedPlayers; ///< Players that queued for random dungeon
|
||||
// Dungeon
|
||||
uint32 m_Dungeon; ///< Dungeon entry
|
||||
bool _isLFGGroup;
|
||||
|
||||
@@ -2583,6 +2583,18 @@ namespace lfg
|
||||
GroupsStore[gguid].AddPlayer(guid);
|
||||
}
|
||||
|
||||
void LFGMgr::AddPlayerQueuedForRandomDungeonToGroup(ObjectGuid gguid, ObjectGuid guid)
|
||||
{
|
||||
const LfgDungeonSet& dungeons = GetSelectedDungeons(guid);
|
||||
if (dungeons.empty())
|
||||
return;
|
||||
|
||||
uint32 dungeonId = *dungeons.begin();
|
||||
LFGDungeonData const* dungeon = GetLFGDungeon(dungeonId);
|
||||
if (dungeon && (dungeon->type == LFG_TYPE_RANDOM))
|
||||
GroupsStore[gguid].AddRandomQueuedPlayer(guid);
|
||||
}
|
||||
|
||||
void LFGMgr::SetLeader(ObjectGuid gguid, ObjectGuid leader)
|
||||
{
|
||||
GroupsStore[gguid].SetLeader(leader);
|
||||
@@ -2839,4 +2851,12 @@ namespace lfg
|
||||
sDisableMgr->IsDisabledFor(DISABLE_TYPE_LFG_MAP, mapId, nullptr);
|
||||
}
|
||||
|
||||
bool LFGMgr::IsPlayerQueuedForRandomDungeon(ObjectGuid guid)
|
||||
{
|
||||
auto gguid = GetGroup(guid);
|
||||
if (!gguid)
|
||||
return false;
|
||||
|
||||
return GroupsStore[gguid].IsRandomQueuedPlayer(guid);
|
||||
}
|
||||
} // namespace lfg
|
||||
|
||||
@@ -506,6 +506,9 @@ namespace lfg
|
||||
uint8 RemovePlayerFromGroup(ObjectGuid gguid, ObjectGuid guid);
|
||||
/// Adds player to group
|
||||
void AddPlayerToGroup(ObjectGuid gguid, ObjectGuid guid);
|
||||
/// Store player that selected random queue to group
|
||||
void AddPlayerQueuedForRandomDungeonToGroup(ObjectGuid gguid, ObjectGuid guid);
|
||||
bool IsPlayerQueuedForRandomDungeon(ObjectGuid guid);
|
||||
/// Xinef: Set Random Players Count
|
||||
void SetRandomPlayersCount(ObjectGuid guid, uint8 count);
|
||||
/// Xinef: Get Random Players Count
|
||||
|
||||
@@ -187,6 +187,7 @@ namespace lfg
|
||||
|
||||
sLFGMgr->SetGroup(guid, gguid);
|
||||
sLFGMgr->AddPlayerToGroup(gguid, guid);
|
||||
sLFGMgr->AddPlayerQueuedForRandomDungeonToGroup(gguid, guid);
|
||||
|
||||
// pussywizard: after all necessary actions handle raid browser
|
||||
if (sLFGMgr->GetState(guid) == LFG_STATE_RAIDBROWSER)
|
||||
|
||||
Reference in New Issue
Block a user