belote
Version:
A TypeScript library for playing Belote card game with bot support.
50 lines (49 loc) • 2.21 kB
TypeScript
import { GameState, CardColor, Player, Card, GameOptions, BeloteEvents, AllowedPlayerKeys } from './types';
import { EventEmitter } from 'events';
export declare class Belote extends EventEmitter {
private timeoutId;
readonly options: GameOptions;
readonly gameState: GameState;
constructor(init?: Partial<GameOptions>);
private createPlayer;
playerJoin(playerName?: string, options?: Partial<Pick<Player, AllowedPlayerKeys>>): Player;
playerLeave(playerId: string): void;
addBot(botName?: string, options?: Partial<Pick<Player, AllowedPlayerKeys>>): Player;
removeBot(botId: string): void;
updatePlayer(playerId: string, updates: Partial<Player> | ((player: Player) => Partial<Player>)): void;
switchPlayerTeam(playerId: string, newTeamId: number): void;
setPlayerReady(playerId: string, isReady: boolean): void;
private clearTimer;
private startTimer;
private safeBotAction;
startGame(): void;
startNextRound(): void;
private dealInitialCards;
getCurrentPlayer(): Player;
private startBidding;
bid(playerId: string, call: CardColor | 'pass'): void;
private advanceBidding;
private dealTalon;
private startCallingPhase;
makeCall(playerId: string, cards: Card[]): void;
private resolveCalls;
private startPlayingPhase;
playCard(playerId: string, card: Card): void;
private completeTrick;
private determineTrickWinner;
private completeRound;
private calculateRoundScores;
private getLastTrickOverall;
private areTricksEqual;
getPlayerById(playerId: string): Player | null;
getPlayersByTeam(teamId: number): Player[];
destroy(): void;
}
export interface Belote {
on<K extends keyof BeloteEvents>(event: K, listener: BeloteEvents[K]): this;
emit<K extends keyof BeloteEvents>(event: K, ...args: Parameters<BeloteEvents[K]>): boolean;
off<K extends keyof BeloteEvents>(event: K, listener: BeloteEvents[K]): this;
removeAllListeners<K extends keyof BeloteEvents>(event?: K): this;
addListener<K extends keyof BeloteEvents>(event: K, listener: BeloteEvents[K]): this;
once<K extends keyof BeloteEvents>(event: K, listener: BeloteEvents[K]): this;
}