From a284495813ac59bf191d5ef7351f21b4d26fd6a2 Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Wed, 09 Dec 2020 17:30:53 +0800 Subject: [PATCH] 克制飘字 --- Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs | 118 +++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 75 insertions(+), 43 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs index 6532c74..d7d5eb3 100644 --- a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs +++ b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs @@ -41,6 +41,7 @@ // River Add for Mouse Start Drag & Draged. controller.startedDrag += OnStartDrag; controller.dragged += this.OnDrag; + controller.pressed += OnPressed; controller.released += this.OnEndDrag; } } @@ -62,6 +63,7 @@ controller.startedDrag -= this.OnStartDrag; controller.dragged -= this.OnDrag; + controller.pressed -= OnPressed; controller.released -= this.OnEndDrag; } @@ -110,15 +112,12 @@ if (UnityInput.GetKeyDown(key)) { Tower controller = EndlessLevelManager.instance.TowerLibrary[key - KeyCode.Alpha1]; - if (EndlessLevelManager.instance.Currency.CanAfford(controller.purchaseCost)) + if (m_GameUI.isBuilding) { - if (m_GameUI.isBuilding) - { - m_GameUI.CancelGhostPlacement(); - } - EndlessGameUI.instance.SetToBuildMode(controller); - EndlessGameUI.instance.TryMoveGhost(InputController.instance.basicMouseInfo); + m_GameUI.CancelGhostPlacement(); } + EndlessGameUI.instance.SetToBuildMode(controller); + EndlessGameUI.instance.TryMoveGhost(InputController.instance.basicMouseInfo); break; } } @@ -148,46 +147,54 @@ } float currentTimeScale = 1.0f; + float dragTime = 0; + bool isDraging = false; + protected virtual void OnStartDrag(PointerActionInfo pointer) { - if (GameConfig.IsNewbie) + if (!isDraging) { - if (!GameConfig.CanDragTower) + Debug.Log("开始拖拽"); + isDraging = true; + + if (GameConfig.IsNewbie) { - Debug.Log("新手不可以拖拽"); - return; + if (!GameConfig.CanDragTower) + { + Debug.Log("新手不可以拖拽"); + return; + } } - else + // select towers + m_GameUI.TrySelectTower(pointer); + // River: 为了开始拖动后可以直接显示GhostTower + m_GameUI.TryMoveGhost(pointer, false); + + if (m_GameUI.HasTower) { - GuideCtrl.Ins.BeginDrag11_1(); + EndlessUIStart.instance.SetDarkGround(true); + + this.isInDragState = true; + AudioSourceManager.Ins.Play(AudioEnum.DragTower); + m_GameUI.CheckAllCanPlace();//检查上阵宝石有么有可以合成的位置 + + if (!GameConfig.IsNewbie) + { + //新手引导这里会把引导的速度变慢 + currentTimeScale = Time.timeScale; + Time.timeScale = 0.5f; + } + else + { + GuideCtrl.Ins.BeginDrag5_1(); + } } - } - // select towers - m_GameUI.TrySelectTower(pointer); - // River: 为了开始拖动后可以直接显示GhostTower - m_GameUI.TryMoveGhost(pointer, false); - - if (m_GameUI.HasTower) - { - EndlessUIStart.instance.SetDarkGround(true); - - this.isInDragState = true; - AudioSourceManager.Ins.Play(AudioEnum.DragTower); - m_GameUI.CheckAllCanPlace();//检查上阵宝石有么有可以合成的位置 - - if (!GameConfig.IsNewbie) - { - //新手引导这里会把引导的速度变慢 - currentTimeScale = Time.timeScale; - Time.timeScale = 0.5f; - } - } } protected override void OnDrag(PointerActionInfo pointer) { - if ((pointer != null) && (m_GameUI.isBuilding)) + if (isDraging && (pointer != null) && (m_GameUI.isBuilding)) { m_GameUI.TryMoveGhost(pointer, false); @@ -202,21 +209,46 @@ protected void OnEndDrag(PointerActionInfo pointer) { // EndDrag 只能放置相关的GhostTower. - if (this.isInDragState) + if (isDraging) { - EndlessUIStart.instance.SetDarkGround(false); + if (this.isInDragState) + { + EndlessUIStart.instance.SetDarkGround(false); + m_GameUI.CloseCanPlace();//关闭所有绿色底板 - AudioSourceManager.Ins.Play(AudioEnum.PutTower); - m_GameUI.CloseCanPlaceRenderer();//关闭所有宝石示意 - m_GameUI.onEndTowerDrag(pointer); + AudioSourceManager.Ins.Play(AudioEnum.PutTower); + m_GameUI.CloseCanPlaceRenderer();//关闭所有宝石示意 + m_GameUI.onEndTowerDrag(pointer); - this.isInDragState = false; + this.isInDragState = false; - if (!GameConfig.IsNewbie) - Time.timeScale = currentTimeScale; + if (!GameConfig.IsNewbie) + Time.timeScale = currentTimeScale; + } + Invoke("ResetDraging", 0.2f); } } + private void ResetDraging() + { + isDraging = false; + Debug.Log("isDraging = false"); + if (m_GameUI.HasTower) + { + Debug.LogError("推拽已经结束了,为什么m_GameUI.HasTower是true????,强行恢复塔位"); + m_GameUI.EndDragCancelPlaceTower(); + } + if (m_GameUI.isBuilding) + { + Debug.LogError("推拽已经结束了,为什么 m_GameUI.isBuilding是true????"); + } + } + + private void OnPressed(PointerActionInfo pointer) + { + m_GameUI.OnPressed(pointer); + } + /// <summary> /// Select towers or position ghosts /// </summary> -- Gitblit v1.9.1