Ejemplo n.º 1
0
 /// <summary>
 /// Retrieve the given two ChannelMembers and the Channel they are on, if they
 /// are all on the channel. If not, sends corresponding error messages to user.
 /// </summary>
 /// <param name="user"></param>
 /// <param name="channelName"></param>
 /// <param name="targetName"></param>
 /// <param name="userMember"></param>
 /// <param name="targetMember"></param>
 /// <returns></returns>
 public static ChatChannel EnsurePresence(IUser user, string channelName, string targetName, out ChannelMember userMember, out ChannelMember targetMember)
 {
     if (!string.IsNullOrEmpty(targetName))
     {
         var chan = ChatChannelGroup.RetrieveChannel(user, channelName);
         if (chan != null)
         {
             var chatterLowId = user.EntityId.Low;
             if (!chan.Members.TryGetValue(chatterLowId, out userMember))
             {
                 ChannelHandler.SendNotOnChannelReply(user, channelName);
             }
             else
             {
                 var targetUser = World.GetNamedEntity(targetName, false) as IUser;
                 if (targetUser == null || !chan.Members.TryGetValue(targetUser.EntityId.Low, out targetMember))
                 {
                     ChannelHandler.SendTargetNotOnChannelReply(user, channelName, targetName);
                 }
                 else if (targetUser != user)
                 {
                     return(chan);
                 }
             }
         }
     }
     userMember   = null;
     targetMember = null;
     return(null);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="name">name of channel</param>
 public ChatChannel(ChatChannelGroup group, string name, ChatChannelFlagsEntry flags, bool constant, JoinValidationHandler joinValidator)
     : this(group, name)
 {
     m_flagsEntry    = flags;
     m_joinValidator = joinValidator;
     IsConstant      = constant;
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Ensures that the given user is on the channel and has mod status.
        /// If not, sends corresponding error messages to user.
        /// </summary>
        /// <param name="user"></param>
        /// <param name="channelName"></param>
        /// <returns></returns>
        public static ChatChannel EnsureModerator(IUser user, string channelName)
        {
            var chan = ChatChannelGroup.RetrieveChannel(user, channelName);

            if (chan != null)
            {
                var           chatterLowId = user.EntityId.Low;
                ChannelMember member;
                if (!chan.Members.TryGetValue(chatterLowId, out member))
                {
                    ChannelHandler.SendNotOnChannelReply(user, channelName);
                }
                else
                {
                    if (!member.IsModerator)
                    {
                        ChannelHandler.SendNotModeratorReply(user, channelName);
                    }
                    else
                    {
                        return(chan);
                    }
                }
                return(null);
            }
            return(null);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Retrieve the given two ChannelMembers and the Channel they are on, if they
        /// are all on the channel. If not, sends corresponding error messages to user.
        /// </summary>
        /// <param name="user"></param>
        /// <param name="channelName"></param>
        /// <param name="targetName"></param>
        /// <param name="userMember"></param>
        /// <param name="targetMember"></param>
        /// <returns></returns>
        public static ChatChannel EnsurePresence(IUser user, string channelName, string targetName,
                                                 out ChannelMember userMember, out ChannelMember targetMember)
        {
            if (!string.IsNullOrEmpty(targetName))
            {
                ChatChannel chatChannel = ChatChannelGroup.RetrieveChannel(user, channelName);
                if (chatChannel != null)
                {
                    uint low = user.EntityId.Low;
                    if (!chatChannel.Members.TryGetValue(low, out userMember))
                    {
                        ChannelHandler.SendNotOnChannelReply((IPacketReceiver)user, channelName);
                    }
                    else
                    {
                        IUser namedEntity = World.GetNamedEntity(targetName, false) as IUser;
                        if (namedEntity == null ||
                            !chatChannel.Members.TryGetValue(namedEntity.EntityId.Low, out targetMember))
                        {
                            ChannelHandler.SendTargetNotOnChannelReply((IPacketReceiver)user, channelName, targetName);
                        }
                        else if (namedEntity != user)
                        {
                            return(chatChannel);
                        }
                    }
                }
            }

            userMember   = (ChannelMember)null;
            targetMember = (ChannelMember)null;
            return((ChatChannel)null);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Ensures that the given user is on the channel and has mod status.
        /// If not, sends corresponding error messages to user.
        /// </summary>
        /// <param name="user"></param>
        /// <param name="channelName"></param>
        /// <returns></returns>
        public static ChatChannel EnsureModerator(IUser user, string channelName)
        {
            ChatChannel chatChannel = ChatChannelGroup.RetrieveChannel(user, channelName);

            if (chatChannel == null)
            {
                return((ChatChannel)null);
            }
            uint          low = user.EntityId.Low;
            ChannelMember channelMember;

            if (!chatChannel.Members.TryGetValue(low, out channelMember))
            {
                ChannelHandler.SendNotOnChannelReply((IPacketReceiver)user, channelName);
            }
            else
            {
                if (channelMember.IsModerator)
                {
                    return(chatChannel);
                }
                ChannelHandler.SendNotModeratorReply((IPacketReceiver)user, channelName);
            }

            return((ChatChannel)null);
        }
Ejemplo n.º 6
0
 /// <summary>Default Ctor</summary>
 public ChatChannel(ChatChannelGroup group)
 {
     this.m_group          = group;
     this.m_members        = new ImmutableDictionary <uint, ChannelMember>();
     this.Name             = this.Password = string.Empty;
     this.Announces        = true;
     this.m_bannedEntities = new List <uint>();
 }
Ejemplo n.º 7
0
		/// <summary>
		/// Default Ctor
		/// </summary>
		public ChatChannel(ChatChannelGroup group)
		{
			m_group = group;
			m_members = new ImmutableDictionary<uint, ChannelMember>();

			Name = Password = string.Empty;
			Announces = true;
			m_bannedEntities = new List<uint>();
		}
Ejemplo n.º 8
0
 public ChatChannel(ChatChannelGroup group, string name, ChatChannelFlags flags, bool constant)
     : this(group, name)
 {
     this.m_flagsEntry = new ChatChannelFlagsEntry()
     {
         Flags       = flags,
         ClientFlags = ChatMgr.Convert(flags)
     };
     this.IsConstant = constant;
 }
Ejemplo n.º 9
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="name">name of channel</param>
 public ChatChannel(ChatChannelGroup group, string name, ChatChannelFlags flags, bool constant, JoinValidationHandler joinValidator)
     : this(group, name)
 {
     m_flagsEntry = new ChatChannelFlagsEntry
     {
         Flags       = flags,
         ClientFlags = ChatMgr.Convert(flags)
     };
     m_joinValidator = joinValidator;
     IsConstant      = constant;
 }
Ejemplo n.º 10
0
        public override void Process(CmdTrigger<RealmServerCmdArgs> trigger)
        {
            var wcellUser = trigger.Args.User as WCellUser;
            var chanName = trigger.Text.NextWord();
            var targetUsr = trigger.Args.GetCharArgumentOrTarget(trigger, trigger.Text.NextWord());

            ChannelMember me = new ChannelMember(wcellUser);
            ChatChannelGroup ircChannelGroup = new ChatChannelGroup(FactionGroup.Invalid);
            var chatChan = new ChatChannel(ircChannelGroup, chanName);
            chatChan.Invite(me, targetUsr);
            //ChatMgr.OnChat += new ChatNotifyDelegate(ChatMgr_OnChat);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Retrieves the given ChannelMember and the Channel it is on.
        /// If not, sends corresponding error messages to user and returns null.
        /// </summary>
        /// <param name="user"></param>
        /// <param name="channelName"></param>
        /// <returns></returns>
        public static ChatChannel EnsurePresence(IUser user, string channelName, out ChannelMember member)
        {
            ChatChannel chatChannel = ChatChannelGroup.RetrieveChannel(user, channelName);

            if (chatChannel != null)
            {
                uint low = user.EntityId.Low;
                if (chatChannel.Members.TryGetValue(low, out member))
                {
                    return(chatChannel);
                }
                ChannelHandler.SendNotOnChannelReply((IPacketReceiver)user, channelName);
                return((ChatChannel)null);
            }

            member = (ChannelMember)null;
            return((ChatChannel)null);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Parses any incoming channel messages.
        /// </summary>
        /// <param name="type">the type of chat message indicated by the client</param>
        /// <param name="language">the chat language indicated by the client</param>
        /// <param name="packet">the actual chat message packet</param>
        private static void ChannelParser(Character sender, ChatMsgType type, ChatLanguage language, RealmPacketIn packet)
        {
            var channel = packet.ReadCString();
            var message = packet.ReadCString();

            if (RealmCommandHandler.HandleCommand(sender, message, sender.Target as Character))
            {
                return;
            }

            var chan = ChatChannelGroup.RetrieveChannel(sender, channel);

            if (chan == null)
            {
                return;
            }

            chan.SendMessage(sender, message);
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Retrieves the given ChannelMember and the Channel it is on.
        /// If not, sends corresponding error messages to user and returns null.
        /// </summary>
        /// <param name="user"></param>
        /// <param name="channelName"></param>
        /// <returns></returns>
        public static ChatChannel EnsurePresence(IUser user, string channelName, out ChannelMember member)
        {
            var chan = ChatChannelGroup.RetrieveChannel(user, channelName);

            if (chan != null)
            {
                var chatterLowId = user.EntityId.Low;
                if (!chan.Members.TryGetValue(chatterLowId, out member))
                {
                    ChannelHandler.SendNotOnChannelReply(user, channelName);
                }
                else
                {
                    return(chan);
                }
                return(null);
            }
            member = null;
            return(null);
        }
Ejemplo n.º 14
0
        /// <summary>Tries to retrieve a channel for the given character.</summary>
        /// <param name="channelName">the channel name</param>
        /// <returns>the requested channel; null if there was an error or it doesn't exist</returns>
        public static ChatChannel RetrieveChannel(IUser user, string channelName)
        {
            if (channelName == string.Empty)
            {
                return((ChatChannel)null);
            }
            ChatChannel channel = ChatChannelGroup.Global.GetChannel(channelName, false);

            if (channel == null)
            {
                ChatChannelGroup group = ChatChannelGroup.GetGroup(user.FactionGroup);
                if (group == null)
                {
                    return((ChatChannel)null);
                }
                channel = group.GetChannel(channelName, false);
            }

            return(channel);
        }
Ejemplo n.º 15
0
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="name">name of channel</param>
		public ChatChannel(ChatChannelGroup group, string name)
			: this(group)
		{
			Name = name;
		}
Ejemplo n.º 16
0
        public override void Process(CmdTrigger<RealmServerCmdArgs> trigger)
        {
            var ticket = trigger.Args.TicketHandler.HandlingTicket;
            if (ticket != null)
            {
                Character user = ticket.Owner;

                if (ticket.Owner == null)
                {
                    trigger.Reply("The owner of this Ticket is offline.");
                }
                else
                {
                    var me = new ChannelMember(trigger.Args.User);
                    var ircChannel = new ChatChannelGroup(FactionGroup.Invalid);
                    var chan = new ChatChannel(ircChannel);

                    chan.Invite(me, user);
                    //user.SendMessage(trigger.Args.User,
                    //                 "A staff member wants to chat with you about your ticket. Please do not leave the channel.");
                }
            }
            else
            {
                trigger.Reply("You must have a ticket selected.");
            }
        }
Ejemplo n.º 17
0
		public ChatChannel(ChatChannelGroup group, string name, ChatChannelFlags flags, bool constant)
			: this(group, name)
		{
			m_flagsEntry = new ChatChannelFlagsEntry
			{
				Flags = flags,
				ClientFlags = ChatMgr.Convert(flags)
			};
			IsConstant = constant;
		}
Ejemplo n.º 18
0
		public ChatChannel(ChatChannelGroup group, uint channelId, string name)
			: this(group, name)
		{
			ChatChannelGroup.DefaultChannelFlags.TryGetValue(channelId, out m_flagsEntry);
		}
Ejemplo n.º 19
0
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="name">name of channel</param>
		public ChatChannel(ChatChannelGroup group, string name, ChatChannelFlags flags, bool constant, JoinValidationHandler joinValidator)
			: this(group, name)
		{
			m_flagsEntry = new ChatChannelFlagsEntry
			{
				Flags = flags,
				ClientFlags = ChatMgr.Convert(flags)
			};
			m_joinValidator = joinValidator;
			IsConstant = constant;
		}
Ejemplo n.º 20
0
 /// <summary>
 /// Default static constructor.
 /// </summary>
 static ChatChannelGroup()
 {
     Alliance = new ChatChannelGroup(FactionGroup.Alliance);
     Horde    = new ChatChannelGroup(FactionGroup.Horde);
     Global   = new ChatChannelGroup(FactionGroup.Invalid);
 }
Ejemplo n.º 21
0
 public ChatChannel(ChatChannelGroup group, uint channelId, string name)
     : this(group, name)
 {
     ChatChannelGroup.DefaultChannelFlags.TryGetValue(channelId, out this.m_flagsEntry);
 }
Ejemplo n.º 22
0
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="name">name of channel</param>
		public ChatChannel(ChatChannelGroup group, string name, ChatChannelFlagsEntry flags, bool constant, JoinValidationHandler joinValidator)
			: this(group, name)
		{
			m_flagsEntry = flags;
			m_joinValidator = joinValidator;
			IsConstant = constant;
		}
Ejemplo n.º 23
0
		/// <summary>
		/// Default static constructor.
		/// </summary>
		static ChatChannelGroup()
		{
			Alliance = new ChatChannelGroup(FactionGroup.Alliance);
			Horde = new ChatChannelGroup(FactionGroup.Horde);
			Global = new ChatChannelGroup(FactionGroup.Invalid);
		}
Ejemplo n.º 24
0
 /// <summary>Constructor</summary>
 /// <param name="name">name of channel</param>
 public ChatChannel(ChatChannelGroup group, string name)
     : this(group)
 {
     this.Name = name;
 }