| New file |
| | |
| | | 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(); |
| | | } |
| | | } |