public override void Enable()
{
KeyboardScale = Settings.Smoothness;
var rect = MainManager.DeviceManager.ActiveKeyboard.KeyboardRectangle(KeyboardScale);
var scaleFactor = Settings.Smoothness/25.0;
for (var i = 0; i < Settings.BubbleCount; i++)
{
var color = Settings.IsRandomColors
? ColorHelpers.GetRandomRainbowColor()
: ColorHelpers.ToDrawingColor(Settings.BubbleColor);
// -Settings.MoveSpeed because we want to spawn at least one move away from borders
var initialPositionX = (rect.Width - Settings.BubbleSize*scaleFactor*2 - Settings.MoveSpeed*scaleFactor)*
_random.NextDouble() + Settings.BubbleSize*scaleFactor;
var initialPositionY = (rect.Height - Settings.BubbleSize*scaleFactor*2 - Settings.MoveSpeed*scaleFactor)*
_random.NextDouble() + Settings.BubbleSize*scaleFactor;
var initialDirectionX = Settings.MoveSpeed*scaleFactor*_random.NextDouble()*
(_random.Next(1) == 0 ? -1 : 1);
var initialDirectionY = (Settings.MoveSpeed*scaleFactor - Math.Abs(initialDirectionX))*
(_random.Next(1) == 0 ? -1 : 1);
_bubbles.Add(new Bubble(color, (int) Math.Round(Settings.BubbleSize*scaleFactor),
new Point(initialPositionX, initialPositionY), new Vector(initialDirectionX, initialDirectionY)));
}
Initialized = true;
}