From 17c6e8b6f2aee4ed9a15c886f54a73f0cb61b125 Mon Sep 17 00:00:00 2001
From: weixudong <weixudong4700@ktgame.com>
Date: Wed, 09 Dec 2020 17:14:59 +0800
Subject: [PATCH] Merge branch 'master' of ssh://172.16.1.52:8091/GemBattle into master

---
 Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs |  151 +++++++++++++++++++++++++++++++++----------------
 1 files changed, 101 insertions(+), 50 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
index 4590996..6916e90 100644
--- a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
+++ b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
@@ -178,6 +178,17 @@
                         break;
                 }
             }
+
+            if (isRelease)
+            {
+                resetDragingTime += Time.deltaTime;
+                if (resetDragingTime > 0.2f)
+                {
+                    isRelease = false;
+                    resetDragingTime = 0;
+                    ResetDraging();
+                }
+            }
         }
 
         /// <summary>
@@ -201,36 +212,76 @@
             }
         }
         float currentTimeScale = 1.0f;
+        bool isRelease = false;
+        float resetDragingTime;
 
         /// <summary>
         /// Called on input release, for flicks
         /// </summary>
         protected override void OnRelease(PointerActionInfo pointer)
         {
-            // // EndDrag 只能放置相关的GhostTower.
-            // if (this.isInDragState)
-            //     m_GameUI.onEndTowerDrag(pointer);
-            // //m_GameUI.TryPlaceTower(pointer);
-
-            // this.isInDragState = false;
-            // return;
+            //Debug.Log($"OnRelease   isDraging:{isDraging}   this.isInDragState:{this.isInDragState}");
 
             //按照鼠标键盘的修改
             // EndDrag 只能放置相关的GhostTower.
-            if (this.isInDragState)
+            if (isDraging)
             {
-                EndlessUIStart.instance.SetDarkGround(false);
+                if (this.isInDragState)
+                {
+                    EndlessUIStart.instance.SetDarkGround(false);
 
-                AudioSourceManager.Ins.Play(AudioEnum.PutTower);
+                    AudioSourceManager.Ins.Play(AudioEnum.PutTower);
+                    m_GameUI.CloseCanPlace();//关闭所有绿色底板
+                    m_GameUI.CloseCanPlaceRenderer();//关闭所有宝石示意
+                    m_GameUI.onEndTowerDrag(pointer);
+
+                    this.isInDragState = false;
+
+                    if (!GameConfig.IsNewbie)
+                        Time.timeScale = currentTimeScale;
+                }
+                Debug.Log($"延迟0.2f执行ResetDraging isDraging:{isDraging}  isRelease:{isRelease}");
+
+                //Invoke("ResetDraging", 0.2f);
+
+                if (!isRelease)
+                {
+                    //Debug.Log("开始倒计时");
+                    resetDragingTime = 0.0f;
+                    isRelease = true;
+                }
+
+            }
+
+        }
+
+        private void ResetDraging()
+        {
+            //Debug.Log("ResetDraging");
+            Debug.Log("延迟查询");
+            if (m_GameUI.HasTower)
+            {
+                Debug.Log("m_GameUI.HasTower!!!!");
+
+                m_GameUI.CloseCanPlace();//关闭所有绿色底板
                 m_GameUI.CloseCanPlaceRenderer();//关闭所有宝石示意
-                m_GameUI.onEndTowerDrag(pointer);
+                m_GameUI.EndDragCancelPlaceTower();//强制释放
+
+                EndlessUIStart.instance.SetDarkGround(false);
 
                 this.isInDragState = false;
 
                 if (!GameConfig.IsNewbie)
+                {
                     Time.timeScale = currentTimeScale;
+                }
+                //Debug.LogError("推拽已经结束了,强行恢复塔位了 , m_GameUI.HasTower:" + m_GameUI.HasTower);
             }
-
+            if (m_GameUI.isBuilding)
+            {
+                //Debug.LogError("推拽已经结束了,为什么 m_GameUI.isBuilding是true????");
+            }
+            isDraging = false;
         }
 
         /// <summary>
@@ -242,54 +293,54 @@
             // 点击不处理
         }
 
+        float dragTime = 0;
+        bool isDraging = false;
+
         /// <summary>
         /// Assigns the drag pointer and sets the UI into drag mode
         /// </summary>
         /// <param name="pointer"></param>
         protected virtual void OnStartDrag(PointerActionInfo pointer)
         {
-            // //Debug.Log("TouchInput StartDraged.");
-            // // select towers
-            // m_GameUI.TrySelectTower(pointer);
-            // // River: 为了开始拖动后可以直接显示GhostTower
-            // m_GameUI.TryMoveGhost(pointer, false);
-
-            // this.isInDragState = true;
-            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);
-
-            CommonDebugHelper.Debug("OnStartDrag");
-            if (m_GameUI.HasTower)
-            {
-                CommonDebugHelper.Debug("m_GameUI.HasTower:" + 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();
+                    //Debug.Log("点击到了塔,开始推拽");
+
+                    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();
+                    }
                 }
             }
         }
@@ -307,7 +358,7 @@
             // return;
 
             //按照鼠标键盘的修改
-            if ((pointer != null) && (m_GameUI.isBuilding))
+            if (isDraging && (pointer != null) && (m_GameUI.isBuilding))
             {
                 m_GameUI.TryMoveGhost(pointer, false);
 

--
Gitblit v1.9.1