using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using static MQTT; using WI; public class Panel_WorkProgressStatus : PanelBase, IProductionPanel { public Dictionary workStatuses = new Dictionary(); private Panel_Effect effect; private UI_WorkStatusItem prf_workStatusItem; public ScrollRect ScrollView_StatusItems; public Image Image_Loading; public Button CloseButton; public TextMeshProUGUI CurrentDate; public TextMeshProUGUI CurrentTime; public float fadeTime; public Action onSelected; public Action onOpen; public Action onClose; public override void AfterAwake() { prf_workStatusItem = Resources.Load("Prefabs/UI/UI_WorkStatusItem"); CloseButton.onClick.AddListener(OnClickCloseButton); SetDate(); Close(); } public void Update() { SetTime(); } public void OnSelected() { onSelected?.Invoke(this); Open(); } public void Open() { onOpen?.Invoke(); effect.ActivePanel(); gameObject.SetActive(true); gameObject.transform.SetAsLastSibling(); StopAllCoroutines(); StartCoroutine(ScaleUp()); } public void Close() { effect.DeactivePanel(); gameObject.SetActive(false); gameObject.transform.localScale = Vector3.zero; } private void OnClickCloseButton() { Close(); onClose?.Invoke(); } public void ActiveLoadingImage(bool isActive) { var active = isActive ? false : true; Image_Loading.gameObject.SetActive(active); } public void SetWorkProgressStatus(List workShopInfos) { ActiveLoadingImage(true); bool odd = true; foreach (var workShopInfo in workShopInfos) { if (!workStatuses.ContainsKey(workShopInfo.groupcd)) { var workStatusItem = Instantiate(prf_workStatusItem, ScrollView_StatusItems.content); workStatuses.Add(workShopInfo.groupcd, workStatusItem); } if (odd) { workStatuses[workShopInfo.groupcd].SetStatusData(workShopInfo, new Color(0f, 0f, 0f, 0f)); } else { workStatuses[workShopInfo.groupcd].SetStatusData(workShopInfo, new Color(0f, 0f, 0f, 0.7f)); } 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; } } }