Пример #1
0
        public Task StartReadyCheck()
        {
            ReadyCheck = new List <Player>()
            {
                Leader
            };
            BroadcastPacketParty(PartyPacket.StartReadyCheck(Leader, Members, ReadyCheck.Count));
            return(Task.Run(async() =>
            {
                await Task.Delay(20000);
                if (Members.Count == ReadyCheck.Count || ReadyCheck.Count == 0) // Cancel this. Ready check was successfully responded by each player
                {
                    return;
                }

                foreach (Player member in Members)
                {
                    if (!ReadyCheck.Contains(member))
                    {
                        BroadcastPacketParty(PartyPacket.ReadyCheck(member, 0)); // Force player who did not respond to respond with 'not ready'
                    }
                }

                BroadcastPacketParty(PartyPacket.EndReadyCheck());
                ReadyCheck.Clear();
            }));
        }
Пример #2
0
    private static void HandleReadyCheckUpdate(GameSession session, PacketReader packet)
    {
        int  checkNum = packet.ReadInt() + 1; //+ 1 is because the ReadyChecks variable is always 1 ahead
        byte response = packet.ReadByte();

        Party party = session.Player.Party;

        if (party == null)
        {
            return;
        }

        party.BroadcastPacketParty(PartyPacket.ReadyCheck(session.Player, response));

        party.ReadyCheck.Add(session.Player);
        if (party.ReadyCheck.Count == party.Members.Count)
        {
            party.BroadcastPacketParty(PartyPacket.EndReadyCheck());
            party.ReadyCheck.Clear();
        }
    }
Пример #3
0
        private void HandleReadyCheckUpdate(GameSession session, PacketReader packet)
        {
            int  checkNum = packet.ReadInt() + 1; //+ 1 is because the ReadyChecks variable is always 1 ahead
            byte accept   = packet.ReadByte();

            Party party = GameServer.PartyManager.GetPartyById(session.Player.PartyId);

            if (party == null)
            {
                return;
            }
            if (checkNum != party.ReadyChecks)
            {
                return;
            }
            party.BroadcastPacketParty(PartyPacket.ReadyCheck(session.Player, accept));
            party.RemainingMembers -= 1;
            if (party.RemainingMembers == 0)
            {
                party.BroadcastPacketParty(PartyPacket.EndReadyCheck());
            }
        }