react-native-games 0.4.0 → 0.6.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 (281) hide show
  1. package/README.md +121 -130
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +121 -422
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +30 -31
  5. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -1
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +52 -124
  7. package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -1
  8. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +12 -1
  9. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -1
  10. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +102 -75
  11. package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -1
  12. package/lib/module/games/balloon-blaster/components/GameArea.js +139 -30
  13. package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
  14. package/lib/module/games/balloon-blaster/components/GameBackground.js +2 -2
  15. package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -1
  16. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +7 -6
  17. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  18. package/lib/module/games/balloon-blaster/components/index.js +0 -3
  19. package/lib/module/games/balloon-blaster/components/index.js.map +1 -1
  20. package/lib/module/games/fruit-ninja/FruitNinja.js +93 -376
  21. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  22. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +19 -22
  23. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -1
  24. package/lib/module/games/fruit-ninja/FruitNinjaService.js +25 -8
  25. package/lib/module/games/fruit-ninja/FruitNinjaService.js.map +1 -1
  26. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +29 -4
  27. package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -1
  28. package/lib/module/games/fruit-ninja/components/GameArea.js +194 -29
  29. package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -1
  30. package/lib/module/games/fruit-ninja/components/GameBackground.js +107 -190
  31. package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -1
  32. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +9 -30
  33. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
  34. package/lib/module/games/fruit-ninja/components/index.js +0 -3
  35. package/lib/module/games/fruit-ninja/components/index.js.map +1 -1
  36. package/lib/module/games/maze-runner/MazeRunner.js +106 -109
  37. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  38. package/lib/module/games/maze-runner/MazeRunnerConstants.js +19 -24
  39. package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -1
  40. package/lib/module/games/maze-runner/MazeRunnerService.js +2 -1
  41. package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -1
  42. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +5 -4
  43. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js.map +1 -1
  44. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +32 -15
  45. package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -1
  46. package/lib/module/games/maze-runner/components/ScoreBoard.js +8 -3
  47. package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
  48. package/lib/module/games/maze-runner/components/WallComponent.js +3 -2
  49. package/lib/module/games/maze-runner/components/WallComponent.js.map +1 -1
  50. package/lib/module/games/maze-runner/components/index.js +0 -1
  51. package/lib/module/games/maze-runner/components/index.js.map +1 -1
  52. package/lib/module/games/popit-fidget/PopitFidget.js +113 -112
  53. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  54. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +20 -23
  55. package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -1
  56. package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -59
  57. package/lib/module/games/popit-fidget/PopitFidgetService.js.map +1 -1
  58. package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -27
  59. package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -1
  60. package/lib/module/games/popit-fidget/components/BubbleComponent.js +24 -22
  61. package/lib/module/games/popit-fidget/components/BubbleComponent.js.map +1 -1
  62. package/lib/module/games/popit-fidget/components/GameBackground.js +4 -1
  63. package/lib/module/games/popit-fidget/components/GameBackground.js.map +1 -1
  64. package/lib/module/games/popit-fidget/components/ScoreBoard.js +9 -2
  65. package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -1
  66. package/lib/module/games/popit-fidget/components/index.js +0 -2
  67. package/lib/module/games/popit-fidget/components/index.js.map +1 -1
  68. package/lib/module/games/space-fighter/SpaceFighter.js +121 -369
  69. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  70. package/lib/module/games/space-fighter/SpaceFighterConstants.js +21 -23
  71. package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -1
  72. package/lib/module/games/space-fighter/SpaceFighterService.js +30 -11
  73. package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -1
  74. package/lib/module/games/space-fighter/SpaceFighterStore.js +54 -2
  75. package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -1
  76. package/lib/module/games/space-fighter/components/AsteroidComponent.js +7 -5
  77. package/lib/module/games/space-fighter/components/AsteroidComponent.js.map +1 -1
  78. package/lib/module/games/space-fighter/components/GameArea.js +234 -14
  79. package/lib/module/games/space-fighter/components/GameArea.js.map +1 -1
  80. package/lib/module/games/space-fighter/components/GameBackground.js +10 -65
  81. package/lib/module/games/space-fighter/components/GameBackground.js.map +1 -1
  82. package/lib/module/games/space-fighter/components/ScoreBoard.js +9 -7
  83. package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -1
  84. package/lib/module/games/space-fighter/components/Spacecraft3D.js +90 -250
  85. package/lib/module/games/space-fighter/components/Spacecraft3D.js.map +1 -1
  86. package/lib/module/games/space-fighter/components/SpacecraftPath.js +42 -27
  87. package/lib/module/games/space-fighter/components/SpacecraftPath.js.map +1 -1
  88. package/lib/module/games/space-fighter/components/index.js +0 -3
  89. package/lib/module/games/space-fighter/components/index.js.map +1 -1
  90. package/lib/module/games/whack-a-mole/WhackAMole.js +63 -73
  91. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  92. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +17 -19
  93. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -1
  94. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +20 -7
  95. package/lib/module/games/whack-a-mole/WhackAMoleStore.js.map +1 -1
  96. package/lib/module/games/whack-a-mole/components/GameHole.js +2 -2
  97. package/lib/module/games/whack-a-mole/components/GameHole.js.map +1 -1
  98. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +5 -1
  99. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
  100. package/lib/module/games/whack-a-mole/components/index.js +0 -1
  101. package/lib/module/games/whack-a-mole/components/index.js.map +1 -1
  102. package/lib/module/services/GamesConstants.js +13 -21
  103. package/lib/module/services/GamesConstants.js.map +1 -1
  104. package/lib/module/services/GamesService.js +30 -26
  105. package/lib/module/services/GamesService.js.map +1 -1
  106. package/lib/module/services/SoundsService.js +21 -21
  107. package/lib/module/shared/helpers/AnimationFrame.js +120 -0
  108. package/lib/module/shared/helpers/AnimationFrame.js.map +1 -0
  109. package/lib/module/shared/helpers/AnimationTracker.js +89 -0
  110. package/lib/module/shared/helpers/AnimationTracker.js.map +1 -0
  111. package/lib/module/shared/helpers/ErrorHandler.js +269 -0
  112. package/lib/module/shared/helpers/ErrorHandler.js.map +1 -0
  113. package/lib/module/shared/helpers/GameControlButton.js +67 -58
  114. package/lib/module/shared/helpers/GameControlButton.js.map +1 -1
  115. package/lib/module/{games/whack-a-mole/components → shared/helpers}/GameOverModal.js +23 -13
  116. package/lib/module/shared/helpers/GameOverModal.js.map +1 -0
  117. package/lib/module/shared/helpers/GameSettingsModal.js +287 -0
  118. package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -0
  119. package/lib/module/shared/helpers/ParticleBlast.js +133 -0
  120. package/lib/module/shared/helpers/ParticleBlast.js.map +1 -0
  121. package/lib/module/shared/helpers/index.js +7 -0
  122. package/lib/module/shared/helpers/index.js.map +1 -1
  123. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +2 -14
  124. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  125. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +10 -9
  126. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts.map +1 -1
  127. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -2
  128. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -1
  129. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -1
  130. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -1
  131. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +1 -15
  132. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -1
  133. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -1
  134. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +1 -7
  135. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  136. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +0 -3
  137. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -1
  138. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +2 -14
  139. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  140. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +5 -5
  141. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts.map +1 -1
  142. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +8 -0
  143. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts.map +1 -1
  144. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +1 -0
  145. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts.map +1 -1
  146. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +1 -15
  147. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts.map +1 -1
  148. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -1
  149. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +1 -7
  150. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
  151. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts +0 -3
  152. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts.map +1 -1
  153. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +2 -8
  154. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  155. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +4 -4
  156. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts.map +1 -1
  157. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -1
  158. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts.map +1 -1
  159. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -1
  160. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
  161. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts.map +1 -1
  162. package/lib/typescript/src/games/maze-runner/components/index.d.ts +0 -1
  163. package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -1
  164. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +2 -8
  165. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  166. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +4 -4
  167. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts.map +1 -1
  168. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -21
  169. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts.map +1 -1
  170. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +1 -5
  171. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -1
  172. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts.map +1 -1
  173. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts +2 -2
  174. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts.map +1 -1
  175. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +2 -2
  176. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -1
  177. package/lib/typescript/src/games/popit-fidget/components/index.d.ts +0 -2
  178. package/lib/typescript/src/games/popit-fidget/components/index.d.ts.map +1 -1
  179. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +3 -8
  180. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  181. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +4 -4
  182. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts.map +1 -1
  183. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -1
  184. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -1
  185. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -1
  186. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts.map +1 -1
  187. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +1 -15
  188. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -1
  189. package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts.map +1 -1
  190. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +1 -6
  191. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -1
  192. package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts.map +1 -1
  193. package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts.map +1 -1
  194. package/lib/typescript/src/games/space-fighter/components/index.d.ts +0 -3
  195. package/lib/typescript/src/games/space-fighter/components/index.d.ts.map +1 -1
  196. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +2 -11
  197. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  198. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +2 -2
  199. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts.map +1 -1
  200. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts.map +1 -1
  201. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts +0 -1
  202. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts.map +1 -1
  203. package/lib/typescript/src/services/GamesConstants.d.ts +47 -38
  204. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  205. package/lib/typescript/src/services/GamesService.d.ts +20 -3
  206. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  207. package/lib/typescript/src/services/SoundsService.d.ts +20 -20
  208. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts +41 -0
  209. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +1 -0
  210. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts +45 -0
  211. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +1 -0
  212. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts +124 -0
  213. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +1 -0
  214. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +1 -1
  215. package/lib/typescript/src/{games/balloon-blaster/components → shared/helpers}/GameOverModal.d.ts +5 -0
  216. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -0
  217. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts +9 -0
  218. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +1 -0
  219. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts +12 -0
  220. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -0
  221. package/lib/typescript/src/shared/helpers/index.d.ts +9 -0
  222. package/lib/typescript/src/shared/helpers/index.d.ts.map +1 -1
  223. package/package.json +2 -2
  224. package/lib/module/games/balloon-blaster/components/GameOverModal.js +0 -133
  225. package/lib/module/games/balloon-blaster/components/GameOverModal.js.map +0 -1
  226. package/lib/module/games/balloon-blaster/components/ParticleSystem.js +0 -55
  227. package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +0 -1
  228. package/lib/module/games/balloon-blaster/components/SliceTrail.js +0 -58
  229. package/lib/module/games/balloon-blaster/components/SliceTrail.js.map +0 -1
  230. package/lib/module/games/fruit-ninja/components/GameOverModal.js +0 -189
  231. package/lib/module/games/fruit-ninja/components/GameOverModal.js.map +0 -1
  232. package/lib/module/games/fruit-ninja/components/ParticleSystem.js +0 -52
  233. package/lib/module/games/fruit-ninja/components/ParticleSystem.js.map +0 -1
  234. package/lib/module/games/fruit-ninja/components/SliceTrail.js +0 -58
  235. package/lib/module/games/fruit-ninja/components/SliceTrail.js.map +0 -1
  236. package/lib/module/games/maze-runner/components/GameOverModal.js +0 -134
  237. package/lib/module/games/maze-runner/components/GameOverModal.js.map +0 -1
  238. package/lib/module/games/popit-fidget/components/GameOverModal.js +0 -132
  239. package/lib/module/games/popit-fidget/components/GameOverModal.js.map +0 -1
  240. package/lib/module/games/popit-fidget/components/ParticleSystem.js +0 -89
  241. package/lib/module/games/popit-fidget/components/ParticleSystem.js.map +0 -1
  242. package/lib/module/games/space-fighter/components/GameOverModal.js +0 -182
  243. package/lib/module/games/space-fighter/components/GameOverModal.js.map +0 -1
  244. package/lib/module/games/space-fighter/components/ParticleComponent.js +0 -34
  245. package/lib/module/games/space-fighter/components/ParticleComponent.js.map +0 -1
  246. package/lib/module/games/space-fighter/components/SettingsModal.js +0 -222
  247. package/lib/module/games/space-fighter/components/SettingsModal.js.map +0 -1
  248. package/lib/module/games/whack-a-mole/components/GameOverModal.js.map +0 -1
  249. package/lib/module/shared/settings/GameSettings.js +0 -295
  250. package/lib/module/shared/settings/GameSettings.js.map +0 -1
  251. package/lib/module/shared/settings/SettingsService.js +0 -125
  252. package/lib/module/shared/settings/SettingsService.js.map +0 -1
  253. package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts.map +0 -1
  254. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts +0 -8
  255. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +0 -1
  256. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts +0 -11
  257. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts.map +0 -1
  258. package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts +0 -9
  259. package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts.map +0 -1
  260. package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts +0 -8
  261. package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts.map +0 -1
  262. package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts +0 -11
  263. package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts.map +0 -1
  264. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts +0 -11
  265. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts.map +0 -1
  266. package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts +0 -9
  267. package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts.map +0 -1
  268. package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts +0 -9
  269. package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts.map +0 -1
  270. package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts +0 -9
  271. package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts.map +0 -1
  272. package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts +0 -8
  273. package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts.map +0 -1
  274. package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts +0 -9
  275. package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts.map +0 -1
  276. package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts +0 -9
  277. package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts.map +0 -1
  278. package/lib/typescript/src/shared/settings/GameSettings.d.ts +0 -36
  279. package/lib/typescript/src/shared/settings/GameSettings.d.ts.map +0 -1
  280. package/lib/typescript/src/shared/settings/SettingsService.d.ts +0 -33
  281. package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +0 -1
