| | |
| | | /// </summary> |
| | | public float attackRise { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 用于界面部分的数据位移 |
| | | /// </summary> |
| | | protected int progressOffset = 0; |
| | | |
| | | public bool PlayWaveLineFlash { get; set; } = true; |
| | | |
| | | /// <summary> |
| | | /// 塔防数据的局内升级 |
| | |
| | | { |
| | | get; set; |
| | | } |
| | | |
| | | public int uiProOffset |
| | | { |
| | | get { return this.progressOffset; } |
| | | set { this.progressOffset = value; } |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// Gets whether the tower can level up anymore |
| | |
| | | public bool opponentSide { get; set; } |
| | | |
| | | /// <summary> |
| | | /// 播放充能状态特效. |
| | | /// </summary> |
| | | /// <param name="play"></param> |
| | | public void PlayEnergyEffect(bool play) |
| | | { |
| | | if (this.energyCtl) |
| | | energyCtl.gameObject.SetActive(!play); |
| | | |
| | | if (!opponentSide) |
| | | { |
| | | if (GameUI.instanceExists) |
| | | ((TowerPlacementGrid)GameUI.instance.selfTowerPlaceArea).PlayEnergyEffect(gridPosition.x, play); |
| | | else if (EndlessGameUI.instanceExists) |
| | | ((TowerPlacementGridEndless)EndlessGameUI.instance.selfTowerPlaceArea).PlayEnergyEffect(gridPosition.x, gridPosition.y, play); |
| | | } |
| | | else |
| | | ((TowerPlacementGrid)OpponentMgr.instance.m_CurrentArea).PlayEnergyEffect(gridPosition.x, play); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 当前是否处于攻击模式 |
| | | /// </summary> |
| | | public bool bInAttackMode |
| | |
| | | if (value) |
| | | { |
| | | if (opponentSide) |
| | | currentTowerLevel.SetTowerMonsterMat(materialMonsterOppo); |
| | | currentTowerLevel.SetTowerMonsterMat(materialTowerWaitOppo); |
| | | else |
| | | currentTowerLevel.SetTowerMonsterMat(materialMonsterSelf); |
| | | currentTowerLevel.SetTowerMonsterMat(materialTowerWaitSelf); |
| | | |
| | | // 处理Tower |
| | | this.setTowerState(false); |
| | |
| | | else if (EndlessLevelManager.instanceExists) |
| | | { |
| | | EndlessLevelManager.instance.SetTowerAttID(gridPosition.x, attributeId, this.currentLevel); |
| | | EndlessWaveLineManager.instance.AttackTowerFixed(gridPosition.x); |
| | | EndlessWaveLineManager.instance.AttackTowerFixed(gridPosition.x, PlayWaveLineFlash); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | } |
| | | } |
| | | |
| | | /// <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> |
| | | /// 充能技能相关的代码开关。包括子弹充能和时间充能 |
| | |
| | | public Action towerDestroyed; |
| | | |
| | | /// <summary> |
| | | /// 放置到目标位置 |
| | | /// </summary> |
| | | /// <param name="destination"></param> |
| | | public virtual void SetToDestination(IntVector2 destination) |
| | | { |
| | | gridPosition = destination; |
| | | transform.position = placementArea.GridToWorld(destination, dimensions); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// Provide the tower with data to initialize with |
| | | /// </summary> |
| | | /// <param name="targetArea">The placement area configuration</param> |
| | |
| | | // |
| | | // 初始化当前的局内Tower等级数据 |
| | | this.initInSceneTowerLevel(SceneTowerLvl.getInSceneTowerLvl(this.towerName)); |
| | | |
| | | if (gridPosition.y > 1) |
| | | { |
| | | currentTowerLevel.ResetScale(); |
| | | }else{ |
| | | currentTowerLevel.NormalScale(); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |