From 0dc1c2ac4f2efedc715bc5bb6a0a0ffe5d134f32 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Sat, 12 Dec 2020 17:19:04 +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