using CG.Framework; using CG.UTility; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /******************************************************************************* *Create By CG *Function 部件栏Ui 部件认知显示 *******************************************************************************/ namespace ZXK.GYJQR { public class OperationPartsBJCJPanel : UIBase { private GameObject _partItemContentOnePrefab = null; private Transform _partParent = null; private Transform _curSelectStepBtn = null; private void OnEnable() { _partItemContentOnePrefab = GetWedage("ContentOnePrefab_N"); _partParent = GetWedage("PartItemContent_N").transform; GameManager.Instance._DataBJCJHandler._CurBJRZhandler.OnValueChanged += OnPartInfoChanged; //EventCenterManager.Instance.AddEventListener(EventEnum.CameraDoubleClickNull, DoubleClickNullHandler); } ///// ///// 双击空白处再次显示原模型 ///// //private void DoubleClickNullHandler(object sender, EventArgs e) //{ // string showName = GameManager.Instance._DataBJCJHandler._ShowPartsName.Value; // BJCJ_INFO bjrzInfo = GameManager.Instance._DataBJCJHandler._CurBJRZhandler.GetValue()[showName]; // if (bjrzInfo == null) return; // GameManager.Instance._DataBJCJHandler._CurBJRZhandler.SetValue(showName, bjrzInfo); //} private void OnDisable() { GameManager.Instance._DataBJCJHandler._CurBJRZhandler.OnValueChanged -= OnPartInfoChanged; //EventCenterManager.Instance.RemoveListener(EventEnum.CameraDoubleClickNull, DoubleClickNullHandler); } /// /// 实例化数据到部件栏 /// 切换功能状态和模型都会刷新 /// /// 设置不同数据集合 public void InitData(List ItemInfo) { foreach (Transform item in _partParent) { item.gameObject.SetActive(false); } GameObject itemContentTemp = null; for (int i = 0; i < ItemInfo.Count; i++) { GameObject geo = null; if (_partParent.Find("itemContent/"+ItemInfo[i].id.ToString())) { geo = _partParent.Find("itemContent/" + ItemInfo[i].id.ToString()).gameObject; geo.transform.parent.gameObject.SetActive(true); } else { if (i % 3 == 0) { itemContentTemp = Instantiate(_partItemContentOnePrefab, _partParent); itemContentTemp.name ="itemContent"; } GameObject itemPrefab = itemContentTemp.transform.Find("PartItemPrefab").gameObject; geo = Instantiate(itemPrefab, itemContentTemp.transform); itemContentTemp.SetActive(true); ButtonExtension2 geoBtnExt = geo.AddComponent(); geo.name = ItemInfo[i].id.ToString(); Sprite tmep = null; //if (DataBJCJHandler._BJCZSpriteArray.ContainsKey(ItemInfo[i].partName)) //{ // tmep = DataBJCJHandler._BJCZSpriteArray[ItemInfo[i].partName]; //} //else //{ Sprite sprite = Resources.Load("BJCZLogo/" + GameManager.Instance._DataBJCJHandler._ShowPartsName.Value + "/" + ItemInfo[i].partName.Replace("/","")); //UtilitiesMng.LoadSpriteByURL(ItemInfo[i].picURL, (sprite) => //{ //DataBJCJHandler._BJCZSpriteArray.Add(ItemInfo[i].partName, sprite); geo.transform.Find("PartBG/PartImg").GetComponent().sprite = sprite; //}); //} if (System.Text.Encoding.Default.GetBytes(ItemInfo[i].partName).Length <= 15) { geo.GetComponent().sizeDelta = new Vector2(72, 92); geo.transform.Find("PartNameTxt").GetComponent().sizeDelta = new Vector2(72, 20); geo.transform.Find("PartNameTxt").GetComponent().alignment = TextAnchor.UpperCenter; } else { geo.GetComponent().sizeDelta = new Vector2(72, 112); geo.transform.Find("PartNameTxt").GetComponent().sizeDelta = new Vector2(72, 40); geo.transform.Find("PartNameTxt").GetComponent().alignment = TextAnchor.UpperLeft; } geo.transform.Find("PartNameTxt").GetComponent().text = ItemInfo[i].partName; geoBtnExt.onClick.AddListener(() => { string showName = GameManager.Instance._DataBJCJHandler._ShowPartsName.Value; BJCJ_INFO curInfo = GameManager.Instance._DataBJCJHandler._CurBJRZhandler.GetValue()[showName]; if (GameManager.Instance._DataBJCJHandler._CurState.Value == (int)EnumCtrl.BJCZState.BJRZ) { BJCJ_INFO bjrzInfo = GameManager.Instance._DataBJCJHandler.GetBJRZInfoByID(geoBtnExt.name); if (bjrzInfo == curInfo) return; GameManager.Instance._DataBJCJHandler._CurBJRZhandler.SetValue(showName, bjrzInfo); } }); geoBtnExt.onDoubleClick.AddListener(() => { WDebug.Log("双击" + geo.name); string showName = GameManager.Instance._DataBJCJHandler._ShowPartsName.Value; BJCJ_INFO bjrzInfo = GameManager.Instance._DataBJCJHandler._CurBJRZhandler.GetValue()[showName]; if (BJCZSceneCtrl._Instance._OnlyShowGeo) { if (bjrzInfo == null) return; GameManager.Instance._DataBJCJHandler._CurBJRZhandler.SetValue(showName, bjrzInfo); } else { BJCZSceneCtrl._Instance.DoubleClick(showName, bjrzInfo.itemGeo); } }); } geo.SetActive(true); } } /// /// 选中零件发生变化 /// /// private void OnPartInfoChanged(Dictionary obj) { foreach (var item in obj) { if (item.Key.Equals(GameManager.Instance._DataBJCJHandler._ShowPartsName.Value)) { WDebug.Log($"当前主题:{item.Key},零件ID:{item.Value.id}"); if (GameManager.Instance._DataBJCJHandler._CurState.Value == (int)EnumCtrl.BJCZState.BJRZ) { if (_curSelectStepBtn) { _curSelectStepBtn.Find("FrameImg").gameObject.SetActive(false); } Transform btnTran = _partParent.Find("itemContent/"+item.Value.id.ToString()); if (btnTran) { btnTran.Find("FrameImg").gameObject.SetActive(true); _curSelectStepBtn = btnTran; } } } } } } }