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 |  151 +++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 137 insertions(+), 14 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
index c74a737..ef7f742 100644
--- a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
+++ b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseTouchInput.cs
@@ -4,6 +4,7 @@
 using UnityEngine;
 using UnityInput = UnityEngine.Input;
 using State = TowerDefense.UI.HUD.EndlessGameUI.State;
+using KTGMGemClient;
 
 namespace TowerDefense.Input
 {
@@ -85,6 +86,7 @@
             if (InputController.instanceExists)
             {
                 InputController.instance.tapped += OnTap;
+                InputController.instance.pressed += OnPressed;
                 InputController.instance.startedDrag += OnStartDrag;
             }
 
@@ -114,6 +116,7 @@
             if (InputController.instanceExists)
             {
                 InputController.instance.tapped -= OnTap;
+                InputController.instance.pressed -= OnPressed;
                 InputController.instance.startedDrag -= OnStartDrag;
             }
             if (m_GameUI != null)
@@ -121,6 +124,11 @@
                 m_GameUI.stateChanged -= OnStateChanged;
                 m_GameUI.ghostBecameValid -= OnGhostBecameValid;
             }
+        }
+
+        private void OnPressed(PointerActionInfo pointer)
+        {
+            m_GameUI.OnPressed(pointer);
         }
 
         /// <summary>
@@ -170,6 +178,17 @@
                         break;
                 }
             }
+
+            if (isRelease)
+            {
+                resetDragingTime += Time.deltaTime;
+                if (resetDragingTime > 0.2f)
+                {
+                    isRelease = false;
+                    resetDragingTime = 0;
+                    ResetDraging();
+                }
+            }
         }
 
         /// <summary>
@@ -192,20 +211,77 @@
                 }
             }
         }
+        float currentTimeScale = 1.0f;
+        bool isRelease = false;
+        float resetDragingTime;
 
         /// <summary>
         /// Called on input release, for flicks
         /// </summary>
         protected override void OnRelease(PointerActionInfo pointer)
         {
+            //Debug.Log($"OnRelease   isDraging:{isDraging}   this.isInDragState:{this.isInDragState}");
+
+            //按照鼠标键盘的修改
             // EndDrag 只能放置相关的GhostTower.
-            if (this.isInDragState)
-                m_GameUI.onEndTowerDrag(pointer);
-            //m_GameUI.TryPlaceTower(pointer);
+            if (isDraging)
+            {
+                if (this.isInDragState)
+                {
+                    EndlessUIStart.instance.SetDarkGround(false);
 
-            this.isInDragState = false;
-            return;
+                    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.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>
@@ -217,19 +293,56 @@
             // 点击不处理
         }
 
+        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);
+            if (!isDraging)
+            {
+                Debug.Log("开始拖拽");
 
-            this.isInDragState = true;
+                isDraging = true;
+                if (GameConfig.IsNewbie)
+                {
+                    if (!GameConfig.CanDragTower)
+                    {
+                        Debug.Log("新手不可以拖拽");
+                        return;
+                    }
+
+                }
+                // select towers
+                m_GameUI.TrySelectTower(pointer);
+                // River: 为了开始拖动后可以直接显示GhostTower
+                m_GameUI.TryMoveGhost(pointer, false);
+
+                if (m_GameUI.HasTower)
+                {
+                    //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();
+                    }
+                }
+            }
         }
 
         /// <summary>
@@ -237,12 +350,22 @@
         /// </summary>
         protected override void OnDrag(PointerActionInfo pointer)
         {
-            if ((pointer != null) && (m_GameUI.isBuilding))
+            // if ((pointer != null) && (m_GameUI.isBuilding))
+            // {
+            //     m_GameUI.TryMoveGhost(pointer, false);
+            // }
+
+            // return;
+
+            //按照鼠标键盘的修改
+            if (isDraging && (pointer != null) && (m_GameUI.isBuilding))
             {
                 m_GameUI.TryMoveGhost(pointer, false);
-            }
 
-            return;
+                //m_GameUI.CheckTowerPlace(pointer);
+                m_GameUI.CheckTowerPlaceNew(pointer);
+
+            }
         }
 
         /// <summary>

--
Gitblit v1.9.1