//-------------------------------------------------------- // [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] Text m_SlotName; [SerializeField] Image m_Icon; [SerializeField] Image m_IconFrame; [SerializeField] RectTransform m_LockContainer; [SerializeField] Text m_UnLockCondition; [SerializeField] Text m_Star; EquipModel model { get { return ModelCenter.Instance.GetModel(); } } PackModel packModel { get { return ModelCenter.Instance.GetModel(); } } ItemTipsModel tipModel { get { return ModelCenter.Instance.GetModel(); } } EquipStarModel starModel { get { return ModelCenter.Instance.GetModel(); } } int level = 0; int place = 0; EquipSlot slot; public void Display(int level, int place) { this.level = level; this.place = place; var set = model.GetEquipSet(level); slot = set.GetEquipSlot(place); DisplayBaseInfo(); DisplayDynamicInfo(true); m_Select.SetListener(Select); } public void Dispose() { slot = null; } private void LateUpdate() { DisplayDynamicInfo(false); } private void DisplayBaseInfo() { m_SlotName.text = UIHelper.GetEquipPlaceName(place); var unLocked = slot.unLocked; if (unLocked) { m_LockContainer.gameObject.SetActive(false); var hasEquip = string.IsNullOrEmpty(slot.equip.value); m_SlotName.gameObject.SetActive(!hasEquip); } 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); var config = RealmConfig.Get(needRealm); m_UnLockCondition.text = string.Format("{0}解锁", config.Name); } } } private void DisplayDynamicInfo(bool force) { if (slot == null) { return; } if (force || slot.equip.dirty) { var equipGuid = slot.equip.Fetch(); var equip = packModel.GetItemByGuid(equipGuid); if (equip == null) { m_SlotName.gameObject.SetActive(true); m_Icon.SetSprite(GetDefaultEquipIcon(slot.equipPosition.y)); m_IconFrame.SetSprite("ItemNormal_a"); m_Star.gameObject.SetActive(false); } else { m_SlotName.gameObject.SetActive(false); m_Icon.SetSprite(equip.config.IconKey); m_IconFrame.SetItemBackGround(equip.config.ItemColor); var starLevel = starModel.GetEquipStarLevel(slot.equipPosition); m_Star.gameObject.SetActive(true); m_Star.text = starLevel >= 1 ? string.Format("{0}星", starLevel) : ""; } } } private string GetDefaultEquipIcon(int place) { return StringUtility.Contact("EquipDefaultIcon_", place); } private void Select() { if (slot.unLocked) { if (!string.IsNullOrEmpty(slot.equip.value)) { tipModel.SetItemTipsModel(PackType.Equip, slot.equip.value, false); tipModel.SetPutOnTipsBtn(tipModel.curAttrData); tipModel.ShowTip(); } else if (model.HasSamePlaceCandidateEquip(slot.equipPosition)) { model.RecommendCandidateEquip(slot.equipPosition); } else { model.RefreshGetWays(slot.equipPosition); } } } } }