@@ -20,7 +20,7 @@ export const FRUIT_NINJA_GAME_CONFIG = {
20
20
  SLICE_TRAIL_WIDTH: 8,
21
21
  COMBO_TIMEOUT: 2000,
22
22
  // ms
23
- PARTICLE_COUNT: 8,
23
+ PARTICLE_COUNT: 6,
24
24
  PARTICLE_LIFETIME: 1000 // ms
25
25
  };
26
26
  export const FRUIT_NINJA_ANIMATION_CONFIG = {
@@ -116,36 +116,33 @@ export const FRUIT_SPECIAL_ITEMS = [{
116
116
  isFreeze: true
117
117
  }];
118
118
 
119
- // Fruit Ninja Game Theme
119
+ // Fruit Ninja Game Theme - Matches scoreboard forest green
120
120
  export const FRUIT_NINJA_THEME = {
121
121
  backgroundColor: '#87CEEB',
122
- // Sky blue
123
- headerBackgroundColor: 'rgba(20, 83, 45, 0.8)',
124
- // Green with transparency
122
+ // Sky blue background
123
+ headerBackgroundColor: 'rgba(34, 139, 34, 0.9)',
124
+ // Forest green header to match scoreboard
125
125
  headerTextColor: '#ffffff',
126
- sectionBackgroundColor: 'rgba(255, 255, 255, 0.2)',
127
- sectionTitleColor: '#1f2937',
128
- // Dark gray
129
- buttonSelectedColor: '#22c55e',
130
- // Green
126
+ sectionBackgroundColor: 'rgba(34, 139, 34, 0.3)',
127
+ // Match scoreboard transparency
128
+ sectionTitleColor: '#ffffff',
129
+ // White text on green sections
130
+ buttonSelectedColor: '#166534',
131
+ // Darker green for better contrast
131
132
  buttonUnselectedColor: 'rgba(255, 255, 255, 0.3)',
132
133
  buttonSelectedTextColor: '#ffffff',
133
134
  buttonUnselectedTextColor: '#1f2937',
134
- switchTrackColorFalse: '#16a34a',
135
- switchTrackColorTrue: '#22c55e',
136
- switchThumbColor: '#fbbf24',
137
- // Amber
138
- infoTextColor: '#374151',
139
- // Gray
140
- resetButtonColor: '#ef4444',
141
- // Red
142
- resetButtonTextColor: '#ffffff'
135
+ switchTrackColorFalse: 'rgba(34, 139, 34, 0.5)',
136
+ switchTrackColorTrue: '#166534',
137
+ // Darker green for better contrast
138
+ switchThumbColor: '#ffffff',
139
+ infoTextColor: '#1f2937' // Dark text for readability
143
140
  };
144
141
 
145
142
  // Fruit Ninja Difficulty Descriptions
146
143
  export const FRUIT_NINJA_DIFFICULTY_DESCRIPTIONS = {
147
- easy: '60 seconds, fruits spawn slower',
148
- medium: '120 seconds, balanced gameplay',
149
- hard: '180 seconds, fast fruits, quick reflexes needed!'
144
+ easy: 'Fruits spawn slower, more forgiving',
145
+ medium: 'Balanced gameplay and fruit speed',
146
+ hard: 'Fast fruits, quick reflexes needed!'
150
147
  };
151
148
  //# sourceMappingURL=FruitNinjaConstants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["FRUIT_NINJA_GAME_CONFIG","GAME_DURATION","MAX_LIVES","FRUIT_SPAWN_INTERVAL","FRUIT_FALL_SPEED","GRAVITY","INITIAL_VELOCITY_Y","INITIAL_VELOCITY_X_RANGE","FRUIT_SIZE","SLICE_TRAIL_LENGTH","SLICE_TRAIL_WIDTH","COMBO_TIMEOUT","PARTICLE_COUNT","PARTICLE_LIFETIME","FRUIT_NINJA_ANIMATION_CONFIG","FRUIT_SPRING","damping","stiffness","SLICE_SPRING","PARTICLE_SPRING","FRUIT_NINJA_COLORS","BACKGROUND","SCORE_BOARD","SLICE_TRAIL","PARTICLE_COLORS","PARTICLE_GLOW","COMBO_TEXT","LIVES_COLOR","SCORE","UI","BUTTON_ACTIVE","BUTTON_INACTIVE","TEXT_PRIMARY","TEXT_SECONDARY","WHITE","START_BUTTON","GAME_OVER_OVERLAY","FRUIT_TYPES","emoji","points","name","FRUIT_SPECIAL_ITEMS","isBomb","isBonus","isFreeze","FRUIT_NINJA_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","resetButtonColor","resetButtonTextColor","FRUIT_NINJA_DIFFICULTY_DESCRIPTIONS","easy","medium","hard"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaConstants.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["FRUIT_NINJA_GAME_CONFIG","GAME_DURATION","MAX_LIVES","FRUIT_SPAWN_INTERVAL","FRUIT_FALL_SPEED","GRAVITY","INITIAL_VELOCITY_Y","INITIAL_VELOCITY_X_RANGE","FRUIT_SIZE","SLICE_TRAIL_LENGTH","SLICE_TRAIL_WIDTH","COMBO_TIMEOUT","PARTICLE_COUNT","PARTICLE_LIFETIME","FRUIT_NINJA_ANIMATION_CONFIG","FRUIT_SPRING","damping","stiffness","SLICE_SPRING","PARTICLE_SPRING","FRUIT_NINJA_COLORS","BACKGROUND","SCORE_BOARD","SLICE_TRAIL","PARTICLE_COLORS","PARTICLE_GLOW","COMBO_TEXT","LIVES_COLOR","SCORE","UI","BUTTON_ACTIVE","BUTTON_INACTIVE","TEXT_PRIMARY","TEXT_SECONDARY","WHITE","START_BUTTON","GAME_OVER_OVERLAY","FRUIT_TYPES","emoji","points","name","FRUIT_SPECIAL_ITEMS","isBomb","isBonus","isFreeze","FRUIT_NINJA_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","FRUIT_NINJA_DIFFICULTY_DESCRIPTIONS","easy","medium","hard"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaConstants.ts"],"mappings":";;AAEA;AACA,OAAO,MAAMA,uBAAuB,GAAG;EACrCC,aAAa,EAAE,EAAE;EAAE;EACnBC,SAAS,EAAE,CAAC;EACZC,oBAAoB,EAAE,IAAI;EAAE;EAC5BC,gBAAgB,EAAE,CAAC;EAAE;EACrBC,OAAO,EAAE,IAAI;EAAE;EACfC,kBAAkB,EAAE,CAAC,EAAE;EAAE;EACzBC,wBAAwB,EAAE,GAAG;EAAE;EAC/BC,UAAU,EAAE,EAAE;EACdC,kBAAkB,EAAE,EAAE;EACtBC,iBAAiB,EAAE,CAAC;EACpBC,aAAa,EAAE,IAAI;EAAE;EACrBC,cAAc,EAAE,CAAC;EACjBC,iBAAiB,EAAE,IAAI,CAAC;AAC1B,CAAU;AAEV,OAAO,MAAMC,4BAA4B,GAAG;EAC1CC,YAAY,EAAE;IACZC,OAAO,EAAE,EAAE;IACXC,SAAS,EAAE;EACb,CAAC;EACDC,YAAY,EAAE;IACZF,OAAO,EAAE,EAAE;IACXC,SAAS,EAAE;EACb,CAAC;EACDE,eAAe,EAAE;IACfH,OAAO,EAAE,EAAE;IACXC,SAAS,EAAE;EACb;AACF,CAAU;AAEV,OAAO,MAAMG,kBAAkB,GAAG;EAChCC,UAAU,EAAE,SAAS;EAAE;EACvBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,eAAe,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;EACnFC,aAAa,EAAE,uBAAuB;EACtCC,UAAU,EAAE,SAAS;EACrBC,WAAW,EAAE,SAAS;EACtBC,KAAK,EAAE,SAAS;EAChBC,EAAE,EAAE,SAAS;EACbC,aAAa,EAAE,SAAS;EACxBC,eAAe,EAAE,SAAS;EAC1BC,YAAY,EAAE,SAAS;EACvBC,cAAc,EAAE,SAAS;EACzBC,KAAK,EAAE,SAAS;EAChBC,YAAY,EAAE,SAAS;EACvBC,iBAAiB,EAAE;AACrB,CAAU;;AAEV;AACA,OAAO,MAAMC,WAAW,GAAG,CACzB;EAAEC,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAQ,CAAC,EAC1C;EAAEF,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAS,CAAC,EAC3C;EAAEF,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAS,CAAC,EAC3C;EAAEF,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAS,CAAC,EAC3C;EAAEF,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAO,CAAC,EACzC;EAAEF,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAa,CAAC,EAC/C;EAAEF,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAQ,CAAC,EAC1C;EAAEF,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAS,CAAC,EAC3C;EAAEF,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAW,CAAC,EAC7C;EAAEF,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE;AAAU,CAAC,CACpC;AAEV,OAAO,MAAMC,mBAAmB,GAAG,CACjC;EAAEH,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,CAAC,EAAE;EAAEC,IAAI,EAAE,MAAM;EAAEE,MAAM,EAAE;AAAK,CAAC,EACxD;EAAEJ,KAAK,EAAE,GAAG;EAAEC,MAAM,EAAE,EAAE;EAAEC,IAAI,EAAE,MAAM;EAAEG,OAAO,EAAE;AAAK,CAAC,EACvD;EAAEL,KAAK,EAAE,IAAI;EAAEC,MAAM,EAAE,CAAC;EAAEC,IAAI,EAAE,QAAQ;EAAEI,QAAQ,EAAE;AAAK,CAAC,CAClD;;AAEV;AACA,OAAO,MAAMC,iBAAoC,GAAG;EAClDC,eAAe,EAAE,SAAS;EAAE;EAC5BC,qBAAqB,EAAE,wBAAwB;EAAE;EACjDC,eAAe,EAAE,SAAS;EAC1BC,sBAAsB,EAAE,wBAAwB;EAAE;EAClDC,iBAAiB,EAAE,SAAS;EAAE;EAC9BC,mBAAmB,EAAE,SAAS;EAAE;EAChCC,qBAAqB,EAAE,0BAA0B;EACjDC,uBAAuB,EAAE,SAAS;EAClCC,yBAAyB,EAAE,SAAS;EACpCC,qBAAqB,EAAE,wBAAwB;EAC/CC,oBAAoB,EAAE,SAAS;EAAE;EACjCC,gBAAgB,EAAE,SAAS;EAC3BC,aAAa,EAAE,SAAS,CAAE;AAC5B,CAAC;;AAED;AACA,OAAO,MAAMC,mCAAmC,GAAG;EACjDC,IAAI,EAAE,qCAAqC;EAC3CC,MAAM,EAAE,mCAAmC;EAC3CC,IAAI,EAAE;AACR,CAAU","ignoreList":[]}
@@ -13,6 +13,23 @@ export { GAME_CONFIG, ANIMATION_CONFIG, COLORS, FRUIT_TYPES, SPECIAL_ITEMS };
13
13
 
14
14
  // Types
15
15
 
16
+ // Define game-specific types and constants locally
17
+
18
+ export const DEFAULT_FRUIT_NINJA_SETTINGS = {
19
+ gameDuration: 60,
20
+ // Fixed 60 seconds for all games
21
+ difficulty: 'medium',
22
+ soundEnabled: true,
23
+ hapticEnabled: true
24
+ };
25
+ export const getDifficultySpawnInterval = difficulty => {
26
+ const intervals = {
27
+ easy: 2000,
28
+ medium: 1500,
29
+ hard: 1000
30
+ };
31
+ return intervals[difficulty];
32
+ };
16
33
  export class FruitNinjaService {
17
34
  gameTimerRef = null;
18
35
  fruitSpawnRef = null;
@@ -58,6 +75,7 @@ export class FruitNinjaService {
58
75
 
59
76
  // Remove fruits that fall off screen (bottom only)
60
77
  if (newY > height + 100) {
78
+ // Fruit fell off screen without being sliced
61
79
  removeFruit(fruit.id);
62
80
  return;
63
81
  }
@@ -113,8 +131,7 @@ export class FruitNinjaService {
113
131
  this.animationRef = requestAnimationFrame(updateLoop);
114
132
  }
115
133
  createRandomFruit() {
116
- // 10% chance for special items
117
- const isSpecial = Math.random() < 0.1;
134
+ const isSpecial = Math.random() < 0.5;
118
135
  const type = isSpecial ? SPECIAL_ITEMS[Math.floor(Math.random() * SPECIAL_ITEMS.length)] : FRUIT_TYPES[Math.floor(Math.random() * FRUIT_TYPES.length)];
119
136
  if (!type) {
120
137
  // Fallback to default fruit type if undefined
@@ -139,9 +156,9 @@ export class FruitNinjaService {
139
156
  rotationSpeed: (Math.random() - 0.5) * 0.2,
140
157
  isSliced: false,
141
158
  spawnTime: Date.now(),
142
- isBomb: 'isBomb' in defaultType && Boolean(defaultType.isBomb),
143
- isBonus: 'isBonus' in defaultType && Boolean(defaultType.isBonus),
144
- isFreeze: 'isFreeze' in defaultType && Boolean(defaultType.isFreeze)
159
+ isBomb: Boolean(defaultType.isBomb),
160
+ isBonus: Boolean(defaultType.isBonus),
161
+ isFreeze: Boolean(defaultType.isFreeze)
145
162
  };
146
163
  }
147
164
 
@@ -168,9 +185,9 @@ export class FruitNinjaService {
168
185
  rotationSpeed: (Math.random() - 0.5) * 0.2,
169
186
  isSliced: false,
170
187
  spawnTime: Date.now(),
171
- isBomb: 'isBomb' in type && type.isBomb,
172
- isBonus: 'isBonus' in type && type.isBonus,
173
- isFreeze: 'isFreeze' in type && type.isFreeze
188
+ isBomb: Boolean(type.isBomb),
189
+ isBonus: Boolean(type.isBonus),
190
+ isFreeze: Boolean(type.isFreeze)
174
191
  };
175
192
  }
176
193
  createSliceParticles(fruit) {
@@ -1 +1 @@
1
- {"version":3,"names":["Dimensions","FRUIT_NINJA_GAME_CONFIG","GAME_CONFIG","FRUIT_NINJA_ANIMATION_CONFIG","ANIMATION_CONFIG","FRUIT_NINJA_COLORS","COLORS","FRUIT_TYPES","FRUIT_SPECIAL_ITEMS","SPECIAL_ITEMS","width","height","get","FruitNinjaService","gameTimerRef","fruitSpawnRef","animationRef","comboTimeoutRef","particles","constructor","fruitAnimations","particleAnimations","startGameTimer","onTick","clearGameTimer","setInterval","startFruitSpawning","spawnFruit","customSpawnInterval","clearFruitSpawn","spawnInterval","FRUIT_SPAWN_INTERVAL","spawnLoop","fruit","createRandomFruit","nextSpawnTime","Math","random","setTimeout","max","startPhysicsLoop","updateFruit","removeFruit","getFruits","updateLoop","fruits","forEach","isSliced","newVelocityY","velocity","y","GRAVITY","newX","position","x","newY","newRotation","rotation","rotationSpeed","id","newVelocityX","adjustedVelocityY","abs","FRUIT_SIZE","updateParticles","requestAnimationFrame","isSpecial","type","floor","length","defaultType","spawnX","spawnY","velocityX","INITIAL_VELOCITY_X_RANGE","velocityY","INITIAL_VELOCITY_Y","Date","now","spawnTime","isBomb","Boolean","isBonus","isFreeze","createSliceParticles","i","PARTICLE_COUNT","angle","PI","speed","push","cos","sin","color","PARTICLE_COLORS","size","lifetime","maxLifetime","PARTICLE_LIFETIME","filter","particle","getParticles","checkFruitSlice","slicePath","fruitCenter","fruitRadius","p1","p2","distance","distanceFromPointToLine","point","lineStart","lineEnd","A","B","C","D","dot","lenSq","sqrt","param","min","xx","yy","dx","dy","resetAnimations","clear","cleanup","clearAnimationLoop","clearComboTimeout","clearInterval","clearTimeout","cancelAnimationFrame","createFruitNinjaService"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaService.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Dimensions","FRUIT_NINJA_GAME_CONFIG","GAME_CONFIG","FRUIT_NINJA_ANIMATION_CONFIG","ANIMATION_CONFIG","FRUIT_NINJA_COLORS","COLORS","FRUIT_TYPES","FRUIT_SPECIAL_ITEMS","SPECIAL_ITEMS","width","height","get","DEFAULT_FRUIT_NINJA_SETTINGS","gameDuration","difficulty","soundEnabled","hapticEnabled","getDifficultySpawnInterval","intervals","easy","medium","hard","FruitNinjaService","gameTimerRef","fruitSpawnRef","animationRef","comboTimeoutRef","particles","constructor","fruitAnimations","particleAnimations","startGameTimer","onTick","clearGameTimer","setInterval","startFruitSpawning","spawnFruit","customSpawnInterval","clearFruitSpawn","spawnInterval","FRUIT_SPAWN_INTERVAL","spawnLoop","fruit","createRandomFruit","nextSpawnTime","Math","random","setTimeout","max","startPhysicsLoop","updateFruit","removeFruit","getFruits","updateLoop","fruits","forEach","isSliced","newVelocityY","velocity","y","GRAVITY","newX","position","x","newY","newRotation","rotation","rotationSpeed","id","newVelocityX","adjustedVelocityY","abs","FRUIT_SIZE","updateParticles","requestAnimationFrame","isSpecial","type","floor","length","defaultType","spawnX","spawnY","velocityX","INITIAL_VELOCITY_X_RANGE","velocityY","INITIAL_VELOCITY_Y","Date","now","spawnTime","isBomb","Boolean","isBonus","isFreeze","createSliceParticles","i","PARTICLE_COUNT","angle","PI","speed","push","cos","sin","color","PARTICLE_COLORS","size","lifetime","maxLifetime","PARTICLE_LIFETIME","filter","particle","getParticles","checkFruitSlice","slicePath","fruitCenter","fruitRadius","p1","p2","distance","distanceFromPointToLine","point","lineStart","lineEnd","A","B","C","D","dot","lenSq","sqrt","param","min","xx","yy","dx","dy","resetAnimations","clear","cleanup","clearAnimationLoop","clearComboTimeout","clearInterval","clearTimeout","cancelAnimationFrame","createFruitNinjaService"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaService.ts"],"mappings":"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","ignoreList":[]}
@@ -147,13 +147,11 @@ export const useFruitNinjaStore = create()(subscribeWithSelector(immerMiddleware
147
147
  },
148
148
  loseLife: () => {
149
149
  set(draft => {
150
- const newLives = draft.lives - 1;
150
+ const newLives = Math.max(0, draft.lives - 1);
151
+ draft.lives = newLives;
151
152
  if (newLives <= 0) {
152
- draft.lives = 0;
153
153
  draft.isPlaying = false;
154
154
  draft.gameOver = true;
155
- } else {
156
- draft.lives = newLives;
157
155
  }
158
156
  });
159
157
  },
@@ -163,4 +161,31 @@ export const useFruitNinjaStore = create()(subscribeWithSelector(immerMiddleware
163
161
  });
164
162
  }
165
163
  }))));
