113 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C#
		
	
	
	
| namespace SRDebugger.UI.Controls
 | |
| {
 | |
|     using System;
 | |
|     using Services;
 | |
|     using SRF;
 | |
|     using SRF.UI;
 | |
|     using SRF.UI.Layout;
 | |
|     using UnityEngine;
 | |
|     using UnityEngine.UI;
 | |
| 
 | |
|     [RequireComponent(typeof (RectTransform))]
 | |
|     public class ConsoleEntryView : SRMonoBehaviourEx, IVirtualView
 | |
|     {
 | |
|         public const string ConsoleBlobInfo = "Console_Info_Blob";
 | |
|         public const string ConsoleBlobWarning = "Console_Warning_Blob";
 | |
|         public const string ConsoleBlobError = "Console_Error_Blob";
 | |
|         private int _count;
 | |
|         private bool _hasCount;
 | |
|         private ConsoleEntry _prevData;
 | |
|         private RectTransform _rectTransform;
 | |
| 
 | |
|         [RequiredField] public Text Count;
 | |
| 
 | |
|         [RequiredField] public CanvasGroup CountContainer;
 | |
| 
 | |
|         [RequiredField] public StyleComponent ImageStyle;
 | |
| 
 | |
|         [RequiredField] public Text Message;
 | |
| 
 | |
|         [RequiredField] public Text StackTrace;
 | |
| 
 | |
|         public void SetDataContext(object data)
 | |
|         {
 | |
|             var msg = data as ConsoleEntry;
 | |
| 
 | |
|             if (msg == null)
 | |
|             {
 | |
|                 throw new Exception("Data should be a ConsoleEntry");
 | |
|             }
 | |
| 
 | |
|             // Always check for updates on "Count", as it can change
 | |
|             if (msg.Count > 1)
 | |
|             {
 | |
|                 if (!_hasCount)
 | |
|                 {
 | |
|                     CountContainer.alpha = 1f;
 | |
|                     _hasCount = true;
 | |
|                 }
 | |
| 
 | |
|                 if (msg.Count != _count)
 | |
|                 {
 | |
|                     Count.text = Internal.SRDebuggerUtil.GetNumberString(msg.Count, 999, "999+");
 | |
|                     _count = msg.Count;
 | |
|                 }
 | |
|             }
 | |
|             else if (_hasCount)
 | |
|             {
 | |
|                 CountContainer.alpha = 0f;
 | |
|                 _hasCount = false;
 | |
|             }
 | |
| 
 | |
|             // Only update everything else if data context has changed, not just for an update
 | |
|             if (msg == _prevData)
 | |
|             {
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             _prevData = msg;
 | |
| 
 | |
|             Message.text = msg.MessagePreview;
 | |
|             StackTrace.text = msg.StackTracePreview;
 | |
| 
 | |
|             if (string.IsNullOrEmpty(StackTrace.text))
 | |
|             {
 | |
|                 Message.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 2,
 | |
|                     _rectTransform.rect.height - 4);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 Message.rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 12,
 | |
|                     _rectTransform.rect.height - 14);
 | |
|             }
 | |
| 
 | |
|             switch (msg.LogType)
 | |
|             {
 | |
|                 case LogType.Log:
 | |
|                     ImageStyle.StyleKey = ConsoleBlobInfo;
 | |
|                     break;
 | |
| 
 | |
|                 case LogType.Warning:
 | |
|                     ImageStyle.StyleKey = ConsoleBlobWarning;
 | |
|                     break;
 | |
| 
 | |
|                 case LogType.Exception:
 | |
|                 case LogType.Assert:
 | |
|                 case LogType.Error:
 | |
|                     ImageStyle.StyleKey = ConsoleBlobError;
 | |
|                     break;
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         protected override void Awake()
 | |
|         {
 | |
|             base.Awake();
 | |
| 
 | |
|             _rectTransform = CachedTransform as RectTransform;
 | |
|             CountContainer.alpha = 0f;
 | |
| 
 | |
|             Message.supportRichText = Settings.Instance.RichTextInConsole;
 | |
|         }
 | |
|     }
 | |
| }
 |