From 00451158ba904571b1c6c755f34292dc76e25d80 Mon Sep 17 00:00:00 2001
From: River Jiang <546213258@qq.com>
Date: Wed, 28 Oct 2020 14:47:51 +0800
Subject: [PATCH] 替换新的充能条特效

---
 Assets/Scripts/TowerDefense/Towers/Tower.cs |  208 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 185 insertions(+), 23 deletions(-)

diff --git a/Assets/Scripts/TowerDefense/Towers/Tower.cs b/Assets/Scripts/TowerDefense/Towers/Tower.cs
index d354c9a..7305372 100644
--- a/Assets/Scripts/TowerDefense/Towers/Tower.cs
+++ b/Assets/Scripts/TowerDefense/Towers/Tower.cs
@@ -62,6 +62,8 @@
         /// </summary>
         public Material materialTowerAttackSelf;
         public Material materialTowerWaitSelf;
+        public Material materialTowerAttackOppo;
+        public Material materialTowerWaitOppo;
 
         /// <summary>
         /// 0 空状态  1 等待状态  2 攻击状态.
@@ -73,6 +75,7 @@
         /// </summary>
         public ETowerFuntion eTowerFuntion = ETowerFuntion.NULL;
         public BulletUICtl bulletCtl = null;
+        public EnergyUICtl energyCtl = null;
 
         /// <summary>
         /// The tower levels associated with this tower
@@ -117,12 +120,24 @@
         public float attackRise { get; set; }
 
         /// <summary>
+        /// 用于界面部分的数据位移
+        /// </summary>
+        protected int progressOffset = 0;
+
+        /// <summary>
         /// 塔防数据的局内升级
         /// </summary>
         public int inSceneTowerLevel
         {
             get; set;
         }
+
+        public int uiProOffset
+        {
+            get { return this.progressOffset; } 
+            set { this.progressOffset = value; }
+        }
+
 
         /// <summary>
         /// Gets whether the tower can level up anymore
@@ -136,16 +151,33 @@
         {
             if (!materialTowerAttackSelf) return;
 
-            if (attack && (this.curActionState != 2))
+            if (opponentSide)
             {
-                currentTowerLevel.SetTowerMonsterMat(materialTowerAttackSelf);
-                this.curActionState = 2;
-            }
+                if (attack && (this.curActionState != 2))
+                {
+                    currentTowerLevel.SetTowerMonsterMat(materialTowerAttackOppo);
+                    this.curActionState = 2;
+                }
 
-            if ((!attack) && (this.curActionState != 1))
+                if ((!attack) && (this.curActionState != 1))
+                {
+                    currentTowerLevel.SetTowerMonsterMat(materialTowerWaitOppo);
+                    this.curActionState = 1;
+                }
+            }
+            else
             {
-                currentTowerLevel.SetTowerMonsterMat(materialTowerWaitSelf);
-                this.curActionState = 1;
+                if (attack && (this.curActionState != 2))
+                {
+                    currentTowerLevel.SetTowerMonsterMat(materialTowerAttackSelf);
+                    this.curActionState = 2;
+                }
+
+                if ((!attack) && (this.curActionState != 1))
+                {
+                    currentTowerLevel.SetTowerMonsterMat(materialTowerWaitSelf);
+                    this.curActionState = 1;
+                }
             }
         }
 
@@ -153,6 +185,39 @@
         /// 是否是对手塔防
         /// </summary>
         public bool opponentSide { get; set; }
+
+        /// <summary>
+        /// 播放充能状态特效.
+        /// </summary>
+        /// <param name="play"></param>
+        public void PlayEnergyEffect( bool play)
+        {
+            if (this.energyCtl)
+                energyCtl.gameObject.SetActive(!play);
+
+            if( play)
+            {
+                if( !opponentSide)
+                {
+                    ((TowerPlacementGrid)GameUI.instance.selfTowerPlaceArea).PlayEnergyEffect(gridPosition.x, true);
+                }
+                else
+                {
+                    ((TowerPlacementGrid)OpponentMgr.instance.m_CurrentArea).PlayEnergyEffect(gridPosition.x, true);
+                }
+            }
+            else
+            {
+                if ( !opponentSide)
+                {
+                    ((TowerPlacementGrid)GameUI.instance.selfTowerPlaceArea).PlayEnergyEffect(gridPosition.x, false);
+                }
+                else
+                {
+                    ((TowerPlacementGrid)OpponentMgr.instance.m_CurrentArea).PlayEnergyEffect(gridPosition.x, false);
+                }
+            }
+        }
 
         /// <summary>
         /// 当前是否处于攻击模式
@@ -171,11 +236,10 @@
                     if (opponentSide)
                         currentTowerLevel.SetTowerMonsterMat(materialMonsterOppo);
                     else
