| | |
| | | using UnityEngine; |
| | | using UnityInput = UnityEngine.Input; |
| | | using State = TowerDefense.UI.HUD.EndlessGameUI.State; |
| | | using KTGMGemClient; |
| | | |
| | | namespace TowerDefense.Input |
| | | { |
| | |
| | | // River Add for Mouse Start Drag & Draged. |
| | | controller.startedDrag += OnStartDrag; |
| | | controller.dragged += this.OnDrag; |
| | | controller.pressed += OnPressed; |
| | | controller.released += this.OnEndDrag; |
| | | } |
| | | } |
| | |
| | | |
| | | controller.startedDrag -= this.OnStartDrag; |
| | | controller.dragged -= this.OnDrag; |
| | | controller.pressed -= OnPressed; |
| | | controller.released -= this.OnEndDrag; |
| | | } |
| | | |
| | |
| | | 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; |
| | | } |
| | | } |
| | |
| | | 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); |
| | | if (GameConfig.IsNewbie) |
| | | { |
| | | if (!GameConfig.CanDragTower) |
| | | { |
| | | Debug.Log("新手不可以拖拽"); |
| | | return; |
| | | } |
| | | } |
| | | // select towers |
| | | m_GameUI.TrySelectTower(pointer); |
| | | // River: 为了开始拖动后可以直接显示GhostTower |
| | | m_GameUI.TryMoveGhost(pointer, false); |
| | | |
| | | //Debug.Log("开始拖拽"); |
| | | 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.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????"); |
| | | } |
| | | } |
| | | |
| | | //Debug.Log("结束拖拽"); |
| | | |
| | | private void OnPressed(PointerActionInfo pointer) |
| | | { |
| | | m_GameUI.OnPressed(pointer); |
| | | } |
| | | |
| | | /// <summary> |