hch
2026-03-31 862aeae51fdc2c8abd8753ac8d72c2ef2f07c03e
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
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
 
public class GubaoCell : MonoBehaviour
{
    [SerializeField] Button gbBtn;
    [SerializeField] ImageEx gbImg;
    [SerializeField] Image gbBGImg;
    [SerializeField] UIEffectPlayer gbBGEffect;
    [SerializeField] UIEffectPlayer gbEffect;
    [SerializeField] Image canActiveImg;
    [SerializeField] Text nameText;
    [SerializeField] Text lvText;
    [SerializeField] Transform starRect;
    [SerializeField] Image[] starImgs;
    [SerializeField] Transform processRect;
    [SerializeField] Image processImg;
    [SerializeField] Text processText;
    [SerializeField] Image fullProcessImg;
    [SerializeField] Image redImg;
 
 
    public void Display(int quality, int index)
    {
        var gubaoID = GubaoManager.Instance.gubaoCollectDict[quality][index];
        DisplayByGBID(gubaoID);
        redImg.SetActive(GubaoManager.Instance.IsRedTip(gubaoID));
    }
 
    public void Display(int gubaoID)
    {
        DisplayByGBID(gubaoID);
 
        var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID);
        int star = 0;
        if (gbData != null)
        {
            star = gbData.GubaoStar;
        }
        redImg.SetActive(star < 5 && GubaoManager.Instance.CanStarUpGubao(gubaoID));
    }
 
    void DisplayByGBID(int gubaoID)
    {
        gbBtn.AddListener(() =>
        {
            UIManager.Instance.OpenWindow<GubaoDetailWin>(gubaoID);
        });
 
        var config = GubaoConfig.Get(gubaoID);
        if (config == null)
        {
            Debug.LogError($"找不到古宝ID: {gubaoID}");
            return;
        }
        int quality = config.GubaoQuality;
        gbImg.SetOrgSprite(config.Icon, "gbicon");
        gbImg.SetNativeSize();
        gbBGImg.SetSprite($"GubaoBG{quality}");
        
        var gbData = GubaoManager.Instance.TryGetGubaoInfo(gubaoID);
        int lv = 0;
        int star = 0;
        if (gbData != null)
        {
            lv = gbData.GubaoLV;
            star = gbData.GubaoStar;
            gbImg.gray = false;
            canActiveImg.SetActive(false);
            starRect.SetActive(true);
            for (int i = 0; i < starImgs.Length; i++)
            {
                if (i < star)
                {
                    starImgs[i].SetActive(true);
                    //循环不同图
                    int starIndex = star / starImgs.Length * starImgs.Length + i + 1;
                    if (starIndex > star)
                    {
                        starIndex -= starImgs.Length;
                    }
                    starImgs[i].SetSprite($"GubaoStar{starIndex}");
                }
                else
                {
                    starImgs[i].SetActive(false);
                }
            }
            processRect.SetActive(false);
        }
        else
        {
            gbImg.gray = true;
            canActiveImg.SetActive(GubaoManager.Instance.CanActiveGubao(gubaoID));
            starRect.SetActive(false);
            processRect.SetActive(true);
            var cnt = VirtualPackManager.Instance.GetNoPackItemCount(config.UnlockItemID);
            float value = cnt*1.0f / config.UnlockItemCnt;
            processImg.fillAmount = value;
            fullProcessImg.SetActive(value >= 1);
            processText.text = $"{cnt}/{config.UnlockItemCnt}";
        }
        gbBGEffect.PlayByArrIndex(quality - 2);
        if (GubaoManager.Instance.IsActive(gubaoID))
        {
            gbEffect.PlayByArrIndex(quality - 2);
        }
        else
        {
            gbEffect.Stop();
        }
        nameText.text = config.Name;
        nameText.color = UIHelper.GetFuncQualityColor(quality);
        lvText.text = lv == 0 ? "" : Language.Get("L1113", lv);
        redImg.SetActive(GubaoManager.Instance.IsRedTip(gubaoID));
    }
}