@nodots-llc/backgammon-types
Version:
Type definitions for nodots-backgammon
102 lines (89 loc) • 2.59 kB
text/typescript
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
}
}