internal static IntermediateMessage ClientNotice(MappedIdentity sender, string payload)
        {
            var msg = new IntermediateMessage(sender, MessageType.ClientNotice);

            msg.Payload = payload;
            return(msg);
        }
Exemple #2
0
 public void SendMessageDownstream(IntermediateMessage msg)
 {
     if (this.ReceiveMessage != null)
     {
         ReceiveMessage(this, msg);
     }
 }
        private void OnSimConnecting(object sender, SimConnectingEventArgs e)
        {
            var msg = new IntermediateMessage(mapper.Grid, MessageType.ClientNotice);

            msg.Payload = "Connecting to simulator";
            if (ReceiveMessage != null)
            {
                ReceiveMessage(null, msg);
            }
        }
 public void SendMessageDownstream(IntermediateMessage msg)
 {
     if (msg.Sender.AvatarID == client.Self.AgentID && msg.Type != MessageType.ClientNotice && msg.Type != MessageType.ClientError)
     {
         return;
     }
     if (ReceiveMessage != null)
     {
         ReceiveMessage(this, msg);
     }
 }
        private void OnSimDisconnected(object sender, SimDisconnectedEventArgs e)
        {
            var msg = new IntermediateMessage(mapper.Grid, MessageType.ClientNotice);

            msg.Payload = "Disconnected from " + e.Simulator.Name;

            if (ReceiveMessage != null)
            {
                ReceiveMessage(null, msg);
            }
        }
        public void SendMessageTo(MappedIdentity destination, IntermediateMessage msg)
        {
            UUID session;

            if (!oneOnOnesessions.TryGetValue(destination.AvatarID, out session))
            {
                oneOnOnesessions[destination.AvatarID] = client.Self.AgentID ^ destination.AvatarID;
            }

            client.Self.InstantMessage(client.Self.Name, destination.AvatarID, msg.Payload,
                                       session, InstantMessageDialog.MessageFromAgent, InstantMessageOnline.Online,
                                       client.Self.SimPosition, client.Network.CurrentSim.ID, null);
        }
        public void SendMessage(IntermediateMessage msg)
        {
            if (!client.Self.GroupChatSessions.ContainsKey(group.ID))
            {
                bool success = JoinGroupchat();
                if (!success)
                {
                    return;
                }
            }

            client.Self.InstantMessageGroup(msg.Sender.SlName, group.ID, msg.Payload);
        }
