jp.ms.common.engine 1.0.21 → 2.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 (557) hide show
  1. package/dist/base/base-figure-type.enum.d.ts +4 -0
  2. package/dist/base/base-figure-type.enum.d.ts.map +1 -0
  3. package/dist/base/base-figure-type.enum.js +8 -0
  4. package/dist/base/base-figure-type.enum.js.map +1 -0
  5. package/dist/base/base-figure.d.ts +10 -0
  6. package/dist/base/base-figure.d.ts.map +1 -0
  7. package/dist/base/base-figure.js +20 -0
  8. package/dist/base/base-figure.js.map +1 -0
  9. package/dist/base/base-move-data.d.ts +5 -4
  10. package/dist/base/base-move-data.d.ts.map +1 -1
  11. package/dist/base/base-move-data.js +3 -3
  12. package/dist/base/base-move-data.js.map +1 -1
  13. package/dist/base/base-player-move-factory.d.ts +10 -0
  14. package/dist/base/base-player-move-factory.d.ts.map +1 -0
  15. package/dist/base/base-player-move-factory.js +13 -0
  16. package/dist/base/base-player-move-factory.js.map +1 -0
  17. package/dist/base/base-player-move.d.ts +17 -0
  18. package/dist/base/base-player-move.d.ts.map +1 -0
  19. package/dist/base/base-player-move.js +24 -0
  20. package/dist/base/base-player-move.js.map +1 -0
  21. package/dist/base/game-control-player-turn.d.ts +1 -0
  22. package/dist/base/game-control-player-turn.d.ts.map +1 -1
  23. package/dist/base/game-control-player-turn.js +6 -0
  24. package/dist/base/game-control-player-turn.js.map +1 -1
  25. package/dist/base/game-control-restart.d.ts +1 -0
  26. package/dist/base/game-control-restart.d.ts.map +1 -1
  27. package/dist/base/game-control-restart.js +5 -0
  28. package/dist/base/game-control-restart.js.map +1 -1
  29. package/dist/base/game-master.d.ts +94 -30
  30. package/dist/base/game-master.d.ts.map +1 -1
  31. package/dist/base/game-master.js +351 -55
  32. package/dist/base/game-master.js.map +1 -1
  33. package/dist/base/game-player-connections-helper.d.ts +3 -12
  34. package/dist/base/game-player-connections-helper.d.ts.map +1 -1
  35. package/dist/base/game-player-connections-helper.js +10 -16
  36. package/dist/base/game-player-connections-helper.js.map +1 -1
  37. package/dist/base/game-player-exited.d.ts +15 -0
  38. package/dist/base/game-player-exited.d.ts.map +1 -0
  39. package/dist/base/game-player-exited.js +29 -0
  40. package/dist/base/game-player-exited.js.map +1 -0
  41. package/dist/base/game-player.d.ts +76 -45
  42. package/dist/base/game-player.d.ts.map +1 -1
  43. package/dist/base/game-player.js +164 -98
  44. package/dist/base/game-player.js.map +1 -1
  45. package/dist/base/game-result-equal-helper.d.ts +6 -0
  46. package/dist/base/game-result-equal-helper.d.ts.map +1 -0
  47. package/dist/base/game-result-equal-helper.js +19 -0
  48. package/dist/base/game-result-equal-helper.js.map +1 -0
  49. package/dist/base/game-result-helper.d.ts +13 -0
  50. package/dist/base/game-result-helper.d.ts.map +1 -0
  51. package/dist/base/game-result-helper.js +24 -0
  52. package/dist/base/game-result-helper.js.map +1 -0
  53. package/dist/base/game-result-rating-helper.d.ts +18 -0
  54. package/dist/base/game-result-rating-helper.d.ts.map +1 -0
  55. package/dist/base/game-result-rating-helper.js +32 -0
  56. package/dist/base/game-result-rating-helper.js.map +1 -0
  57. package/dist/base/game-room.d.ts +38 -7
  58. package/dist/base/game-room.d.ts.map +1 -1
  59. package/dist/base/game-room.js +67 -10
  60. package/dist/base/game-room.js.map +1 -1
  61. package/dist/base/game-round-history-item.d.ts +25 -0
  62. package/dist/base/game-round-history-item.d.ts.map +1 -0
  63. package/dist/base/game-round-history-item.enum.d.ts +7 -0
  64. package/dist/base/game-round-history-item.enum.d.ts.map +1 -0
  65. package/dist/base/game-round-history-item.enum.js +11 -0
  66. package/dist/base/game-round-history-item.enum.js.map +1 -0
  67. package/dist/base/game-round-history-item.js +52 -0
  68. package/dist/base/game-round-history-item.js.map +1 -0
  69. package/dist/base/game-round.d.ts +16 -9
  70. package/dist/base/game-round.d.ts.map +1 -1
  71. package/dist/base/game-round.js +34 -0
  72. package/dist/base/game-round.js.map +1 -1
  73. package/dist/base/game-state-machine.d.ts +5 -0
  74. package/dist/base/game-state-machine.d.ts.map +1 -1
  75. package/dist/base/game-state-machine.js.map +1 -1
  76. package/dist/base/game-table-seat.d.ts +10 -3
  77. package/dist/base/game-table-seat.d.ts.map +1 -1
  78. package/dist/base/game-table-seat.js +43 -2
  79. package/dist/base/game-table-seat.js.map +1 -1
  80. package/dist/base/game-table-seats.d.ts +4 -6
  81. package/dist/base/game-table-seats.d.ts.map +1 -1
  82. package/dist/base/game-table-seats.js +13 -27
  83. package/dist/base/game-table-seats.js.map +1 -1
  84. package/dist/base/game-table.d.ts +24 -21
  85. package/dist/base/game-table.d.ts.map +1 -1
  86. package/dist/base/game-table.js +72 -42
  87. package/dist/base/game-table.js.map +1 -1
  88. package/dist/base/index.d.ts +9 -4
  89. package/dist/base/index.d.ts.map +1 -1
  90. package/dist/base/index.js +15 -3
  91. package/dist/base/index.js.map +1 -1
  92. package/dist/base-rooms/simple-room.d.ts +7 -7
  93. package/dist/base-rooms/simple-room.d.ts.map +1 -1
  94. package/dist/base-rooms/simple-room.js +5 -4
  95. package/dist/base-rooms/simple-room.js.map +1 -1
  96. package/dist/base-rooms/tournament-state.d.ts +1 -1
  97. package/dist/base-rooms/tournament-state.d.ts.map +1 -1
  98. package/dist/base-rooms/tournament-state.js +1 -1
  99. package/dist/base-rooms/tournament-state.js.map +1 -1
  100. package/dist/cards-game/cards/card.d.ts +14 -14
  101. package/dist/cards-game/cards/card.d.ts.map +1 -1
  102. package/dist/cards-game/cards/card.js +36 -17
  103. package/dist/cards-game/cards/card.js.map +1 -1
  104. package/dist/cards-game/cards-deck/cards-deck-type.enum.d.ts +8 -0
  105. package/dist/cards-game/cards-deck/cards-deck-type.enum.d.ts.map +1 -0
  106. package/dist/cards-game/cards-deck/cards-deck-type.enum.js +12 -0
  107. package/dist/cards-game/cards-deck/cards-deck-type.enum.js.map +1 -0
  108. package/dist/cards-game/cards-deck/cards-deck.d.ts +23 -0
  109. package/dist/cards-game/cards-deck/cards-deck.d.ts.map +1 -0
  110. package/dist/cards-game/cards-deck/cards-deck.js +84 -0
  111. package/dist/cards-game/cards-deck/cards-deck.js.map +1 -0
  112. package/dist/cards-game/cards-deck/types/deck12.d.ts +2 -0
  113. package/dist/cards-game/cards-deck/types/deck12.d.ts.map +1 -0
  114. package/dist/cards-game/cards-deck/types/deck12.js +19 -0
  115. package/dist/cards-game/cards-deck/types/deck12.js.map +1 -0
  116. package/dist/cards-game/cards-deck/types/deck24.d.ts +2 -0
  117. package/dist/cards-game/cards-deck/types/deck24.d.ts.map +1 -0
  118. package/dist/cards-game/cards-deck/types/deck24.js +31 -0
  119. package/dist/cards-game/cards-deck/types/deck24.js.map +1 -0
  120. package/dist/cards-game/cards-deck/types/deck36.d.ts +2 -0
  121. package/dist/cards-game/cards-deck/types/deck36.d.ts.map +1 -0
  122. package/dist/cards-game/{cards → cards-deck/types}/deck36.js +1 -1
  123. package/dist/cards-game/cards-deck/types/deck36.js.map +1 -0
  124. package/dist/cards-game/cards-deck/types/deck52.d.ts +2 -0
  125. package/dist/cards-game/cards-deck/types/deck52.d.ts.map +1 -0
  126. package/dist/cards-game/{cards → cards-deck/types}/deck52.js +1 -1
  127. package/dist/cards-game/cards-deck/types/deck52.js.map +1 -0
  128. package/dist/cards-game/cards-game-master.d.ts +16 -5
  129. package/dist/cards-game/cards-game-master.d.ts.map +1 -1
  130. package/dist/cards-game/cards-game-master.js +49 -20
  131. package/dist/cards-game/cards-game-master.js.map +1 -1
  132. package/dist/cards-game/cards-pairs/card-pair-slot.d.ts +24 -0
  133. package/dist/cards-game/cards-pairs/card-pair-slot.d.ts.map +1 -0
  134. package/dist/cards-game/cards-pairs/card-pair-slot.js +56 -0
  135. package/dist/cards-game/cards-pairs/card-pair-slot.js.map +1 -0
  136. package/dist/cards-game/cards-pairs/card-pair-slots.d.ts +25 -0
  137. package/dist/cards-game/cards-pairs/card-pair-slots.d.ts.map +1 -0
  138. package/dist/cards-game/cards-pairs/card-pair-slots.js +84 -0
  139. package/dist/cards-game/cards-pairs/card-pair-slots.js.map +1 -0
  140. package/dist/cards-game/cards-player.d.ts +17 -5
  141. package/dist/cards-game/cards-player.d.ts.map +1 -1
  142. package/dist/cards-game/cards-player.js +51 -11
  143. package/dist/cards-game/cards-player.js.map +1 -1
  144. package/dist/cards-game/index.d.ts +6 -3
  145. package/dist/cards-game/index.d.ts.map +1 -1
  146. package/dist/cards-game/index.js +9 -3
  147. package/dist/cards-game/index.js.map +1 -1
  148. package/dist/events/base/base-game.event.d.ts +3 -0
  149. package/dist/events/base/base-game.event.d.ts.map +1 -0
  150. package/dist/events/base/base-game.event.js +7 -0
  151. package/dist/events/base/base-game.event.js.map +1 -0
  152. package/dist/events/base/game-player.event.d.ts +11 -0
  153. package/dist/events/base/game-player.event.d.ts.map +1 -0
  154. package/dist/events/base/game-player.event.js +23 -0
  155. package/dist/events/base/game-player.event.js.map +1 -0
  156. package/dist/events/base/game-room.event.d.ts +8 -0
  157. package/dist/events/base/game-room.event.d.ts.map +1 -0
  158. package/dist/events/base/game-room.event.js +15 -0
  159. package/dist/events/base/game-room.event.js.map +1 -0
  160. package/dist/events/base/game-table.event.d.ts +8 -0
  161. package/dist/events/base/game-table.event.d.ts.map +1 -0
  162. package/dist/events/base/game-table.event.js +15 -0
  163. package/dist/events/base/game-table.event.js.map +1 -0
  164. package/dist/events/game/game-player-activate.event.d.ts +4 -0
  165. package/dist/events/game/game-player-activate.event.d.ts.map +1 -0
  166. package/dist/events/game/game-player-activate.event.js +8 -0
  167. package/dist/events/game/game-player-activate.event.js.map +1 -0
  168. package/dist/events/game/game-player-activated.event.d.ts +4 -0
  169. package/dist/events/game/game-player-activated.event.d.ts.map +1 -0
  170. package/dist/events/game/game-player-activated.event.js +8 -0
  171. package/dist/events/game/game-player-activated.event.js.map +1 -0
  172. package/dist/events/game/game-player-deactivate.event.d.ts +4 -0
  173. package/dist/events/game/game-player-deactivate.event.d.ts.map +1 -0
  174. package/dist/events/game/game-player-deactivate.event.js +8 -0
  175. package/dist/events/game/game-player-deactivate.event.js.map +1 -0
  176. package/dist/events/game/game-player-deactivated.event.d.ts +4 -0
  177. package/dist/events/game/game-player-deactivated.event.d.ts.map +1 -0
  178. package/dist/events/game/game-player-deactivated.event.js +8 -0
  179. package/dist/events/game/game-player-deactivated.event.js.map +1 -0
  180. package/dist/events/game/game-player-enter-the-table.event.d.ts +4 -0
  181. package/dist/events/game/game-player-enter-the-table.event.d.ts.map +1 -0
  182. package/dist/events/game/game-player-enter-the-table.event.js +8 -0
  183. package/dist/events/game/game-player-enter-the-table.event.js.map +1 -0
  184. package/dist/events/game/game-player-entered-the-table.event.d.ts +4 -0
  185. package/dist/events/game/game-player-entered-the-table.event.d.ts.map +1 -0
  186. package/dist/events/game/game-player-entered-the-table.event.js +8 -0
  187. package/dist/events/game/game-player-entered-the-table.event.js.map +1 -0
  188. package/dist/events/game/game-player-exit-the-table.event.d.ts +4 -0
  189. package/dist/events/game/game-player-exit-the-table.event.d.ts.map +1 -0
  190. package/dist/events/game/game-player-exit-the-table.event.js +8 -0
  191. package/dist/events/game/game-player-exit-the-table.event.js.map +1 -0
  192. package/dist/events/game/game-player-exited-the-table.event.d.ts +4 -0
  193. package/dist/events/game/game-player-exited-the-table.event.d.ts.map +1 -0
  194. package/dist/events/game/game-player-exited-the-table.event.js +8 -0
  195. package/dist/events/game/game-player-exited-the-table.event.js.map +1 -0
  196. package/dist/events/game/game-player-kick-out-the-table.event.d.ts +4 -0
  197. package/dist/events/game/game-player-kick-out-the-table.event.d.ts.map +1 -0
  198. package/dist/events/game/game-player-kick-out-the-table.event.js +8 -0
  199. package/dist/events/game/game-player-kick-out-the-table.event.js.map +1 -0
  200. package/dist/events/game/game-player-kicked-out-the-table.event.d.ts +4 -0
  201. package/dist/events/game/game-player-kicked-out-the-table.event.d.ts.map +1 -0
  202. package/dist/events/game/game-player-kicked-out-the-table.event.js +8 -0
  203. package/dist/events/game/game-player-kicked-out-the-table.event.js.map +1 -0
  204. package/dist/events/game/game-player-move-on-the-table.event.d.ts +4 -0
  205. package/dist/events/game/game-player-move-on-the-table.event.d.ts.map +1 -0
  206. package/dist/events/game/game-player-move-on-the-table.event.js +8 -0
  207. package/dist/events/game/game-player-move-on-the-table.event.js.map +1 -0
  208. package/dist/events/game/game-player-moved-on-the-table.event.d.ts +4 -0
  209. package/dist/events/game/game-player-moved-on-the-table.event.d.ts.map +1 -0
  210. package/dist/events/game/game-player-moved-on-the-table.event.js +8 -0
  211. package/dist/events/game/game-player-moved-on-the-table.event.js.map +1 -0
  212. package/dist/events/game/game-player-turn-timer-executed.event.d.ts +4 -0
  213. package/dist/events/game/game-player-turn-timer-executed.event.d.ts.map +1 -0
  214. package/dist/events/game/game-player-turn-timer-executed.event.js +8 -0
  215. package/dist/events/game/game-player-turn-timer-executed.event.js.map +1 -0
  216. package/dist/events/game/game-player-turn-timer-set-off.event.d.ts +4 -0
  217. package/dist/events/game/game-player-turn-timer-set-off.event.d.ts.map +1 -0
  218. package/dist/events/game/game-player-turn-timer-set-off.event.js +8 -0
  219. package/dist/events/game/game-player-turn-timer-set-off.event.js.map +1 -0
  220. package/dist/events/game/game-player-turn-timer-set-on.event.d.ts +4 -0
  221. package/dist/events/game/game-player-turn-timer-set-on.event.d.ts.map +1 -0
  222. package/dist/events/game/game-player-turn-timer-set-on.event.js +8 -0
  223. package/dist/events/game/game-player-turn-timer-set-on.event.js.map +1 -0
  224. package/dist/events/game/game-player-watch-the-table.event.d.ts +4 -0
  225. package/dist/events/game/game-player-watch-the-table.event.d.ts.map +1 -0
  226. package/dist/events/game/game-player-watch-the-table.event.js +8 -0
  227. package/dist/events/game/game-player-watch-the-table.event.js.map +1 -0
  228. package/dist/events/game/game-player-watched-the-table.event.d.ts +4 -0
  229. package/dist/events/game/game-player-watched-the-table.event.d.ts.map +1 -0
  230. package/dist/events/game/game-player-watched-the-table.event.js +8 -0
  231. package/dist/events/game/game-player-watched-the-table.event.js.map +1 -0
  232. package/dist/events/game/game-room-room-created.event.d.ts +4 -0
  233. package/dist/events/game/game-room-room-created.event.d.ts.map +1 -0
  234. package/dist/events/game/game-room-room-created.event.js +8 -0
  235. package/dist/events/game/game-room-room-created.event.js.map +1 -0
  236. package/dist/events/game/game-table-finish.event.d.ts +4 -0
  237. package/dist/events/game/game-table-finish.event.d.ts.map +1 -0
  238. package/dist/events/game/game-table-finish.event.js +8 -0
  239. package/dist/events/game/game-table-finish.event.js.map +1 -0
  240. package/dist/events/game/game-table-finished.event.d.ts +4 -0
  241. package/dist/events/game/game-table-finished.event.d.ts.map +1 -0
  242. package/dist/events/game/game-table-finished.event.js +8 -0
  243. package/dist/events/game/game-table-finished.event.js.map +1 -0
  244. package/dist/events/game/game-table-master-created.event.d.ts +4 -0
  245. package/dist/events/game/game-table-master-created.event.d.ts.map +1 -0
  246. package/dist/events/game/game-table-master-created.event.js +8 -0
  247. package/dist/events/game/game-table-master-created.event.js.map +1 -0
  248. package/dist/events/game/game-table-restart-timer-executed.event.d.ts +4 -0
  249. package/dist/events/game/game-table-restart-timer-executed.event.d.ts.map +1 -0
  250. package/dist/events/game/game-table-restart-timer-executed.event.js +8 -0
  251. package/dist/events/game/game-table-restart-timer-executed.event.js.map +1 -0
  252. package/dist/events/game/game-table-restart-timer-set-on.event.d.ts +4 -0
  253. package/dist/events/game/game-table-restart-timer-set-on.event.d.ts.map +1 -0
  254. package/dist/events/game/game-table-restart-timer-set-on.event.js +8 -0
  255. package/dist/events/game/game-table-restart-timer-set-on.event.js.map +1 -0
  256. package/dist/events/game/game-table-restart.event.d.ts +4 -0
  257. package/dist/events/game/game-table-restart.event.d.ts.map +1 -0
  258. package/dist/events/game/game-table-restart.event.js +8 -0
  259. package/dist/events/game/game-table-restart.event.js.map +1 -0
  260. package/dist/events/game/game-table-restarted.event.d.ts +4 -0
  261. package/dist/events/game/game-table-restarted.event.d.ts.map +1 -0
  262. package/dist/events/game/game-table-restarted.event.js +8 -0
  263. package/dist/events/game/game-table-restarted.event.js.map +1 -0
  264. package/dist/events/game/game-table-start.event.d.ts +4 -0
  265. package/dist/events/game/game-table-start.event.d.ts.map +1 -0
  266. package/dist/events/game/game-table-start.event.js +8 -0
  267. package/dist/events/game/game-table-start.event.js.map +1 -0
  268. package/dist/events/game/game-table-started.event.d.ts +4 -0
  269. package/dist/events/game/game-table-started.event.d.ts.map +1 -0
  270. package/dist/events/game/game-table-started.event.js +8 -0
  271. package/dist/events/game/game-table-started.event.js.map +1 -0
  272. package/dist/events/game/game-table-turn-finish.event.d.ts +4 -0
  273. package/dist/events/game/game-table-turn-finish.event.d.ts.map +1 -0
  274. package/dist/events/game/game-table-turn-finish.event.js +8 -0
  275. package/dist/events/game/game-table-turn-finish.event.js.map +1 -0
  276. package/dist/events/game/game-table-turn-finished.event.d.ts +4 -0
  277. package/dist/events/game/game-table-turn-finished.event.d.ts.map +1 -0
  278. package/dist/events/game/game-table-turn-finished.event.js +8 -0
  279. package/dist/events/game/game-table-turn-finished.event.js.map +1 -0
  280. package/dist/events/game/game-table-turn-start.event.d.ts +4 -0
  281. package/dist/events/game/game-table-turn-start.event.d.ts.map +1 -0
  282. package/dist/events/game/game-table-turn-start.event.js +8 -0
  283. package/dist/events/game/game-table-turn-start.event.js.map +1 -0
  284. package/dist/events/game/game-table-turn-started.event.d.ts +4 -0
  285. package/dist/events/game/game-table-turn-started.event.d.ts.map +1 -0
  286. package/dist/events/game/game-table-turn-started.event.js +8 -0
  287. package/dist/events/game/game-table-turn-started.event.js.map +1 -0
  288. package/dist/events/game/game-table-wait.event.d.ts +4 -0
  289. package/dist/events/game/game-table-wait.event.d.ts.map +1 -0
  290. package/dist/events/game/game-table-wait.event.js +8 -0
  291. package/dist/events/game/game-table-wait.event.js.map +1 -0
  292. package/dist/events/game/game-table-waited.event.d.ts +4 -0
  293. package/dist/events/game/game-table-waited.event.d.ts.map +1 -0
  294. package/dist/events/game/game-table-waited.event.js +8 -0
  295. package/dist/events/game/game-table-waited.event.js.map +1 -0
  296. package/dist/events/index.d.ts +40 -0
  297. package/dist/events/index.d.ts.map +1 -0
  298. package/dist/events/index.js +82 -0
  299. package/dist/events/index.js.map +1 -0
  300. package/dist/events/ws/base-ws-event.d.ts +3 -0
  301. package/dist/events/ws/base-ws-event.d.ts.map +1 -0
  302. package/dist/events/ws/base-ws-event.js +7 -0
  303. package/dist/events/ws/base-ws-event.js.map +1 -0
  304. package/dist/events/ws/ws-event.d.ts +8 -0
  305. package/dist/events/ws/ws-event.d.ts.map +1 -0
  306. package/dist/events/ws/ws-event.enum.d.ts +6 -0
  307. package/dist/events/ws/ws-event.enum.d.ts.map +1 -0
  308. package/dist/events/ws/ws-event.enum.js +10 -0
  309. package/dist/events/ws/ws-event.enum.js.map +1 -0
  310. package/dist/events/ws/ws-event.js +14 -0
  311. package/dist/events/ws/ws-event.js.map +1 -0
  312. package/dist/exceptions/index.d.ts +4 -0
  313. package/dist/exceptions/index.d.ts.map +1 -0
  314. package/dist/exceptions/index.js +10 -0
  315. package/dist/exceptions/index.js.map +1 -0
  316. package/dist/exceptions/not-active-player-move.exception.d.ts +5 -0
  317. package/dist/exceptions/not-active-player-move.exception.d.ts.map +1 -0
  318. package/dist/exceptions/not-active-player-move.exception.js +13 -0
  319. package/dist/exceptions/not-active-player-move.exception.js.map +1 -0
  320. package/dist/exceptions/not-implemented.exception.d.ts +5 -0
  321. package/dist/exceptions/not-implemented.exception.d.ts.map +1 -0
  322. package/dist/exceptions/not-implemented.exception.js +13 -0
  323. package/dist/exceptions/not-implemented.exception.js.map +1 -0
  324. package/dist/exceptions/not-valid-player-move.exception.d.ts +5 -0
  325. package/dist/exceptions/not-valid-player-move.exception.d.ts.map +1 -0
  326. package/dist/exceptions/not-valid-player-move.exception.js +13 -0
  327. package/dist/exceptions/not-valid-player-move.exception.js.map +1 -0
  328. package/dist/exceptions/player-has-no-possible-move.exception.d.ts +5 -0
  329. package/dist/exceptions/player-has-no-possible-move.exception.d.ts.map +1 -0
  330. package/dist/exceptions/player-has-no-possible-move.exception.js +13 -0
  331. package/dist/exceptions/player-has-no-possible-move.exception.js.map +1 -0
  332. package/dist/index.d.ts +3 -0
  333. package/dist/index.d.ts.map +1 -1
  334. package/dist/index.js +3 -1
  335. package/dist/index.js.map +1 -1
  336. package/dist/level-helper/base-game-level-helper.d.ts +16 -0
  337. package/dist/level-helper/base-game-level-helper.d.ts.map +1 -0
  338. package/dist/level-helper/base-game-level-helper.js +60 -0
  339. package/dist/level-helper/base-game-level-helper.js.map +1 -0
  340. package/dist/level-helper/experiences-amount.enum.d.ts +6 -0
  341. package/dist/level-helper/experiences-amount.enum.d.ts.map +1 -0
  342. package/dist/level-helper/experiences-amount.enum.js +10 -0
  343. package/dist/level-helper/experiences-amount.enum.js.map +1 -0
  344. package/dist/level-helper/experiences-level-edge.enum.d.ts +5 -0
  345. package/dist/level-helper/experiences-level-edge.enum.d.ts.map +1 -0
  346. package/dist/level-helper/experiences-level-edge.enum.js +9 -0
  347. package/dist/level-helper/experiences-level-edge.enum.js.map +1 -0
  348. package/dist/level-helper/experiences-level-rank.enum.d.ts +6 -0
  349. package/dist/level-helper/experiences-level-rank.enum.d.ts.map +1 -0
  350. package/dist/level-helper/experiences-level-rank.enum.js +10 -0
  351. package/dist/level-helper/experiences-level-rank.enum.js.map +1 -0
  352. package/dist/level-helper/index.d.ts +4 -0
  353. package/dist/level-helper/index.d.ts.map +1 -0
  354. package/dist/level-helper/index.js +10 -0
  355. package/dist/level-helper/index.js.map +1 -0
  356. package/dist/strategies/index.d.ts +4 -0
  357. package/dist/strategies/index.d.ts.map +1 -0
  358. package/dist/strategies/index.js +8 -0
  359. package/dist/strategies/index.js.map +1 -0
  360. package/dist/strategies/max-players-strategy.d.ts +6 -0
  361. package/dist/strategies/max-players-strategy.d.ts.map +1 -0
  362. package/dist/strategies/max-players-strategy.js +10 -0
  363. package/dist/strategies/max-players-strategy.js.map +1 -0
  364. package/dist/strategies/min-players-strategy.d.ts +6 -0
  365. package/dist/strategies/min-players-strategy.d.ts.map +1 -0
  366. package/dist/strategies/min-players-strategy.js +10 -0
  367. package/dist/strategies/min-players-strategy.js.map +1 -0
  368. package/dist/strategies/start-strategy-interface.d.ts +5 -0
  369. package/dist/strategies/start-strategy-interface.d.ts.map +1 -0
  370. package/dist/{base/base-game-state.type.js → strategies/start-strategy-interface.js} +1 -1
  371. package/dist/strategies/start-strategy-interface.js.map +1 -0
  372. package/dist/tests/just-black-jack/domain/black-jack-dealer.d.ts +1 -1
  373. package/dist/tests/just-black-jack/domain/black-jack-dealer.d.ts.map +1 -1
  374. package/dist/tests/just-black-jack/domain/black-jack-dealer.js +10 -2
  375. package/dist/tests/just-black-jack/domain/black-jack-dealer.js.map +1 -1
  376. package/dist/tests/just-black-jack/domain/black-jack-game-master.d.ts +14 -22
  377. package/dist/tests/just-black-jack/domain/black-jack-game-master.d.ts.map +1 -1
  378. package/dist/tests/just-black-jack/domain/black-jack-game-master.js +46 -61
  379. package/dist/tests/just-black-jack/domain/black-jack-game-master.js.map +1 -1
  380. package/dist/tests/just-black-jack/domain/black-jack-game-result-helper.d.ts +8 -0
  381. package/dist/tests/just-black-jack/domain/black-jack-game-result-helper.d.ts.map +1 -0
  382. package/dist/tests/just-black-jack/domain/black-jack-game-result-helper.js +16 -0
  383. package/dist/tests/just-black-jack/domain/black-jack-game-result-helper.js.map +1 -0
  384. package/dist/tests/just-black-jack/domain/black-jack-move-data.d.ts +2 -2
  385. package/dist/tests/just-black-jack/domain/black-jack-move-data.d.ts.map +1 -1
  386. package/dist/tests/just-black-jack/domain/black-jack-move-data.js +3 -2
  387. package/dist/tests/just-black-jack/domain/black-jack-move-data.js.map +1 -1
  388. package/dist/tests/just-black-jack/domain/black-jack-player-actions.enum.d.ts +5 -0
  389. package/dist/tests/just-black-jack/domain/black-jack-player-actions.enum.d.ts.map +1 -0
  390. package/dist/tests/just-black-jack/domain/black-jack-player-actions.enum.js +9 -0
  391. package/dist/tests/just-black-jack/domain/black-jack-player-actions.enum.js.map +1 -0
  392. package/dist/tests/just-black-jack/domain/black-jack-player.d.ts +6 -4
  393. package/dist/tests/just-black-jack/domain/black-jack-player.d.ts.map +1 -1
  394. package/dist/tests/just-black-jack/domain/black-jack-player.js +10 -7
  395. package/dist/tests/just-black-jack/domain/black-jack-player.js.map +1 -1
  396. package/dist/tests/just-black-jack/domain/moves/black-jack-move-factory.d.ts +7 -0
  397. package/dist/tests/just-black-jack/domain/moves/black-jack-move-factory.d.ts.map +1 -0
  398. package/dist/tests/just-black-jack/domain/moves/black-jack-move-factory.js +25 -0
  399. package/dist/tests/just-black-jack/domain/moves/black-jack-move-factory.js.map +1 -0
  400. package/dist/tests/just-black-jack/domain/moves/list/black-jack-player-move-finish-move.d.ts +6 -0
  401. package/dist/tests/just-black-jack/domain/moves/list/black-jack-player-move-finish-move.d.ts.map +1 -0
  402. package/dist/tests/just-black-jack/domain/moves/list/black-jack-player-move-finish-move.js +14 -0
  403. package/dist/tests/just-black-jack/domain/moves/list/black-jack-player-move-finish-move.js.map +1 -0
  404. package/dist/tests/just-black-jack/domain/moves/list/black-jack-player-move-get-card.d.ts +6 -0
  405. package/dist/tests/just-black-jack/domain/moves/list/black-jack-player-move-get-card.d.ts.map +1 -0
  406. package/dist/tests/just-black-jack/domain/moves/list/black-jack-player-move-get-card.js +14 -0
  407. package/dist/tests/just-black-jack/domain/moves/list/black-jack-player-move-get-card.js.map +1 -0
  408. package/dist/tests/just-black-jack/rooms/black-jack-simple-room.d.ts.map +1 -1
  409. package/dist/tests/just-black-jack/rooms/black-jack-simple-room.js +1 -2
  410. package/dist/tests/just-black-jack/rooms/black-jack-simple-room.js.map +1 -1
  411. package/dist/tests/just-black-jack/tests/black-jack-simple-room.test.js +240 -20
  412. package/dist/tests/just-black-jack/tests/black-jack-simple-room.test.js.map +1 -1
  413. package/dist/tests/just-black-jack/tests/common.d.ts +0 -6
  414. package/dist/tests/just-black-jack/tests/common.d.ts.map +1 -1
  415. package/dist/tests/just-black-jack/tests/common.js +19 -9
  416. package/dist/tests/just-black-jack/tests/common.js.map +1 -1
  417. package/dist/utils/circle-list.d.ts +9 -13
  418. package/dist/utils/circle-list.d.ts.map +1 -1
  419. package/dist/utils/circle-list.js +11 -20
  420. package/dist/utils/circle-list.js.map +1 -1
  421. package/dist/utils/tests/circle-list.test.d.ts +5 -1
  422. package/dist/utils/tests/circle-list.test.d.ts.map +1 -1
  423. package/dist/utils/tests/circle-list.test.js +21 -13
  424. package/dist/utils/tests/circle-list.test.js.map +1 -1
  425. package/dist/utils/timer.d.ts +2 -0
  426. package/dist/utils/timer.d.ts.map +1 -0
  427. package/dist/utils/timer.js +16 -0
  428. package/dist/utils/timer.js.map +1 -0
  429. package/package.json +3 -1
  430. package/src/base/base-figure-type.enum.ts +3 -0
  431. package/src/base/base-figure.ts +23 -0
  432. package/src/base/base-move-data.ts +7 -5
  433. package/src/base/base-player-move-factory.ts +18 -0
  434. package/src/base/base-player-move.ts +37 -0
  435. package/src/base/game-control-player-turn.ts +7 -1
  436. package/src/base/game-control-restart.ts +7 -1
  437. package/src/base/game-master.ts +525 -107
  438. package/src/base/game-player-connections-helper.ts +12 -20
  439. package/src/base/game-player-exited.ts +37 -0
  440. package/src/base/game-player.ts +230 -122
  441. package/src/base/game-result-equal-helper.ts +17 -0
  442. package/src/base/game-result-helper.ts +36 -0
  443. package/src/base/game-result-rating-helper.ts +44 -0
  444. package/src/base/game-room.ts +105 -18
  445. package/src/base/game-round-history-item.enum.ts +6 -0
  446. package/src/base/game-round-history-item.ts +110 -0
  447. package/src/base/game-round.ts +56 -10
  448. package/src/base/game-state-machine.ts +10 -0
  449. package/src/base/game-table-seat.ts +57 -6
  450. package/src/base/game-table-seats.ts +14 -29
  451. package/src/base/game-table.ts +92 -59
  452. package/src/base/index.ts +16 -5
  453. package/src/base-rooms/simple-room.ts +14 -12
  454. package/src/base-rooms/tournament-state.ts +1 -1
  455. package/src/cards-game/cards/card.ts +50 -28
  456. package/src/cards-game/cards-deck/cards-deck-type.enum.ts +8 -0
  457. package/src/cards-game/cards-deck/cards-deck.ts +105 -0
  458. package/src/cards-game/cards-deck/types/deck12.ts +32 -0
  459. package/src/cards-game/cards-deck/types/deck24.ts +56 -0
  460. package/src/cards-game/{cards → cards-deck/types}/deck36.ts +1 -1
  461. package/src/cards-game/{cards → cards-deck/types}/deck52.ts +1 -1
  462. package/src/cards-game/cards-game-master.ts +64 -27
  463. package/src/cards-game/cards-pairs/card-pair-slot.ts +73 -0
  464. package/src/cards-game/cards-pairs/card-pair-slots.ts +104 -0
  465. package/src/cards-game/cards-player.ts +68 -20
  466. package/src/cards-game/index.ts +8 -2
  467. package/src/events/base/base-game.event.ts +1 -0
  468. package/src/events/base/game-player.event.ts +26 -0
  469. package/src/events/base/game-room.event.ts +16 -0
  470. package/src/events/base/game-table.event.ts +16 -0
  471. package/src/events/game/game-player-activate.event.ts +3 -0
  472. package/src/events/game/game-player-activated.event.ts +3 -0
  473. package/src/events/game/game-player-deactivate.event.ts +3 -0
  474. package/src/events/game/game-player-deactivated.event.ts +3 -0
  475. package/src/events/game/game-player-enter-the-table.event.ts +3 -0
  476. package/src/events/game/game-player-entered-the-table.event.ts +3 -0
  477. package/src/events/game/game-player-exit-the-table.event.ts +3 -0
  478. package/src/events/game/game-player-exited-the-table.event.ts +3 -0
  479. package/src/events/game/game-player-kick-out-the-table.event.ts +3 -0
  480. package/src/events/game/game-player-kicked-out-the-table.event.ts +3 -0
  481. package/src/events/game/game-player-move-on-the-table.event.ts +3 -0
  482. package/src/events/game/game-player-moved-on-the-table.event.ts +3 -0
  483. package/src/events/game/game-player-turn-timer-executed.event.ts +3 -0
  484. package/src/events/game/game-player-turn-timer-set-off.event.ts +3 -0
  485. package/src/events/game/game-player-turn-timer-set-on.event.ts +3 -0
  486. package/src/events/game/game-player-watch-the-table.event.ts +3 -0
  487. package/src/events/game/game-player-watched-the-table.event.ts +3 -0
  488. package/src/events/game/game-room-room-created.event.ts +3 -0
  489. package/src/events/game/game-table-finish.event.ts +3 -0
  490. package/src/events/game/game-table-finished.event.ts +3 -0
  491. package/src/events/game/game-table-master-created.event.ts +3 -0
  492. package/src/events/game/game-table-restart-timer-executed.event.ts +3 -0
  493. package/src/events/game/game-table-restart-timer-set-on.event.ts +3 -0
  494. package/src/events/game/game-table-restart.event.ts +3 -0
  495. package/src/events/game/game-table-restarted.event.ts +3 -0
  496. package/src/events/game/game-table-start.event.ts +3 -0
  497. package/src/events/game/game-table-started.event.ts +3 -0
  498. package/src/events/game/game-table-turn-finish.event.ts +3 -0
  499. package/src/events/game/game-table-turn-finished.event.ts +3 -0
  500. package/src/events/game/game-table-turn-start.event.ts +3 -0
  501. package/src/events/game/game-table-turn-started.event.ts +3 -0
  502. package/src/events/game/game-table-wait.event.ts +3 -0
  503. package/src/events/game/game-table-waited.event.ts +3 -0
  504. package/src/events/index.ts +40 -0
  505. package/src/events/ws/base-ws-event.ts +1 -0
  506. package/src/events/ws/ws-event.enum.ts +5 -0
  507. package/src/events/ws/ws-event.ts +14 -0
  508. package/src/exceptions/index.ts +3 -0
  509. package/src/exceptions/not-active-player-move.exception.ts +10 -0
  510. package/src/exceptions/not-implemented.exception.ts +10 -0
  511. package/src/exceptions/not-valid-player-move.exception.ts +10 -0
  512. package/src/exceptions/player-has-no-possible-move.exception.ts +10 -0
  513. package/src/index.ts +3 -1
  514. package/src/level-helper/base-game-level-helper.ts +74 -0
  515. package/src/level-helper/experiences-amount.enum.ts +5 -0
  516. package/src/level-helper/experiences-level-edge.enum.ts +4 -0
  517. package/src/level-helper/experiences-level-rank.enum.ts +5 -0
  518. package/src/level-helper/index.ts +3 -0
  519. package/src/strategies/index.ts +3 -0
  520. package/src/strategies/max-players-strategy.ts +8 -0
  521. package/src/strategies/min-players-strategy.ts +8 -0
  522. package/src/strategies/start-strategy-interface.ts +5 -0
  523. package/src/tests/just-black-jack/domain/black-jack-dealer.ts +15 -10
  524. package/src/tests/just-black-jack/domain/black-jack-game-master.ts +53 -73
  525. package/src/tests/just-black-jack/domain/black-jack-game-result-helper.ts +15 -0
  526. package/src/tests/just-black-jack/domain/black-jack-move-data.ts +4 -3
  527. package/src/tests/just-black-jack/domain/black-jack-player-actions.enum.ts +4 -0
  528. package/src/tests/just-black-jack/domain/black-jack-player.ts +19 -19
  529. package/src/tests/just-black-jack/domain/moves/black-jack-move-factory.ts +24 -0
  530. package/src/tests/just-black-jack/domain/moves/list/black-jack-player-move-finish-move.ts +12 -0
  531. package/src/tests/just-black-jack/domain/moves/list/black-jack-player-move-get-card.ts +13 -0
  532. package/src/tests/just-black-jack/rooms/black-jack-simple-room.ts +3 -4
  533. package/src/tests/just-black-jack/tests/black-jack-simple-room.test.ts +392 -75
  534. package/src/tests/just-black-jack/tests/common.ts +20 -56
  535. package/src/utils/circle-list.ts +27 -39
  536. package/src/utils/tests/circle-list.test.ts +14 -9
  537. package/src/utils/timer.ts +14 -0
  538. package/dist/base/base-game-state.type.d.ts +0 -8
  539. package/dist/base/base-game-state.type.d.ts.map +0 -1
  540. package/dist/base/base-game-state.type.js.map +0 -1
  541. package/dist/base/game-player-move.d.ts +0 -13
  542. package/dist/base/game-player-move.d.ts.map +0 -1
  543. package/dist/base/game-player-move.js +0 -28
  544. package/dist/base/game-player-move.js.map +0 -1
  545. package/dist/base/game-summary-result.d.ts +0 -3
  546. package/dist/base/game-summary-result.d.ts.map +0 -1
  547. package/dist/base/game-summary-result.js +0 -7
  548. package/dist/base/game-summary-result.js.map +0 -1
  549. package/dist/cards-game/cards/deck36.d.ts +0 -2
  550. package/dist/cards-game/cards/deck36.d.ts.map +0 -1
  551. package/dist/cards-game/cards/deck36.js.map +0 -1
  552. package/dist/cards-game/cards/deck52.d.ts +0 -2
  553. package/dist/cards-game/cards/deck52.d.ts.map +0 -1
  554. package/dist/cards-game/cards/deck52.js.map +0 -1
  555. package/src/base/base-game-state.type.ts +0 -7
  556. package/src/base/game-player-move.ts +0 -33
  557. package/src/base/game-summary-result.ts +0 -3
