Files
JJBB/Assets/Project/Script/GUI/Childs/FashionAttrBase.cs
2024-08-23 15:49:34 +08:00

94 lines
2.8 KiB
C#

using GCGame.Table;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class FashionAttrBase : MonoBehaviour {
private struct AttrItemStruct
{
public int _PropId;
public int _PropVal;
public AttrItemStruct(int propId, int val)
{
_PropId = propId;
_PropVal = val;
}
}
public static FashionAttrBase Instance;
private void Awake()
{
Instance = this;
}
private void OnDestroy()
{
Instance = null;
}
public GameObject _AttrItemPrefab;
public Transform _AttrItemParent;
private List<FashionAttrItemBase> _AttrItemList = new List<FashionAttrItemBase>();
private Tab_ChildrenFashion _ChildFashionTab = null;
public Text _CombatVal;
public Transform _Parent;
public void InitAttrPanel(int fashionId)
{
_ChildFashionTab = TableManager.GetChildrenFashionByID(fashionId, 0);
if (_ChildFashionTab == null)
{
Debug.LogError("childrenFashionTab is null : " + fashionId);
return;
}
//战力
_CombatVal.text = _ChildFashionTab.CombatVal + "";
//属性词条
if (gameObject.activeInHierarchy)
StartCoroutine(CreateAndInitAttrItem());
}
Dictionary<int, int> _PropValDic;
IEnumerator CreateAndInitAttrItem()
{
yield return null;
_PropValDic = new Dictionary<int, int>();
for(int index = 0; index < _ChildFashionTab.getPropIdCount(); index++)
{
if(_ChildFashionTab.GetPropIdbyIndex(index) != -1)
_PropValDic.Add(_ChildFashionTab.GetPropIdbyIndex(index), _ChildFashionTab.GetPropValbyIndex(index));
}
var lessCount = 0;
if (_AttrItemList == null)
lessCount = _PropValDic.Count;
else
lessCount = _PropValDic.Count - _AttrItemList.Count;
for (int index = 0; index < lessCount; index++)
{
var attrItem = GameObject.Instantiate(_AttrItemPrefab);
attrItem.transform.SetParent(_Parent);
attrItem.transform.localPosition = Vector3.zero;
attrItem.transform.localScale = Vector3.one;
attrItem.transform.localRotation = Quaternion.Euler(Vector3.zero);
var attrComponent = attrItem.GetComponent<FashionAttrItemBase>();
_AttrItemList.Add(attrComponent);
attrItem.gameObject.SetActive(false);
}
var itemIndex = 0;
foreach (var item in _PropValDic)
{
_AttrItemList[itemIndex++].InitAttrItem(item.Key, item.Value);
}
for(int index = _PropValDic.Count; index < _AttrItemList.Count; index++)
{
_AttrItemList[index].gameObject.SetActive(false);
}
yield break;
}
}