// NEKO — Pixel-art layer (homepage): sprite engine, avatars, community scene // Original pixel maps only — no official Minecraft/Discord assets. // Exports: PixelSprite, PixelAvatar, CommunityScene, PxCorners, DiscordGlyph function PixelSprite({ map, palette, px, style, className }) { const u = px || 4; const shadows = []; map.forEach((row, y) => { Array.from(row).forEach((ch, x) => { const c = palette[ch]; if (c) shadows.push((x * u) + "px " + (y * u) + "px 0 " + c); }); }); return (
); } // ---- Maps ------------------------------------------------------- // Friendly community creature (Wumpus-İNSPİRED silhouette, original) const PX_CREATURE = [ ".E......E.", ".E......E.", "..WWWWWW..", ".WWWWWWWW.", ".WBWWWWBW.", ".WWWWWWWW.", ".WWMMMMWW.", "..WWWWWW..", "...W..W...", ]; // Blocky player archetype (original, generic miner silhouette) const PX_PLAYER = [ "..HHHH..", "..HHHH..", "..FFFF..", "..FEEF..", "..FFFF..", ".ATTTTA.", ".ATTTTA.", ".ATTTTA.", ".FTTTTF.", "..PPPP..", "..PPPP..", "..P..P..", "..P..P..", "..B..B..", ]; const PX_BUBBLE = [ "CCCCCCC", "CDCDCDC", "CCCCCCC", ".C.....", ]; const PX_STAR = [".S.", "SSS", ".S."]; // Avatar head (8×8) const PX_HEAD = [ "HHHHHHHH", "HHHHHHHH", "HSSSSSSH", "SSSSSSSS", "SEESSEES", "SSSSSSSS", "SSSMMSSS", "SSSSSSSS", ]; // Tiny creature glyph (6×5) — legacy plain version, kept for reference/archive const PX_GLYPH = [ ".E..E.", "WWWWWW", "WBWWBW", "WWWWWW", ".WWWW.", ]; // Wumpus-inspired mascot face (10×11) — original silhouette, horns + eyes + // smile. Canonical Discord button glyph (richer than the legacy PX_GLYPH). const PX_WUMPUS = [ ".E......E.", ".EE....EE.", "..WWWWWW..", ".WWWWWWWW.", "WWWWWWWWWW", "WWBWWWWBWW", "WWBWWWWBWW", "WWWWWWWWWW", ".WWMMMMWW.", "..WWWWWW..", "..W....W..", ]; // ---- Theme palettes --------------------------------------------- function communityPalettes(theme) { const sun = theme !== "midnight"; return { creature: sun ? { W: "#F8D44E", B: "#0C1730", M: "#F5C53C", E: "#F5C53C" } : { W: "#76C5FF", B: "#0C1730", M: "#20227A", E: "#C48CF5" }, playerA: sun ? { H: "#34343F", F: "#C99F33", E: "#080812", A: "#463A9E", T: "#463A9E", P: "#555562", B: "#0C1730" } : { H: "#20227A", F: "#C99F33", E: "#0C1730", A: "#1F6FE0", T: "#1F6FE0", P: "#20227A", B: "#0C1730" }, playerB: sun ? { H: "#927524", F: "#F8D44E", E: "#080812", A: "#927524", T: "#F5C53C", P: "#0C1730", B: "#080812" } : { H: "#A6B0BC", F: "#C99F33", E: "#0C1730", A: "#C48CF5", T: "#C48CF5", P: "#20227A", B: "#0C1730" }, bubble: sun ? { C: "#F7F9FD", D: "#F5C53C" } : { C: "#F7F9FD", D: "#C48CF5" }, star: sun ? { S: "#F5C53C" } : { S: "#F5C53C" }, star2: sun ? { S: "#F8D44E" } : { S: "#76C5FF" }, grassTop: sun ? "#C99F33" : "#20227A", grassBody: sun ? "#927524" : "#0A1C4A", glyph: sun ? { W: "#F5C53C", B: "#0C1730", M: "#927524", E: "#927524" } : { W: "#76C5FF", B: "#0C1730", M: "#C48CF5", E: "#C48CF5" }, }; } // ---- Composition: community gathering --------------------------- function CommunityScene({ theme }) { const p = communityPalettes(theme); const sun = theme !== "midnight"; const blockFace = sun ? "#927524" : "#20227A"; const blockTop = sun ? "#C99F33" : "#20227A"; const block = (x, bottom, s) => ( ); return ( ); } // ---- Compact variant: Destek sayfası Discord kartı --------------- function CommunitySceneMini({ theme }) { const p = communityPalettes(theme); const sun = theme !== "midnight"; return ( ); } // ---- Avatar (placeholder heads — future skin API slot) ---------- const NEKO_AVATAR_PALETTES = [ { H: "#34343F", S: "#C99F33", E: "#080812", M: "#B97A56" }, { H: "#2E2A26", S: "#C98E5F", E: "#1C120A", M: "#A06A42" }, { H: "#927524", S: "#F8D44E", E: "#080812", M: "#C98E5F" }, { H: "#B98A1F", S: "#D8A878", E: "#241608", M: "#AC7B52" }, ]; function PixelAvatar({ seed, px }) { const pal = NEKO_AVATAR_PALETTES[(seed || 0) % NEKO_AVATAR_PALETTES.length]; return (