react-native-games 0.3.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 (269) hide show
  1. package/LICENSE +66 -0
  2. package/README.md +269 -0
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js +391 -0
  4. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -0
  5. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +293 -0
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -0
  7. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +156 -0
  8. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -0
  9. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +227 -0
  10. package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -0
  11. package/lib/module/games/balloon-blaster/components/GameArea.js +42 -0
  12. package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -0
  13. package/lib/module/games/balloon-blaster/components/GameBackground.js +544 -0
  14. package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -0
  15. package/lib/module/games/balloon-blaster/components/GameControls.js +229 -0
  16. package/lib/module/games/balloon-blaster/components/GameControls.js.map +1 -0
  17. package/lib/module/games/balloon-blaster/components/GameOverModal.js +133 -0
  18. package/lib/module/games/balloon-blaster/components/GameOverModal.js.map +1 -0
  19. package/lib/module/games/balloon-blaster/components/ParticleSystem.js +52 -0
  20. package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +1 -0
  21. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +119 -0
  22. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -0
  23. package/lib/module/games/balloon-blaster/components/SliceTrail.js +58 -0
  24. package/lib/module/games/balloon-blaster/components/SliceTrail.js.map +1 -0
  25. package/lib/module/games/balloon-blaster/components/index.js +11 -0
  26. package/lib/module/games/balloon-blaster/components/index.js.map +1 -0
  27. package/lib/module/games/cat-popper/CatPopper.js +230 -0
  28. package/lib/module/games/cat-popper/CatPopper.js.map +1 -0
  29. package/lib/module/games/cat-popper/CatPopperService.js +100 -0
  30. package/lib/module/games/cat-popper/CatPopperService.js.map +1 -0
  31. package/lib/module/games/cat-popper/CatPopperStore.js +113 -0
  32. package/lib/module/games/cat-popper/CatPopperStore.js.map +1 -0
  33. package/lib/module/games/cat-popper/components/CatCharacter.js +281 -0
  34. package/lib/module/games/cat-popper/components/CatCharacter.js.map +1 -0
  35. package/lib/module/games/cat-popper/components/GameBackground.js +531 -0
  36. package/lib/module/games/cat-popper/components/GameBackground.js.map +1 -0
  37. package/lib/module/games/cat-popper/components/GameControls.js +230 -0
  38. package/lib/module/games/cat-popper/components/GameControls.js.map +1 -0
  39. package/lib/module/games/cat-popper/components/GameGrid.js +66 -0
  40. package/lib/module/games/cat-popper/components/GameGrid.js.map +1 -0
  41. package/lib/module/games/cat-popper/components/GameHole.js +183 -0
  42. package/lib/module/games/cat-popper/components/GameHole.js.map +1 -0
  43. package/lib/module/games/cat-popper/components/GameOverModal.js +131 -0
  44. package/lib/module/games/cat-popper/components/GameOverModal.js.map +1 -0
  45. package/lib/module/games/cat-popper/components/ScoreBoard.js +77 -0
  46. package/lib/module/games/cat-popper/components/ScoreBoard.js.map +1 -0
  47. package/lib/module/games/cat-popper/components/index.js +10 -0
  48. package/lib/module/games/cat-popper/components/index.js.map +1 -0
  49. package/lib/module/games/fruit-slicer/FruitSlicer.js +411 -0
  50. package/lib/module/games/fruit-slicer/FruitSlicer.js.map +1 -0
  51. package/lib/module/games/fruit-slicer/FruitSlicerService.js +293 -0
  52. package/lib/module/games/fruit-slicer/FruitSlicerService.js.map +1 -0
  53. package/lib/module/games/fruit-slicer/FruitSlicerStore.js +156 -0
  54. package/lib/module/games/fruit-slicer/FruitSlicerStore.js.map +1 -0
  55. package/lib/module/games/fruit-slicer/components/FruitComponent.js +99 -0
  56. package/lib/module/games/fruit-slicer/components/FruitComponent.js.map +1 -0
  57. package/lib/module/games/fruit-slicer/components/GameArea.js +50 -0
  58. package/lib/module/games/fruit-slicer/components/GameArea.js.map +1 -0
  59. package/lib/module/games/fruit-slicer/components/GameBackground.js +1296 -0
  60. package/lib/module/games/fruit-slicer/components/GameBackground.js.map +1 -0
  61. package/lib/module/games/fruit-slicer/components/GameControls.js +230 -0
  62. package/lib/module/games/fruit-slicer/components/GameControls.js.map +1 -0
  63. package/lib/module/games/fruit-slicer/components/GameOverModal.js +189 -0
  64. package/lib/module/games/fruit-slicer/components/GameOverModal.js.map +1 -0
  65. package/lib/module/games/fruit-slicer/components/ParticleSystem.js +52 -0
  66. package/lib/module/games/fruit-slicer/components/ParticleSystem.js.map +1 -0
  67. package/lib/module/games/fruit-slicer/components/ScoreBoard.js +121 -0
  68. package/lib/module/games/fruit-slicer/components/ScoreBoard.js.map +1 -0
  69. package/lib/module/games/fruit-slicer/components/SliceTrail.js +58 -0
  70. package/lib/module/games/fruit-slicer/components/SliceTrail.js.map +1 -0
  71. package/lib/module/games/fruit-slicer/components/index.js +11 -0
  72. package/lib/module/games/fruit-slicer/components/index.js.map +1 -0
  73. package/lib/module/games/maze-runner/MazeRunner.js +242 -0
  74. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -0
  75. package/lib/module/games/maze-runner/MazeRunnerService.js +560 -0
  76. package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -0
  77. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +149 -0
  78. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js.map +1 -0
  79. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +357 -0
  80. package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -0
  81. package/lib/module/games/maze-runner/components/GameBackground.js +216 -0
  82. package/lib/module/games/maze-runner/components/GameBackground.js.map +1 -0
  83. package/lib/module/games/maze-runner/components/GameControls.js +129 -0
  84. package/lib/module/games/maze-runner/components/GameControls.js.map +1 -0
  85. package/lib/module/games/maze-runner/components/GameOverModal.js +134 -0
  86. package/lib/module/games/maze-runner/components/GameOverModal.js.map +1 -0
  87. package/lib/module/games/maze-runner/components/ScoreBoard.js +81 -0
  88. package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -0
  89. package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +209 -0
  90. package/lib/module/games/maze-runner/components/SkiaPipeComponent.js.map +1 -0
  91. package/lib/module/games/maze-runner/components/StaticGameBackground.js +169 -0
  92. package/lib/module/games/maze-runner/components/StaticGameBackground.js.map +1 -0
  93. package/lib/module/games/maze-runner/components/WallComponent.js +90 -0
  94. package/lib/module/games/maze-runner/components/WallComponent.js.map +1 -0
  95. package/lib/module/games/maze-runner/components/index.js +10 -0
  96. package/lib/module/games/maze-runner/components/index.js.map +1 -0
  97. package/lib/module/games/space-traveller/SpaceTraveller.js +393 -0
  98. package/lib/module/games/space-traveller/SpaceTraveller.js.map +1 -0
  99. package/lib/module/games/space-traveller/SpaceTravellerService.js +298 -0
  100. package/lib/module/games/space-traveller/SpaceTravellerService.js.map +1 -0
  101. package/lib/module/games/space-traveller/SpaceTravellerStore.js +139 -0
  102. package/lib/module/games/space-traveller/SpaceTravellerStore.js.map +1 -0
  103. package/lib/module/games/space-traveller/components/AsteroidComponent.js +111 -0
  104. package/lib/module/games/space-traveller/components/AsteroidComponent.js.map +1 -0
  105. package/lib/module/games/space-traveller/components/GameArea.js +75 -0
  106. package/lib/module/games/space-traveller/components/GameArea.js.map +1 -0
  107. package/lib/module/games/space-traveller/components/GameBackground.js +294 -0
  108. package/lib/module/games/space-traveller/components/GameBackground.js.map +1 -0
  109. package/lib/module/games/space-traveller/components/GameControls.js +177 -0
  110. package/lib/module/games/space-traveller/components/GameControls.js.map +1 -0
  111. package/lib/module/games/space-traveller/components/GameOverModal.js +182 -0
  112. package/lib/module/games/space-traveller/components/GameOverModal.js.map +1 -0
  113. package/lib/module/games/space-traveller/components/ParticleComponent.js +34 -0
  114. package/lib/module/games/space-traveller/components/ParticleComponent.js.map +1 -0
  115. package/lib/module/games/space-traveller/components/ScoreBoard.js +143 -0
  116. package/lib/module/games/space-traveller/components/ScoreBoard.js.map +1 -0
  117. package/lib/module/games/space-traveller/components/SettingsModal.js +222 -0
  118. package/lib/module/games/space-traveller/components/SettingsModal.js.map +1 -0
  119. package/lib/module/games/space-traveller/components/Spacecraft3D.js +362 -0
  120. package/lib/module/games/space-traveller/components/Spacecraft3D.js.map +1 -0
  121. package/lib/module/games/space-traveller/components/SpacecraftPath.js +37 -0
  122. package/lib/module/games/space-traveller/components/SpacecraftPath.js.map +1 -0
  123. package/lib/module/games/space-traveller/components/index.js +13 -0
  124. package/lib/module/games/space-traveller/components/index.js.map +1 -0
  125. package/lib/module/index.js +12 -0
  126. package/lib/module/index.js.map +1 -0
  127. package/lib/module/package.json +1 -0
  128. package/lib/module/services/GamesConstants.js +561 -0
  129. package/lib/module/services/GamesConstants.js.map +1 -0
  130. package/lib/module/services/GamesService.js +34 -0
  131. package/lib/module/services/GamesService.js.map +1 -0
  132. package/lib/module/shared/settings/GameSettings.js +295 -0
  133. package/lib/module/shared/settings/GameSettings.js.map +1 -0
  134. package/lib/module/shared/settings/SettingsService.js +119 -0
  135. package/lib/module/shared/settings/SettingsService.js.map +1 -0
  136. package/lib/typescript/package.json +1 -0
  137. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +16 -0
  138. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -0
  139. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +66 -0
  140. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -0
  141. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +37 -0
  142. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -0
  143. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts +10 -0
  144. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -0
  145. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +17 -0
  146. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -0
  147. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +7 -0
  148. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -0
  149. package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts +10 -0
  150. package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts.map +1 -0
  151. package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts +9 -0
  152. package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts.map +1 -0
  153. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts +8 -0
  154. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +1 -0
  155. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +9 -0
  156. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -0
  157. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts +11 -0
  158. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts.map +1 -0
  159. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +9 -0
  160. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -0
  161. package/lib/typescript/src/games/cat-popper/CatPopper.d.ts +13 -0
  162. package/lib/typescript/src/games/cat-popper/CatPopper.d.ts.map +1 -0
  163. package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts +32 -0
  164. package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts.map +1 -0
  165. package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts +21 -0
  166. package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts.map +1 -0
  167. package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts +7 -0
  168. package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts.map +1 -0
  169. package/lib/typescript/src/games/cat-popper/components/GameBackground.d.ts +7 -0
  170. package/lib/typescript/src/games/cat-popper/components/GameBackground.d.ts.map +1 -0
  171. package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts +10 -0
  172. package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts.map +1 -0
  173. package/lib/typescript/src/games/cat-popper/components/GameGrid.d.ts +13 -0
  174. package/lib/typescript/src/games/cat-popper/components/GameGrid.d.ts.map +1 -0
  175. package/lib/typescript/src/games/cat-popper/components/GameHole.d.ts +12 -0
  176. package/lib/typescript/src/games/cat-popper/components/GameHole.d.ts.map +1 -0
  177. package/lib/typescript/src/games/cat-popper/components/GameOverModal.d.ts +9 -0
  178. package/lib/typescript/src/games/cat-popper/components/GameOverModal.d.ts.map +1 -0
  179. package/lib/typescript/src/games/cat-popper/components/ScoreBoard.d.ts +8 -0
  180. package/lib/typescript/src/games/cat-popper/components/ScoreBoard.d.ts.map +1 -0
  181. package/lib/typescript/src/games/cat-popper/components/index.d.ts +8 -0
  182. package/lib/typescript/src/games/cat-popper/components/index.d.ts.map +1 -0
  183. package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts +16 -0
  184. package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts.map +1 -0
  185. package/lib/typescript/src/games/fruit-slicer/FruitSlicerService.d.ts +67 -0
  186. package/lib/typescript/src/games/fruit-slicer/FruitSlicerService.d.ts.map +1 -0
  187. package/lib/typescript/src/games/fruit-slicer/FruitSlicerStore.d.ts +37 -0
  188. package/lib/typescript/src/games/fruit-slicer/FruitSlicerStore.d.ts.map +1 -0
  189. package/lib/typescript/src/games/fruit-slicer/components/FruitComponent.d.ts +10 -0
  190. package/lib/typescript/src/games/fruit-slicer/components/FruitComponent.d.ts.map +1 -0
  191. package/lib/typescript/src/games/fruit-slicer/components/GameArea.d.ts +17 -0
  192. package/lib/typescript/src/games/fruit-slicer/components/GameArea.d.ts.map +1 -0
  193. package/lib/typescript/src/games/fruit-slicer/components/GameBackground.d.ts +7 -0
  194. package/lib/typescript/src/games/fruit-slicer/components/GameBackground.d.ts.map +1 -0
  195. package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts +10 -0
  196. package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts.map +1 -0
  197. package/lib/typescript/src/games/fruit-slicer/components/GameOverModal.d.ts +9 -0
  198. package/lib/typescript/src/games/fruit-slicer/components/GameOverModal.d.ts.map +1 -0
  199. package/lib/typescript/src/games/fruit-slicer/components/ParticleSystem.d.ts +8 -0
  200. package/lib/typescript/src/games/fruit-slicer/components/ParticleSystem.d.ts.map +1 -0
  201. package/lib/typescript/src/games/fruit-slicer/components/ScoreBoard.d.ts +9 -0
  202. package/lib/typescript/src/games/fruit-slicer/components/ScoreBoard.d.ts.map +1 -0
  203. package/lib/typescript/src/games/fruit-slicer/components/SliceTrail.d.ts +11 -0
  204. package/lib/typescript/src/games/fruit-slicer/components/SliceTrail.d.ts.map +1 -0
  205. package/lib/typescript/src/games/fruit-slicer/components/index.d.ts +9 -0
  206. package/lib/typescript/src/games/fruit-slicer/components/index.d.ts.map +1 -0
  207. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +18 -0
  208. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -0
  209. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts +82 -0
  210. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -0
  211. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts +11 -0
  212. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts.map +1 -0
  213. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts +12 -0
  214. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -0
  215. package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts +7 -0
  216. package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts.map +1 -0
  217. package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts +10 -0
  218. package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts.map +1 -0
  219. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts +11 -0
  220. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts.map +1 -0
  221. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +8 -0
  222. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -0
  223. package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts +25 -0
  224. package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts.map +1 -0
  225. package/lib/typescript/src/games/maze-runner/components/StaticGameBackground.d.ts +7 -0
  226. package/lib/typescript/src/games/maze-runner/components/StaticGameBackground.d.ts.map +1 -0
  227. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts +10 -0
  228. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts.map +1 -0
  229. package/lib/typescript/src/games/maze-runner/components/index.d.ts +8 -0
  230. package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -0
  231. package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts +17 -0
  232. package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts.map +1 -0
  233. package/lib/typescript/src/games/space-traveller/SpaceTravellerService.d.ts +65 -0
  234. package/lib/typescript/src/games/space-traveller/SpaceTravellerService.d.ts.map +1 -0
  235. package/lib/typescript/src/games/space-traveller/SpaceTravellerStore.d.ts +35 -0
  236. package/lib/typescript/src/games/space-traveller/SpaceTravellerStore.d.ts.map +1 -0
  237. package/lib/typescript/src/games/space-traveller/components/AsteroidComponent.d.ts +9 -0
  238. package/lib/typescript/src/games/space-traveller/components/AsteroidComponent.d.ts.map +1 -0
  239. package/lib/typescript/src/games/space-traveller/components/GameArea.d.ts +17 -0
  240. package/lib/typescript/src/games/space-traveller/components/GameArea.d.ts.map +1 -0
  241. package/lib/typescript/src/games/space-traveller/components/GameBackground.d.ts +7 -0
  242. package/lib/typescript/src/games/space-traveller/components/GameBackground.d.ts.map +1 -0
  243. package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts +10 -0
  244. package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts.map +1 -0
  245. package/lib/typescript/src/games/space-traveller/components/GameOverModal.d.ts +9 -0
  246. package/lib/typescript/src/games/space-traveller/components/GameOverModal.d.ts.map +1 -0
  247. package/lib/typescript/src/games/space-traveller/components/ParticleComponent.d.ts +8 -0
  248. package/lib/typescript/src/games/space-traveller/components/ParticleComponent.d.ts.map +1 -0
  249. package/lib/typescript/src/games/space-traveller/components/ScoreBoard.d.ts +8 -0
  250. package/lib/typescript/src/games/space-traveller/components/ScoreBoard.d.ts.map +1 -0
  251. package/lib/typescript/src/games/space-traveller/components/SettingsModal.d.ts +9 -0
  252. package/lib/typescript/src/games/space-traveller/components/SettingsModal.d.ts.map +1 -0
  253. package/lib/typescript/src/games/space-traveller/components/Spacecraft3D.d.ts +9 -0
  254. package/lib/typescript/src/games/space-traveller/components/Spacecraft3D.d.ts.map +1 -0
  255. package/lib/typescript/src/games/space-traveller/components/SpacecraftPath.d.ts +10 -0
  256. package/lib/typescript/src/games/space-traveller/components/SpacecraftPath.d.ts.map +1 -0
  257. package/lib/typescript/src/games/space-traveller/components/index.d.ts +11 -0
  258. package/lib/typescript/src/games/space-traveller/components/index.d.ts.map +1 -0
  259. package/lib/typescript/src/index.d.ts +7 -0
  260. package/lib/typescript/src/index.d.ts.map +1 -0
  261. package/lib/typescript/src/services/GamesConstants.d.ts +372 -0
  262. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -0
  263. package/lib/typescript/src/services/GamesService.d.ts +8 -0
  264. package/lib/typescript/src/services/GamesService.d.ts.map +1 -0
  265. package/lib/typescript/src/shared/settings/GameSettings.d.ts +36 -0
  266. package/lib/typescript/src/shared/settings/GameSettings.d.ts.map +1 -0
  267. package/lib/typescript/src/shared/settings/SettingsService.d.ts +32 -0
  268. package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +1 -0
  269. package/package.json +125 -0
