You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CrowdControl/Assets/3rd/StompyRobot/SRDebugger/Scripts/UI/Other/ConsoleTabQuickViewControl.cs

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