| 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>(); | 
|         }); | 
|     } | 
| } |