using GCGame.Table; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ChildFashionPanel : MonoBehaviour, ChildRefreshInterface{ public static ChildFashionPanel Instance; void OnEnable() { Instance = this; RefreshChildData(); } void OnDisable() { Instance = null; } public ChildSwitchBtnPanel _SwitchPanel; public UIContainerBase _ItemContainer; public ChildModelAndEffectCtr _ModelEffectCtr; public FashionAttrBase _FashionAttrPanel; public Text _ChildName; public void RefreshChildData(RetChildren childData = null) { ShowChildByIndex(0); InitSwitchPanel(); } void InitSwitchPanel() { _SwitchPanel.InitSwitchPanel(ChildData.ChildPacket == null ? 0 : ChildData.ChildPacket.list.Count); } private int _CurSelectChildIndex = 0; public void ShowChildByIndex(int index) { if(ChildData.GetChildByIndex(_CurSelectChildIndex) == null) { Debug.LogError("Child is null"); if (ChildPanel.Instance) ChildPanel.Instance._MenuItemContainerBase.ShowNoDataPanel(true); return; } ChildPanel.PlayeChildSoundByIndex(_CurSelectChildIndex); _CurSelectChildIndex = index; _ChildName.text = ChildData.GetChildByIndex(_CurSelectChildIndex).basic.name; SetCurSelectChild(); initShowMark(); InitItemContainer(); InitChildModel(); } //选中当前子女 void SetCurSelectChild() { SelectCurChildren req = new SelectCurChildren(); req.childrenGuid = ChildData.GetChildByIndex(_CurSelectChildIndex).guid; req.SendMsg(); } public void InitItemContainer() { //先隐藏属性面板,在点击时装的时候再次打开 _FashionAttrPanel.gameObject.SetActive(false); var childFashionTab = TableManager.GetChildrenFashion(); List tabList = new List(); foreach(var item in childFashionTab) { if (!tabList.Contains(item.Key)) tabList.Add(item.Key); } _ItemContainer.InitContentItem(tabList); //刷新当前拥有时装的状态 _ItemContainer.SetShowItemFinishCallFun(RefreshItemContainerItemState); } //显示当前穿戴的模型 void InitChildModel() { _ModelEffectCtr.ShowChildFashion(_CurSelectChildIndex, _CurSelectFashionItemId); } private int _CurSelectFashionItemId = -1; public void OnChildFashionItem(int fashionItemId) { if (_CurSelectFashionItemId == fashionItemId) return; if (ChildData.GetChildByIndex(_CurSelectChildIndex).basic.embryoEndtime > GlobalData.ServerAnsiTime) return; _CurSelectFashionItemId = fashionItemId; _ModelEffectCtr.ShowChildFashion(_CurSelectChildIndex, _CurSelectFashionItemId); //初始化属性面板 InitAttrPanel(); //设置选中状态 initShowMark(); //初始化时装 InitChildModel(); } public void RefreshFashionPanel() { ShowChildByIndex(_CurSelectChildIndex); RefreshItemContainerItemState(); } //刷新按钮状态 public void RefreshItemContainerItemState() { var childData = ChildData.GetChildByIndex(_CurSelectChildIndex); _ItemContainer.ForeachActiveItem((item) => { if (ChildData.GetChildFashionStateByIndex(_CurSelectChildIndex) == null || ChildData.GetChildFashionStateByIndex(_CurSelectChildIndex).COFList == null) { //1.背包有对应道具 可以激活 var _ChildFashionTab = TableManager.GetChildrenFashionByID(item._CurChildFashionTabId, 0); var backPack = GameManager.gameManager.PlayerDataPool.BackPack; var itemcount = backPack.GetItemCountByDataId(_ChildFashionTab.ItemId); //未获得 item.InitBtnState(itemcount <= 0 ? 0 : 4); } else { if (item._CurChildFashionTabId == ChildData.GetChildCurDressedFashionIdByIndex(_CurSelectChildIndex)) { item.InitBtnState(2); //已穿戴 item.OnItemClick(); } else if (ChildData.GetChildFashionStateByIndex(_CurSelectChildIndex).COFList.Contains(item._CurChildFashionTabId)) { item.InitBtnState(1); //拥有 未穿戴 } else { //1.背包有对应道具 可以激活 var _ChildFashionTab = TableManager.GetChildrenFashionByID(item._CurChildFashionTabId, 0); var backPack = GameManager.gameManager.PlayerDataPool.BackPack; var itemcount = backPack.GetItemCountByDataId(_ChildFashionTab.ItemId); //未获得 item.InitBtnState(itemcount <= 0 ? 0 : 4); } } }); } void initShowMark() { //当前未选中时装就隐藏全部Mark _ItemContainer.ForeachActiveItem((item) => { item.ShowMark(_CurSelectFashionItemId == -1 ? false : _CurSelectFashionItemId == item._CurChildFashionTabId); }); } void InitAttrPanel() { if(_CurSelectFashionItemId == -1) { _FashionAttrPanel.gameObject.SetActive(false); return; } _FashionAttrPanel.gameObject.SetActive(true); _FashionAttrPanel.InitAttrPanel(_CurSelectFashionItemId); } }