jp.ms.common.engine 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base/game-control-player-turn.d.ts +12 -0
- package/dist/base/game-control-player-turn.d.ts.map +1 -0
- package/dist/base/game-control-player-turn.js +27 -0
- package/dist/base/game-control-player-turn.js.map +1 -0
- package/dist/base/game-control-restart.d.ts +10 -0
- package/dist/base/game-control-restart.d.ts.map +1 -0
- package/dist/base/game-control-restart.js +21 -0
- package/dist/base/game-control-restart.js.map +1 -0
- package/dist/base/game-master.d.ts +34 -0
- package/dist/base/game-master.d.ts.map +1 -0
- package/dist/base/game-master.js +83 -0
- package/dist/base/game-master.js.map +1 -0
- package/dist/base/game-player-move.d.ts +13 -0
- package/dist/base/game-player-move.d.ts.map +1 -0
- package/dist/base/game-player-move.js +28 -0
- package/dist/base/game-player-move.js.map +1 -0
- package/dist/base/game-player.d.ts +61 -0
- package/dist/base/game-player.d.ts.map +1 -0
- package/dist/base/game-player.js +140 -0
- package/dist/base/game-player.js.map +1 -0
- package/dist/base/game-room.d.ts +47 -0
- package/dist/base/game-room.d.ts.map +1 -0
- package/dist/base/game-room.js +80 -0
- package/dist/base/game-room.js.map +1 -0
- package/dist/base/game-round.d.ts +28 -0
- package/dist/base/game-round.d.ts.map +1 -0
- package/dist/base/game-round.js +37 -0
- package/dist/base/game-round.js.map +1 -0
- package/dist/base/game-state-machine.d.ts +13 -0
- package/dist/base/game-state-machine.d.ts.map +1 -0
- package/dist/base/game-state-machine.js +21 -0
- package/dist/base/game-state-machine.js.map +1 -0
- package/dist/base/game-table-seat.d.ts +15 -0
- package/dist/base/game-table-seat.d.ts.map +1 -0
- package/dist/base/game-table-seat.js +32 -0
- package/dist/base/game-table-seat.js.map +1 -0
- package/dist/base/game-table-seats.d.ts +21 -0
- package/dist/base/game-table-seats.d.ts.map +1 -0
- package/dist/base/game-table-seats.js +67 -0
- package/dist/base/game-table-seats.js.map +1 -0
- package/dist/base/game-table.d.ts +87 -0
- package/dist/base/game-table.d.ts.map +1 -0
- package/dist/base/game-table.js +130 -0
- package/dist/base/game-table.js.map +1 -0
- package/dist/base/index.d.ts +13 -0
- package/dist/base/index.d.ts.map +1 -0
- package/dist/base/index.js +26 -0
- package/dist/base/index.js.map +1 -0
- package/dist/base/standard-game-state.d.ts +20 -0
- package/dist/base/standard-game-state.d.ts.map +1 -0
- package/dist/base/standard-game-state.js +57 -0
- package/dist/base/standard-game-state.js.map +1 -0
- package/dist/base-rooms/fast-tournament-room.d.ts +14 -0
- package/dist/base-rooms/fast-tournament-room.d.ts.map +1 -0
- package/dist/base-rooms/fast-tournament-room.js +53 -0
- package/dist/base-rooms/fast-tournament-room.js.map +1 -0
- package/dist/base-rooms/index.d.ts +10 -0
- package/dist/base-rooms/index.d.ts.map +1 -0
- package/dist/base-rooms/index.js +14 -0
- package/dist/base-rooms/index.js.map +1 -0
- package/dist/base-rooms/scheduled-tournament-room.d.ts +28 -0
- package/dist/base-rooms/scheduled-tournament-room.d.ts.map +1 -0
- package/dist/base-rooms/scheduled-tournament-room.js +166 -0
- package/dist/base-rooms/scheduled-tournament-room.js.map +1 -0
- package/dist/base-rooms/simple-room.d.ts +9 -0
- package/dist/base-rooms/simple-room.d.ts.map +1 -0
- package/dist/base-rooms/simple-room.js +13 -0
- package/dist/base-rooms/simple-room.js.map +1 -0
- package/dist/base-rooms/tournament-participant.d.ts +6 -0
- package/dist/base-rooms/tournament-participant.d.ts.map +1 -0
- package/dist/base-rooms/tournament-participant.js +3 -0
- package/dist/base-rooms/tournament-participant.js.map +1 -0
- package/dist/base-rooms/tournament-prize.d.ts +7 -0
- package/dist/base-rooms/tournament-prize.d.ts.map +1 -0
- package/dist/base-rooms/tournament-prize.js +3 -0
- package/dist/base-rooms/tournament-prize.js.map +1 -0
- package/dist/base-rooms/tournament-room.d.ts +47 -0
- package/dist/base-rooms/tournament-room.d.ts.map +1 -0
- package/dist/base-rooms/tournament-room.js +111 -0
- package/dist/base-rooms/tournament-room.js.map +1 -0
- package/dist/base-rooms/tournament-state.d.ts +23 -0
- package/dist/base-rooms/tournament-state.d.ts.map +1 -0
- package/dist/base-rooms/tournament-state.js +63 -0
- package/dist/base-rooms/tournament-state.js.map +1 -0
- package/dist/base-rooms/tournament-winner.d.ts +8 -0
- package/dist/base-rooms/tournament-winner.d.ts.map +1 -0
- package/dist/base-rooms/tournament-winner.js +3 -0
- package/dist/base-rooms/tournament-winner.js.map +1 -0
- package/dist/board-game/base/board-cell.d.ts +16 -0
- package/dist/board-game/base/board-cell.d.ts.map +1 -0
- package/dist/board-game/base/board-cell.js +42 -0
- package/dist/board-game/base/board-cell.js.map +1 -0
- package/dist/board-game/base/board-figure.d.ts +16 -0
- package/dist/board-game/base/board-figure.d.ts.map +1 -0
- package/dist/board-game/base/board-figure.js +38 -0
- package/dist/board-game/base/board-figure.js.map +1 -0
- package/dist/board-game/base/board-game-master.d.ts +19 -0
- package/dist/board-game/base/board-game-master.d.ts.map +1 -0
- package/dist/board-game/base/board-game-master.js +36 -0
- package/dist/board-game/base/board-game-master.js.map +1 -0
- package/dist/board-game/base/board-player-move.d.ts +11 -0
- package/dist/board-game/base/board-player-move.d.ts.map +1 -0
- package/dist/board-game/base/board-player-move.js +30 -0
- package/dist/board-game/base/board-player-move.js.map +1 -0
- package/dist/board-game/base/board-player.d.ts +13 -0
- package/dist/board-game/base/board-player.d.ts.map +1 -0
- package/dist/board-game/base/board-player.js +31 -0
- package/dist/board-game/base/board-player.js.map +1 -0
- package/dist/board-game/base/board-table.d.ts +17 -0
- package/dist/board-game/base/board-table.d.ts.map +1 -0
- package/dist/board-game/base/board-table.js +35 -0
- package/dist/board-game/base/board-table.js.map +1 -0
- package/dist/board-game/d1-board-game/d1-board-table.d.ts +19 -0
- package/dist/board-game/d1-board-game/d1-board-table.d.ts.map +1 -0
- package/dist/board-game/d1-board-game/d1-board-table.js +41 -0
- package/dist/board-game/d1-board-game/d1-board-table.js.map +1 -0
- package/dist/board-game/d2-board-game/d2-board-cell.d.ts +12 -0
- package/dist/board-game/d2-board-game/d2-board-cell.d.ts.map +1 -0
- package/dist/board-game/d2-board-game/d2-board-cell.js +26 -0
- package/dist/board-game/d2-board-game/d2-board-cell.js.map +1 -0
- package/dist/board-game/d2-board-game/d2-board-pattern-move-figure.d.ts +29 -0
- package/dist/board-game/d2-board-game/d2-board-pattern-move-figure.d.ts.map +1 -0
- package/dist/board-game/d2-board-game/d2-board-pattern-move-figure.js +51 -0
- package/dist/board-game/d2-board-game/d2-board-pattern-move-figure.js.map +1 -0
- package/dist/board-game/d2-board-game/d2-board-table.d.ts +49 -0
- package/dist/board-game/d2-board-game/d2-board-table.d.ts.map +1 -0
- package/dist/board-game/d2-board-game/d2-board-table.js +184 -0
- package/dist/board-game/d2-board-game/d2-board-table.js.map +1 -0
- package/dist/board-game/d2-board-game/types.d.ts +5 -0
- package/dist/board-game/d2-board-game/types.d.ts.map +1 -0
- package/dist/board-game/d2-board-game/types.js +3 -0
- package/dist/board-game/d2-board-game/types.js.map +1 -0
- package/dist/board-game/dice.d.ts +5 -0
- package/dist/board-game/dice.d.ts.map +1 -0
- package/dist/board-game/dice.js +14 -0
- package/dist/board-game/dice.js.map +1 -0
- package/dist/board-game/index.d.ts +13 -0
- package/dist/board-game/index.d.ts.map +1 -0
- package/dist/board-game/index.js +26 -0
- package/dist/board-game/index.js.map +1 -0
- package/dist/cards-game/cards/card.d.ts +25 -0
- package/dist/cards-game/cards/card.d.ts.map +1 -0
- package/dist/cards-game/cards/card.js +45 -0
- package/dist/cards-game/cards/card.js.map +1 -0
- package/dist/cards-game/cards/cards.d.ts +55 -0
- package/dist/cards-game/cards/cards.d.ts.map +1 -0
- package/dist/cards-game/cards/cards.js +63 -0
- package/dist/cards-game/cards/cards.js.map +1 -0
- package/dist/cards-game/cards/deck36.d.ts +2 -0
- package/dist/cards-game/cards/deck36.d.ts.map +1 -0
- package/dist/cards-game/cards/deck36.js +43 -0
- package/dist/cards-game/cards/deck36.js.map +1 -0
- package/dist/cards-game/cards/deck52.d.ts +2 -0
- package/dist/cards-game/cards/deck52.d.ts.map +1 -0
- package/dist/cards-game/cards/deck52.js +59 -0
- package/dist/cards-game/cards/deck52.js.map +1 -0
- package/dist/cards-game/cards/ranks.d.ts +18 -0
- package/dist/cards-game/cards/ranks.d.ts.map +1 -0
- package/dist/cards-game/cards/ranks.js +23 -0
- package/dist/cards-game/cards/ranks.js.map +1 -0
- package/dist/cards-game/cards/suits.d.ts +8 -0
- package/dist/cards-game/cards/suits.d.ts.map +1 -0
- package/dist/cards-game/cards/suits.js +13 -0
- package/dist/cards-game/cards/suits.js.map +1 -0
- package/dist/cards-game/cards-game-master.d.ts +24 -0
- package/dist/cards-game/cards-game-master.d.ts.map +1 -0
- package/dist/cards-game/cards-game-master.js +65 -0
- package/dist/cards-game/cards-game-master.js.map +1 -0
- package/dist/cards-game/cards-player.d.ts +12 -0
- package/dist/cards-game/cards-player.d.ts.map +1 -0
- package/dist/cards-game/cards-player.js +29 -0
- package/dist/cards-game/cards-player.js.map +1 -0
- package/dist/cards-game/cards-table.d.ts +11 -0
- package/dist/cards-game/cards-table.d.ts.map +1 -0
- package/dist/cards-game/cards-table.js +20 -0
- package/dist/cards-game/cards-table.js.map +1 -0
- package/dist/cards-game/index.d.ts +11 -0
- package/dist/cards-game/index.d.ts.map +1 -0
- package/dist/cards-game/index.js +55 -0
- package/dist/cards-game/index.js.map +1 -0
- package/dist/const.d.ts +3 -0
- package/dist/const.d.ts.map +1 -0
- package/dist/const.js +6 -0
- package/dist/const.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/circle-list.d.ts +29 -0
- package/dist/utils/circle-list.d.ts.map +1 -0
- package/dist/utils/circle-list.js +103 -0
- package/dist/utils/circle-list.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/shuffle.d.ts +3 -0
- package/dist/utils/shuffle.d.ts.map +1 -0
- package/dist/utils/shuffle.js +16 -0
- package/dist/utils/shuffle.js.map +1 -0
- package/dist/utils/tests/circle-list.test.d.ts +2 -0
- package/dist/utils/tests/circle-list.test.d.ts.map +1 -0
- package/dist/utils/tests/circle-list.test.js +60 -0
- package/dist/utils/tests/circle-list.test.js.map +1 -0
- package/package.json +54 -0
- package/readme.md +3 -0
- package/src/base/game-control-player-turn.ts +39 -0
- package/src/base/game-control-restart.ts +30 -0
- package/src/base/game-master.ts +109 -0
- package/src/base/game-player-move.ts +33 -0
- package/src/base/game-player.ts +184 -0
- package/src/base/game-room.ts +127 -0
- package/src/base/game-round.ts +62 -0
- package/src/base/game-state-machine.ts +25 -0
- package/src/base/game-table-seat.ts +37 -0
- package/src/base/game-table-seats.ts +78 -0
- package/src/base/game-table.ts +237 -0
- package/src/base/index.ts +25 -0
- package/src/base/standard-game-state.ts +69 -0
- package/src/base-rooms/fast-tournament-room.ts +59 -0
- package/src/base-rooms/index.ts +19 -0
- package/src/base-rooms/scheduled-tournament-room.ts +181 -0
- package/src/base-rooms/simple-room.ts +15 -0
- package/src/base-rooms/tournament-participant.ts +5 -0
- package/src/base-rooms/tournament-prize.ts +7 -0
- package/src/base-rooms/tournament-room.ts +169 -0
- package/src/base-rooms/tournament-state.ts +78 -0
- package/src/base-rooms/tournament-winner.ts +7 -0
- package/src/board-game/base/board-cell.ts +50 -0
- package/src/board-game/base/board-figure.ts +49 -0
- package/src/board-game/base/board-game-master.ts +56 -0
- package/src/board-game/base/board-player-move.ts +29 -0
- package/src/board-game/base/board-player.ts +43 -0
- package/src/board-game/base/board-table.ts +52 -0
- package/src/board-game/d1-board-game/d1-board-table.ts +56 -0
- package/src/board-game/d2-board-game/d2-board-cell.ts +30 -0
- package/src/board-game/d2-board-game/d2-board-pattern-move-figure.ts +79 -0
- package/src/board-game/d2-board-game/d2-board-table.ts +262 -0
- package/src/board-game/d2-board-game/types.ts +4 -0
- package/src/board-game/dice.ts +9 -0
- package/src/board-game/index.ts +28 -0
- package/src/cards-game/cards/card.ts +60 -0
- package/src/cards-game/cards/cards.ts +86 -0
- package/src/cards-game/cards/deck36.ts +80 -0
- package/src/cards-game/cards/deck52.ts +112 -0
- package/src/cards-game/cards/ranks.ts +19 -0
- package/src/cards-game/cards/suits.ts +10 -0
- package/src/cards-game/cards-game-master.ts +83 -0
- package/src/cards-game/cards-player.ts +40 -0
- package/src/cards-game/cards-table.ts +28 -0
- package/src/cards-game/index.ts +21 -0
- package/src/const.ts +3 -0
- package/src/index.ts +5 -0
- package/src/utils/circle-list.ts +130 -0
- package/src/utils/index.ts +8 -0
- package/src/utils/shuffle.ts +12 -0
- package/src/utils/tests/circle-list.test.ts +72 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-round.d.ts","sourceRoot":"","sources":["../../src/base/game-round.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB,CAAA;AAED,MAAM,WAAW,UAAU,CAAC,EAAE;IAC1B,eAAe,IAAK,EAAE,CAAC;IAEvB,eAAe,CAAE,YAAY,EAAE,EAAE,OAAE;CACtC;AAED,8BAAsB,SAAS,CAAC,EAAE,EAAE,EAAE,CAAE,YAAW,UAAU,CAAC,EAAE,CAAC;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,YAAY,CAAK;IAEzB,SAAS;IAMT,QAAQ,IAAK,EAAE;IAIf,QAAQ,CAAE,KAAK,EAAE,EAAE,GAAG,IAAI;IAI1B,UAAU,IAAK,KAAK,CAAC,oBAAoB,CAAC;IAI1C,YAAY,CAAE,IAAI,EAAE,oBAAoB,GAAG,IAAI;IAI/C,QAAQ,CAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM,IAAK,MAAM;IAIjB,eAAe;IAIf,eAAe,CAAE,YAAY,EAAE,EAAE;CAGpC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GameRound = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
class GameRound {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.id = (0, uuid_1.v4)();
|
|
8
|
+
this.pot = 0;
|
|
9
|
+
this.history = [];
|
|
10
|
+
}
|
|
11
|
+
getState() {
|
|
12
|
+
return this.state;
|
|
13
|
+
}
|
|
14
|
+
setState(state) {
|
|
15
|
+
this.state = state;
|
|
16
|
+
}
|
|
17
|
+
getHistory() {
|
|
18
|
+
return this.history;
|
|
19
|
+
}
|
|
20
|
+
addToHistory(item) {
|
|
21
|
+
this.history.push(item);
|
|
22
|
+
}
|
|
23
|
+
addToPot(amount) {
|
|
24
|
+
this.pot += amount;
|
|
25
|
+
}
|
|
26
|
+
getPot() {
|
|
27
|
+
return this.pot;
|
|
28
|
+
}
|
|
29
|
+
getActivePlayer() {
|
|
30
|
+
return this.activePlayer;
|
|
31
|
+
}
|
|
32
|
+
setActivePlayer(activePlayer) {
|
|
33
|
+
this.activePlayer = activePlayer;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.GameRound = GameRound;
|
|
37
|
+
//# sourceMappingURL=game-round.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-round.js","sourceRoot":"","sources":["../../src/base/game-round.ts"],"names":[],"mappings":";;;AAAA,+BAAmC;AAgBnC,MAAsB,SAAS;IAO3B;QACI,IAAI,CAAC,EAAE,GAAG,IAAA,SAAK,GAAE,CAAC;QAClB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,QAAQ,CAAE,KAAS;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,YAAY,CAAE,IAA0B;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAE,MAAc;QACpB,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC;IACvB,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,eAAe,CAAE,YAAgB;QAC7B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;CACJ;AA5CD,8BA4CC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type StateMachineConfig = Record<string, {
|
|
2
|
+
on: Record<string, string>;
|
|
3
|
+
}>;
|
|
4
|
+
export declare abstract class GameStateMachine<S, A> {
|
|
5
|
+
private readonly initialState;
|
|
6
|
+
private currentState;
|
|
7
|
+
private config;
|
|
8
|
+
protected constructor(initialState: S, config: StateMachineConfig);
|
|
9
|
+
getCurrentState(): S;
|
|
10
|
+
start(): void;
|
|
11
|
+
send(action: A): void;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=game-state-machine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-state-machine.d.ts","sourceRoot":"","sources":["../../src/base/game-state-machine.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAAA;AAE/E,8BAAsB,gBAAgB,CAAC,CAAC,EAAE,CAAC;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAI;IACjC,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,MAAM,CAAqB;IAEnC,SAAS,aAAc,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,kBAAkB;IAMlE,eAAe,IAAK,CAAC;IAIrB,KAAK;IAIL,IAAI,CAAE,MAAM,EAAE,CAAC;CAGlB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GameStateMachine = void 0;
|
|
4
|
+
class GameStateMachine {
|
|
5
|
+
constructor(initialState, config) {
|
|
6
|
+
this.config = config;
|
|
7
|
+
this.initialState = initialState;
|
|
8
|
+
this.currentState = this.initialState;
|
|
9
|
+
}
|
|
10
|
+
getCurrentState() {
|
|
11
|
+
return this.currentState;
|
|
12
|
+
}
|
|
13
|
+
start() {
|
|
14
|
+
this.currentState = this.initialState;
|
|
15
|
+
}
|
|
16
|
+
send(action) {
|
|
17
|
+
this.currentState = this.config[this.currentState].on[action];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.GameStateMachine = GameStateMachine;
|
|
21
|
+
//# sourceMappingURL=game-state-machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-state-machine.js","sourceRoot":"","sources":["../../src/base/game-state-machine.ts"],"names":[],"mappings":";;;AAEA,MAAsB,gBAAgB;IAKlC,YAAuB,YAAe,EAAE,MAA0B;QAC9D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,KAAK;QACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED,IAAI,CAAE,MAAS;QACX,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAsB,CAAC,CAAC,EAAE,CAAC,MAAgB,CAAM,CAAC;IAC3F,CAAC;CACJ;AAtBD,4CAsBC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GamePlayer } from './game-player';
|
|
2
|
+
export declare class GameTableSeat<GP extends GamePlayer> {
|
|
3
|
+
private readonly number;
|
|
4
|
+
private player;
|
|
5
|
+
private role;
|
|
6
|
+
constructor(number: number);
|
|
7
|
+
getRole(): string;
|
|
8
|
+
setRole(role: string): void;
|
|
9
|
+
clearRole(): void;
|
|
10
|
+
getNumber(): number;
|
|
11
|
+
getPlayer(): GP;
|
|
12
|
+
addPlayer(player: GP): void;
|
|
13
|
+
removePlayer(): void;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=game-table-seat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-table-seat.d.ts","sourceRoot":"","sources":["../../src/base/game-table-seat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,aAAa,CAAC,EAAE,SAAS,UAAU;IAI/B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHpC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,IAAI,CAAgB;gBAEE,MAAM,EAAE,MAAM;IAGrC,OAAO;IAIP,OAAO,CAAE,IAAI,EAAE,MAAM;IAIrB,SAAS;IAIhB,SAAS,IAAK,MAAM;IAIpB,SAAS;IAIT,SAAS,CAAE,MAAM,EAAE,EAAE;IAIrB,YAAY;CAGf"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GameTableSeat = void 0;
|
|
4
|
+
class GameTableSeat {
|
|
5
|
+
constructor(number) {
|
|
6
|
+
this.number = number;
|
|
7
|
+
this.player = null;
|
|
8
|
+
}
|
|
9
|
+
getRole() {
|
|
10
|
+
return this.role;
|
|
11
|
+
}
|
|
12
|
+
setRole(role) {
|
|
13
|
+
this.role = role;
|
|
14
|
+
}
|
|
15
|
+
clearRole() {
|
|
16
|
+
this.role = null;
|
|
17
|
+
}
|
|
18
|
+
getNumber() {
|
|
19
|
+
return this.number;
|
|
20
|
+
}
|
|
21
|
+
getPlayer() {
|
|
22
|
+
return this.player;
|
|
23
|
+
}
|
|
24
|
+
addPlayer(player) {
|
|
25
|
+
this.player = player;
|
|
26
|
+
}
|
|
27
|
+
removePlayer() {
|
|
28
|
+
this.player = null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.GameTableSeat = GameTableSeat;
|
|
32
|
+
//# sourceMappingURL=game-table-seat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-table-seat.js","sourceRoot":"","sources":["../../src/base/game-table-seat.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IAItB,YAA8B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAHpC,WAAM,GAAc,IAAI,CAAC;IAIjC,CAAC;IAEM,OAAO;QACV,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAEM,OAAO,CAAE,IAAY;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,SAAS;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,SAAS,CAAE,MAAU;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,YAAY;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;CACJ;AAlCD,sCAkCC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CircleList } from '../utils';
|
|
2
|
+
import { GameTableSeat } from './game-table-seat';
|
|
3
|
+
import { GamePlayer } from './game-player';
|
|
4
|
+
export declare class GameTableSeats<GP extends GamePlayer> {
|
|
5
|
+
private readonly tableSize;
|
|
6
|
+
protected readonly seats: CircleList<GameTableSeat<GP>>;
|
|
7
|
+
constructor(tableSize: number);
|
|
8
|
+
getSeats(): Array<GameTableSeat<GP>>;
|
|
9
|
+
getSeatsWithPlayers(): Array<GameTableSeat<GP>>;
|
|
10
|
+
getSeat(number: number | null): GameTableSeat<GP> | undefined;
|
|
11
|
+
getNextSeat(from: number): GameTableSeat<GP> | undefined;
|
|
12
|
+
getNextPlayer(from: number): GP | null;
|
|
13
|
+
getPrevSeat(from: number): GameTableSeat<GP> | undefined;
|
|
14
|
+
getPrevPlayer(from: number): GP | null;
|
|
15
|
+
getPlayersChain(from: number): Array<GP>;
|
|
16
|
+
getFirstSeatWithPlayer(): GameTableSeat<GP> | null;
|
|
17
|
+
findFreeSeat(): GameTableSeat<GP> | undefined;
|
|
18
|
+
clearAllSeatsRole(): void;
|
|
19
|
+
isTwoPlayerGame(): boolean;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=game-table-seats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-table-seats.d.ts","sourceRoot":"","sources":["../../src/base/game-table-seats.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBAAa,cAAc,CAAC,EAAE,SAAS,UAAU;IAGhC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFvC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBAE1B,SAAS,EAAE,MAAM;IAQ/C,QAAQ,IAAK,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAIrC,mBAAmB,IAAK,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAIhD,OAAO,CAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,GAAG,SAAS;IAI9D,WAAW,CAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,GAAG,SAAS;IAIzD,aAAa,CAAE,IAAI,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI;IAWvC,WAAW,CAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,GAAG,SAAS;IAIzD,aAAa,CAAE,IAAI,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI;IAIvC,eAAe,CAAE,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC;IAMzC,sBAAsB,IAAK,aAAa,CAAC,EAAE,CAAC,GAAG,IAAI;IAInD,YAAY,IAAK,aAAa,CAAC,EAAE,CAAC,GAAG,SAAS;IAI9C,iBAAiB;IAMjB,eAAe;CAGlB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GameTableSeats = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const const_1 = require("../const");
|
|
7
|
+
const game_table_seat_1 = require("./game-table-seat");
|
|
8
|
+
class GameTableSeats {
|
|
9
|
+
constructor(tableSize) {
|
|
10
|
+
this.tableSize = tableSize;
|
|
11
|
+
this.seats = new utils_1.CircleList();
|
|
12
|
+
for (let i = 0; i < this.tableSize; i += 1) {
|
|
13
|
+
this.seats.push(new game_table_seat_1.GameTableSeat(i + 1));
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
getSeats() {
|
|
17
|
+
return this.seats.toArray();
|
|
18
|
+
}
|
|
19
|
+
getSeatsWithPlayers() {
|
|
20
|
+
return this.seats.toArray().filter((item) => !!item.getPlayer());
|
|
21
|
+
}
|
|
22
|
+
getSeat(number) {
|
|
23
|
+
return this.seats.toArray().find((item) => item.getNumber() === number);
|
|
24
|
+
}
|
|
25
|
+
getNextSeat(from) {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
return (_b = (_a = this.seats.get(from - 1)) === null || _a === void 0 ? void 0 : _a.getNext()) === null || _b === void 0 ? void 0 : _b.getData();
|
|
28
|
+
}
|
|
29
|
+
getNextPlayer(from) {
|
|
30
|
+
var _a;
|
|
31
|
+
const nextSeat = this.getNextSeat(from);
|
|
32
|
+
const nextPlayer = nextSeat === null || nextSeat === void 0 ? void 0 : nextSeat.getPlayer();
|
|
33
|
+
if (!nextPlayer) {
|
|
34
|
+
return this.getNextPlayer((_a = nextSeat === null || nextSeat === void 0 ? void 0 : nextSeat.getNumber()) !== null && _a !== void 0 ? _a : 0);
|
|
35
|
+
}
|
|
36
|
+
return nextPlayer;
|
|
37
|
+
}
|
|
38
|
+
getPrevSeat(from) {
|
|
39
|
+
var _a, _b;
|
|
40
|
+
return (_b = (_a = this.seats.get(from - 1)) === null || _a === void 0 ? void 0 : _a.getPrev()) === null || _b === void 0 ? void 0 : _b.getData();
|
|
41
|
+
}
|
|
42
|
+
getPrevPlayer(from) {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
return (_b = (_a = this.getPrevSeat(from)) === null || _a === void 0 ? void 0 : _a.getPlayer()) !== null && _b !== void 0 ? _b : null;
|
|
45
|
+
}
|
|
46
|
+
getPlayersChain(from) {
|
|
47
|
+
const chain = this.seats.getNextChain(from).map((item) => item.getPlayer());
|
|
48
|
+
return (0, lodash_1.compact)(chain);
|
|
49
|
+
}
|
|
50
|
+
getFirstSeatWithPlayer() {
|
|
51
|
+
var _a;
|
|
52
|
+
return (_a = this.getSeatsWithPlayers()[0]) !== null && _a !== void 0 ? _a : null;
|
|
53
|
+
}
|
|
54
|
+
findFreeSeat() {
|
|
55
|
+
return this.seats.toArray().find((seat) => seat.getPlayer() === null);
|
|
56
|
+
}
|
|
57
|
+
clearAllSeatsRole() {
|
|
58
|
+
this.seats.toArray().forEach((seat) => {
|
|
59
|
+
seat.clearRole();
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
isTwoPlayerGame() {
|
|
63
|
+
return this.getSeatsWithPlayers().length === const_1.TWO_PLAYER_GAME;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.GameTableSeats = GameTableSeats;
|
|
67
|
+
//# sourceMappingURL=game-table-seats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-table-seats.js","sourceRoot":"","sources":["../../src/base/game-table-seats.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { GamePlayer } from './game-player';
|
|
2
|
+
import { GameTableSeats } from './game-table-seats';
|
|
3
|
+
export interface IGameTable<GP extends GamePlayer> {
|
|
4
|
+
getId(): string;
|
|
5
|
+
hasInQueue(PlayerId: string): boolean;
|
|
6
|
+
hasInWatchers(PlayerId: string): boolean;
|
|
7
|
+
isFull(): boolean;
|
|
8
|
+
getSeats(): GameTableSeats<GP>;
|
|
9
|
+
hasSeats(): boolean;
|
|
10
|
+
addPlayerToQueue(player: GP): any;
|
|
11
|
+
addPlayerToSeat(player: GP): any;
|
|
12
|
+
removePlayerFromSeat(player: GP): any;
|
|
13
|
+
removePlayerFromQueue(player: GP): any;
|
|
14
|
+
removePlayerFromWatchers(player: GP): any;
|
|
15
|
+
addPlayerToWatchers(player: GP): any;
|
|
16
|
+
getPlayers(): Array<GP>;
|
|
17
|
+
getPlayerByColor(color: number): GP | undefined;
|
|
18
|
+
getPlayersWithQueue(): Array<GP>;
|
|
19
|
+
getEmptyStackPlayers(): Array<GP>;
|
|
20
|
+
remainOnePlayer(): boolean;
|
|
21
|
+
startNewRound(): void;
|
|
22
|
+
getQueue(): Array<GP>;
|
|
23
|
+
getTableSize(): number;
|
|
24
|
+
getRedundantQueuers(): Array<GP>;
|
|
25
|
+
getLastPlayer(): GP | null;
|
|
26
|
+
getTurnTimeout(): number;
|
|
27
|
+
getRestartTimeout(): number;
|
|
28
|
+
}
|
|
29
|
+
export type GameTableConfig<GP extends GamePlayer> = {
|
|
30
|
+
roomId: string;
|
|
31
|
+
number: number;
|
|
32
|
+
tableSize: number;
|
|
33
|
+
bet: number;
|
|
34
|
+
rulesType: string;
|
|
35
|
+
turnTimeout: number;
|
|
36
|
+
restartTimeout: number;
|
|
37
|
+
onRoomFinishRound: (table: IGameTable<GP>) => void;
|
|
38
|
+
onRoomRestartRound: (table: IGameTable<GP>) => void;
|
|
39
|
+
};
|
|
40
|
+
export declare abstract class GameTable<GP extends GamePlayer, GM, GSR> implements IGameTable<GP> {
|
|
41
|
+
private readonly roomId;
|
|
42
|
+
private readonly number;
|
|
43
|
+
private readonly tableSize;
|
|
44
|
+
private readonly bet;
|
|
45
|
+
private readonly turnTimeout;
|
|
46
|
+
private readonly restartTimeout;
|
|
47
|
+
private readonly queue;
|
|
48
|
+
private readonly watchers;
|
|
49
|
+
readonly seats: GameTableSeats<GP>;
|
|
50
|
+
master: GM;
|
|
51
|
+
onRoomFinishRound: (table: IGameTable<GP>) => void;
|
|
52
|
+
onRoomRestartRound: (table: IGameTable<GP>) => void;
|
|
53
|
+
protected constructor(config: GameTableConfig<GP>);
|
|
54
|
+
abstract startNewRound(): void;
|
|
55
|
+
getRoomId(): string;
|
|
56
|
+
getId(): string;
|
|
57
|
+
getNumber(): number;
|
|
58
|
+
getTableSize(): number;
|
|
59
|
+
getBet(): number;
|
|
60
|
+
getHalfBet(): number;
|
|
61
|
+
getTurnTimeout(): number;
|
|
62
|
+
getRestartTimeout(): number;
|
|
63
|
+
addPlayerToSeat(player: GP): boolean;
|
|
64
|
+
removePlayerFromSeat(player: GP): void;
|
|
65
|
+
getPlayers(): Array<GP>;
|
|
66
|
+
getPlayerByColor(color: number): GP | undefined;
|
|
67
|
+
getPlayersWithQueue(): Array<GP>;
|
|
68
|
+
getLastPlayer(): GP | null;
|
|
69
|
+
remainOnePlayer(): boolean;
|
|
70
|
+
hasMinPlayers(): boolean;
|
|
71
|
+
getEmptyStackPlayers(): Array<GP>;
|
|
72
|
+
getQueue(): Array<GP>;
|
|
73
|
+
getRedundantQueuers(): Array<GP>;
|
|
74
|
+
addPlayerToQueue(player: GP): void;
|
|
75
|
+
removePlayerFromQueue(player: GP): void;
|
|
76
|
+
hasInQueue(PlayerId: string): boolean;
|
|
77
|
+
getWatchers(): Array<GP>;
|
|
78
|
+
addPlayerToWatchers(player: GP): void;
|
|
79
|
+
removePlayerFromWatchers(player: GP): void;
|
|
80
|
+
hasInWatchers(PlayerId: string): boolean;
|
|
81
|
+
isFull(): boolean;
|
|
82
|
+
getSeats(): GameTableSeats<GP>;
|
|
83
|
+
hasSeats(): boolean;
|
|
84
|
+
onFinishRound(): void;
|
|
85
|
+
onRestartRound(): void;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=game-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-table.d.ts","sourceRoot":"","sources":["../../src/base/game-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GameTable = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const game_table_seats_1 = require("./game-table-seats");
|
|
6
|
+
class GameTable {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.queue = [];
|
|
9
|
+
this.watchers = [];
|
|
10
|
+
this.onRoomFinishRound = config.onRoomFinishRound;
|
|
11
|
+
this.onRoomRestartRound = config.onRoomRestartRound;
|
|
12
|
+
this.roomId = config.roomId;
|
|
13
|
+
this.number = config.number;
|
|
14
|
+
this.tableSize = config.tableSize;
|
|
15
|
+
this.bet = config.bet;
|
|
16
|
+
this.turnTimeout = config.turnTimeout;
|
|
17
|
+
this.restartTimeout = config.restartTimeout;
|
|
18
|
+
this.seats = new game_table_seats_1.GameTableSeats(this.getTableSize());
|
|
19
|
+
}
|
|
20
|
+
getRoomId() {
|
|
21
|
+
return this.roomId;
|
|
22
|
+
}
|
|
23
|
+
getId() {
|
|
24
|
+
return String(this.number);
|
|
25
|
+
}
|
|
26
|
+
getNumber() {
|
|
27
|
+
return this.number;
|
|
28
|
+
}
|
|
29
|
+
getTableSize() {
|
|
30
|
+
return this.tableSize;
|
|
31
|
+
}
|
|
32
|
+
getBet() {
|
|
33
|
+
return this.bet;
|
|
34
|
+
}
|
|
35
|
+
getHalfBet() {
|
|
36
|
+
return this.bet / 2;
|
|
37
|
+
}
|
|
38
|
+
getTurnTimeout() {
|
|
39
|
+
return this.turnTimeout;
|
|
40
|
+
}
|
|
41
|
+
getRestartTimeout() {
|
|
42
|
+
return this.restartTimeout;
|
|
43
|
+
}
|
|
44
|
+
addPlayerToSeat(player) {
|
|
45
|
+
const freeSeat = this.seats.findFreeSeat();
|
|
46
|
+
if (freeSeat) {
|
|
47
|
+
freeSeat.addPlayer(player);
|
|
48
|
+
player.seat(this.getRoomId(), this.getId(), freeSeat.getNumber());
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
removePlayerFromSeat(player) {
|
|
54
|
+
const seat = this.seats.getSeat(player.getSeatNumber());
|
|
55
|
+
if (seat) {
|
|
56
|
+
seat.removePlayer();
|
|
57
|
+
player.quit();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
getPlayers() {
|
|
61
|
+
return (0, lodash_1.compact)(this.seats.getSeats().map((seat) => seat.getPlayer()));
|
|
62
|
+
}
|
|
63
|
+
getPlayerByColor(color) {
|
|
64
|
+
return this.getPlayers().find((item) => item.getColor() === color);
|
|
65
|
+
}
|
|
66
|
+
getPlayersWithQueue() {
|
|
67
|
+
return [...this.getPlayers(), ...this.queue];
|
|
68
|
+
}
|
|
69
|
+
getLastPlayer() {
|
|
70
|
+
var _a;
|
|
71
|
+
return (_a = (0, lodash_1.first)(this.getPlayers())) !== null && _a !== void 0 ? _a : null;
|
|
72
|
+
}
|
|
73
|
+
remainOnePlayer() {
|
|
74
|
+
return this.getPlayers().length === 1;
|
|
75
|
+
}
|
|
76
|
+
hasMinPlayers() {
|
|
77
|
+
return this.getPlayers().length > 1;
|
|
78
|
+
}
|
|
79
|
+
getEmptyStackPlayers() {
|
|
80
|
+
return this.getPlayers().filter((player) => player.hasEmptyStack());
|
|
81
|
+
}
|
|
82
|
+
getQueue() {
|
|
83
|
+
return this.queue;
|
|
84
|
+
}
|
|
85
|
+
getRedundantQueuers() {
|
|
86
|
+
return (0, lodash_1.slice)(this.queue, this.getTableSize() - this.getPlayers().length - 1);
|
|
87
|
+
}
|
|
88
|
+
addPlayerToQueue(player) {
|
|
89
|
+
this.queue.push(player);
|
|
90
|
+
player.getInTableQueue(this.getRoomId(), this.getId());
|
|
91
|
+
}
|
|
92
|
+
removePlayerFromQueue(player) {
|
|
93
|
+
(0, lodash_1.remove)(this.queue, (queuer) => queuer.getId() === player.getId());
|
|
94
|
+
player.quit();
|
|
95
|
+
}
|
|
96
|
+
hasInQueue(PlayerId) {
|
|
97
|
+
return !!this.getQueue().find((queuer) => queuer.getId() === PlayerId);
|
|
98
|
+
}
|
|
99
|
+
getWatchers() {
|
|
100
|
+
return this.watchers;
|
|
101
|
+
}
|
|
102
|
+
addPlayerToWatchers(player) {
|
|
103
|
+
this.watchers.push(player);
|
|
104
|
+
player.watch(this.getRoomId(), this.getId());
|
|
105
|
+
}
|
|
106
|
+
removePlayerFromWatchers(player) {
|
|
107
|
+
(0, lodash_1.remove)(this.watchers, (watcher) => watcher.getId() === player.getId());
|
|
108
|
+
player.quit();
|
|
109
|
+
}
|
|
110
|
+
hasInWatchers(PlayerId) {
|
|
111
|
+
return !!this.getWatchers().find((watcher) => watcher.getId() === PlayerId);
|
|
112
|
+
}
|
|
113
|
+
isFull() {
|
|
114
|
+
return !this.seats.findFreeSeat();
|
|
115
|
+
}
|
|
116
|
+
getSeats() {
|
|
117
|
+
return this.seats;
|
|
118
|
+
}
|
|
119
|
+
hasSeats() {
|
|
120
|
+
return !!this.seats.findFreeSeat();
|
|
121
|
+
}
|
|
122
|
+
onFinishRound() {
|
|
123
|
+
this.onRoomFinishRound(this);
|
|
124
|
+
}
|
|
125
|
+
onRestartRound() {
|
|
126
|
+
this.onRoomRestartRound(this);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
exports.GameTable = GameTable;
|
|
130
|
+
//# sourceMappingURL=game-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game-table.js","sourceRoot":"","sources":["../../src/base/game-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GameControlPlayerTurn } from './game-control-player-turn';
|
|
2
|
+
import { GameControlRestart } from './game-control-restart';
|
|
3
|
+
import { GameMaster } from './game-master';
|
|
4
|
+
import { GamePlayer } from './game-player';
|
|
5
|
+
import { GamePlayerMove } from './game-player-move';
|
|
6
|
+
import { GameRoom } from './game-room';
|
|
7
|
+
import { GameRound } from './game-round';
|
|
8
|
+
import { GameStateMachine } from './game-state-machine';
|
|
9
|
+
import { GameTable } from './game-table';
|
|
10
|
+
import { GameTableSeat } from './game-table-seat';
|
|
11
|
+
import { GameTableSeats } from './game-table-seats';
|
|
12
|
+
export { GameControlPlayerTurn, GameControlRestart, GameMaster, GamePlayer, GamePlayerMove, GameRoom, GameRound, GameStateMachine, GameTable, GameTableSeat, GameTableSeats, };
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EACH,qBAAqB,EACrB,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,cAAc,EACd,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,cAAc,GACjB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GameTableSeats = exports.GameTableSeat = exports.GameTable = exports.GameStateMachine = exports.GameRound = exports.GameRoom = exports.GamePlayerMove = exports.GamePlayer = exports.GameMaster = exports.GameControlRestart = exports.GameControlPlayerTurn = void 0;
|
|
4
|
+
const game_control_player_turn_1 = require("./game-control-player-turn");
|
|
5
|
+
Object.defineProperty(exports, "GameControlPlayerTurn", { enumerable: true, get: function () { return game_control_player_turn_1.GameControlPlayerTurn; } });
|
|
6
|
+
const game_control_restart_1 = require("./game-control-restart");
|
|
7
|
+
Object.defineProperty(exports, "GameControlRestart", { enumerable: true, get: function () { return game_control_restart_1.GameControlRestart; } });
|
|
8
|
+
const game_master_1 = require("./game-master");
|
|
9
|
+
Object.defineProperty(exports, "GameMaster", { enumerable: true, get: function () { return game_master_1.GameMaster; } });
|
|
10
|
+
const game_player_1 = require("./game-player");
|
|
11
|
+
Object.defineProperty(exports, "GamePlayer", { enumerable: true, get: function () { return game_player_1.GamePlayer; } });
|
|
12
|
+
const game_player_move_1 = require("./game-player-move");
|
|
13
|
+
Object.defineProperty(exports, "GamePlayerMove", { enumerable: true, get: function () { return game_player_move_1.GamePlayerMove; } });
|
|
14
|
+
const game_room_1 = require("./game-room");
|
|
15
|
+
Object.defineProperty(exports, "GameRoom", { enumerable: true, get: function () { return game_room_1.GameRoom; } });
|
|
16
|
+
const game_round_1 = require("./game-round");
|
|
17
|
+
Object.defineProperty(exports, "GameRound", { enumerable: true, get: function () { return game_round_1.GameRound; } });
|
|
18
|
+
const game_state_machine_1 = require("./game-state-machine");
|
|
19
|
+
Object.defineProperty(exports, "GameStateMachine", { enumerable: true, get: function () { return game_state_machine_1.GameStateMachine; } });
|
|
20
|
+
const game_table_1 = require("./game-table");
|
|
21
|
+
Object.defineProperty(exports, "GameTable", { enumerable: true, get: function () { return game_table_1.GameTable; } });
|
|
22
|
+
const game_table_seat_1 = require("./game-table-seat");
|
|
23
|
+
Object.defineProperty(exports, "GameTableSeat", { enumerable: true, get: function () { return game_table_seat_1.GameTableSeat; } });
|
|
24
|
+
const game_table_seats_1 = require("./game-table-seats");
|
|
25
|
+
Object.defineProperty(exports, "GameTableSeats", { enumerable: true, get: function () { return game_table_seats_1.GameTableSeats; } });
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/base/index.ts"],"names":[],"mappings":";;;AAAA,yEAAmE;AAa/D,sGAbK,gDAAqB,OAaL;AAZzB,iEAA4D;AAaxD,mGAbK,yCAAkB,OAaL;AAZtB,+CAA2C;AAavC,2FAbK,wBAAU,OAaL;AAZd,+CAA2C;AAavC,2FAbK,wBAAU,OAaL;AAZd,yDAAoD;AAahD,+FAbK,iCAAc,OAaL;AAZlB,2CAAuC;AAanC,yFAbK,oBAAQ,OAaL;AAZZ,6CAAyC;AAarC,0FAbK,sBAAS,OAaL;AAZb,6DAAwD;AAapD,iGAbK,qCAAgB,OAaL;AAZpB,6CAAyC;AAarC,0FAbK,sBAAS,OAaL;AAZb,uDAAkD;AAa9C,8FAbK,+BAAa,OAaL;AAZjB,yDAAoD;AAahD,+FAbK,iCAAc,OAaL"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { GameStateMachine } from './game-state-machine';
|
|
2
|
+
export declare enum StandardStateMachineStates {
|
|
3
|
+
STATE_WAITING_FOR_PLAYERS = "STATE_WAITING_FOR_PLAYERS",
|
|
4
|
+
STATE_IN_PROGRESS = "STATE_IN_PROGRESS",
|
|
5
|
+
STATE_END = "STATE_END"
|
|
6
|
+
}
|
|
7
|
+
export declare enum StandardStateMachineActions {
|
|
8
|
+
ACTION_TO_END = "ACTION_TO_END",
|
|
9
|
+
ACTION_START = "ACTION_START",
|
|
10
|
+
ACTION_RESTART = "ACTION_RESTART"
|
|
11
|
+
}
|
|
12
|
+
export declare class StandardGameState extends GameStateMachine<StandardStateMachineStates, StandardStateMachineActions> {
|
|
13
|
+
constructor();
|
|
14
|
+
isWaiting(): boolean;
|
|
15
|
+
isInProgress(): boolean;
|
|
16
|
+
isEnd(): boolean;
|
|
17
|
+
toStart(): void;
|
|
18
|
+
toFinish(): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=standard-game-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-game-state.d.ts","sourceRoot":"","sources":["../../src/base/standard-game-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAE5E,oBAAY,0BAA0B;IAClC,yBAAyB,8BAA8B;IACvD,iBAAiB,sBAAsB;IACvC,SAAS,cAAc;CAC1B;AAED,oBAAY,2BAA2B;IACnC,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CACpC;AAgCD,qBAAa,iBAAkB,SAAQ,gBAAgB,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;;IAK5G,SAAS;IAIT,YAAY;IAIZ,KAAK;IAIL,OAAO;IAIP,QAAQ;CAGX"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StandardGameState = exports.StandardStateMachineActions = exports.StandardStateMachineStates = void 0;
|
|
4
|
+
const game_state_machine_1 = require("./game-state-machine");
|
|
5
|
+
var StandardStateMachineStates;
|
|
6
|
+
(function (StandardStateMachineStates) {
|
|
7
|
+
StandardStateMachineStates["STATE_WAITING_FOR_PLAYERS"] = "STATE_WAITING_FOR_PLAYERS";
|
|
8
|
+
StandardStateMachineStates["STATE_IN_PROGRESS"] = "STATE_IN_PROGRESS";
|
|
9
|
+
StandardStateMachineStates["STATE_END"] = "STATE_END";
|
|
10
|
+
})(StandardStateMachineStates || (exports.StandardStateMachineStates = StandardStateMachineStates = {}));
|
|
11
|
+
var StandardStateMachineActions;
|
|
12
|
+
(function (StandardStateMachineActions) {
|
|
13
|
+
StandardStateMachineActions["ACTION_TO_END"] = "ACTION_TO_END";
|
|
14
|
+
StandardStateMachineActions["ACTION_START"] = "ACTION_START";
|
|
15
|
+
StandardStateMachineActions["ACTION_RESTART"] = "ACTION_RESTART";
|
|
16
|
+
})(StandardStateMachineActions || (exports.StandardStateMachineActions = StandardStateMachineActions = {}));
|
|
17
|
+
const { STATE_WAITING_FOR_PLAYERS, STATE_IN_PROGRESS, STATE_END, } = StandardStateMachineStates;
|
|
18
|
+
const { ACTION_TO_END, ACTION_START, ACTION_RESTART, } = StandardStateMachineActions;
|
|
19
|
+
const config = {
|
|
20
|
+
[STATE_WAITING_FOR_PLAYERS]: {
|
|
21
|
+
on: {
|
|
22
|
+
[ACTION_START]: STATE_IN_PROGRESS,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
[STATE_IN_PROGRESS]: {
|
|
26
|
+
on: {
|
|
27
|
+
[ACTION_TO_END]: STATE_END,
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
[STATE_END]: {
|
|
31
|
+
on: {
|
|
32
|
+
[ACTION_RESTART]: STATE_WAITING_FOR_PLAYERS,
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
class StandardGameState extends game_state_machine_1.GameStateMachine {
|
|
37
|
+
constructor() {
|
|
38
|
+
super(StandardStateMachineStates.STATE_WAITING_FOR_PLAYERS, config);
|
|
39
|
+
}
|
|
40
|
+
isWaiting() {
|
|
41
|
+
return this.getCurrentState() === StandardStateMachineStates.STATE_WAITING_FOR_PLAYERS;
|
|
42
|
+
}
|
|
43
|
+
isInProgress() {
|
|
44
|
+
return this.getCurrentState() === StandardStateMachineStates.STATE_IN_PROGRESS;
|
|
45
|
+
}
|
|
46
|
+
isEnd() {
|
|
47
|
+
return this.getCurrentState() === StandardStateMachineStates.STATE_END;
|
|
48
|
+
}
|
|
49
|
+
toStart() {
|
|
50
|
+
this.send(StandardStateMachineActions.ACTION_START);
|
|
51
|
+
}
|
|
52
|
+
toFinish() {
|
|
53
|
+
this.send(StandardStateMachineActions.ACTION_TO_END);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.StandardGameState = StandardGameState;
|
|
57
|
+
//# sourceMappingURL=standard-game-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standard-game-state.js","sourceRoot":"","sources":["../../src/base/standard-game-state.ts"],"names":[],"mappings":";;;AAAA,6DAA4E;AAE5E,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IAClC,qFAAuD,CAAA;IACvD,qEAAuC,CAAA;IACvC,qDAAuB,CAAA;AAC3B,CAAC,EAJW,0BAA0B,0CAA1B,0BAA0B,QAIrC;AAED,IAAY,2BAIX;AAJD,WAAY,2BAA2B;IACnC,8DAA+B,CAAA;IAC/B,4DAA6B,CAAA;IAC7B,gEAAiC,CAAA;AACrC,CAAC,EAJW,2BAA2B,2CAA3B,2BAA2B,QAItC;AAED,MAAM,EACF,yBAAyB,EACzB,iBAAiB,EACjB,SAAS,GACZ,GAAG,0BAA0B,CAAC;AAE/B,MAAM,EACF,aAAa,EACb,YAAY,EACZ,cAAc,GACjB,GAAG,2BAA2B,CAAC;AAEhC,MAAM,MAAM,GAAuB;IAC/B,CAAC,yBAAyB,CAAC,EAAE;QACzB,EAAE,EAAE;YACA,CAAC,YAAY,CAAC,EAAE,iBAAiB;SACpC;KACJ;IACD,CAAC,iBAAiB,CAAC,EAAE;QACjB,EAAE,EAAE;YACA,CAAC,aAAa,CAAC,EAAE,SAAS;SAC7B;KACJ;IACD,CAAC,SAAS,CAAC,EAAE;QACT,EAAE,EAAE;YACA,CAAC,cAAc,CAAC,EAAE,yBAAyB;SAC9C;KACJ;CACJ,CAAC;AAEF,MAAa,iBAAkB,SAAQ,qCAAyE;IAC5G;QACI,KAAK,CAAC,0BAA0B,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,eAAe,EAAE,KAAK,0BAA0B,CAAC,yBAAyB,CAAC;IAC3F,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,eAAe,EAAE,KAAK,0BAA0B,CAAC,iBAAiB,CAAC;IACnF,CAAC;IAED,KAAK;QACD,OAAO,IAAI,CAAC,eAAe,EAAE,KAAK,0BAA0B,CAAC,SAAS,CAAC;IAC3E,CAAC;IAED,OAAO;QACH,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAED,QAAQ;QACJ,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;CACJ;AAxBD,8CAwBC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { GamePlayer } from '../base';
|
|
2
|
+
import { IGameTable } from '../base/game-table';
|
|
3
|
+
import { TournamentRoom, TournamentRoomConfig } from './tournament-room';
|
|
4
|
+
export declare abstract class FastTournamentRoom<GT extends IGameTable<GP>, GP extends GamePlayer> extends TournamentRoom<GT, GP> {
|
|
5
|
+
constructor(config: TournamentRoomConfig);
|
|
6
|
+
handleJoinTournament(player: GP): void;
|
|
7
|
+
handleLeaveTournament(player: GP): void;
|
|
8
|
+
handleFinishRound: () => void;
|
|
9
|
+
handleRestartRound: () => void;
|
|
10
|
+
startTournament(): void;
|
|
11
|
+
finishTournament(): void;
|
|
12
|
+
isTournamentFinish(): boolean;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=fast-tournament-room.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fast-tournament-room.d.ts","sourceRoot":"","sources":["../../src/base-rooms/fast-tournament-room.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,8BAAsB,kBAAkB,CACpC,EAAE,SAAS,UAAU,CAAC,EAAE,CAAC,EACzB,EAAE,SAAS,UAAU,CACvB,SAAQ,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC;gBACf,MAAM,EAAE,oBAAoB;IAKzC,oBAAoB,CAAE,MAAM,EAAE,EAAE;IAUhC,qBAAqB,CAAE,MAAM,EAAE,EAAE;IAWjC,iBAAiB,aACf;IAEF,kBAAkB,aAIhB;IAEF,eAAe;IAMf,gBAAgB;IAKhB,kBAAkB,IAAK,OAAO;CAGjC"}
|