"use client"; import { useState } from "react"; const LEAVE_MS = 2300; // 연출 총 길이 (인트로 페이드 + 구름 걷힘) // 구름 안쪽 가장자리의 뭉게 퍼프 (top%, size(vh), edgeOffset(%)) const PUFFS: Array<[number, number, number]> = [ [-4, 26, -8], [12, 34, -3], [30, 28, -10], [46, 38, -2], [63, 30, -9], [78, 36, -4], [92, 27, -8], ]; function CloudHalf({ side }: { side: "left" | "right" }) { return (
{/* 구름 본체 */}
{/* 안쪽 가장자리 뭉게뭉게 */} {PUFFS.map(([top, size, off], i) => (
))}
); } /** 시작 화면: 타이틀 일러스트 + 시작하기 → 구름이 걷히며 마을 진입 */ export default function IntroScreen({ onDone }: { onDone: () => void }) { const [leaving, setLeaving] = useState(false); const start = () => { if (leaving) return; setLeaving(true); setTimeout(onDone, LEAVE_MS); }; return (
{/* 구름 레이어 (인트로 아래) — 인트로가 투명해지면 드러나고, 양옆으로 걷힘 */} {/* 타이틀 일러스트 */} {/* eslint-disable-next-line @next/next/no-img-element */} 고양이 마을 {/* 시작하기 버튼 */}
); }