//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, December 05, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using vnxbqy.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class BetterItemGetBehaviour : MonoBehaviour, IInGamePush
|
{
|
[SerializeField] RectTransform m_ContainerBetterEquip;
|
[SerializeField] ItemCell m_EquipBehaviour;
|
[SerializeField] Text m_EquipName;
|
[SerializeField] Button m_Close;
|
[SerializeField] Text m_FunctionTitle;
|
[SerializeField] GameObject coolObj;
|
[SerializeField] Text coolTimeText;
|
[SerializeField] Button m_Puton;
|
[SerializeField] Button m_BetterEquipDetail;
|
|
Clock clock;
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
BetterEquipGetModel model { get { return ModelCenter.Instance.GetModel<BetterEquipGetModel>(); } }
|
EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
|
|
private void OnEnable()
|
{
|
m_Close.AddListener(CloseBetterEquip);
|
m_Puton.AddListener(PutOnBetterEquip);
|
m_BetterEquipDetail.AddListener(ShowBetterEquipDetails);
|
KnapsackTimeCDMgr.Instance.RefresCoolTimeAct += UpdateCoolTime;
|
}
|
|
private void OnDisable()
|
{
|
if (clock != null)
|
{
|
Clock.Stop(clock);
|
clock = null;
|
}
|
m_Close.RemoveAllListeners();
|
m_Puton.RemoveAllListeners();
|
m_BetterEquipDetail.RemoveAllListeners();
|
KnapsackTimeCDMgr.Instance.RefresCoolTimeAct -= UpdateCoolTime;
|
}
|
|
private void UpdateCoolTime(string guid)
|
{
|
if (!string.IsNullOrEmpty(model.currentEquipGuid))
|
{
|
ItemModel betterEquip;
|
if (model.TryGetBetterEquip(model.currentEquipGuid, out betterEquip))
|
{
|
var coolData = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.currentEquipGuid);
|
bool isCoolEnd = !model.CheckIsAutoEquip(betterEquip) || coolData == null || coolData.GetRemainTime() <= 0 ? true : false;
|
coolObj.SetActive(!isCoolEnd);
|
m_FunctionTitle.SetActive(isCoolEnd);
|
if (!isCoolEnd)
|
{
|
int remainTime = (int)coolData.GetRemainTime();
|
coolTimeText.text = StringUtility.Contact("(", remainTime, ")");
|
}
|
}
|
}
|
}
|
|
public void ShowBetterEquip()
|
{
|
m_ContainerBetterEquip.SetActive(false);
|
if (!string.IsNullOrEmpty(model.currentEquipGuid))
|
{
|
ItemModel betterEquip;
|
if (model.TryGetBetterEquip(model.currentEquipGuid, out betterEquip))
|
{
|
DrawBetterEquip(betterEquip);
|
m_ContainerBetterEquip.SetActive(true);
|
|
var delayTime = ClientDropItemUtility.Instance.GetJiaDropItemShowDelay(betterEquip.itemId);
|
if (delayTime > 0f)
|
{
|
if (clock != null)
|
{
|
Clock.Stop(clock);
|
clock = null;
|
}
|
|
m_ContainerBetterEquip.localScale = Vector3.zero;
|
clock = Clock.AlarmAfter(delayTime, () =>
|
{
|
m_ContainerBetterEquip.localScale = Vector3.one;
|
var coolData = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.currentEquipGuid);
|
if (model.CheckIsAutoEquip(betterEquip) && coolData == null)
|
{
|
KnapsackTimeCDMgr.Instance.Register(betterEquip.guid, betterEquip.itemId, model.autoEquipCoolTime);
|
}
|
});
|
}
|
else
|
{
|
var coolData = KnapsackTimeCDMgr.Instance.GetItemCoolById(model.currentEquipGuid);
|
if (model.CheckIsAutoEquip(betterEquip) && coolData == null)
|
{
|
KnapsackTimeCDMgr.Instance.Register(betterEquip.guid, betterEquip.itemId, model.autoEquipCoolTime);
|
}
|
}
|
}
|
}
|
}
|
|
private void PutOnBetterEquip()
|
{
|
ItemModel betterEquip;
|
if (model.TryGetBetterEquip(model.currentEquipGuid, out betterEquip))
|
{
|
switch (betterEquip.packType)
|
{
|
case PackType.Item:
|
ToOpenRoleKanpsack(betterEquip);
|
break;
|
}
|
}
|
|
}
|
|
private void ToOpenRoleKanpsack(ItemModel betterEquip)
|
{
|
var itemConfig = ItemConfig.Get(betterEquip.itemId);
|
if (NewBieCenter.Instance.inGuiding)
|
{
|
playerPack.SetLookIndex(betterEquip.guid);
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
equipModel.SelectSet(betterEquip.config.LV);
|
WindowCenter.Instance.Open<KnapSackWin>(false, 0);
|
StartCoroutine(Co_OpenRealmEquipDelay(model.currentEquipGuid));
|
}
|
else
|
{
|
//穿装备不打开背包
|
if ((PlayerDatas.Instance.baseData.LV < GeneralDefine.BlueEquipJumpLevel && itemConfig.ItemColor >= 8) || betterEquip.isAuction)
|
{
|
playerPack.SetLookIndex(betterEquip.guid);
|
WindowCenter.Instance.Close<MainInterfaceWin>();
|
equipModel.SelectSet(betterEquip.config.LV);
|
WindowCenter.Instance.Open<KnapSackWin>(false, 0);
|
StartCoroutine(Co_OpenRealmEquipDelay(model.currentEquipGuid));
|
}
|
else
|
{
|
ItemOperateUtility.Instance.PutOnItem(model.currentEquipGuid);
|
model.ReportConfirmBetterEquip(model.currentEquipGuid);
|
}
|
}
|
}
|
|
private void ShowBetterEquipDetails()
|
{
|
ItemModel betterEquip;
|
if (model.TryGetBetterEquip(model.currentEquipGuid, out betterEquip))
|
{
|
ItemTipUtility.Show(betterEquip.guid, false);
|
}
|
}
|
|
private void CloseBetterEquip()
|
{
|
model.ReportConfirmBetterEquip(model.currentEquipGuid);
|
}
|
|
private void DrawBetterEquip(ItemModel betterModel)
|
{
|
var itemConfig = ItemConfig.Get(betterModel.itemId);
|
m_EquipName.text = itemConfig.ItemName;
|
m_EquipName.color = UIHelper.GetUIColor(itemConfig.ItemColor, true);
|
|
var isView = betterModel.isAuction;
|
m_FunctionTitle.text = Language.Get(isView ? "GoodEquip_See" : "GoodEquip_FitUp");
|
|
m_EquipBehaviour.button.SetListener(() => { ItemTipUtility.Show(betterModel.guid, false); });
|
m_EquipBehaviour.Init(betterModel, true);
|
UpdateCoolTime(betterModel.guid);
|
}
|
|
IEnumerator Co_OpenRealmEquipDelay(string _guid)
|
{
|
yield return null;
|
yield return null;
|
yield return WaitingForSecondConst.WaitMS300;
|
|
ItemTipUtility.Show(_guid);
|
model.ReportConfirmBetterEquip(model.currentEquipGuid);
|
}
|
|
public int GetSiblingIndex()
|
{
|
return transform.GetSiblingIndex();
|
}
|
|
public bool IsActive()
|
{
|
return transform.gameObject.activeSelf
|
&&m_ContainerBetterEquip.gameObject.activeSelf;
|
}
|
}
|
}
|
|
|
|
|
|