UNPKG

@runox-game/game-engine

Version:
98 lines (97 loc) 3.23 kB
import { IDeck } from './deck.model'; import { IPlayersGroup } from './players-group.model'; import { Turn, ITurn } from './turn.model'; import { IStack } from './stack.model'; import { GameDirection } from './game-direction.model'; import { ICard } from './card.model'; import { IPlayer } from './player.model'; import { GameEvents } from '../events/game-events'; import { GameModes } from './game-modes'; import { BehaviorSubject, Observable } from 'rxjs'; import { ILog, ILogger } from '../log/log.factory'; import { LogLevel } from '../log/log-levels.enum'; export interface IGameState extends ILogger { valid: boolean; id: number; readonly deck: IDeck; readonly stack: IStack; readonly playersGroup: IPlayersGroup; readonly turn: ITurn; readonly events: GameEvents; unoYellers: { [id: string]: boolean; }; gameDirection: number; cardsToGive: number; gameModes: GameModes; winner: IPlayer | undefined; winnerScore: number; readonly nextPlayerToPlay: IPlayer; changeDirection(): void; giveCards(quantity: number, toPlayer: IPlayer): ICard[]; addStackCardsToDeck(): void; overrideInternalState(state: IGameState): void; setWinner(player: IPlayer, score: number): void; getPlayersWhoShouldHaveYelled(): IPlayer[]; onSpecialCardPlayed(): Observable<ICard>; onCardPlayed(): Observable<ICard>; onStateChanged(): Observable<IGameState>; } /** Clase que representa el estado del juego */ export declare class GameState implements IGameState { readonly deck: IDeck; readonly stack: IStack; readonly playersGroup: IPlayersGroup; readonly turn: Turn; readonly events: GameEvents; gameDirection: GameDirection; cardsToGive: number; unoYellers: { [id: string]: boolean; }; id: number; gameModes: GameModes; winner: IPlayer | undefined; winnerScore: number; log$: BehaviorSubject<ILog>; constructor(); get nextPlayerToPlay(): IPlayer; get valid(): boolean; changeDirection(): void; giveCards(quantity: number, toPlayer: IPlayer): ICard[]; addStackCardsToDeck(): void; overrideInternalState(state: IGameState): void; setWinner(player: IPlayer, score: number): void; /** * Log message in the state with a level asigned. * * @remarks * If levels is undefined will be assigned LogLevel.DEFAULT * * @param state * @param message * @param level */ log(message: string, level?: LogLevel): void; /** * Return an observable with a flow of logs filtered by level * @param level */ logs(level: LogLevel): Observable<ILog>; /** * Return an observable with a special card has played */ onSpecialCardPlayed(): Observable<ICard>; /** * Return an observable with a common card has played */ onCardPlayed(): Observable<ICard>; /** * Return an observable with game state */ onStateChanged(): Observable<IGameState>; /** * Find and return users who should yell uno */ getPlayersWhoShouldHaveYelled(): IPlayer[]; }