//-------------------------------------------------------- // [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(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } 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); } } } }