Files
ChunilENG/Assets/Scripts/UI/Panel_ProductionStatus.cs
2025-03-26 14:20:17 +09:00

102 lines
2.6 KiB
C#

using CHN;
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using WI;
using static MQTT;
public class Panel_ProductionStatus : PanelBase
{
TextMeshProUGUI Text_DayAndTime;
TextMeshProUGUI worknm;
TextMeshProUGUI status;
TextMeshProUGUI goalqty;
TextMeshProUGUI workqty;
TextMeshProUGUI goodqty;
TextMeshProUGUI badqty;
ProductionStatusManager productionStatusManager;
[SerializeField]
float loopTime = 3;
float waitTime;
public int productionStatusInfoNum = 0;
public override void AfterAwake()
{
productionStatusManager = FindSingle<ProductionStatusManager>();
}
private void Update()
{
UpdateDayAndTime();
List<CompleteInfo> completeInfos = productionStatusManager.productionStatusInfos;
if (completeInfos.Count == 0)
return;
CompleteInfo completeInfo = completeInfos[productionStatusInfoNum];
waitTime += Time.deltaTime;
if (waitTime > loopTime)
{
SetPanelText(completeInfo);
productionStatusInfoNum += 1;
if (productionStatusInfoNum >= productionStatusManager.productionStatusInfos.Count)
{
productionStatusInfoNum = 0;
}
waitTime = 0;
}
}
void SetPanelText(CompleteInfo completeInfo)
{
worknm.SetText(completeInfo.worknm);
status.SetText(completeInfo.statusnm);
SetStatusColor(completeInfo.statusnm);
goalqty.SetText(RoundToIntData(completeInfo.goalqty));
workqty.SetText(RoundToIntData(completeInfo.workqty));
goodqty.SetText(RoundToIntData(completeInfo.goodqty));
badqty.SetText(RoundToIntData(completeInfo.badqty));
}
string RoundToIntData(string data)
{
float.TryParse(data, out var floatData);
var intData = Mathf.RoundToInt(floatData);
return intData.ToString();
}
void SetStatusColor(string stat)
{
switch (stat)
{
case "°¡µ¿Áß":
status.color = new Color(0, 1f, 0.3568628f);
break;
case "ºñ°¡µ¿":
status.color = new Color(1f, 0, 0);
break;
case "°èȹÁ¤Áö":
status.color = new Color(1f, 1f, 1f);
break;
default:
status.color = new Color(1f, 0.3411765f, 0);
break;
}
}
void UpdateDayAndTime()
{
string currentTime = DateTime.Now.ToString("yyyy.MM.dd HH:mm");
Text_DayAndTime.SetText(currentTime);
}
}