26 lines
594 B
TypeScript
26 lines
594 B
TypeScript
import * as renaissance from "./renaissance";
|
|
import simple from "./simple";
|
|
|
|
export type Game<
|
|
C extends { game: string },
|
|
S,
|
|
A,
|
|
E extends { error: any },
|
|
V
|
|
> = {
|
|
title: string;
|
|
rules: string;
|
|
init: (config: C) => S;
|
|
resolveAction: (p: { config: C; state: S; action: A }) => S | E;
|
|
getView: (p: { config: C; state: S; humanKey: string }) => V;
|
|
resolveQuit: (p: { config: C; state: S; humanKey: string }) => S;
|
|
};
|
|
|
|
const games = {
|
|
// renaissance,
|
|
simple,
|
|
} satisfies { [key: string]: Game<any, any, any, any, any> };
|
|
export default games;
|
|
|
|
export type GameId = keyof typeof games;
|