hch
1 天以前 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
using System.Linq;
using UnityEngine;
 
public class HeroReturnStarUpCell : CellView
{
    [SerializeField] ItemCell freeAwardItemCell;
    [SerializeField] Transform freeAwardHaveTransform;//已领取
    [SerializeField] Transform freeAwardCanHaveTransform;//可领取
 
    [SerializeField] Transform upProcssBGTransform;
    [SerializeField] Transform upProcessTransform;
    [SerializeField] Transform downProcssBGTransform;
    [SerializeField] Transform downProcessTransform;
    [SerializeField] TextEx starCntText;
    [SerializeField] TextEx limitText;
    [SerializeField] ButtonEx buyButton;
    [SerializeField] ImageEx buyImage;
    [SerializeField] TextEx buyText;
    [SerializeField] ImageEx rateImage;
    [SerializeField] TextEx rateText;
    [SerializeField] ScrollerController scroller;
    HeroReturnManager manager => HeroReturnManager.Instance;
    int id;
    public void Display(int id, CellView cell)
    {
        this.id = id;
 
        int heroID = cell.info.Value.infoInt1;
        bool isFrist = cell.info.Value.infoInt2 == 1;
        bool isEnd = cell.info.Value.infoInt3 == 1;
 
        var config = ActHeroAppearStarConfig.Get(id);
        if (config == null) return;
 
        var heroConfig = HeroConfig.Get(heroID);
        if (heroConfig == null) return;
 
        if (config.FreeAwardItemList.IsNullOrEmpty()) return;
        int ctgId = config.StarGiftCTGID;
        int awardIndex = config.AwardIndex;
        if (!manager.TryGetStarUpAwardArr(id, heroID, out int[][] list)) return;
        if (!RechargeManager.Instance.TryGetOrderInfo(ctgId, out var orderConfig)) return;
        if (!RechargeManager.Instance.TryGetRechargeCount(ctgId, out var rechargeCount)) return;
        if (!RechargeManager.Instance.TryGetRechargeItem(ctgId, out var rechargeItemList)) return;
        CTGConfig ctgConfig = CTGConfig.Get(ctgId);
        if (ctgConfig == null) return;
 
        rateImage.SetActive(true);
        rateText.text = Language.Get("DailySpecials07", ctgConfig.Percentage);
 
        int state = manager.GetStarUpFreeState(id);//0 - 未解锁 1 - 可领取 2 - 已领取
        freeAwardHaveTransform.SetActive(state == 2);
        freeAwardCanHaveTransform.SetActive(state == 1);
 
        bool isNoSellOut = manager.IsNoSellOutCTGID(ctgId);
        buyButton.interactable = state != 0 && isNoSellOut;
        buyButton.SetListener(() =>
        {
            if (isNoSellOut && state != 0)
            {
                RechargeManager.Instance.CTG(ctgId);
            }
        });
        //buyImage.gray = state == 0 || !isNoSellOut;
        buyText.text = !isNoSellOut ? Language.Get("storename11") : Language.Get("PayMoneyNum", UIHelper.GetMoneyFormat(orderConfig.PayRMBNumOnSale));
        limitText.text = Language.Get("TimeRush08", UIHelper.AppendColor(rechargeCount.totalCount >= ctgConfig.TotalBuyCount ? TextColType.Red : TextColType.DarkGreen, $"{rechargeCount.totalCount}/{ctgConfig.TotalBuyCount}"));
        bool isHeroStarOk = manager.IsHeroStarCntOk(heroConfig.HeroID, config.NeedStar) && HeroManager.Instance.HasHero(heroConfig.HeroID) && manager.IsLockStarHero(manager.GetOperationHeroAppearInfo());
        upProcssBGTransform.SetActive(!isFrist);
        downProcssBGTransform.SetActive(!isEnd);
 
        upProcessTransform.SetActive(isHeroStarOk);
        downProcessTransform.SetActive(isHeroStarOk);
 
        CreateScroller(list);
 
        int[] arr = config.FreeAwardItemList.First();
        int itemID = arr[0];
        int itemCount = arr[1];
        freeAwardItemCell.SetActive(true);
        freeAwardItemCell.Init(new ItemCellModel(itemID, false, itemCount));
        freeAwardItemCell.button.AddListener(() =>
        {
            if (state == 1)
            {
                manager.SendGetStarReward();
            }
            else
            {
                ItemTipUtility.Show(itemID);
            }
        });
 
        starCntText.text = Language.Get("HeroDebut20", config.NeedStar);
    }
 
    private void CreateScroller(int[][] list)
    {
        if (list == null) return;
        var config = ActHeroAppearStarConfig.Get(id);
        if (config == null) return;
 
        scroller.OnRefreshCell += OnRefreshCell;
        scroller.Refresh();
        for (int i = 0; i < list.Length; i++)
        {
            var item = list[i];
            var itemID = item[0];
            var itemCount = item[1];
            CellInfo cellInfo = new()
            {
                infoInt1 = itemID,
                infoInt2 = itemCount,
                infoInt3 = manager.IsNoSellOutCTGID(config.StarGiftCTGID) ? 1 : 0,
            };
            scroller.AddCell(ScrollerDataType.Header, i, cellInfo);
        }
        scroller.Restart();
        scroller.OnRefreshCell -= OnRefreshCell;
    }
 
    private void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell.GetComponent<HeroReturnStarUpPaidItemCell>();
        _cell?.Display(cell.index, cell);
    }
}