diff options
| author | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-03 23:29:04 +0900 |
|---|---|---|
| committer | Yasutake Yohei <61961825+yasutakeyohei@users.noreply.github.com> | 2026-10-03 23:29:04 +0900 |
| commit | cb0cce903f8ea3ad4943cabab83b74a40d87fc00 (patch) | |
| tree | ae1ca94d7feeb58594125de30c3c2940c523229c /public | |
| parent | 0aa91f6f02fc95762ea4a6dbf5a4f795e4e35b86 (diff) | |
public/bluebey-studio: 間隔の表示を補正、ダリ高さ80、ペンシル削除
「左右の間隔」スライダーは内部値より10大きく表示するようにし、既定の -10 が 0 と見えるようにした。
ダリの高さの既定を 80 にした。
ペンシル髭を削除(選択肢・画像・1ファイル版の同梱から外した)。
Diffstat (limited to 'public')
| -rw-r--r-- | public/bluebey-studio/assets/beards/apron.png | bin | 4002 -> 0 bytes | |||
| -rw-r--r-- | public/bluebey-studio/src/faceArt.js | 25 | ||||
| -rw-r--r-- | public/bluebey-studio/src/main.js | 1 | ||||
| -rw-r--r-- | public/bluebey-studio/src/panel.js | 12 | ||||
| -rw-r--r-- | public/bluebey-studio/src/presets.js | 2 |
5 files changed, 14 insertions, 26 deletions
diff --git a/public/bluebey-studio/assets/beards/apron.png b/public/bluebey-studio/assets/beards/apron.png Binary files differdeleted file mode 100644 index 73e3537..0000000 --- a/public/bluebey-studio/assets/beards/apron.png +++ /dev/null diff --git a/public/bluebey-studio/src/faceArt.js b/public/bluebey-studio/src/faceArt.js index cf61c68..e999045 100644 --- a/public/bluebey-studio/src/faceArt.js +++ b/public/bluebey-studio/src/faceArt.js @@ -906,9 +906,10 @@ function tintedSprite(image, color) { /** * ひげ: a mustache or beard under the nose. Each kind is a small shape built on - * the spot; `scotch` and `cat` are drawn with round-capped strokes, `kaiser` is a - * thick waving band, and `apron` is a filled bib. In a line drawing nothing is - * filled and only the outlines are inked. + * the spot; `scotch` and `cat` are drawn with round-capped strokes, and `kaiser` + * is a thick waving band with a curl at each tip. A kind that ships a drawing in + * `assets/beards/` is drawn from that instead (see `textures`), tinted with the + * beard colour. In a line drawing nothing is filled and only the outlines are inked. */ function drawBeard(ctx, spec, lineOnly = false, textures = null) { const shape = spec?.shape ?? 'off'; @@ -994,22 +995,8 @@ function drawBeard(ctx, spec, lineOnly = false, textures = null) { return; } if (shape === 'apron') { - // エプロン: a bib-shaped beard hanging from the cheeks to a rounded point. - const pts = [ - { x: cx - w * 0.6, y: cy - w * 0.04 }, - { x: cx - w * 0.5, y: cy + w * 0.35 }, - { x: cx - w * 0.22, y: cy + w * 0.62 }, - { x: cx, y: cy + w * 0.7 }, - { x: cx + w * 0.22, y: cy + w * 0.62 }, - { x: cx + w * 0.5, y: cy + w * 0.35 }, - { x: cx + w * 0.6, y: cy - w * 0.04 }, - ]; - if (lineOnly) { - strokePolyline(ctx, pts, { color: line, width: lw }); - } else { - fillPolygon(ctx, pts, color); - strokePolyline(ctx, pts, { color: line, width: lw * 0.5 }); - } + // A filled bib was once a kind here; kept as a no-op so a saved state that + // still names it simply shows nothing rather than throwing. return; } // ねこ: three whiskers a side, growing out of the cheeks with a gap left in the diff --git a/public/bluebey-studio/src/main.js b/public/bluebey-studio/src/main.js index 9514ca4..cfd6773 100644 --- a/public/bluebey-studio/src/main.js +++ b/public/bluebey-studio/src/main.js @@ -399,7 +399,6 @@ async function init() { const files = [ { kind: 'scotch', file: 'scotch.png' }, { kind: 'kaiser', file: 'kaiser-right.png' }, - { kind: 'apron', file: 'apron.png' }, ]; const loaded = {}; await Promise.all(files.map(async ({ kind, file }) => { diff --git a/public/bluebey-studio/src/panel.js b/public/bluebey-studio/src/panel.js index d63055a..63e501b 100644 --- a/public/bluebey-studio/src/panel.js +++ b/public/bluebey-studio/src/panel.js @@ -162,7 +162,7 @@ export function buildPanel(app, root) { lookY: +rnd(-0.25, 0.25).toFixed(2), }); const randomFacePatch = () => { - const beardShape = pick(['off', 'scotch', 'kaiser', 'apron', 'cat']); + const beardShape = pick(['off', 'scotch', 'kaiser', 'cat']); return { eyes: { left: randomEye(), @@ -1125,7 +1125,6 @@ export function buildPanel(app, root) { { value: 'off', label: 'なし' }, { value: 'scotch', label: 'ちょびひげ' }, { value: 'kaiser', label: 'ダリ' }, - { value: 'apron', label: 'ペンシル' }, { value: 'cat', label: 'ねこ' }, ], value: 'off', @@ -1147,8 +1146,9 @@ export function buildPanel(app, root) { onInput: (v) => { state.face.eyes.beard.size = v; app.actions.refresh('face'); }, }), spacing: slider({ - label: '左右の間隔', min: -10, max: 240, step: 1, value: 0, format: (v) => `${Math.round(v)}`, - onInput: (v) => { state.face.eyes.beard.spacing = v; app.actions.refresh('face'); }, + label: '左右の間隔', min: 0, max: 250, step: 1, value: 0, format: (v) => `${Math.round(v)}`, + // Shown 10 higher than the value stored, so the default (stored -10) reads 0. + onInput: (v) => { state.face.eyes.beard.spacing = v - 10; app.actions.refresh('face'); }, }), offsetY: slider({ label: 'たかさ', min: -160, max: 160, step: 1, value: 0, format: (v) => `${Math.round(v)}`, @@ -1175,7 +1175,7 @@ export function buildPanel(app, root) { onChange: (v) => { state.face.eyes.beard.color = v; app.actions.refresh('face'); }, }); beardBox.add(beardColor.el); - beardBox.add(hint('鼻の下に、ちょびひげ・ダリ・ペンシル・ねこ、の瓢を描きます。' + beardBox.add(hint('鼻の下に、ちょびひげ・ダリ・ねこ、の瓢を描きます。' + '「左右の間隔」「瓢の長さ」「線の間隔」は「ねこ」で使います。')); // --- mouth @@ -2693,6 +2693,8 @@ export function buildPanel(app, root) { snotColor.set(state.face.eyes.snot.color); beardShape.set(state.face.eyes.beard.shape ?? 'off'); for (const [key, widget] of Object.entries(beardSliders)) widget.set(state.face.eyes.beard[key]); + // 「左右の間隔」は内部値より+10して表示する(既定の -10 が 0 に見える)。 + beardSliders.spacing.set((state.face.eyes.beard.spacing ?? 0) + 10); beardColor.set(state.face.eyes.beard.color); }); diff --git a/public/bluebey-studio/src/presets.js b/public/bluebey-studio/src/presets.js index 33fdd45..3a79d9b 100644 --- a/public/bluebey-studio/src/presets.js +++ b/public/bluebey-studio/src/presets.js @@ -47,7 +47,7 @@ function captionDefaults() { */ export const BEARD_KIND_DEFAULTS = { scotch: { size: 0.46, offsetY: 74 }, - kaiser: { size: 1, offsetY: 100, spacing: -10 }, + kaiser: { size: 1, offsetY: 80, spacing: -10 }, }; /** |
