From 6f32c1848f141eb7c4b2fe32875b2dfde5f5226c Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Wed, 11 Nov 2020 20:12:27 +0800
Subject: [PATCH] 拖拽BUG

---
 Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs |   57 ++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 42 insertions(+), 15 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
index 2c9d9f1..d3b37f9 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
+++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -1,4 +1,5 @@
-using Core.Health;
+using System.Globalization;
+using Core.Health;
 using Core.Input;
 using Core.Utilities;
 using DG.Tweening;
@@ -177,6 +178,12 @@
         /// Current tower placeholder. Will be null if not in the <see cref="State.Building" /> state.
         /// </summary>
         TowerPlacementGhost m_CurrentTower;
+
+        public bool HasTower{
+            get{
+                return m_CurrentTower!=null;
+            }
+        }
 
         // TowerList用于简单记录相关的数据
         protected List<Tower> m_listTower = new List<Tower>();
@@ -891,13 +898,19 @@
         /// </summary>
         public void CloseCanPlaceRenderer()
         {
-            if (m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Fire || m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb)
+            if (m_CurrentTower && m_CurrentTower.controller && m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Fire || m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb)
             {
-                //Debug.Log("需要激活兵线下方绿色标识");
                 EventCenter.Ins.BroadCast((int)KTGMGemClient.EventType.EndlessStartDragSkill, false);
             }
+
             if (m_CurrentArea != null)
                 (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlaceRenderer();
+            else
+            {
+                GameObject placeObj = GameObject.FindGameObjectWithTag("PlaceTower");
+                if (placeObj != null)
+                    (placeObj.GetComponent<IPlacementArea>() as TowerPlacementGridEndless).CloseCanPlaceRenderer();
+            }
         }
 
         /// <summary>
@@ -914,16 +927,36 @@
                 {
                     //Debug.Log("得到了一个空的塔位");
 
-                    (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y);
+                    (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, false, "");
                     //if(temporaryMat)
+                }
+                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);
+                    }
+                    else
+                    {
+                        (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace();
+                    }
                 }
                 else
                 {
                     (m_CurrentArea as TowerPlacementGridEndless).CloseCanPlace();
                 }
             }
-
+            else
+            {
+                //Debug.Log("什么情况");
+                if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL)
+                {
+                    dragTowerPlacement.CloseCanPlace();
+                }
+            }
         }
+
+        TowerPlacementGridEndless dragTowerPlacement;
 
         /// <summary>
         /// 目标位置是否是可攻击属性的空塔位
@@ -947,15 +980,6 @@
                     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;
         }
 
@@ -1763,7 +1787,10 @@
             // 获取相应的放置区域。
             GameObject placeObj = GameObject.FindGameObjectWithTag("PlaceTower");
             if (placeObj != null)
+            {
                 m_CurrentArea = placeObj.GetComponent<IPlacementArea>();
+                dragTowerPlacement = placeObj.GetComponent<IPlacementArea>() as TowerPlacementGridEndless; 
+            }
             placeObj = GameObject.FindGameObjectWithTag("PlaceTowerOpponent");
             EventCenter.Ins.Add((int)KTGMGemClient.EventType.EndlessHeartAllLose, AllHeartLose);
         }
@@ -2163,7 +2190,7 @@
                     }
                 }
                 // 炸弹是区域攻击显示:
-                if (m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb)
+                else if (m_CurrentTower.controller.towerFeature == EFeatureTower.Skill_Bomb)
                 {
                     // 测试代码与战场区域碰撞,碰撞后显示攻击区域:
                     BattleAreaRaycast(ref npt);

--
Gitblit v1.9.1