wangguan
2020-11-10 d2589650fafc3cff4f358f67c03d2d0b01761905
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
using UnityEngine.UI;
using UnityEngine;
using EnhancedUI;
using EnhancedUI.EnhancedScroller;
using TMPro;
using UnityEngine.SceneManagement;
using KTGMGemClient;
 
public class FinalPanel : MonoBehaviour, IEnhancedScrollerDelegate
{
    private EnhancedScroller scroller;
 
    private SmallList<FinalPanelItemData> _data;
 
    public EnhancedScrollerCellView cellViewPrefab;
    [SerializeField]
    private Sprite rank_di_0, rank_di_1, rank_di_2, rank_di_03;
    [SerializeField]
    private Sprite rank_icon_0, rank_icon_1, rank_icon_2;
 
 
    public string endlessGameScene = "Endless";
 
    public string loadingScene = "LoadingScene";
    // Start is called before the first frame update
    void Start()
    {
 
        transform.Find("BackGround").GetComponent<Button>().onClick.AddListener(() =>
        {
            gameObject.SetActive(false);
            GameConfig.NextSceneName = endlessGameScene;
            SceneManager.LoadScene(loadingScene);
        });
    }
 
    /// <summary>
    /// 入口函数
    /// </summary>
    /// <param name="waveInfo">成绩 25关 3波</param>
    /// <param name="myScore">789220</param>
    public void SetData(string waveInfo, int myScore)
    {
        transform.Find("Text_Wave").GetComponent<Text>().text = waveInfo;
        int hScore = PlayerPrefs.GetInt("GemBattleHScore");
        if (myScore > hScore)
        {
            PlayerPrefs.SetInt("GemBattleHScore", myScore);
            hScore = myScore;
        }
 
        transform.Find("Text_Score").GetComponent<Text>().text = myScore.ToString();
        transform.Find("Text_HScore").GetComponent<TextMeshProUGUI>().text = hScore.ToString();
 
        scroller = transform.Find("Scroller").GetComponent<EnhancedScroller>();
 
        scroller.Delegate = this;
 
        LoadLargeData(hScore);
    }
 
    private void LoadLargeData(int hScore)
    {
        _data = new SmallList<FinalPanelItemData>();
        FinalPanelItemData data;
        int score = 101;
        for (var i = 0; i < 100; i++)
        {
            data = new FinalPanelItemData();
            data.score = score - i;
            data.index = i + 1;
            data.playerName = "游客" + i.ToString();
            data.spriteIcon = null;
            data.spriteBackGround = rank_di_03;
            _data.Add(data);
        }
 
        _data[0].playerName = "自己";
        _data[0].score = hScore;
        _data[0].spriteIcon = rank_icon_0;
        _data[0].spriteBackGround = rank_di_0;
 
        _data[1].spriteIcon = rank_icon_1;
        _data[1].spriteBackGround = rank_di_1;
 
        _data[2].spriteIcon = rank_icon_2;
        _data[2].spriteBackGround = rank_di_2;
        // tell the scroller to reload now that we have the data
        scroller.ReloadData();
    }
 
    #region EnhancedScroller Handlers
 
 
    /// <summary>
    /// 个数
    /// </summary>
    /// <param name="scroller"></param>
    /// <returns></returns>
    public int GetNumberOfCells(EnhancedScroller scroller)
    {
        return _data.Count;
    }
 
 
    /// <summary>
    /// 控制item的大小
    /// </summary>
    /// <param name="scroller"></param>
    /// <param name="dataIndex"></param>
    /// <returns></returns>
    public float GetCellViewSize(EnhancedScroller scroller, int dataIndex)
    {
        return 70f;
        //return (dataIndex % 2 == 0 ? 30f : 100f);
    }
 
    /// <summary>
    /// 渲染
    /// </summary>
    /// <param name="scroller"></param>
    /// <param name="dataIndex"></param>
    /// <param name="cellIndex"></param>
    /// <returns></returns>
    public EnhancedScrollerCellView GetCellView(EnhancedScroller scroller, int dataIndex, int cellIndex)
    {
        FinalPanelItem cellView = scroller.GetCellView(cellViewPrefab) as FinalPanelItem;
 
        cellView.SetData(_data[dataIndex]);
        return cellView;
    }
 
    #endregion
 
}
 
public class FinalPanelItemData
{
    public string playerName;
    public int score;
    public int index;
 
    public Sprite spriteIcon;
    public Sprite spriteBackGround;
 
}