Exemple #8
0
 public void SendMessage(IntermediateMessage msg)
 {
     if (canTalk || msg.Payload.StartsWith("/") || msg.Payload.StartsWith("(("))
     {
         client.Self.Chat(msg.Payload, chatChannel, ChatType.Normal);
     }
     else
     {
         var retort = new IntermediateMessage(mapper.Grid, MessageType.ClientNotice);
         retort.Payload = "You are mute";
         SendMessageDownstream(retort);
         client.Self.Chat("...", chatChannel, ChatType.Normal);
     }
 }
        private void OnMessageFromObject(InstantMessageEventArgs e)
        {
            var msg = new IntermediateMessage();

            msg.Sender    = mapper.MapObject(e.IM.FromAgentID, e.IM.FromAgentName);
            msg.Timestamp = e.IM.Timestamp;
            msg.Type      = MessageType.ObjectIM;
            if (e.IM.Dialog == InstantMessageDialog.BusyAutoResponse)
            {
                msg.Type = MessageType.AwayMessage;
            }
            msg.Payload = e.IM.Message;

            localChannel.SendMessageDownstream(msg);
        }
        private void OnScriptDialog(object sender, ScriptDialogEventArgs e)
        {
            var mlines = e.Message.Split('\n').Select(i => "[DIALOG] " + i).ToList();

            mlines.Insert(0, "[DIALOG] ------------------------------------------");
            mlines.Insert(1, string.Format("[DIALOG] {0} {1}'s \"{2}\" ({3})", e.FirstName, e.LastName, e.ObjectName, e.Channel));
            mlines.AddRange(e.ButtonLabels.ChunkTrivialBetter(3).Select(i => "[DIALOG] " + string.Join(" ", i.Select(j => string.Format("[{0,-24}]", j)))).Reverse());
            mlines.Add("[DIALOG] ------------------------------------------");
            foreach (var i in mlines)
            {
                var msg = new IntermediateMessage();
                msg.Sender    = mapper.Grid;
                msg.Timestamp = DateTime.UtcNow;
                msg.Type      = MessageType.ObjectIM;
                msg.Payload   = i;
                localChannel.SendMessageDownstream(msg);
            }
        }
        private void OnLoginProgress(object sender, LoginProgressEventArgs e)
        {
            IntermediateMessage msg;

            if (e.Status != LoginStatus.Failed)
            {
                msg         = new IntermediateMessage(mapper.Grid, MessageType.ClientNotice);
                msg.Payload = e.Status.ToString() + (String.IsNullOrEmpty(e.Message) ? ": " + e.Message : "");
            }
            else
            {
                msg          = new IntermediateMessage(mapper.Grid, MessageType.ClientError);
                msg.Payload  = e.Status.ToString() + (String.IsNullOrEmpty(e.Message) ? ": " + e.Message : "");
                msg.Payload += " (" + e.FailReason + ")";
            }

            if (ReceiveMessage != null)
            {
                ReceiveMessage(null, msg);
            }
        }
        public async Task <bool> Join()
        {
            lock (syncRoot)
            {
                if (joinTask == null)
                {
                    oldState = state;
                    state    = ChannelState.Joining;
                    joinTask = client.Self.JoinGroupChatAsync(group.ID);
                }
            }

            var result = await joinTask;

            lock (syncRoot)
            {
                state = result ? ChannelState.Connected : ChannelState.Failed;
                if (!result && oldState == ChannelState.Unconnected)
                {
                    SendMessageDownstream(IntermediateMessage.ClientNotice(mapper.Client, "Could not join group " + SlName));
                }
            }
            return(result);
        }
        private void OnMessageFromAgent(InstantMessageEventArgs e)
        {
            var msg = new IntermediateMessage();

            msg.Sender    = mapper.MapUser(e.IM.FromAgentID, e.IM.FromAgentName);
            msg.Timestamp = e.IM.Timestamp;
            msg.Type      = MessageType.IM;
            msg.Payload   = e.IM.Message;

            UUID sid = e.IM.IMSessionID;

            if (groups.ContainsKey(sid))
            {
                channels[sid].SendMessageDownstream(msg);
                return;
            }

            oneOnOnesessions[e.IM.FromAgentID] = sid;

            if (this.ReceiveMessage != null)
            {
                ReceiveMessage(null, msg);
            }
        }
