chenxin
2020-10-27 43b531f76be6e12c775a1135f6895e8fdc389a59
Merge branch 'master' of http://172.16.1.52:8090/r/GemBattle into master
5 files modified
156 ■■■■■ changed files
Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs 3 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Towers/Tower.cs 78 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/BulletUICtl.cs 20 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/EnergyUICtl.cs 26 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/UI/HUD/GameUI.cs 29 ●●●●● patch | view | raw | blame | history
Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs
@@ -259,6 +259,7 @@
                    this.energyCalTime += Time.deltaTime;
                    float process = energyCalTime % 11.0f;
                    int proint = (int)Math.Floor(process);
                    proint += towerPtr.uiProOffset;
                    towerPtr.energyCtl.SetEnergyProgress(proint);
                    if (proint == 10)
                    {
@@ -267,6 +268,8 @@
                        // 设置多倍攻击速度
                        fBackupTimer = m_FireTimer;
                        m_FireTimer = m_FireTimer / 3.0f;
                        towerPtr.uiProOffset = 0;
                    }
                }
                else
Assets/Scripts/TowerDefense/Towers/Tower.cs
@@ -119,6 +119,10 @@
        /// </summary>
        public float attackRise { get; set; }
        /// <summary>
        /// 用于界面部分的数据位移
        /// </summary>
        protected int progressOffset = 0;
        /// <summary>
        /// 塔防数据的局内升级
@@ -127,6 +131,13 @@
        {
            get; set;
        }
        public int uiProOffset
        {
            get { return this.progressOffset; }
            set { this.progressOffset = value; }
        }
        /// <summary>
        /// Gets whether the tower can level up anymore
@@ -223,6 +234,73 @@
        }
        /// <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()
Assets/Scripts/TowerDefense/UI/BulletUICtl.cs
@@ -27,6 +27,26 @@
        resetToMaxBullet();
    }
    /// <summary>
    /// 获取进度条进度.
    /// </summary>
    /// <returns></returns>
    public int GetCtlProgress()
    {
        return this.curBulletNum;
    }
    /// <summary>
    /// 设置进度.
    /// </summary>
    /// <param name="pro"></param>
    public void SetCtlProcess( int pro)
    {
        this.curBulletNum = pro;
        this.updateBulletUI(pro, maxBulletNum);
    }
    /// <summary>
    /// 重设子弹数目到最大.
    /// </summary>
Assets/Scripts/TowerDefense/UI/EnergyUICtl.cs
@@ -24,14 +24,38 @@
    }
    /// <summary>
    /// 获取进度条进度.
    /// </summary>
    /// <returns></returns>
    public int GetCtlProgress()
    {
        return currentProgress;
    }
    /// <summary>
    /// 设置进度.
    /// </summary>
    /// <param name="pro"></param>
    public void SetCtlProcess(int pro)
    {
        if (pro == 10)
            pro = 0;
        energyScaleMask.rectTransform.DOKill();
        this.SetEnergyProgress(pro,false);
    }
    /// <summary>
    /// 显示并更新能量条进度.
    /// </summary>
    /// <param name="pro"></param>
    public void SetEnergyProgress(int pro)
    public void SetEnergyProgress(int pro,bool ani = true)
    {
        if (pro == currentProgress) return;
        if( ani )
        energyScaleMask.rectTransform.DOScaleY( pro / 10.0f, 0.3f );
        else
            energyScaleMask.rectTransform.DOScaleY(pro / 10.0f, 0.0f);
        currentProgress = pro;
    }
Assets/Scripts/TowerDefense/UI/HUD/GameUI.cs
@@ -192,6 +192,12 @@
        protected Tower towerToMove = null;
        /// <summary>
        /// UI界面对应的进度
        /// </summary>
        protected int uiCtlProgresss = 0;
        /// <summary>
        /// Fires when the <see cref="State"/> changes
        /// should only allow firing when TouchUI is used
        /// </summary>
@@ -342,6 +348,10 @@
        public void delTower(Tower t)
        {
            // 删除Tower之前去掉充能条数据.
            if( t.bInAttackMode)
                t.DisableTowerUICtrl();
            // 删除Tower有可能对应的Timer.
            foreach (var tdata in towerTimeDic)
            {
@@ -580,12 +590,21 @@
                break;
            }
            //
            // 重设界面数据
            uiCtlProgresss = 0;
            // 从列表中删除Tower.并破坏Tower的外形。
            dragTowerLevel = towerOld.currentLevel;
            // 尝试不再删除原来的Tower,而是尝试在合成成功后再删除原来的Tower
            towerOld.showTower(false);
            towerToMove = towerOld;
            if( towerOld.bInAttackMode)
            {
                int pro = towerOld.GetTowerUICtrlProgress();
                uiCtlProgresss = pro;
            }
            // 先删除,再设置移动相关。
            SetToDragMode(newT);
@@ -835,7 +854,17 @@
                // 开启相应的兵线:
                Tower tw = FindTowerWithGridIdx(m_GridPosition.x, m_GridPosition.y);
                if (tw != null)
                {
                    LevelManager.instance.startWaveLine(m_GridPosition.x, false, tw.attributeId);
                    // 顺便设置界面的进展
                    if (uiCtlProgresss > 0)
                    {
                        tw.SetTowerUICtlProcess(uiCtlProgresss);
                        Debug.Log("设置当前的进度:" + uiCtlProgresss);
                        uiCtlProgresss = 0;
                    }
                }
            }
            // 当前是Skill塔位的状态.
            else if (bSkill)