using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; public class SearchCtrl : SingletonMonoBehaviour { [SerializeField] GameObject opsion; [SerializeField] Image searchMenuButtonImage; [SerializeField] Sprite[] searchMenuButton; [SerializeField] TMP_Text searchMenuButtonText; [SerializeField] TMP_InputField name; [SerializeField] TMP_Dropdown suitStyle; [SerializeField] TMP_Dropdown suitType; [SerializeField] TMP_Dropdown region; [SerializeField] TMP_Dropdown animalTypes; [SerializeField] Toggle[] colors; [SerializeField] Sprite[] isOnSprite; [SerializeField] GameObject item; [SerializeField] Transform results; [SerializeField] GameObject listTop; [SerializeField] GameObject bar; [SerializeField] RectTransform content; [SerializeField] Animator searchUI; [SerializeField] ModalCtrl model; private SearchRequest request; private List librarys; private bool hasMore; private List itemPrefabs; protected override void OnAwake() { itemPrefabs = new List(); } private void OnEnable() { hasMore = false; model.gameObject.SetActive(false); searchUI.SetTrigger("reset"); ResetButton(); ObjectClear(); } private void ObjectClear() { //TODO ÀçȰ¿ë ÇÒ ¼ö ÀÖ°Ô ¸¸µé±â results.gameObject.SetActive(false); listTop.SetActive(false); bar.SetActive(false); if (itemPrefabs.Count != 0) { for (int n = 0; n < itemPrefabs.Count; n++) { Destroy(itemPrefabs[n]); } itemPrefabs.Clear(); } } public void OpsionButton() { //¿É¼ÇâÀÌ ³ª¿ÀÁö ¾Ê¾ÒÀ»¶§ 250,100 //¿É¼ÇâÀÌ ³ª¿ÔÀ»¶§ 60 ,290 bool isSelf = !opsion.activeSelf; searchMenuButtonImage.sprite = searchMenuButton[(isSelf ? 1 : 0)]; searchMenuButtonImage.pixelsPerUnitMultiplier = (isSelf ? 3.5f : 1.75f); searchMenuButtonText.color = (isSelf ? Color.white : Color.black); searchUI.SetBool("isSelf", isSelf); ResetButton(); } public void SearchButton() { ObjectClear(); request = new SearchRequest(); request.fursuitName = name.text; if (suitStyle.value != 0) request.suitStyle = GameManager.Instance.suitStyle[suitStyle.value - 1].code_id; if (suitType.value != 0) request.suitType = GameManager.Instance.suitType[suitType.value - 1].code_id; if (region.value != 0) request.suitRegion = GameManager.Instance.region[region.value - 1].code_id; if (animalTypes.value != 0) request.suitAnimalType = GameManager.Instance.animalTypes[animalTypes.value - 1].code_id; NetworkManager.Instance.CreateRequest("library/select/suiters", request, (data) => { librarys = data.data; results.gameObject.SetActive(true); listTop.SetActive(true); bar.SetActive(true); ItemPrefab[] items = new ItemPrefab[5]; for (int n = 0; n < 5; n++) { GameObject prefab = Instantiate(item, results); itemPrefabs.Add(prefab); items[n] = prefab.GetComponent(); } for (int n = 0; n < data.data.Count; n++) { items[n].Set(data.data[n]); } hasMore = data.hasMore; //LayoutRebuilder.ForceRebuildLayoutImmediate(content); }); } public void NextSearch() { hasMore = false; request.page++; NetworkManager.Instance.CreateRequest("library/select/suiters", request, (data) => { librarys.AddRange(data.data); Debug.Log(data.data.Count); ItemPrefab[] items = new ItemPrefab[data.data.Count]; for (int n = 0; n < items.Length; n++) { GameObject prefab = Instantiate(item, results); itemPrefabs.Add(prefab); items[n] = prefab.GetComponent(); } for (int n = 0; n < data.data.Count; n++) { items[n].Set(data.data[n]); } hasMore = data.hasMore; LayoutRebuilder.ForceRebuildLayoutImmediate(content); }); } public void GetImage(ItemPrefab itemPrefab, Library library) { NetworkManager.Instance.CreateImageRequest(library.imageBase64.Substring(1), new object(), (data) => { library._suit_image = Sprite.Create(data, new Rect(0, 0, data.width, data.height), new Vector2(0.5f, 0.5f)); itemPrefab.ImageSet(); }, null, BestHTTP.HTTPMethods.Get); } public void ResetButton() { suitStyle.value = 0; suitType.value = 0; region.value = 0; animalTypes.value = 0; for(int n = 0; n < colors.Length; n++) { colors[n].isOn = false; colors[n].image.sprite = isOnSprite[0]; } } public void OnToggle(int velue) { colors[velue].image.sprite = isOnSprite[(colors[velue].isOn ? 1 : 0)]; } public void ModelSet(Library library) { model.Set(library); } public void ScrollValue(RectTransform Content) { if(Content.anchoredPosition.y < 0.0f) { Content.anchoredPosition = Vector2.zero; } else if(hasMore && Content.sizeDelta.y != Screen.height && Content.sizeDelta.y - Screen.height < Content.anchoredPosition.y) { NextSearch(); } } } public class SearchRequest { public int xid; public string fursuitName = ""; /*¿À³Ê,½´Æ® À̸§*/ public string suitMaker; /*»ç¿ë¾ÈÇÔ*/ public string suitRegion = ""; /*Ȱµ¿ ±¹°¡*/ public string suitStyle = ""; /*½´Æ® ½ºÅ¸ÀÏ*/ public string suitAnimalType = ""; /*½´Æ® µ¿¹° Á¾*/ public string suitType = ""; /*½´Æ® ÇüÅÂ*/ public List colorList = new List(); /*½´Æ® »ö»ó*/ public int page = 1; public int size = 5; public int offset = 0; } public class SearchResponse { public List data; public bool hasMore; } public class ImageResponse { public byte[] imageBytes; } public class Library { public string imageBase64; public string suit_name; public string owner_id; public string owner_name; public string production_date; public string suit_image;//»ç¿ë¾ÈÇÔ public Sprite _suit_image = null; public string maker; public string region; public string animal_type; public string suit_style; public string suit_type; public List suit_color; }