Exemple #14
0
        public void OnLocalChat(object sender, OpenMetaverse.ChatEventArgs e)
        {
            if (e.Type == ChatType.StartTyping || e.Type == ChatType.StopTyping || e.Type == ChatType.Debug)
            {
                return;
            }

            if (e.SourceID == client.Self.AgentID)
            {
                return;
            }


            System.Diagnostics.Debug.WriteLine("Local chat: <{1}> {0}", e.Message, e.FromName);

            var msg = new IntermediateMessage();

            msg.Payload = e.Message;

            if (e.SourceType == OpenMetaverse.ChatSourceType.Object)
            {
                msg.Sender = mapper.MapObject(e.SourceID, e.FromName);
            }
            else if (e.SourceType == OpenMetaverse.ChatSourceType.Agent)
            {
                msg.Sender = mapper.MapUser(e.SourceID, e.FromName);
            }
            else
            {
                msg.Sender = mapper.Grid;
            }

            msg.Timestamp = DateTime.UtcNow;



            if (e.SourceType == ChatSourceType.System)
            {
                msg.Type   = MessageType.System;
                msg.Sender = mapper.Grid;
            }

            if (e.Type == OpenMetaverse.ChatType.Shout)
            {
                msg.Type = MessageType.Shout;
            }
            else if (e.Type == ChatType.Whisper)
            {
                msg.Type = MessageType.Whisper;
            }
            else if (e.Type == ChatType.RegionSay)
            {
                msg.Type = MessageType.RegionSay;
            }
            else if (e.Type == ChatType.OwnerSay)
            {
                msg.Type = MessageType.OwnerSay;
                if (Rlv(msg.Payload))
                {
                    return;
                }
            }

            SendMessageDownstream(msg);
        }
        public void SendMessage(IntermediateMessage msg)
        {
            if(!client.Self.GroupChatSessions.ContainsKey(group.ID))
            {
                bool success = JoinGroupchat();
                if(!success) return;
            }

            client.Self.InstantMessageGroup(msg.Sender.SlName, group.ID, msg.Payload);
        }
 internal static IntermediateMessage ClientNotice(MappedIdentity sender, string payload)
 {
     var msg = new IntermediateMessage(sender, MessageType.ClientNotice);
     msg.Payload = payload;
     return msg;
 }
 public void SendMessageDownstream(IntermediateMessage msg)
 {
     if (this.ReceiveMessage != null)
     {
         ReceiveMessage(this, msg);
     }
 }
 public void SendMessage(IntermediateMessage msg)
 {
     if (canTalk || msg.Payload.StartsWith("/") || msg.Payload.StartsWith("(("))
     {
         client.Self.Chat(msg.Payload, chatChannel, ChatType.Normal);
     }
     else
     {
         var retort = new IntermediateMessage(mapper.Grid, MessageType.ClientNotice);
         retort.Payload = "You are mute";
         SendMessageDownstream(retort);
         client.Self.Chat("...", chatChannel, ChatType.Normal);
     }
 }
        public void OnLocalChat(object sender, OpenMetaverse.ChatEventArgs e)
        {
            if (e.Type == ChatType.StartTyping || e.Type == ChatType.StopTyping || e.Type == ChatType.Debug)
            {
                return;
            }

            if (e.SourceID == client.Self.AgentID)
            {
                return;
            }

            System.Diagnostics.Debug.WriteLine("Local chat: <{1}> {0}", e.Message, e.FromName);

            var msg = new IntermediateMessage();
            msg.Payload = e.Message;

            if(e.SourceType == OpenMetaverse.ChatSourceType.Object)
            {
                msg.Sender = mapper.MapObject(e.SourceID, e.FromName);
            }
            else if(e.SourceType == OpenMetaverse.ChatSourceType.Agent)
            {
                msg.Sender = mapper.MapUser(e.SourceID, e.FromName);
            }
            else
            {
                msg.Sender = mapper.Grid;
            }

            msg.Timestamp = DateTime.UtcNow;

            if (e.SourceType == ChatSourceType.System)
            {
                msg.Type = MessageType.System;
                msg.Sender = mapper.Grid;
            }

            if(e.Type == OpenMetaverse.ChatType.Shout)
            {
                msg.Type = MessageType.Shout;
            }
            else if(e.Type == ChatType.Whisper)
            {
                msg.Type = MessageType.Whisper;
            }
            else if (e.Type == ChatType.RegionSay)
            {
                msg.Type = MessageType.RegionSay;
            }
            else if (e.Type == ChatType.OwnerSay)
            {
                msg.Type = MessageType.OwnerSay;
                if(Rlv(msg.Payload)) { return; }
            }

            SendMessageDownstream(msg);
        }
 public void SendMessageDownstream(IntermediateMessage msg)
 {
     if(msg.Sender.AvatarID == client.Self.AgentID && msg.Type != MessageType.ClientNotice && msg.Type != MessageType.ClientError)
     {
         return;
     }
     if(ReceiveMessage != null)
     {
         ReceiveMessage(this, msg);
     }
 }