private void UpdateMessage(EnhancedTextMeshProUGUIWithBackground msg, bool setAllDirty = false) { (msg.transform as RectTransform).sizeDelta = new Vector2(ChatWidth, (msg.transform as RectTransform).sizeDelta.y); msg.Text.font = _chatFont.Font; msg.Text.overflowMode = TextOverflowModes.Overflow; msg.Text.alignment = TextAlignmentOptions.BottomLeft; msg.Text.lineSpacing = 1.5f; msg.Text.color = TextColor; msg.Text.fontSize = FontSize; msg.Text.lineSpacing = 1.5f; msg.SubText.font = _chatFont.Font; msg.SubText.overflowMode = TextOverflowModes.Overflow; msg.SubText.alignment = TextAlignmentOptions.BottomLeft; msg.SubText.color = TextColor; msg.SubText.fontSize = FontSize; msg.SubText.lineSpacing = 1.5f; if (msg.Text.ChatMessage != null) { msg.HighlightColor = msg.Text.ChatMessage.IsPing ? PingColor : HighlightColor; msg.AccentColor = AccentColor; msg.HighlightEnabled = msg.Text.ChatMessage.IsHighlighted || msg.Text.ChatMessage.IsPing; msg.AccentEnabled = !msg.Text.ChatMessage.IsPing && (msg.HighlightEnabled || msg.SubText.ChatMessage != null); } if (setAllDirty) { msg.Text.SetAllDirty(); if (msg.SubTextEnabled) { msg.SubText.SetAllDirty(); } } }
//゚+。*゚+。。+゚*。+゚ ゚+。*゚+。。+゚*。+゚ ゚+。*゚+。*゚+。。+゚*。+゚ ゚+。*゚+。。+゚*。+゚ ゚+。*゚+。*゚+。。+゚*。+゚ ゚+。*゚+。。+゚*。+゚ ゚+。* #region // プライベートメソッド private void AddMessage(EnhancedTextMeshProUGUIWithBackground newMsg) { newMsg.AddReciver(this); this.UpdateMessage(newMsg, true); this._messages.Enqueue(newMsg); this.ClearOldMessages(); }
public void AddMessage(EnhancedTextMeshProUGUIWithBackground newMsg) { _messages.Enqueue(newMsg); UpdateMessage(newMsg); ClearOldMessages(); newMsg.OnLatePreRenderRebuildComplete += OnRenderRebuildComplete; newMsg.gameObject.SetActive(true); }
private void ClearMessage(EnhancedTextMeshProUGUIWithBackground msg) { // Only clear non-system messages if (!msg.Text.ChatMessage.IsSystemMessage) { msg.Text.text = BuildClearedMessage(msg.Text); msg.SubTextEnabled = false; } if (msg.SubText.ChatMessage != null && !msg.SubText.ChatMessage.IsSystemMessage) { msg.SubText.text = BuildClearedMessage(msg.SubText); } }
public async void OnTextMessageReceived(IChatMessage msg) { string parsedMessage = await ChatMessageBuilder.BuildMessage(msg, _chatFont); MainThreadInvoker.Invoke(() => { if (_lastMessage != null && !msg.IsSystemMessage && _lastMessage.Text.ChatMessage.Id == msg.Id) { // If the last message received had the same id and isn't a system message, then this was a sub-message of the original and may need to be highlighted along with the original message _lastMessage.SubText.text = parsedMessage; _lastMessage.SubText.ChatMessage = msg; _lastMessage.SubTextEnabled = true; UpdateMessage(_lastMessage); } else { var newMsg = TextPool.Alloc(); newMsg.Text.ChatMessage = msg; newMsg.Text.text = parsedMessage; AddMessage(newMsg); _lastMessage = newMsg; } }); }