Files
JJBB/Assets/Project/Script/GUI/Childs/ChildFashionPanel.cs

178 lines
5.7 KiB
C#
Raw Permalink Normal View History

2024-08-23 15:49:34 +08:00
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<int> tabList = new List<int>();
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<ChildFashionItemBase>((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<ChildFashionItemBase>((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);
}
}