Assets/Scripts/TowerDefense/Affectors/AttackAffector.cs | ●●●●● patch | view | raw | blame | history | |
Assets/Scripts/TowerDefense/Towers/Tower.cs | ●●●●● patch | view | raw | blame | history | |
Assets/Scripts/TowerDefense/UI/BulletUICtl.cs | ●●●●● patch | view | raw | blame | history | |
Assets/Scripts/TowerDefense/UI/EnergyUICtl.cs | ●●●●● patch | view | raw | blame | history | |
Assets/Scripts/TowerDefense/UI/HUD/GameUI.cs | ●●●●● 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) { 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,12 @@ { get; set; } public int uiProOffset { get { return this.progressOffset; } } /// <summary> /// Gets whether the tower can level up anymore @@ -223,6 +233,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,6 +24,26 @@ } /// <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; this.SetEnergyProgress(pro); } /// <summary> /// 显示并更新能量条进度. /// </summary> /// <param name="pro"></param> 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)