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, IPopupPanel { 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 bool isSelectMachine; private int selectMachineIndex; public float selectKeepTime = 10; float selectWaitTime; private bool isUpdate = true; public override void AfterAwake() { productionStatusManager = FindSingle(); } private void Update() { UpdateDayAndTime(); if (!isUpdate) return; List completeInfos = productionStatusManager.productionStatusInfos; if (completeInfos.Count == 0) return; if (isSelectMachine) { productionStatusInfoNum = selectMachineIndex; CompleteInfo completeInfo = completeInfos[productionStatusInfoNum]; SetPanelText(completeInfo); } else { CompleteInfo completeInfo = completeInfos[productionStatusInfoNum]; waitTime += Time.deltaTime; if (waitTime > loopTime) { SetPanelText(completeInfo); productionStatusInfoNum += 1; if (productionStatusInfoNum >= productionStatusManager.productionStatusInfos.Count) { productionStatusInfoNum = 0; } waitTime = 0; } } } public void SetProductionStatus(Machine selectMachine) { var completeInfos = productionStatusManager.productionStatusInfos; for (int i = 0; i < completeInfos.Count; i++) { if (completeInfos[i].workcd == selectMachine.code) { selectMachineIndex = i; isSelectMachine = true; } } } public void ResetProductionStatus() { isSelectMachine = false; } 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); } public void Open() { SetActive(true); isUpdate = true; } public void Close() { SetActive(false); isUpdate = false; } }