functions/MiniGameFirework/scene/loop.ps1

param($var, $func, $canvas, $sound, $object, $stop)

$rockets = $object.GetGroup('rocket')
$explosions = $object.GetGroup('explosion')

foreach ($rocket in $rockets) {
    $func.fly.Invoke($rocket, $var, $canvas, $sound, $object)
}

foreach ($explosion in $explosions) {
    $func.expand.Invoke($explosion, $var, $canvas)
}

# Generate new fireworks at random intervals between 0 and 50 ticks.
$random = Get-Random -Minimum 0 -Maximum $var.Intervall
if ($random -EQ 0 -AND $explosions.Count -LE $var.Explosion.Max) {
    # $sound.Play('takeoff')
    $func.gen.Invoke($var, $canvas, $object)
}

# Redraw the count of explosions on every tick.
if ($var.Explosion.Count -NE $explosions.Count) {
    $canvas.undraw(0, $canvas.Maximum.Y - 1, "Explosions: XXX")
    $canvas.draw(0, $canvas.Maximum.Y - 1, "Explosions: $($explosions.Count)")
    $var.Explosion.Count = $explosions.Count
}