UNPKG

@nodots-llc/backgammon-types

Version:
84 lines (72 loc) 1.77 kB
import { BackgammonPlayer, BackgammonPlayers } from './player' export type BackgammonCubeValue = undefined | 2 | 4 | 8 | 16 | 32 | 64 export const BackgammonCubeValues: BackgammonCubeValue[] = [ undefined, 2, 4, 8, 16, 32, 64, ] export type BackgammonCubeStateKind = | 'initialized' | 'doubled' | 'maxxed' | 'offered' interface BaseCube { id: string owner: BackgammonPlayer | undefined value: BackgammonCubeValue | undefined offeredBy?: 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 }