using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
using System.Collections.Generic; 
 | 
  
 | 
public class HeroCardCell : MonoBehaviour 
 | 
{ 
 | 
    [SerializeField] Button heroCardBtn; 
 | 
    [SerializeField] Image heroCardBG; 
 | 
    [SerializeField] Text lvText; 
 | 
    [SerializeField] Image countryImg; 
 | 
    [SerializeField] Image jobImg; 
 | 
    [SerializeField] UIHeroController heroModel; 
 | 
    [SerializeField] Image onStateImg; 
 | 
    [SerializeField] RedpointBehaviour redpoint; 
 | 
    [SerializeField] Image newImage;    //新标识和红点互斥 
 | 
    [SerializeField] Image trainStateImg; 
 | 
    [SerializeField] Text nameText; 
 | 
    [SerializeField] Image awakeImg; 
 | 
    [SerializeField] Text awakeLVText; 
 | 
    [SerializeField] List<Image> starImgList; 
 | 
  
 | 
    string guid; 
 | 
    public void Display(int index) 
 | 
    { 
 | 
        guid = HeroUIManager.Instance.heroSortList[index]; 
 | 
        var hero = HeroManager.Instance.GetHero(guid); 
 | 
        if (hero == null) 
 | 
        { 
 | 
            this.gameObject.SetActive(false); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        this.gameObject.SetActive(true); 
 | 
        heroCardBG.SetSprite("herocardbg" + hero.Quality); 
 | 
        lvText.text = Language.Get("L1094") + hero.heroLevel.ToString(); 
 | 
        var heroConfig = hero.heroConfig; 
 | 
        countryImg.SetSprite(HeroUIManager.Instance.GetCountryIconName(heroConfig.Country)); 
 | 
        jobImg.SetSprite(HeroUIManager.Instance.GetJobIconName(heroConfig.Class)); 
 | 
        heroModel.Create(heroConfig.SkinIDList[hero.SkinIndex], heroConfig.UIScale); 
 | 
        onStateImg.SetActive(hero.IsInTeamByTeamType(TeamType.Story)); 
 | 
  
 | 
        int teamPos = TeamManager.Instance.GetTeam(TeamType.Story).GetPosition(hero.itemHero.guid); 
 | 
        if (teamPos >= 0) 
 | 
        { 
 | 
            redpoint.redpointId = MainRedDot.HeroCardRedpoint * 10 + teamPos; 
 | 
            newImage.SetActive(false); 
 | 
        } 
 | 
        else 
 | 
        {  
 | 
            redpoint.redpointId = 0; 
 | 
            newImage.SetActive(HeroUIManager.Instance.newHeroIDList.Contains(hero.heroId)); 
 | 
        } 
 | 
  
 | 
        var funcState = HeroUIManager.Instance.GetFuncState(hero); 
 | 
        if (funcState > 0) 
 | 
        { 
 | 
            trainStateImg.SetActive(true); 
 | 
            trainStateImg.SetSprite("herofuncstate" + funcState); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            trainStateImg.SetActive(false); 
 | 
        } 
 | 
        nameText.text = hero.breakLevel == 0 ? heroConfig.Name : Language.Get("herocardbreaklv", heroConfig.Name, hero.breakLevel); 
 | 
        awakeImg.SetActive(hero.awakeLevel > 0); 
 | 
        awakeLVText.text = hero.awakeLevel.ToString(); 
 | 
  
 | 
        for (int i = 0; i < starImgList.Count; i++) 
 | 
        { 
 | 
            if (hero.heroStar == 0 && i == 0) 
 | 
            { 
 | 
                // 无星级 特殊处理 
 | 
                starImgList[i].SetActive(true); 
 | 
                starImgList[i].SetSprite("herostar" + hero.heroStar); 
 | 
            } 
 | 
            else if ((hero.heroStar - 1) % starImgList.Count >= i) 
 | 
            { 
 | 
                starImgList[i].SetActive(true); 
 | 
                starImgList[i].SetSprite("herostar" + (((hero.heroStar - 1) / starImgList.Count) + 1) * starImgList.Count); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                starImgList[i].SetActive(false); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        heroCardBtn.AddListener(() => 
 | 
        { 
 | 
            HeroUIManager.Instance.selectHeroGuid = guid; 
 | 
            UIManager.Instance.OpenWindow<HeroTrainWin>(); 
 | 
        }); 
 | 
    } 
 | 
} 
 |