UNPKG

@gamepark/rules-api

Version:

API to implement the rules of a board game

49 lines (48 loc) 1.75 kB
import { MaterialItem } from '../../items'; import { Location } from '../../location'; import { MoveKind } from '../MoveKind'; import { LocalMoveType } from './LocalMove'; /** * Common type for the moves that display a help dialog */ export type HelpDisplay<P extends number = number, M extends number = number, L extends number = number, RuleId extends number = number, I = any> = MaterialHelpDisplay<P, M, L, I> | LocationHelpDisplay<P, L> | RulesHelpDisplay<RuleId>; /** * Type of help dialogs that can be opened */ export declare enum HelpDisplayType { Material = 1, Location = 2, Rules = 3 } /** * Data structure describing a help dialog about a {@link MaterialItem} */ export type MaterialHelpDisplay<P extends number = number, M extends number = number, L extends number = number, I = any> = { type: typeof HelpDisplayType.Material; itemType: M; itemIndex?: number; displayIndex?: number; item: Partial<MaterialItem<P, L, I>>; }; /** * Data structure describing a help dialog about a {@link Location} */ export type LocationHelpDisplay<P extends number = number, L extends number = number> = { type: typeof HelpDisplayType.Location; location: Location<P, L>; }; /** * Data structure describing a help dialog about a point in the rules of a game */ export type RulesHelpDisplay<RuleId extends number = number> = { type: typeof HelpDisplayType.Rules; ruleId: RuleId; }; /** * Move object to display a help dialog */ export type DisplayHelp<P extends number = number, M extends number = number, L extends number = number, R extends number = number, I = any> = { kind: MoveKind.LocalMove; type: typeof LocalMoveType.DisplayHelp; helpDisplay?: HelpDisplay<P, M, L, R, I>; };