@gamepark/rules-api
Version:
API to implement the rules of a board game
29 lines (28 loc) • 1.17 kB
TypeScript
import { MaterialMove } from '../moves';
import { MaterialRulesPart } from './MaterialRulesPart';
/**
* Base class for any part of the rules where only one player has to do something.
*/
export declare abstract class PlayerTurnRule<Player extends number = number, MaterialType extends number = number, LocationType extends number = number, RuleId extends number = number> extends MaterialRulesPart<Player, MaterialType, LocationType, RuleId> {
/**
* Shortcut to get the awaited player (this.game.rule.player)
*/
get player(): Player;
/**
* Utility function to get the id of the next player in the table order
*/
get nextPlayer(): Player;
/**
* See {@link Rules.getActivePlayer}
*/
getActivePlayer(): Player;
/**
* See {@link Rules.getLegalMoves}
*/
getLegalMoves(player: Player): MaterialMove<Player, MaterialType, LocationType, RuleId>[];
/**
* Implement this to expose all the legal moves of the active player.
* @returns All the {@link MaterialMove} that current active player can play
*/
getPlayerMoves(): MaterialMove<Player, MaterialType, LocationType, RuleId>[];
}