@nodots-llc/backgammon-types
Version:
Type definitions for Nodots Backgammon
85 lines • 2.78 kB
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;
};
}
export {};
//# sourceMappingURL=checkercontainer.d.ts.map