using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using WI; using static MQTT; public class Panel_AssemblyProduction : PanelBase { public SDictionary machineStatuses = new SDictionary(); private Panel_Effect effect; private UI_MachineStatus prf_machineStatus; public ScrollRect ScrollView_StatusItems; public Button CloseButton; public TextMeshProUGUI CurrentDate; public TextMeshProUGUI CurrentTime; public float fadeTime; public override void AfterAwake() { prf_machineStatus = Resources.Load("Prefabs/UI/UI_StatusItem"); CloseButton.onClick.AddListener(Close); SetDate(); Close(); } public void Update() { SetTime(); } public void Open() { effect.ActivePanel(gameObject); gameObject.SetActive(true); gameObject.transform.SetAsLastSibling(); StopAllCoroutines(); StartCoroutine(ScaleUp()); } public void Close() { effect.DeactivePanel(gameObject); gameObject.SetActive(false); gameObject.transform.localScale = Vector3.zero; } public void SetProductionStatus(List machineInfos) { bool odd = true; foreach (var machineInfo in machineInfos) { if (!machineStatuses.ContainsKey(machineInfo.worknm)) { var machineStatus = Instantiate(prf_machineStatus, ScrollView_StatusItems.content); machineStatuses.Add(machineInfo.worknm, machineStatus); } if (odd) { machineStatuses[machineInfo.worknm].SetStatusData(machineInfo, new Color(0.07058824f, 0.1294118f, 0.2941177f)); } else { machineStatuses[machineInfo.worknm].SetStatusData(machineInfo, new Color(0.04313726f, 0.09019608f, 0.2235294f)); } odd = !odd; } } public void SetDate() { CurrentDate.text = DateTime.Now.ToString("yyyy.MM.dd"); } public void SetTime() { CurrentTime.text = DateTime.Now.ToString("HH:mm"); } IEnumerator ScaleUp() { float timer = 0f; float percent = 0f; while (percent < 1) { timer += Time.deltaTime; percent = timer / fadeTime; transform.localScale = Vector3.Lerp(transform.localScale, Vector3.one, percent); yield return null; } } }