//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, February 27, 2019
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.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;
|
|
EquipSuitEffect m_EquipSuitEffect;
|
EquipSuitEffect equipSuitEffect {
|
get {
|
if (m_EquipSuitEffect == null)
|
{
|
m_EquipSuitEffect = EquipSuitEffect.Create(transform as RectTransform);
|
}
|
return m_EquipSuitEffect;
|
}
|
}
|
|
EquipModel model { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
EquipStarModel starModel { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
|
|
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);
|
if (set == null)
|
{
|
Debug.LogErrorFormat("尝试获得第{0}阶装备的数据出现错误.", this.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.SetActive(false);
|
|
var hasEquip = string.IsNullOrEmpty(slot.equip.value);
|
m_SlotName.SetActive(!hasEquip);
|
}
|
else
|
{
|
m_LockContainer.SetActive(true);
|
m_SlotName.SetActive(false);
|
var needRealm = slot.GetUnLockRealmLevel();
|
var realmLevel = PlayerDatas.Instance.baseData.realmLevel;
|
if (realmLevel >= needRealm)
|
{
|
m_UnLockCondition.SetActive(false);
|
}
|
else
|
{
|
m_UnLockCondition.SetActive(true);
|
var config = RealmConfig.Get(needRealm);
|
m_UnLockCondition.text = Language.Get("LockOff", 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.SetActive(true);
|
m_Icon.SetSprite(GetDefaultEquipIcon(slot.equipPosition.y));
|
m_IconFrame.SetSprite("ItemNormal_a");
|
equipSuitEffect.Display(0);
|
|
m_Star.SetActive(false);
|
}
|
else
|
{
|
m_SlotName.SetActive(false);
|
m_Icon.SetSprite(equip.config.IconKey);
|
m_IconFrame.SetItemBackGround(equip.config.ItemColor, equip.config.QualityEchoType);
|
equipSuitEffect.Display(equip.itemId);
|
|
var starLevel = starModel.GetEquipStarLevel(slot.equipPosition);
|
m_Star.SetActive(true);
|
m_Star.text = starLevel >= 1 ? Language.Get("EquipStarLevel", starLevel) : "";
|
}
|
}
|
}
|
|
private string GetDefaultEquipIcon(int place)
|
{
|
return StringUtility.Contact("EquipDefaultIcon_", place);
|
}
|
|
private void Select()
|
{
|
if (slot.unLocked)
|
{
|
if (!string.IsNullOrEmpty(slot.equip.value))
|
{
|
ItemTipUtility.Show(slot.equip.value);
|
}
|
else if (model.HasSamePlaceCandidateEquip(slot.equipPosition))
|
{
|
model.RecommendCandidateEquip(slot.equipPosition);
|
}
|
else
|
{
|
model.RefreshGetWays(slot.equipPosition);
|
}
|
}
|
}
|
|
}
|
|
}
|