private void OnTriggerEnter(Collider other) { currentTowerPlatform = other.GetComponentInParent <TowerPlatform>(); towerExists = other.GetComponentInChildren <TowerCheck>(); currentTower = other.GetComponentInChildren <TowerCheck>(); if (other.GetComponentInChildren <TowerType>()) { upgradePriceText.text = "$" + other.GetComponentInChildren <TowerType>().upgradeCost; } towerManager.SetupTowerPrices(); }
public void PurchaseTower(string towerTypeName) { TowerTypes towerType = RecognizeTowerType(towerTypeName); // true - if enough money, false - if not enough money bool towerWasBought = TowerManager.instance.PurchaseTower(currentTowerPlatform, towerType); if (towerWasBought) { towerExists = true; towerBuyMenu.gameObject.SetActive(false); towerUpgradeMenu.gameObject.SetActive(true); currentTower = currentTowerPlatform.GetComponentInChildren <TowerCheck>(); currentTower.GetComponent <TowerType>().upgradeCost = currentTower.GetComponent <TowerType>().initialUpgradeCost; upgradePriceText.text = "$" + currentTower.GetComponentInChildren <TowerType>().upgradeCost; } }
private void OnTriggerStay(Collider other) { currentTower = other.GetComponentInChildren <TowerCheck>(); if (other.GetComponentInChildren <TowerType>()) { upgradePriceText.text = "$" + other.GetComponentInChildren <TowerType>().upgradeCost; } if (other.gameObject.tag == "TowerPlatform") { if (!towerExists) { if (Input.GetKeyDown(KeyCode.E) && !towerBuyMenu.gameObject.activeSelf) { Cursor.visible = (true); Cursor.lockState = CursorLockMode.None; towerBuyMenu.gameObject.SetActive(true); } else if (Input.GetKeyDown(KeyCode.E) && towerBuyMenu.gameObject.activeSelf) { Cursor.visible = (false); Cursor.lockState = CursorLockMode.Locked; towerBuyMenu.gameObject.SetActive(false); } } else { if (Input.GetKeyDown(KeyCode.E) && !towerUpgradeMenu.gameObject.activeSelf) { Cursor.visible = (true); Cursor.lockState = CursorLockMode.None; towerUpgradeMenu.gameObject.SetActive(true); } else if (Input.GetKeyDown(KeyCode.E) && towerUpgradeMenu.gameObject.activeSelf) { Cursor.visible = (false); Cursor.lockState = CursorLockMode.Locked; towerUpgradeMenu.gameObject.SetActive(false); } } } }
public void UpgradeTower() { if (Player.instance.money >= currentTower.GetComponent <TowerType>().upgradeCost) { Player.instance.money -= currentTower.GetComponent <TowerType>().upgradeCost; // save tower type and all stats related to the tower type TowerType towerStats = currentTower.GetComponent <TowerType>(); TowerTypes towerType = towerStats.towerType; float maxHealth = towerStats.maxHealth; float damageToGive = towerStats.damageToGive; float fireRange = towerStats.fireRange; float rechargeTime = towerStats.rechargeTime; bool canHitMultipleEnemies = towerStats.canHitMultipleEnemies; int initialUpgradeCost = towerStats.initialUpgradeCost; float positiveStatMultiplier = towerStats.positiveStatMultiplier; float negativeStatMultiplier = towerStats.negativeStatMultiplier; GameObject bloodSplat = towerStats.bloodSplat; // save upgraded tower level int level = currentTower.GetComponent <TowerType>().level + 1; // destroy existing tower to build an upgraded one Destroy(currentTower.gameObject); // create empty gameObject which will hold all parts of the tower (one/multiple bases and top of the tower) GameObject towerHolder = new GameObject("Tower"); towerHolder.AddComponent <TowerCheck>(); // make the empty gameObject child of the current platform towerHolder.transform.SetParent(currentTowerPlatform.GetComponent <Transform>().Find("Tower Holder")); // set up position of the empty gameObject (just in case) towerHolder.transform.localPosition = Vector3.zero; // assign current tower and upgrade it to a new level currentTower = towerHolder.GetComponent <TowerCheck>(); // add tower type script to the tower and update its stats towerHolder.AddComponent <TowerType>(); currentTower.GetComponent <TowerType>().level = level; currentTower.GetComponent <TowerType>().towerType = towerType; currentTower.GetComponent <TowerType>().maxHealth = maxHealth * positiveStatMultiplier; currentTower.GetComponent <TowerType>().damageToGive = damageToGive * positiveStatMultiplier; currentTower.GetComponent <TowerType>().fireRange = fireRange * positiveStatMultiplier; currentTower.GetComponent <TowerType>().rechargeTime = rechargeTime * negativeStatMultiplier; currentTower.GetComponent <TowerType>().canHitMultipleEnemies = canHitMultipleEnemies; currentTower.GetComponent <TowerType>().upgradeCost = level * initialUpgradeCost; currentTower.GetComponent <TowerType>().initialUpgradeCost = initialUpgradeCost; currentTower.GetComponent <TowerType>().bloodSplat = bloodSplat; upgradePriceText.text = "$" + currentTower.GetComponentInChildren <TowerType>().upgradeCost; float towerTopHeight = 0; // build required number of base levels for (int i = 0; i < level - 1; i++) { Transform towerBase = Instantiate(GetTowerBase(towerType)); towerBase.SetParent(towerHolder.transform); towerTopHeight = towerBase.GetComponent <Collider>().bounds.size.y / 4 + towerBase.GetComponent <Collider>().bounds.size.y *i; towerBase.localPosition = new Vector3(0, towerTopHeight, 0); } // build the tower top Transform towerTop = Instantiate(GetTowerTop(towerType)); // Y position of the tower top towerTopHeight += towerTop.GetComponent <Collider>().bounds.size.y; towerTop.SetParent(towerHolder.transform); towerTop.localPosition = new Vector3(0, towerTopHeight, 0); } }