72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | namespace SRDebugger.UI.Other | |||
|  | { | |||
|  |     using Services; | |||
|  |     using SRF; | |||
|  |     using UnityEngine; | |||
|  |     using UnityEngine.UI; | |||
|  | 
 | |||
|  |     public class ConsoleTabQuickViewControl : SRMonoBehaviourEx | |||
|  |     { | |||
|  |         private const int Max = 1000; | |||
|  |         private static readonly string MaxString = (Max - 1) + "+"; | |||
|  |         private int _prevErrorCount = -1; | |||
|  |         private int _prevInfoCount = -1; | |||
|  |         private int _prevWarningCount = -1; | |||
|  | 
 | |||
|  |         [Import] public IConsoleService ConsoleService; | |||
|  | 
 | |||
|  |         [RequiredField] public Text ErrorCountText; | |||
|  | 
 | |||
|  |         [RequiredField] public Text InfoCountText; | |||
|  | 
 | |||
|  |         [RequiredField] public Text WarningCountText; | |||
|  | 
 | |||
|  |         protected override void Awake() | |||
|  |         { | |||
|  |             base.Awake(); | |||
|  | 
 | |||
|  |             ErrorCountText.text = "0"; | |||
|  |             WarningCountText.text = "0"; | |||
|  |             InfoCountText.text = "0"; | |||
|  |         } | |||
|  | 
 | |||
|  |         protected override void Update() | |||
|  |         { | |||
|  |             base.Update(); | |||
|  | 
 | |||
|  |             if (ConsoleService == null) | |||
|  |             { | |||
|  |                 return; | |||
|  |             } | |||
|  | 
 | |||
|  |             if (HasChanged(ConsoleService.ErrorCount, ref _prevErrorCount, Max)) | |||
|  |             { | |||
|  |                 ErrorCountText.text = Internal.SRDebuggerUtil.GetNumberString(ConsoleService.ErrorCount, Max, MaxString); | |||
|  |             } | |||
|  | 
 | |||
|  |             if (HasChanged(ConsoleService.WarningCount, ref _prevWarningCount, Max)) | |||
|  |             { | |||
|  |                 WarningCountText.text = Internal.SRDebuggerUtil.GetNumberString(ConsoleService.WarningCount, Max, | |||
|  |                     MaxString); | |||
|  |             } | |||
|  | 
 | |||
|  |             if (HasChanged(ConsoleService.InfoCount, ref _prevInfoCount, Max)) | |||
|  |             { | |||
|  |                 InfoCountText.text = Internal.SRDebuggerUtil.GetNumberString(ConsoleService.InfoCount, Max, MaxString); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         private static bool HasChanged(int newCount, ref int oldCount, int max) | |||
|  |         { | |||
|  |             var newCountClamped = Mathf.Clamp(newCount, 0, max); | |||
|  |             var oldCountClamped = Mathf.Clamp(oldCount, 0, max); | |||
|  | 
 | |||
|  |             var hasChanged = newCountClamped != oldCountClamped; | |||
|  | 
 | |||
|  |             oldCount = newCount; | |||
|  | 
 | |||
|  |             return hasChanged; | |||
|  |         } | |||
|  |     } | |||
|  | } |