From adb0dae8a82a7eabb4e686bc0e83c8859bf6445f Mon Sep 17 00:00:00 2001
From: chenxin <chenxin6991@163.com>
Date: Fri, 25 Dec 2020 10:48:53 +0800
Subject: [PATCH] Merge branch 'master' of http://47.95.218.140:8090/r/GemBattle into master

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

diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs
index 3814f55..9c93218 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>
@@ -332,6 +335,44 @@
             // ATTENTION TO FIX: 先写死,有一个简单的逻辑再说:
             if (m_listTower.Count >= MAX_TOWERNUM)
                 disableRandomTowerBtn();
+        }
+
+        public void PlayBuffPS(int get_buffID)
+        {
+            //Debug.Log("开始播放特效");
+            int targetID = 0;
+            switch (get_buffID)
+            {
+                case 0:
+                    //无特效
+                    break;
+                case 1:
+                    for (int i = 0; i < m_listTower.Count; i++)
+                    {
+                        m_listTower[i].CurrentTowerLevel.ShowBuffPS();
+                    }
+                    break;
+                case 2:
+                    targetID = 101;
+                    break;
+                case 3:
+                    targetID = 201;
+                    break;
+                case 4:
+                    targetID = 301;
+                    break;
+            }
+            if (targetID > 1)
+            {
+                for (int i = 0; i < m_listTower.Count; i++)
+                {
+                    if (m_listTower[i].ElfId == targetID)
+                    {
+                        m_listTower[i].CurrentTowerLevel.ShowBuffPS();
+                    }
+                }
+            }
+
         }
 
         /// <summary>
@@ -510,6 +551,13 @@
             {
                 return;
             }
+            if (state == State.GameOver)
+            {
+                CommonDebugHelper.DebugError("已经游戏结束了,为什么还在修改状态");
+                return;
+            }
+            CommonDebugHelper.Debug($"设置了状态 state:{state} newState:{newState} ");
+
             State oldState = state;
             if (oldState == State.Paused || oldState == State.GameOver)
             {
@@ -545,6 +593,8 @@
         /// </summary>
         public void GameOver()
         {
+            CommonDebugHelper.Debug("游戏结束了");
+
             SetState(State.GameOver);
         }
 
@@ -1149,19 +1199,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 +1261,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 +1423,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 +1636,7 @@
             return controller;
         }
 
+        private Vector2 dragOffect = new Vector2(0, -55f);
         /// <summary>
         /// Position the ghost tower at the given pointer
         /// </summary>
@@ -1592,15 +1649,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>
@@ -2216,6 +2287,8 @@
             }
             //placeObj = GameObject.FindGameObjectWithTag("PlaceTowerOpponent");
             EventCenter.Ins.Add((int)KTGMGemClient.EventType.EndlessHeartAllLose, AllHeartLose);
+            EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.PlayBuffPS, PlayBuffPS);
+
         }
 
         /// <summary>
@@ -2473,6 +2546,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 +2663,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