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