少年修仙传客户端代码仓库
client_Hale
2019-04-13 d4b5806a57e4e88a1fc57dd95f17e185f33e4e43
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
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Thursday, February 28, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
 
namespace Snxxz.UI
{
 
    public class EquipStarUpgradeCandidateSlot : MonoBehaviour
    {
        [SerializeField] Image m_BackGround;
        [SerializeField] Image m_EmptyItem;
        [SerializeField] ItemCell m_ItemCell;
        [SerializeField] Text m_EquipStar;
        [SerializeField] Text m_Description1;
        [SerializeField] Text m_Description2;
        [SerializeField] Button m_Select;
 
        EquipStarModel model { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
        EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
 
        int place;
        EquipStarUpgradeCandidate candidate;
 
        public void Display(int place)
        {
            this.place = place;
            this.candidate = model.GetCandidatePlace(this.place);
 
            DisplayBaseInfo();
            DisplayDynamicInfo(true);
 
            m_Select.SetListener(() => { model.SelectPlace(this.candidate.equipPosition); });
        }
 
        public void Dispose()
        {
        }
 
        private void LateUpdate()
        {
            DisplayDynamicInfo(false);
        }
 
        private void DisplayBaseInfo()
        {
            var guid = equipModel.GetEquip(this.candidate.equipPosition);
            var item = packModel.GetItemByGuid(guid);
            if (item == null)
            {
                m_ItemCell.gameObject.SetActive(false);
                m_EmptyItem.gameObject.SetActive(true);
                var place = this.candidate.equipPosition.y;
                m_Description1.text = string.Format("部位:{0}", UIHelper.GetEquipPlaceName(place));
                m_Description1.color = UIHelper.GetUIColor(TextColType.Black, true);
                m_Description2.text = "未穿戴装备";
            }
            else
            {
                m_ItemCell.gameObject.SetActive(true);
                m_EmptyItem.gameObject.SetActive(false);
                m_ItemCell.Init(item);
                m_ItemCell.button.enabled = false;
                m_Description1.text = item.config.ItemName;
                m_Description1.color = UIHelper.GetUIColor(item.config.ItemColor, true);
                m_Description2.text = string.Empty;
            }
        }
 
        private void DisplayDynamicInfo(bool force)
        {
            if (force || this.candidate.selected.dirty)
            {
                var selected = this.candidate.selected.Fetch();
                m_BackGround.SetSprite(selected ? "Title_RightWindow" : "Title_PopupWindow");
            }
 
            if (force || this.candidate.starLevel.dirty)
            {
                var starLevel = this.candidate.starLevel.Fetch();
                m_EquipStar.text = starLevel >= 1 ? string.Format("{0}星", starLevel) : "";
            }
 
        }
    }
 
    public class EquipStarUpgradeCandidateSlotPool
    {
        static GameObjectPool pool;
 
        public static EquipStarUpgradeCandidateSlot Get()
        {
            if (pool == null)
            {
                pool = new GameObjectPool(UILoader.LoadPrefab("EquipStarUpgradeCandidateSlot"));
            }
 
            var instance = pool.Request();
            instance.gameObject.SetActive(true);
            return instance.GetComponent<EquipStarUpgradeCandidateSlot>();
        }
 
        public static void Release(EquipStarUpgradeCandidateSlot behaviour)
        {
            if (pool == null)
            {
                return;
            }
 
            if (behaviour == null)
            {
                return;
            }
 
            behaviour.gameObject.SetActive(false);
            behaviour.transform.SetParent(null);
            pool.Release(behaviour.gameObject);
        }
    }
 
}