void ApplyUpgrades() { // Upgrade options GameManager gameManager = ServiceLocator.Get <GameManager>(); UpgradesModel upgradesModel = ModelManager.UpgradesModel; UpgradesIdentifier upgradesIdentifier = UpgradesIdentifier.None; // Long Ranged Upgrade // Moved to tower script // Barricade Reduction Cost Upgrade // Moved to Barricade Spawner Script // Wife tower Upgrade Tower wife = GameObject.FindGameObjectWithTag("Wife").GetComponent <Tower>(); int wifeLevel = gameManager.upgradeLevelsDictionary[UpgradeMenu.Upgrade.ExtraProjectiles] - 1; upgradesIdentifier = upgradesModel.GetUpgradeEnum(UpgradeMenu.Upgrade.ExtraProjectiles, wifeLevel + 1); if (wifeLevel >= 0) { wife.isShooting = true; wife.attackRate -= upgradesModel.GetRecord(upgradesIdentifier).ModifierValue; //upgradeStats.throwingSpeed[wifeLevel]; } // Specific Target Upgrade int specficLevel = gameManager.upgradeLevelsDictionary[UpgradeMenu.Upgrade.TargetEnemy] - 1; upgradesIdentifier = upgradesModel.GetUpgradeEnum(UpgradeMenu.Upgrade.TargetEnemy, specficLevel + 1); if (specficLevel >= 0) { towerInstance.GetComponent <Tower>().specificEnemy = gameManager.choosenTarget;//upgradesModel.GetRecord(upgradesIdentifier).Target; } // Fire Upgrade int fireLevel = gameManager.upgradeLevelsDictionary[UpgradeMenu.Upgrade.FireProjectile] - 1; upgradesIdentifier = upgradesModel.GetUpgradeEnum(UpgradeMenu.Upgrade.FireProjectile, fireLevel + 1); if (fireLevel >= 0) { towerInstance.GetComponent <Tower>().damageType = DamageType.Fire; towerInstance.GetComponent <Tower>().fireDuration = upgradesModel.GetRecord(upgradesIdentifier).ModifierValue;// upgradeStats.fireDuration[fireLevel]; } // Improved Barricades // Moved to Barricade Script // Barricade Spawn Rate Improved // Moved to Barricade Spawner Script // Trash Spawn Rate Improved // Moved to Resource Spawner Script // Improved Player HP // Moved to Player Script // Improved healing // Moved to Tower Script // UpdateTowerTrashCount towerInstance.GetComponent <Tower>().fullHealth = gameManager._houseHP; }
private void DisplayChoosenUpgrade(Upgrade upgrade) { int currentLevel = gameManager.upgradeLevelsDictionary[upgrade]; UpgradesIdentifier upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel + 1); if (upgradesIdentifier == UpgradesIdentifier.None) { upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel); } upgradeDescriptionText.text = "Description:\n" + upgradesModel.GetRecord(upgradesIdentifier).Description; }
private void ApplyUpgrade(Upgrade upgrade, int currentLevel) { UpgradesIdentifier upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel + 1); int maxUpgradeLevel = upgradesModel.GetTotalUpgrades(upgrade); if (maxUpgradeLevel > currentLevel) { if (gameManager._houseHP - upgradesModel.GetRecord(upgradesIdentifier).TrashCost <= minimumTrashToSpend) // Cannot afford upgrade { messageText.text = "Cannot Upgrade. Your trash cannot be less than " + minimumTrashToSpend + " after the upgrade."; messageText.transform.parent.gameObject.SetActive(true); return; } UpdateTrashCount(upgradesModel.GetRecord(upgradesIdentifier).TrashCost); gameManager.upgradeLevelsDictionary[upgrade]++; gameManager.upgradeEnabled[upgrade] = true; currentLevel++; if (upgrade == Upgrade.TargetEnemy) // Add target to list { gameManager.specialTargets.Add(upgradesModel.GetRecord(upgradesIdentifier).Target); gameManager.choosenTarget = upgradesModel.GetRecord(upgradesIdentifier).Target; } //Update UI if (maxUpgradeLevel > currentLevel) // Another upgrade available { upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel + 1); DisplayChoosenUpgrade(upgrade, currentLevel); } UpdateUI(); } else { messageText.text = "Maxium Upgrade Already Equiped."; messageText.transform.parent.gameObject.SetActive(true); } }