/// <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); }
/// <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; }
/// <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); }
/// <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); }
/// <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); }
/// <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>(); }
/// <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>(); }
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; }
/// <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; }
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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <summary> /// Constructor /// </summary> /// <param name="name">name of channel</param> public ChatChannel(ChatChannelGroup group, string name) : this(group) { Name = name; }
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."); } }
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; }
public ChatChannel(ChatChannelGroup group, uint channelId, string name) : this(group, name) { ChatChannelGroup.DefaultChannelFlags.TryGetValue(channelId, out m_flagsEntry); }
/// <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; }
/// <summary> /// Default static constructor. /// </summary> static ChatChannelGroup() { Alliance = new ChatChannelGroup(FactionGroup.Alliance); Horde = new ChatChannelGroup(FactionGroup.Horde); Global = new ChatChannelGroup(FactionGroup.Invalid); }
public ChatChannel(ChatChannelGroup group, uint channelId, string name) : this(group, name) { ChatChannelGroup.DefaultChannelFlags.TryGetValue(channelId, out this.m_flagsEntry); }
/// <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; }
/// <summary> /// Default static constructor. /// </summary> static ChatChannelGroup() { Alliance = new ChatChannelGroup(FactionGroup.Alliance); Horde = new ChatChannelGroup(FactionGroup.Horde); Global = new ChatChannelGroup(FactionGroup.Invalid); }
/// <summary>Constructor</summary> /// <param name="name">name of channel</param> public ChatChannel(ChatChannelGroup group, string name) : this(group) { this.Name = name; }