Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }