From dcbbe82ceca921e73e1789ae87ea8ac6a59c7bff Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Thu, 17 Dec 2020 15:54:41 +0800 Subject: [PATCH] 增加技能特效 --- Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs | 121 ++++++++++++++++++++++++++++++---------- 1 files changed, 91 insertions(+), 30 deletions(-) diff --git a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs index 3ab491a..c1975c4 100644 --- a/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs +++ b/Assets/Scripts/TowerDefense/Input/EndlessTowerDefenseKeyboardMouseInput.cs @@ -5,6 +5,7 @@ using UnityEngine; using UnityInput = UnityEngine.Input; using State = TowerDefense.UI.HUD.EndlessGameUI.State; +using KTGMGemClient; namespace TowerDefense.Input { @@ -40,6 +41,7 @@ // River Add for Mouse Start Drag & Draged. controller.startedDrag += OnStartDrag; controller.dragged += this.OnDrag; + controller.pressed += OnPressed; controller.released += this.OnEndDrag; } } @@ -61,6 +63,7 @@ controller.startedDrag -= this.OnStartDrag; controller.dragged -= this.OnDrag; + controller.pressed -= OnPressed; controller.released -= this.OnEndDrag; } @@ -109,15 +112,12 @@ if (UnityInput.GetKeyDown(key)) { Tower controller = EndlessLevelManager.instance.TowerLibrary[key - KeyCode.Alpha1]; - if (EndlessLevelManager.instance.Currency.CanAfford(controller.purchaseCost)) + if (m_GameUI.isBuilding) { - if (m_GameUI.isBuilding) - { - m_GameUI.CancelGhostPlacement(); - } - EndlessGameUI.instance.SetToBuildMode(controller); - EndlessGameUI.instance.TryMoveGhost(InputController.instance.basicMouseInfo); + m_GameUI.CancelGhostPlacement(); } + EndlessGameUI.instance.SetToBuildMode(controller); + EndlessGameUI.instance.TryMoveGhost(InputController.instance.basicMouseInfo); break; } } @@ -138,55 +138,116 @@ void OnMouseMoved(PointerInfo pointer) { // We only respond to mouse info - var mouseInfo = pointer as MouseCursorInfo; + // var mouseInfo = pointer as MouseCursorInfo; - if ((mouseInfo != null) && (m_GameUI.isBuilding)) - { - m_GameUI.TryMoveGhost(pointer, false); - } + // if ((mouseInfo != null) && (m_GameUI.isBuilding)) + // { + // m_GameUI.TryMoveGhost(pointer, false); + // } } float currentTimeScale = 1.0f; + float dragTime = 0; + bool isDraging = false; + protected virtual void OnStartDrag(PointerActionInfo pointer) { - // select towers - m_GameUI.TrySelectTower(pointer); - // River: 为了开始拖动后可以直接显示GhostTower - m_GameUI.TryMoveGhost(pointer, false); + if (!isDraging) + { + Debug.Log("开始拖拽"); + isDraging = true; - this.isInDragState = true; - AudioSourceManager.Ins.Play(AudioEnum.DragTower); - m_GameUI.CheckAllCanPlace();//检查上阵宝石有么有可以合成的位置 + if (GameConfig.IsNewbie) + { + if (!GameConfig.CanDragTower) + { + Debug.Log("新手不可以拖拽"); + return; + } + } + // select towers + m_GameUI.TrySelectTower(pointer); + // River: 为了开始拖动后可以直接显示GhostTower + m_GameUI.TryMoveGhost(pointer, false); - currentTimeScale = Time.timeScale; - Time.timeScale = 0.5f; + if (m_GameUI.HasTower) + { + 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); + //m_GameUI.CheckTowerPlace(pointer); + m_GameUI.CheckTowerPlaceNew(pointer); - m_GameUI.CheckTowerPlace(pointer); } } + /// <summary> + /// 鼠标抬起 + /// </summary> + /// <param name="pointer"></param> protected void OnEndDrag(PointerActionInfo pointer) { // EndDrag 只能放置相关的GhostTower. - if (this.isInDragState) + if (isDraging) { - AudioSourceManager.Ins.Play(AudioEnum.PutTower); + if (this.isInDragState) + { + EndlessUIStart.instance.SetDarkGround(false); + m_GameUI.CloseCanPlace();//关闭所有绿色底板 + + AudioSourceManager.Ins.Play(AudioEnum.PutTower); + m_GameUI.CloseCanPlaceRenderer();//关闭所有宝石示意 + m_GameUI.onEndTowerDrag(pointer); + + this.isInDragState = false; + + if (!GameConfig.IsNewbie) + Time.timeScale = currentTimeScale; + } + Invoke("ResetDraging", 0.2f); } - m_GameUI.CloseCanPlaceRenderer();//关闭所有宝石示意 - m_GameUI.onEndTowerDrag(pointer); + } - this.isInDragState = false; + 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????"); + } + } - Time.timeScale = currentTimeScale; - + private void OnPressed(PointerActionInfo pointer) + { + m_GameUI.OnPressed(pointer); } /// <summary> -- Gitblit v1.9.1