From 938aa4da26e0109e16ded70d13a43c187498b901 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Sat, 12 Dec 2020 15:29:34 +0800
Subject: [PATCH] Merge branch 'master' of http://172.16.1.52:8090/r/GemBattle

---
 Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs |  162 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 111 insertions(+), 51 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
index 2b47080..ef7f742 100644
--- a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
+++ b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
@@ -86,6 +86,7 @@
             if (InputController.instanceExists)
             {
                 InputController.instance.tapped += OnTap;
+                InputController.instance.pressed += OnPressed;
                 InputController.instance.startedDrag += OnStartDrag;
             }
 
@@ -115,6 +116,7 @@
             if (InputController.instanceExists)
             {
                 InputController.instance.tapped -= OnTap;
+                InputController.instance.pressed -= OnPressed;
                 InputController.instance.startedDrag -= OnStartDrag;
             }
             if (m_GameUI != null)
@@ -122,6 +124,11 @@
                 m_GameUI.stateChanged -= OnStateChanged;
                 m_GameUI.ghostBecameValid -= OnGhostBecameValid;
             }
+        }
+
+        private void OnPressed(PointerActionInfo pointer)
+        {
+            m_GameUI.OnPressed(pointer);
         }
 
         /// <summary>
@@ -171,6 +178,17 @@
                         break;
                 }
             }
+
+            if (isRelease)
+            {
+                resetDragingTime += Time.deltaTime;
+                if (resetDragingTime > 0.2f)
+                {
+                    isRelease = false;
+                    resetDragingTime = 0;
+                    ResetDraging();
+                }
+            }
         }
 
         /// <summary>
@@ -194,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>
@@ -235,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();
+                    }
                 }
             }
         }
@@ -300,11 +358,13 @@
             // return;
 
             //按照鼠标键盘的修改
-            if ((pointer != null) && (m_GameUI.isBuilding))
+            if (isDraging && (pointer != null) && (m_GameUI.isBuilding))
             {
                 m_GameUI.TryMoveGhost(pointer, false);
 
-                m_GameUI.CheckTowerPlace(pointer);
+                //m_GameUI.CheckTowerPlace(pointer);
+                m_GameUI.CheckTowerPlaceNew(pointer);
+
             }
         }
 

--
Gitblit v1.9.1