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; | |||
|  |         } | |||
|  |     } | |||
|  | } |