UNPKG

tsgammon-core

Version:

A Backgammon library for Typescript, formerly developed as a part of tsgammon-ui

110 lines 3.94 kB
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