Beispiel #1
0
        public override void Execute(Server server, Context context)
        {
            //Arrange

            Channel channel = server.Channels.GetChannel(ChannelId);

            if (channel != null)
            {
                //Act

                if (channel.ContainsPlayer(Player))
                {
                    channel.RemovePlayer(Player);
                }

                PrivateChannel privateChannel = channel as PrivateChannel;

                if (privateChannel != null)
                {
                    if (privateChannel.Owner == Player)
                    {
                        foreach (var observer in privateChannel.GetPlayers().ToList())
                        {
                            context.Write(observer.Client.Connection, new CloseChannelOutgoingPacket(channel.Id));

                            privateChannel.RemovePlayer(observer);
                        }

                        foreach (var observer in privateChannel.GetInvitations().ToList())
                        {
                            privateChannel.RemoveInvitation(observer);
                        }

                        server.Channels.RemoveChannel(privateChannel);
                    }
                }

                //Notify

                context.Write(Player.Client.Connection, new CloseChannelOutgoingPacket(channel.Id));

                base.Execute(server, context);
            }
        }
Beispiel #2
0
        public override void Execute(Server server, Context context)
        {
            //Arrange

            PrivateChannel privateChannel = server.Channels.GetPrivateChannelByOwner(Player);

            if (privateChannel != null)
            {
                Player observer = server.Map.GetPlayers()
                                  .Where(p => p.Name == Name)
                                  .FirstOrDefault();

                if (observer != null && observer != Player)
                {
                    if (privateChannel.ContainsInvitation(observer))
                    {
                        //Act

                        privateChannel.RemoveInvitation(observer);

                        //Notify

                        context.Write(Player.Client.Connection, new ShowWindowTextOutgoingPacket(TextColor.GreenCenterGameWindowAndServerLog, observer.Name + " has been excluded."));

                        base.Execute(server, context);
                    }
                    else if (privateChannel.ContainsPlayer(observer))
                    {
                        //Act

                        privateChannel.RemovePlayer(observer);

                        //Notify

                        context.Write(Player.Client.Connection, new ShowWindowTextOutgoingPacket(TextColor.GreenCenterGameWindowAndServerLog, observer.Name + " has been excluded."));

                        context.Write(observer.Client.Connection, new CloseChannelOutgoingPacket(privateChannel.Id));

                        base.Execute(server, context);
                    }
                }
            }
        }
        public override void Execute(Server server, Context context)
        {
            //Arrange

            Channel channel = server.Channels.GetChannel(ChannelId);

            if (channel != null)
            {
                PrivateChannel privateChannel = channel as PrivateChannel;

                if (privateChannel != null)
                {
                    if (!privateChannel.ContainsPlayer(Player))
                    {
                        if (!privateChannel.ContainsInvitation(Player))
                        {
                            return;
                        }

                        //Act

                        privateChannel.RemoveInvitation(Player);

                        privateChannel.AddPlayer(Player);
                    }

                    //Notify

                    context.Write(Player.Client.Connection, new OpenChannelOutgoingPacket(privateChannel.Id, privateChannel.Name));

                    base.Execute(server, context);
                }
                else
                {
                    GuildChannel guildChannel = channel as GuildChannel;

                    if (guildChannel != null)
                    {
                        if (!guildChannel.ContainsPlayer(Player))
                        {
                            //Act

                            guildChannel.AddPlayer(Player);
                        }

                        //Notify

                        context.Write(Player.Client.Connection, new OpenChannelOutgoingPacket(guildChannel.Id, guildChannel.Name));

                        base.Execute(server, context);
                    }
                    else
                    {
                        PartyChannel partyChannel = channel as PartyChannel;

                        if (partyChannel != null)
                        {
                            if (!partyChannel.ContainsPlayer(Player))
                            {
                                //Act

                                partyChannel.AddPlayer(Player);
                            }

                            //Notify

                            context.Write(Player.Client.Connection, new OpenChannelOutgoingPacket(partyChannel.Id, partyChannel.Name));

                            base.Execute(server, context);
                        }
                        else
                        {
                            if (!channel.ContainsPlayer(Player))
                            {
                                //Act

                                channel.AddPlayer(Player);
                            }

                            //Notify

                            if (channel.Id == 3)
                            {
                                context.Write(Player.Client.Connection, new OpenRuleViolationsChannelOutgoingPacket(channel.Id));

                                foreach (var ruleViolation in server.RuleViolations.GetRuleViolations())
                                {
                                    if (ruleViolation.Assignee == null)
                                    {
                                        context.Write(Player.Client.Connection, new ShowTextOutgoingPacket(0, ruleViolation.Reporter.Name, ruleViolation.Reporter.Level, TalkType.ReportRuleViolationOpen, ruleViolation.Time, ruleViolation.Message));
                                    }
                                }
                            }
                            else
                            {
                                context.Write(Player.Client.Connection, new OpenChannelOutgoingPacket(channel.Id, channel.Name));
                            }

                            base.Execute(server, context);
                        }
                    }
                }
            }
        }