From ca7b565cd73e47a4c83189e35544c892b781cea1 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Tue, 22 Dec 2020 10:00:23 +0800
Subject: [PATCH] 修改拖拽 增加未开启塔位增加红色标记

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

diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
index 3814f55..399979d 100644
--- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
+++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
@@ -189,6 +189,9 @@
         /// </summary>
         Camera m_Camera;
 
+        //Camera m_CameraBG;
+
+
         /// <summary>
         /// Current tower placeholder. Will be null if not in the <see cref="State.Building" /> state.
         /// </summary>
@@ -1149,19 +1152,21 @@
                     else if (m_GridPosition.y == 2 || m_GridPosition.y == 3)
                     {
                         //Debug.Log("已上阵区域,如果是空格子就强行吸附,先判断是否有塔");
-
+                        //pointerInfo.currentPosition += new Vector2(0, -25f);
                         checkTowerPlaceTower = isFreeAttackGridOnDrag(pointerInfo);
 
                         if (checkTowerPlaceTower != null)
                         {
                             //Debug.Log(checkTowerPlaceTower.name);
+                            //Debug.Log($"checkTowerPlaceTower.name:{checkTowerPlaceTower.name}  m_GridPosition:{m_GridPosition}");
 
                             if (m_CurrentTower.controller.towerFeature == EFeatureTower.NULL)
                             {
                                 if (checkTowerPlaceTower.bInAttackMode)
                                 {
+                                    //Debug.Log("检测到了塔");
                                     //鼠标检测到了塔
-                                    (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, false, "");
+                                    (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(checkTowerPlaceTower.gridPosition.x, checkTowerPlaceTower.gridPosition.y, false, "");
                                 }
                                 else
                                 {
@@ -1209,9 +1214,13 @@
                             }
                             else
                             {
-                                CloseCanPlace();
+                                //CloseCanPlace();
 
                                 //Debug.Log("上阵区域,没有开放的塔位");
+
+                                (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, true, "");
+
+                                m_CurrentTower.transform.position = (m_CurrentArea as TowerPlacementGridEndless).GridToWorld(m_GridPosition, m_CurrentTower.controller.dimensions);
                             }
                         }
                     }
@@ -1367,7 +1376,7 @@
             if (sTower == null)
                 return false;
 
-            Debug.Log("开始检测是否可以交换塔");
+            //Debug.Log("开始检测是否可以交换塔");
             //if (sTower.bInAttackMode == towerToMove.bInAttackMode)
             {
                 IntVector2 v1 = new IntVector2(towerToMove.gridPosition.x, towerToMove.gridPosition.y);
@@ -1580,6 +1589,7 @@
             return controller;
         }
 
+        private Vector2 dragOffect = new Vector2(0, -55f);
         /// <summary>
         /// Position the ghost tower at the given pointer
         /// </summary>
@@ -1592,15 +1602,29 @@
                 return;
                 //throw new InvalidOperationException("Trying to move the tower ghost when we don't have one");
             }
+            // 我操,终于可以了!ATTENTION TO OPP:
+            PointerInfo tp = new PointerActionInfo();
+            tp.currentPosition = pointerInfo.currentPosition + dragOffect;
+            tp.previousPosition = pointerInfo.previousPosition;
+            tp.delta = pointerInfo.delta;
+            tp.startedOverUI = pointerInfo.startedOverUI;
 
-            UIPointer pointer = WrapPointer(pointerInfo);
+            UIPointer npt = new UIPointer
+            {
+                overUI = false,
+                pointer = tp,
+                overWaveLine = false,
+                ray = m_Camera.ScreenPointToRay(tp.currentPosition)
+            };
+
+            //UIPointer pointer = WrapPointer(tp);
             // Do nothing if we're over UI
-            if (pointer.overUI && hideWhenInvalid)
+            if (npt.overUI && hideWhenInvalid)
             {
                 m_CurrentTower.Hide();
                 return;
             }
-            MoveGhost(pointer, hideWhenInvalid);
+            MoveGhost(npt, hideWhenInvalid);
         }
 
         /// <summary>
@@ -2473,6 +2497,8 @@
 
             state = State.Normal;
             m_Camera = GameObject.Find("SceneCamera3D").GetComponent<Camera>();
+            //m_Camera = GameObject.Find("BackCamera").GetComponent<Camera>();
+
             //m_Camera = GetComponent<Camera>();
             TowerDestroyArr = new bool[5, AttackRowNumbers];
         }
@@ -2588,7 +2614,7 @@
             // WORK START: 从这里开始,移动的时候与场景内的WaveSelEffect射线做碰撞。  
             // Raycast onto placement layer
             PlacementAreaRaycast(ref npt);
-
+            //Debug.Log("npt.raycast:" + npt.raycast);
             if (npt.raycast != null)
             {
                 MoveGhostWithRaycastHit(npt.raycast.Value);

--
Gitblit v1.9.1