Exemple #1
0
        public static bool HandleRequestInvite(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet)
        {
            if (player.Team == null)
            {
                return(true);
            }

            if (!player.Team.IsLeader(player))
            {
                return(true);
            }

            Models.Maps.IMapObject mapObject;
            if (player.GetFromScreen(packet.ClientId, out mapObject))
            {
                var newMember = mapObject as Models.Entities.Player;
                if (newMember != null && newMember.Team == null)
                {
                    player.Team.PendingInvite = newMember.ClientId;
                    packet.ClientId           = player.ClientId;
                    newMember.ClientSocket.Send(packet);
                }
            }

            return(true);
        }
Exemple #2
0
        public static bool HandleDismiss(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet)
        {
            if (player.Team == null)
            {
                return(true);
            }

            if (!player.Team.IsLeader(player))
            {
                return(true);
            }

            if (!player.Alive)
            {
                return(true);
            }

            player.RemoveStatusFlag(Enums.StatusFlag.TeamLeader);
            var members = player.Team.Delete();

            foreach (var member in members)
            {
                member.Team = null;
                member.ClientSocket.Send(packet);
            }

            return(true);
        }
Exemple #3
0
        public static bool HandleLeave(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet)
        {
            if (player.Team == null)
            {
                return(true);
            }

            if (player.Team.IsLeader(player))
            {
                return(true);
            }

            if (player.ClientId != packet.ClientId)
            {
                return(true);
            }

            Models.Entities.Player removedPlayer;
            if (player.Team.Remove(packet.ClientId, out removedPlayer))
            {
                foreach (var member in player.Team.GetMembers())
                {
                    member.ClientSocket.Send(packet);
                }

                player.ClientSocket.Send(packet);

                player.Team = null;
            }

            return(true);
        }
Exemple #4
0
        public static bool HandleAcceptJoin(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet)
        {
            if (player.Team == null)
            {
                return(true);
            }

            if (!player.Team.IsLeader(player))
            {
                return(true);
            }

            Models.Maps.IMapObject mapObject;
            if (packet.ClientId == player.Team.PendingJoin &&
                player.GetFromScreen(packet.ClientId, out mapObject))
            {
                var newMember = mapObject as Models.Entities.Player;
                if (newMember != null && newMember.Team == null)
                {
                    if (player.Team.Add(newMember))
                    {
                        var newTeamMemberPacket = new Models.Packets.Team.TeamMemberPacket
                        {
                            Name     = newMember.Name,
                            ClientId = newMember.ClientId,
                            Mesh     = newMember.Mesh,
                            MaxHP    = newMember.MaxHP,
                            HP       = newMember.HP
                        };

                        foreach (var member in player.Team.GetMembers())
                        {
                            if (member.ClientId != newMember.ClientId)
                            {
                                newMember.ClientSocket.Send(new Models.Packets.Team.TeamMemberPacket
                                {
                                    Name     = member.Name,
                                    ClientId = member.ClientId,
                                    Mesh     = member.Mesh,
                                    MaxHP    = member.MaxHP,
                                    HP       = member.HP
                                });
                                member.ClientSocket.Send(newTeamMemberPacket);
                            }
                        }

                        newMember.ClientSocket.Send(newTeamMemberPacket);

                        packet.ClientId = player.ClientId;
                        newMember.ClientSocket.Send(packet);
                    }
                }
            }

            return(true);
        }
Exemple #5
0
        public static bool HandleRequestJoin(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet)
        {
            if (player.Team != null)
            {
                return(true);
            }

            Models.Maps.IMapObject mapObject;
            if (player.GetFromScreen(packet.ClientId, out mapObject))
            {
                var leader = mapObject as Models.Entities.Player;
                if (leader != null && leader.Team != null && leader.Team.IsLeader(leader))
                {
                    leader.Team.PendingJoin = player.ClientId;
                    packet.ClientId         = player.ClientId;
                    leader.ClientSocket.Send(packet);
                }
            }

            return(true);
        }
Exemple #6
0
        public static bool HandleCreate(Models.Entities.Player player, Models.Packets.Team.TeamActionPacket packet)
        {
            if (player.Team != null)
            {
                return(true);
            }

            if (Collections.TeamCollection.Create(player))
            {
                player.ClientSocket.Send(new Models.Packets.Team.TeamActionPacket
                {
                    ClientId = player.ClientId,
                    Action   = Enums.TeamAction.Leader
                });
                player.ClientSocket.Send(new Models.Packets.Team.TeamActionPacket
                {
                    ClientId = player.ClientId,
                    Action   = Enums.TeamAction.Create
                });
                player.AddStatusFlag(Enums.StatusFlag.TeamLeader);
            }

            return(true);
        }