@runox-game/game-engine
Version:
RunoX game engine
62 lines (61 loc) • 2.89 kB
JavaScript
;
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.TakeCardRandomPlayerCommand = void 0;
var game_command_1 = require("./game.command");
var command_result_1 = require("./command-result");
var after_take_cards_event_1 = require("../events/after-take-cards.event");
var log_levels_enum_1 = require("../log/log-levels.enum");
var random_1 = require("../utils/random");
/**
* Class that allows a random player to take a card from the deck
*/
var TakeCardRandomPlayerCommand = /** @class */ (function (_super) {
__extends(TakeCardRandomPlayerCommand, _super);
/**
* Class that allows a random player to take a card from the deck
*/
function TakeCardRandomPlayerCommand() {
return _super.call(this) || this;
}
TakeCardRandomPlayerCommand.prototype.execute = function (state) {
var randomIndex = random_1.randomizeInteger(0, state.playersGroup.players.length);
var randomPlayer = state.playersGroup.players[randomIndex];
var newCards;
if (state.gameModes.randomTakeDeckCard) {
newCards = state.giveCards(random_1.randomizeInteger(1, 5), randomPlayer);
}
else {
newCards = state.giveCards(1, randomPlayer);
}
state.log(randomPlayer.name + " toma por sorpresa las cartas " + newCards
.map(function (x) { return x.sprite; })
.join(', '), log_levels_enum_1.LogLevel.USER);
this.events.dispatchAfterTakeCards(new after_take_cards_event_1.AfterTakeCardsEvent(newCards, randomPlayer));
state.unoYellers[randomPlayer.id] = false;
this.checkForPlayersWhoShouldHaveYelledUno(state);
};
TakeCardRandomPlayerCommand.prototype.validate = function (state) {
if (!state.gameModes.crazyCommands) {
return new command_result_1.CommandValidation(false, 'Modo Crazy no está permitido');
}
if (!!state.winner) {
return new command_result_1.CommandValidation(false, 'Runox ya terminó');
}
return new command_result_1.CommandValidation(true);
};
return TakeCardRandomPlayerCommand;
}(game_command_1.GameCommand));
exports.TakeCardRandomPlayerCommand = TakeCardRandomPlayerCommand;