A browser source overlay for winter vibes for your Live Streams or Videos
1import Config from "./config.js";
2import { drawSprite, loadSprite } from "./sprite.js";
3
4const SPRITE = await loadSprite("snowplow");
5/**
6 * @returns {Plow}
7 */
8export function createPlow() {
9 return {
10 x:
11 Config.plow.direction === "left"
12 ? Config.canvas.width
13 : SPRITE.width * Config.plow.scale,
14 y: Config.canvas.height - SPRITE.height * Config.plow.scale,
15 speed: Config.plow.speed,
16 direction: Config.plow.direction,
17 };
18}
19
20/**
21 * @param {Plow} plow
22 * @param {number} delta
23 */
24export function movePlow(plow, delta) {
25 if (plow.direction === "left") {
26 plow.x -= plow.speed * delta;
27 } else {
28 plow.x += plow.speed * delta;
29 }
30}
31
32/**
33 * @param {Plow} plow
34 * @param {CanvasRenderingContext2D} ctx
35 * @param {DOMHighResTimeStamp} timestamp
36 */
37export function drawPlow(plow, ctx, timestamp) {
38 drawSprite(ctx, SPRITE, plow.x, plow.y, Config.plow.scale, timestamp);
39}
40
41/** @param {Plow} plow */
42export function plowDone(plow) {
43 return plow.direction === "left"
44 ? plow.x + SPRITE.width * Config.plow.scale < 0
45 : plow.x > Config.canvas.width;
46}