using System.Collections.Generic;
using Fort23.Core;
using Fort23.UTool;
using GameLogic.Bag;
using UnityEngine;
using UnityEngine.UI;
namespace Fort23.Mono
{
public static class HeroUITools
{
///
/// 更新对应职业的装备图标
/// 该方法调用后,可以把装备了的职业装备, 显示到指定的UI(eqsUIObj)上
///
/// 职业类型
/// 装备的icon
public static async void UpdateZyEqIcon(int zy, List eqsUIObj, int space = 12)
{
foreach (GameObject eqGo in eqsUIObj)
{
WidgetItem eqItem = await UIManager.Instance.
CreateGComponentForObject(eqGo,
null, root:eqGo.transform.parent.GetComponent());
// LogTool.Log(eqGo + "设置");
eqItem.SetEmpty();
}
if (PlayerManager.Instance.eqController.zyEqDic.TryGetValue(zy, out Dictionary> bwDic))
{
foreach (KeyValuePair> keyValuePair in bwDic)
{
//遍历每个部位下的全部装备
foreach (ItemInfo eqInfo in keyValuePair.Value)
{
if (eqInfo.eqInfo.isEquip)
{
//这里是取部位,eqsUIObj里面的部位,是有序排列的
GameObject eqGo = eqsUIObj[keyValuePair.Key - 1] as GameObject;
WidgetItem eqItem = await UIManager.Instance.
CreateGComponentForObject(eqGo, null, root:eqGo.transform.parent.GetComponent());
eqItem.InitWidget(eqInfo);
}
}
}
}
SimpleLayout.Layout(eqsUIObj, LayoutType.Horizontal, space);
}
public static string GetEquipmentIconName(ItemInfo eqItem)
{
int q = 1;
if (eqItem.eqInfo.quality > 3 && eqItem.eqInfo.quality <= 4)
{
q = 2;
}
else if (eqItem.eqInfo.quality > 4)
{
q = 3;
}
string eqIcon = "icon_eq_" +
eqItem.eqInfo.basicEquipConfig.profession + "_" +
eqItem.eqInfo.basicEquipConfig.Type + "_" +
q;
// switch (eqItem.eqInfo.basicEquipConfig.profession)
return eqIcon;
}
///
/// 根据星级,显示不同的数量的星星和样子
///
///
///
public static void SetStarShow(List stars, int starGrade)
{
// 最大星级展示个数(6星,只显示一颗星星,换颜色)
int maxShowStar = 5;
// 计算 当前星级 应该用什么星星的表现
int group = (starGrade - 1) / maxShowStar;
int i = 1;
int showCount = (starGrade - 1) % maxShowStar + 1;
foreach (GameObject star in stars)
{
SetStarImg(group, star);
// 根据星级显示星星
if (showCount >= i)
{
star.SetActive(true);
}
else
{
star.SetActive(false);
}
i++;
}
SimpleLayout.Layout(stars, LayoutType.Horizontal);
}
private static void SetStarImg(int group, GameObject starObj)
{
MyImage image = starObj.GetComponent();
// 执行对应的逻辑 (0)GradeIcon_Star_s_Yellow (1)GradeIcon_Star_s_Premium
switch (group)
{
case 0: // n = 1~5
image.icon_name = "dec_star";
break;
case 1: // n = 6~10
image.icon_name = "dec_star_2";
break;
default: // 其他情况
LogTool.Error("超出设计表现");
//image.icon_name = "dec_star";
break;
}
}
///
/// 修改指定 GameObject 和其所有子对象的 Layer
///
/// 目标 GameObject
/// 新的 Layer 值
public static void ChangeLayerRecursively(GameObject obj, int newLayer)
{
if (obj == null || obj.layer == newLayer) return;
// 修改当前对象的 Layer
obj.layer = newLayer;
// 遍历所有子对象,递归修改
foreach (Transform child in obj.transform)
{
ChangeLayerRecursively(child.gameObject, newLayer);
}
}
}
}