using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
|
/// <summary>
|
/// 武将属性界面: functionOrder 用来传递武将背包索引
|
/// </summary>
|
public class HeroAllAttrWin : UIBase
|
{
|
[SerializeField] GameObject baseAttrGroup;
|
[SerializeField] GameObject fightAttrGroup;
|
[SerializeField] GameObject fightAntiAttrGroup;
|
[SerializeField] GameObject specialAttrGroup;
|
|
|
|
Dictionary<int, Button> attrBtns = new Dictionary<int, Button>();
|
|
protected override void InitComponent()
|
{
|
//找出所有子组件名字为attr的GameObject
|
Button[] attrComponents = baseAttrGroup.GetComponentsInChildren<Button>(true)
|
.Where(c => c.gameObject.name == "attr").ToArray();
|
|
var attrIDList = PlayerPropertyConfig.playerPropertyDict[PlayerPropertyConfig.baseType];
|
for (int i = 0; i < attrComponents.Length; i++)
|
{
|
if (i < attrIDList.Count)
|
{
|
attrComponents[i].SetActive(true);
|
attrBtns.Add(attrIDList[i], attrComponents[i]);
|
}
|
else
|
{
|
attrComponents[i].SetActive(false);
|
}
|
}
|
|
attrComponents = fightAttrGroup.GetComponentsInChildren<Button>(true)
|
.Where(c => c.gameObject.name == "attr").ToArray();
|
attrIDList = PlayerPropertyConfig.playerPropertyDict[PlayerPropertyConfig.fightType];
|
for (int i = 0; i < attrComponents.Length; i++)
|
{
|
if (i < attrIDList.Count)
|
{
|
attrComponents[i].SetActive(true);
|
attrBtns.Add(attrIDList[i], attrComponents[i]);
|
}
|
else
|
{
|
attrComponents[i].SetActive(false);
|
}
|
}
|
|
attrComponents = fightAntiAttrGroup.GetComponentsInChildren<Button>(true)
|
.Where(c => c.gameObject.name == "attr").ToArray();
|
attrIDList = PlayerPropertyConfig.playerPropertyDict[PlayerPropertyConfig.fightAntiType];
|
for (int i = 0; i < attrComponents.Length; i++)
|
{
|
if (i < attrIDList.Count)
|
{
|
attrComponents[i].SetActive(true);
|
attrBtns.Add(attrIDList[i], attrComponents[i]);
|
}
|
else
|
{
|
attrComponents[i].SetActive(false);
|
}
|
}
|
attrComponents = specialAttrGroup.GetComponentsInChildren<Button>(true)
|
.Where(c => c.gameObject.name == "attr").ToArray();
|
attrIDList = PlayerPropertyConfig.playerPropertyDict[PlayerPropertyConfig.specialType];
|
for (int i = 0; i < attrComponents.Length; i++)
|
{
|
if (i < attrIDList.Count)
|
{
|
attrComponents[i].SetActive(true);
|
attrBtns.Add(attrIDList[i], attrComponents[i]);
|
}
|
else
|
{
|
attrComponents[i].SetActive(false);
|
}
|
}
|
|
//设置回调
|
foreach (var kv in attrBtns)
|
{
|
int id = kv.Key;
|
kv.Value.AddListener(() =>
|
{
|
SmallTipWin.showText = PlayerPropertyConfig.Get(id).desc;
|
SmallTipWin.worldPos = CameraManager.uiCamera.ScreenToWorldPoint(Input.mousePosition);
|
UIManager.Instance.OpenWindow<SmallTipWin>();
|
});
|
}
|
}
|
|
|
protected override void OnPreOpen()
|
{
|
var item = PackManager.Instance.GetItemByIndex(PackType.Hero, functionOrder);
|
if (item == null)
|
return;
|
var hero = HeroManager.Instance.GetHero(item.guid);
|
if (hero == null)
|
return;
|
var dict = FightPowerManager.Instance.GetHeroTotalAttr(hero);
|
foreach (var kv in attrBtns)
|
{
|
//每个按钮下有两个Text:name 和 value
|
var id = kv.Key;
|
var button = kv.Value;
|
Text nameText = button.transform.Find("name").GetComponent<Text>();
|
Text valueText = button.transform.Find("value").GetComponent<Text>();
|
|
nameText.text = PlayerPropertyConfig.Get(id).ShowName;
|
var value = dict.TryGetValue(id, out long v) ? v : 0;
|
valueText.text = PlayerPropertyConfig.GetValueDescription(id, value);
|
}
|
}
|
|
|
}
|