"use client"; import { useEffect, useState } from "react"; import { CardView } from "./CardView"; import { COMMANDER, DECK, type Card } from "./cards"; const shuffle = (a: T[]) => [...a].sort(() => Math.random() - 0.5); const LOG_LINES = [ "Die Umfragewerte sinken. Merz macht eine Pressekonferenz über Bierdeckel.", "Merz tappt Sauerland. Niemand ist überrascht.", "Das Volk wirkt „Leck Eier“. Es ist sehr effektiv.", "Merz versucht zu mulliganen, aber die Koalition sagt nein.", "BlackRock ruft an. Merz geht natürlich ran.", "Merz zieht eine Karte. Es ist wieder ein Wahlversprechen. Er wirft es ab.", ]; export function Game() { const [library, setLibrary] = useState([]); const [hand, setHand] = useState([]); const [grave, setGrave] = useState([]); const [polls, setPolls] = useState(25); const [eggs, setEggs] = useState(0); const [log, setLog] = useState(["Merz, Leck Eier betritt das Schlachtfeld. Aus einem Privatjet."]); useEffect(() => { setLibrary(shuffle(DECK)); try { setEggs(Number(localStorage.getItem("eggs") ?? 0)); } catch {} }, []); const say = (line: string) => setLog((l) => [line, ...l].slice(0, 6)); function draw() { if (library.length === 0) { say("Deine Bibliothek ist leer. Wie das Rentenkonzept."); return; } const [top, ...rest] = library; setLibrary(rest); setHand((h) => [...h, top]); say(`Du ziehst „${top.name}“.`); } function cast(i: number) { const card = hand[i]; setHand((h) => h.filter((_, j) => j !== i)); setGrave((g) => [card, ...g]); const dmg = card.name === "Leck Eier" ? 10 : Math.ceil(Math.random() * 4); setPolls((p) => Math.max(0, p - dmg)); say(`Du wirkst „${card.name}“. Merz verliert ${dmg}% Zustimmung.`); } function mulligan() { setLibrary(shuffle(DECK)); setHand([]); setGrave([]); setPolls(25); say("Mulligan! Neue Hand, gleicher Kanzler."); } function lick() { const n = eggs + 1; setEggs(n); try { localStorage.setItem("eggs", String(n)); } catch {} say(LOG_LINES[Math.floor(Math.random() * LOG_LINES.length)]); } return ( <>
Commander
Umfragewerte {polls}%
{polls === 0 &&

🏆 Du hast gewonnen. Neuwahlen!

}
    {log.map((l, i) => (
  1. {l}
  2. ))}
⚰️ Friedhof: {grave.length ? grave.map((c) => c.name).join(", ") : "leer (wie die Staatskasse)"}

Deine Hand {hand.length > 0 && — klick eine Karte zum Wirken}

{hand.length === 0 ? (

Noch keine Karten. Zieh eine, bevor Merz es privatisiert.

) : (
{hand.map((c, i) => ( ))}
)}
); }