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