示例#1
0
        public void Join(Entities.GameClient client, Packets.TeamActionPacket packet)
        {
            if (Members.Count >= 5)
            {
                return;
            }

            if (Leader == client.EntityUID && packet.Action == Enums.TeamAction.AcceptJoin)
            {
                // accept
                Entities.GameClient newMember;
                if (Core.Kernel.Clients.TrySelect(NextJoin, out newMember))
                {
                    if (Members.TryAdd(newMember.EntityUID, newMember))
                    {
                        newMember.Team = this;
                        // send team member ...
                        using (var teammember = new Packets.TeamMemberPacket())
                        {
                            teammember.Name          = newMember.Name;
                            teammember.EntityUID     = newMember.EntityUID;
                            teammember.Mesh          = newMember.Mesh;
                            teammember.MaxHealth     = (ushort)newMember.MaxHP;
                            teammember.CurrentHealth = (ushort)newMember.HP;
                            foreach (Entities.GameClient member in Members.Values)
                            {
                                if (member.EntityUID != newMember.EntityUID)
                                {
                                    member.Send(teammember);
                                    using (var teammember2 = new Packets.TeamMemberPacket())
                                    {
                                        teammember2.Name          = member.Name;
                                        teammember2.EntityUID     = member.EntityUID;
                                        teammember2.Mesh          = member.Mesh;
                                        teammember2.MaxHealth     = (ushort)member.MaxHP;
                                        teammember2.CurrentHealth = (ushort)member.HP;
                                        newMember.Send(teammember2);
                                    }
                                }
                            }
                            newMember.Send(teammember);
                        }

                        packet.EntityUID = client.EntityUID;
                        newMember.Send(packet);
                    }
                }
            }
            else if (packet.EntityUID == Leader && packet.Action == Enums.TeamAction.RequestJoin)
            {
                Entities.GameClient LeaderClient;
                if (Members.TryGetValue(Leader, out LeaderClient))
                {
                    NextJoin         = client.EntityUID;
                    packet.EntityUID = client.EntityUID;
                    LeaderClient.Send(packet);
                }
            }
        }
示例#2
0
        public void Invite(Entities.GameClient client, Packets.TeamActionPacket packet)
        {
            if (Members.Count >= 5)
            {
                return;
            }

            if (Leader != client.EntityUID &&
                packet.Action == Enums.TeamAction.AcceptInvite &&
                NextInvite == client.EntityUID)
            {
                // accept
                if (Members.TryAdd(client.EntityUID, client))
                {
                    // send team member ...
                    client.Team = this;
                    using (var teammember = new Packets.TeamMemberPacket())
                    {
                        teammember.Name          = client.Name;
                        teammember.EntityUID     = client.EntityUID;
                        teammember.Mesh          = client.Mesh;
                        teammember.MaxHealth     = (ushort)client.MaxHP;
                        teammember.CurrentHealth = (ushort)client.HP;
                        foreach (Entities.GameClient member in Members.Values)
                        {
                            if (member.EntityUID != client.EntityUID)
                            {
                                member.Send(teammember);
                                using (var teammember2 = new Packets.TeamMemberPacket())
                                {
                                    teammember2.Name          = member.Name;
                                    teammember2.EntityUID     = member.EntityUID;
                                    teammember2.Mesh          = member.Mesh;
                                    teammember2.MaxHealth     = (ushort)member.MaxHP;
                                    teammember2.CurrentHealth = (ushort)member.HP;
                                    client.Send(teammember2);
                                }
                            }
                        }
                        client.Send(teammember);
                    }

                    packet.EntityUID = Leader;
                    client.Send(packet);
                }
            }
            else if (packet.EntityUID != Leader && packet.Action == Enums.TeamAction.RequestInvite && client.EntityUID == Leader)
            {
                Entities.GameClient newMember;
                if (Core.Kernel.Clients.TrySelect(packet.EntityUID, out newMember))
                {
                    NextInvite       = newMember.EntityUID;
                    packet.EntityUID = client.EntityUID;
                    newMember.Send(packet);
                }
            }
        }
