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.
Files changed (257) hide show
  1. package/dist/base/game-control-player-turn.d.ts +12 -0
  2. package/dist/base/game-control-player-turn.d.ts.map +1 -0
  3. package/dist/base/game-control-player-turn.js +27 -0
  4. package/dist/base/game-control-player-turn.js.map +1 -0
  5. package/dist/base/game-control-restart.d.ts +10 -0
  6. package/dist/base/game-control-restart.d.ts.map +1 -0
  7. package/dist/base/game-control-restart.js +21 -0
  8. package/dist/base/game-control-restart.js.map +1 -0
  9. package/dist/base/game-master.d.ts +34 -0
  10. package/dist/base/game-master.d.ts.map +1 -0
  11. package/dist/base/game-master.js +83 -0
  12. package/dist/base/game-master.js.map +1 -0
  13. package/dist/base/game-player-move.d.ts +13 -0
  14. package/dist/base/game-player-move.d.ts.map +1 -0
  15. package/dist/base/game-player-move.js +28 -0
  16. package/dist/base/game-player-move.js.map +1 -0
  17. package/dist/base/game-player.d.ts +61 -0
  18. package/dist/base/game-player.d.ts.map +1 -0
  19. package/dist/base/game-player.js +140 -0
  20. package/dist/base/game-player.js.map +1 -0
  21. package/dist/base/game-room.d.ts +47 -0
  22. package/dist/base/game-room.d.ts.map +1 -0
  23. package/dist/base/game-room.js +80 -0
  24. package/dist/base/game-room.js.map +1 -0
  25. package/dist/base/game-round.d.ts +28 -0
  26. package/dist/base/game-round.d.ts.map +1 -0
  27. package/dist/base/game-round.js +37 -0
  28. package/dist/base/game-round.js.map +1 -0
  29. package/dist/base/game-state-machine.d.ts +13 -0
  30. package/dist/base/game-state-machine.d.ts.map +1 -0
  31. package/dist/base/game-state-machine.js +21 -0
  32. package/dist/base/game-state-machine.js.map +1 -0
  33. package/dist/base/game-table-seat.d.ts +15 -0
  34. package/dist/base/game-table-seat.d.ts.map +1 -0
  35. package/dist/base/game-table-seat.js +32 -0
  36. package/dist/base/game-table-seat.js.map +1 -0
  37. package/dist/base/game-table-seats.d.ts +21 -0
  38. package/dist/base/game-table-seats.d.ts.map +1 -0
  39. package/dist/base/game-table-seats.js +67 -0
  40. package/dist/base/game-table-seats.js.map +1 -0
  41. package/dist/base/game-table.d.ts +87 -0
  42. package/dist/base/game-table.d.ts.map +1 -0
  43. package/dist/base/game-table.js +130 -0
  44. package/dist/base/game-table.js.map +1 -0
  45. package/dist/base/index.d.ts +13 -0
  46. package/dist/base/index.d.ts.map +1 -0
  47. package/dist/base/index.js +26 -0
  48. package/dist/base/index.js.map +1 -0
  49. package/dist/base/standard-game-state.d.ts +20 -0
  50. package/dist/base/standard-game-state.d.ts.map +1 -0
  51. package/dist/base/standard-game-state.js +57 -0
  52. package/dist/base/standard-game-state.js.map +1 -0
  53. package/dist/base-rooms/fast-tournament-room.d.ts +14 -0
  54. package/dist/base-rooms/fast-tournament-room.d.ts.map +1 -0
  55. package/dist/base-rooms/fast-tournament-room.js +53 -0
  56. package/dist/base-rooms/fast-tournament-room.js.map +1 -0
  57. package/dist/base-rooms/index.d.ts +10 -0
  58. package/dist/base-rooms/index.d.ts.map +1 -0
  59. package/dist/base-rooms/index.js +14 -0
  60. package/dist/base-rooms/index.js.map +1 -0
  61. package/dist/base-rooms/scheduled-tournament-room.d.ts +28 -0
  62. package/dist/base-rooms/scheduled-tournament-room.d.ts.map +1 -0
  63. package/dist/base-rooms/scheduled-tournament-room.js +166 -0
  64. package/dist/base-rooms/scheduled-tournament-room.js.map +1 -0
  65. package/dist/base-rooms/simple-room.d.ts +9 -0
  66. package/dist/base-rooms/simple-room.d.ts.map +1 -0
  67. package/dist/base-rooms/simple-room.js +13 -0
  68. package/dist/base-rooms/simple-room.js.map +1 -0
  69. package/dist/base-rooms/tournament-participant.d.ts +6 -0
  70. package/dist/base-rooms/tournament-participant.d.ts.map +1 -0
  71. package/dist/base-rooms/tournament-participant.js +3 -0
  72. package/dist/base-rooms/tournament-participant.js.map +1 -0
  73. package/dist/base-rooms/tournament-prize.d.ts +7 -0
  74. package/dist/base-rooms/tournament-prize.d.ts.map +1 -0
  75. package/dist/base-rooms/tournament-prize.js +3 -0
  76. package/dist/base-rooms/tournament-prize.js.map +1 -0
  77. package/dist/base-rooms/tournament-room.d.ts +47 -0
  78. package/dist/base-rooms/tournament-room.d.ts.map +1 -0
  79. package/dist/base-rooms/tournament-room.js +111 -0
  80. package/dist/base-rooms/tournament-room.js.map +1 -0
  81. package/dist/base-rooms/tournament-state.d.ts +23 -0
  82. package/dist/base-rooms/tournament-state.d.ts.map +1 -0
  83. package/dist/base-rooms/tournament-state.js +63 -0
  84. package/dist/base-rooms/tournament-state.js.map +1 -0
  85. package/dist/base-rooms/tournament-winner.d.ts +8 -0
  86. package/dist/base-rooms/tournament-winner.d.ts.map +1 -0
  87. package/dist/base-rooms/tournament-winner.js +3 -0
  88. package/dist/base-rooms/tournament-winner.js.map +1 -0
  89. package/dist/board-game/base/board-cell.d.ts +16 -0
  90. package/dist/board-game/base/board-cell.d.ts.map +1 -0
  91. package/dist/board-game/base/board-cell.js +42 -0
  92. package/dist/board-game/base/board-cell.js.map +1 -0
  93. package/dist/board-game/base/board-figure.d.ts +16 -0
  94. package/dist/board-game/base/board-figure.d.ts.map +1 -0
  95. package/dist/board-game/base/board-figure.js +38 -0
  96. package/dist/board-game/base/board-figure.js.map +1 -0
  97. package/dist/board-game/base/board-game-master.d.ts +19 -0
  98. package/dist/board-game/base/board-game-master.d.ts.map +1 -0
  99. package/dist/board-game/base/board-game-master.js +36 -0
  100. package/dist/board-game/base/board-game-master.js.map +1 -0
  101. package/dist/board-game/base/board-player-move.d.ts +11 -0
  102. package/dist/board-game/base/board-player-move.d.ts.map +1 -0
  103. package/dist/board-game/base/board-player-move.js +30 -0
  104. package/dist/board-game/base/board-player-move.js.map +1 -0
  105. package/dist/board-game/base/board-player.d.ts +13 -0
  106. package/dist/board-game/base/board-player.d.ts.map +1 -0
  107. package/dist/board-game/base/board-player.js +31 -0
  108. package/dist/board-game/base/board-player.js.map +1 -0
  109. package/dist/board-game/base/board-table.d.ts +17 -0
  110. package/dist/board-game/base/board-table.d.ts.map +1 -0
  111. package/dist/board-game/base/board-table.js +35 -0
  112. package/dist/board-game/base/board-table.js.map +1 -0
  113. package/dist/board-game/d1-board-game/d1-board-table.d.ts +19 -0
  114. package/dist/board-game/d1-board-game/d1-board-table.d.ts.map +1 -0
  115. package/dist/board-game/d1-board-game/d1-board-table.js +41 -0
  116. package/dist/board-game/d1-board-game/d1-board-table.js.map +1 -0
  117. package/dist/board-game/d2-board-game/d2-board-cell.d.ts +12 -0
  118. package/dist/board-game/d2-board-game/d2-board-cell.d.ts.map +1 -0
  119. package/dist/board-game/d2-board-game/d2-board-cell.js +26 -0
  120. package/dist/board-game/d2-board-game/d2-board-cell.js.map +1 -0
  121. package/dist/board-game/d2-board-game/d2-board-pattern-move-figure.d.ts +29 -0
  122. package/dist/board-game/d2-board-game/d2-board-pattern-move-figure.d.ts.map +1 -0
  123. package/dist/board-game/d2-board-game/d2-board-pattern-move-figure.js +51 -0
  124. package/dist/board-game/d2-board-game/d2-board-pattern-move-figure.js.map +1 -0
  125. package/dist/board-game/d2-board-game/d2-board-table.d.ts +49 -0
  126. package/dist/board-game/d2-board-game/d2-board-table.d.ts.map +1 -0
  127. package/dist/board-game/d2-board-game/d2-board-table.js +184 -0
  128. package/dist/board-game/d2-board-game/d2-board-table.js.map +1 -0
  129. package/dist/board-game/d2-board-game/types.d.ts +5 -0
  130. package/dist/board-game/d2-board-game/types.d.ts.map +1 -0
  131. package/dist/board-game/d2-board-game/types.js +3 -0
  132. package/dist/board-game/d2-board-game/types.js.map +1 -0
  133. package/dist/board-game/dice.d.ts +5 -0
  134. package/dist/board-game/dice.d.ts.map +1 -0
  135. package/dist/board-game/dice.js +14 -0
  136. package/dist/board-game/dice.js.map +1 -0
  137. package/dist/board-game/index.d.ts +13 -0
  138. package/dist/board-game/index.d.ts.map +1 -0
  139. package/dist/board-game/index.js +26 -0
  140. package/dist/board-game/index.js.map +1 -0
  141. package/dist/cards-game/cards/card.d.ts +25 -0
  142. package/dist/cards-game/cards/card.d.ts.map +1 -0
  143. package/dist/cards-game/cards/card.js +45 -0
  144. package/dist/cards-game/cards/card.js.map +1 -0
  145. package/dist/cards-game/cards/cards.d.ts +55 -0
  146. package/dist/cards-game/cards/cards.d.ts.map +1 -0
  147. package/dist/cards-game/cards/cards.js +63 -0
  148. package/dist/cards-game/cards/cards.js.map +1 -0
  149. package/dist/cards-game/cards/deck36.d.ts +2 -0
  150. package/dist/cards-game/cards/deck36.d.ts.map +1 -0
  151. package/dist/cards-game/cards/deck36.js +43 -0
  152. package/dist/cards-game/cards/deck36.js.map +1 -0
  153. package/dist/cards-game/cards/deck52.d.ts +2 -0
  154. package/dist/cards-game/cards/deck52.d.ts.map +1 -0
  155. package/dist/cards-game/cards/deck52.js +59 -0
  156. package/dist/cards-game/cards/deck52.js.map +1 -0
  157. package/dist/cards-game/cards/ranks.d.ts +18 -0
  158. package/dist/cards-game/cards/ranks.d.ts.map +1 -0
  159. package/dist/cards-game/cards/ranks.js +23 -0
  160. package/dist/cards-game/cards/ranks.js.map +1 -0
  161. package/dist/cards-game/cards/suits.d.ts +8 -0
  162. package/dist/cards-game/cards/suits.d.ts.map +1 -0
  163. package/dist/cards-game/cards/suits.js +13 -0
  164. package/dist/cards-game/cards/suits.js.map +1 -0
  165. package/dist/cards-game/cards-game-master.d.ts +24 -0
  166. package/dist/cards-game/cards-game-master.d.ts.map +1 -0
  167. package/dist/cards-game/cards-game-master.js +65 -0
  168. package/dist/cards-game/cards-game-master.js.map +1 -0
  169. package/dist/cards-game/cards-player.d.ts +12 -0
  170. package/dist/cards-game/cards-player.d.ts.map +1 -0
  171. package/dist/cards-game/cards-player.js +29 -0
  172. package/dist/cards-game/cards-player.js.map +1 -0
  173. package/dist/cards-game/cards-table.d.ts +11 -0
  174. package/dist/cards-game/cards-table.d.ts.map +1 -0
  175. package/dist/cards-game/cards-table.js +20 -0
  176. package/dist/cards-game/cards-table.js.map +1 -0
  177. package/dist/cards-game/index.d.ts +11 -0
  178. package/dist/cards-game/index.d.ts.map +1 -0
  179. package/dist/cards-game/index.js +55 -0
  180. package/dist/cards-game/index.js.map +1 -0
  181. package/dist/const.d.ts +3 -0
  182. package/dist/const.d.ts.map +1 -0
  183. package/dist/const.js +6 -0
  184. package/dist/const.js.map +1 -0
  185. package/dist/index.d.ts +6 -0
  186. package/dist/index.d.ts.map +1 -0
  187. package/dist/index.js +22 -0
  188. package/dist/index.js.map +1 -0
  189. package/dist/utils/circle-list.d.ts +29 -0
  190. package/dist/utils/circle-list.d.ts.map +1 -0
  191. package/dist/utils/circle-list.js +103 -0
  192. package/dist/utils/circle-list.js.map +1 -0
  193. package/dist/utils/index.d.ts +4 -0
  194. package/dist/utils/index.d.ts.map +1 -0
  195. package/dist/utils/index.js +9 -0
  196. package/dist/utils/index.js.map +1 -0
  197. package/dist/utils/shuffle.d.ts +3 -0
  198. package/dist/utils/shuffle.d.ts.map +1 -0
  199. package/dist/utils/shuffle.js +16 -0
  200. package/dist/utils/shuffle.js.map +1 -0
  201. package/dist/utils/tests/circle-list.test.d.ts +2 -0
  202. package/dist/utils/tests/circle-list.test.d.ts.map +1 -0
  203. package/dist/utils/tests/circle-list.test.js +60 -0
  204. package/dist/utils/tests/circle-list.test.js.map +1 -0
  205. package/package.json +54 -0
  206. package/readme.md +3 -0
  207. package/src/base/game-control-player-turn.ts +39 -0
  208. package/src/base/game-control-restart.ts +30 -0
  209. package/src/base/game-master.ts +109 -0
  210. package/src/base/game-player-move.ts +33 -0
  211. package/src/base/game-player.ts +184 -0
  212. package/src/base/game-room.ts +127 -0
  213. package/src/base/game-round.ts +62 -0
  214. package/src/base/game-state-machine.ts +25 -0
  215. package/src/base/game-table-seat.ts +37 -0
  216. package/src/base/game-table-seats.ts +78 -0
  217. package/src/base/game-table.ts +237 -0
  218. package/src/base/index.ts +25 -0
  219. package/src/base/standard-game-state.ts +69 -0
  220. package/src/base-rooms/fast-tournament-room.ts +59 -0
  221. package/src/base-rooms/index.ts +19 -0
  222. package/src/base-rooms/scheduled-tournament-room.ts +181 -0
  223. package/src/base-rooms/simple-room.ts +15 -0
  224. package/src/base-rooms/tournament-participant.ts +5 -0
  225. package/src/base-rooms/tournament-prize.ts +7 -0
  226. package/src/base-rooms/tournament-room.ts +169 -0
  227. package/src/base-rooms/tournament-state.ts +78 -0
  228. package/src/base-rooms/tournament-winner.ts +7 -0
  229. package/src/board-game/base/board-cell.ts +50 -0
  230. package/src/board-game/base/board-figure.ts +49 -0
  231. package/src/board-game/base/board-game-master.ts +56 -0
  232. package/src/board-game/base/board-player-move.ts +29 -0
  233. package/src/board-game/base/board-player.ts +43 -0
  234. package/src/board-game/base/board-table.ts +52 -0
  235. package/src/board-game/d1-board-game/d1-board-table.ts +56 -0
  236. package/src/board-game/d2-board-game/d2-board-cell.ts +30 -0
  237. package/src/board-game/d2-board-game/d2-board-pattern-move-figure.ts +79 -0
  238. package/src/board-game/d2-board-game/d2-board-table.ts +262 -0
  239. package/src/board-game/d2-board-game/types.ts +4 -0
  240. package/src/board-game/dice.ts +9 -0
  241. package/src/board-game/index.ts +28 -0
  242. package/src/cards-game/cards/card.ts +60 -0
  243. package/src/cards-game/cards/cards.ts +86 -0
  244. package/src/cards-game/cards/deck36.ts +80 -0
  245. package/src/cards-game/cards/deck52.ts +112 -0
  246. package/src/cards-game/cards/ranks.ts +19 -0
  247. package/src/cards-game/cards/suits.ts +10 -0
  248. package/src/cards-game/cards-game-master.ts +83 -0
  249. package/src/cards-game/cards-player.ts +40 -0
  250. package/src/cards-game/cards-table.ts +28 -0
  251. package/src/cards-game/index.ts +21 -0
  252. package/src/const.ts +3 -0
  253. package/src/index.ts +5 -0
  254. package/src/utils/circle-list.ts +130 -0
  255. package/src/utils/index.ts +8 -0
  256. package/src/utils/shuffle.ts +12 -0
  257. 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"}