public void ActivatePowerup(PowerupInfo powerupInfo) { _powerupTimer = powerupInfo.duration; _activePowerup = powerupInfo.powerupType; switch (_activePowerup) { case PowerupInfo.Type.FasterReload: for (int i = 0; i < _cannonballSpawners.Length; i++) { _cannonballSpawners[i].ChangeCooldown(powerupInfo.reloadTimeFactor); } _bombSpawner.ChangeCooldown(powerupInfo.reloadTimeFactor); break; case PowerupInfo.Type.DamageBoost: for (int i = 0; i < _cannonballSpawners.Length; i++) { _cannonballSpawners[i].ChangeDamage(powerupInfo.damageBoostFactor); } _bombSpawner.ChangeDamage(powerupInfo.reloadTimeFactor); break; case PowerupInfo.Type.MovementSpeedBoost: _shipMovement.ChangeMaxSpeed(powerupInfo.movementSpeedBoostFactor); break; case PowerupInfo.Type.TemporaryBonusHP: _healthScript.AddTempHP(powerupInfo.bonusHP); break; case PowerupInfo.Type.AutoHPRegen: _healthScript.ApplyRegeneration(powerupInfo.duration, powerupInfo.regenerationAmountPerSec); break; default: break; } }