コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
 //゚+。*゚+。。+゚*。+゚ ゚+。*゚+。。+゚*。+゚ ゚+。*゚+。*゚+。。+゚*。+゚ ゚+。*゚+。。+゚*。+゚ ゚+。*゚+。*゚+。。+゚*。+゚ ゚+。*゚+。。+゚*。+゚ ゚+。*
 #region // プライベートメソッド
 private void AddMessage(EnhancedTextMeshProUGUIWithBackground newMsg)
 {
     newMsg.AddReciver(this);
     this.UpdateMessage(newMsg, true);
     this._messages.Enqueue(newMsg);
     this.ClearOldMessages();
 }
コード例 #3
0
 public void AddMessage(EnhancedTextMeshProUGUIWithBackground newMsg)
 {
     _messages.Enqueue(newMsg);
     UpdateMessage(newMsg);
     ClearOldMessages();
     newMsg.OnLatePreRenderRebuildComplete += OnRenderRebuildComplete;
     newMsg.gameObject.SetActive(true);
 }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
        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;
                }
            });
        }