yyl
22 小时以前 4b5b31a23a74c1559460643836d70778d7d49931
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections.Generic;
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;
    protected override void OnPreOpen()
    {
        equip = PackManager.Instance.GetItemByGuid(ItemTipUtility.mainTipData.guid);
        Display(equip);
    }
 
    protected override void OnOpen()
    {
        //先缩小,这样不会因为间隔帧产生明显的闪烁
        uieffect.transform.localScale = Vector3.zero;
        //特效显示依赖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]);
                }
            }
        }
 
    }
 
    //延迟处理特效大小
    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();
        }
    }
 
}