using System;  
 | 
using System.Collections.Generic;  
 | 
using System.Linq;  
 | 
using Cysharp.Threading.Tasks;  
 | 
using UnityEngine;  
 | 
using UnityEngine.UI;  
 | 
  
 | 
//装备TIP界面  
 | 
public class EquipTipWin : UIBase  
 | 
{  
 | 
    [SerializeField] Image equipImage;  
 | 
    [SerializeField] Text itemName;  
 | 
    [SerializeField] OutlineEx itemNameOutline;  
 | 
    [SerializeField] Text qualityName;  
 | 
    [SerializeField] OutlineEx qualityNameOutline;  
 | 
    [SerializeField] Text placeName;  
 | 
    [SerializeField] Text lvText;  
 | 
    [SerializeField] Image bgFlower;    //背景花纹变色  
 | 
    [SerializeField] List<Text> baseAttrNames;  
 | 
    [SerializeField] List<Text> baseAttrValues;  
 | 
    [SerializeField] GameObject fightAttrGameObj;  
 | 
    [SerializeField] List<GameObject> fightAttrLine;  
 | 
    [SerializeField] List<Text> fightAttrNames;  
 | 
    [SerializeField] List<Text> fightAttrValues;  
 | 
  
 | 
    [SerializeField] UIEffectPlayer uieffect;  
 | 
    [SerializeField] RectTransform bgRect;  
 | 
  
 | 
    ItemModel equip;  
 | 
    ItemConfig customEquipItemConfig;  
 | 
    AppointItemConfig customEquipAppointItemConfig;  
 | 
    protected override void OnPreOpen()  
 | 
    {  
 | 
        bool isShowCustomEquip = ItemTipUtility.isShowCustomEquip;  
 | 
        if (isShowCustomEquip)  
 | 
        {  
 | 
            int customEquipItemId = ItemTipUtility.customEquipItemId;  
 | 
            int customEquipAppointItemId = ItemTipUtility.customEquipAppointItemId;  
 | 
            if (!ItemConfig.HasKey(customEquipItemId))  
 | 
                return;  
 | 
            if (!AppointItemConfig.HasKey(customEquipAppointItemId))  
 | 
                return;  
 | 
            customEquipItemConfig = ItemConfig.Get(customEquipItemId);  
 | 
            customEquipAppointItemConfig = AppointItemConfig.Get(customEquipAppointItemId);  
 | 
            Display(customEquipItemConfig, customEquipAppointItemConfig);  
 | 
        }  
 | 
        else  
 | 
        {  
 | 
            equip = PackManager.Instance.GetItemByGuid(ItemTipUtility.mainTipData.guid);  
 | 
            Display(equip);  
 | 
        }  
 | 
    }  
 | 
  
 | 
    protected override void OnOpen()  
 | 
    {  
 | 
        //先缩小,这样不会因为间隔帧产生明显的闪烁  
 | 
        uieffect.transform.localScale = Vector3.zero;  
 | 
  
 | 
        bool isShowCustomEquip = ItemTipUtility.isShowCustomEquip;  
 | 
        if (isShowCustomEquip)  
 | 
        {  
 | 
            RefreshEffect(customEquipItemConfig).Forget();  
 | 
        }  
 | 
        else  
 | 
        {  
 | 
            //特效显示依赖rect的排版,放在下一帧  
 | 
            RefreshEffect(equip).Forget();  
 | 
        }  
 | 
  
 | 
    }  
 | 
  
 | 
    protected override void OnPreClose()  
 | 
    {  
 | 
        equip = null;  
 | 
    }  
 | 
  
 | 
    public void Display(ItemModel equip)  
 | 
    {  
 | 
  
 | 
        equipImage.SetOrgSprite(equip.config.IconKey);  
 | 
        itemName.text = UIHelper.AppendColor(equip.config.ItemColor, equip.config.ItemName, true, 1);  
 | 
        itemNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(equip.config.ItemColor);  
 | 
        qualityName.text = UIHelper.GetQualityNameWithColor(equip.config.ItemColor, Language.Get("equipQualityFormat"));  
 | 
        qualityNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(equip.config.ItemColor);  
 | 
        placeName.text = EquipModel.Instance.GetEquipPlaceName(equip.config.EquipPlace);  
 | 
        lvText.text = Language.Get("EquipExchangeWin7", EquipModel.Instance.GetEquipLV(equip));  
 | 
        bgFlower.color = UIHelper.GetUIColor(equip.config.ItemColor);  
 | 
  
 | 
  
 | 
        var baseAttrs = EquipModel.Instance.GetEquipBaseAttrs(equip);  
 | 
        var baseValues = EquipModel.Instance.GetEquipBaseValues(equip);  
 | 
        var fightAttrs = EquipModel.Instance.GetEquipFightAttrs(equip);  
 | 
        var fightValues = EquipModel.Instance.GetEquipFightValues(equip);  
 | 
  
 | 
        for (var i = 0; i < baseAttrNames.Count; i++)  
 | 
        {  
 | 
            if (i >= baseAttrs.Count)  
 | 
            {  
 | 
                baseAttrNames[i].text = "";  
 | 
                baseAttrValues[i].text = "";  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                baseAttrNames[i].text = PlayerPropertyConfig.Get(baseAttrs[i]).Name;  
 | 
                baseAttrValues[i].text = PlayerPropertyConfig.GetValueDescription(baseAttrs[i], baseValues[i]);  
 | 
            }  
 | 
        }  
 | 
  
 | 
        if (fightAttrs.IsNullOrEmpty())  
 | 
        {  
 | 
            fightAttrGameObj.SetActive(false);  
 | 
        }  
 | 
        else  
 | 
        {  
 | 
            fightAttrGameObj.SetActive(true);  
 | 
            for (var i = 0; i < fightAttrNames.Count; i++)  
 | 
            {  
 | 
                if (i >= fightAttrs.Count)  
 | 
                {  
 | 
                    fightAttrNames[i].SetActive(false);  
 | 
                }  
 | 
                else  
 | 
                {  
 | 
                    fightAttrNames[i].SetActive(true);  
 | 
                    fightAttrNames[i].text = PlayerPropertyConfig.Get(fightAttrs[i]).Name;  
 | 
                    fightAttrValues[i].text = PlayerPropertyConfig.GetValueDescription(fightAttrs[i], fightValues[i]);  
 | 
                }  
 | 
            }  
 | 
        }  
 | 
  
 | 
    }  
 | 
  
 | 
    public void Display(ItemConfig itemConfig, AppointItemConfig appointItemConfig)  
 | 
    {  
 | 
  
 | 
        equipImage.SetOrgSprite(itemConfig.IconKey);  
 | 
        itemName.text = UIHelper.AppendColor(itemConfig.ItemColor, itemConfig.ItemName, true, 1);  
 | 
        itemNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(itemConfig.ItemColor);  
 | 
        qualityName.text = UIHelper.GetQualityNameWithColor(itemConfig.ItemColor, Language.Get("equipQualityFormat"));  
 | 
        qualityNameOutline.OutlineColor = UIHelper.GetUIOutlineColor(itemConfig.ItemColor);  
 | 
        placeName.text = EquipModel.Instance.GetEquipPlaceName(itemConfig.EquipPlace);  
 | 
        lvText.text = Language.Get("EquipExchangeWin7", appointItemConfig.ItemLV);  
 | 
        bgFlower.color = UIHelper.GetUIColor(itemConfig.ItemColor);  
 | 
  
 | 
  
 | 
        var baseAttrs = appointItemConfig.BaseAttrID.ToList();  
 | 
        var baseValues = appointItemConfig.BaseAttrValue.ToList();  
 | 
        var fightAttrs = appointItemConfig.LegendAttrID.ToList();  
 | 
        var fightValues = appointItemConfig.LegendAttrValue.ToList();  
 | 
  
 | 
        for (var i = 0; i < baseAttrNames.Count; i++)  
 | 
        {  
 | 
            if (i >= baseAttrs.Count)  
 | 
            {  
 | 
                baseAttrNames[i].text = "";  
 | 
                baseAttrValues[i].text = "";  
 | 
            }  
 | 
            else  
 | 
            {  
 | 
                baseAttrNames[i].text = PlayerPropertyConfig.Get(baseAttrs[i]).Name;  
 | 
                baseAttrValues[i].text = PlayerPropertyConfig.GetValueDescription(baseAttrs[i], baseValues[i]);  
 | 
            }  
 | 
        }  
 | 
  
 | 
        if (fightAttrs.IsNullOrEmpty())  
 | 
        {  
 | 
            fightAttrGameObj.SetActive(false);  
 | 
        }  
 | 
        else  
 | 
        {  
 | 
            fightAttrGameObj.SetActive(true);  
 | 
            for (var i = 0; i < fightAttrNames.Count; i++)  
 | 
            {  
 | 
                if (i >= fightAttrs.Count)  
 | 
                {  
 | 
                    fightAttrNames[i].SetActive(false);  
 | 
                }  
 | 
                else  
 | 
                {  
 | 
                    fightAttrNames[i].SetActive(true);  
 | 
                    fightAttrNames[i].text = PlayerPropertyConfig.Get(fightAttrs[i]).Name;  
 | 
                    fightAttrValues[i].text = PlayerPropertyConfig.GetValueDescription(fightAttrs[i], fightValues[i]);  
 | 
                }  
 | 
            }  
 | 
        }  
 | 
  
 | 
    }  
 | 
    //延迟处理特效大小  
 | 
    async UniTask RefreshEffect(ItemModel equip)  
 | 
    {  
 | 
        await UniTask.DelayFrame(3);  
 | 
        int effectID = EquipModel.Instance.equipUIEffects[Math.Min(equip.config.ItemColor, EquipModel.Instance.equipUIEffects.Length) - 1];  
 | 
        if (effectID == 0)  
 | 
        {  
 | 
            uieffect.Stop();  
 | 
        }  
 | 
        else  
 | 
        {  
 | 
            uieffect.effectId = effectID;  
 | 
            //计算高度缩放比例 特效显示依赖rect的排版  
 | 
            uieffect.transform.localScale = new Vector3(0.98f, bgRect.rect.height / uieffect.GetComponent<RectTransform>().rect.height, 1);  
 | 
            uieffect.Play();  
 | 
        }  
 | 
    }  
 | 
  
 | 
    //延迟处理特效大小  
 | 
    async UniTask RefreshEffect(ItemConfig itemConfig)  
 | 
    {  
 | 
        await UniTask.DelayFrame(3);  
 | 
        int effectID = EquipModel.Instance.equipUIEffects[Math.Min(itemConfig.ItemColor, EquipModel.Instance.equipUIEffects.Length) - 1];  
 | 
        if (effectID == 0)  
 | 
        {  
 | 
            uieffect.Stop();  
 | 
        }  
 | 
        else  
 | 
        {  
 | 
            uieffect.effectId = effectID;  
 | 
            //计算高度缩放比例 特效显示依赖rect的排版  
 | 
            uieffect.transform.localScale = new Vector3(0.98f, bgRect.rect.height / uieffect.GetComponent<RectTransform>().rect.height, 1);  
 | 
            uieffect.Play();  
 | 
        }  
 | 
    }  
 | 
  
 | 
}  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 |