hch
2026-02-02 04ffe31b6a2b2fbcfecc83abb44a8aa233f2e53f
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
using System.Collections.Generic;
using UnityEngine;
 
public class HeroFatesPutWin : UIBase
{
    [SerializeField] Transform transChooseHero;
    [SerializeField] HeroFatesPutItem chooseHero;
    [SerializeField] GiftBaseCell[] giftBaseCells;
 
    [SerializeField] Transform transNoChooseHero;
 
    [SerializeField] ScrollerController scroller;
    [SerializeField] Transform transNoCanChooseHero;
    [SerializeField] ButtonEx btnPut;
    [SerializeField] TextEx txtChooseCnt;
 
    HeroFatesManager manager { get { return HeroFatesManager.Instance; } }
    protected override void InitComponent()
    {
        btnPut.SetListener(() =>
        {
            manager.PutList();
            CloseWindow();
        });
    }
 
 
    protected override void OnPreOpen()
    {
        scroller.OnRefreshCell += OnRefreshCell;
        manager.OnChooseChangeEvent += OnChooseChangeEvent;
 
        CreateScoller();
        DisplayChooseHero();
    }
 
    protected override void OnPreClose()
    {
        scroller.OnRefreshCell -= OnRefreshCell;
        manager.OnChooseChangeEvent -= OnChooseChangeEvent;
    }
 
    private void OnChooseChangeEvent()
    {
        RefeshScoller();
        DisplayChooseHero();
    }
 
    List<HeroInfo> list = new List<HeroInfo>();
    private void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell.GetComponent<HeroFatesPutCell>();
        _cell?.Display(cell.index, list);
    }
 
    void CreateScoller()
    {
        scroller.Refresh();
        if (manager.TryGetHeroFatesConfig(manager.chooseHeroFatesId, out HeroFatesConfig config) &&
         manager.TryGetNowLVAndNextLVConfig(config.FatesID, out int nowLv, out HeroFatesQualityLVConfig nowLVConfig, out HeroFatesQualityLVConfig nextLVConfig))
        {
 
            int fatesQuality = nextLVConfig.NeedQuality;
            list = manager.GetConsumableHeroInfoList(fatesQuality);
            transNoCanChooseHero.SetActive(list.IsNullOrEmpty());
            if (!list.IsNullOrEmpty())
            {
                int rowCount = Mathf.CeilToInt((float)list.Count / manager.rowCountMax);
                for (int i = 0; i < rowCount; i++)
                {
                    scroller.AddCell(ScrollerDataType.Header, i);
                }
            }
        }
        scroller.Restart();
    }
 
    void RefeshScoller()
    {
        scroller.m_Scorller.RefreshActiveCellViews();
    }
 
    void DisplayChooseHero()
    {
        HeroInfo heroInfo = manager.chooseHeroInfo;
        transNoChooseHero.SetActive(heroInfo == null);
        transChooseHero.SetActive(heroInfo != null);
        if (heroInfo != null)
        {
            chooseHero.Display(heroInfo);
            HeroUIManager.Instance.RefreshGiftCell(giftBaseCells, heroInfo);
        }
 
        if (!manager.TryGetNowLVAndNextLVConfig(manager.chooseHeroFatesId, out int nowLv, out HeroFatesQualityLVConfig nowLVConfig, out HeroFatesQualityLVConfig nextLVConfig))
        {
            return;
        }
        int needCnt = nextLVConfig.NeedHeroCnt;
        int chooseCnt = manager.chooseCostHeroInfos.Count;
        txtChooseCnt.text = Language.Get("HeroFates04", UIHelper.AppendColor(chooseCnt >= needCnt ? TextColType.DarkGreen : TextColType.Red, Language.Get("BoneField09", chooseCnt, needCnt)));
    }
}