chenxin
2020-12-03 0bc89b87a59c3f1f394a54c0901868084463cf28
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;
@@ -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;