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