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);
                    }
                }
            }
        }