-                    {
                         currentTowerLevel.SetTowerMonsterMat(materialMonsterSelf);
-                        this.setTowerState(false);
-                    }
-                        
+
+                    // 处理Tower
+                    this.setTowerState(false);
 
                     if (opponentSide)
                     {
@@ -195,24 +259,122 @@
                         }
                     }
 
-                    // 
-                    // 根据是否是子弹塔防来决定是否显示相应的界面
-                    if (this.eTowerFuntion == ETowerFuntion.BULLET)
-                    {
-                        BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x);
-                        if (buc)
-                        {
-                            buc.gameObject.SetActive(true);
-                            this.bulletCtl = buc;
-                            buc.resetToMaxBullet();
-                        }  
-                    }
+                    // 处理塔位边上的界面.
+                    OnTowerUICtrl();
                 }
 
             }
         }
 
         /// <summary>
+        /// 去掉当前Tower对应的界面数据.
+        /// </summary>
+        public void DisableTowerUICtrl()
+        {
+            // 根据是否是子弹塔防来决定是否显示相应的界面
+            BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x, gridPosition.y);
+
+            if ((this.eTowerFuntion == ETowerFuntion.BULLET) && (buc != null))
+            {
+                buc.gameObject.SetActive(false);
+                this.bulletCtl = null;
+            }
+
+            EnergyUICtl euc = placementArea.GetEnergyUICtl(gridPosition.x, gridPosition.y);
+            if ((eTowerFuntion == ETowerFuntion.ENERGY) && (euc != null))
+            {
+                // 设置数据
+                euc.gameObject.SetActive(false);
+                this.energyCtl = null;
+            }
+
+            return;
+       }
+
+        public int GetTowerUICtrlProgress()
+        {
+            // 根据是否是子弹塔防来决定是否显示相应的界面
+            BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x, gridPosition.y);
+
+            if ((this.eTowerFuntion == ETowerFuntion.BULLET) && (buc != null))
+                return buc.GetCtlProgress();
+
+            EnergyUICtl euc = placementArea.GetEnergyUICtl(gridPosition.x, gridPosition.y);
+            if ((eTowerFuntion == ETowerFuntion.ENERGY) && (euc != null))
+                return euc.GetCtlProgress();
+
+            return 0;
+        }
+
+        public void SetTowerUICtlProcess( int pro)
+        {
+            // 根据是否是子弹塔防来决定是否显示相应的界面
+            BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x, gridPosition.y);
+
+            if ((this.eTowerFuntion == ETowerFuntion.BULLET) && (buc != null))
+            {
+                buc.SetCtlProcess(pro);
+                progressOffset = pro;
+            }
+
+                EnergyUICtl euc = placementArea.GetEnergyUICtl(gridPosition.x, gridPosition.y);
+            if ((eTowerFuntion == ETowerFuntion.ENERGY) && (euc != null))
+            {
+                euc.SetCtlProcess(pro);
+                progressOffset = pro;
+                if (progressOffset == 10)
+                    progressOffset = 0;
+            }
+
+
+
+                return;
+        }
+
+
+
+        /// <summary>
+        /// 充能技能相关的代码开关。包括子弹充能和时间充能
+        /// </summary>
+        protected void OnTowerUICtrl()
+        {
+            // 根据是否是子弹塔防来决定是否显示相应的界面
+            BulletUICtl buc = this.placementArea.GetBulletUICtl(gridPosition.x, gridPosition.y);
+
+            if (buc == null) return;
+
+            if ((this.eTowerFuntion == ETowerFuntion.BULLET) && (buc != null))
+            {
+                // 设置数据
+                buc.gameObject.SetActive(true);
+                this.bulletCtl = buc;
+                buc.resetToMaxBullet();
+            }
+            else
+            {
+                // 清空数据
+                buc.gameObject.SetActive(false);
+                this.bulletCtl = null;
+            }
+
+            // 根据是否是能量充能来决定是否显示相应的界面.
+            EnergyUICtl euc = placementArea.GetEnergyUICtl(gridPosition.x, gridPosition.y);
+            if ((eTowerFuntion == ETowerFuntion.ENERGY) && (euc != null))
+            {
+                // 设置数据
+                euc.gameObject.SetActive(true);
+                this.energyCtl = euc;
+                euc.SetEnergyProgress(0);
+            }
+            else
+            {
+                // 清空数据
+                euc.gameObject.SetActive(false);
+                this.energyCtl = null;
+            }
+        }
+
+        /// <summary>
         /// 初始化当前塔防的局内升级,lvl从1开始.
         /// </summary>
         /// <param name="lvl"></param>

--
Gitblit v1.9.1