hch
昨天 f88d20f956b355588cf987a6534c39e016b1d8e8
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
using System;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
 
// 鉴宝结果
public class GubaoCallCell : MonoBehaviour
{
    [SerializeField] Image canImage;
    [SerializeField] RotationTween rotationTween;   //摇一摇0.5秒后,停止动-裂开特效 - 配合消失
    [SerializeField] UIEffectPlayer openEffect; //裂开特效
    [SerializeField] UIEffectPlayer showEffect; //展示特效
    [SerializeField] Image itemIcon;
    [SerializeField] Text itemName;
    [SerializeField] Text cntText;
    [SerializeField] Image pieceImg;
    [SerializeField] Transform outRect; //溢出
    [SerializeField] Image newImg;
 
    // 勾选跳过的直接显示结果
    public async UniTask Display(int index)
    {
        bool isSkip = LocalSave.GetBool(GubaoManager.skipKey + PlayerDatas.Instance.baseData.PlayerID, false);
 
        if (HappyXBModel.Instance.xbResultDict.IsNullOrEmpty())
        {
            return;
        }
        if (!HappyXBModel.Instance.xbResultDict.ContainsKey(index))
        {
            return;
        }
        var result = HappyXBModel.Instance.xbResultDict[index];
        var itemCfg = ItemConfig.Get(result.itemId);
        var gbCfg = GubaoConfig.Get(result.itemId);
 
        if (isSkip)
        {
            canImage.SetActive(false);
            rotationTween.Stop();
            openEffect.Stop();
            showEffect.effectId = GetShowEffectID(result.itemId, result.count);
            showEffect.PlayByArrIndex(Math.Max(itemCfg.ItemColor - 1, 0));
            itemIcon.SetActive(true);
            itemName.SetActive(true);
            cntText.SetActive(true);
 
            itemIcon.SetItemSprite(result.itemId);
            itemIcon.SetNativeSize();
            itemName.text = itemCfg.ItemName;
            itemName.color = UIHelper.GetFuncQualityColor(itemCfg.ItemColor);
            cntText.text = "x" + result.count.ToString();
 
            if (gbCfg == null)
            {
                pieceImg.SetActive(false);
                newImg.SetActive(false);
            }
            else
            {
                pieceImg.SetActive(true);
                if (GubaoManager.Instance.IsActive(result.itemId))
                {
                    newImg.SetActive(false);
                }
                else if (result.count >= gbCfg.UnlockItemCnt && VirtualPackManager.Instance.GetNoPackItemCount(result.itemId) < gbCfg.UnlockItemCnt * 2)
                {
                    newImg.SetActive(true);
                }
                else
                {
                    newImg.SetActive(false);
                }
            }
            outRect.SetActive(result.isOut);
 
            return;
        }
 
        //动画顺序 : 罐子摇一摇0.5秒-停止动-裂开特效-罐子提前消失-展示特效
        canImage.SetActive(true);
        //随机1-6
        int random = UnityEngine.Random.Range(1, 7);
        canImage.SetSprite($"GubaoCan{random}");
        canImage.SetNativeSize();
        canImage.transform.localRotation = Quaternion.identity;
        itemIcon.SetActive(false);
        itemName.SetActive(false);
        cntText.SetActive(false);
        outRect.SetActive(false);
        newImg.SetActive(false);
 
 
        showEffect.Stop();
 
        int delay = isSkip ? 0 : index * 100;   // delay 毫秒
        await UniTask.Delay(delay);
 
        rotationTween.Play();
        await UniTask.Delay(300);
        rotationTween.Stop();
        openEffect.Play();
        await UniTask.Delay(200);
        canImage.SetActive(false);
        await UniTask.Delay(400);
        showEffect.effectId = GetShowEffectID(result.itemId, result.count);
        showEffect.PlayByArrIndex(Math.Max(itemCfg.ItemColor - 1, 0));
        itemIcon.SetActive(true);
        itemName.SetActive(true);
        cntText.SetActive(true);
        itemIcon.SetItemSprite(result.itemId);
        itemIcon.SetNativeSize();
        itemName.text = itemCfg.ItemName;
        itemName.color = UIHelper.GetFuncQualityColor(itemCfg.ItemColor);
        cntText.text = "x" + result.count.ToString();
        if (gbCfg == null)
        {
            pieceImg.SetActive(false);
            newImg.SetActive(false);
        }
        else
        {
            pieceImg.SetActive(true);
            if (GubaoManager.Instance.IsActive(result.itemId))
            {
                newImg.SetActive(false);
            }
            else if (result.count >= gbCfg.UnlockItemCnt && VirtualPackManager.Instance.GetNoPackItemCount(result.itemId) < gbCfg.UnlockItemCnt * 2)
            {
                newImg.SetActive(true);
            }
            else
            {
                newImg.SetActive(false);
            }
        }
        outRect.SetActive(result.isOut);
    }
 
 
    int GetShowEffectID(int itemID, int cnt)
    {
        var config = GubaoConfig.Get(itemID);
        if (config == null)
        {
            return 1095;
        }
        if (cnt >= config.UnlockItemCnt)
        {
            return 1094;
        }
        return 1095;
    }
}