diff --git a/assets/actors b/assets/actors new file mode 100644 index 0000000..d8dbfbf Binary files /dev/null and b/assets/actors differ diff --git a/assets/grasss.png b/assets/grasss.png new file mode 100644 index 0000000..edbf2ee Binary files /dev/null and b/assets/grasss.png differ diff --git a/assets/link.png b/assets/link.png new file mode 100644 index 0000000..76bb510 Binary files /dev/null and b/assets/link.png differ diff --git a/assets/link2.png b/assets/link2.png new file mode 100644 index 0000000..a13e9f1 Binary files /dev/null and b/assets/link2.png differ diff --git a/assets/sprites/gen/chicken-idle.png b/assets/sprites/gen/chicken-idle.png new file mode 100644 index 0000000..17ec592 Binary files /dev/null and b/assets/sprites/gen/chicken-idle.png differ diff --git a/assets/sprites/gen/chicken-walk.png b/assets/sprites/gen/chicken-walk.png new file mode 100644 index 0000000..3207a07 Binary files /dev/null and b/assets/sprites/gen/chicken-walk.png differ diff --git a/assets/sprites/gen/link-alt11.png b/assets/sprites/gen/link-alt11.png new file mode 100644 index 0000000..3e50d30 Binary files /dev/null and b/assets/sprites/gen/link-alt11.png differ diff --git a/assets/sprites/gen/link-carry.png b/assets/sprites/gen/link-carry.png new file mode 100644 index 0000000..87891e3 Binary files /dev/null and b/assets/sprites/gen/link-carry.png differ diff --git a/assets/sprites/gen/link-down.png b/assets/sprites/gen/link-down.png new file mode 100644 index 0000000..64e01d6 Binary files /dev/null and b/assets/sprites/gen/link-down.png differ diff --git a/assets/sprites/gen/link-pot-sprite.png b/assets/sprites/gen/link-pot-sprite.png new file mode 100644 index 0000000..b74b21a Binary files /dev/null and b/assets/sprites/gen/link-pot-sprite.png differ diff --git a/assets/sprites/gen/link-throw.png b/assets/sprites/gen/link-throw.png new file mode 100644 index 0000000..e4bbc75 Binary files /dev/null and b/assets/sprites/gen/link-throw.png differ diff --git a/assets/sprites/gen/link-up.png b/assets/sprites/gen/link-up.png new file mode 100644 index 0000000..ab8001b Binary files /dev/null and b/assets/sprites/gen/link-up.png differ diff --git a/assets/sprites/gen/preview-chicken-idle.png b/assets/sprites/gen/preview-chicken-idle.png new file mode 100644 index 0000000..06e9b10 Binary files /dev/null and b/assets/sprites/gen/preview-chicken-idle.png differ diff --git a/assets/sprites/gen/preview-chicken-walk.png b/assets/sprites/gen/preview-chicken-walk.png new file mode 100644 index 0000000..3802e4b Binary files /dev/null and b/assets/sprites/gen/preview-chicken-walk.png differ diff --git a/assets/sprites/gen/preview-link.png b/assets/sprites/gen/preview-link.png new file mode 100644 index 0000000..7f52729 Binary files /dev/null and b/assets/sprites/gen/preview-link.png differ diff --git a/assets/sprites/gen/preview-strip.png b/assets/sprites/gen/preview-strip.png new file mode 100644 index 0000000..eba8668 Binary files /dev/null and b/assets/sprites/gen/preview-strip.png differ diff --git a/src/actors/link.js b/src/actors/link.js index 625435f..793304f 100644 --- a/src/actors/link.js +++ b/src/actors/link.js @@ -36,7 +36,7 @@ export function addLink(k, world, onLeave) { const link = k.add([ ...visual(k, "link"), k.pos(p), - k.area({ collisionIgnore: ["player", "chicken"] }), + k.area({ collisionIgnore: ["player", "chicken"], scale: 0.5 }), k.body(), k.state("seek", ["seek", "throw", "cutGrass", "hitChicken", "flee", "leave"]), "link", diff --git a/src/main.js b/src/main.js index 3ad5aa5..a7ac3da 100644 --- a/src/main.js +++ b/src/main.js @@ -15,6 +15,25 @@ const k = kaplay({ // No gravity: this is a top-down game. k.setGravity(0); +// Actor sprites. +k.loadSprite("link", "assets/link.png"); + +// Background music. Browsers block autoplay until the user interacts, so start +// looping on the first key/click and keep the handle across scene changes. +k.loadSound("bg-music", "src/assets/bg-music.mp3"); +let music = null; +let muted = false; +function startMusic() { + if (music || muted) return; + music = k.play("bg-music", { loop: true, volume: 0.5 }); +} +k.onKeyPress(startMusic); +k.onMousePress(startMusic); +k.onKeyPress("m", () => { + muted = !muted; + if (music) music.paused = muted; +}); + registerGameScene(k); registerEndScenes(k); k.go("game"); diff --git a/src/sprites.js b/src/sprites.js index 88f0e67..7ab4fd4 100644 --- a/src/sprites.js +++ b/src/sprites.js @@ -13,7 +13,17 @@ const SPEC = { shard: { shape: "rect", w: 12, h: 12, radius: 2, color: [212, 152, 90], outline: [132, 82, 40] }, }; +// Kinds backed by a real loaded sprite (loadSprite name + render scale). Others +// fall back to the placeholder shapes in SPEC. +const SPRITES = { + link: { name: "link", scale: 0.44 }, +}; + export function visual(k, kind) { + const sp = SPRITES[kind]; + if (sp) { + return [k.sprite(sp.name), k.anchor("center"), k.scale(sp.scale)]; + } const s = SPEC[kind]; const comps = s.shape === "circle"