164
+
165
+ // Store reference to game service for cleanup
166
+ let gameServiceInstance = null;
167
+
168
+ // Function to register game service instance
169
+ export const registerGameService = gameService => {
170
+ gameServiceInstance = gameService;
171
+ };
172
+
173
+ // Automatic game cleanup when gameOver becomes true
174
+ // This replaces the cleanup logic that was previously in the FruitNinja component
175
+ useFruitNinjaStore.subscribe(state => state.gameOver, (gameOver, previousGameOver) => {
176
+ if (gameOver && !previousGameOver) {
177
+ // Game just ended, trigger automatic cleanup
178
+ setTimeout(() => {
179
+ // Stop game service to prevent new fruits from spawning
180
+ if (gameServiceInstance) {
181
+ gameServiceInstance.cleanup();
182
+ }
183
+ const state = useFruitNinjaStore.getState();
184
+ // Clear all fruits from the screen
185
+ state.fruits.forEach(fruit => {
186
+ useFruitNinjaStore.getState().removeFruit(fruit.id);
187
+ });
188
+ }, 50); // Small delay to ensure state consistency
189
+ }
190
+ });
166
191
  //# sourceMappingURL=FruitNinjaStore.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["create","subscribeWithSelector","GAME_CONFIG","immerMiddleware","useFruitNinjaStore","set","get","score","timeLeft","isPlaying","gameOver","combo","lives","MAX_LIVES","fruits","slicePath","isSlicing","startGame","_gameDuration","duration","draft","stopGame","resetGame","sliceFruit","fruitId","fruitIndex","i","length","id","isSliced","points","sliceTime","Date","now","updateScore","decrementTime","newTimeLeft","addFruit","fruit","push","removeFruit","filter","f","updateFruit","updates","Object","assign","setSlicePath","path","setIsSlicing","incrementCombo","resetCombo","loseLife","newLives","addLife","Math","min"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaStore.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["create","subscribeWithSelector","GAME_CONFIG","immerMiddleware","useFruitNinjaStore","set","get","score","timeLeft","isPlaying","gameOver","combo","lives","MAX_LIVES","fruits","slicePath","isSlicing","startGame","_gameDuration","duration","draft","stopGame","resetGame","sliceFruit","fruitId","fruitIndex","i","length","id","isSliced","points","sliceTime","Date","now","updateScore","decrementTime","newTimeLeft","addFruit","fruit","push","removeFruit","filter","f","updateFruit","updates","Object","assign","setSlicePath","path","setIsSlicing","incrementCombo","resetCombo","loseLife","newLives","Math","max","addLife","min","gameServiceInstance","registerGameService","gameService","subscribe","state","previousGameOver","setTimeout","cleanup","getState","forEach"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaStore.ts"],"mappings":"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","ignoreList":[]}
