From 7d526eef93f8071121dfcfcd4a039b9e51dc3d67 Mon Sep 17 00:00:00 2001
From: wangguan <wangguan@kt007.com>
Date: Mon, 07 Dec 2020 18:06:09 +0800
Subject: [PATCH] 修复了新手引导多次点击开宝箱页面BUG 所有塔不论上不上阵均受缩放影响 冰冻效果只显示1次 结算页面动效修改 修改地面

---
 Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs |   55 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 44 insertions(+), 11 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
index 9ed1409..6a90795 100644
--- a/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
+++ b/Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGridEndless.cs
@@ -5,7 +5,6 @@
 using TowerDefense.Level;
 using TowerDefense.UI.HUD;
 using UnityEngine;
-using UnityEngine.UI;
 
 namespace TowerDefense.Towers.Placement
 {
@@ -14,7 +13,7 @@
     /// Its origin is centered in the middle of the lower-right cell. It can be oriented in any direction
     /// </summary>
     [RequireComponent(typeof(BoxCollider))]
-    public class TowerPlacementGridEndless : MonoBehaviour, IPlacementArea
+    public class TowerPlacementGridEndless : Singleton<TowerPlacementGridEndless>, IPlacementArea
     {
         public static float GRID_OPENCASH = 200;
 
@@ -59,7 +58,7 @@
         /// Size of the edge of a cell
         /// </summary>
         [Tooltip("The size of the edge of one grid cell for area. Should match the physical grid size of towers")]
-        public float gridSize = 1;
+        public float gridSize = 1;//1.109
 
         /// <summary>
         /// Inverted grid size, to multiply with
@@ -86,8 +85,15 @@
 
         private float[,] m_arrCoinGenTime;
 
+        public GameObject GridContainer;
+
         /// <summary>
-        /// 每一个Tile格子的中心店的世界坐标
+        /// 所有格子对应的世界坐标
+        /// </summary>
+        private Vector3[,] GridWorldPosArr;
+
+        /// <summary>
+        /// 每一个Tile格子的中心店的屏幕坐标
         /// </summary>
         private Vector2[,] arrGridCentPos;
 
@@ -320,8 +326,6 @@
 
             return false;
         }
-
-
 
         /// <summary>
         /// 是否是等待购买的攻击塔位.
@@ -569,8 +573,9 @@
         /// <summary>
         /// Initialize values
         /// </summary>
-        protected virtual void Awake()
+        protected override void Awake()
         {
+            base.Awake();
             ResizeCollider();
 
             // Initialize empty bool array (defaults are false, which is what we want)
@@ -586,6 +591,7 @@
         {
             // 初始化塔位类型.
             initTileGridType();
+            InitGridWorldPos();
 
             // Precalculate inverted grid size, to save a division every time we translate coords
             m_InvGridSize = 1 / gridSize;
@@ -594,6 +600,35 @@
             Invoke("preCalculateGridUIPos", 0.3f);
             EventCenter.Ins.Add<int>((int)KTGMGemClient.EventType.EndlessCritBulletNumChange, OnCritBulletNumChange);
             EventCenter.Ins.Add((int)KTGMGemClient.EventType.OpenAllTowerGrid, OpenAllTowerGrid);
+        }
+
+        /// <summary>
+        /// 初始化所有格子的世界坐标(中心)
+        /// </summary>
+        private void InitGridWorldPos()
+        {
+            GridWorldPosArr = new Vector3[dimensions.x, dimensions.y];
+
+            for (int i = 0; i < dimensions.x; ++i)
+            {
+                for (int j = 0; j < dimensions.y; ++j)
+                {
+                    GridWorldPosArr[i, j] = GridToWorld(new IntVector2(i, j), new IntVector2(1, 1));
+                }
+            }
+        }
+
+        /// <summary>
+        /// 根据坐标获取格子世界坐标(中心)
+        /// </summary>
+        /// <param name="x"></param>
+        /// <param name="y"></param>
+        /// <returns></returns>
+        public Vector3 GetGridWorldPos(int x, int y)
+        {
+            if (x < 0 || x >= dimensions.x || y < 0 || y >= dimensions.y) return new Vector3();
+
+            return GridWorldPosArr[x, y];
         }
 
         /// <summary>
@@ -620,7 +655,7 @@
         {
             arrGridCentPos = new Vector2[dimensions.x, dimensions.y];
 
-            Vector3 targetPos = GridToWorld(new IntVector2(0, 0), new IntVector2(1, 1));
+            Vector3 targetPos = GetGridWorldPos(0, 0);
 
             if (!ViewPortAdj.instance.bAdjViewPort)
                 ViewPortAdj.instance.adjViewportRect();
@@ -915,11 +950,9 @@
 
             for (int tx = 0; tx < dimensions.x; tx++)
             {
-                // cx test
                 m_arrGridType[tx, sy - 1] = PlacementGridType.EGridWaitBuy;
                 m_arrGridType[tx, sy] = PlacementGridType.EGridOpen;
             }
-            // m_arrGridType[2, 3] = PlacementGridType.EGridOpen;
             ++GameConfig.EndlessOpenAttackTowerCount;
         }
 
@@ -1018,7 +1051,7 @@
                 {
                     for (int x = 0; x < dimensions.x; x++)
                     {
-                        Vector3 targetPos = GridToWorld(new IntVector2(x, y), new IntVector2(1, 1));
+                        Vector3 targetPos = GetGridWorldPos(x, y);
                         targetPos.z -= 1.0f;
                         PlacementTile newTile = Instantiate(tileToUse);
                         newTile.transform.parent = tilesParent.transform;

--
Gitblit v1.9.1