using System; using System.Collections; using System.Collections.Generic; using System.Linq; using TMPro; using Toolset.UI; using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; using static BaseConf; public class CarouselMenuALL : MonoBehaviour { public static CarouselMenuALL Inst; public Button sb_bt;//设备 public Button bk_bt;//板卡 public Button fs_bt;//风扇 public Button dc_bt;//电池 public Sprite init_img; public CarouselMenu carouselMenu; public CarouselMenu Init_carouselMenu; public Button left_bt; public Button right_bt; public List gameObjects; public GameObject sb_game; public GameObject bk_game; public GameObject fs_game; public GameObject dc_game; /// /// 自动筛选板卡元素列表 /// public List list = new List(); /// /// 所有子菜单 /// public List itemMenus = new List(); public Button search_bt; public TMP_InputField InputField; private void Awake() { Inst = this; } private void OnEnable() { carouselMenu = Init_carouselMenu; InputField.text = string.Empty; if (list.Count <= 0) { for (int i = 0; i < sb_game.transform.childCount; i++) { var dc = sb_game.transform.GetChild(i).GetComponent(); if (!dc.oriObjectPrefab) dc.oriObjectPrefab = Resources.Load("古泉站机房模型90个型号/" + dc.name); } for (int i = 0; i < bk_game.transform.childCount; i++) { var dc = bk_game.transform.GetChild(i).GetComponent(); list.Add(dc); if (!dc.oriObjectPrefab) dc.oriObjectPrefab = Resources.Load("古泉站机房模型90个型号/" + dc.name); } } init(); //carouselMenu.Refresh(); } private void OnDisable() { } // Start is called before the first frame update void Start() { itemMenus = GetComponentsInChildren(true).ToList(); sb_bt.onClick.AddListener(() => { sb_bt_onClick(); }); bk_bt.onClick.AddListener(() => { bk_bt_onClick(); }); fs_bt.onClick.AddListener(() => { fs_bt_onClick(); }); dc_bt.onClick.AddListener(() => { dc_bt_onClick(); }); left_bt.onClick.AddListener(() => { carouselMenu.Btn_Left(left_bt); }); right_bt.onClick.AddListener(() => { carouselMenu.Btn_Right(right_bt); }); search_bt.onClick.AddListener(() => { if (string.IsNullOrEmpty(InputField.text)) { showAll_DragController(); //return; packagingFiltering(); } else { PatternChoose.Inst.DetectCharacters((x) => { if(!x) return; else { packagingFiltering(); } }, InputField); } }); } /// /// 封装筛选 /// public void packagingFiltering() { var itemMenuTexts = carouselMenu.gameObject.GetComponentsInChildren(true).ToList(); //筛选 //List list = new List(); List v = itemMenuTexts.Where(x => x.text.text.Contains(InputField.text)).ToList(); //共有的元素 var commonItems = itemMenuTexts.Intersect(v).ToList(); //独有的元素 var uniqueItems = itemMenuTexts.Where(x => !v.Contains(x)).Union(v.Where(y => !itemMenuTexts.Contains(y))).ToList(); for (int i = 0; i < commonItems.Count; i++) commonItems[i].gameObject.SetActive(true); for (int i = 0; i < uniqueItems.Count; i++) uniqueItems[i].gameObject.SetActive(false); carouselMenu.Refresh(); } public void sb_bt_onClick() { showAll_DragController(); sb_bt.GetComponent().sprite = sb_bt.spriteState.selectedSprite; bk_bt.GetComponent().sprite = init_img; gameObjects_cls(); sb_game.SetActive(true); sb_game.GetComponent().Refresh(); } public void bk_bt_onClick() { showAll_DragController(); sb_bt.GetComponent().sprite = init_img; bk_bt.GetComponent().sprite = bk_bt.spriteState.selectedSprite; gameObjects_cls(); bk_game.SetActive(true); bk_game.GetComponent().Refresh(); } public void fs_bt_onClick() { gameObjects_cls(); fs_game.SetActive(true); } public void dc_bt_onClick() { gameObjects_cls(); dc_game.SetActive(true); } // Update is called once per frame void Update() { } public void gameObjects_cls() { for (int i = 0; i < gameObjects.Count; i++) { gameObjects[i].SetActive(false); } } public void init() { sb_bt.Select(); sb_bt_onClick(); } public void setCarouselMenu(CarouselMenu menu) { carouselMenu = menu; } /// /// 筛选相同类型 /// public void Filter_Type() { List upostItems = new List(); //DeviceQuery now_DeviceQuery = new DeviceQuery(); if (GameManager.Inst.nowDevice && GameManager.Inst.nowDevice.GetComponent()) { //now_DeviceQuery = GameManager.Inst.nowDevice.GetComponent(); var UM = GameManager.Inst.nowDevice.transform.Find("U位"); if (UM) { upostItems = UM.GetComponentsInChildren().ToList(); } else { return; } } else { return; } //for (int i = 0; i < upostItems.Count; i++) //{ for (int j = 0; j < list.Count; j++) { list[j].gameObject.SetActive(false); for (int i = 0; i < upostItems.Count; i++) { GameObject prefab = Resources.Load("古泉站机房模型90个型号/" + list[j].name) as GameObject; var qd_game = prefab.GetComponent(); var qd_upostItem = upostItems[i]; if (qd_upostItem.conf2.module_type == ModuleType.板卡 && qd_game.conf2.module_type == ModuleType.板卡 && qd_upostItem.conf2.type_card == qd_game.conf2.type_card) { list[j].gameObject.SetActive(true); break; } } } //} bk_game.GetComponent().Refresh(); } /// /// 恢复所有子菜单显示 /// public void showAll_DragController() { for (int i = 0; i < itemMenus.Count; i++) { itemMenus[i].gameObject.SetActive(true); } } }