From e371272a7885723c7b0ef31a20ae5d0fbead1d30 Mon Sep 17 00:00:00 2001 From: wangguan <wangguan@kt007.com> Date: Sat, 26 Dec 2020 16:58:41 +0800 Subject: [PATCH] 12.26第二次 --- Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs | 142 ++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 139 insertions(+), 3 deletions(-) diff --git a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs index ae6183a..a79a3aa 100644 --- a/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs +++ b/Assets/Scripts/TowerDefense/UI/HUD/EndlessGameUI.cs @@ -1193,6 +1193,8 @@ //Debug.Log("未上阵区域,不管有没有塔,都强行吸附"); (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, true, ""); + m_CurrentTower.SetGridPosition(m_GridPosition.x, m_GridPosition.y); + //m_CurrentTower.transform.position = (m_CurrentArea as TowerPlacementGridEndless).GridToWorld(m_GridPosition, m_CurrentTower.controller.dimensions); } @@ -1234,6 +1236,10 @@ } } } + m_CurrentTower.SetGridPosition(checkTowerPlaceTower.gridPosition.x, checkTowerPlaceTower.gridPosition.y); + + //Debug.Log("未上阵区域,不管有没有塔,都强行吸附" + checkTowerPlaceTower.gridPosition); + //m_CurrentTower.transform.position = (m_CurrentArea as TowerPlacementGridEndless).GridToWorld(checkTowerPlaceTower.gridPosition, m_CurrentTower.controller.dimensions); } } @@ -1242,6 +1248,8 @@ //Debug.Log("空格子"); (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, true, towerToMove.towerName); + + m_CurrentTower.SetGridPosition(m_GridPosition.x, m_GridPosition.y); //m_CurrentTower.transform.position = (m_CurrentArea as TowerPlacementGridEndless).GridToWorld(m_GridPosition, m_CurrentTower.controller.dimensions); @@ -1258,6 +1266,8 @@ (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, true, towerToMove.towerName); //m_CurrentTower.transform.position = towerToMove.position; + m_CurrentTower.SetGridPosition(m_GridPosition.x, m_GridPosition.y); + } else { @@ -1266,6 +1276,8 @@ //Debug.Log("上阵区域,没有开放的塔位"); (m_CurrentArea as TowerPlacementGridEndless).CheckCanPlaceUpdate(m_GridPosition.x, m_GridPosition.y, true, ""); + + m_CurrentTower.SetGridPosition(m_GridPosition.x, m_GridPosition.y); //m_CurrentTower.transform.position = (m_CurrentArea as TowerPlacementGridEndless).GridToWorld(m_GridPosition, m_CurrentTower.controller.dimensions); } @@ -1277,7 +1289,8 @@ else { dragTowerPlacement.CloseCanPlace(); - + m_CurrentTower.SetGridPosition(-1, -1); + //Debug.Log("没有检测到"); } } @@ -1375,10 +1388,58 @@ return; } + if (m_CurrentTower.gridPositionX != -1) + { + IntVector2 moveV2 = new IntVector2(m_CurrentTower.gridPositionX, m_CurrentTower.gridPositionY); + //判断是否未开塔 + if (!dragTowerPlacement.IsGridOpen(moveV2.x, moveV2.y)) + { + //Debug.Log("未开塔"); + CancelPlaceTower(pointerInfo); + + } + else if (moveV2 == towerToMove.gridPosition) + { + //Debug.Log($"在原位 moveV2:{moveV2} towerToMove.gridPosition:{towerToMove.gridPosition}"); + CancelPlaceTower(pointerInfo); + } + else + { + //判断是否有塔 + Tower tmpT = null; + for (int i = 0; i < m_listTower.Count; i++) + { + if (m_listTower[i].gridPosition == moveV2) + { + tmpT = m_listTower[i]; + break; + } + } + + if (tmpT != null) + { + //Debug.Log("释放的时候有塔"); + DragBuyTower(tmpT); + } + else + { + //Debug.Log("释放的时候是空格子"); + DragBuyTower(moveV2); + } + } + } + else + { + //Debug.Log("不在区域内"); + CancelPlaceTower(pointerInfo); + } + + return; + // 判断目标位置是否有Tower且类型和等级一致,如果没有,则GhostTower删除,原Tower显示。 if (isValidateCombineTarget(pointerInfo)) { - //Debug.Log("isValidateCombineTarget"); + //Debug.Log("目标位置是否有同等级同类型的Tower."); TryPlaceTower(pointerInfo); EndlessRandomTower.instance.UpdateDescDisplay(); } @@ -1406,7 +1467,7 @@ } else if (EndlessLevelManager.instanceExists && IsSubstitute(pointerInfo)) { - //Debug.Log("IsSubstitute"); + //Debug.Log("交换"); CheckCanChangePos(pointerInfo); } @@ -1884,6 +1945,81 @@ return true; } + private void DragBuyTower(Tower sTower) + { + Tower curTower = m_CurrentTower.controller; + int testLvl = dragTowerLevel; + if ((sTower.currentLevel == testLvl) && + (sTower.towerName == curTower.towerName)) + { + // 先释放掉当前的Ghost塔防. + CancelGhostPlacement(); + + // 升级目标位置的塔防. + currentSelectedTower = sTower; + SetState(State.Normal); + // 新的代码,合并升级为随机塔防类型. + randomUpgradeTower(); + } + else + { + 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); + + //强制交换塔的时候检查自身充能条 + newTower1.CheckCtrl(); + newTower2.CheckCtrl(); + //Debug.Log($"newTower1:{newTower1.towerName} newTower2:{newTower2.towerName}"); + + TowerPlacementGridEndless.instance.PlayPutPs(newTower2.gridPosition.x, newTower2.gridPosition.y); + } + } + + private void DragBuyTower(IntVector2 dragGridPosition) + { + Tower controller = m_CurrentTower.controller; + Tower createdTower = Instantiate(controller); + createdTower.Initialize(m_CurrentArea, dragGridPosition, dragTowerLevel); + + // ATTENTION TO FIX:是否应该加入List: + addTower(createdTower); + PlayToAttackEffect(createdTower.ElfId, createdTower.transform.position); + dragTowerLevel = 0; + CancelGhostPlacement(); + + // 删除towerToMove,确保塔防数据不再出现多个 + if (towerToMove != null) + { + delTower(towerToMove); + towerToMove.showTower(true); + towerToMove.Sell(); + towerToMove = null; + } + if (m_CurrentTower != null && m_CurrentTower.controller != null) + Destroy(m_CurrentTower.controller.gameObject); + } + /// <summary> /// 播放升级特效 /// </summary> -- Gitblit v1.9.1