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 |  106 +++++++++++++++++++++++++++++++++++------------------
 1 files changed, 70 insertions(+), 36 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs
index aa1c01a..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;
         }
 
@@ -145,47 +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;
+                    }
                 }
+                // select towers
+                m_GameUI.TrySelectTower(pointer);
+                // River: 为了开始拖动后可以直接显示GhostTower
+                m_GameUI.TryMoveGhost(pointer, false);
 
-            }
-            // 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)
+                if (m_GameUI.HasTower)
                 {
-                    //新手引导这里会把引导的速度变慢
-                    currentTimeScale = Time.timeScale;
-                    Time.timeScale = 0.5f;
-                }
-                else
-                {
-                    GuideCtrl.Ins.BeginDrag5_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();
+                    }
+                }
             }
         }
 
         protected override void OnDrag(PointerActionInfo pointer)
         {
-            if ((pointer != null) && (m_GameUI.isBuilding))
+            if (isDraging && (pointer != null) && (m_GameUI.isBuilding))
             {
                 m_GameUI.TryMoveGhost(pointer, false);
 
@@ -200,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