/* ============================================================
   mascots2.jsx — 仲間（協力者）4キャラ
   ① ウニ（まっくろくろすけ風） ② モグラ ③ ヤギ ④ 梅干し（男梅風）
   ピコ・パンダと同じ16ドット幅・同じ仕組み（window.PixelCreature を利用）
   pose: "stand" | "wave" | "sleep"
   ============================================================ */

/* ============================================================
   ① ウニ — まっくろくろすけ風（黒い毛玉・大きな白目・トゲ）
   ============================================================ */
const UNI_PAL = {
  o: "var(--ink)", a: "var(--ink)",
  d: "#ffffff", dbase: "var(--ink)", "-": "var(--ink)",
  p: "var(--blush)", m: "oklch(0.66 0.17 22)",
};
const UNI_STAND = [
  "....o.o.o....",
  ".o.ooooooo.o.",
  "..ooooooooo..",
  ".ooooooooooo.",
  "ooooooooooooo",
  ".oodooooodoo.",
  "ooooooooooooo",
  ".opooooooopo.",
  "ooooommmooooo",
  ".ooooooooooo.",
  "..ooooooooo..",
  ".o.ooooooo.o.",
  "....o.o.o....",
];
const UNI_WAVE = [
  "....o.o.o....",
  ".o.ooooooo.o.",
  "..ooooooooo..",
  ".ooooooooooo.",
  "ooooooooooooo",
  ".oodooooodoo.",
  "ooooooooooooo",
  ".opooooooopo.",
  "ooooommmooooo",
  ".ooooooooooo.",
  "..ooooooooo..",
  ".o.ooooooo.o.",
  "....o.o.o....",
];
const UNI_SLEEP = [
  "....o.o.o....",
  ".o.ooooooo.o.",
  "..ooooooooo..",
  ".ooooooooooo.",
  "ooooooooooooo",
  ".oo-ooooo-oo.",
  "ooooooooooooo",
  ".opooooooopo.",
  "ooooommmooooo",
  ".ooooooooooo.",
  "..ooooooooo..",
  ".o.ooooooo.o.",
  "....o.o.o....",
];
function PixelUni({ pose = "stand" }) {
  return (
    <PixelCreature pose={pose} cls="uni" palette={UNI_PAL}
      stand={UNI_STAND} wave={UNI_WAVE} sleep={UNI_SLEEP} handColor="transparent" />
  );
}

/* ============================================================
   ② モグラ — ずんぐり茶色・大きなピンクの鼻・小さな目・爪
   ============================================================ */
const MOLE_O = "oklch(0.52 0.055 60)";
const MOLE_PAL = {
  o: MOLE_O, a: MOLE_O,
  d: "var(--ink)", dbase: MOLE_O, "-": "var(--ink)",
  n: "oklch(0.74 0.11 18)", p: "oklch(0.70 0.09 20)", m: "var(--ink)",
  c: "oklch(0.92 0.02 70)", s: "oklch(0.92 0.02 70)",
};
const MOLE_STAND = [
  "...oooooooooo...",
  "..oooooooooooo..",
  "..oooooooooooo..",
  "..oooodoodoooo..",
  "..ooooonnooooo..",
  ".aopooommooopoa.",
  "a.oooooooooooo.a",
  "..oooooooooooo..",
  "...oo......oo...",
  "...cc......cc...",
];
const MOLE_WAVE = [
  "...oooooooooo...",
  "..oooooooooooo..",
  "..oooooooooooo..",
  "..oooodoodoooo..",
  "..ooooonnooooo..",
  ".aopooommooopo..",
  "a.oooooooooooo..",
  "..oooooooooooo..",
  "...oo......oo...",
  "...cc......cc...",
];
const MOLE_SLEEP = [
  "...oooooooooo...",
  "..oooooooooooo..",
  "..oooooooooooo..",
  "..oooo-oo-oooo..",
  "..ooooonnooooo..",
  ".aopooommooopoa.",
  "a.oooooooooooo.a",
  "..oooooooooooo..",
  "...oo......oo...",
  "...cc......cc...",
];
function PixelMole({ pose = "stand" }) {
  return (
    <PixelCreature pose={pose} cls="mole" palette={MOLE_PAL}
      stand={MOLE_STAND} wave={MOLE_WAVE} sleep={MOLE_SLEEP} handColor={MOLE_O} />
  );
}

/* ============================================================
   ③ ヤギ — 参考画像どおり（クリーム・オリーブのツノ・ピンク耳/ほっぺ/口・あごひげ・茶の蹄）
   16幅 / 目=黒(d) / dbase=クリーム
   ============================================================ */
