hch
2025-12-31 4debfee66e8d8aabd179e2f8a61c7ca5ce62af3d
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
using System;
using System.Collections.Generic;
using LitJson;
using UnityEngine;
using UnityEngine.UI;
 
/// <summary>
/// 随机宝箱:区分是真物品,还是预览
/// 支持同时打开多个界面
/// </summary>
public class BoxItemWin : UIBase
{
 
    [SerializeField] ItemCell itemCell;
    [SerializeField] Text nameText;
    [SerializeField] Text descText;
    [SerializeField] Transform transInbg;
    [SerializeField] Transform transInbgPreview;
    [SerializeField] Transform line;
    [SerializeField] ScrollerController scroller;
    [SerializeField] ScrollerController scrollerPreview;
    [SerializeField] SliderPanel sliderPanel;
    [SerializeField] Button openButton;
 
    [SerializeField] CellView _InitCell;
 
    string guid;
    int itemID;
    int itemCount;
    int useCnt;
    List<Item> items;
    protected override void InitComponent()
    {
        openButton.AddListener(() =>
        {
            if (useCnt == 0)
            {
                CloseWindow();
                return;
            }
            if (ItemLogicUtility.Instance.UseItem(guid, useCnt))
            {
                CloseWindow();
            }
        });
    }
 
    protected override void Start()
    {
        _InitCell.cellIdentifier = _InitCell.cellIdentifier + this.GetInstanceID().ToString();
    }
 
 
    protected override void OnPreOpen()
    {
        itemID = ItemTipUtility.mainTipData.baseInfo.itemId;
        itemCount = ItemTipUtility.mainTipData.baseInfo.count;
        guid = ItemTipUtility.mainTipData.guid;
 
        itemCell.Init(new ItemCellModel(itemID, false, itemCount));
        var itemConfig = ItemConfig.Get(itemID);
        nameText.text = itemConfig.ItemName;
        descText.text = itemConfig.Description;
 
        bool isPreview = string.IsNullOrEmpty(guid);
        openButton.SetActive(!isPreview);
        sliderPanel.SetActive(!isPreview);
        transInbg.SetActive(!isPreview);
        transInbgPreview.SetActive(isPreview);
        line.SetActive(!isPreview);
 
        useCnt = 1;
        sliderPanel.Init((value) => { useCnt = value; }, itemCount);
 
 
        scroller.OnRefreshCell += OnRefreshCell;
        scrollerPreview.OnRefreshCell += OnRefreshPreviewCell;
        items = BoxGetItemModel.Instance.GetBoxItems(itemID);
        CreateScroller(scroller);
        CreateScroller(scrollerPreview);
    }
 
    protected override void OnPreClose()
    {
        scroller.OnRefreshCell -= OnRefreshCell;
        scrollerPreview.OnRefreshCell -= OnRefreshPreviewCell;
    }
 
    void CreateScroller(ScrollerController scroller)
    {
        scroller.Refresh();
 
        for (int i = 0; i < items.Count; i++)
        {
            if (i % 4 == 0)
            {
                List<Item> tmpIDs = new List<Item>();
                for (int j = 0; j < 4; j++)
                {
                    int index = i + j;
                    if (index >= items.Count)
                        break;
                    tmpIDs.Add(items[index]);
                }
                scroller.AddCell(ScrollerDataType.Header, i);
            }
        }
        scroller.Restart();
    }
 
 
    void OnRefreshCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as BoxItemLineCell;
 
        List<Item> tmpIDs = new List<Item>();
        for (int j = 0; j < 4; j++)
        {
            int index = cell.index + j;
            if (index >= items.Count)
                break;
            tmpIDs.Add(items[index]);
        }
 
        _cell.Display(tmpIDs);
    }
 
    void OnRefreshPreviewCell(ScrollerDataType type, CellView cell)
    {
        var _cell = cell as BoxItemLineCell;
 
        List<Item> tmpIDs = new List<Item>();
        for (int j = 0; j < 4; j++)
        {
            int index = cell.index + j;
            if (index >= items.Count)
                break;
            tmpIDs.Add(items[index]);
        }
 
        _cell.Display(tmpIDs);
    }
 
}