using System.Collections.Generic; 
 | 
using System.Linq; 
 | 
using UnityEngine; 
 | 
using UnityEngine.UI; 
 | 
  
 | 
  
 | 
/// <summary> 
 | 
/// 武将突破界面 
 | 
/// </summary> 
 | 
public class HeroLVBreakWin : UIBase 
 | 
{ 
 | 
  
 | 
    [SerializeField] Text breakLVText; 
 | 
    [SerializeField] Text nextBreakLVText; 
 | 
    [SerializeField] Text lvText; 
 | 
    [SerializeField] Text nextLVText; 
 | 
    [SerializeField] Text[] attrPerTextArr; 
 | 
    [SerializeField] Text[] nextAttrPerTextArr; 
 | 
    [SerializeField] Text potentialText; 
 | 
    [SerializeField] Image moneyIcon; 
 | 
    [SerializeField] Text moneyText; 
 | 
    [SerializeField] Button breakBtn; 
 | 
    [SerializeField] ScrollRect scrollRect; 
 | 
  
 | 
    string guid; 
 | 
    HeroInfo hero; 
 | 
  
 | 
  
 | 
    protected override void InitComponent() 
 | 
    { 
 | 
        breakBtn.AddListener(BreakLV); 
 | 
    } 
 | 
  
 | 
  
 | 
    protected override void OnPreOpen() 
 | 
    { 
 | 
        guid = HeroUIManager.Instance.selectHeroGuid; 
 | 
        hero = HeroManager.Instance.GetHero(guid); 
 | 
        Refresh(); 
 | 
        scrollRect.verticalNormalizedPosition = 1; 
 | 
    } 
 | 
  
 | 
    protected override void OnPreClose() 
 | 
    { 
 | 
    } 
 | 
  
 | 
  
 | 
    public override void Refresh() 
 | 
    { 
 | 
        breakLVText.text = "+" + hero.breakLevel; 
 | 
        nextBreakLVText.text = "+" + (hero.breakLevel + 1); 
 | 
        lvText.text = hero.qualityBreakConfig.LVMax.ToString(); 
 | 
  
 | 
        var nextBreakLVConfig = HeroQualityBreakConfig.GetQualityBreakConfig(hero.Quality, hero.breakLevel + 1); 
 | 
        nextLVText.text = nextBreakLVConfig.LVMax.ToString(); 
 | 
  
 | 
        for (int i = 0; i < attrPerTextArr.Length; i++) 
 | 
        { 
 | 
            attrPerTextArr[i].text = PlayerPropertyConfig.GetValueDescription(PlayerPropertyConfig.basePerAttrs[i], 
 | 
            hero.qualityConfig.BreakLVAddPer * hero.breakLevel); 
 | 
        } 
 | 
        for (int i = 0; i < nextAttrPerTextArr.Length; i++) 
 | 
        { 
 | 
            nextAttrPerTextArr[i].text = PlayerPropertyConfig.GetValueDescription(PlayerPropertyConfig.basePerAttrs[i], 
 | 
            hero.qualityConfig.BreakLVAddPer * (hero.breakLevel + 1)); 
 | 
        } 
 | 
  
 | 
        moneyIcon.SetOrgSprite(ItemConfig.Get(hero.qualityBreakConfig.UPCostItem[0]).IconKey); 
 | 
        moneyText.text = UIHelper.ShowUseItem(PackType.Item, hero.qualityBreakConfig.UPCostItem[0], hero.qualityBreakConfig.UPCostItem[1]); 
 | 
  
 | 
        var nextQualityBreakConfig = HeroBreakConfig.GetHeroBreakConfig(hero.heroId, hero.breakLevel + 1); 
 | 
        if (nextQualityBreakConfig == null) 
 | 
        { 
 | 
            potentialText.text = ""; 
 | 
            return; 
 | 
        } 
 | 
        List<string> attrStrArr = new List<string>(); 
 | 
        for (int i = 0; i < nextQualityBreakConfig.AttrIDList.Length; i++) 
 | 
        { 
 | 
            if (nextQualityBreakConfig.AttrIDList[i] == 0) 
 | 
            { 
 | 
                continue; 
 | 
            } 
 | 
            attrStrArr.Add((string.IsNullOrEmpty(nextQualityBreakConfig.SkillIName) ? string.Empty : Language.Get("L1039", nextQualityBreakConfig.SkillIName)) + 
 | 
            PlayerPropertyConfig.GetFullDescription(nextQualityBreakConfig.AttrIDList[i], nextQualityBreakConfig.AttrValueList[i])); 
 | 
        } 
 | 
        if (nextQualityBreakConfig.SkillID != 0) 
 | 
        { 
 | 
            var skill = SkillConfig.Get(nextQualityBreakConfig.SkillID); 
 | 
            if (skill != null) 
 | 
            { 
 | 
                attrStrArr.Add(Language.Get("L1039", skill.SkillName) + skill.Description); 
 | 
            } 
 | 
            else 
 | 
            {  
 | 
                Debug.LogError("未配置技能" + nextQualityBreakConfig.SkillID); 
 | 
            } 
 | 
        } 
 | 
        potentialText.text = Language.Get("L1100", Language.Get("herocard56"), string.Join(Language.Get("L1112"), attrStrArr)); 
 | 
    } 
 | 
  
 | 
    void BreakLV() 
 | 
    { 
 | 
        if (ItemLogicUtility.CheckItemCount(PackType.Item, hero.qualityBreakConfig.UPCostItem[0], hero.qualityBreakConfig.UPCostItem[1], 2)) 
 | 
        { 
 | 
            var pack = new CB232_tagCSHeroBreak(); 
 | 
            pack.ItemIndex = (ushort)hero.itemHero.gridIndex; 
 | 
            GameNetSystem.Instance.SendInfo(pack); 
 | 
            HeroUIManager.Instance.lastFightPower = new KeyValuePair<string, long>(hero.itemHero.guid, hero.CalculateFightPower(false)); 
 | 
            CloseWindow(); 
 | 
            //设置个等待回复的标识 显示成功界面 
 | 
            HeroUIManager.Instance.waitResponse = new WaitHeroFuncResponse() 
 | 
            { 
 | 
                guid = guid, 
 | 
                type = HeroFuncType.Break, 
 | 
                time = Time.time 
 | 
            }; 
 | 
        } 
 | 
    } 
 | 
} 
 |