From fe4457c2ff07dcea1cccd6886188a334ef9c196b Mon Sep 17 00:00:00 2001 From: chenxin <chenxin6991@163.com> Date: Fri, 06 Nov 2020 01:54:23 +0800 Subject: [PATCH] 无尽模式上阵宝石位置互换 火技能特效销毁时间调整 --- Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs | 67 ++++++++++++++++++++++++++++++++- 1 files changed, 64 insertions(+), 3 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs index 9b1bd1b..babb6dc 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs @@ -642,6 +642,29 @@ } /// <summary> + /// 判断是否有不同类型的Tower,可以发生置换,仅限于火木水之间发生 + /// </summary> + /// <param name="pinfo"></param> + /// <returns></returns> + protected bool IsSubstitute(PointerInfo pinfo) + { + if (!m_CurrentTower || !IsGhostAtValidPosition()) + { + // 判断格子上的塔防: + UIPointer pointer = WrapPointer(pinfo); + Tower sTower = PickTowerInGrid(pointer); + + if (sTower && sTower != towerToMove) + { + if (towerToMove && sTower.towerFeature == EFeatureTower.NULL && towerToMove.towerFeature == EFeatureTower.NULL && sTower.bInAttackMode == towerToMove.bInAttackMode) + return true; + } + } + + return false; + } + + /// <summary> /// 获取目标格子上的塔防的名字数据 /// </summary> /// <param name="pinfo"></param> @@ -829,6 +852,40 @@ towerToMove = null; } } + else if (EndlessLevelManager.instanceExists && IsSubstitute(pointerInfo)) + { + // 可以发生置换 + UIPointer pointer = WrapPointer(pointerInfo); + // 格子上的塔 + Tower sTower = PickTowerInGrid(pointer); + + if (sTower.bInAttackMode == towerToMove.bInAttackMode) + { + IntVector2 v1 = new IntVector2(towerToMove.gridPosition.x, towerToMove.gridPosition.y); + IntVector2 v2 = new IntVector2(sTower.gridPosition.x, sTower.gridPosition.y); + + Tower newTower1 = PlaceTowerForce(EndlessRandomTower.instance.getTowerByName(sTower.towerName), v1, sTower.currentLevel + 1, false); + Tower newTower2 = PlaceTowerForce(m_CurrentTower.controller, v2, towerToMove.currentLevel + 1, false); + + if (towerToMove != null) + { + delTower(towerToMove); + towerToMove.showTower(true); + towerToMove.Sell(); + towerToMove = null; + } + + delTower(sTower); + sTower.showTower(true); + sTower.Sell(); + sTower = null; + + CancelGhostPlacement(); + + newTower1.placementArea.Occupy(newTower1.gridPosition, newTower1.dimensions); + newTower2.placementArea.Occupy(newTower2.gridPosition, newTower2.dimensions); + } + } // 当前是Skill塔位的状态. else if (bSkill) { @@ -859,19 +916,23 @@ /// <param name="newTower"></param> /// <param name="pos"></param> /// <param name="level">塔的等级</param> - public void PlaceTowerForce(Tower newTower, IntVector2 pos, int level) + public Tower PlaceTowerForce(Tower newTower, IntVector2 pos, int level, bool playEffect = true) { TowerPlacementGhost currentTower = Instantiate(newTower.towerGhostPrefab); currentTower.Initialize(newTower); Tower controller = currentTower.controller; Tower createdTower = Instantiate(controller); + createdTower.PlayWaveLineFlash = playEffect; createdTower.Initialize(m_CurrentArea, pos); createdTower.SetLevel(level - 1); - PlayUpgradeEffect(createdTower); + if (playEffect) + PlayUpgradeEffect(createdTower); addTower(createdTower); Destroy(currentTower.gameObject); + + return createdTower; } protected bool SkillPlayEndDrag(PointerInfo pointer) @@ -1542,7 +1603,7 @@ if (crit) bloodStr += "Crt!"; bloodStr += "-"; - bloodStr += val.ToString(); + bloodStr += ((Int64)val).ToString(); tm.moveBloodText(spos.x, spos.y, bloodStr, crit); } -- Gitblit v1.9.1