示例#3
0
        public void Invite(Entities.GameClient client, Packets.TeamActionPacket packet)
        {
            if (Members.Count >= 5)
                return;

            if (Leader != client.EntityUID &&
                packet.Action == Enums.TeamAction.AcceptInvite &&
                NextInvite == client.EntityUID)
            {
                // accept
                if (Members.TryAdd(client.EntityUID, client))
                {
                    // send team member ...
                    client.Team = this;
                    using (var teammember = new Packets.TeamMemberPacket())
                    {
                        teammember.Name = client.Name;
                        teammember.EntityUID = client.EntityUID;
                        teammember.Mesh = client.Mesh;
                        teammember.MaxHealth = (ushort)client.MaxHP;
                        teammember.CurrentHealth = (ushort)client.HP;
                        foreach (Entities.GameClient member in Members.Values)
                        {
                            if (member.EntityUID != client.EntityUID)
                            {
                                member.Send(teammember);
                                using (var teammember2 = new Packets.TeamMemberPacket())
                                {
                                    teammember2.Name = member.Name;
                                    teammember2.EntityUID = member.EntityUID;
                                    teammember2.Mesh = member.Mesh;
                                    teammember2.MaxHealth = (ushort)member.MaxHP;
                                    teammember2.CurrentHealth = (ushort)member.HP;
                                    client.Send(teammember2);
                                }
                            }
                        }
                        client.Send(teammember);
                    }

                    packet.EntityUID = Leader;
                    client.Send(packet);
                }
            }
            else if (packet.EntityUID != Leader && packet.Action == Enums.TeamAction.RequestInvite && client.EntityUID == Leader)
            {
                Entities.GameClient newMember;
                if (Core.Kernel.Clients.TrySelect(packet.EntityUID, out newMember))
                {
                    NextInvite = newMember.EntityUID;
                    packet.EntityUID = client.EntityUID;
                    newMember.Send(packet);
                }
            }
        }
示例#4
0
        public void Join(Entities.GameClient client, Packets.TeamActionPacket packet)
        {
            if (Members.Count >= 5)
                return;

            if (Leader == client.EntityUID && packet.Action == Enums.TeamAction.AcceptJoin)
            {
                // accept
                Entities.GameClient newMember;
                if (Core.Kernel.Clients.TrySelect(NextJoin, out newMember))
                {
                    if (Members.TryAdd(newMember.EntityUID, newMember))
                    {
                        newMember.Team = this;
                        // send team member ...
                        using (var teammember = new Packets.TeamMemberPacket())
                        {
                            teammember.Name = newMember.Name;
                            teammember.EntityUID = newMember.EntityUID;
                            teammember.Mesh = newMember.Mesh;
                            teammember.MaxHealth = (ushort)newMember.MaxHP;
                            teammember.CurrentHealth = (ushort)newMember.HP;
                            foreach (Entities.GameClient member in Members.Values)
                            {
                                if (member.EntityUID != newMember.EntityUID)
                                {
                                    member.Send(teammember);
                                    using (var teammember2 = new Packets.TeamMemberPacket())
                                    {
                                        teammember2.Name = member.Name;
                                        teammember2.EntityUID = member.EntityUID;
                                        teammember2.Mesh = member.Mesh;
                                        teammember2.MaxHealth = (ushort)member.MaxHP;
                                        teammember2.CurrentHealth = (ushort)member.HP;
                                        newMember.Send(teammember2);
                                    }
                                }
                            }
                            newMember.Send(teammember);
                        }

                        packet.EntityUID = client.EntityUID;
                        newMember.Send(packet);
                    }
                }
            }
            else if (packet.EntityUID == Leader && packet.Action == Enums.TeamAction.RequestJoin)
            {
                Entities.GameClient LeaderClient;
                if (Members.TryGetValue(Leader, out LeaderClient))
                {
                    NextJoin = client.EntityUID;
                    packet.EntityUID = client.EntityUID;
                    LeaderClient.Send(packet);
                }
            }
        }