少年修仙传客户端代码仓库
client_Wu Xijin
2019-03-05 efa5f8d07fc3321f6ac5f5d97fb422db28d0886f
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
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Wednesday, February 27, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
 
namespace Snxxz.UI
{
 
    public class EquipSlotBehaviour : MonoBehaviour
    {
        [SerializeField] Button m_Select;
        [SerializeField] RectTransform m_SelectedContainer;
 
        [SerializeField] Text m_SlotName;
        [SerializeField] Image m_Icon;
        [SerializeField] Image m_IconFrame;
        [SerializeField] RectTransform m_LockContainer;
        [SerializeField] Text m_UnLockCondition;
 
        EquipModel model { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
 
        int level = 0;
        EquipSlot slot;
 
        public void Display(int level, int place)
        {
            this.level = level;
            var set = model.GetEquipSet(level);
            slot = set.GetEquipSlot(place);
 
            DisplayBaseInfo();
            DisplayDynamicInfo(true);
        }
 
        public void Dispose()
        {
            slot = null;
        }
 
        private void LateUpdate()
        {
            DisplayDynamicInfo(false);
        }
 
        private void DisplayBaseInfo()
        {
            m_SlotName.text = "";
        }
 
        private void DisplayDynamicInfo(bool force)
        {
            if (slot == null)
            {
                return;
            }
 
            if (force || slot.unLocked.dirty)
            {
                var unLocked = slot.unLocked.Fetch();
                if (unLocked)
                {
                    m_LockContainer.gameObject.SetActive(false);
                    m_SlotName.gameObject.SetActive(string.IsNullOrEmpty(slot.equip.value));
                }
                else
                {
                    m_LockContainer.gameObject.SetActive(true);
                    m_SlotName.gameObject.SetActive(false);
                    var needRealm = slot.GetUnLockRealmLevel();
                    var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
                    if (realmLevel >= needRealm)
                    {
                        m_UnLockCondition.gameObject.SetActive(false);
                    }
                    else
                    {
                        m_UnLockCondition.gameObject.SetActive(true);
                        m_UnLockCondition.text = string.Format("境界{0}解锁", needRealm);
                    }
                }
            }
 
            if (force || slot.equip.dirty)
            {
                var equipGuid = slot.equip.Fetch();
                var equip = packModel.GetItemByGuid(equipGuid);
                if (equip == null)
                {
                    m_SlotName.gameObject.SetActive(false);
                    m_Icon.SetSprite(GetDefaultEquipIcon(slot.place));
                    m_IconFrame.gameObject.SetActive(false);
                }
                else
                {
                    m_SlotName.gameObject.SetActive(slot.unLocked.value);
                    m_Icon.SetSprite(equip.config.IconKey);
                    m_IconFrame.SetItemBackGround(equip.config.ItemColor);
                }
            }
 
            if (force || slot.selected.dirty)
            {
                m_SelectedContainer.gameObject.SetActive(slot.selected.Fetch());
            }
        }
 
        private string GetDefaultEquipIcon(int place)
        {
            return string.Empty;
        }
 
        private void Select()
        {
            if (slot.unLocked.value)
            {
                model.SelectSet(this.level, slot.place);
            }
        }
 
    }
 
}