using System.Collections; using System.Collections.Generic; using UnityEngine; using GCGame.Table; using Games.LogicObj; public class ChildData{ /// /// 子女初始化数据 名称 模型ID /// public class ChildInitData { public int childLevel; public string childName; public int childFashionId; public long childGuid; public int childGender; public ChildInitData() { childLevel = -1; childName = ""; childFashionId = -1; childGuid = -1; childGender = -1; } public ChildInitData(int level, string name, int fashionId, long guid, int gender) { childLevel = level; childName = name; childFashionId = fashionId; childGuid = guid; childGender = gender; } } public ChildInitData CurCarryChildData = new ChildInitData(); //最外层红点显示 public bool _IsShowIconRedState = false; private static ChildData _Instance; public static ChildData Instance { get { return _Instance; } set { _Instance = value; } } private int _ChildCount = 0; public int ChildCount { get { return _ChildCount; } private set { _ChildCount = value; } } public Dictionary _ChildAdventureRecorDic; public static CNode GetChildByGuid(long guid) { if (ChildPacket == null) return null; for(int index = 0; index < ChildPacket.list.Count; index++) { if (ChildPacket.list[index].guid == guid) return ChildPacket.list[index]; } return null; } public static CNode GetChildByIndex(int index) { if (index == -1) return null; if (ChildPacket == null) return null; if (index > ChildPacket.list.Count - 1) return null; return ChildPacket.list[index]; } private static RetChildren _ChildPacket = null; public static RetChildren ChildPacket { get { return _ChildPacket; } set { _ChildPacket = value; } } /// /// 上线同步或者更新孩子信息或者主动请求时同步 /// /// public void RefreshChildData(RetChildren packet) { ChildPacket = packet; if(_ChildAdventureRecorDic != null) { for(int index = 0; index < ChildPacket.list.Count; index++) { if (_ChildAdventureRecorDic.ContainsKey(ChildPacket.list[index].guid)) ChildPacket.list[index].randomEvent.reserved = _ChildAdventureRecorDic[ChildPacket.list[index].guid]; } _ChildAdventureRecorDic.Clear(); _ChildAdventureRecorDic = null; } _ChildCount = packet.list.Count; if (ChildPanel.Instance) { ChildPanel.Instance._MenuItemContainerBase.ShowNoDataPanel(packet.list.Count <= 0); ChildPanel.Instance.RefreshChildData(ChildPacket); } if (CommonItem_Base.Instance) CommonItem_Base.Instance.Refresh(); } public Tab_CharModel GetCharModelTab(CNode _CurChildData) { if (_CurChildData == null) return null; var childLevelUpTab = TableManager.GetChildrenLevelUpByID(_CurChildData.basic.curLevel, 0); if (childLevelUpTab == null) { Debug.LogError("childLevelUpTab is null : " + _CurChildData.basic.curLevel); return null; } var childStateTypeTab = TableManager.GetChildrenStateTypeByID(childLevelUpTab.CurStateType, 0); if(childStateTypeTab == null) { Debug.LogError("childStateTypeTab is null : " + childLevelUpTab.CurStateType); return null; } var charModelTab = TableManager.GetCharModelByID(_CurChildData.basic.gender == 0 ? childStateTypeTab.BoyModelId : childStateTypeTab.GirlModelId, 0); return charModelTab; } public Tab_ChildrenStateType GetChildStateTypeTab(CNode _CurChildData) { var childLevelUpTab= TableManager.GetChildrenLevelUpByID(_CurChildData.basic.curLevel, 0); if(childLevelUpTab == null) { Debug.LogError("childLevelUpTab is null : " + _CurChildData.basic.curLevel); return null; } var childStateTypeTab = TableManager.GetChildrenStateTypeByID(childLevelUpTab.CurStateType, 0); if(childStateTypeTab == null) { Debug.LogError("childStateTypeTab is null : " + childLevelUpTab.CurStateType); return null; } return childStateTypeTab; } public void RefreshSingleChildData(SynOneChildren childData) { if(GetChildByGuid(childData.info.guid) != null) { for(int index = 0; index < ChildPacket.list.Count; index++) { if(ChildPacket.list[index].guid == childData.info.guid) { ChildPacket.list[index] = childData.info; break; } } }else { ChildPacket.list.Add(childData.info); } //刷新子面板 if (ChildInfoPanel.Instance && ChildInfoPanel.Instance.gameObject.activeInHierarchy) ChildInfoPanel.Instance.RefreshSingleChild(childData.info); if (ChildStudyPanel.Instance && ChildStudyPanel.Instance.gameObject.activeInHierarchy) ChildStudyPanel.Instance.RefreshSingleChild(childData.info); if (ChildRenicarNationPanel.Instance && ChildRenicarNationPanel.Instance.gameObject.activeInHierarchy) ChildRenicarNationPanel.Instance.RefreshSingleChild(childData.info); } public static Tab_ChildrenSkillParam GetSkillPatamTabByType(int skillType) { foreach(var tab in TableManager.GetChildrenSkillParam()) { if (tab.Value.Type == skillType) return tab.Value; } return null; } public static List _ChildFashionStateList = new List(); public void RefreshChildFashionStateList(RetChildFashion packet) { for (int index = 0; index < packet.CFList.Count; index++) { CFState state = new CFState(); state.childGuid = packet.CFList[index].childGuid; state.CFId = packet.CFList[index].CFId; state.COFList = new List(); for (int fIndex = 0; fIndex < packet.CFList[index].COFList.Count; fIndex++) { state.COFList.Add(packet.CFList[index].COFList[fIndex]); } RefreshChildFashionStateList(state); } if (ChildFashionPanel.Instance) ChildFashionPanel.Instance.RefreshFashionPanel(); } void RefreshChildFashionStateList(CFState state) { for(int index = 0; index < _ChildFashionStateList.Count; index++) { if(_ChildFashionStateList[index].childGuid == state.childGuid) { _ChildFashionStateList[index] = state; return; } } _ChildFashionStateList.Add(state); } public static CFState GetChildFashionStateByIndex(int index) { var childGuid = GetChildByIndex(index).guid; return GetChildFashionStateByGuid(childGuid); } public static CFState GetChildFashionStateByGuid(long guid) { if (_ChildFashionStateList == null || _ChildFashionStateList.Count < 1) return null; for(int index = 0; index < _ChildFashionStateList.Count; index++) { if (_ChildFashionStateList[index].childGuid == guid) return _ChildFashionStateList[index]; } return null; } public static int GetChildCurDressedFashionIdByIndex(int childIndex) { var childData = GetChildByIndex(childIndex); if (childData == null) { Debug.LogError("Child is null from GetChildCurPutOnFashionIdByIndex : " + childIndex); return -1; } if (_ChildFashionStateList == null || _ChildFashionStateList.Count < 1) return -1; for (int index = 0; index < _ChildFashionStateList.Count; index++) { if (_ChildFashionStateList[index].childGuid == childData.guid) return _ChildFashionStateList[index].CFId; } return -1; } public int GetChildCurPutOnFashionIdByGuid(long guid) { if (_ChildFashionStateList == null || _ChildFashionStateList.Count < 1) return -1; for (int index = 0; index < _ChildFashionStateList.Count; index++) { if (_ChildFashionStateList[index].childGuid == guid) return _ChildFashionStateList[index].CFId; } return -1; } //红点结构 public static List _ChildRedStateList = null; public void RefreshChildRedStateList(SyncChildrenShowState packet) { if(_ChildRedStateList == null) _ChildRedStateList = new List(); for (int index = 0; index < packet.list.Count; index++) { var childRedStateInfo = GetChildRedStateByGuid(packet.list[index].childGuid); if (childRedStateInfo == null) { _ChildRedStateList.Add(packet.list[index]); } else { for(int childIndex = 0; childIndex < _ChildRedStateList.Count; childIndex++) { if (_ChildRedStateList[childIndex].childGuid == packet.list[index].childGuid) { _ChildRedStateList[childIndex] = packet.list[index]; break; } } } } for (int index = 0; index < _ChildRedStateList.Count; index++) { if (_ChildRedStateList[index].redPointList.Count > 0) { _IsShowIconRedState = true; return; } } _IsShowIconRedState = false; } public static List GetChildRedStateByIndex(int index) { var childGuid = GetChildByIndex(index).guid; return GetChildRedStateByGuid(childGuid); } public static List GetChildRedStateByGuid(long guid) { if (_ChildRedStateList == null) return null; for(int index = 0; index < _ChildRedStateList.Count; index++) { if (_ChildRedStateList[index].childGuid == guid) return _ChildRedStateList[index].redPointList; } return null; } }