tsgammon-core
Version:
A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui
110 lines • 3.94 kB
TypeScript
import { CubeState } from '../CubeState';
import { EOGStatus } from '../EOGStatus';
import { SGResult } from '../records/SGResult';
import { Score } from '../Score';
import { StakeConf } from '../StakeConf';
/**
* バックギャモンの局面を示す状態を、キューブのみに限定した定義
*/
export declare type CBState = CBOpening | CBInPlay | CBAction | CBResponse | CBToRoll | CBEoG;
export declare type CBOpening = _CBState & {
tag: 'CBOpening';
doStartCheckerPlayRed: () => CBInPlayRed;
doStartCheckerPlayWhite: () => CBInPlayWhite;
};
export declare type CBAction = CBActionRed | CBActionWhite;
export declare type CBResponse = CBResponseRed | CBResponseWhite;
export declare type CBToRoll = CBToRollRed | CBToRollWhite;
export declare type CBInPlay = CBInPlayRed | CBInPlayWhite;
export declare type CBEoG = CBEoGRedWon | CBEoGWhiteWon | CBEoGNogame;
declare type _CBState = {
cubeState: CubeState;
};
declare type _CBAction = _CBState & {
tag: 'CBAction';
};
export declare type CBActionRed = _CBAction & {
isRed: true;
doDouble: () => CBResponseWhite;
doStartCheckerPlay: () => CBInPlayRed;
doSkipCubeAction: () => CBToRollRed;
};
export declare type CBActionWhite = _CBAction & {
isRed: false;
doDouble: () => CBResponseRed;
doStartCheckerPlay: () => CBInPlayWhite;
doSkipCubeAction: () => CBToRollWhite;
};
declare type _CBResponse = _CBState & {
tag: 'CBResponse';
isRed: boolean;
};
export declare type CBResponseRed = _CBResponse & {
doTake: () => CBToRollWhite;
doPass: () => CBEoGWhiteWon;
isDoubleFromRed: false;
isRed: true;
};
export declare type CBResponseWhite = _CBResponse & {
doTake: () => CBToRollRed;
doPass: () => CBEoGRedWon;
isDoubleFromRed: true;
isRed: false;
};
declare type LastCubeAction = 'Take' | 'Skip';
declare type _CBToRoll = _CBState & {
tag: 'CBToRoll';
lastAction: LastCubeAction;
};
export declare type CBToRollRed = _CBToRoll & {
isRed: true;
doStartCheckerPlay: () => CBInPlayRed;
};
export declare type CBToRollWhite = _CBToRoll & {
isRed: false;
doStartCheckerPlay: () => CBInPlayWhite;
};
declare type _CBInPlay = _CBState & {
tag: 'CBInPlay';
mayDouble: boolean;
};
export declare type CBInPlayRed = _CBInPlay & {
isRed: true;
doStartCubeAction: (skipCubeAction: boolean) => CBActionWhite | CBToRollWhite;
};
export declare type CBInPlayWhite = _CBInPlay & {
isRed: false;
doStartCubeAction: (skipCubeAction: boolean) => CBActionRed | CBToRollRed;
};
declare type _CBEoG = _CBState & {
tag: 'CBEoG';
eogStatus: EOGStatus;
isWonByPass: boolean;
calcStake: (conf?: StakeConf) => {
stake: Score;
eogStatus: EOGStatus;
jacobyApplied: boolean;
};
};
export declare type CBEoGRedWon = _CBEoG & {
result: SGResult.REDWON;
};
export declare type CBEoGWhiteWon = _CBEoG & {
result: SGResult.WHITEWON;
};
export declare type CBEoGNogame = _CBEoG & {
isWonByPass: false;
result: SGResult.NOGAME;
};
export declare function cbOpening(cubeState: CubeState): CBOpening;
export declare function cbActionRed(cubeState: CubeState): CBActionRed;
export declare function cbActionWhite(cubeState: CubeState): CBActionWhite;
export declare function cbInPlayRed(cubeState: CubeState): CBInPlayRed;
export declare function cbInPlayWhite(cubeState: CubeState): CBInPlayWhite;
export declare function cbResponseRed(cubeState: CubeState): CBResponseRed;
export declare function cbResponseWhite(cubeState: CubeState): CBResponseWhite;
export declare function cbToRollRed(cubeState: CubeState, lastAction: LastCubeAction): CBToRollRed;
export declare function cbToRollWhite(cubeState: CubeState, lastAction: LastCubeAction): CBToRollWhite;
export declare function resultToCBEoG(cubeState: CubeState, sgResult: SGResult, eogStatus: EOGStatus): CBEoG;
export {};
//# sourceMappingURL=CubeGameState.d.ts.map