From 2a9bc6e5b08ab61ca66f8fff73e8baea34e04316 Mon Sep 17 00:00:00 2001
From: lcy <1459594991@qq.com>
Date: 星期三, 11 二月 2026 20:56:33 +0800
Subject: [PATCH] 461 限时冲刺-客户端 任务完成提示
---
Main/System/TimeRush/TimeRushTipWin.cs | 140 ++++++++++++++++++++++++++++++++++++++++++++++
Main/System/TimeRush/TimeRushTipWin.cs.meta | 11 +++
Main/System/TimeRush/TimeRushManager.cs | 12 ++-
3 files changed, 158 insertions(+), 5 deletions(-)
diff --git a/Main/System/TimeRush/TimeRushManager.cs b/Main/System/TimeRush/TimeRushManager.cs
index 5fce2e5..32e850c 100644
--- a/Main/System/TimeRush/TimeRushManager.cs
+++ b/Main/System/TimeRush/TimeRushManager.cs
@@ -248,6 +248,8 @@
// <杞洖绫诲瀷, 涓婁竴娆$殑CurValue>
public Dictionary<int, int> lastCurValueDict = new Dictionary<int, int>();
+
+ public event Action OnNewAwardHaveEvent;
public void CheckNewAwardHave(int roundType, int curRound, int curValue)
{
if (lastCurRoundDict.ContainsKey(roundType) && lastCurValueDict.ContainsKey(roundType))
@@ -276,11 +278,11 @@
newAwardType = round.AwardType;
newAwardTypeValue = (int)round.AwardTypeValue;
newAwardIndex = Award.AwardIndex;
- // if (!DTC0403_tagPlayerLoginLoadOK.neverLoginOk && !WindowCenter.Instance.IsOpen<CycleHallAchievementTipWin>())
- // {
- // WindowCenter.Instance.Open<CycleHallAchievementTipWin>();
- // }
- // UpdateNewAwardHave?.Invoke();
+ if (!UIManager.Instance.IsOpened<TimeRushTipWin>())
+ {
+ UIManager.Instance.OpenWindow<TimeRushTipWin>();
+ }
+ OnNewAwardHaveEvent?.Invoke();
}
}
}
diff --git a/Main/System/TimeRush/TimeRushTipWin.cs b/Main/System/TimeRush/TimeRushTipWin.cs
new file mode 100644
index 0000000..129df72
--- /dev/null
+++ b/Main/System/TimeRush/TimeRushTipWin.cs
@@ -0,0 +1,140 @@
+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();
+ }
+}
diff --git a/Main/System/TimeRush/TimeRushTipWin.cs.meta b/Main/System/TimeRush/TimeRushTipWin.cs.meta
new file mode 100644
index 0000000..0a032c9
--- /dev/null
+++ b/Main/System/TimeRush/TimeRushTipWin.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f5d65c473483e9a468f8c7a9866199ba
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
--
Gitblit v1.8.0