//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, September 07, 2017
|
//--------------------------------------------------------
|
using UnityEngine;
|
using System.Collections;
|
using UnityEngine.UI;
|
using System;
|
using System.Collections.Generic;
|
using DG.Tweening;
|
|
namespace vnxbqy.UI
|
{
|
|
public class EquipOnMainUI : MonoBehaviour
|
{
|
|
[SerializeField] List<Transform> slotEquips; //装备格子
|
[SerializeField] Image flyEquip;
|
[SerializeField] UIEffect flyEquipEffect;
|
[SerializeField] MoneyMoveByPath moneyMoveByPath;
|
|
List<ItemCell> itemCells = new List<ItemCell>();
|
List<Text> slotNames = new List<Text>();
|
|
CutTreeModel cutTreeModel { get { return ModelCenter.Instance.GetModel<CutTreeModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
AutoCutTreeModel autoCutTreeModel { get { return ModelCenter.Instance.GetModel<AutoCutTreeModel>(); } }
|
EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
|
|
//主界面切换模式触发
|
private void OnEnable()
|
{
|
if (itemCells.IsNullOrEmpty())
|
{
|
for (int i = 0; i < slotEquips.Count; i++)
|
{
|
itemCells.Add(slotEquips[i].GetComponentInChildren<ItemCell>());
|
slotNames.Add(slotEquips[i].Find("TextEx").GetComponent<Text>());
|
}
|
}
|
|
packModel.refrechPackEvent += OnRefrechPackEvent;
|
//packModel.refreshItemCountEvent += PackModel_refreshItemCountEvent;
|
cutTreeModel.OnEquipOPResultAction += OnEquipResult;
|
flyEquip.SetActive(false);
|
DisplaySlotEquip();
|
}
|
|
|
private void OnDisable()
|
{
|
packModel.refrechPackEvent -= OnRefrechPackEvent;
|
//packModel.refreshItemCountEvent -= PackModel_refreshItemCountEvent;
|
cutTreeModel.OnEquipOPResultAction -= OnEquipResult;
|
}
|
|
|
|
|
void OnRefrechPackEvent(PackType type)
|
{
|
if (type == PackType.Equip)
|
{
|
DisplaySlotEquip();
|
}
|
}
|
|
|
//private void PackModel_refreshItemCountEvent(PackType arg1, int arg2, int arg3)
|
//{
|
// if (arg1 == PackType.Equip)
|
// {
|
// DisplaySlotEquip();
|
// }
|
|
//}
|
|
|
private void OnEquipResult()
|
{
|
DecomposeEquipAnimate();
|
FlyToEquipGird();
|
}
|
|
void DecomposeEquipAnimate()
|
{
|
moneyMoveByPath.PlayAnimation(2, 6);
|
}
|
|
|
//显示装备格子
|
void DisplaySlotEquip()
|
{
|
for (int i = 0; i < slotNames.Count; i++)
|
{
|
slotNames[i].text = UIHelper.GetEquipPlaceName(i + 1);
|
var equipItem = equipModel.GetEquipItemModel(new Int2(PlayerDatas.Instance.baseData.suitLevel, i + 1));
|
if (equipItem == null)
|
{
|
itemCells[i].SetActive(false);
|
continue;
|
}
|
itemCells[i].SetActive(true);
|
int itemID = equipItem.itemId;
|
itemCells[i].Init(equipItem);
|
|
itemCells[i].button.AddListener(() => {
|
cutTreeModel.clickEquipTipOnMain = true;
|
ItemTipUtility.Show(equipItem.guid);
|
});
|
|
|
}
|
}
|
|
void FlyToEquipGird()
|
{
|
if (cutTreeModel.equipFloorInfo.Count == 0) return;
|
var equipInfo = cutTreeModel.FindExchangeEquipInfo();
|
|
int itemID = equipInfo.equipID;
|
if (itemID == 0) return;
|
var config = ItemConfig.Get(itemID);
|
flyEquip.SetSprite(config.IconKey);
|
|
flyEquipEffect.effect = cutTreeModel.equipUIEffectLights[Math.Min(config.ItemColor, cutTreeModel.equipUIEffectLights.Length) - 1];
|
flyEquipEffect.Play();
|
|
flyEquip.transform.position = new Vector3(equipInfo.posX, equipInfo.posY, 0);
|
flyEquip.SetActive(true);
|
int index = config.EquipPlace - 1;
|
flyEquip.transform.DOLocalMove(new Vector3(slotEquips[index].localPosition.x - 80, slotEquips[index].localPosition.y + 40, 0), 0.35f).OnComplete(() =>
|
{
|
flyEquip.SetActive(false);
|
|
var equipItem = equipModel.GetEquipItemModel(new Int2(PlayerDatas.Instance.baseData.suitLevel, index + 1));
|
itemCells[index].SetActive(true);
|
itemCells[index].Init(equipItem);
|
|
itemCells[index].button.AddListener(() => {
|
cutTreeModel.clickEquipTipOnMain = true;
|
ItemTipUtility.Show(equipItem.guid);
|
});
|
if (equipItem == null)
|
{
|
return;
|
}
|
//itemCell变大再变回1倍
|
itemCells[index].transform.DOScale(Vector3.one * 1.3f, 0.3f).OnComplete(() =>
|
{
|
itemCells[index].transform.DOScale(Vector3.one, 0.3f);
|
});
|
});
|
|
}
|
|
}
|
|
|
}
|
|
|
|