// ***********************************************************************
// Assembly : Game
// Author : Kimch
// Created : 2022-03-02
// Description :
// Last Modified By :
// Last Modified On :
// ***********************************************************************
//
//
// ***********************************************************************
namespace G.UI
{
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
///
/// 打开宝箱动画
///
partial class OpenBoxWindow
{
///
/// 特效移动到指定位置
///
class MoveVFX : KUIWidget
{
private Transform _transform;
private Transform _trg;
private Vector3 _sta;
private float _time = 0.7f; //飞向目标点所需的时间
private KUIPool _pool;
public override void Refresh()
{
if (this.data is PropItemWidget _trgTransform)
{
_trg = _trgTransform.transform;
_transform.localPosition = Vector3.zero;
_sta = this.transform.position;
//StartCoroutine(StartMove(_trg));
_transform.DOMove(_trg.position, _time).SetEase(Ease.OutCubic)
.OnComplete(() =>
{
_trgTransform.transform.GetChild(0).gameObject.SetActive(true);
if (_pool)
{
_pool.ReturnItem(this.transform);
}
else
{
#if UNITY_EDITOR
Debug.Log("有错误得检查:没找到对象池");
#endif
Destroy(this.gameObject);
}
});
}
}
public void OpenVFXClick(int index)
{
for (int i = 0; i < _transform.childCount; i++)
{
_transform.GetChild(i).gameObject.SetActive(index == i);
}
}
IEnumerator StartMove(Transform trg)//开始移动
{
var dur = 0.0f;
if (this.data is PropItemWidget _trgTransform)
{
while (dur <= _time)
{
dur += Time.deltaTime;
transform.position = Vector3.Lerp(_sta, trg.position, (dur * dur) / (_time * _time));
yield return null;
}
_trgTransform.transform.GetChild(0).gameObject.SetActive(true);
}
if (_pool)
{
_pool.ReturnItem(this.transform);
}
else
{
#if UNITY_EDITOR && !UNITY_WEBGL
Debug.Log("有错误得检查:没找到对象池");
#endif
Destroy(this.gameObject);
}
}
private void Awake()
{
_pool = this.transform.parent.GetComponent();
_transform = this.transform;
}
}
///
/// 道具信息处理
///
class PropItemWidget : KUIWidget
{
#region Auto Generate
#pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
[KUIFlag]
TextMeshProUGUI _tmpName;
[KUIFlag]
TextMeshProUGUI _tmpCount;
[KUIFlag]
Image _imgIcon;
[KUIFlag]
KUIImage _imgQuality;
[KUIFlag]
KUIImage _imgLevel;
[KUIFlag]
TextMeshProUGUI _tmpLevel;
[KUIFlag]
GameObject _goVFX_yellow;
[KUIFlag]
GameObject _goVFX_red;
[KUIFlag]
GameObject _goCloseVFX_yellow;
[KUIFlag]
GameObject _goCloseVFX_red;
[KUIFlag]
GameObject _goCloseVFX_yellowRed;
[KUIFlag]
GameObject _goCloseVFX_yellowQuick;
[KUIFlag]
GameObject _goCloseVFX_redQuick;
#pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null
private bool _isShowRed = false;
#endregion
#region Method
public override void Refresh()
{
if (this.data is Item.ItemInfo info)
{
_isShowRed = false;
var prop = ItemProxy.Instance.GetStaticItem(info.id);
_imgQuality.ShowSprite(prop.quality);
IconProxy.Instance.SetSprite(_imgIcon, prop.icon);
_tmpCount.text = "X" + info.count;
if (prop.type == 3 || prop.type == 4)
{
if (prop.quality == 6)
{
_goVFX_red.SetActive(true);
_goVFX_yellow.SetActive(false);
}
else if (prop.quality == 5)
{
if (Random.Range(1, 101) > 50)
{
_goVFX_red.SetActive(false);
_goVFX_yellow.SetActive(true);
}
else
{
_goVFX_red.SetActive(true);
_goVFX_yellow.SetActive(false);
_isShowRed = true;
}
}
else
{
_goVFX_yellow.SetActive(false);
_goVFX_red.SetActive(false);
}
_goCloseVFX_red.SetActive(false);
_goCloseVFX_yellow.SetActive(false);
_goCloseVFX_yellowRed.SetActive(false);
_goCloseVFX_redQuick.SetActive(false);
_goCloseVFX_yellowQuick.SetActive(false);
}
else
{
//if (prop.quality == 6)
//{
// _goVFX_red.SetActive(false);
// _goVFX_yellow.SetActive(false);
// _goCloseVFX_red.SetActive(true);
// _goCloseVFX_yellow.SetActive(false);
//}
//else if (prop.quality == 5)
//{
// _goVFX_red.SetActive(false);
// _goVFX_yellow.SetActive(false);
// _goCloseVFX_red.SetActive(false);
// _goCloseVFX_yellow.SetActive(true);
//}
//else
//{
// _goVFX_yellow.SetActive(false);
// _goVFX_red.SetActive(false);
// _goCloseVFX_red.SetActive(false);
// _goCloseVFX_yellow.SetActive(false);
//}
_goVFX_yellow.SetActive(false);
_goVFX_red.SetActive(false);
_goCloseVFX_red.SetActive(false);
_goCloseVFX_yellow.SetActive(false);
_goCloseVFX_yellowRed.SetActive(false);
_goCloseVFX_redQuick.SetActive(false);
_goCloseVFX_yellowQuick.SetActive(false);
}
}
}
public void AllVFXCloce()
{
_goVFX_yellow.SetActive(false);
_goVFX_red.SetActive(false);
_goCloseVFX_red.SetActive(false);
_goCloseVFX_yellow.SetActive(false);
_goCloseVFX_yellowRed.SetActive(false);
_goCloseVFX_redQuick.SetActive(false);
_goCloseVFX_yellowQuick.SetActive(false);
}
public void OnGetBtnClick() //关闭自身遮罩,显示内容
{
if (this.data is Item.ItemInfo info)
{
var prop = ItemProxy.Instance.GetStaticItem(info.id);
if (!IsOpenKeepOut())
{
if (prop.quality == 6)
{
_goVFX_red.SetActive(false);
_goCloseVFX_red.SetActive(true);
Invoke(nameof(OpenCheck), 2f);
}
else if (prop.quality == 5)
{
if (!IsOpenKeepOut())
{
if (_isShowRed)
{
_goVFX_red.SetActive(false);
_goCloseVFX_yellowRed.SetActive(true);
Invoke(nameof(OpenCheck), 2f);
}
else
{
_goVFX_yellow.SetActive(false);
_goCloseVFX_yellow.SetActive(true);
Invoke(nameof(OpenCheck), 2f);
}
}
}
}
}
}
private void OpenCheck()
{
GetWindow().CheckIsOpenAll();
}
public void OpenKeepOut() //关闭自身遮罩,显示内容(被调用)
{
if (this.data is Item.ItemInfo info)
{
var prop = ItemProxy.Instance.GetStaticItem(info.id);
if (!IsOpenKeepOut())
{
if (prop.quality == 6)
{
_goVFX_red.SetActive(false);
_goCloseVFX_redQuick.SetActive(true);
}
else if (prop.quality == 5)
{
if (_isShowRed)
{
_goVFX_red.SetActive(false);
_goCloseVFX_yellowQuick.SetActive(true);
}
else
{
_goVFX_yellow.SetActive(false);
_goCloseVFX_yellowQuick.SetActive(true);
}
}
}
}
}
public bool IsOpenKeepOut() //返回自身的遮罩已关闭
{
return (_goVFX_yellow.activeSelf || _goVFX_red.activeSelf) ? false : true;
}
public int propQuality() //返回传入道具的品质
{
if (this.data is Item.ItemInfo info)
{
var prop = ItemProxy.Instance.GetStaticItem(info.id);
if (_isShowRed && prop.quality ==5)
{
return 5;
}
return (prop.quality - 1);
}
return 0;
}
private void Awake()
{
SetViewData();
var button = GetComponent