homeman-deno/fireworks.ts

53 lines
758 B
TypeScript
Raw Normal View History

2024-02-18 09:23:37 -06:00
import { confetti } from 'https://esm.sh/@tsparticles/confetti@3.0.3'
const fireworks = new Audio('/fireworks.mp3')
function fire(particleRatio: number, opts: {
spread?: number
startVelocity?: number
decay?: number
scalar?: number
}) {
const count = 200,
defaults = {
origin: { y: 0.7 },
}
confetti(
Object.assign({}, defaults, opts, {
particleCount: Math.floor(count * particleRatio),
}),
)
}
export function excitement() {
fireworks.play()
fire(0.25, {
spread: 26,
startVelocity: 55,
})
fire(0.2, {
spread: 60,
})
fire(0.35, {
spread: 100,
decay: 0.91,
scalar: 0.8,
})
fire(0.1, {
spread: 120,
startVelocity: 25,
decay: 0.92,
scalar: 1.2,
})
fire(0.1, {
spread: 120,
startVelocity: 45,
})
}