const GOAT_O = "oklch(0.93 0.012 85)";
const GOAT_PAL = {
  o: GOAT_O,
  h: "oklch(0.53 0.06 95)",        // ツノ（オリーブ #807344）
  p: "oklch(0.80 0.16 340)",       // ピンク（ほっぺ・口）
  e: "oklch(0.90 0.06 340)",       // 耳（薄いピンク）
  l: "oklch(0.83 0.018 300)",      // あごひげ（ラベンダー）
  b: "oklch(0.43 0.06 55)",        // 蹄・脚（茶 #6d4822）
  d: "var(--ink)", dbase: GOAT_O,  // 目（黒）
  "-": "var(--ink)",
};
//                0123456789012345
const GOAT_STAND = [
  "...hh......hh...",
  "....hh....hh....",
  "...oooooooooo...",
  "oooooooooooooooo",
  ".eooooooooooooe.",
  "..oodoooooodoo..",
  ".oopoooooooopoo.",
  "b.ooooppppoooo.b",
  "..oooooooooooo..",
  "...oo.llll.oo...",
  "...bb..ll..bb...",
  "................",
];
const GOAT_WAVE = [
  "...hh......hh...",
  "....hh....hh....",
  "...oooooooooo...",
  "oooooooooooooooo",
  ".eooooooooooooe.",
  "..oodoooooodoo..",
  ".oopoooooooopo..",
  "b.ooooppppoooo..",
  "..oooooooooooo..",
  "...oo.llll.oo...",
  "...bb..ll..bb...",
  "................",
];
const GOAT_SLEEP = [
  "...hh......hh...",
  "....hh....hh....",
  "...oooooooooo...",
  "oooooooooooooooo",
  ".eooooooooooooe.",
  "..oo-oooooo-oo..",
  ".oopoooooooopoo.",
  "b.ooooppppoooo.b",
  "..oooooooooooo..",
  "...oo.llll.oo...",
  "...bb..ll..bb...",
  "................",
];
function PixelGoat({ pose = "stand" }) {
  return (
    <PixelCreature pose={pose} cls="goat" palette={GOAT_PAL}
      stand={GOAT_STAND} wave={GOAT_WAVE} sleep={GOAT_SLEEP} handColor="oklch(0.43 0.06 55)" />
  );
}

/* ============================================================
/* ============================================================
   ④ 梅干し — ウニのフォルム参考（赤い丸・しわ・へた跡）/ 緑なし
   13幅 / 目=白(d) / dbase=梅の赤
   ============================================================ */
const UME_O = "oklch(0.54 0.17 27)";
const UME_PAL = {
  o: UME_O,
  w: "oklch(0.43 0.15 27)",          // しわ・へた跡（濃い赤）
  d: "oklch(0.97 0.012 60)", dbase: UME_O,  // 目（白）
  p: "oklch(0.72 0.13 18)",          // ほっぺ
  m: "oklch(0.33 0.12 27)", "-": "var(--ink)",  // 口（すっぱい）
};
const UME_STAND = [
  "...............",
  ".....oowoo.....",
  "...ooooooooo...",
  "..ooooooooooo..",
  "..oowooooowoo..",
  ".ooooooooooooo.",
  ".oooodooodoooo.",
  ".oopooooooopoo.",
  ".ooooommmooooo.",
  ".ooooooooooooo.",
  "..ooowooowooo..",
  "..ooooowooooo..",
  "...ooooooooo...",
  ".....ooooo.....",
  "...............",
];
const UME_WAVE = [
  "...............",
  ".....oowoo.....",
  "...ooooooooo...",
  "..ooooooooooo..",
  "..oowooooowoo..",
  ".ooooooooooooo.",
  ".oooodooodoooo.",
  ".oopooooooopoo.",
  ".ooooommmooooo.",
  ".ooooooooooooo.",
  "..ooowooowooo..",
  "..ooooowooooo..",
  "...ooooooooo...",
  ".....ooooo.....",
  "...............",
];
const UME_SLEEP = [
  "...............",
  ".....oowoo.....",
  "...ooooooooo...",
  "..ooooooooooo..",
  "..oowooooowoo..",
  ".ooooooooooooo.",
  ".oooo-ooo-oooo.",
  ".oopooooooopoo.",
  ".ooooommmooooo.",
  ".ooooooooooooo.",
  "..ooowooowooo..",
  "..ooooowooooo..",
  "...ooooooooo...",
  ".....ooooo.....",
  "...............",
];
function PixelUme({ pose = "stand" }) {
  return (
    <PixelCreature pose={pose} cls="ume" palette={UME_PAL}
      stand={UME_STAND} wave={UME_WAVE} sleep={UME_SLEEP} handColor="transparent" />
  );
}

/* ---------- レジストリ ---------- */
const MASCOTS2 = [
  { id: "uni",  no: "03", name: "ウニ",   Comp: PixelUni },
  { id: "mole", no: "04", name: "モグラ", Comp: PixelMole },
  { id: "goat", no: "05", name: "ヤギ",   Comp: PixelGoat },
  { id: "ume",  no: "06", name: "梅干し", Comp: PixelUme },
];

Object.assign(window, { PixelUni, PixelMole, PixelGoat, PixelUme, MASCOTS2 });
