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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TowerDefense.Level;
using UnityEngine.UI;
using Protobuf;
using DG.Tweening;
 
/**
 * 无尽模式结算界面列表脚本
 * @Author: chenxin
 * @Date: 2020-10-22 11:06:15
 */
namespace KTGMGemClient
{
    public class EndlessSettlementPropList : MonoBehaviour
    {
        public GameObject ItemPrefab;
 
        public GameObject Grid;
 
        private string iconPath = "UI/Props/";
 
        private string bgPath = "UI/Props/Di/";
        private float slowTime = 0.1f;//物品挨个出现频率
 
        //private float parentHeight;//父物体高度
        GridLayoutGroup myGroup;
 
        RectTransform myRect, gridRect;
 
        /// <summary>
        /// Awake is called when the script instance is being loaded.
        /// </summary>
        void Awake()
        {
            //parentHeight = transform.parent.GetComponent<RectTransform>().sizeDelta.y;
            myGroup = Grid.GetComponent<GridLayoutGroup>();
            gridRect = Grid.GetComponent<RectTransform>();
            myRect = GetComponent<RectTransform>();
        }
 
        /// <summary>
        /// 刷新道具列表
        /// </summary>
        public void RefreshList()
        {
            Invoke("StartLater", 0.1f);
 
            // if (Application.platform == RuntimePlatform.WindowsEditor)
            // {
            //     Debug.Log(gameObject.activeSelf);
            //     //UnityEditor.EditorApplication.isPaused = true;
            // }
 
            return;
            // List<EndlessDrop> list = EndlessDropManager.instance.GetAllObtainedDrop();
 
            // for (int i = 0; i < list.Count; ++i)
            // {
            //     if (list[i].Reward.type == CURRENCY.Gold)
            //     {
            //         AddItem($"{(int)list[i].Reward.type}");
            //     }
            //     else
            //     {
            //         for (int j = 0; j < list[i].Reward.count; ++j)
            //         {
            //             AddItem($"{(int)list[i].Reward.type}_{list[i].Reward.id}");
            //         }
            //     }
            // }
        }
 
        private void StartLater()
        {
            AudioSourceManager.Ins.Play(AudioEnum.End);
 
            StartCoroutine(ShowSlow());
        }
 
        IEnumerator ShowSlow()
        {
            List<EndlessDrop> list = EndlessDropManager.instance.GetAllObtainedDrop();
 
            for (int i = 0; i < list.Count; ++i)
            {
                if (list[i].Reward.type == CURRENCY.Gold)
                {
                    AddItem($"{(int)list[i].Reward.type}");
                    yield return new WaitForSeconds(slowTime);
                }
                else
                {
                    for (int j = 0; j < list[i].Reward.count; ++j)
                    {
                        AddItem($"{(int)list[i].Reward.type}_{list[i].Reward.id}");
                        yield return new WaitForSeconds(slowTime);
                    }
                }
            }
        }
 
        private void AddItem(string resId)
        {
            GameObject item = Instantiate(ItemPrefab);
            EndlessPropIcon propIcon = item.GetComponent<EndlessPropIcon>();
 
            Sprite iconSp = Resources.Load<Sprite>($"{iconPath}{resId}");
            Sprite bgSp = Resources.Load<Sprite>($"{bgPath}{resId}");
 
            propIcon.SetIcon(iconSp);
            propIcon.SetBg(bgSp);
            item.transform.SetParent(Grid.transform, false);
 
            if (gridRect.sizeDelta.y > myRect.sizeDelta.y && Grid.transform.childCount % myGroup.constraintCount == 1)
            {
                gridRect.DOAnchorPosY(gridRect.sizeDelta.y - myRect.sizeDelta.y + (item.transform as RectTransform).sizeDelta.y, 0.2f);
            }
        }
    }
}