// Use this for initialization void Start() { lastGridSquare = Pathfinder.infinityGridSquare; player = gameObject.GetComponent <TDCharacterController>(); GUIManager.ChangeCurrencyDisplay(player.currentCurrency); GUIManager.ChangeTowerBaseDisplay(player.currentTowerBases); audioPlayer = GameObject.Find("_AudioManager").GetComponent <AudioSource>(); am = GameObject.Find("_AudioManager").GetComponent <AudioManager>(); }
public static void MakeBuildPhase() { currentState = GameState.BuildPhase; DebuffTowers(); GUIManager.ShowTowerChoices(); GUIManager.ShowCrosshair(); GUIManager.ShowDefendReadyText(true); GUIManager.ShowBuildReadyText(false); GUIManager.ChangeCurrencyDisplay(currentPlayer.GetComponent <TDCharacterController>().currentCurrency); GUIManager.ChangeTowerBaseDisplay(currentPlayer.GetComponent <TDCharacterController>().currentTowerBases); currentPlayer.GetComponent <TDCharacterController>().SetArms(true); currentPlayer.GetComponent <TDCharacterController>().weapon.SetActive(false); spawnerOfWaves.DetermineNumberOfEnemiesForNextWave(); GUIManager.ShowNextWaveEnemies(true); gameTrack.playGameMusicTracks(a, 0, 0.25f); currentPlayer.GetComponent <TDCharacterController>().playerIsGettingAttacked = false; }
void BuildPhaseGO() { Ray lookAtRay = Camera.main.ScreenPointToRay(new Vector2(Screen.width * 0.5f, Screen.height * 0.5f)); Vector3 tempPosBase = Vector3.zero; Vector3 tempPosTower = Vector3.zero; towerOnBaseBuild = false; upgradeIsGo = false; baseSellIsGo = false; GUIManager.ShowTowerInterface(false); if (Physics.Raycast(lookAtRay, out hit, 100, buildStuff)) { GameObject currentSquare = hit.collider.gameObject; if (hit.collider.gameObject.tag == "GridSquare") { bool badBase = false; if (currentSquare != lastGridSquare && (currentSquare.GetComponent <GridSquare>().canBuild || currentSquare.GetComponent <GridSquare>().hasTowerBase)) { //print(currentSquare.name); if (tb != null) { Destroy(tb); } if (tTemp != null) { Destroy(tTemp); } lastGridSquare = currentSquare; currentSquare.GetComponent <GridSquare>().canMove = false; if (currentTower == 0 || !currentSquare.GetComponent <GridSquare>().hasTowerBase) { tempPosBase = new Vector3(hit.collider.gameObject.transform.position.x, hit.collider.gameObject.transform.position.y + yBufferTowerBase, hit.collider.gameObject.transform.position.z); if ((Pathfinder.FindPath() && player.currentTowerBases > 0) && (currentTower == 0 || player.currentCurrency >= availableTowers[currentTower].GetComponent <Tower>().cost)) { //print ("Path good"); if (!currentSquare.GetComponent <GridSquare>().hasTowerBase) { tb = Instantiate(towersGood[0], tempPosBase, currentSquare.transform.rotation) as GameObject; } buildOnClick = true; } else { //print ("Path bad"); if (!currentSquare.GetComponent <GridSquare>().hasTowerBase) { tb = Instantiate(towersBad[0], tempPosBase, currentSquare.transform.rotation) as GameObject; badBase = true; } buildOnClick = false; } } if (currentTower > 0 && towersGood[currentTower] != null && !currentSquare.GetComponent <GridSquare>().hasTower) { tempPosTower = new Vector3(hit.collider.gameObject.transform.position.x, hit.collider.gameObject.transform.position.y + yBufferTower, hit.collider.gameObject.transform.position.z); if (badBase || player.currentCurrency < availableTowers[currentTower].GetComponent <Tower>().cost) { tTemp = Instantiate(towersBad[currentTower], tempPosTower, currentSquare.transform.rotation) as GameObject; buildOnClick = false; } else { tTemp = Instantiate(towersGood[currentTower], tempPosTower, currentSquare.transform.rotation) as GameObject; buildOnClick = true; } } Pathfinder.FindPath(); if (!currentSquare.GetComponent <GridSquare>().hasTowerBase) { currentSquare.GetComponent <GridSquare>().canMove = true; } } else if (currentSquare != lastGridSquare && !currentSquare.GetComponent <GridSquare>().canBuild) { lastGridSquare = currentSquare; LittleClearFunction(); buildOnClick = false; } } else if (hit.collider.gameObject.tag == "TowerBase") { buildOnClick = false; if (lastGridSquare.GetComponent <GridSquare>() != null && lastGridSquare.GetComponent <GridSquare>().canBuild) { lastGridSquare.GetComponent <GridSquare>().canMove = true; Pathfinder.FindPath(); } if (currentSquare != lastGridSquare) { if (tb != null) { Destroy(tb); } if (tTemp != null) { Destroy(tTemp); } RaycastHit tempHit; Physics.Raycast(hit.collider.transform.position, Vector3.down, out tempHit); if (currentTower > 0 && towersGood[currentTower] != null && !tempHit.collider.gameObject.GetComponent <GridSquare>().hasTower&& tempHit.collider.gameObject.GetComponent <GridSquare>().hasTowerBase) { if (player.currentCurrency >= availableTowers[currentTower].GetComponent <Tower>().cost) { tempPosTower = new Vector3(hit.collider.gameObject.transform.position.x, hit.collider.gameObject.transform.position.y + yBufferTowerOffBase, hit.collider.gameObject.transform.position.z); tTemp = Instantiate(towersGood[currentTower], tempPosTower, hit.collider.transform.rotation) as GameObject; towerOnBaseBuild = true; } else { tempPosTower = new Vector3(hit.collider.gameObject.transform.position.x, hit.collider.gameObject.transform.position.y + yBufferTowerOffBase, hit.collider.gameObject.transform.position.z); tTemp = Instantiate(towersBad[currentTower], tempPosTower, hit.collider.transform.rotation) as GameObject; towerOnBaseBuild = false; } } } RaycastHit tempHit2; Physics.Raycast(hit.collider.transform.position, Vector3.down, out tempHit2); if (!tempHit2.collider.gameObject.GetComponent <GridSquare>().hasTower) { baseSell = hit.collider.gameObject; GUIManager.ShowTowerInterface(true); GUIManager.UpdateTowerInterface("Tower Base", "None", false); baseSellIsGo = true; } } if (hit.collider.gameObject.tag == "Tower") { towerUpgradeSell = hit.collider.gameObject; GUIManager.ShowTowerInterface(true); GUIManager.UpdateTowerInterface(hit.collider.gameObject.GetComponent <Tower>().towerName, TypeToString(hit.collider.gameObject.GetComponent <Tower>().towerType), hit.collider.gameObject.GetComponent <Tower>().upgradeTower != null); upgradeIsGo = true; buildOnClick = false; } } if (hit.collider == null) { buildOnClick = false; LittleClearFunction(); } if (buildOnClick && Input.GetMouseButtonDown(0)) { Destroy(tb); if (tTemp != null) { tempPosTower = new Vector3(hit.collider.gameObject.transform.position.x, hit.collider.gameObject.transform.position.y + yBufferTower, hit.collider.gameObject.transform.position.z); Instantiate(availableTowers[currentTower], tempPosTower, hit.collider.gameObject.transform.rotation); am.playTowerSounds(audioPlayer, 2, 1); player.currentCurrency -= availableTowers[currentTower].GetComponent <Tower>().cost; GUIManager.ChangeCurrencyDisplay(player.currentCurrency); hit.collider.gameObject.GetComponent <GridSquare>().hasTower = true; Destroy(tTemp); } if (hit.collider.gameObject.GetComponent <GridSquare>() != null) { if (!hit.collider.gameObject.GetComponent <GridSquare>().hasTowerBase) { tempPosBase = new Vector3(hit.collider.gameObject.transform.position.x, hit.collider.gameObject.transform.position.y + yBufferTowerBase, hit.collider.gameObject.transform.position.z); Instantiate(availableTowers[0], tempPosBase, hit.collider.gameObject.transform.rotation); am.playTowerSounds(audioPlayer, 0, 1); player.currentTowerBases--; GUIManager.ChangeTowerBaseDisplay(player.currentTowerBases); hit.collider.gameObject.GetComponent <GridSquare>().canMove = false; hit.collider.gameObject.GetComponent <GridSquare>().canBuild = false; hit.collider.gameObject.GetComponent <GridSquare>().hasTowerBase = true; } } buildOnClick = false; } else if (towerOnBaseBuild && Input.GetMouseButtonDown(0)) { //Destroy(tb); tempPosTower = new Vector3(hit.collider.gameObject.transform.position.x, hit.collider.gameObject.transform.position.y + yBufferTowerOffBase, hit.collider.gameObject.transform.position.z); Instantiate(availableTowers[currentTower], tempPosTower, hit.collider.gameObject.transform.rotation); am.playTowerSounds(audioPlayer, 2, 1); player.currentCurrency -= availableTowers[currentTower].GetComponent <Tower>().cost; GUIManager.ChangeCurrencyDisplay(player.currentCurrency); RaycastHit tempHit; if (Physics.Raycast(hit.collider.transform.position, Vector3.down, out tempHit)) { if (tempHit.collider.gameObject.tag == "GridSquare") { tempHit.collider.gameObject.GetComponent <GridSquare>().hasTower = true; } } Destroy(tTemp); } if (upgradeIsGo) { if (Input.GetMouseButton(0) && towerUpgradeSell.GetComponent <Tower>().upgradeTower != null && towerUpgradeSell.GetComponent <Tower>().upgradeTower.GetComponent <Tower>().cost <= player.currentCurrency && !selling) { upgrading = true; actionDelay += Time.deltaTime; if (actionDelay < 2.5f) { GUIManager.MoveBar("Upgrade", actionDelay / 2.5f); } else { upgrading = false; actionDelay = 0; GUIManager.MoveBar("Upgrade", actionDelay / 2.5f); GameObject tempUp = Instantiate(towerUpgradeSell.GetComponent <Tower>().upgradeTower, towerUpgradeSell.transform.position, towerUpgradeSell.transform.rotation) as GameObject; am.playTowerSounds(audioPlayer, 3, 1); Destroy(towerUpgradeSell); player.currentCurrency -= tempUp.GetComponent <Tower>().cost; GUIManager.ChangeCurrencyDisplay(player.currentCurrency); } } if (Input.GetMouseButton(1) && !upgrading) { selling = true; actionDelay += Time.deltaTime; if (actionDelay < 2.5f) { GUIManager.MoveBar("Sell", actionDelay / 2.5f); } else { selling = false; actionDelay = 0; GUIManager.MoveBar("Sell", actionDelay / 2.5f); am.playTowerSounds(audioPlayer, 1, 1); player.currentCurrency += towerUpgradeSell.GetComponent <Tower>().totalValue; GUIManager.ChangeCurrencyDisplay(player.currentCurrency); RaycastHit tempHit; if (Physics.Raycast(towerUpgradeSell.transform.position, Vector3.down, out tempHit, 100, gridSquaresOnly)) { tempHit.collider.gameObject.GetComponent <GridSquare>().hasTower = false; } Destroy(towerUpgradeSell); } } if (Input.GetMouseButtonUp(0) || Input.GetMouseButtonUp(1)) { upgrading = selling = false; actionDelay = 0; GUIManager.MoveBar("Upgrade", actionDelay / 2.5f); GUIManager.MoveBar("Sell", actionDelay / 2.5f); } typeChangeCooldown += Time.deltaTime; if (typeChangeCooldown > 0.1f) { if (Mathf.Clamp(Input.mouseScrollDelta.y, -1f, 1f) > 0) { towerUpgradeSell.GetComponent <Tower>().projectileIndex++; if (towerUpgradeSell.GetComponent <Tower>().projectileIndex > towerUpgradeSell.GetComponent <Tower>().projectiles.Length) { towerUpgradeSell.GetComponent <Tower>().projectileIndex = 0; } towerUpgradeSell.GetComponent <Tower>().SetTowerType(); typeChangeCooldown = 0; } else if (Mathf.Clamp(Input.mouseScrollDelta.y, -1f, 1f) < 0) { towerUpgradeSell.GetComponent <Tower>().projectileIndex--; if (towerUpgradeSell.GetComponent <Tower>().projectileIndex < 0) { towerUpgradeSell.GetComponent <Tower>().projectileIndex = towerUpgradeSell.GetComponent <Tower>().projectiles.Length; } towerUpgradeSell.GetComponent <Tower>().SetTowerType(); typeChangeCooldown = 0; } } } else { actionDelay = 0; selling = false; upgrading = false; } if (baseSellIsGo) { if (Input.GetMouseButton(1)) { actionDelayTB += Time.deltaTime; if (actionDelayTB < 2.5f) { GUIManager.MoveBar("Sell", actionDelayTB / 2.5f); } else { actionDelayTB = 0; GUIManager.MoveBar("Sell", actionDelayTB / 2.5f); am.playTowerSounds(audioPlayer, 1, 1); player.currentTowerBases++; GUIManager.ChangeTowerBaseDisplay(player.currentTowerBases); RaycastHit tempHit; if (Physics.Raycast(baseSell.transform.position, Vector3.down, out tempHit)) { if (tempHit.collider.gameObject.tag == "GridSquare") { tempHit.collider.gameObject.GetComponent <GridSquare>().hasTowerBase = false; tempHit.collider.gameObject.GetComponent <GridSquare>().canBuild = true; tempHit.collider.gameObject.GetComponent <GridSquare>().canMove = true; } } Destroy(baseSell); } } if (Input.GetMouseButtonUp(1)) { actionDelayTB = 0; GUIManager.MoveBar("Sell", actionDelayTB / 2.5f); } } }