From 921ba9372bc0b8be17b00fd0e1240c10ac61403e Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Tue, 10 Nov 2020 17:59:16 +0800 Subject: [PATCH] 拖拽标记塔位 --- Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs | 86 +++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 82 insertions(+), 4 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs index 84cc7e9..71ae8ab 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs @@ -842,20 +842,96 @@ overTimer = null; } + #region 拖动时候给塔位一个标识 + public MeshRenderer temporaryMat;//移动时候的虚像材质 + /// <summary> + /// 查找可以合成的塔 + /// </summary> + public void CheckAllCanPlace() + { + List<IntVector2> allTowerP = new List<IntVector2>(); + for (int i = 0; i < m_listTower.Count; i++) + { + if (m_listTower[i].bInAttackMode && towerToMove && m_listTower[i].currentLevel == dragTowerLevel && m_listTower[i].towerName == towerToMove.towerName) + { + //说明可以合成 + } + else + { + //把不符合条件的传进去 + allTowerP.Add(m_listTower[i].gridPosition); + } + } + + (m_CurrentArea as TowerPlacementGridEndless).CheckAllCanPlace(allTowerP); + } + + /// <summary> + /// 关闭所有标识 + /// </summary> + public void CloseCanPlaceRenderer() + { + (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlaceRenderer(); + } + + /// <summary> + /// 检查符合条件的塔 + /// </summary> + /// <param name="pointerInfo"></param> public void CheckTowerPlace(PointerInfo pointerInfo) { - return; + //return; //下面是为了设置一个虚拟的塔 - if (isFreeAttackGrid(pointerInfo) && m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) + if (isFreeAttackGridOnDrag(pointerInfo) && m_CurrentTower.controller.towerFeature == EFeatureTower.NULL) { - Debug.Log("得到了一个空的塔位"); + //Debug.Log("得到了一个空的塔位"); - (m_CurrentArea as TowerPlacementGridEndless).GetMeshRender(m_GridPosition.x, m_GridPosition.y, "1"); + (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y); //if(temporaryMat) } + else + { + (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace(); + } } + + /// <summary> + /// 目标位置是否是可攻击属性的空塔位 + /// </summary> + /// <param name="pinfo"></param> + /// <returns></returns> + protected bool 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) + { + //说明可以合成 + return true; + } + else + { + return false; + } + } + + if ((m_GridPosition.x >= 0) && (m_GridPosition.y >= 0)) + { + if (m_CurrentArea.isFreeAtackPos(m_GridPosition.x, m_GridPosition.y)) + { + return true; + } + } + + return false; + } + + #endregion /// <summary> /// 拖动一个Tower之后,松开鼠标或者EndDrag. @@ -1829,6 +1905,8 @@ CalSelTowerScreenOffset(info, controller); } + + /// <summary> /// 鼠标选中一个Tower的时候,计算当前鼠标位置与当前Tower位置在屏幕上坐标位置的偏移量。 /// </summary> -- Gitblit v1.9.1