aboutsummaryrefslogtreecommitdiffhomepage
path: root/public/bluebey-studio/src/main.js
diff options
context:
space:
mode:
authorYasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>2026-10-03 22:22:38 +0900
committerYasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com>2026-10-03 22:22:38 +0900
commit68053e5ecb355ddf808e7f49692c13f4e60edbfd (patch)
tree915bb26f0130b80e114aa9a6f645fdba5a2c10db /public/bluebey-studio/src/main.js
parentbabd8555b9a3c59921748fa11430bfca09f3d2db (diff)
public/bluebey-studio: ダリひげを左右半分の画像にして間隔を調整可能に
hige-2-right(ぶるべーから見て右側のダリ髭)を取り込み、左右それぞれに描いて「左右の間隔」で開きを調整できるようにした。ファイル名が -right.png のものは片側(ミラーして2枚描く)として扱う。 全幅だった kaiser.png は kaiser-right.png に置き換えた。
Diffstat (limited to 'public/bluebey-studio/src/main.js')
-rw-r--r--public/bluebey-studio/src/main.js22
1 files changed, 15 insertions, 7 deletions
diff --git a/public/bluebey-studio/src/main.js b/public/bluebey-studio/src/main.js
index f90dfc8..9514ca4 100644
--- a/public/bluebey-studio/src/main.js
+++ b/public/bluebey-studio/src/main.js
@@ -393,17 +393,25 @@ async function init() {
// one is drawn from the file instead of the built-in strokes. A missing file is
// skipped, so the app works before any are added.
void (async () => {
- // Only the kinds that actually ship a drawing. Add a name here when its file is
- // added to assets/beards/, so no 404s are logged for the ones without one.
- const kinds = ['scotch', 'kaiser', 'apron'];
+ // Each entry: a beard kind and the drawing in `assets/beards/`. A file ending
+ // `-right.png` is one side of a moustache; it is drawn twice (mirrored) with a
+ // `spacing` gap between them. A kind with no entry uses the built-in strokes.
+ const files = [
+ { kind: 'scotch', file: 'scotch.png' },
+ { kind: 'kaiser', file: 'kaiser-right.png' },
+ { kind: 'apron', file: 'apron.png' },
+ ];
const loaded = {};
- await Promise.all(kinds.map(async (kind) => {
+ await Promise.all(files.map(async ({ kind, file }) => {
try {
- const response = await fetch(assetUrl(`${kind}.png`, 'beard'));
+ const response = await fetch(assetUrl(file, 'beard'));
if (!response.ok) return;
- loaded[kind] = await createImageBitmap(await response.blob());
+ loaded[kind] = {
+ image: await createImageBitmap(await response.blob()),
+ half: file.endsWith('-right.png'),
+ };
} catch {
- /* no drawing for this kind: the built-in one is used */
+ /* a missing drawing falls back to the built-in strokes */
}
}));
if (Object.keys(loaded).length) {