From c1b222b305ce0baa9468019254dc43138b067094 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Fri, 20 Nov 2020 20:01:07 +0800 Subject: [PATCH] 拖动提示 --- Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs | 113 +++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 99 insertions(+), 14 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs index dd297f4..e74ef6b 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs @@ -882,6 +882,13 @@ { if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) { + // if (m_CurrentArea != null && m_CurrentTower.controller.gridPosition.y >= 2) + // { + // //修改为只要开启格子都可以放 + // (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_CurrentTower.controller.gridPosition.x, m_CurrentTower.controller.gridPosition.y, false, ""); + // //(m_CurrentArea as TowerPlacementGridEndless).PlayPS(allPSTowerP); + // } + return; List<IntVector2> allTowerP = null;//排除不能合成的 // List<IntVector2> allPSTowerP = new List<IntVector2>();//需要播放升级动画的 @@ -944,6 +951,8 @@ } } + Tower checkTowerPlaceTower;//移动时候查看鼠标是否检测到有塔 + Tower bInAttackModeTower;//在合成区的塔 /// <summary> /// 检查符合条件的塔 /// </summary> @@ -953,37 +962,92 @@ //return; if (m_CurrentArea != null && m_CurrentArea is TowerPlacementGridEndless) { + checkTowerPlaceTower = isFreeAttackGridOnDrag(pointerInfo); //下面是为了设置一个虚拟的塔 - if (isFreeAttackGridOnDrag(pointerInfo) && m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) + if (checkTowerPlaceTower != null) { - //Debug.Log("得到了一个空的塔位"); + if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) + { + if (checkTowerPlaceTower.bInAttackMode) + { + //鼠标检测到了塔 + (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, false, ""); + } + else + { + if (!towerToMove.bInAttackMode) + { + //没有上阵 + if (bInAttackModeTower == null) + { + bInAttackModeTower = checkTowerPlaceTower; + bInAttackModeTower.currentTowerLevel.SetCanPlace(true); + } + else if (bInAttackModeTower != checkTowerPlaceTower) + { - (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, false, ""); - //if(temporaryMat) + bInAttackModeTower.currentTowerLevel.SetCanPlace(false); + bInAttackModeTower = checkTowerPlaceTower; + bInAttackModeTower.currentTowerLevel.SetCanPlace(true); + } + } + + } + } + else if (m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Fire || m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb) + { + //技能宝石没有上阵 + if (bInAttackModeTower == null) + { + bInAttackModeTower = checkTowerPlaceTower; + bInAttackModeTower.currentTowerLevel.SetCanPlace(true); + } + else if (bInAttackModeTower != checkTowerPlaceTower) + { + + bInAttackModeTower.currentTowerLevel.SetCanPlace(false); + bInAttackModeTower = checkTowerPlaceTower; + bInAttackModeTower.currentTowerLevel.SetCanPlace(true); + } + } } else if ((m_GridPosition.x >= 0) && (m_GridPosition.y >= 0)) { + //查看是否是一个空格子 if (m_CurrentArea.isFreeAtackPos(m_GridPosition.x, m_GridPosition.y)) { - (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, true, towerToMove.towerName); + if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) + { + //空格子 + (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, true, towerToMove.towerName); + } } else { - (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace(); + CloseCanPlace(); } } else { - (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace(); + CloseCanPlace(); } } else { - //Debug.Log("什么情况"); if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) { dragTowerPlacement.CloseCanPlace(); } + } + } + + void CloseCanPlace() + { + dragTowerPlacement.CloseCanPlace(); + if (bInAttackModeTower != null) + { + bInAttackModeTower.currentTowerLevel.SetCanPlace(false); + bInAttackModeTower = null; } } @@ -994,24 +1058,45 @@ /// </summary> /// <param name="pinfo"></param> /// <returns></returns> - protected bool isFreeAttackGridOnDrag(PointerInfo pinfo) + protected Tower isFreeAttackGridOnDrag(PointerInfo pinfo) { // 判断格子上的塔防: UIPointer pointer = WrapPointer(pinfo); Tower sTower = PickTowerInGrid(pointer); if (sTower != null) { - if (sTower.bInAttackMode && towerToMove && sTower.currentLevel == dragTowerLevel && sTower.towerName == towerToMove.towerName) + + // if (towerToMove && sTower.currentLevel == dragTowerLevel && sTower.towerName == towerToMove.towerName) + // { + // //说明可以合成 + // return sTower; + // } + // else + // { + // return null; + // } + + if (towerToMove) { - //说明可以合成 - return true; + if (towerToMove.bInAttackMode) + { + return sTower; + } + else + { + if (sTower.currentLevel == dragTowerLevel && sTower.towerName == towerToMove.towerName) + { + //说明可以合成 + return sTower; + } + } } else { - return false; + return null; } } - return false; + return null; } #endregion -- Gitblit v1.9.1