|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
public class BattleDetailHeroInfoItem : MonoBehaviour
|
{
|
[SerializeField] ImageEx imgHeadBg;
|
[SerializeField] ImageEx imgHead;
|
[SerializeField] TextEx txtLV;
|
[SerializeField] ImageEx imgCountry;
|
[SerializeField] List<Image> starImgList;
|
[SerializeField] ImageEx imgMask;
|
[SerializeField] TextEx txtHeroName;
|
[SerializeField] ImageEx imgMVP;
|
|
[SerializeField] ImageEx imgAtkHurt;
|
[SerializeField] TextEx txtAtkHurt;
|
|
[SerializeField] ImageEx imgDefHurt;
|
[SerializeField] TextEx txtDefHurt;
|
|
[SerializeField] ImageEx imgCureHP;
|
[SerializeField] TextEx txtCureHP;
|
|
public void Display(BattleDetailHeroInfoItemData data)
|
{
|
if (data == null || data.info == null)
|
return;
|
BattleDetailHeroInfo info = data.info;
|
|
int heroID = info.HeroID;
|
if (!HeroConfig.HasKey(heroID))
|
return;
|
HeroConfig heroConfig = HeroConfig.Get(heroID);
|
|
|
int skinID = info.Skin;
|
if (!HeroSkinConfig.HasKey(skinID))
|
return;
|
HeroSkinConfig skinConfig = HeroSkinConfig.Get(skinID);
|
|
bool isDead = info.Dead == 1;
|
imgMask.SetActive(isDead);
|
imgMVP.SetActive(data.index == data.mvpIndex);
|
|
imgHeadBg.SetSprite("heroheadBG" + heroConfig.Quality);
|
|
var sprite = UILoader.LoadSprite("HeroHead", skinConfig.SquareIcon);
|
if (sprite == null)
|
{
|
imgHead.SetSprite("herohead_default");
|
}
|
else
|
{
|
imgHead.overrideSprite = sprite;
|
}
|
|
imgCountry.SetSprite(HeroUIManager.Instance.GetCountryIconName(heroConfig.Country));
|
txtHeroName.text = heroConfig.Name;
|
txtLV.text = StringUtility.Concat(Language.Get("L1094"), info.LV.ToString());
|
DisplayStars(info.Star);
|
|
DisplaySlider(imgAtkHurt, txtAtkHurt, info.AtkHurt, data.maxAtk);
|
DisplaySlider(imgDefHurt, txtDefHurt, info.DefHurt, data.maxDef);
|
DisplaySlider(imgCureHP, txtCureHP, info.CureHP, data.maxCure);
|
}
|
|
|
|
private void DisplaySlider(ImageEx imgSlider, TextEx txtSlider, ulong value, ulong maxValue)
|
{
|
if (maxValue > 0)
|
{
|
ulong safeValue = value > maxValue ? maxValue : value;
|
double ratioDouble = (double)safeValue / maxValue;
|
imgSlider.fillAmount = (float)ratioDouble;
|
}
|
else
|
{
|
imgSlider.fillAmount = 0.0f;
|
}
|
txtSlider.text = UIHelper.ReplaceLargeNum(value);
|
}
|
|
void DisplayStars(int starCnt)
|
{
|
for (int i = 0; i < starImgList.Count; i++)
|
{
|
if (starCnt == 0 && i == 0)
|
{
|
// 无星级 特殊处理
|
starImgList[i].SetActive(true);
|
starImgList[i].SetSprite("herostar" + starCnt);
|
}
|
else if ((starCnt - 1) % starImgList.Count >= i)
|
{
|
starImgList[i].SetActive(true);
|
starImgList[i].SetSprite("herostar" + (((starCnt - 1) / starImgList.Count) + 1) * starImgList.Count);
|
}
|
else
|
{
|
starImgList[i].SetActive(false);
|
}
|
}
|
}
|
}
|