/// <summary> /// Creates an active radio entry for the channel, and adds it to the ActiveChannels dictionary /// </summary> private void CreateActiveRadioEntry(ChatChannel channel) { Logger.Log($"Creating radio channel entry for {channel}", Category.Chat); // Create the template object which is hidden in the list but deactivated GameObject radioEntry = Instantiate(activeChannelTemplate, activeChannelTemplate.transform.parent, false); // Setup the name and onClick function radioEntry.GetComponentInChildren <Text>().text = channel.ToString(); radioEntry.GetComponentInChildren <Button>().onClick.AddListener(() => { _ = SoundManager.Play(SingletonSOSounds.Instance.Click01); DisableChannel(channel); }); // Add it to a list for easy access later ActiveChannels.Add(channel, radioEntry); }
/// <summary> /// Processes message further for the chat log. /// Adds text styling, color and channel prefixes depending on the message and its modifiers. /// </summary> /// <returns>The chat message, formatted to suit the chat log.</returns> public static string ProcessMessageFurther(string message, string speaker, ChatChannel channels, ChatModifier modifiers) { //Skip everything if system message if (channels.HasFlag(ChatChannel.System)) { return(message); } //Skip everything in case of combat channel if (channels.HasFlag(ChatChannel.Combat)) { return(AddMsgColor(channels, $"<i>{message}</i>")); //POC } //Skip everything if it is an action or examine message or if it is a local message //without a speaker (which is used by machines) if (channels.HasFlag(ChatChannel.Examine) || channels.HasFlag(ChatChannel.Action) || channels.HasFlag(ChatChannel.Local) && string.IsNullOrEmpty(speaker)) { return(AddMsgColor(channels, $"<i>{message}</i>")); } // Skip everything if the message is a local warning if (channels.HasFlag(ChatChannel.Warning)) { return(AddMsgColor(channels, $"<i>{message}</i>")); } message = StripTags(message); //Check for emote. If found skip chat modifiers, make sure emote is only in Local channel if ((modifiers & ChatModifier.Emote) == ChatModifier.Emote) { // /me message channels = ChatChannel.Local; message = AddMsgColor(channels, $"<i><b>{speaker}</b> {message}</i>"); return(message); } //Check for OOC. If selected, remove all other channels and modifiers (could happen if UI f***s up or someone tampers with it) if (channels.HasFlag(ChatChannel.OOC)) { //ooc name quick fix var name = Regex.Replace(speaker, @"\t\n\r", ""); if (string.IsNullOrWhiteSpace(name)) { name = "nerd"; } message = AddMsgColor(channels, $"[ooc] <b>{speaker}: {message}</b>"); return(message); } //Ghosts don't get modifiers if (channels.HasFlag(ChatChannel.Ghost)) { string[] _ghostVerbs = { "cries", "moans" }; return(AddMsgColor(channels, $"[dead] <b>{speaker}</b> {_ghostVerbs.PickRandom()}: {message}")); } string verb = "says,"; if ((modifiers & ChatModifier.Mute) == ChatModifier.Mute) { return(""); } if ((modifiers & ChatModifier.Whisper) == ChatModifier.Whisper) { verb = "whispers,"; message = $"<i>{message}</i>"; } else if ((modifiers & ChatModifier.Sing) == ChatModifier.Sing) { verb = "sings,"; message += " ♫"; } else if ((modifiers & ChatModifier.Yell) == ChatModifier.Yell) { verb = "yells,"; message = $"<b>{message}</b>"; } else if ((modifiers & ChatModifier.State) == ChatModifier.State) { verb = "states,"; } else if ((modifiers & ChatModifier.ColdlyState) == ChatModifier.ColdlyState) { verb = "coldly states,"; } else if (message.EndsWith("!")) { verb = "exclaims,"; } else if (message.EndsWith("?")) { verb = "asks,"; } var chan = $"[{channels.ToString().ToLower().Substring(0, 3)}] "; if (channels.HasFlag(ChatChannel.Command)) { chan = "[cmd] "; } if (channels.HasFlag(ChatChannel.Local)) { chan = ""; } return(AddMsgColor(channels, $"{chan}<b>{speaker}</b> {verb}" // [cmd] Username says, + " " // Two hair spaces. This triggers Text-to-Speech. + "\"" + message + "\"")); // "This text will be spoken by TTS!" }
private void Start() { tooltipRect = tooltip.GetComponent <RectTransform>(); tooltipText = tooltip.GetComponentInChildren <Text>(); tooltipText.text = channel.ToString(); }
/// <summary> /// Processes message further for the chat log. /// Adds text styling, color and channel prefixes depending on the message and its modifiers. /// </summary> /// <returns>The chat message, formatted to suit the chat log.</returns> public static string ProcessMessageFurther(string message, string speaker, ChatChannel channels, ChatModifier modifiers, bool stripTags = true) { playedSound = false; //Highlight in game name by bolding and underlining if possible //Dont play sound here as it could be examine or action, we only play sound for someone speaking message = HighlightInGameName(message, false); //Skip everything if system message if (channels.HasFlag(ChatChannel.System)) { return(message); } //Skip everything in case of combat channel if (channels.HasFlag(ChatChannel.Combat)) { return(AddMsgColor(channels, $"<i>{message}</i>")); //POC } //Skip everything if it is an action or examine message or if it is a local message //without a speaker (which is used by machines) if (channels.HasFlag(ChatChannel.Examine) || channels.HasFlag(ChatChannel.Action) || channels.HasFlag(ChatChannel.Local) && string.IsNullOrEmpty(speaker)) { return(AddMsgColor(channels, $"<i>{message}</i>")); } // Skip everything if the message is a local warning if (channels.HasFlag(ChatChannel.Warning)) { return(AddMsgColor(channels, $"<i>{message}</i>")); } if (stripTags) { message = StripTags(message); //Bold names again after tag stripping message = HighlightInGameName(message); } //Check for emote. If found skip chat modifiers, make sure emote is only in Local channel if ((modifiers & ChatModifier.Emote) == ChatModifier.Emote) { // /me message channels = ChatChannel.Local; if (playerGameObject != null) { DoEmoteAction(message, playerGameObject, Instance.emoteActionManager); playerGameObject = null; return(""); } message = AddMsgColor(channels, $"<i><b>{speaker}</b> {message}</i>"); return(message); } //Check for OOC. If selected, remove all other channels and modifiers (could happen if UI f***s up or someone tampers with it) if (channels.HasFlag(ChatChannel.OOC)) { //ooc name quick fix var name = Regex.Replace(speaker, @"\t\n\r", ""); if (string.IsNullOrWhiteSpace(name)) { name = "nerd"; } //highlight OOC name by bolding and underlining if possible message = HighlightName(message, ServerData.Auth.CurrentUser.DisplayName); message = AddMsgColor(channels, $"[ooc] <b>{name}: {message}</b>"); return(message); } //Ghosts don't get modifiers if (channels.HasFlag(ChatChannel.Ghost)) { string[] _ghostVerbs = { "cries", "moans" }; return(AddMsgColor(channels, $"[dead] <b>{speaker}</b> {_ghostVerbs.PickRandom()}: {message}")); } string verb = "says,"; if ((modifiers & ChatModifier.Mute) == ChatModifier.Mute) { return(""); } if ((modifiers & ChatModifier.Whisper) == ChatModifier.Whisper) { verb = "whispers,"; message = $"<i>{message}</i>"; } else if ((modifiers & ChatModifier.Sing) == ChatModifier.Sing) { verb = "sings,"; message += " ♫"; } else if ((modifiers & ChatModifier.Yell) == ChatModifier.Yell) { verb = "yells,"; message = $"<b>{message}</b>"; } else if ((modifiers & ChatModifier.State) == ChatModifier.State) { verb = "states,"; } else if ((modifiers & ChatModifier.ColdlyState) == ChatModifier.ColdlyState) { verb = " coldly states,"; } else if (message.EndsWith("!")) { verb = "exclaims,"; } else if (message.EndsWith("?")) { verb = "asks,"; } var chan = $"[{channels.ToString().ToLower().Substring(0, 3)}] "; if (channels.HasFlag(ChatChannel.Command)) { chan = "[cmd] "; } if (channels.HasFlag(ChatChannel.Local)) { chan = ""; } return(AddMsgColor(channels, $"{chan}<b>{speaker}</b> {verb}" // [cmd] Username says, + " " // Two hair spaces. This triggers Text-to-Speech. + "\"" + message + "\"")); // "This text will be spoken by TTS!" }
void IncommingChatMessage(ChatChannel channel, string message, string sender) { if( InvokeRequired ) { Invoke(new MethodInvoker(delegate() { IncommingChatMessage(channel, message, sender); })); } else { string formattedMessage = message; if( sender != null ) { formattedMessage = string.Format("[{0}] {1}: {2}", channel.ToString(), sender, message); } ChatEntry ce = new ChatEntry(channel, formattedMessage); _chatEntries.Add(ce); FilterChat(); } }
public static string ProcessMessageFurther(string message, string speaker, ChatChannel channels, ChatModifier modifiers) { //Skip everything if system message if (channels.HasFlag(ChatChannel.System)) { return(message); } //Skip everything in case of combat channel if (channels.HasFlag(ChatChannel.Combat)) { return(AddMsgColor(channels, $"<i>{message}</i>")); //POC } //Skip everything if it is an action or examine message or if it is a local message //without a speaker (which is used by machines) if (channels.HasFlag(ChatChannel.Examine) || channels.HasFlag(ChatChannel.Action) || channels.HasFlag(ChatChannel.Local) && string.IsNullOrEmpty(speaker)) { return(AddMsgColor(channels, $"<i>{message}</i>")); } // Skip everything if the message is a local warning if (channels.HasFlag(ChatChannel.Warning)) { return(AddMsgColor(channels, $"<i>{message}</i>")); } message = StripTags(message); //Check for emote. If found skip chat modifiers, make sure emote is only in Local channel Regex rx = new Regex("^(/me )"); if (rx.IsMatch(message)) { // /me message channels = ChatChannel.Local; message = rx.Replace(message, " "); message = AddMsgColor(channels, $"<i><b>{speaker}</b> {message}</i>"); return(message); } //Check for OOC. If selected, remove all other channels and modifiers (could happen if UI f***s up or someone tampers with it) if (channels.HasFlag(ChatChannel.OOC)) { message = AddMsgColor(channels, $"[ooc] <b>{speaker}: {message}</b>"); return(message); } //Ghosts don't get modifiers if (channels.HasFlag(ChatChannel.Ghost)) { return(AddMsgColor(channels, $"[dead] <b>{speaker}</b>: {message}")); } message = ApplyModifiers(message, modifiers); if (message.Length < 1) { return(""); } var verb = "says:"; var toUpperCheck = message.ToUpper(CultureInfo.InvariantCulture); if (message.Contains("!") && toUpperCheck != message) { verb = "exclaims,"; } if (toUpperCheck == message) { verb = "yells,"; message = $"<b>{message}</b>"; } var chan = $"[{channels.ToString().ToLower().Substring(0, 3)}] "; if (channels.HasFlag(ChatChannel.Command)) { chan = "[cmd] "; } if (channels.HasFlag(ChatChannel.Local)) { chan = ""; } return(AddMsgColor(channels, $"{chan}<b>{speaker}</b> {verb} " + "\"" + message + "\"")); }
public static string FormatChatForSender(User user, ChatChannel channel, string message, string dmRecipiant = null, bool autoReply = false) { switch (channel) { case ChatChannel.All: if (user.Moderator || user.Administrator) { return(Messages.FormatGlobalChatMessageForMod(user.Username, message)); } else { return(Messages.FormatGlobalChatMessage(user.Username, message)); } case ChatChannel.Ads: int numbListening = GameServer.GetNumberOfPlayersListeningToAdsChat(); // vry specific function ik return(Messages.FormatAdsChatForSender(numbListening - 1, user.Username, message)); case ChatChannel.Buddies: return(Messages.FormatBuddyChatMessageForSender(GameServer.GetNumberOfBuddiesOnline(user), user.Username, message)); case ChatChannel.Isle: int inIsle = 0; if (World.InIsle(user.X, user.Y)) { inIsle = GameServer.GetUsersInIsle(World.GetIsle(user.X, user.Y), false, false).Length - 1; } return(Messages.FormatIsleChatMessageForSender(inIsle, user.Username, message)); case ChatChannel.Here: int usersHere = GameServer.GetUsersAt(user.X, user.Y, false, false).Length - 1; return(Messages.FormatHereChatMessageForSender(usersHere, user.Username, message)); case ChatChannel.Near: int nearbyUsers = GameServer.GetNearbyUsers(user.X, user.Y, false, false).Length - 1; return(Messages.FormatNearChatMessageForSender(nearbyUsers, user.Username, message)); case ChatChannel.Mod: int modsOnline = GameServer.GetNumberOfModsOnline() - 1; return(Messages.FormatModChatForSender(modsOnline, user.Username, message)); case ChatChannel.Admin: int adminsOnline = GameServer.GetNumberOfAdminsOnline() - 1; return(Messages.FormatAdminChatForSender(adminsOnline, user.Username, message)); case ChatChannel.Dm: string badge = ""; if (user.Moderator || user.Administrator) { badge += Messages.DmModBadge; } if (autoReply) { badge += Messages.DmAutoResponse; } return(Messages.FormatDirectChatMessageForSender(user.Username, dmRecipiant, message, badge)); default: Logger.ErrorPrint(user.Username + " is trying to end a message in unknown channel " + channel.ToString("X")); return("not implemented yet :("); } }
public static string FormatChatForOthers(User user, ChatChannel channel, string message, bool autoReply = false) { switch (channel) { case ChatChannel.All: if (user.Moderator || user.Administrator) { return(Messages.FormatGlobalChatMessageForMod(user.Username, message)); } else { return(Messages.FormatGlobalChatMessage(user.Username, message)); } case ChatChannel.Ads: return(Messages.FormatAdsChatMessage(user.Username, message)); case ChatChannel.Buddies: return(Messages.FormatBuddyChatMessage(user.Username, message)); case ChatChannel.Dm: string badge = ""; if (user.Moderator || user.Administrator) { badge += Messages.DmModBadge; } if (autoReply) { badge += Messages.DmAutoResponse; } return(Messages.FormatDirectMessage(user.Username, message, badge)); case ChatChannel.Near: return(Messages.FormatNearbyChatMessage(user.Username, message)); case ChatChannel.Isle: return(Messages.FormatIsleChatMessage(user.Username, message)); case ChatChannel.Here: return(Messages.FormatHereChatMessage(user.Username, message)); case ChatChannel.Mod: if (user.Moderator || user.Administrator) { return(Messages.FormatModChatMessage(user.Username, message)); } else { Logger.HackerPrint(user.Username + " Tried to send in mod chat without being a moderator. (Hack/Code Attempt)"); return(""); } case ChatChannel.Admin: if (user.Administrator) { return(Messages.FormatAdminChatMessage(user.Username, message)); } else { Logger.HackerPrint(user.Username + " Tried to send in mod chat without being a moderator. (Hack/Code Attempt)"); return(""); } default: Logger.ErrorPrint(user.Username + " is trying to end a message in unknown channel " + channel.ToString("X")); return("not implemented yet :("); } }
public static string FormatChatForOthers(User user, ChatChannel channel, string message) { switch (channel) { case ChatChannel.All: if (user.Moderator || user.Administrator) { return(Messages.FormatGlobalChatMessageForMod(user.Username, message)); } else { return(Messages.FormatGlobalChatMessage(user.Username, message)); } case ChatChannel.Ads: return(Messages.FormatAdsChatMessage(user.Username, message)); case ChatChannel.Buddies: return(Messages.FormatBuddyChatMessage(user.Username, message)); case ChatChannel.Dm: if (user.Moderator || user.Administrator) { return(Messages.FormatDirectMessageForMod(user.Username, message)); } else { return(Messages.FormatDirectMessage(user.Username, message)); } case ChatChannel.Near: return(Messages.FormatNearbyChatMessage(user.Username, message)); case ChatChannel.Isle: return(Messages.FormatIsleChatMessage(user.Username, message)); case ChatChannel.Here: return(Messages.FormatHereChatMessage(user.Username, message)); case ChatChannel.Mod: if (user.Moderator || user.Administrator) { return(Messages.FormatModChatMessage(user.Username, message)); } else { Logger.HackerPrint(user.Username + " Tried to send in mod chat without being a moderator. (Hack/Code Attempt)"); return(user.Username + " is a hacker! (Sent in mod channel without being a mod) Maybe ban?"); } case ChatChannel.Admin: if (user.Administrator) { return(Messages.FormatAdminChatMessage(user.Username, message)); } else { Logger.HackerPrint(user.Username + " Tried to send in mod chat without being a moderator. (Hack/Code Attempt)"); return(user.Username + " is a hacker! (Sent in admin channel without being a admin) Maybe ban?"); } default: Logger.ErrorPrint(user.Username + " is trying to end a message in unknown channel " + channel.ToString("X")); return("not implemented yet :("); } }