少年修仙传客户端代码仓库
10290 运势-客户端 如果动画播放超过5秒就恢复初始状态显示抽奖结果, 预防doteen动画异常中断导致卡住
1个文件已修改
49 ■■■■ 已修改文件
System/LoopAct/YunShi/YunShiXBActWin.cs 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/LoopAct/YunShi/YunShiXBActWin.cs
@@ -51,6 +51,7 @@
        YunShiXBActModel model { get { return ModelCenter.Instance.GetModelEx<YunShiXBActModel>(); } }
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        bool isWaitPack = false;
        bool isAnimPlay = false;
        protected override void AddListeners()
        {
            btnSkip.SetListener(() =>
@@ -102,6 +103,7 @@
            WindowCenter.Instance.uiRoot.eventSystem.enabled = true;
            ItemLogicUtility.Instance.hidePickItem = true;
            isWaitPack = false;
            isAnimPlay = false;
            happyXBModel.RefreshXBTypeInfoAct += OnRefreshXBTypeInfoAct;
            model.PlayAnimationSync += OnPlaySyncAnimation;
            packModel.refreshItemCountEvent += OnRefreshItemCountEvent;
@@ -146,22 +148,46 @@
            packModel.refreshItemCountEvent -= OnRefreshItemCountEvent;
            happyXBModel.RefreshXBResultAct -= RefreshXBResult;
        }
        private Clock animationTimeoutClock;
        private void RefreshXBResult()
        {
            isWaitPack = false;
            isAnimPlay = false;
            // 取消之前的定时器(如果有)
            StopClock();
            WindowCenter.Instance.uiRoot.eventSystem.enabled = false;
            if (model.isSkipXB)
            {
                ShowGetItem();
            }
            else
            {
                Reset();
                MoveAndDisappear();
                isAnimPlay = true;
                // 设置动画超时回调
                animationTimeoutClock = Clock.AlarmAfter(5.0f, () =>
                {
                    if (!isAnimPlay)
                        return;
                    Reset();
                    WindowCenter.Instance.uiRoot.eventSystem.enabled = true;
                    ShowGetItem();
                });
            }
        }
        // 取消定时器(如果有)
        void StopClock()
        {
            if (animationTimeoutClock != null)
            {
                Clock.Stop(animationTimeoutClock);
                animationTimeoutClock = null;
            }
        }
        private void OnRefreshItemCountEvent(PackType type1, int arg2, int arg3)
        {
            if (type1 != PackType.Item)
@@ -272,6 +298,10 @@
        private void Reset()
        {
            isAnimPlay = false;
            // 取消动画超时定时器
            StopClock();
            qianTongUIEffect.Stop();
            for (int i = 0; i < haveUIEffects.Count; i++)
@@ -303,7 +333,8 @@
            {
                DOTween.Kill(item.transform);
            }
            currentMoveSequence.Kill(false);
            currentShakeSequence.Kill(false);
            transQianTong.transform.position = transStartQianTong.transform.position;
            transQianTong.transform.rotation = transStartQianTong.transform.rotation;
@@ -318,7 +349,7 @@
        private Sequence currentMoveSequence;
        public void MoveAndDisappear()
        {
            if (currentMoveSequence != null && currentMoveSequence.IsActive())
            {
                currentMoveSequence.Kill(false);
@@ -327,7 +358,7 @@
            foreach (YunShiXBItem item in yunShiXBItems)
            {
                currentMoveSequence.Join(item.transform.DOMove(transItemMissEnd.position, 0.5f).SetEase(Ease.InOutSine).OnComplete(() => { 
                   item.SetActive(false);
                    item.SetActive(false);
                }));
            }
            currentMoveSequence.Join(transQianTong.transform.DORotate(new Vector3(0, 0, -5), 0.3f).SetEase(Ease.InOutSine).OnComplete(() => { qianTongUIEffect.Play(); }));
@@ -337,6 +368,10 @@
        private void ShowGetItem()
        {
            // 取消动画超时定时器
            StopClock();
            WindowCenter.Instance.uiRoot.eventSystem.enabled = true;
            if (happyXBModel.title == HappXBTitle.YunShi1 || happyXBModel.title == HappXBTitle.YunShi2 || happyXBModel.title == HappXBTitle.YunShi3 || happyXBModel.title == HappXBTitle.YunShi4)
            {
                var xbItemlist = happyXBModel.rangelist;
@@ -349,13 +384,10 @@
                    itemList.Add(new Item(xbItem.itemId, (ulong)xbItem.count));
                }
                ItemLogicUtility.Instance.ShowGetItem(itemList, seconds: 0, func: () => { 
                    happyXBModel.rangelist.Clear();
                    Reset();
                    Display();
                });
                WindowCenter.Instance.uiRoot.eventSystem.enabled = true;
            }
        }
@@ -452,6 +484,7 @@
                        qianPositionTweens[i].Stop();
                        qianPositionTweens[i].SetStartState();
                    }
                    //isAnimPlay = false;
                    Clock.AlarmAfter(0.5, ShowGetItem);
                });
            });