//--------------------------------------------------------
|
// [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>(); } }
|
ItemTipsModel tipModel { get { return ModelCenter.Instance.GetModel<ItemTipsModel>(); } }
|
|
int level = 0;
|
int place = 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);
|
|
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);
|
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);
|
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(false);
|
m_Icon.SetSprite(GetDefaultEquipIcon(slot.place));
|
m_IconFrame.SetItemBackGround(0);
|
}
|
else
|
{
|
m_SlotName.gameObject.SetActive(slot.unLocked);
|
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)
|
{
|
if (slot.selected.value)
|
{
|
tipModel.SetItemTipsModel(PackType.Equip, slot.equip.value, false);
|
tipModel.SetPutOnTipsBtn(tipModel.curAttrData);
|
tipModel.ShowUICtrl();
|
}
|
else
|
{
|
model.SelectSet(this.level, slot.place);
|
}
|
}
|
}
|
|
}
|
|
}
|