UNPKG

@runox-game/game-engine

Version:
271 lines (270 loc) 9.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GameEvents = void 0; var rxjs_1 = require("rxjs"); var game_event_enum_1 = require("./game-event.enum"); /** * Game event utility class */ var GameEvents = /** @class */ (function () { function GameEvents() { var _a; this.events = (_a = {}, _a[game_event_enum_1.GameEvent.AFTER_GAME_START] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.AFTER_PLAY_CARD] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.AFTER_TAKE_CARDS] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.AFTER_YELL_UNO] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.BEFORE_TURN] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.GAME_END] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.CHANGE_COLOR] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.SKIP] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.REVERSE] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.ERROR] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.SPECIAL_CARD] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.CARD_PLAYED] = new rxjs_1.Subject(), _a[game_event_enum_1.GameEvent.STATE_CHANGED] = new rxjs_1.Subject(), _a); } /** * Get instance of game event utility class */ GameEvents.getInstance = function () { if (!GameEvents.instance) { GameEvents.instance = new GameEvents(); } return GameEvents.instance; }; Object.defineProperty(GameEvents.prototype, "afterGameStart$", { /** * Observable that emits values when the game starts */ get: function () { return this.events[game_event_enum_1.GameEvent.AFTER_GAME_START].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "afterPlayCard$", { /** * Observable that emits values after a card is played */ get: function () { return this.events[game_event_enum_1.GameEvent.AFTER_PLAY_CARD].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "afterTakeCards$", { /** * Observable that emits values after a card is taken */ get: function () { return this.events[game_event_enum_1.GameEvent.AFTER_TAKE_CARDS].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "afterYellUno$", { /** * Observable that emits values after Uno is yelled */ get: function () { return this.events[game_event_enum_1.GameEvent.AFTER_YELL_UNO].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "beforeTurn$", { /** * Observable that emits values before a turn begins */ get: function () { return this.events[game_event_enum_1.GameEvent.BEFORE_TURN].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "gameEnd$", { /** * Observable that emits values when the game ends */ get: function () { return this.events[game_event_enum_1.GameEvent.GAME_END].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "changeColor$", { /** * Observable that emits values when the color of card has changed */ get: function () { return this.events[game_event_enum_1.GameEvent.CHANGE_COLOR].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "skip$", { /** * Observable that emits values when the color of card has changed */ get: function () { return this.events[game_event_enum_1.GameEvent.SKIP].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "reverse$", { /** * Observable that emits values when the color of card has changed */ get: function () { return this.events[game_event_enum_1.GameEvent.REVERSE].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "error$", { /** * Observable that emits values when an error occurred */ get: function () { return this.events[game_event_enum_1.GameEvent.ERROR].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "specialCard$", { /** * Observable that emits values when a special card has dropped */ get: function () { return this.events[game_event_enum_1.GameEvent.SPECIAL_CARD].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "cardplayed$", { /** * Observable that emits values when a common card has dropped */ get: function () { return this.events[game_event_enum_1.GameEvent.CARD_PLAYED].asObservable(); }, enumerable: false, configurable: true }); Object.defineProperty(GameEvents.prototype, "stateChanged$", { /** * Observable that emits values when a common card has dropped */ get: function () { return this.events[game_event_enum_1.GameEvent.STATE_CHANGED].asObservable(); }, enumerable: false, configurable: true }); /** * Emits value in the observable at the beginning of the game */ GameEvents.prototype.dispatchAfterGameStart = function () { return this.events[game_event_enum_1.GameEvent.AFTER_GAME_START].next(); }; /** * Emits value after a card is played * * @param data contains player information and played card */ GameEvents.prototype.dispatchAfterPlayCard = function (data) { return this.events[game_event_enum_1.GameEvent.AFTER_PLAY_CARD].next(data); }; /** * Emits value after a card is taken from the deck * * @param data contains player information and taken cards */ GameEvents.prototype.dispatchAfterTakeCards = function (data) { return this.events[game_event_enum_1.GameEvent.AFTER_TAKE_CARDS].next(data); }; /** * Emits value after a player yells Uno * * @param data contains yeller information */ GameEvents.prototype.dispatchAfterYellUno = function (data) { return this.events[game_event_enum_1.GameEvent.AFTER_YELL_UNO].next(data); }; /** * Emits value before a turn begins * * @param data contains player information */ GameEvents.prototype.dispatchBeforeTurn = function (data) { return this.events[game_event_enum_1.GameEvent.BEFORE_TURN].next(data); }; /** * Emits value when there is a winner * * @param data contains winner information and winner score */ GameEvents.prototype.dispatchGameEnd = function (data) { return this.events[game_event_enum_1.GameEvent.GAME_END].next(data); }; /** * Emits value when the color of card has changed * * @param data contains new color */ GameEvents.prototype.dispatchChangeColor = function (data) { return this.events[game_event_enum_1.GameEvent.CHANGE_COLOR].next(data); }; /** * Emits value when the next player has skiped * * @param data contains next user */ GameEvents.prototype.dispatchSkip = function (data) { return this.events[game_event_enum_1.GameEvent.SKIP].next(data); }; /** * Emits value the direction is changed by revert card * * @param data contains new color */ GameEvents.prototype.dispatchReverse = function (data) { return this.events[game_event_enum_1.GameEvent.REVERSE].next(data); }; /** * Emits error * * @param error */ GameEvents.prototype.dispatchError = function (error) { return this.events[game_event_enum_1.GameEvent.ERROR].next(error); }; /** * Emits card when was played a special card * * @param card special card */ GameEvents.prototype.dispatchSpecialCard = function (card) { return this.events[game_event_enum_1.GameEvent.SPECIAL_CARD].next(card); }; /** * Emits card when a card was played (not specials cards) * * @param card */ GameEvents.prototype.dispatchCardPlayed = function (card) { return this.events[game_event_enum_1.GameEvent.CARD_PLAYED].next(card); }; /** * Emits state when it was changed * @param state GameState */ GameEvents.prototype.dispatchStateChanged = function (state) { return this.events[game_event_enum_1.GameEvent.STATE_CHANGED].next(state); }; return GameEvents; }()); exports.GameEvents = GameEvents;