using System.Collections.Generic;
|
using UnityEngine;
|
|
public class TimeRushTipWin : UIBase
|
{
|
[SerializeField] RectTransform tip;
|
[SerializeField] ButtonEx clickBtn;
|
[SerializeField] TextEx awardTipText;
|
[SerializeField] List<ItemCell> itemCells = new List<ItemCell>();
|
[SerializeField] PositionTween positionTween;
|
[SerializeField] float waitTime = 3.0f;
|
[SerializeField] float moveDurationTime = 1.0f; // 移动持续时间
|
[SerializeField] RectTransform startPos; // 初始位置
|
[SerializeField] RectTransform downPos; // 往下移动位置
|
[SerializeField] RectTransform upPos; // 往上移动位置
|
|
int roundType;
|
int awardType;
|
int awardTypeValue;
|
int awardIndex;
|
float openTime;
|
|
private enum MoveState
|
{
|
MovingDown,
|
Staying,
|
MovingUp,
|
Finished
|
}
|
|
MoveState currentState;
|
TimeRushManager manager { get { return TimeRushManager.Instance; } }
|
|
protected override void InitComponent()
|
{
|
clickBtn.SetListener(() =>
|
{
|
if (UIManager.Instance.IsOpened<TimeRushWin>())
|
{
|
UIManager.Instance.CloseWindow<TimeRushWin>();
|
}
|
var list = manager.GetTabIDList();
|
if (list.IsNullOrEmpty())
|
return;
|
if (!ActLunhuidianTypeConfig.TryGetConfig(roundType, 1, out var config) || !list.Contains(config.ID))
|
return;
|
UIManager.Instance.OpenWindow<TimeRushWin>(config.ID);
|
});
|
}
|
|
protected override void OnPreOpen()
|
{
|
manager.OnNewAwardHaveEvent += OnNewAwardHaveEvent;
|
ResetAnimation();
|
}
|
|
protected override void OnPreClose()
|
{
|
manager.OnNewAwardHaveEvent -= OnNewAwardHaveEvent;
|
}
|
|
void LateUpdate()
|
{
|
|
if (currentState == MoveState.Staying)
|
{
|
if (Time.time - openTime > waitTime)
|
{
|
currentState = MoveState.MovingUp;
|
positionTween.reversal = true;
|
positionTween.from = downPos.anchoredPosition;
|
positionTween.to = upPos.anchoredPosition;
|
positionTween.duration = moveDurationTime;
|
positionTween.Play(OnMoveUpComplete);
|
}
|
}
|
}
|
|
private void OnMoveDownComplete()
|
{
|
currentState = MoveState.Staying;
|
openTime = Time.time;
|
}
|
|
private void OnMoveUpComplete()
|
{
|
currentState = MoveState.Finished;
|
if (UIManager.Instance.IsOpened<TimeRushTipWin>())
|
{
|
UIManager.Instance.CloseWindow<TimeRushTipWin>();
|
}
|
}
|
|
private void Display()
|
{
|
roundType = manager.newRoundType;
|
awardType = manager.newAwardType;
|
awardTypeValue = manager.newAwardTypeValue;
|
awardIndex = manager.newAwardIndex;
|
|
|
if (!manager.TryGetOperationInfo(out var act) || !act.TryGetRoundInfoByIndex(roundType, awardIndex, out var award, out int listIndex) || award.AwardItemList == null)
|
return;
|
|
awardTipText.text = Language.Get($"TimeRushTaskTitle_{awardType}_{awardTypeValue}", award.NeedValue);
|
|
for (int i = 0; i < itemCells.Count; i++)
|
{
|
var itemBaisc = itemCells[i];
|
if (i < award.AwardItemList.Length)
|
{
|
var itemInfo = award.AwardItemList[i];
|
itemBaisc.SetActive(true);
|
itemBaisc.Init(new ItemCellModel((int)itemInfo.ItemID, false, itemInfo.ItemCount));
|
}
|
else
|
{
|
itemBaisc.SetActive(false);
|
}
|
}
|
}
|
|
private void OnNewAwardHaveEvent()
|
{
|
ResetAnimation();
|
}
|
|
private void ResetAnimation()
|
{
|
currentState = MoveState.MovingDown;
|
openTime = Time.time;
|
tip.anchoredPosition = startPos.anchoredPosition;
|
positionTween.reversal = false;
|
positionTween.from = startPos.anchoredPosition;
|
positionTween.to = downPos.anchoredPosition;
|
positionTween.duration = moveDurationTime;
|
positionTween.Play(OnMoveDownComplete);
|
Display();
|
}
|
}
|