using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using WI; using TMPro; using SFB; //using static UnityEditor.Progress; namespace CHN { public class Panel_Library : PanelBase, ISingle { private GridLayoutGroup Panel_MachineFilter; private ScrollRect ScrollView_MachineList; private Button Button_Library; private Button Button_Close; private UI_LibraryButton prf_LibraryButton; private UI_FilterButton prf_FilterToggle; private Dictionary filterToItem = new Dictionary(); private List filters = new List(); public UI_FilterButton pre_labelButton; public UI_LibraryButton pre_libraryButton; public Action onClickLabelButton; public Action onClickLibraryButton; public Action onDeselectLibraryButton; public Action onClose; public Action onClickLibraryOpenButton; public Action onClickLibraryCloseButton; public Vector3 originPos; public Vector3 downPos; public float fadeTime; public override void AfterAwake() { prf_LibraryButton = Resources.Load("Prefabs/UI/PRF_UI_LibraryButton"); prf_FilterToggle = Resources.Load("Prefabs/UI/PRF_UI_FilterButton"); Button_Library.onClick.AddListener(OnClickLibraryButton); Button_Close.onClick.AddListener(OnClickCloseButton); originPos = rectTransform.position; downPos = new Vector3(originPos.x, originPos.y - rectTransform.rect.height, originPos.z); } public void UpdateFileterList(string[] filters) { foreach (var item in filterToItem) { Destroy(item.Value.gameObject); } filterToItem.Clear(); this.filters.Clear(); for (int i = 0; i < filters.Length; ++i) { CreateFilterToggle(filters[i]); } OnClickLabelButton(this.filters[0]); } UI_FilterButton CreateFilterToggle(string label) { var btn = Instantiate(prf_FilterToggle, Panel_MachineFilter.transform); btn.SettingButton(label); btn.onClickButton += OnClickLabelButton; filterToItem.Add(label, btn); filters.Add(btn); return btn; } private void OnClickLabelButton(UI_FilterButton filterLabel) { if(pre_labelButton != null) { pre_labelButton.ResetColor(); } pre_labelButton = filterLabel; pre_labelButton.SetColor(); onClickLabelButton?.Invoke(pre_labelButton.label); } public void OnClickLibraryButton() { onClickLibraryOpenButton?.Invoke("¶óÀ̺귯¸®"); } public void OnClickCloseButton() { onClickLibraryCloseButton?.Invoke("¶óÀ̺귯¸®"); } public void Open() { StopAllCoroutines(); StartCoroutine(MoveAnimation(originPos)); } public void Close() { onClose?.Invoke(); StopAllCoroutines(); StartCoroutine(MoveAnimation(downPos)); } public void AddLibrarayButtons(HashSet machines) { ScrollView_MachineList.Clear(); List sortedMachines = new List(machines); sortedMachines.Sort((x, y) => x.code.CompareTo(y.code)); foreach (var machine in sortedMachines) { var machineButton = Instantiate(prf_LibraryButton, ScrollView_MachineList.content); machineButton.SettingButton(machine); machineButton.onClickButton += OnClickLibraryButton; } } private void OnClickLibraryButton(UI_LibraryButton machineButton) { if (pre_libraryButton != null) { onDeselectLibraryButton?.Invoke(pre_libraryButton); } pre_libraryButton = machineButton; onClickLibraryButton?.Invoke(pre_libraryButton); } IEnumerator MoveAnimation(Vector3 targetPos) { float timer = 0f; float percent = 0f; while (percent < 1) { timer += Time.deltaTime; percent = timer / fadeTime; rectTransform.position = Vector3.Lerp(rectTransform.position, targetPos, percent); yield return null; } } } }