public void SendLfgUpdateStatus(LfgUpdateData updateData, bool party) { bool join = false; bool queued = false; switch (updateData.updateType) { case LfgUpdateType.JoinQueueInitial: // Joined queue outside the dungeon join = true; break; case LfgUpdateType.JoinQueue: case LfgUpdateType.AddedToQueue: // Rolecheck Success join = true; queued = true; break; case LfgUpdateType.ProposalBegin: join = true; break; case LfgUpdateType.UpdateStatus: join = updateData.state != LfgState.Rolecheck && updateData.state != LfgState.None; queued = updateData.state == LfgState.Queued; break; default: break; } LFGUpdateStatus lfgUpdateStatus = new LFGUpdateStatus(); RideTicket ticket = Global.LFGMgr.GetTicket(_player.GetGUID()); if (ticket != null) { lfgUpdateStatus.Ticket = ticket; } lfgUpdateStatus.SubType = (byte)LfgQueueType.Dungeon; // other types not implemented lfgUpdateStatus.Reason = (byte)updateData.updateType; foreach (var dungeonId in updateData.dungeons) { lfgUpdateStatus.Slots.Add(Global.LFGMgr.GetLFGDungeonEntry(dungeonId)); } lfgUpdateStatus.RequestedRoles = (uint)Global.LFGMgr.GetRoles(_player.GetGUID()); //lfgUpdateStatus.SuspendedPlayers; lfgUpdateStatus.IsParty = party; lfgUpdateStatus.NotifyUI = true; lfgUpdateStatus.Joined = join; lfgUpdateStatus.LfgJoined = updateData.updateType != LfgUpdateType.RemovedFromQueue; lfgUpdateStatus.Queued = queued; lfgUpdateStatus.QueueMapID = Global.LFGMgr.GetDungeonMapId(_player.GetGUID()); SendPacket(lfgUpdateStatus); }
void HandleDfGetJoinStatus(DFGetJoinStatus packet) { if (!GetPlayer().IsUsingLfg()) { return; } ObjectGuid guid = GetPlayer().GetGUID(); LfgUpdateData updateData = Global.LFGMgr.GetLfgStatus(guid); if (GetPlayer().GetGroup()) { SendLfgUpdateStatus(updateData, true); updateData.dungeons.Clear(); SendLfgUpdateStatus(updateData, false); } else { SendLfgUpdateStatus(updateData, false); updateData.dungeons.Clear(); SendLfgUpdateStatus(updateData, true); } }