@runox-game/game-engine
Version:
RunoX game engine
271 lines (270 loc) • 9.83 kB
JavaScript
"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;