少年修仙传客户端代码仓库
hch
2025-03-03 28785d6ddf9c08e49527ede9405c7b6c93c6ed32
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
using vnxbqy.UI;
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using System.Linq;
 
 
public class TreasurePavilionUpgradeChooseCell : CellView
{
    [SerializeField] ItemCell itemCell;
    [SerializeField] TextEx txtItemName;
    [SerializeField] TextEx txtItemCount;
    [SerializeField] Slider slider;
    int pieceGuBaoId;
    TreasurePavilionUpgradeChooseModel model { get { return ModelCenter.Instance.GetModelEx<TreasurePavilionUpgradeChooseModel>(); } }
    public void Display(int pieceGuBaoId)
    {
        this.pieceGuBaoId = pieceGuBaoId;
        Dictionary<int, int> nowDict;
        if (!model.TryGetPieceDictInfo(GubaoPieceInfoType.Have, model.nowGubaoId, model.nowStar, model.nowQuality, out nowDict))
            return;
        Dictionary<int, int> useDict;
        if (!model.TryGetPieceDictInfo(GubaoPieceInfoType.Choose, model.nowGubaoId, model.nowStar, model.nowQuality, out useDict))
            useDict = new Dictionary<int, int>();
        int allCount;
        if (!nowDict.TryGetValue(pieceGuBaoId, out allCount))
            allCount = 0;
        int hasCount;
        if (!useDict.TryGetValue(pieceGuBaoId, out hasCount))
            hasCount = 0;
        int itemId = ILGubaoConfig.Get(pieceGuBaoId).UnlockItemID;
        itemCell.Init(new ItemCellModel(itemId, false, (ulong)allCount));
        itemCell.countText.SetActive(false);
        itemCell.button.SetListener(() =>
        {
            ItemTipUtility.Show(itemId);
        });
        txtItemName.text = UIHelper.AppendColor(model.nowQuality, ItemConfig.Get(itemId).ItemName);
        txtItemCount.text = StringUtility.Contact(hasCount, "/", allCount);
        slider.minValue = 0;
        slider.maxValue = allCount;
        slider.value = hasCount;
        slider.onValueChanged.RemoveAllListeners();
        slider.onValueChanged.AddListener(OnSliderValueChanged);
    }
 
    void OnSliderValueChanged(float value)
    {
        int maxValueCount = GetMaxValueCount();
        value = Mathf.Clamp(value, 0, slider.maxValue);
        if (value > maxValueCount)
            value = maxValueCount;
        slider.value = value;
        model.SetGubaoPieceDict(GubaoPieceInfoType.Choose, model.nowGubaoId, model.nowStar, model.nowQuality, pieceGuBaoId, (int)value);
        model.UpdateInfoAction?.Invoke();
    }
 
    int GetMaxValueCount()
    {
        Dictionary<int, int> useDict;
        if (!model.TryGetPieceDictInfo(GubaoPieceInfoType.Choose, model.nowGubaoId, model.nowStar, model.nowQuality, out useDict))
            return 0;
 
        int count;
        if (!useDict.TryGetValue(pieceGuBaoId, out count))
            return 0;
 
        useDict.Remove(pieceGuBaoId);
        int maxTotalCount = ILGubaoStarConfig.GetNeedGubaPieceCountByQuality(model.nowGubaoId, model.nowStar, model.nowQuality);
        int result = Mathf.Max(0, maxTotalCount - useDict.Values.Sum());
 
        return result;
    }
}