UNPKG

@nodots-llc/backgammon-types

Version:
102 lines (89 loc) 2.59 kB
import { BackgammonChecker } from './checker' import { BackgammonBoard } from './board' import { BackgammonCheckerContainerImport } from './import' import { BackgammonMoveDirection } from './game' import { IntegerRange } from './generics' type BarPosition = 'bar' type OffPosition = 'off' interface BackgammonPointPosition { clockwise: BackgammonPointValue counterclockwise: BackgammonPointValue } export type BackgammonCheckerContainerPosition = | BackgammonPointPosition | BarPosition | OffPosition type CheckerContainerKind = 'point' | 'bar' | 'off' export type BackgammonCheckerContainer = { id: string kind: CheckerContainerKind position: BackgammonCheckerContainerPosition checkers: BackgammonChecker[] } export interface BackgammonPoint extends BackgammonCheckerContainer { kind: 'point' position: { clockwise: BackgammonPointValue counterclockwise: BackgammonPointValue } } export interface BackgammonBar extends BackgammonCheckerContainer { kind: 'bar' direction: BackgammonMoveDirection position: BarPosition } export type BackgammonBarContainer = { [direction in BackgammonMoveDirection]: BackgammonBar } export interface BackgammonOff extends BackgammonCheckerContainer { kind: 'off' direction: BackgammonMoveDirection position: OffPosition } export type BackgammonOffContainer = { [direction in BackgammonMoveDirection]: BackgammonOff } export type BackgammonPointValue = IntegerRange<1, 24> export type BackgammonPoints = [ BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint, BackgammonPoint ] export type BackgammonMoveOrigin = BackgammonPoint | BackgammonBar export type BackgammonMoveDestination = BackgammonPoint | BackgammonOff export interface CheckercontainerClass { getCheckercontainers: (board: BackgammonBoard) => BackgammonCheckerContainer[] getCheckercontainer: ( board: BackgammonBoard, id: string ) => BackgammonCheckerContainer buildBar: (boardImport: BackgammonCheckerContainerImport[]) => { clockwise: BackgammonBar counterclockwise: BackgammonBar } buildOff: (boardImport: BackgammonCheckerContainerImport[]) => { clockwise: BackgammonOff counterclockwise: BackgammonOff } }