UNPKG

@nodots-llc/backgammon-types

Version:
55 lines 1.88 kB
import { BackgammonPlayer, BackgammonPlayers } from './player'; export type BackgammonCubeValue = undefined | 2 | 4 | 8 | 16 | 32 | 64; export declare const BackgammonCubeValues: BackgammonCubeValue[]; export type BackgammonCubeStateKind = 'initialized' | 'doubled' | 'maxxed' | 'offered'; interface BaseCube { id: string; owner: BackgammonPlayer | undefined; value: BackgammonCubeValue | undefined; offeredBy?: BackgammonPlayer | undefined; offeredThisTurnBy?: BackgammonPlayer | undefined; } interface Cube extends BaseCube { stateKind: BackgammonCubeStateKind; } export type BackgammonCubeInitialized = Cube & { stateKind: 'initialized'; owner: undefined; value: undefined; offeredBy?: undefined; }; export type BackgammonCubeDoubled = Cube & { stateKind: 'doubled'; owner: BackgammonPlayer; value: BackgammonCubeValue; offeredBy?: undefined; }; export type BackgammonCubeMaxxed = Cube & { stateKind: 'maxxed'; owner: undefined; value: 64; offeredBy?: undefined; }; export type BackgammonCubeOffered = Cube & { stateKind: 'offered'; owner: BackgammonPlayer; value: BackgammonCubeValue; offeredBy: BackgammonPlayer; }; export type BackgammonCube = BackgammonCubeInitialized | BackgammonCubeDoubled | BackgammonCubeMaxxed | BackgammonCubeOffered; export interface CubeProps { id?: string; stateKind?: BackgammonCubeStateKind; value?: BackgammonCubeValue; owner?: BackgammonPlayer; } export interface CubeClass { id: string; stateKind: BackgammonCubeStateKind; value: BackgammonCubeValue | undefined; owner: BackgammonPlayer | undefined; initialize: (cube?: CubeProps) => Cube; double: (cube: Cube, player: BackgammonPlayer, players: BackgammonPlayers) => BackgammonCubeDoubled | BackgammonCubeMaxxed; } export {}; //# sourceMappingURL=cube.d.ts.map