示例#1
0
        private void KickCommand(IDictionary <string, object> command)
        {
            var kicker    = command.Get("operator");
            var channelId = command.Get(Constants.Arguments.Channel);
            var kicked    = command.Get(Constants.Arguments.Character);
            var isBan     = command.Get(Constants.Arguments.Command) == Constants.ServerCommands.ChannelBan;
            GeneralChannelModel channel;

            lock (chatStateLocker)
                channel = ChatModel.CurrentChannels.FirstByIdOrNull(channelId);

            if (channel == null)
            {
                RequeueCommand(command);
                return;
            }

            if (ChatModel.CurrentCharacter.NameEquals(kicked))
            {
                kicked = "you";
            }

            var args = new ChannelDisciplineEventArgs
            {
                IsBan  = isBan,
                Kicked = kicked,
                Kicker = kicker
            };
            var update = new ChannelUpdateModel(channel, args);

            if (kicked == "you")
            {
                channels.RemoveChannel(channelId);
            }
            else
            {
                channel.CharacterManager.SignOff(kicked);
            }

            if (isBan)
            {
                channel.CharacterManager.Add(kicked, ListKind.Banned);
            }

            Events.NewUpdate(update);
        }
示例#2
0
        private void KickCommand(IDictionary<string, object> command)
        {
            var kicker = command.Get("operator");
            var channelId = command.Get(Constants.Arguments.Channel);
            var kicked = command.Get(Constants.Arguments.Character);
            var isBan = command.Get(Constants.Arguments.Command) == Constants.ServerCommands.ChannelBan;
            GeneralChannelModel channel;

            lock (chatStateLocker)
                channel = ChatModel.CurrentChannels.FirstByIdOrNull(channelId);

            if (channel == null)
            {
                RequeueCommand(command);
                return;
            }

            if (ChatModel.CurrentCharacter.NameEquals(kicked))
                kicked = "you";

            var args = new ChannelDisciplineEventArgs
            {
                IsBan = isBan,
                Kicked = kicked,
                Kicker = kicker
            };
            var update = new ChannelUpdateModel(channel, args);

            if (kicked == "you")
                channels.RemoveChannel(channelId);
            else
                channel.CharacterManager.SignOff(kicked);

            if (isBan)
            {
                channel.CharacterManager.Add(kicked, ListKind.Banned);
            }

            Events.NewUpdate(update);
        }