//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Thursday, September 07, 2017
|
//--------------------------------------------------------
|
using DG.Tweening;
|
using System;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class EquipOnFloor : MonoBehaviour
|
{
|
|
[SerializeField] List<Button> equips;
|
[SerializeField] List<Image> equipImages;
|
[SerializeField] List<UIEffect> equipUIeffects;
|
|
CutTreeModel cutTreeModel { get { return ModelCenter.Instance.GetModel<CutTreeModel>(); } }
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
AutoCutTreeModel autoCutTreeModel { get { return ModelCenter.Instance.GetModel<AutoCutTreeModel>(); } }
|
|
int dropState = 0; //0:未掉落 1:掉落中 2:掉落完成(后续处理分解替换/装备)
|
|
|
//主界面切换模式触发
|
private void OnEnable()
|
{
|
cutTreeModel.equipOnFloorBtn = equips;
|
//主界面打开和显隐都要刷新
|
Display();
|
|
cutTreeModel.AfterPlayCutTreeAnimEvent -= AfterPlayCutTreeAnimEvent;
|
cutTreeModel.AfterPlayCutTreeAnimEvent += AfterPlayCutTreeAnimEvent;
|
|
cutTreeModel.OnEquipOPResultAction -= OnEquipResult;
|
cutTreeModel.OnEquipOPResultAction += OnEquipResult;
|
}
|
|
|
private void OnDisable()
|
{
|
cutTreeModel.AfterPlayCutTreeAnimEvent -= AfterPlayCutTreeAnimEvent;
|
cutTreeModel.OnEquipOPResultAction -= OnEquipResult;
|
|
}
|
|
//在主界面打开的时候触发
|
public void Init()
|
{
|
Display();
|
cutTreeModel.AfterPlayCutTreeAnimEvent -= AfterPlayCutTreeAnimEvent;
|
cutTreeModel.AfterPlayCutTreeAnimEvent += AfterPlayCutTreeAnimEvent;
|
cutTreeModel.OnEquipOPResultAction -= OnEquipResult;
|
cutTreeModel.OnEquipOPResultAction += OnEquipResult;
|
}
|
|
public void UnInit()
|
{
|
cutTreeModel.AfterPlayCutTreeAnimEvent -= AfterPlayCutTreeAnimEvent;
|
cutTreeModel.OnEquipOPResultAction -= OnEquipResult;
|
}
|
|
private void LateUpdate()
|
{
|
if (dropState == 2)
|
{
|
dropState = 0;
|
AfterDropShow();
|
}
|
}
|
|
void AfterPlayCutTreeAnimEvent()
|
{
|
Display(true);
|
}
|
|
void OnEquipResult()
|
{
|
Display();
|
//分解效果 用equipFloorInfo处理
|
}
|
|
|
|
|
//界面格子组件顺序和背包格子顺序一致
|
public void Display(bool isAnimate = false)
|
{
|
dropState = 0;
|
List<ItemModel> items = packModel.GetItems(PackType.EquipOnFloor);
|
float duration = 0.5f / cutTreeModel.cutTreeSpeed; //掉落时间
|
for (int i = 0; i < equips.Count; i++)
|
{
|
var equipModel = packModel.GetItemByIndex(PackType.EquipOnFloor, i);
|
if (equipModel == null)
|
{
|
equips[i].gameObject.SetActive(false);
|
continue;
|
}
|
|
var config = equipModel.config;
|
var equip = equips[i];
|
equipImages[i].SetSprite(config.IconKey);
|
equipImages[i].GetComponent<Canvas>().sortingLayerName = "UI";
|
equip.SetListener(() => {
|
cutTreeModel.OpenEquipExchangeWin(equipModel);
|
});
|
|
var uieff = equipUIeffects[i];
|
uieff.effect = cutTreeModel.equipUIEffectLights[Math.Min(config.ItemColor, cutTreeModel.equipUIEffectLights.Length) - 1];
|
uieff.Play();
|
|
if (isAnimate)
|
{
|
dropState = 1;
|
float startPosX = UnityEngine.Random.Range(-130, 130);
|
//随机方向返回1或者-1
|
int randDir = UnityEngine.Random.Range(0, 2) == 0 ? 1 : -1;
|
|
equip.transform.localPosition = new Vector3(startPosX, 0, 0);
|
equip.SetActive(true);
|
equip.transform.DOLocalPath(new Vector3[] { new Vector3(startPosX, 0, 0),
|
new Vector3(startPosX + randDir * 15, 30f, 0),
|
new Vector3(startPosX + randDir * 35, -140 + UnityEngine.Random.Range(0, 10), 0) }, duration, PathType.CatmullRom).SetEase(Ease.InOutSine).OnComplete(CompleteDrop);
|
}
|
else
|
{
|
equip.transform.localPosition = new Vector3(UnityEngine.Random.Range(-130, 130), -100, 0);
|
}
|
|
}
|
}
|
|
void CompleteDrop()
|
{
|
dropState = 2;
|
if (autoCutTreeModel.isAutoCutTree)
|
{
|
cutTreeModel.isPlayCutTreeAnim = false;
|
}
|
|
}
|
void AfterDropShow()
|
{
|
if (!autoCutTreeModel.isAutoCutTree)
|
{
|
//非自动砍树模式下,每次都打开装备操作界面
|
var items = packModel.GetItems(PackType.EquipOnFloor);
|
if (items != null && items.Count != 0)
|
{
|
cutTreeModel.OpenEquipExchangeWin(items[0]);
|
}
|
}
|
else
|
{
|
//自动模式下,需要判定多件装备是否有选定规则下的更好装备 或者 自动分解
|
}
|
}
|
}
|
|
|
}
|
|
|
|