lcy
2026-05-07 2dd1841d03a730d3d369092c2a3ad656cee4bf64
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
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
 
// 武将登场战令
public class HeroReturnZhanLingWin : UIBase
{
    [SerializeField] ScrollerController scroller;
    [SerializeField] ButtonEx btnGo;
    [SerializeField] ButtonEx btnPaid;
    [SerializeField] ButtonEx btnPaidH;
 
    [SerializeField] ImageEx imgPaidLock;
    [SerializeField] ImageEx imgPaidLockH;
 
    [SerializeField] Text txtNowNeedValue;
 
    [SerializeField] Text welfarePerText;
    [SerializeField] Text itemNameText;
    [SerializeField] Image adImg;
    [SerializeField] Image adWordImg;
    [SerializeField] Image adHeroImg;
 
    [SerializeField] Text txtPaidLock;
    [SerializeField] Text txtPaidLockH;
    [SerializeField] Text txtPaidLockBuyed;
    [SerializeField] Text txtPaidLockBuyedH;
 
    HeroReturnManager zhanLingModel => HeroReturnManager.Instance;
    protected override void InitComponent()
    {
        btnGo.AddListener(OnGoClick);
        btnPaid.AddListener(OnPaidClick);
        btnPaidH.AddListener(OnPaidHClick);
    }
 
 
    protected override void OnPreOpen()
    {
        zhanLingModel.OnZhanLingUpdateEvent += OnZhanLingUpdateEvent;
        scroller.OnRefreshCell += OnScrollerRefreshCell;
        ShowStaticUI();
        Initialize();
        Display();
    }
 
    protected override void OnPreClose()
    {
        zhanLingModel.OnZhanLingUpdateEvent -= OnZhanLingUpdateEvent;
        scroller.OnRefreshCell -= OnScrollerRefreshCell;
    }
 
    private void Display()
    {
        //0 没购买进阶和玄级 1 购买了进阶没买玄级 2 购买了玄级没买进阶 3 购买了进阶和玄级
        int buyState = zhanLingModel.GetZhanLingBuyState();
        scroller.m_Scorller.RefreshActiveCellViews();
        txtNowNeedValue.text = Language.Get("HeroReturnZhanLing06", zhanLingModel.GetZhanLingValue());
 
        // imgPaidLock: 未购买进阶(type 1)且未购买玄级(type 2)时显示锁,或已购买玄级但未购买进阶时显示锁
        imgPaidLock.SetActive(buyState == 0 || buyState == 2);
        // imgPaidLockH: 未购买玄级且未购买进阶时显示锁,或已购买进阶但未购买玄级时显示锁
        imgPaidLockH.SetActive(buyState == 0 || buyState == 1);
 
        txtPaidLock.SetActive(buyState == 0 || buyState == 2);
        txtPaidLockBuyed.SetActive(buyState == 1 || buyState == 3);
 
        txtPaidLockH.SetActive(buyState == 0 || buyState == 1);
        txtPaidLockBuyedH.SetActive(buyState == 2 || buyState == 3);
    }
 
    private void OnZhanLingUpdateEvent()
    {
        Display();
        scroller.m_Scorller.RefreshActiveCellViews();
    }
 
    private void OnScrollerRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as HeroReturnZhanLingCell;
        _cell.Display(_cell.index);
    }
 
    private void Initialize()
    {
        var cellList = ZhanlingConfig.GetTypeToIDDict(zhanLingModel.ZhanLingType).Keys.ToList();
        scroller.Refresh();
        for (int i = 0; i < cellList.Count; i++)
        {
            scroller.AddCell(ScrollerDataType.Header, cellList[i]);
        }
        scroller.Restart();
 
        var data = BattlePassManager.Instance.GetBattlePassData(zhanLingModel.ZhanLingType);
        var totalValue = BattlePassManager.Instance.GetTotalValue(zhanLingModel.ZhanLingType);
        scroller.JumpIndex(BattlePassManager.Instance.JumpIndex(data, zhanLingModel.ZhanLingType, totalValue));
    }
 
 
 
    void ShowStaticUI()
    {
        // 获取高级付费(PaidH/玄级)的CTGID和百分比
        var funcConfig = FuncConfigConfig.Get("Zhanling");
        var dict = ConfigParse.ParseIntArrayDict(funcConfig.Numerical3);
        if (dict.TryGetValue(zhanLingModel.ZhanLingType, out var arr) && arr.Length > 0)
        {
            var paidHConfig = CTGConfig.Get(arr[0]);
            welfarePerText.text = paidHConfig.Percentage + "%";
        }
 
        adWordImg.SetSprite("BattlePassInWord" + zhanLingModel.ZhanLingType);
        adImg.SetSprite("BattlePassInWord" + zhanLingModel.ZhanLingType);
 
        var act = zhanLingModel.GetOperationHeroAppearInfo();
        if (act == null) return;
 
        var config = ActHeroAppearConfig.Get(act.CfgID);
        if (config == null) return;
        var needCount = zhanLingModel.GetLuckValueAward(config.ActTreasureType) - zhanLingModel.subVulue;
        itemNameText.text = Language.Get("HeroReturnZhanLing01", needCount);
 
        int heroID = zhanLingModel.GetFirstHeroId();
        adImg.SetSprite($"HeroReturnZhanLingBG_{heroID}");
        adWordImg.SetSprite($"HeroReturnZhanLingWord_{heroID}");
        adHeroImg.SetSprite($"HeroReturnZhanLingHero_{heroID}");
    }
 
    void OnGoClick()
    {
        UIJumpManager.Instance.OpenWindow(20);
    }
 
    void OnPaidClick()
    {
        int buyState = zhanLingModel.GetZhanLingBuyState();
        // 已购买进阶(type 1)或已购买玄级和进阶(buyState == 3)时不再跳转
        if (buyState == 1 || buyState == 3)
            return;
        zhanLingModel.ShowZhanLingHBuy(zhanLingModel.ZhanLingType, 1);
    }
 
    void OnPaidHClick()
    {
        int buyState = zhanLingModel.GetZhanLingBuyState();
        // 已购买玄级(type 2)或已购买玄级和进阶(buyState == 3)时不再跳转
        if (buyState == 2 || buyState == 3)
            return;
        zhanLingModel.ShowZhanLingHBuy(zhanLingModel.ZhanLingType, 2);
    }
}