@@ -0,0 +1,560 @@
1
+ "use strict";
2
+
3
+ export class MazeRunnerService {
4
+ gameTimer = null;
5
+ constructor(gridSize = 15, gameAreaWidth = 350, gameAreaHeight = 500) {
6
+ this.gameConfig = {
7
+ GRID_SIZE: gridSize,
8
+ CELL_SIZE: Math.min(gameAreaWidth, gameAreaHeight) / gridSize,
9
+ BALL_SIZE: 18,
10
+ PIPE_WIDTH: 8,
11
+ GAME_AREA_WIDTH: gameAreaWidth,
12
+ GAME_AREA_HEIGHT: gameAreaHeight,
13
+ COLLISION_TOLERANCE: 5,
14
+ SCORE_PER_COMPLETION: 100,
15
+ TIME_BONUS_MULTIPLIER: 10
16
+ };
17
+ this.gameState = {
18
+ isPlaying: false,
19
+ isPaused: false,
20
+ score: 0,
21
+ timeElapsed: 0,
22
+ ballPosition: {
23
+ x: 0,
24
+ y: 0
25
+ },
26
+ targetPosition: {
27
+ x: 0,
28
+ y: 0
29
+ },
30
+ isCompleted: false
31
+ };
32
+ this.maze = [];
33
+ this.walls = [];
34
+ this.initializeMaze();
35
+ // Generate initial maze on service creation
36
+ this.generateMazeWithBacktracking();
37
+ this.generateWalls();
38
+ this.setStartAndEndPositions();
39
+ }
40
+ setGameStateChangeCallback(callback) {
41
+ this.onGameStateChange = callback;
42
+ }
43
+ notifyGameStateChange() {
44
+ if (this.onGameStateChange) {
45
+ this.onGameStateChange({
46
+ ...this.gameState
47
+ });
48
+ }
49
+ }
50
+ initializeMaze() {
51
+ // Initialize maze grid
52
+ this.maze = [];
53
+ for (let y = 0; y < this.gameConfig.GRID_SIZE; y++) {
54
+ this.maze[y] = [];
55
+ for (let x = 0; x < this.gameConfig.GRID_SIZE; x++) {
56
+ if (this.maze[y]) {
57
+ this.maze[y][x] = {
58
+ x,
59
+ y,
60
+ walls: {
61
+ top: true,
62
+ right: true,
63
+ bottom: true,
64
+ left: true
65
+ },
66
+ visited: false
67
+ };
68
+ }
69
+ }
70
+ }
71
+ }
72
+ generateNewMaze() {
73
+ this.initializeMaze();
74
+ this.generateMazeWithBacktracking();
75
+ this.generateWalls();
76
+ this.setStartAndEndPositions();
77
+
78
+ // Reset game state for new maze
79
+ this.gameState.isCompleted = false;
80
+ this.gameState.isPlaying = false; // Don't auto-start, let user click start
81
+ this.gameState.isPaused = false;
82
+ this.gameState.timeElapsed = 0;
83
+ this.notifyGameStateChange();
84
+ }
85
+ generateMazeWithBacktracking() {
86
+ // Create a proper maze using recursive backtracking algorithm
87
+ const stack = [];
88
+ const startCell = this.maze[0]?.[0];
89
+ if (startCell) {
90
+ startCell.visited = true;
91
+ stack.push(startCell);
92
+ }
93
+ while (stack.length > 0) {
94
+ const current = stack[stack.length - 1];
95
+ const neighbors = current ? this.getUnvisitedNeighbors(current) : [];
96
+ if (neighbors.length > 0) {
97
+ // Completely random neighbor selection for unpredictable maze generation
98
+ const next = neighbors[Math.floor(Math.random() * neighbors.length)];
99
+ if (current && next) this.removeWallBetween(current, next);
100
+ if (next) {
101
+ next.visited = true;
102
+ stack.push(next);
103
+ }
104
+ } else {
105
+ stack.pop();
106
+ }
107
+ }
108
+
109
+ // Only minimal simplification to ensure connectivity
110
+ this.ensureConnectivity();
111
+ }
112
+ ensureConnectivity() {
113
+ // Only ensure basic connectivity without creating obvious paths
114
+ // Check if there's a path from start to end using BFS
115
+ if (!this.hasPathFromStartToEnd()) {
116
+ // If no path exists, create minimal connections
117
+ this.createMinimalPath();
118
+ }
119
+ }
120
+ hasPathFromStartToEnd() {
121
+ // Use BFS to check if there's a path from start (0,0) to end (GRID_SIZE-1, GRID_SIZE-1)
122
+ const visited = Array(this.gameConfig.GRID_SIZE).fill(null).map(() => Array(this.gameConfig.GRID_SIZE).fill(false));
123
+ const queue = [{
124
+ x: 0,
125
+ y: 0
126
+ }];
127
+ if (visited[0]) visited[0][0] = true;
128
+ while (queue.length > 0) {
129
+ const current = queue.shift();
130
+ if (current.x === this.gameConfig.GRID_SIZE - 1 && current.y === this.gameConfig.GRID_SIZE - 1) {
131
+ return true; // Found path to end
132
+ }
133
+
134
+ // Check all four directions
135
+ const directions = [{
136
+ dx: 0,
137
+ dy: -1,
138
+ wall: 'top'
139
+ },
140
+ // Up
141
+ {
142
+ dx: 1,
143
+ dy: 0,
144
+ wall: 'right'
145
+ },
146
+ // Right
147
+ {
148
+ dx: 0,
149
+ dy: 1,
150
+ wall: 'bottom'
151
+ },
152
+ // Down
153
+ {
154
+ dx: -1,
155
+ dy: 0,
156
+ wall: 'left'
157
+ } // Left
158
+ ];
159
+ for (const dir of directions) {
160
+ const newX = current.x + dir.dx;
161
+ const newY = current.y + dir.dy;
162
+ if (newX >= 0 && newX < this.gameConfig.GRID_SIZE && newY >= 0 && newY < this.gameConfig.GRID_SIZE && !visited[newY]?.[newX]) {
163
+ // Check if there's no wall blocking this direction
164
+ const currentCell = this.maze[current.y]?.[current.x];
165
+ if (currentCell && !currentCell.walls[dir.wall]) {
166
+ if (visited[newY]) visited[newY][newX] = true;
167
+ queue.push({
168
+ x: newX,
169
+ y: newY
170
+ });
171
+ }
172
+ }
173
+ }
174
+ }
175
+ return false; // No path found
176
+ }
177
+ createMinimalPath() {
178
+ // Create a winding, unpredictable path from start to end
179
+ // This should only be called if no path exists after maze generation
180
+ let currentX = 0;
181
+ let currentY = 0;
182
+ const endX = this.gameConfig.GRID_SIZE - 1;
183
+ const endY = this.gameConfig.GRID_SIZE - 1;
184
+ const visited = new Set();
185
+ while (currentX !== endX || currentY !== endY) {
186
+ const key = `${currentX},${currentY}`;
187
+ if (visited.has(key)) {
188
+ // Prevent infinite loops - break out and create direct path
189
+ break;
190
+ }
191
+ visited.add(key);
192
+
193
+ // Randomly choose direction, but prefer moving towards target occasionally
194
+ const possibleMoves = [];
195
+ if (currentX < endX) possibleMoves.push('right');
196
+ if (currentY < endY) possibleMoves.push('down');
197
+ if (currentX > 0) possibleMoves.push('left');
198
+ if (currentY > 0) possibleMoves.push('up');
199
+ if (possibleMoves.length === 0) break;
200
+
201
+ // 60% chance to move towards target, 40% chance random direction
202
+ let direction;
203
+ if (Math.random() < 0.6 && (currentX !== endX || currentY !== endY)) {
204
+ // Move towards target
205
+ if (currentX < endX && Math.random() < 0.5) {
206
+ direction = 'right';
207
+ } else if (currentY < endY) {
208
+ direction = 'down';
209
+ } else if (currentX < endX) {
210
+ direction = 'right';
211
+ } else {
212
+ direction = possibleMoves[Math.floor(Math.random() * possibleMoves.length)];
213
+ }
214
+ } else {
215
+ // Random direction
216
+ direction = possibleMoves[Math.floor(Math.random() * possibleMoves.length)];
217
+ }
218
+
219
+ // Remove wall in chosen direction
220
+ const cell = this.maze[currentY]?.[currentX];
221
+ if (direction === 'right' && currentX < this.gameConfig.GRID_SIZE - 1 && cell) {
222
+ cell.walls.right = false;
223
+ const rightCell = this.maze[currentY]?.[currentX + 1];
224
+ if (rightCell) rightCell.walls.left = false;
225
+ currentX++;
226
+ } else if (direction === 'down' && currentY < this.gameConfig.GRID_SIZE - 1 && cell) {
227
+ cell.walls.bottom = false;
228
+ const bottomCell = this.maze[currentY + 1]?.[currentX];
229
+ if (bottomCell) bottomCell.walls.top = false;
230
+ currentY++;
231
+ } else if (direction === 'left' && currentX > 0 && cell) {
232
+ cell.walls.left = false;
233
+ const leftCell = this.maze[currentY]?.[currentX - 1];
234
+ if (leftCell) leftCell.walls.right = false;
235
+ currentX--;
236
+ } else if (direction === 'up' && currentY > 0 && cell) {
237
+ cell.walls.top = false;
238
+ const topCell = this.maze[currentY - 1]?.[currentX];
239
+ if (topCell) topCell.walls.bottom = false;
240
+ currentY--;
241
+ }
242
+ }
243
+ }
244
+ getUnvisitedNeighbors(cell) {
245
+ const neighbors = [];
246
+ const {
247
+ x,
248
+ y
249
+ } = cell;
250
+
251
+ // Top
252
+ if (y > 0 && this.maze[y - 1]?.[x] && !this.maze[y - 1]?.[x]?.visited) {
253
+ const topCell = this.maze[y - 1]?.[x];
254
+ if (topCell) {
255
+ neighbors.push(topCell);
256
+ }
257
+ }
258
+ // Right
259
+ if (x < this.gameConfig.GRID_SIZE - 1 && this.maze[y]?.[x + 1] && !this.maze[y]?.[x + 1]?.visited) {
260
+ const rightCell = this.maze[y]?.[x + 1];
261
+ if (rightCell) {
262
+ neighbors.push(rightCell);
263
+ }
264
+ }
265
+ // Bottom
266
+ if (y < this.gameConfig.GRID_SIZE - 1 && this.maze[y + 1]?.[x] && !this.maze[y + 1]?.[x]?.visited) {
267
+ const bottomCell = this.maze[y + 1]?.[x];
268
+ if (bottomCell) {
269
+ neighbors.push(bottomCell);
270
+ }
271
+ }
272
+ // Left
273
+ if (x > 0 && this.maze[y]?.[x - 1] && !this.maze[y]?.[x - 1]?.visited) {
274
+ const leftCell = this.maze[y]?.[x - 1];
275
+ if (leftCell) {
276
+ neighbors.push(leftCell);
277
+ }
278
+ }
279
+ return neighbors;
280
+ }
281
+ removeWallBetween(current, next) {
282
+ const dx = current.x - next.x;
283
+ const dy = current.y - next.y;
284
+ if (dx === 1) {
285
+ // Next is to the left
286
+ current.walls.left = false;
287
+ next.walls.right = false;
288
+ } else if (dx === -1) {
289
+ // Next is to the right
290
+ current.walls.right = false;
291
+ next.walls.left = false;
292
+ } else if (dy === 1) {
293
+ // Next is above
294
+ current.walls.top = false;
295
+ next.walls.bottom = false;
296
+ } else if (dy === -1) {
297
+ // Next is below
298
+ current.walls.bottom = false;
299
+ next.walls.top = false;
300
+ }
301
+ }
302
+ generateWalls() {
303
+ this.walls = [];
304
+ const wallThickness = 4;
305
+ const cellSize = this.gameConfig.CELL_SIZE;
306
+ const mazeWidth = this.gameConfig.GRID_SIZE * cellSize;
307
+ const mazeHeight = this.gameConfig.GRID_SIZE * cellSize;
308
+
309
+ // Create outer boundary walls (solid perimeter around the maze area)
310
+ // Top boundary
311
+ this.walls.push({
312
+ x: 0,
313
+ y: 0,
314
+ width: mazeWidth,
315
+ height: wallThickness,
316
+ type: 'horizontal'
317
+ });
318
+
319
+ // Bottom boundary
320
+ this.walls.push({
321
+ x: 0,
322
+ y: mazeHeight - wallThickness,
323
+ width: mazeWidth,
324
+ height: wallThickness,
325
+ type: 'horizontal'
326
+ });
327
+
328
+ // Left boundary
329
+ this.walls.push({
330
+ x: 0,
331
+ y: 0,
332
+ width: wallThickness,
333
+ height: mazeHeight,
334
+ type: 'vertical'
335
+ });
336
+
337
+ // Right boundary
338
+ this.walls.push({
339
+ x: mazeWidth - wallThickness,
340
+ y: 0,
341
+ width: wallThickness,
342
+ height: mazeHeight,
343
+ type: 'vertical'
344
+ });
345
+
346
+ // Generate internal walls based on maze cells
347
+ // Only add walls where they are needed to avoid duplicates
348
+ for (let y = 0; y < this.gameConfig.GRID_SIZE; y++) {
349
+ for (let x = 0; x < this.gameConfig.GRID_SIZE; x++) {
350
+ const cell = this.maze[y]?.[x];
351
+ if (!cell) continue;
352
+ const cellX = x * cellSize;
353
+ const cellY = y * cellSize;
354
+
355
+ // Add horizontal walls (only add each wall once)
356
+ // Add top wall if this cell has a top wall and we're not at the top edge
357
+ if (cell.walls.top && y > 0) {
358
+ this.walls.push({
359
+ x: cellX,
360
+ y: cellY,
361
+ width: cellSize,
362
+ height: wallThickness,
363
+ type: 'horizontal'
364
+ });
365
+ }
366
+
367
+ // Add vertical walls (only add each wall once)
368
+ // Add left wall if this cell has a left wall and we're not at the left edge
369
+ if (cell.walls.left && x > 0) {
370
+ this.walls.push({
371
+ x: cellX,
372
+ y: cellY,
373
+ width: wallThickness,
374
+ height: cellSize,
375
+ type: 'vertical'
376
+ });
377
+ }
378
+ }
379
+ }
380
+ }
381
+ setStartAndEndPositions() {
382
+ const cellSize = this.gameConfig.CELL_SIZE;
383
+
384
+ // Start position (top-left)
385
+ this.gameState.ballPosition = {
386
+ x: cellSize / 2,
387
+ y: cellSize / 2
388
+ };
389
+
390
+ // End position (bottom-right)
391
+ this.gameState.targetPosition = {
392
+ x: (this.gameConfig.GRID_SIZE - 1) * cellSize + cellSize / 2,
393
+ y: (this.gameConfig.GRID_SIZE - 1) * cellSize + cellSize / 2
394
+ };
395
+ }
396
+ updateSettings(gridSize, _gameDuration) {
397
+ // Update game configuration with new settings
398
+ const gameAreaWidth = this.gameConfig.GAME_AREA_WIDTH;
399
+ const gameAreaHeight = this.gameConfig.GAME_AREA_HEIGHT;
400
+ this.gameConfig.GRID_SIZE = gridSize;
401
+ this.gameConfig.CELL_SIZE = Math.min(gameAreaWidth, gameAreaHeight) / gridSize;
402
+
403
+ // Generate new maze with updated settings
404
+ this.generateNewMaze();
405
+
406
+ // Reset game state
407
+ this.gameState.isPlaying = false;
408
+ this.gameState.isPaused = false;
409
+ this.gameState.timeElapsed = 0;
410
+ this.gameState.isCompleted = false;
411
+ this.stopTimer();
412
+ this.notifyGameStateChange();
413
+ }
414
+ resetGame() {
415
+ // Generate a completely new maze for fresh gameplay
416
+ this.generateNewMaze();
417
+
418
+ // Reset game state without starting - just prepare for a new game
419
+ this.gameState.isPlaying = false; // Don't auto-start
420
+ this.gameState.isPaused = false;
421
+ this.gameState.timeElapsed = 0;
422
+ this.gameState.isCompleted = false;
423
+ this.stopTimer(); // Make sure timer is stopped
424
+ this.notifyGameStateChange();
425
+ }
426
+ startGame() {
427
+ // Start the game with current maze (don't regenerate here since resetGame already did)
428
+ this.gameState.ballPosition = {
429
+ x: this.gameConfig.CELL_SIZE / 2,
430
+ y: this.gameConfig.CELL_SIZE / 2
431
+ };
432
+ this.gameState.targetPosition = {
433
+ x: (this.gameConfig.GRID_SIZE - 1) * this.gameConfig.CELL_SIZE + this.gameConfig.CELL_SIZE / 2,
434
+ y: (this.gameConfig.GRID_SIZE - 1) * this.gameConfig.CELL_SIZE + this.gameConfig.CELL_SIZE / 2
435
+ };
436
+ this.gameState.isPlaying = true;
437
+ this.gameState.isPaused = false;
438
+ this.gameState.timeElapsed = 0;
439
+ this.gameState.isCompleted = false;
440
+ this.startTimer();
441
+ this.notifyGameStateChange();
442
+ }
443
+ pauseGame() {
444
+ this.gameState.isPaused = true;
445
+ this.stopTimer();
446
+ this.notifyGameStateChange();
447
+ }
448
+ resumeGame() {
449
+ this.gameState.isPaused = false;
450
+ this.startTimer();
451
+ this.notifyGameStateChange();
452
+ }
453
+ stopGame() {
454
+ this.gameState.isPlaying = false;
455
+ this.gameState.isPaused = false;
456
+ this.stopTimer();
457
+ this.notifyGameStateChange();
458
+ }
459
+ startTimer() {
460
+ this.stopTimer();
461
+ this.gameTimer = setInterval(() => {
462
+ if (!this.gameState.isPaused && this.gameState.isPlaying) {
463
+ this.gameState.timeElapsed += 1;
464
+ this.notifyGameStateChange();
465
+ }
466
+ }, 1000);
467
+ }
468
+ stopTimer() {
469
+ if (this.gameTimer) {
470
+ clearInterval(this.gameTimer);
471
+ this.gameTimer = null;
472
+ }
473
+ }
474
+ updateBallPosition(newPosition) {
475
+ if (!this.gameState.isPlaying || this.gameState.isPaused) {
476
+ return false;
477
+ }
478
+
479
+ // Check if the new position is valid (within maze path)
480
+ if (this.isValidPosition(newPosition)) {
481
+ this.gameState.ballPosition = newPosition;
482
+
483
+ // Check if reached target (only if not already completed)
484
+ if (!this.gameState.isCompleted && this.isNearTarget(newPosition)) {
485
+ this.completeLevel();
486
+ }
487
+ this.notifyGameStateChange();
488
+ return true;
489
+ }
490
+ return false;
491
+ }
492
+ isValidPosition(position) {
493
+ const {
494
+ x,
495
+ y
496
+ } = position;
497
+ const ballRadius = this.gameConfig.BALL_SIZE / 2;
498
+
499
+ // Check if ball would collide with any wall
500
+ for (const wall of this.walls) {
501
+ if (this.ballCollidesWithWall(x, y, ballRadius, wall)) {
502
+ return false;
503
+ }
504
+ }
505
+
506
+ // Check game area boundaries (with some padding)
507
+ const padding = ballRadius + 2;
508
+ if (x - ballRadius < padding || x + ballRadius > this.gameConfig.GAME_AREA_WIDTH - padding || y - ballRadius < padding || y + ballRadius > this.gameConfig.GAME_AREA_HEIGHT - padding) {
509
+ return false;
510
+ }
511
+ return true;
512
+ }
513
+ ballCollidesWithWall(ballX, ballY, ballRadius, wall) {
514
+ // Calculate the closest point on the wall rectangle to the ball center
515
+ const closestX = Math.max(wall.x, Math.min(ballX, wall.x + wall.width));
516
+ const closestY = Math.max(wall.y, Math.min(ballY, wall.y + wall.height));
517
+
518
+ // Calculate the distance from the ball center to this closest point
519
+ const distanceX = ballX - closestX;
520
+ const distanceY = ballY - closestY;
521
+ const distanceSquared = distanceX * distanceX + distanceY * distanceY;
522
+
523
+ // Check if the distance is less than the ball radius
524
+ return distanceSquared < ballRadius * ballRadius;
525
+ }
526
+ isNearTarget(position) {
527
+ const distance = Math.sqrt(Math.pow(position.x - this.gameState.targetPosition.x, 2) + Math.pow(position.y - this.gameState.targetPosition.y, 2));
528
+ return distance < this.gameConfig.BALL_SIZE;
529
+ }
530
+ completeLevel() {
531
+ const timeBonus = Math.max(0, 60 - this.gameState.timeElapsed) * this.gameConfig.TIME_BONUS_MULTIPLIER;
532
+ this.gameState.score += this.gameConfig.SCORE_PER_COMPLETION + timeBonus;
533
+ this.gameState.isCompleted = true;
534
+ this.gameState.isPlaying = false; // Stop the game when maze is completed
535
+ this.stopTimer();
536
+ this.notifyGameStateChange();
537
+ }
538
+ getGameState() {
539
+ return {
540
+ ...this.gameState
541
+ };
542
+ }
543
+ getGameConfig() {
544
+ return {
545
+ ...this.gameConfig
546
+ };
547
+ }
548
+ getWalls() {
549
+ return [...this.walls];
550
+ }
551
+ getMaze() {
552
+ return this.maze.map(row => row.map(cell => ({
553
+ ...cell
554
+ })));
555
+ }
556
+ cleanup() {
557
+ this.stopTimer();
558
+ }
559
+ }
560
+ //# sourceMappingURL=MazeRunnerService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MazeRunnerService","gameTimer","constructor","gridSize","gameAreaWidth","gameAreaHeight","gameConfig","GRID_SIZE","CELL_SIZE","Math","min","BALL_SIZE","PIPE_WIDTH","GAME_AREA_WIDTH","GAME_AREA_HEIGHT","COLLISION_TOLERANCE","SCORE_PER_COMPLETION","TIME_BONUS_MULTIPLIER","gameState","isPlaying","isPaused","score","timeElapsed","ballPosition","x","y","targetPosition","isCompleted","maze","walls","initializeMaze","generateMazeWithBacktracking","generateWalls","setStartAndEndPositions","setGameStateChangeCallback","callback","onGameStateChange","notifyGameStateChange","top","right","bottom","left","visited","generateNewMaze","stack","startCell","push","length","current","neighbors","getUnvisitedNeighbors","next","floor","random","removeWallBetween","pop","ensureConnectivity","hasPathFromStartToEnd","createMinimalPath","Array","fill","map","queue","shift","directions","dx","dy","wall","dir","newX","newY","currentCell","currentX","currentY","endX","endY","Set","key","has","add","possibleMoves","direction","cell","rightCell","bottomCell","leftCell","topCell","wallThickness","cellSize","mazeWidth","mazeHeight","width","height","type","cellX","cellY","updateSettings","_gameDuration","stopTimer","resetGame","startGame","startTimer","pauseGame","resumeGame","stopGame","setInterval","clearInterval","updateBallPosition","newPosition","isValidPosition","isNearTarget","completeLevel","position","ballRadius","ballCollidesWithWall","padding","ballX","ballY","closestX","max","closestY","distanceX","distanceY","distanceSquared","distance","sqrt","pow","timeBonus","getGameState","getGameConfig","getWalls","getMaze","row","cleanup"],"sourceRoot":"../../../../src","sources":["games/maze-runner/MazeRunnerService.ts"],"mappings":"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","ignoreList":[]}