River Jiang
2020-10-28 4fe7a27d965c1433c940d5b3eaa13930fa999621
Assets/Scripts/TowerDefense/Towers/Placement/TowerPlacementGrid.cs
@@ -8,6 +8,7 @@
using TMPro.Examples;
using TowerDefense.Level;
using TowerDefense.UI.HUD;
using UnityEditor;
using UnityEngine;
using UnityEngine.Analytics;
using UnityEngine.UI;
@@ -54,7 +55,12 @@
        /// </summary>
        public Button waitBuyBtnPrefab;
        // TEST CODE:
        /// <summary>
        /// 充能特效对应的Prefab.
        /// </summary>
        public ParticleSystem energyEffectPrefab;
        // TEST CODE TO DELETE:
        public ParticleSystem TestParticle;
        protected ParticleSystem PlayParticle;
        protected Timer effectStopTimer;
@@ -121,6 +127,7 @@
        Vector2[] m_arrTowerBulletUIPos;
        BulletUICtl[] arrTowerBulletUi;
        EnergyUICtl[] arrTowerEnergyUi;
        ParticleSystem[] arrTowerEnergyEffect;
        /// <summary>
@@ -316,15 +323,26 @@
            }
        }
        void Update()
        protected void partilceUpdate()
        {
            /*         if (bTimerStart)
            if (bTimerStart)
                        {
                            if (effectStopTimer.Tick(Time.deltaTime))
                            {
                                bTimerStart = false;
                                effectStopTimer.Reset();
                            }
            }
            if (UnityEngine.Input.GetKeyDown(KeyCode.Q))
            {
                this.PlayEnergyEffect(2, true);
                return;
            }
            if (UnityEngine.Input.GetKeyDown(KeyCode.W))
            {
                this.PlayEnergyEffect(2, false);
                return;
                        }
                        // TEST CODE TO DELETE:
@@ -334,19 +352,29 @@
                            if (UnityEngine.Input.GetKeyDown(KeyCode.E))
                            {
                                PlayParticle = Instantiate(TestParticle);
                                PlayParticle.transform.position = this.transform.position;
                                Vector3 lookVec = Vector3.zero;
                                lookVec.x = 1;
                                PlayParticle.transform.LookAt(lookVec);
                    Vector3 tpos = this.transform.position;
                    tpos.y += 5.0f;
                    PlayParticle.transform.position = tpos;
                    //Vector3 lookVec = Vector3.zero;
                    //lookVec.x = 1;
                    //PlayParticle.transform.LookAt(lookVec);
                                PlayParticle.Play();
                                effectStopTimer.SetTime( 0.15f );
                                bTimerStart = true;
                    //effectStopTimer.SetTime(0.15f);
                    //bTimerStart = true;
                            }
                            if (UnityEngine.Input.GetKeyDown(KeyCode.F))
                            {
                                PlayParticle.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear);
                            }
                        }*/
            }
        }
        void Update()
        {
            //
            // TEST CODE TO DELETE:
            partilceUpdate();
            if (m_arrCoinGenTime == null) return;
@@ -731,6 +759,7 @@
            m_arrTowerBulletUIPos = new Vector2[dimensions.x];
            arrTowerBulletUi = new BulletUICtl[dimensions.x];
            arrTowerEnergyUi = new EnergyUICtl[dimensions.x];
            arrTowerEnergyEffect = new ParticleSystem[dimensions.x];
            for (int x = 0; x < dimensions.x; x++)
            {
@@ -768,12 +797,40 @@
                img.transform.SetAsFirstSibling();
                EnergyUICtl euc = img.GetComponent<EnergyUICtl>();
                arrTowerEnergyUi[x] = euc;
                // euc.gameObject.SetActive(false);
                euc.gameObject.SetActive(false);
                // 设置播放特效对应的3D坐标:
                Vector3 vpos = GridToWorld(new IntVector2(x, dy), new IntVector2(2, 1));
                vpos.x -= (gridSize / 2.0f);
                vpos.y += 5.0f;
                arrTowerEnergyEffect[x] = Instantiate( energyEffectPrefab );
                arrTowerEnergyEffect[x].transform.position = vpos;
                arrTowerEnergyEffect[x].Stop();
            }
            return;
        }
        /// <summary>
        /// 在指定的位置播放充能成功的特效.
        /// </summary>
        /// <param name="x"></param>
        /// <param name="play">是播放还是停止播放</param>
        public void PlayEnergyEffect( int x,bool play = true )
        {
            if (!arrTowerEnergyEffect[x]) return;
            if( play)
            {
                arrTowerEnergyEffect[x].Play();
            }
            else
            {
                arrTowerEnergyEffect[x].Stop();
            }
            return;
        }
        public void updateGridOpenCoin(int ix, int iy)
        {