Example #1
0
 internal static void HandleChatMessage(IPacket _packet, IRemoteClient _client, IMultiplayerServer _server)
 {
     // TODO: Abstract this to support things like commands
     // TODO: Sanitize messages
     var packet = (ChatMessagePacket)_packet;
     var server = (MultiplayerServer)_server;
     var args = new ChatMessageEventArgs(_client, packet.Message);
     server.OnChatMessageReceived(args);
 }
Example #2
0
 protected internal void OnChatMessageReceived(ChatMessageEventArgs e)
 {
     if (ChatMessageReceived != null)
         ChatMessageReceived(this, e);
 }
Example #3
0
        /// <summary>
        /// Parse sent message as chat command
        /// </summary>
        /// <param name="e"></param>
        /// <returns>true if the command was successfully executed</returns>
        private static bool ProcessChatCommand(ChatMessageEventArgs e)
        {
            var commandWithoutSlash = e.Message.TrimStart('/');
            var messageArray = commandWithoutSlash
                .Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

            if (messageArray.Length <= 0) return false; // command not found

            var alias = messageArray[0];
            var trimmedMessageArray = new string[messageArray.Length - 1];
            if (trimmedMessageArray.Length != 0)
                Array.Copy(messageArray, 1, trimmedMessageArray, 0, messageArray.Length - 1);

            CommandManager.HandleCommand(e.Client, alias, trimmedMessageArray);

            return true;
        }
Example #4
0
        static void HandleChatMessageReceived(object sender, ChatMessageEventArgs e)
        {
            var message = e.Message;

            if (!message.StartsWith("/") || message.StartsWith("//"))
                SendChatMessage(e.Client.Username, message);
            else
                e.PreventDefault = ProcessChatCommand(e);
        }