@@ -1,11 +1,13 @@
1
- import { compact, first, remove, slice } from 'lodash';
1
+ import { compact, first, slice } from 'lodash';
2
2
 
3
3
  import { GamePlayer } from './game-player';
4
4
  import { GameTableSeats } from './game-table-seats';
5
+ import { GameRoom } from './game-room';
6
+ import { GamePlayerExited } from './game-player-exited';
5
7
  import { GameMaster } from './game-master';
6
8
 
7
- export type GameTableConfig = {
8
- roomId: string;
9
+ export interface GameTableConfig {
10
+ room: GameRoom;
9
11
  number: number;
10
12
  tableSize: number;
11
13
  bet: number;
@@ -14,12 +16,15 @@ export type GameTableConfig = {
14
16
  subtitle: Record<string, string>;
15
17
  turnTimeout: number;
16
18
  restartTimeout: number;
17
- onRoomFinishRound: (table: GameTable) => void
18
- onRoomRestartRound: (table: GameTable) => void
19
19
  }
20
20
 
21
21
  export class GameTable {
22
- private readonly roomId: string;
22
+ private readonly room: GameRoom;
23
+ private readonly watchers: Map<string, GamePlayer>;
24
+ private readonly tableQueue: Map<string, GamePlayer>;
25
+ public readonly seats: GameTableSeats;
26
+ private readonly exitedPlayers: Map<string, GamePlayerExited>;
27
+
23
28
  private readonly number: number;
24
29
  private readonly tableSize: number;
25
30
  private readonly bet: number;
@@ -27,19 +32,12 @@ export class GameTable {
27
32
  private readonly subtitle: Record<string, string>;
28
33
  private readonly turnTimeout: number;
29
34
  private readonly restartTimeout: number;
30
- private readonly queue: Array<GamePlayer>;
31
- private readonly watchers: Array<GamePlayer>;
32
- public readonly seats: GameTableSeats;
33
- public master: GameMaster;
34
- public onRoomFinishRound: (table: GameTable) => void;
35
- public onRoomRestartRound: (table: GameTable) => void;
36
35
 
37
36
  constructor (config: GameTableConfig) {
38
- this.queue = [];
39
- this.watchers = [];
40
- this.onRoomFinishRound = config.onRoomFinishRound;
41
- this.onRoomRestartRound = config.onRoomRestartRound;
42
- this.roomId = config.roomId;
37
+ this.tableQueue = new Map();
38
+ this.watchers = new Map();
39
+ this.exitedPlayers = new Map();
40
+ this.room = config.room;
43
41
  this.number = config.number;
44
42
  this.tableSize = config.tableSize;
45
43
  this.bet = config.bet;
@@ -50,12 +48,16 @@ export class GameTable {
50
48
  this.seats = new GameTableSeats(this.getTableSize());
51
49
  }
52
50
 
51
+ getMaster<T extends GameMaster> () {
52
+ return this.room.getMasterById(this.getId()) as T;
53
+ }
54
+
53
55
  getRoomId () {
54
- return this.roomId;
56
+ return this.room.getId();
55
57
  }
56
58
 
57
59
  getId () {
58
- return `${this.roomId}_${this.number}`;
60
+ return `${this.getRoomId()}_${this.number}`;
59
61
  }
60
62
 
61
63
  getNumber (): number {
@@ -90,11 +92,23 @@ export class GameTable {
90
92
  return this.restartTimeout;
91
93
  }
92
94
 
95
+ getPlayers<T extends GamePlayer> (): Array<T> {
96
+ return compact(this.seats.getSeats().map((seat) => seat.getPlayer())) as Array<T>;
97
+ }
98
+
99
+ getPlayerById (playerId: string): GamePlayer | undefined {
100
+ return this.getPlayers().find((item) => item.id === playerId);
101
+ }
102
+
103
+ getPlayerByColor (color: number): GamePlayer | undefined {
104
+ return this.getPlayers().find((item) => item.color === color);
105
+ }
106
+
93
107
  addPlayerToSeat (player: GamePlayer): boolean {
94
108
  const freeSeat = this.seats.findFreeSeat();
95
109
  if (freeSeat) {
96
110
  freeSeat.addPlayer(player);
97
- player.seat(this.getRoomId(), this.getId(), freeSeat.getNumber());
111
+ player.becomePlayer(this.room, this, freeSeat);
98
112
  return true;
99
113
  }
100
114
 
@@ -102,23 +116,15 @@ export class GameTable {
102
116
  }
103
117
 
104
118
  removePlayerFromSeat (player: GamePlayer): void {
105
- const seat = this.seats.getSeat(player.getSeatNumber());
119
+ const seat = this.seats.getSeatByNumber(player.seatNumber);
106
120
  if (seat) {
107
121
  seat.removePlayer();
108
122
  player.quit();
109
123
  }
110
124
  }
111
125
 
112
- getPlayers (): Array<GamePlayer> {
113
- return compact(this.seats.getSeats().map((seat) => seat.getPlayer()));
114
- }
115
-
116
- getPlayerByColor (color: number): GamePlayer | undefined {
117
- return this.getPlayers().find((item) => item.getColor() === color);
118
- }
119
-
120
126
  getPlayersWithQueue (): Array<GamePlayer> {
121
- return [...this.getPlayers(), ...this.queue];
127
+ return [...this.getPlayers(), ...this.getTableQueue()];
122
128
  }
123
129
 
124
130
  getLastPlayer (): GamePlayer | null {
@@ -137,54 +143,89 @@ export class GameTable {
137
143
  return this.getPlayers().filter((player) => player.hasEmptyStack());
138
144
  }
139
145
 
140
- getQueue (): Array<GamePlayer> {
141
- return this.queue;
146
+ getTableQueue (): Array<GamePlayer> {
147
+ return Array.from(this.tableQueue.values());
148
+ }
149
+
150
+ getTableQueuerById (playerId: string): GamePlayer | undefined {
151
+ return this.tableQueue.get(playerId);
152
+ }
153
+
154
+ moveUsersFromQueueToSeats () {
155
+ for (let i = 0; i < this.getTableQueue().length; i++) {
156
+ const queuedUser = this.getTableQueue()[i];
157
+ const freeSeat = this.seats.findFreeSeat();
158
+
159
+ if (!queuedUser.hasOpenConnection()) {
160
+ this.removePlayerFromQueue(queuedUser);
161
+ } else if (freeSeat) {
162
+ freeSeat.addPlayer(queuedUser);
163
+ queuedUser.becomePlayer(this.room, this, freeSeat);
164
+ i -= 1;
165
+
166
+ this.removePlayerFromQueue(queuedUser);
167
+ } else {
168
+ break;
169
+ }
170
+ }
142
171
  }
143
172
 
144
- getRedundantQueuers (): Array<GamePlayer> {
145
- return slice(this.queue, this.getTableSize() - this.getPlayers().length - 1);
173
+ getRedundantTableQueuers (): Array<GamePlayer> {
174
+ return slice(this.getTableQueue(), this.getTableSize() - this.getPlayers().length - 1);
146
175
  }
147
176
 
148
177
  addPlayerToQueue (player: GamePlayer): void {
149
- this.queue.push(player);
150
- player.getInTableQueue(this.getRoomId(), this.getId());
178
+ this.tableQueue.set(player.id, player);
179
+ player.becomeTableQueuer(this.room, this);
151
180
  }
152
181
 
153
182
  removePlayerFromQueue (player: GamePlayer): void {
154
- remove(this.queue, (queuer) => queuer.getId() === player.getId());
183
+ this.tableQueue.delete(player.id);
155
184
  player.quit();
156
185
  }
157
186
 
158
- hasInQueue (PlayerId: string): boolean {
159
- return !!this.getQueue().find((queuer) => queuer.getId() === PlayerId);
187
+ getWatchers (): Array<GamePlayer> {
188
+ return Array.from(this.watchers.values());
160
189
  }
161
190
 
162
- getWatchers (): Array<GamePlayer> {
163
- return this.watchers;
191
+ getWatcherById (playerId: string): GamePlayer | undefined {
192
+ return this.watchers.get(playerId);
164
193
  }
165
194
 
166
195
  addPlayerToWatchers (player: GamePlayer): void {
167
- this.watchers.push(player);
168
- player.watch(this.getRoomId(), this.getId());
196
+ this.watchers.set(player.id, player);
197
+ player.becomeWatcher(this.room, this);
169
198
  }
170
199
 
171
200
  removePlayerFromWatchers (player: GamePlayer): void {
172
- remove(this.watchers, (watcher) => watcher.getId() === player.getId());
201
+ this.watchers.delete(player.id);
173
202
  player.quit();
174
203
  }
175
204
 
176
- hasInWatchers (PlayerId: string): boolean {
177
- return !!this.getWatchers().find((watcher) => watcher.getId() === PlayerId);
178
- }
179
-
180
- getAllWatchers () {
205
+ getAllObservers (): Array<GamePlayer> {
181
206
  return [
182
- ...this.getWatchers(),
183
- ...this.getQueue(),
184
207
  ...this.getPlayers(),
208
+ ...this.getTableQueue(),
209
+ ...this.getWatchers(),
185
210
  ];
186
211
  }
187
212
 
213
+ getExitedPlayers (): Array<GamePlayerExited> {
214
+ return Array.from(this.exitedPlayers.values());
215
+ }
216
+
217
+ addPlayerToExited (player: GamePlayer) {
218
+ this.exitedPlayers.set(player.id, new GamePlayerExited(player));
219
+ }
220
+
221
+ clearExitedPlayers (): void {
222
+ this.exitedPlayers.clear();
223
+ }
224
+
225
+ getAllOtherObservers (player: GamePlayer): Array<GamePlayer> {
226
+ return this.getAllObservers().filter((item) => item.id !== player.id);
227
+ }
228
+
188
229
  isFull (): boolean {
189
230
  return !this.seats.findFreeSeat();
190
231
  }
@@ -196,13 +237,5 @@ export class GameTable {
196
237
  hasSeats (): boolean {
197
238
  return !!this.seats.findFreeSeat();
198
239
  }
199
-
200
- onFinishRound () {
201
- this.onRoomFinishRound(this);
202
- }
203
-
204
- onRestartRound () {
205
- this.onRoomRestartRound(this);
206
- }
207
240
  }
208
241
 
package/src/base/index.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { GameControlPlayerTurn } from './game-control-player-turn';
2
2
  import { GameControlRestart } from './game-control-restart';
3
3
  import { GameMaster } from './game-master';
4
- import { GamePlayer } from './game-player';
5
- import { GamePlayerMove } from './game-player-move';
4
+ import { GamePlayer, IGamePlayerConfig } from './game-player';
5
+ import { GamePlayerExited } from './game-player-exited';
6
6
  import { GameRoom, GameRoomConfig } from './game-room';
7
7
  import { GameRound } from './game-round';
8
8
  import { GameStateMachine, StateMachineConfig } from './game-state-machine';
@@ -10,15 +10,21 @@ import { GameTable, GameTableConfig } from './game-table';
10
10
  import { GameTableSeat } from './game-table-seat';
11
11
  import { GameTableSeats } from './game-table-seats';
12
12
  import { StandardGameState } from './standard-game-state';
13
- import { BaseGameStateType } from './base-game-state.type';
13
+ import { GameRoundHistoryItem } from './game-round-history-item';
14
14
  import { BaseMoveData } from './base-move-data';
15
+ import { BasePlayerMove } from './base-player-move';
16
+ import { BasePlayerMoveFactory } from './base-player-move-factory';
17
+ import { GameResultHelper } from './game-result-helper';
18
+ import { GameResultEqualHelper } from './game-result-equal-helper';
19
+ import { GameResultRatingHelper } from './game-result-rating-helper';
15
20
 
16
21
  export {
17
22
  GameControlPlayerTurn,
18
23
  GameControlRestart,
19
24
  GameMaster,
20
25
  GamePlayer,
21
- GamePlayerMove,
26
+ IGamePlayerConfig,
27
+ GamePlayerExited,
22
28
  GameRoom,
23
29
  GameRound,
24
30
  GameStateMachine,
@@ -29,6 +35,11 @@ export {
29
35
  GameTableSeats,
30
36
  GameRoomConfig,
31
37
  StandardGameState,
32
- BaseGameStateType,
38
+ GameRoundHistoryItem,
33
39
  BaseMoveData,
40
+ BasePlayerMove,
41
+ BasePlayerMoveFactory,
42
+ GameResultHelper,
43
+ GameResultEqualHelper,
44
+ GameResultRatingHelper,
34
45
  }
@@ -1,27 +1,29 @@
1
+ import { IBaseMoveData } from 'jp.common.models';
2
+
1
3
  import { GamePlayer, GameRoom } from '../base';
2
- import { BaseMoveData } from '../base/base-move-data';
3
4
 
4
5
  export abstract class SimpleRoom extends GameRoom {
5
- handleWatchTheTable<T>(player: GamePlayer, tableId: string): T {
6
- return this.getMasterById(tableId)?.watchTheTable<T>(player);
6
+ handleWatchTheTable(player: GamePlayer, tableId: string): void {
7
+ return this.getMasterById(tableId)?.watchTheTable(player);
7
8
  }
8
9
 
9
- handleEnterTheTable<T> (player: GamePlayer, tableId: string): T {
10
- return this.getMasterById(tableId)?.enterTheTable<T>(player);
10
+ handleEnterTheTable (player: GamePlayer, tableId: string): void {
11
+ return this.getMasterById(tableId)?.enterTheTable(player);
11
12
  }
12
13
 
13
- handleExitTheTable<T> (player: GamePlayer, tableId: string): T {
14
- return this.getMasterById(tableId)?.exitTheTable<T>(player);
14
+ handleExitTheTable (player: GamePlayer, tableId: string): void {
15
+ return this.getMasterById(tableId)?.exitTheTable(player);
15
16
  }
16
17
 
17
- handleMoveOnTheTable<T> (player: GamePlayer, tableId: string, moveData: BaseMoveData): T {
18
- return this.getMasterById(tableId)?.onHandleMove<T>(player, moveData);
18
+ handleMoveOnTheTable (player: GamePlayer, tableId: string, moveData: IBaseMoveData): void {
19
+ return this.getMasterById(tableId)?.moveOnTheTable(player, moveData);
19
20
  }
20
21
 
21
- handleFinishRound () {
22
- // save users balances
22
+ handleRestartTable (tableId: string): void {
23
+ return this.restartTable(tableId);
23
24
  }
24
25
 
25
- handleRestartRound () {
26
+ handleTechBreakOn (): void {
27
+ this.techBreakOn();
26
28
  }
27
29
  }
@@ -60,7 +60,7 @@ export class TournamentState extends GameStateMachine {
60
60
  return this.getCurrentState() === TournamentStateMachineStates.STATE_IN_PROGRESS;
61
61
  }
62
62
 
63
- isFinished () {
63
+ isFinish () {
64
64
  return this.getCurrentState() === TournamentStateMachineStates.STATE_FINISHED;
65
65
  }
66
66
 
@@ -1,60 +1,82 @@
1
- export type ClientCard = {
2
- id: number;
3
- rank: number;
4
- suit: string;
5
- isDisable: boolean;
6
- }
1
+ import { BaseFigure } from '../../base/base-figure';
2
+ import { BaseFigureTypeEnum } from '../../base/base-figure-type.enum';
7
3
 
8
- export class Card {
9
- private readonly _id: number;
4
+ export class Card extends BaseFigure {
10
5
  private readonly _rank: number;
11
6
  private readonly _suit: string;
12
7
  private _isDisable: boolean;
8
+ private _targets: Array<number>;
13
9
 
14
10
  constructor (id: number, rank: number, suit: string) {
15
- this._id = id;
11
+ super(id, BaseFigureTypeEnum.CARD);
12
+
16
13
  this._rank = rank;
17
14
  this._suit = suit;
18
15
  this._isDisable = false;
16
+ this._targets = [];
17
+ }
18
+
19
+ get rank () {
20
+ return this._rank;
21
+ }
22
+
23
+ get suit () {
24
+ return this._suit;
25
+ }
26
+
27
+ get isDisable () {
28
+ return this._isDisable;
19
29
  }
20
30
 
21
- public getId () {
22
- return this._id;
31
+ get isEnable () {
32
+ return !this._isDisable;
23
33
  }
24
34
 
25
- public getRank () {
35
+ get targets () {
36
+ return this._targets;
37
+ }
38
+
39
+ getRank () {
26
40
  return this._rank;
27
41
  }
28
42
 
29
- public getSuit () {
43
+ getSuit () {
30
44
  return this._suit;
31
45
  }
32
46
 
33
- public getIsDisable () {
47
+ hasSameSuit (suit: string) {
48
+ return this._suit === suit;
49
+ }
50
+
51
+ getIsDisable () {
34
52
  return this._isDisable;
35
53
  }
36
54
 
37
- public disable () {
55
+ disable () {
38
56
  this._isDisable = true;
39
57
  }
40
58
 
41
- public enable () {
59
+ enable () {
42
60
  this._isDisable = false;
43
61
  }
44
62
 
45
- public toClient (): ClientCard {
46
- return {
47
- id: this._id,
48
- rank: this._rank,
49
- suit: this._suit,
50
- isDisable: this._isDisable,
51
- };
63
+ getTargets () {
64
+ return this._targets;
65
+ }
66
+
67
+ setTarget (target: number) {
68
+ this._targets = [target];
69
+ }
70
+
71
+ setTargets (targets: Array<number>) {
72
+ this._targets = targets;
73
+ }
74
+
75
+ clearTargets () {
76
+ this._targets = [];
52
77
  }
53
78
 
54
- public toLogCard (): { rank: number; suit: string; } {
55
- return {
56
- rank: this.getRank(),
57
- suit: this.getSuit(),
58
- }
79
+ getName (): string {
80
+ return `${this._suit}_${this._rank}`;
59
81
  }
60
82
  }
@@ -0,0 +1,8 @@
1
+ export enum CardsDeckTypeEnum {
2
+ _12 = '12',
3
+ _24 = '24',
4
+ _36 = '36',
5
+ _52 = '52',
6
+ _52_AND_JOKER = '52_AND_JOKER',
7
+ }
8
+
@@ -0,0 +1,105 @@
1
+ import { cloneDeep, groupBy, maxBy, minBy, sortBy, sumBy, uniqBy } from 'lodash';
2
+
3
+ import { superShuffle } from '../../utils';
4
+
5
+ import { Card } from '../cards/card';
6
+ import { deck12 } from './types/deck12';
7
+ import { deck24 } from './types/deck24';
8
+ import { deck36 } from './types/deck36';
9
+ import { deck52 } from './types/deck52';
10
+ import { CardsDeckTypeEnum } from './cards-deck-type.enum';
11
+
12
+ export class CardsDeck {
13
+ private _cards: Array<Card>;
14
+
15
+ constructor (cards: Array<Card>) {
16
+ this._cards = cards;
17
+ }
18
+
19
+ static createFromDeckType (deckType: string) {
20
+ switch (deckType) {
21
+ case CardsDeckTypeEnum._12: {
22
+ return new CardsDeck(cloneDeep(deck12));
23
+ }
24
+ case CardsDeckTypeEnum._24: {
25
+ return new CardsDeck(cloneDeep(deck24));
26
+ }
27
+ case CardsDeckTypeEnum._36: {
28
+ return new CardsDeck(cloneDeep(deck36));
29
+ }
30
+ default: {
31
+ return new CardsDeck(cloneDeep(deck52));
32
+ }
33
+ }
34
+ }
35
+
36
+ get cards () {
37
+ return this._cards;
38
+ }
39
+
40
+ shuffle () {
41
+ this._cards = superShuffle(this._cards);
42
+ }
43
+
44
+ takeCardFromTop () {
45
+ return this._cards.pop();
46
+ }
47
+
48
+ pushCardToDeck (card: Card, position: number) {
49
+ this._cards.splice(position, 0, card);
50
+ }
51
+
52
+ pushCardToBottom (card: Card) {
53
+ this.pushCardToDeck(card, 0);
54
+ }
55
+
56
+ isEmpty () {
57
+ return this._cards.length === 0;
58
+ }
59
+
60
+ sortByRank (): CardsDeck {
61
+ this._cards = sortBy(this._cards, (card) => card.rank);
62
+
63
+ return this;
64
+ }
65
+
66
+ sortBySuit (): CardsDeck {
67
+ this._cards = sortBy(this._cards, (card) => card.suit);
68
+
69
+ return this;
70
+ }
71
+
72
+ sortCardsByEnabled (): CardsDeck {
73
+ this._cards = sortBy(this._cards, (item) => item.isEnable).reverse();
74
+
75
+ return this;
76
+ }
77
+
78
+ groupByRank (): Record<number, Array<Card>> {
79
+ return groupBy(this._cards, (card) => card.rank);
80
+ }
81
+
82
+ groupBySuit (): Record<string, Array<Card>> {
83
+ return groupBy(this._cards, (card) => card.suit);
84
+ }
85
+
86
+ groupByEnabled (): Record<string, Array<Card>> {
87
+ return groupBy(this._cards, (card) => card.isEnable);
88
+ }
89
+
90
+ minByRank (): Card | undefined {
91
+ return minBy(this._cards, (card) => card.rank);
92
+ }
93
+
94
+ maxByRank (): Card | undefined {
95
+ return maxBy(this._cards, (card) => card.rank);
96
+ }
97
+
98
+ uniqByRank (): Array<Card> {
99
+ return uniqBy(this._cards, (card) => card.rank);
100
+ }
101
+
102
+ sumByRank (): number {
103
+ return sumBy(this._cards, (card) => card.rank);
104
+ }
105
+ }
@@ -0,0 +1,32 @@
1
+ import {
2
+ club_ace,
3
+ club_king,
4
+ club_queen,
5
+ diamond_ace,
6
+ diamond_king,
7
+ diamond_queen,
8
+ heart_ace,
9
+ heart_king,
10
+ heart_queen,
11
+ spade_queen,
12
+ spade_king,
13
+ spade_ace,
14
+ } from '../../cards/cards';
15
+
16
+ export const deck12 = [
17
+ heart_queen,
18
+ heart_king,
19
+ heart_ace,
20
+
21
+ diamond_queen,
22
+ diamond_king,
23
+ diamond_ace,
24
+
25
+ club_queen,
26
+ club_king,
27
+ club_ace,
28
+
29
+ spade_queen,
30
+ spade_king,
31
+ spade_ace,
32
+ ];
@@ -0,0 +1,56 @@
1
+ import {
2
+ club_9,
3
+ club_10,
4
+ club_ace,
5
+ club_jack,
6
+ club_king,
7
+ club_queen,
8
+ diamond_9,
9
+ diamond_10,
10
+ diamond_ace,
11
+ diamond_jack,
12
+ diamond_king,
13
+ diamond_queen,
14
+ heart_9,
15
+ heart_10,
16
+ heart_ace,
17
+ heart_jack,
18
+ heart_king,
19
+ heart_queen,
20
+ spade_9,
21
+ spade_10,
22
+ spade_queen,
23
+ spade_jack,
24
+ spade_king,
25
+ spade_ace,
26
+ } from '../../cards/cards';
27
+
28
+ export const deck24 = [
29
+ heart_9,
30
+ heart_10,
31
+ heart_jack,
32
+ heart_queen,
33
+ heart_king,
34
+ heart_ace,
35
+
36
+ diamond_9,
37
+ diamond_10,
38
+ diamond_jack,
39
+ diamond_queen,
40
+ diamond_king,
41
+ diamond_ace,
42
+
43
+ club_9,
44
+ club_10,
45
+ club_jack,
46
+ club_queen,
47
+ club_king,
48
+ club_ace,
49
+
50
+ spade_9,
51
+ spade_10,
52
+ spade_jack,
53
+ spade_queen,
54
+ spade_king,
55
+ spade_ace,
56
+ ];
@@ -35,7 +35,7 @@ import {
35
35
  spade_jack,
36
36
  spade_king,
37
37
  spade_ace,
38
- } from './cards';
38
+ } from '../../cards/cards';
39
39
 
40
40
  export const deck36 = [
41
41
  heart_6,
@@ -51,7 +51,7 @@ import {
51
51
  spade_jack,
52
52
  spade_king,
53
53
  spade_queen,
54
- } from './cards';
54
+ } from '../../cards/cards';
55
55
 
56
56
  export const deck52 = [
57
57
  heart_2,