The game kit: the shared infrastructure of Wiz-War and Waving Hands as a template

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141G6xqLeNRYEtviLWSB5Up
This commit is contained in:
Eric Wagoner
2026-09-23 11:00:05 -04:00
co-authored by Claude Fable 5.1
commit 1cd24e3ddd
59 changed files with 7420 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
// What the server tells a viewer about a room. The game's own state is
// whatever GameSpec.view returned for that viewer; nothing else leaves.
import type { Outcome, SeatId } from '../game/spec';
/** One line of table talk. Only seated players speak; the gallery listens. */
export interface ChatLine {
id: SeatId;
text: string;
at: number;
}
export interface RoomView<State> {
roomId: string;
seq: number;
/** The most seats the table will take. */
size: number;
/** The viewer's seat, or SPECTATOR for the gallery. */
me: SeatId;
/** The player who opened the table and may begin the game. */
host: SeatId;
seats: { id: SeatId; name: string; bot: boolean }[];
/** Seats that still have to move before the round resolves. */
waitingOn: SeatId[];
/** The round being written, from one; null before the game begins. */
turn: number | null;
over: Outcome | null;
state: State | null;
chat: ChatLine[];
/** How many watch from the Peanut Gallery. */
audience: number;
}