string ChatMessageToRichTextLine(RobotChatMessage message) { string richText = ""; string nonRichTextString = Regex.Replace(message.message, "<.*?>", string.Empty); string color = normalChatMessageColor; //Check to see if message is a command. if (message.isCommand) { color = commandColor; } if (message.isExecuting) { color = executingCommandColor; } var isAction = message.message.StartsWith(chatActionPrefix) && message.message.EndsWith(chatActionPostfix); chatUsernameColor = trackUsers(message.user); //Debug.Log("User Color: " + chatUsernameColor); richText += "<color=#" + chatUsernameColor + ">"; richText += message.user; richText += isAction ? " " : ": "; richText += "</color>"; richText += "<color=#" + color + ">"; if (isAction) { richText += nonRichTextString.Substring(chatActionPrefix.Length, nonRichTextString.Length - chatActionPrefix.Length - 1); } else { richText += nonRichTextString; } richText += "</color>"; richText += "\n"; return(richText); }
public IList <RobotChatMessage> GetChatMessages() { var copyOfChatMessages = new List <RobotChatMessage>(); //Note to self, Lock ensures that chatmessages cannot be updated by a separate thread while being //executed by another thread. lock (chatMessagesLock) { foreach (var message in Constants.roboStuff.chatMessages) { var chatMessage = new RobotChatMessage(); chatMessage.user = message.user; chatMessage.message = message.message; chatMessage.isCommand = message.isCommand; chatMessage.isExecuting = message.isExecuting; copyOfChatMessages.Add(chatMessage); } } return(copyOfChatMessages); }