@@ -1,37 +1,203 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
3
+ import React, { useRef, useEffect, useState } from 'react';
4
4
  import { View, StyleSheet } from 'react-native';
5
+ import { runOnJS } from 'react-native-reanimated';
6
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
7
+ import { useFruitNinjaStore } from "../FruitNinjaStore.js";
8
+ import { GAME_CONFIG } from "../FruitNinjaService.js";
9
+ import { playSound, GAME_SOUNDS } from "../../../services/SoundsService.js";
10
+ import { playHaptic, HapticType } from "../../../services/HapticsService.js";
11
+ import { ParticleBlast, useAnimationTracker } from "../../../shared/helpers/index.js";
5
12
  import { FruitComponent } from "./FruitComponent.js";
6
- import { SliceTrail } from "./SliceTrail.js";
7
- import { ParticleSystem } from "./ParticleSystem.js";
8
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- export const GameArea = ({
10
- fruits,
11
- fruitAnimations,
12
- slicePath,
13
- isSlicing,
14
- particles,
15
- onFruitSlice,
16
- children
17
- }) => {
18
- return /*#__PURE__*/_jsxs(View, {
19
- style: styles.gameArea,
20
- children: [fruits.map(fruit => {
21
- const animation = fruitAnimations.get(fruit.id);
22
- return /*#__PURE__*/_jsx(FruitComponent, {
23
- fruit: fruit,
24
- animation: animation,
25
- onSlice: onFruitSlice
26
- }, fruit.id);
27
- }), /*#__PURE__*/_jsx(SliceTrail, {
28
- path: slicePath,
29
- isVisible: isSlicing
30
- }), /*#__PURE__*/_jsx(ParticleSystem, {
31
- particles: particles
32
- }), children]
14
+ export const GameArea = /*#__PURE__*/React.memo(() => {
15
+ // Read state directly from store to reduce main component re-renders
16
+ const fruits = useFruitNinjaStore(state => state.fruits);
17
+
18
+ // Get store actions
19
+ const {
20
+ sliceFruit,
21
+ removeFruit,
22
+ updateFruit,
23
+ resetCombo,
24
+ loseLife,
25
+ addLife
26
+ } = useFruitNinjaStore();
27
+
28
+ // Minimal collision detection - no visual trail needed
29
+ const lastGesturePoint = useRef(null);
30
+
31
+ // Self-contained component - no external settings needed
32
+
33
+ // Animation tracking for fruits using shared utility
34
+ const fruitAnimations = useAnimationTracker();
35
+
36
+ // State for managing active particle blasts
37
+ const [activeBlasts, setActiveBlasts] = useState([]);
38
+
39
+ // Sound and haptic feedback functions (using default enabled state)
40
+ const playSliceSound = () => {
41
+ playSound(GAME_SOUNDS.FRUIT_NINJA.SLICE, true);
42
+ playHaptic(HapticType.LIGHT, true);
43
+ };
44
+ const playBombSound = () => {
45
+ playSound(GAME_SOUNDS.FRUIT_NINJA.BOMB, true);
46
+ playHaptic(HapticType.HEAVY, true);
47
+ };
48
+
49
+ // Create blast particles using shared ParticleBlast component
50
+ const createBlastParticles = fruit => {
51
+ const blastX = fruit.position.x + GAME_CONFIG.FRUIT_SIZE / 2;
52
+ const blastY = fruit.position.y + GAME_CONFIG.FRUIT_SIZE / 2;
53
+ const blastId = `blast_${Date.now()}_${Math.random()}`;
54
+ setActiveBlasts(prev => [...prev, {
55
+ id: blastId,
56
+ x: blastX,
57
+ y: blastY
58
+ }]);
59
+ };
60
+
61
+ // Handle blast completion (remove from active blasts)
62
+ const handleBlastComplete = blastId => {
63
+ setActiveBlasts(prev => prev.filter(blast => blast.id !== blastId));
64
+ };
65
+
66
+ // Simplified gesture handling - no visual trail, just collision detection
67
+ const handleGestureStart = event => {
68
+ const currentState = useFruitNinjaStore.getState();
69
+ if (!currentState.isPlaying) return;
70
+ lastGesturePoint.current = {
71
+ x: event.x,
72
+ y: event.y
73
+ };
74
+
75
+ // Light haptic feedback on slice start
76
+ playHaptic(HapticType.LIGHT, true);
77
+ };
78
+ const handleGestureUpdate = event => {
79
+ const currentState = useFruitNinjaStore.getState();
80
+ if (!currentState.isPlaying) return;
81
+ const currentPoint = {
82
+ x: event.x,
83
+ y: event.y
84
+ };
85
+
86
+ // Check for fruit collisions with current gesture point
87
+ checkFruitCollisions(currentPoint);
88
+ lastGesturePoint.current = currentPoint;
89
+ };
90
+ const handleGestureEnd = () => {
91
+ const currentState = useFruitNinjaStore.getState();
92
+ if (!currentState.isPlaying) return;
93
+ lastGesturePoint.current = null;
94
+ };
95
+
96
+ // Create pan gesture - moved from parent
97
+ const panGesture = Gesture.Pan().onStart(event => {
98
+ runOnJS(handleGestureStart)(event);
99
+ }).onUpdate(event => {
100
+ runOnJS(handleGestureUpdate)(event);
101
+ }).onEnd(() => {
102
+ runOnJS(handleGestureEnd)();
103
+ });
104
+
105
+ // Fruit slicing logic - moved from parent
106
+ const handleFruitSlice = fruitId => {
107
+ // Double-check game state to prevent race conditions
108
+ const currentState = useFruitNinjaStore.getState();
109
+ if (!currentState.isPlaying || currentState.gameOver) return;
110
+ const fruit = currentState.fruits.find(f => f.id === fruitId);
111
+ if (!fruit || fruit.isSliced) return;
112
+
113
+ // Handle different fruit types BEFORE marking as sliced
114
+ if (fruit.isBomb) {
115
+ playBombSound();
116
+ loseLife();
117
+ resetCombo();
118
+ // Create blast particles at bomb location
119
+ createBlastParticles(fruit);
120
+ updateFruit(fruitId, {
121
+ isSliced: true
122
+ });
123
+ } else {
124
+ // Handle different fruit types with simplified mechanics
125
+ playSliceSound();
126
+ if (fruit.isBonus) {
127
+ // Star fruit - add a life instead of points
128
+ addLife();
129
+ playSliceSound();
130
+ // Mark star as sliced after processing
131
+ updateFruit(fruitId, {
132
+ isSliced: true
133
+ });
134
+ } else if (fruit.isFreeze) {
135
+ // Freeze fruit - slice and mark (sliceFruit handles marking)
136
+ sliceFruit(fruitId);
137
+ } else {
138
+ // Regular fruit - add 10 points (sliceFruit handles marking)
139
+ sliceFruit(fruitId);
140
+ }
141
+
142
+ // Create blast particles at fruit location
143
+ createBlastParticles(fruit);
144
+ }
145
+
146
+ // Remove fruit after animation
147
+ setTimeout(() => {
148
+ removeFruit(fruitId);
149
+ fruitAnimations.delete(fruitId);
150
+ }, 500);
151
+ };
152
+
153
+ // Optimized collision detection with single point
154
+ const checkFruitCollisions = gesturePoint => {
155
+ const currentFruits = useFruitNinjaStore.getState().fruits;
156
+ currentFruits.forEach(fruit => {
157
+ if (!fruit.isSliced) {
158
+ // Simple distance-based collision detection
159
+ const fruitCenterX = fruit.position.x + GAME_CONFIG.FRUIT_SIZE / 2;
160
+ const fruitCenterY = fruit.position.y + GAME_CONFIG.FRUIT_SIZE / 2;
161
+ const fruitRadius = GAME_CONFIG.FRUIT_SIZE / 2;
162
+
163
+ // Check if gesture point is within fruit radius
164
+ const distance = Math.sqrt(Math.pow(gesturePoint.x - fruitCenterX, 2) + Math.pow(gesturePoint.y - fruitCenterY, 2));
165
+ if (distance <= fruitRadius) {
166
+ handleFruitSlice(fruit.id);
167
+ }
168
+ }
169
+ });
170
+ };
171
+
172
+ // Track fruit animations without shared values - moved from parent
173
+ useEffect(() => {
174
+ fruits.forEach(fruit => {
175
+ if (!fruitAnimations.has(fruit.id)) {
176
+ fruitAnimations.initialize(fruit.id);
177
+ }
178
+ });
179
+ }, [fruits, fruitAnimations]);
180
+ return /*#__PURE__*/_jsx(GestureDetector, {
181
+ gesture: panGesture,
182
+ children: /*#__PURE__*/_jsxs(View, {
183
+ style: styles.gameArea,
184
+ children: [fruits.map(fruit => {
185
+ const animation = fruitAnimations.get(fruit.id);
186
+ return /*#__PURE__*/_jsx(FruitComponent, {
187
+ fruit: fruit,
188
+ animation: animation,
189
+ onSlice: handleFruitSlice
190
+ }, fruit.id);
191
+ }), activeBlasts.map(blast => /*#__PURE__*/_jsx(ParticleBlast, {
192
+ x: blast.x,
193
+ y: blast.y,
194
+ particleCount: 8,
195
+ duration: 1000,
196
+ onComplete: () => handleBlastComplete(blast.id)
197
+ }, blast.id))]
198
+ })
33
199
  });
34
- };
200
+ });
35
201
  const styles = StyleSheet.create({
36
202
  gameArea: {
37
203
  flex: 1,
@@ -44,7 +210,6 @@ const styles = StyleSheet.create({
44
210
  left: 0,
45
211
  right: 0,
46
212
  bottom: 0
47
- // backgroundColor: '#87CEEB', // Sky blue gradient fallback
48
213
  }
49
214
  });
50
215
  //# sourceMappingURL=GameArea.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","StyleSheet","FruitComponent","SliceTrail","ParticleSystem","jsx","_jsx","jsxs","_jsxs","GameArea","fruits","fruitAnimations","slicePath","isSlicing","particles","onFruitSlice","children","style","styles","gameArea","map","fruit","animation","get","id","onSlice","path","isVisible","create","flex","position","overflow","backgroundGradient","top","left","right","bottom"],"sourceRoot":"../../../../../src","sources":["games/fruit-ninja/components/GameArea.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAE/C,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,cAAc,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYlD,OAAO,MAAMC,QAAiC,GAAGA,CAAC;EAAEC,MAAM;EAAEC,eAAe;EAAEC,SAAS;EAAEC,SAAS;EAAEC,SAAS;EAAEC,YAAY;EAAEC;AAAS,CAAC,KAAK;EACzI,oBACER,KAAA,CAACR,IAAI;IAACiB,KAAK,EAAEC,MAAM,CAACC,QAAS;IAAAH,QAAA,GAK1BN,MAAM,CAACU,GAAG,CAACC,KAAK,IAAI;MACnB,MAAMC,SAAS,GAAGX,eAAe,CAACY,GAAG,CAACF,KAAK,CAACG,EAAE,CAAC;MAE/C,oBAAOlB,IAAA,CAACJ,cAAc;QAAgBmB,KAAK,EAAEA,KAAM;QAACC,SAAS,EAAEA,SAAU;QAACG,OAAO,EAAEV;MAAa,GAApEM,KAAK,CAACG,EAAgE,CAAC;IACrG,CAAC,CAAC,eAGFlB,IAAA,CAACH,UAAU;MAACuB,IAAI,EAAEd,SAAU;MAACe,SAAS,EAAEd;IAAU,CAAE,CAAC,eAGrDP,IAAA,CAACF,cAAc;MAACU,SAAS,EAAEA;IAAU,CAAE,CAAC,EAGvCE,QAAQ;EAAA,CACL,CAAC;AAEX,CAAC;AAED,MAAME,MAAM,GAAGjB,UAAU,CAAC2B,MAAM,CAAC;EAC/BT,QAAQ,EAAE;IACRU,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,UAAU;IACpBC,QAAQ,EAAE;EACZ,CAAC;EACDC,kBAAkB,EAAE;IAClBF,QAAQ,EAAE,UAAU;IACpBG,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;IACR;EACF;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useRef","useEffect","useState","View","StyleSheet","runOnJS","Gesture","GestureDetector","useFruitNinjaStore","GAME_CONFIG","playSound","GAME_SOUNDS","playHaptic","HapticType","ParticleBlast","useAnimationTracker","FruitComponent","jsx","_jsx","jsxs","_jsxs","GameArea","memo","fruits","state","sliceFruit","removeFruit","updateFruit","resetCombo","loseLife","addLife","lastGesturePoint","fruitAnimations","activeBlasts","setActiveBlasts","playSliceSound","FRUIT_NINJA","SLICE","LIGHT","playBombSound","BOMB","HEAVY","createBlastParticles","fruit","blastX","position","x","FRUIT_SIZE","blastY","y","blastId","Date","now","Math","random","prev","id","handleBlastComplete","filter","blast","handleGestureStart","event","currentState","getState","isPlaying","current","handleGestureUpdate","currentPoint","checkFruitCollisions","handleGestureEnd","panGesture","Pan","onStart","onUpdate","onEnd","handleFruitSlice","fruitId","gameOver","find","f","isSliced","isBomb","isBonus","isFreeze","setTimeout","delete","gesturePoint","currentFruits","forEach","fruitCenterX","fruitCenterY","fruitRadius","distance","sqrt","pow","has","initialize","gesture","children","style","styles","gameArea","map","animation","get","onSlice","particleCount","duration","onComplete","create","flex","overflow","backgroundGradient","top","left","right","bottom"],"sourceRoot":"../../../../../src","sources":["games/fruit-ninja/components/GameArea.tsx"],"mappings":"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","ignoreList":[]}