private void UpdateButtonText(Button button, Upgrade upgrade) { int currentLevel = gameManager.upgradeLevelsDictionary[upgrade]; UpgradesIdentifier upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel + 1); if (upgradesIdentifier == UpgradesIdentifier.None) { upgradesIdentifier = upgradesModel.GetUpgradeEnum(upgrade, currentLevel); } var enumType = typeof(UpgradesIdentifier); var memberInfos = enumType.GetMember(upgradesIdentifier.ToString()); var enumValueMemberInfo = memberInfos.FirstOrDefault(m => m.DeclaringType == enumType); var valueAttributes = enumValueMemberInfo.GetCustomAttributes(typeof(Identifier), false); var description = ((Identifier)valueAttributes[0]).enumIdentifier; int maxUpgradeLevel = upgradesModel.GetTotalUpgrades(upgrade); if (maxUpgradeLevel == currentLevel) // Check if upgrade is max { button.GetComponentInChildren <Text>().text = description + "\n - Max Level."; } else { button.GetComponentInChildren <Text>().text = description; } }
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; }