UNPKG

@runox-game/game-engine

Version:
81 lines (80 loc) 4.12 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.StartGameCommand = void 0; var game_command_1 = require("./game.command"); var command_result_1 = require("./command-result"); var before_turn_event_1 = require("../events/before-turn.event"); var log_levels_enum_1 = require("../log/log-levels.enum"); var constants_1 = require("../constants"); /** * Class that allows the game to start */ var StartGameCommand = /** @class */ (function (_super) { __extends(StartGameCommand, _super); /** * Class that allows the game to start */ function StartGameCommand(gameModes) { var _this = _super.call(this) || this; _this.gameModes = gameModes || { randomTakeDeckCard: false, dedicatePlusFour: false, }; return _this; } StartGameCommand.prototype.execute = function (state) { var handsLength = constants_1.Constants.NUMBER_OF_CARD_IN_HAND_ON_START; state.gameModes = this.gameModes; state.log(" Comienza el juego", log_levels_enum_1.LogLevel.USER); state.log(" Comienza el juego con modos " + JSON.stringify(state.gameModes) + " ", log_levels_enum_1.LogLevel.ALL); state.log(" Orden aleatorio a los jugadores", log_levels_enum_1.LogLevel.USER); state.playersGroup.shufflePlayers(); state.log("El orden de los jugadores es: " + state.playersGroup.players .map(function (x) { return x.name; }) .join(', '), log_levels_enum_1.LogLevel.USER); state.log(" Repartiendo cartas", log_levels_enum_1.LogLevel.USER); state.playersGroup.players.forEach(function (player, index) { player.hand.addCards(state.deck.cards.splice(index * handsLength, handsLength)); }); var firstStackCard = state.deck.takeCard(); // si la carta tiene efectos entonces busca otra // TODO: esto simplifica la logica por el momento pero deberia ser solo para +4 y elegir color while (firstStackCard.hasEffects()) { state.log(" si la carta tiene efectos entonces busca otra " + firstStackCard.sprite, log_levels_enum_1.LogLevel.ALL); state.log(" TODO: esto simplifica la logica por el momento pero deberia ser solo para +4 y elegir color", log_levels_enum_1.LogLevel.ALL); state.deck.addCards([firstStackCard]); state.log("Barajando", log_levels_enum_1.LogLevel.USER); state.deck.shuffle(); firstStackCard = state.deck.takeCard(); } state.stack.addCard(firstStackCard); state.log(" Carta en la mesa " + firstStackCard.sprite, log_levels_enum_1.LogLevel.USER); var playerTurn = state.playersGroup.players[0]; state.log(" El primer turno es para " + playerTurn.name, log_levels_enum_1.LogLevel.USER); state.turn.round = 0; state.turn.setPlayerTurn(playerTurn); this.events.dispatchAfterGameStart(); this.events.dispatchBeforeTurn(new before_turn_event_1.BeforeTurnEvent(playerTurn)); }; StartGameCommand.prototype.validate = function (state) { if (!state.playersGroup.players.length) { return new command_result_1.CommandValidation(false, 'No hay jugadores en la partida'); } return new command_result_1.CommandValidation(true); }; return StartGameCommand; }(game_command_1.GameCommand)); exports.StartGameCommand = StartGameCommand;