private int GetBaseUpgradePrice(BaseUpgradeType baseUpgradeType) { switch (baseUpgradeType) { case BaseUpgradeType.Damage: return(storePrices.DamageUpgradePrice); case BaseUpgradeType.FireRate: return(storePrices.FireRateUpgradePrice); case BaseUpgradeType.Health: return(storePrices.HeathUpgradePrice); case BaseUpgradeType.SlowDown: return(storePrices.SlowRateUpgradePrice); default: throw new ArgumentOutOfRangeException(nameof(baseUpgradeType), baseUpgradeType, null); } }
public void UpgradeBase(BaseUpgradeType baseUpgradeType) { var upgradePrice = GetBaseUpgradePrice(baseUpgradeType); if (upgradePrice > model.Money) { throw new NotEnoughMoney( "Not enough money to buy it", model.Money, upgradePrice ); } model.Money -= upgradePrice; switch (baseUpgradeType) { case BaseUpgradeType.Damage: TowerStats.MinDamage += storePrices.DamageUpgradePrice; TowerStats.MaxDamage += storePrices.DamageUpgradePrice; break; case BaseUpgradeType.FireRate: TowerStats.FireRate -= storePrices.FireRateUpgradeValue; break; case BaseUpgradeType.Health: TowerStats.MaxHealth += storePrices.HeathUpgradeValue; break; case BaseUpgradeType.SlowDown: TowerStats.SlowFactor += storePrices.SlowRateUpgradeValue; break; default: throw new ArgumentOutOfRangeException(nameof(baseUpgradeType), baseUpgradeType, null); } UpdateUi(); }