react-native-games 0.3.0 → 0.4.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 (387) hide show
  1. package/README.md +45 -32
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +160 -75
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +183 -0
  5. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -0
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +152 -55
  7. package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -1
  8. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +108 -92
  9. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -1
  10. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +48 -65
  11. package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -1
  12. package/lib/module/games/balloon-blaster/components/GameArea.js +7 -2
  13. package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
  14. package/lib/module/games/balloon-blaster/components/GameBackground.js +8 -83
  15. package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -1
  16. package/lib/module/games/balloon-blaster/components/ParticleSystem.js +9 -6
  17. package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +1 -1
  18. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +8 -16
  19. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  20. package/lib/module/games/balloon-blaster/components/index.js +0 -1
  21. package/lib/module/games/balloon-blaster/components/index.js.map +1 -1
  22. package/lib/module/games/{fruit-slicer/FruitSlicer.js → fruit-ninja/FruitNinja.js} +68 -54
  23. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -0
  24. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +151 -0
  25. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -0
  26. package/lib/module/games/{fruit-slicer/FruitSlicerService.js → fruit-ninja/FruitNinjaService.js} +13 -12
  27. package/lib/module/games/fruit-ninja/FruitNinjaService.js.map +1 -0
  28. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +166 -0
  29. package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -0
  30. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/FruitComponent.js +1 -1
  31. package/lib/module/games/fruit-ninja/components/FruitComponent.js.map +1 -0
  32. package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -0
  33. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/GameBackground.js +198 -169
  34. package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -0
  35. package/lib/module/games/fruit-ninja/components/GameOverModal.js.map +1 -0
  36. package/lib/module/games/fruit-ninja/components/ParticleSystem.js.map +1 -0
  37. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/ScoreBoard.js +8 -17
  38. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -0
  39. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/SliceTrail.js +1 -1
  40. package/lib/module/games/fruit-ninja/components/SliceTrail.js.map +1 -0
  41. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/index.js +0 -1
  42. package/lib/module/games/fruit-ninja/components/index.js.map +1 -0
  43. package/lib/module/games/maze-runner/MazeRunner.js +109 -91
  44. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  45. package/lib/module/games/maze-runner/MazeRunnerConstants.js +105 -0
  46. package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -0
  47. package/lib/module/games/maze-runner/MazeRunnerService.js +37 -14
  48. package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -1
  49. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +5 -9
  50. package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -1
  51. package/lib/module/games/maze-runner/components/GameBackground.js +151 -192
  52. package/lib/module/games/maze-runner/components/GameBackground.js.map +1 -1
  53. package/lib/module/games/maze-runner/components/ScoreBoard.js +8 -23
  54. package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
  55. package/lib/module/games/maze-runner/components/index.js +0 -1
  56. package/lib/module/games/maze-runner/components/index.js.map +1 -1
  57. package/lib/module/games/popit-fidget/PopitFidget.js +293 -0
  58. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -0
  59. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +116 -0
  60. package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -0
  61. package/lib/module/games/popit-fidget/PopitFidgetService.js +191 -0
  62. package/lib/module/games/popit-fidget/PopitFidgetService.js.map +1 -0
  63. package/lib/module/games/popit-fidget/PopitFidgetStore.js +190 -0
  64. package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -0
  65. package/lib/module/games/popit-fidget/components/BubbleComponent.js +196 -0
  66. package/lib/module/games/popit-fidget/components/BubbleComponent.js.map +1 -0
  67. package/lib/module/games/popit-fidget/components/FidgetGrid.js +165 -0
  68. package/lib/module/games/popit-fidget/components/FidgetGrid.js.map +1 -0
  69. package/lib/module/games/popit-fidget/components/GameBackground.js +174 -0
  70. package/lib/module/games/popit-fidget/components/GameBackground.js.map +1 -0
  71. package/lib/module/games/popit-fidget/components/GameOverModal.js +132 -0
  72. package/lib/module/games/popit-fidget/components/GameOverModal.js.map +1 -0
  73. package/lib/module/games/popit-fidget/components/ParticleSystem.js +89 -0
  74. package/lib/module/games/popit-fidget/components/ParticleSystem.js.map +1 -0
  75. package/lib/module/games/popit-fidget/components/ScoreBoard.js +68 -0
  76. package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -0
  77. package/lib/module/games/popit-fidget/components/index.js +9 -0
  78. package/lib/module/games/popit-fidget/components/index.js.map +1 -0
  79. package/lib/module/games/{space-traveller/SpaceTraveller.js → space-fighter/SpaceFighter.js} +94 -70
  80. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -0
  81. package/lib/module/games/space-fighter/SpaceFighterConstants.js +110 -0
  82. package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -0
  83. package/lib/module/games/{space-traveller/SpaceTravellerService.js → space-fighter/SpaceFighterService.js} +18 -10
  84. package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -0
  85. package/lib/module/games/space-fighter/SpaceFighterStore.js +143 -0
  86. package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -0
  87. package/lib/module/games/space-fighter/components/AsteroidComponent.js.map +1 -0
  88. package/lib/module/games/space-fighter/components/GameArea.js.map +1 -0
  89. package/lib/module/games/space-fighter/components/GameBackground.js.map +1 -0
  90. package/lib/module/games/space-fighter/components/GameOverModal.js.map +1 -0
  91. package/lib/module/games/space-fighter/components/ParticleComponent.js.map +1 -0
  92. package/lib/module/games/{space-traveller → space-fighter}/components/ScoreBoard.js +11 -19
  93. package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -0
  94. package/lib/module/games/space-fighter/components/SettingsModal.js.map +1 -0
  95. package/lib/module/games/space-fighter/components/Spacecraft3D.js.map +1 -0
  96. package/lib/module/games/{space-traveller → space-fighter}/components/SpacecraftPath.js +1 -1
  97. package/lib/module/games/space-fighter/components/SpacecraftPath.js.map +1 -0
  98. package/lib/module/games/{space-traveller → space-fighter}/components/index.js +0 -1
  99. package/lib/module/games/space-fighter/components/index.js.map +1 -0
  100. package/lib/module/games/whack-a-mole/WhackAMole.js +273 -0
  101. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -0
  102. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +117 -0
  103. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -0
  104. package/lib/module/games/whack-a-mole/WhackAMoleService.js +120 -0
  105. package/lib/module/games/whack-a-mole/WhackAMoleService.js.map +1 -0
  106. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +159 -0
  107. package/lib/module/games/whack-a-mole/WhackAMoleStore.js.map +1 -0
  108. package/lib/module/games/{cat-popper → whack-a-mole}/components/GameBackground.js +31 -91
  109. package/lib/module/games/whack-a-mole/components/GameBackground.js.map +1 -0
  110. package/lib/module/games/whack-a-mole/components/GameGrid.js +97 -0
  111. package/lib/module/games/whack-a-mole/components/GameGrid.js.map +1 -0
  112. package/lib/module/games/{cat-popper → whack-a-mole}/components/GameHole.js +67 -54
  113. package/lib/module/games/whack-a-mole/components/GameHole.js.map +1 -0
  114. package/lib/module/games/{cat-popper → whack-a-mole}/components/GameOverModal.js +2 -2
  115. package/lib/module/games/whack-a-mole/components/GameOverModal.js.map +1 -0
  116. package/lib/module/games/{cat-popper/components/CatCharacter.js → whack-a-mole/components/MoleCharacter.js} +75 -115
  117. package/lib/module/games/whack-a-mole/components/MoleCharacter.js.map +1 -0
  118. package/lib/module/games/{cat-popper → whack-a-mole}/components/ScoreBoard.js +8 -16
  119. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -0
  120. package/lib/module/games/{cat-popper → whack-a-mole}/components/index.js +1 -2
  121. package/lib/module/games/whack-a-mole/components/index.js.map +1 -0
  122. package/lib/module/index.js +4 -3
  123. package/lib/module/index.js.map +1 -1
  124. package/lib/module/services/GamesConstants.js +36 -506
  125. package/lib/module/services/GamesConstants.js.map +1 -1
  126. package/lib/module/services/GamesService.js +22 -14
  127. package/lib/module/services/GamesService.js.map +1 -1
  128. package/lib/module/services/HapticsService.js +77 -0
  129. package/lib/module/services/HapticsService.js.map +1 -0
  130. package/lib/module/services/SoundsService.js +171 -0
  131. package/lib/module/services/SoundsService.js.map +1 -0
  132. package/lib/module/{games/balloon-blaster/components/GameControls.js → shared/helpers/GameControlButton.js} +39 -58
  133. package/lib/module/shared/helpers/GameControlButton.js.map +1 -0
  134. package/lib/module/shared/helpers/ResponsiveScoreBoard.js +81 -0
  135. package/lib/module/shared/helpers/ResponsiveScoreBoard.js.map +1 -0
  136. package/lib/module/shared/helpers/index.js +5 -0
  137. package/lib/module/shared/helpers/index.js.map +1 -0
  138. package/lib/module/shared/settings/SettingsService.js +18 -12
  139. package/lib/module/shared/settings/SettingsService.js.map +1 -1
  140. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  141. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +143 -0
  142. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts.map +1 -0
  143. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +3 -1
  144. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -1
  145. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +12 -2
  146. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -1
  147. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -1
  148. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -1
  149. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -1
  150. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +1 -1
  151. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  152. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +0 -1
  153. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -1
  154. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +16 -0
  155. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -0
  156. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +112 -0
  157. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts.map +1 -0
  158. package/lib/typescript/src/games/{fruit-slicer/FruitSlicerService.d.ts → fruit-ninja/FruitNinjaService.d.ts} +4 -4
  159. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts.map +1 -0
  160. package/lib/typescript/src/games/{fruit-slicer/FruitSlicerStore.d.ts → fruit-ninja/FruitNinjaStore.d.ts} +12 -4
  161. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts.map +1 -0
  162. package/lib/typescript/src/games/{fruit-slicer → fruit-ninja}/components/FruitComponent.d.ts +1 -1
  163. package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts.map +1 -0
  164. package/lib/typescript/src/games/{fruit-slicer → fruit-ninja}/components/GameArea.d.ts +1 -1
  165. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts.map +1 -0
  166. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -0
  167. package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts.map +1 -0
  168. package/lib/typescript/src/games/{fruit-slicer → fruit-ninja}/components/ParticleSystem.d.ts +1 -1
  169. package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts.map +1 -0
  170. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -0
  171. package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts.map +1 -0
  172. package/lib/typescript/src/games/{fruit-slicer → fruit-ninja}/components/index.d.ts +0 -1
  173. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts.map +1 -0
  174. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +1 -9
  175. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  176. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +41 -0
  177. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts.map +1 -0
  178. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts +4 -2
  179. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -1
  180. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -1
  181. package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts +2 -1
  182. package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts.map +1 -1
  183. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
  184. package/lib/typescript/src/games/maze-runner/components/index.d.ts +0 -1
  185. package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -1
  186. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +11 -0
  187. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -0
  188. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +45 -0
  189. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts.map +1 -0
  190. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +54 -0
  191. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts.map +1 -0
  192. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +40 -0
  193. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -0
  194. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +12 -0
  195. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts.map +1 -0
  196. package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +12 -0
  197. package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts.map +1 -0
  198. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts +9 -0
  199. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts.map +1 -0
  200. package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts +9 -0
  201. package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts.map +1 -0
  202. package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts +9 -0
  203. package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts.map +1 -0
  204. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +8 -0
  205. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -0
  206. package/lib/typescript/src/games/popit-fidget/components/index.d.ts +7 -0
  207. package/lib/typescript/src/games/popit-fidget/components/index.d.ts.map +1 -0
  208. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +9 -0
  209. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -0
  210. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +71 -0
  211. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts.map +1 -0
  212. package/lib/typescript/src/games/{space-traveller/SpaceTravellerService.d.ts → space-fighter/SpaceFighterService.d.ts} +7 -4
  213. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -0
  214. package/lib/typescript/src/games/{space-traveller/SpaceTravellerStore.d.ts → space-fighter/SpaceFighterStore.d.ts} +12 -4
  215. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -0
  216. package/lib/typescript/src/games/{space-traveller → space-fighter}/components/AsteroidComponent.d.ts +1 -1
  217. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts.map +1 -0
  218. package/lib/typescript/src/games/{space-traveller → space-fighter}/components/GameArea.d.ts +1 -1
  219. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -0
  220. package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts.map +1 -0
  221. package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts.map +1 -0
  222. package/lib/typescript/src/games/{space-traveller → space-fighter}/components/ParticleComponent.d.ts +1 -1
  223. package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts.map +1 -0
  224. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -0
  225. package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts.map +1 -0
  226. package/lib/typescript/src/games/{space-traveller → space-fighter}/components/Spacecraft3D.d.ts +1 -1
  227. package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts.map +1 -0
  228. package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts.map +1 -0
  229. package/lib/typescript/src/games/{space-traveller → space-fighter}/components/index.d.ts +0 -1
  230. package/lib/typescript/src/games/space-fighter/components/index.d.ts.map +1 -0
  231. package/lib/typescript/src/games/{cat-popper/CatPopper.d.ts → whack-a-mole/WhackAMole.d.ts} +4 -4
  232. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -0
  233. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +79 -0
  234. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts.map +1 -0
  235. package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +33 -0
  236. package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts.map +1 -0
  237. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +41 -0
  238. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts.map +1 -0
  239. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts.map +1 -0
  240. package/lib/typescript/src/games/{cat-popper → whack-a-mole}/components/GameGrid.d.ts +2 -2
  241. package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts.map +1 -0
  242. package/lib/typescript/src/games/{cat-popper → whack-a-mole}/components/GameHole.d.ts +3 -2
  243. package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts.map +1 -0
  244. package/lib/typescript/src/games/{fruit-slicer → whack-a-mole}/components/GameOverModal.d.ts.map +1 -1
  245. package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +7 -0
  246. package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts.map +1 -0
  247. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -0
  248. package/lib/typescript/src/games/{cat-popper → whack-a-mole}/components/index.d.ts +1 -2
  249. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts.map +1 -0
  250. package/lib/typescript/src/index.d.ts +4 -3
  251. package/lib/typescript/src/index.d.ts.map +1 -1
  252. package/lib/typescript/src/services/GamesConstants.d.ts +30 -318
  253. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  254. package/lib/typescript/src/services/GamesService.d.ts +1 -0
  255. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  256. package/lib/typescript/src/services/HapticsService.d.ts +16 -0
  257. package/lib/typescript/src/services/HapticsService.d.ts.map +1 -0
  258. package/lib/typescript/src/services/SoundsService.d.ts +154 -0
  259. package/lib/typescript/src/services/SoundsService.d.ts.map +1 -0
  260. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts +17 -0
  261. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +1 -0
  262. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts +42 -0
  263. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts.map +1 -0
  264. package/lib/typescript/src/shared/helpers/index.d.ts +4 -0
  265. package/lib/typescript/src/shared/helpers/index.d.ts.map +1 -0
  266. package/lib/typescript/src/shared/settings/SettingsService.d.ts +2 -1
  267. package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +1 -1
  268. package/package.json +9 -6
  269. package/lib/module/games/balloon-blaster/components/GameControls.js.map +0 -1
  270. package/lib/module/games/cat-popper/CatPopper.js +0 -230
  271. package/lib/module/games/cat-popper/CatPopper.js.map +0 -1
  272. package/lib/module/games/cat-popper/CatPopperService.js +0 -100
  273. package/lib/module/games/cat-popper/CatPopperService.js.map +0 -1
  274. package/lib/module/games/cat-popper/CatPopperStore.js +0 -113
  275. package/lib/module/games/cat-popper/CatPopperStore.js.map +0 -1
  276. package/lib/module/games/cat-popper/components/CatCharacter.js.map +0 -1
  277. package/lib/module/games/cat-popper/components/GameBackground.js.map +0 -1
  278. package/lib/module/games/cat-popper/components/GameControls.js +0 -230
  279. package/lib/module/games/cat-popper/components/GameControls.js.map +0 -1
  280. package/lib/module/games/cat-popper/components/GameGrid.js +0 -66
  281. package/lib/module/games/cat-popper/components/GameGrid.js.map +0 -1
  282. package/lib/module/games/cat-popper/components/GameHole.js.map +0 -1
  283. package/lib/module/games/cat-popper/components/GameOverModal.js.map +0 -1
  284. package/lib/module/games/cat-popper/components/ScoreBoard.js.map +0 -1
  285. package/lib/module/games/cat-popper/components/index.js.map +0 -1
  286. package/lib/module/games/fruit-slicer/FruitSlicer.js.map +0 -1
  287. package/lib/module/games/fruit-slicer/FruitSlicerService.js.map +0 -1
  288. package/lib/module/games/fruit-slicer/FruitSlicerStore.js +0 -156
  289. package/lib/module/games/fruit-slicer/FruitSlicerStore.js.map +0 -1
  290. package/lib/module/games/fruit-slicer/components/FruitComponent.js.map +0 -1
  291. package/lib/module/games/fruit-slicer/components/GameArea.js.map +0 -1
  292. package/lib/module/games/fruit-slicer/components/GameBackground.js.map +0 -1
  293. package/lib/module/games/fruit-slicer/components/GameControls.js +0 -230
  294. package/lib/module/games/fruit-slicer/components/GameControls.js.map +0 -1
  295. package/lib/module/games/fruit-slicer/components/GameOverModal.js.map +0 -1
  296. package/lib/module/games/fruit-slicer/components/ParticleSystem.js.map +0 -1
  297. package/lib/module/games/fruit-slicer/components/ScoreBoard.js.map +0 -1
  298. package/lib/module/games/fruit-slicer/components/SliceTrail.js.map +0 -1
  299. package/lib/module/games/fruit-slicer/components/index.js.map +0 -1
  300. package/lib/module/games/maze-runner/components/GameControls.js +0 -129
  301. package/lib/module/games/maze-runner/components/GameControls.js.map +0 -1
  302. package/lib/module/games/space-traveller/SpaceTraveller.js.map +0 -1
  303. package/lib/module/games/space-traveller/SpaceTravellerService.js.map +0 -1
  304. package/lib/module/games/space-traveller/SpaceTravellerStore.js +0 -139
  305. package/lib/module/games/space-traveller/SpaceTravellerStore.js.map +0 -1
  306. package/lib/module/games/space-traveller/components/AsteroidComponent.js.map +0 -1
  307. package/lib/module/games/space-traveller/components/GameArea.js.map +0 -1
  308. package/lib/module/games/space-traveller/components/GameBackground.js.map +0 -1
  309. package/lib/module/games/space-traveller/components/GameControls.js +0 -177
  310. package/lib/module/games/space-traveller/components/GameControls.js.map +0 -1
  311. package/lib/module/games/space-traveller/components/GameOverModal.js.map +0 -1
  312. package/lib/module/games/space-traveller/components/ParticleComponent.js.map +0 -1
  313. package/lib/module/games/space-traveller/components/ScoreBoard.js.map +0 -1
  314. package/lib/module/games/space-traveller/components/SettingsModal.js.map +0 -1
  315. package/lib/module/games/space-traveller/components/Spacecraft3D.js.map +0 -1
  316. package/lib/module/games/space-traveller/components/SpacecraftPath.js.map +0 -1
  317. package/lib/module/games/space-traveller/components/index.js.map +0 -1
  318. package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts +0 -10
  319. package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts.map +0 -1
  320. package/lib/typescript/src/games/cat-popper/CatPopper.d.ts.map +0 -1
  321. package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts +0 -32
  322. package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts.map +0 -1
  323. package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts +0 -21
  324. package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts.map +0 -1
  325. package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts +0 -7
  326. package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts.map +0 -1
  327. package/lib/typescript/src/games/cat-popper/components/GameBackground.d.ts.map +0 -1
  328. package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts +0 -10
  329. package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts.map +0 -1
  330. package/lib/typescript/src/games/cat-popper/components/GameGrid.d.ts.map +0 -1
  331. package/lib/typescript/src/games/cat-popper/components/GameHole.d.ts.map +0 -1
  332. package/lib/typescript/src/games/cat-popper/components/GameOverModal.d.ts.map +0 -1
  333. package/lib/typescript/src/games/cat-popper/components/ScoreBoard.d.ts.map +0 -1
  334. package/lib/typescript/src/games/cat-popper/components/index.d.ts.map +0 -1
  335. package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts +0 -16
  336. package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts.map +0 -1
  337. package/lib/typescript/src/games/fruit-slicer/FruitSlicerService.d.ts.map +0 -1
  338. package/lib/typescript/src/games/fruit-slicer/FruitSlicerStore.d.ts.map +0 -1
  339. package/lib/typescript/src/games/fruit-slicer/components/FruitComponent.d.ts.map +0 -1
  340. package/lib/typescript/src/games/fruit-slicer/components/GameArea.d.ts.map +0 -1
  341. package/lib/typescript/src/games/fruit-slicer/components/GameBackground.d.ts.map +0 -1
  342. package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts +0 -10
  343. package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts.map +0 -1
  344. package/lib/typescript/src/games/fruit-slicer/components/ParticleSystem.d.ts.map +0 -1
  345. package/lib/typescript/src/games/fruit-slicer/components/ScoreBoard.d.ts.map +0 -1
  346. package/lib/typescript/src/games/fruit-slicer/components/SliceTrail.d.ts.map +0 -1
  347. package/lib/typescript/src/games/fruit-slicer/components/index.d.ts.map +0 -1
  348. package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts +0 -10
  349. package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts.map +0 -1
  350. package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts +0 -17
  351. package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts.map +0 -1
  352. package/lib/typescript/src/games/space-traveller/SpaceTravellerService.d.ts.map +0 -1
  353. package/lib/typescript/src/games/space-traveller/SpaceTravellerStore.d.ts.map +0 -1
  354. package/lib/typescript/src/games/space-traveller/components/AsteroidComponent.d.ts.map +0 -1
  355. package/lib/typescript/src/games/space-traveller/components/GameArea.d.ts.map +0 -1
  356. package/lib/typescript/src/games/space-traveller/components/GameBackground.d.ts.map +0 -1
  357. package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts +0 -10
  358. package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts.map +0 -1
  359. package/lib/typescript/src/games/space-traveller/components/GameOverModal.d.ts.map +0 -1
  360. package/lib/typescript/src/games/space-traveller/components/ParticleComponent.d.ts.map +0 -1
  361. package/lib/typescript/src/games/space-traveller/components/ScoreBoard.d.ts.map +0 -1
  362. package/lib/typescript/src/games/space-traveller/components/SettingsModal.d.ts.map +0 -1
  363. package/lib/typescript/src/games/space-traveller/components/Spacecraft3D.d.ts.map +0 -1
  364. package/lib/typescript/src/games/space-traveller/components/SpacecraftPath.d.ts.map +0 -1
  365. package/lib/typescript/src/games/space-traveller/components/index.d.ts.map +0 -1
  366. /package/lib/module/games/{fruit-slicer → fruit-ninja}/components/GameArea.js +0 -0
  367. /package/lib/module/games/{fruit-slicer → fruit-ninja}/components/GameOverModal.js +0 -0
  368. /package/lib/module/games/{fruit-slicer → fruit-ninja}/components/ParticleSystem.js +0 -0
  369. /package/lib/module/games/{space-traveller → space-fighter}/components/AsteroidComponent.js +0 -0
  370. /package/lib/module/games/{space-traveller → space-fighter}/components/GameArea.js +0 -0
  371. /package/lib/module/games/{space-traveller → space-fighter}/components/GameBackground.js +0 -0
  372. /package/lib/module/games/{space-traveller → space-fighter}/components/GameOverModal.js +0 -0
  373. /package/lib/module/games/{space-traveller → space-fighter}/components/ParticleComponent.js +0 -0
  374. /package/lib/module/games/{space-traveller → space-fighter}/components/SettingsModal.js +0 -0
  375. /package/lib/module/games/{space-traveller → space-fighter}/components/Spacecraft3D.js +0 -0
  376. /package/lib/typescript/src/games/{cat-popper → fruit-ninja}/components/GameBackground.d.ts +0 -0
  377. /package/lib/typescript/src/games/{cat-popper → fruit-ninja}/components/GameOverModal.d.ts +0 -0
  378. /package/lib/typescript/src/games/{fruit-slicer → fruit-ninja}/components/ScoreBoard.d.ts +0 -0
  379. /package/lib/typescript/src/games/{fruit-slicer → fruit-ninja}/components/SliceTrail.d.ts +0 -0
  380. /package/lib/typescript/src/games/{fruit-slicer → space-fighter}/components/GameBackground.d.ts +0 -0
  381. /package/lib/typescript/src/games/{fruit-slicer → space-fighter}/components/GameOverModal.d.ts +0 -0
  382. /package/lib/typescript/src/games/{cat-popper → space-fighter}/components/ScoreBoard.d.ts +0 -0
  383. /package/lib/typescript/src/games/{space-traveller → space-fighter}/components/SettingsModal.d.ts +0 -0
  384. /package/lib/typescript/src/games/{space-traveller → space-fighter}/components/SpacecraftPath.d.ts +0 -0
  385. /package/lib/typescript/src/games/{space-traveller → whack-a-mole}/components/GameBackground.d.ts +0 -0
  386. /package/lib/typescript/src/games/{space-traveller → whack-a-mole}/components/GameOverModal.d.ts +0 -0
  387. /package/lib/typescript/src/games/{space-traveller → whack-a-mole}/components/ScoreBoard.d.ts +0 -0
package/README.md CHANGED
@@ -6,11 +6,12 @@
6
6
 
7
7
  | Game | Description | Features |
8
8
  |------|-------------|----------|
9
- | **🐱 Cat Popper** | Classic whack-a-mole with cute cats | Multiple difficulty levels, customizable grid sizes, haptic feedback |
10
- | **🎈 Balloon Blaster** | Pop balloons rising from the bottom | Physics-based gameplay, particle effects, combo system |
11
- | **🍎 Fruit Slicer** | Slice fruits and avoid bombs | Physics-based gameplay, particle effects, combo system |
12
- | **🧩 Maze Runner** | Navigate through procedurally generated mazes | Dynamic maze generation, timer challenges, multiple difficulties |
13
- | **🚀 Space Traveller** | Dodge asteroids in space | 3D-style graphics, progressive difficulty, space physics |
9
+ | **🐱 Whack A Mole** | Whack cute cats popping from holes - fast reflexes needed! | Multiple difficulty levels, customizable grid sizes, haptic feedback |
10
+ | **🫧 Popit Fidget** | Pop satisfying bubbles in this relaxing fidget toy game | Relaxing gameplay, colorful bubbles, different shapes |
11
+ | **🍎 Fruit Ninja** | Slice flying fruits with finger swipes - avoid the bombs! | Physics-based slicing, particle effects, combo system |
12
+ | **🧩 Maze Runner** | Navigate ball through mazes using tilt and physics controls | Dynamic maze generation, physics controls, multiple difficulties |
13
+ | **🚀 Space Fighter** | Pilot spaceship through asteroid fields in endless space | 3D-style graphics, progressive difficulty, space physics |
14
+ | **🎈 Balloon Blaster** | Pop rising balloons before they escape - quick taps win! | Physics-based gameplay, particle effects, combo system |
14
15
 
15
16
  ## 📦 Installation
16
17
 
@@ -25,17 +26,7 @@ yarn add react-native-games
25
26
  This library requires the following peer dependencies to be installed in your project:
26
27
 
27
28
  ```sh
28
- # Core React Native Skia for high-performance graphics
29
- npm install @shopify/react-native-skia
30
-
31
- # Reanimated for smooth animations
32
- npm install react-native-reanimated
33
-
34
- # Gesture Handler for touch interactions
35
- npm install react-native-gesture-handler
36
-
37
- # Worklets for performance (used by Reanimated)
38
- npm install react-native-worklets
29
+ npm install @shopify/react-native-skia react-native-reanimated react-native-gesture-handler react-native-worklets expo-speech expo-haptics
39
30
  ```
40
31
 
41
32
  ### Platform Setup
@@ -45,6 +36,8 @@ Follow the installation guides for each peer dependency:
45
36
  - **[@shopify/react-native-skia](https://shopify.github.io/react-native-skia/docs/getting-started/installation)** - Graphics rendering
46
37
  - **[react-native-reanimated](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started)** - Animations
47
38
  - **[react-native-gesture-handler](https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation)** - Gestures
39
+ - **[expo-speech](https://docs.expo.dev/versions/latest/sdk/speech/)** - Text-to-speech functionality
40
+ - **[expo-haptics](https://docs.expo.dev/versions/latest/sdk/haptics/)** - Haptic feedback
48
41
 
49
42
  ## 🚀 Usage
50
43
 
@@ -53,24 +46,25 @@ Follow the installation guides for each peer dependency:
53
46
  ```tsx
54
47
  import React, { useState } from 'react';
55
48
  import { View, StyleSheet } from 'react-native';
56
- import { CatPopper, BalloonBlaster, FruitSlicer, MazeRunner, SpaceTraveller } from 'react-native-games';
49
+ import { WhackAMole, PopitFidget, FruitNinja, MazeRunner, SpaceFighter, BalloonBlaster } from 'react-native-games';
57
50
 
58
51
  export default function GameScreen() {
59
52
  const [showSettings, setShowSettings] = useState(false);
60
53
 
61
54
  return (
62
55
  <View style={styles.container}>
63
- {/* Cat Popper Game - Classic whack-a-mole with cats */}
64
- <CatPopper
56
+ {/* Whack A Mole Game - Classic whack-a-mole with cats */}
57
+ <WhackAMole
65
58
  showSettingsModal={showSettings}
66
59
  onToggleSettingsModal={() => setShowSettings(!showSettings)}
67
60
  />
68
61
 
69
62
  {/* Or choose any other game */}
70
- {/* <BalloonBlaster /> */}
71
- {/* <FruitSlicer /> */}
63
+ {/* <PopitFidget /> */}
64
+ {/* <FruitNinja /> */}
72
65
  {/* <MazeRunner /> */}
73
- {/* <SpaceTraveller /> */}
66
+ {/* <SpaceFighter /> */}
67
+ {/* <BalloonBlaster /> */}
74
68
  </View>
75
69
  );
76
70
  }
@@ -85,9 +79,9 @@ const styles = StyleSheet.create({
85
79
 
86
80
  ### Game-Specific Props & Default Settings
87
81
 
88
- #### Cat Popper
82
+ #### Whack A Mole
89
83
  ```tsx
90
- <CatPopper
84
+ <WhackAMole
91
85
  showSettingsModal={boolean} // Control settings modal visibility
92
86
  onToggleSettingsModal={() => void} // Settings modal toggle callback
93
87
  />
@@ -105,9 +99,28 @@ const styles = StyleSheet.create({
105
99
  // Grid sizes: easy/medium 3x3, hard 4x4
106
100
  ```
107
101
 
108
- #### Balloon Blaster
102
+ #### Popit Fidget
109
103
  ```tsx
110
- <BalloonBlaster
104
+ <PopitFidget
105
+ showSettingsModal={boolean} // Control settings modal visibility
106
+ onToggleSettingsModal={() => void} // Settings modal toggle callback
107
+ />
108
+
109
+ // Default Settings:
110
+ // {
111
+ // difficulty: 'medium', // Balanced challenge
112
+ // soundEnabled: true, // Audio feedback enabled
113
+ // hapticEnabled: true, // Haptic feedback enabled
114
+ // gameDuration: 120 // Auto-set based on difficulty (Easy: 60s, Medium: 120s, Hard: 180s)
115
+ // }
116
+ // Available: difficulty ['easy','medium','hard']
117
+ // Relaxing bubble popping with satisfying sound effects
118
+ // Different bubble shapes and colors for variety
119
+ ```
120
+
121
+ #### Fruit Ninja
122
+ ```tsx
123
+ <FruitNinja
111
124
  showSettingsModal={boolean} // Control settings modal visibility
112
125
  onToggleSettingsModal={() => void} // Settings modal toggle callback
113
126
  />
@@ -124,9 +137,9 @@ const styles = StyleSheet.create({
124
137
  // Spawn intervals and speeds adjust automatically with difficulty
125
138
  ```
126
139
 
127
- #### Fruit Slicer
140
+ #### Space Fighter
128
141
  ```tsx
129
- <FruitSlicer
142
+ <SpaceFighter
130
143
  showSettingsModal={boolean} // Control settings modal visibility
131
144
  onToggleSettingsModal={() => void} // Settings modal toggle callback
132
145
  />
@@ -163,9 +176,9 @@ const styles = StyleSheet.create({
163
176
  // Procedurally generated mazes with intelligent pathfinding
164
177
  ```
165
178
 
166
- #### Space Traveller
179
+ #### Balloon Blaster
167
180
  ```tsx
168
- <SpaceTraveller
181
+ <BalloonBlaster
169
182
  showSettingsModal={boolean} // Control settings modal visibility
170
183
  onToggleSettingsModal={() => void} // Settings modal toggle callback
171
184
  />
@@ -261,8 +274,8 @@ See the complete [LICENSE](LICENSE) file for detailed terms and definitions.
261
274
  ## 📞 Support
262
275
 
263
276
  - 📧 **Email**: niranjan.devasani@gmail.com
264
- - 🐛 **Issues**: [GitHub Issues](https://github.com/ursnj/react-native-games/issues)
265
- - 💬 **Discussions**: [GitHub Discussions](https://github.com/ursnj/react-native-games/discussions)
277
+ - 🐛 **Issues**: [GitHub Issues](https://github.com/ursnj/nayan-ui/issues)
278
+ - 🌐 **Website**: [https://www.nayanui.com/games](https://www.nayanui.com/games)
266
279
 
267
280
  ---
268
281
 
@@ -1,27 +1,30 @@
1
1
  "use strict";
2
2
 
3
- import React, { useEffect, useRef } from 'react';
3
+ import React, { useEffect, useRef, useCallback } from 'react';
4
4
  import { View, StyleSheet, Modal } from 'react-native';
5
5
  import { runOnJS } from 'react-native-reanimated';
6
6
  import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
7
- import * as Speech from 'expo-speech';
8
- import * as Haptics from 'expo-haptics';
7
+ import { playSound, GAME_SOUNDS } from "../../services/SoundsService.js";
8
+ import { playHaptic, HapticType } from "../../services/HapticsService.js";
9
9
  import { useBalloonBlasterStore } from "./BalloonBlasterStore.js";
10
10
  import { createBalloonBlasterService, GAME_CONFIG } from "./BalloonBlasterService.js";
11
- import { ScoreBoard, GameArea, GameControls, GameOverModal, GameBackground } from "./components/index.js";
11
+ import { ScoreBoard, GameArea, GameOverModal, GameBackground } from "./components/index.js";
12
+ import { GameControlButton } from "../../shared/helpers/index.js";
12
13
  // Define game-specific types and constants locally
13
14
 
14
15
  const DEFAULT_BALLOON_BLASTER_SETTINGS = {
15
- gameDuration: 120,
16
+ gameDuration: 60,
17
+ // Fixed 60 seconds for all games
16
18
  difficulty: 'medium',
17
19
  soundEnabled: true,
18
20
  hapticEnabled: true
19
21
  };
20
22
  const getDifficultySpawnInterval = difficulty => {
23
+ // Reduced spawn intervals for immediate balloon visibility and better gameplay
21
24
  const intervals = {
22
- easy: 2000,
23
- medium: 1500,
24
- hard: 1000
25
+ easy: 800,
26
+ medium: 600,
27
+ hard: 400
25
28
  };
26
29
  return intervals[difficulty];
27
30
  };
@@ -66,6 +69,7 @@ export const BalloonBlaster = ({
66
69
  gameOver,
67
70
  lives,
68
71
  balloons,
72
+ particles,
69
73
  slicePath,
70
74
  isSlicing,
71
75
  startGame,
@@ -76,6 +80,7 @@ export const BalloonBlaster = ({
76
80
  addBalloon,
77
81
  removeBalloon,
78
82
  updateBalloon,
83
+ setParticles,
79
84
  setSlicePath,
80
85
  setIsSlicing,
81
86
  resetCombo,
@@ -93,78 +98,107 @@ export const BalloonBlaster = ({
93
98
  // Slice path tracking
94
99
  const currentSlicePath = useRef([]);
95
100
 
96
- // Helper functions for gesture handling
97
- const checkBalloonIntersections = slicePath => {
101
+ // Helper functions for gesture handling - memoized to prevent unnecessary re-renders
102
+ const checkBalloonIntersections = useCallback(slicePath => {
98
103
  const currentBalloons = useBalloonBlasterStore.getState().balloons;
99
104
  currentBalloons.forEach(balloon => {
100
105
  if (!balloon.isPopped && gameService.checkBalloonPop(balloon, slicePath)) {
101
- handleBalloonPop(balloon.id);
106
+ // Call handleBalloonPop directly to avoid circular dependency
107
+ const balloonId = balloon.id;
108
+ // Double-check game state to prevent race conditions
109
+ const currentState = useBalloonBlasterStore.getState();
110
+ if (!currentState.isPlaying || currentState.gameOver) return;
111
+ const targetBalloon = currentBalloons.find(b => b.id === balloonId);
112
+ if (!targetBalloon || targetBalloon.isPopped) return;
113
+
114
+ // Handle different balloon types BEFORE marking as popped
115
+ if (targetBalloon.isBomb) {
116
+ // Bomb hit - lose life and end combo
117
+ playSound(GAME_SOUNDS.BALLOON_BLASTER.BOMB, settings.soundEnabled);
118
+ playHaptic(HapticType.HEAVY, settings.hapticEnabled);
119
+
120
+ // Check current state again before losing life
121
+ const stateBeforeLoss = useBalloonBlasterStore.getState();
122
+ if (stateBeforeLoss.lives > 0 && stateBeforeLoss.isPlaying && !stateBeforeLoss.gameOver) {
123
+ loseLife();
124
+ resetCombo();
125
+ }
126
+
127
+ // Create explosion particles
128
+ gameService.createPopParticles(targetBalloon);
129
+
130
+ // Mark bomb as popped after processing
131
+ updateBalloon(balloonId, {
132
+ isPopped: true
133
+ });
134
+ } else {
135
+ // Handle different balloon types with simplified mechanics
136
+ playSound(GAME_SOUNDS.BALLOON_BLASTER.POP, settings.soundEnabled);
137
+ playHaptic(HapticType.LIGHT, settings.hapticEnabled);
138
+ if (targetBalloon.isBonus) {
139
+ // Star balloon - add a life instead of points
140
+ addLife();
141
+ playSound(GAME_SOUNDS.BALLOON_BLASTER.POP, settings.soundEnabled);
142
+ // Mark star as popped after processing
143
+ updateBalloon(balloonId, {
144
+ isPopped: true
145
+ });
146
+ } else {
147
+ // Regular balloon - add 10 points (popBalloon handles marking)
148
+ popBalloon(balloonId);
149
+ }
150
+
151
+ // Create pop particles
152
+ gameService.createPopParticles(targetBalloon);
153
+ }
154
+
155
+ // Remove balloon after animation
156
+ setTimeout(() => {
157
+ removeBalloon(balloonId);
158
+ balloonAnimations.delete(balloonId);
159
+ }, 500);
102
160
  }
103
161
  });
104
- };
105
- const clearSlicePath = () => {
162
+ }, [gameService, loseLife, resetCombo, updateBalloon, addLife, popBalloon, removeBalloon, balloonAnimations]);
163
+ const clearSlicePath = useCallback(() => {
106
164
  setTimeout(() => {
107
165
  currentSlicePath.current = [];
108
166
  setSlicePath([]);
109
167
  }, 200);
110
- };
168
+ }, [setSlicePath]);
111
169
 
112
- // Sound and haptic feedback
113
- const playPopSound = _balloonType => {
114
- if (settings.soundEnabled) {
115
- Speech.speak('Pop!', {
116
- pitch: 1.5,
117
- rate: 2.5,
118
- volume: 0.6
119
- });
120
- }
121
- // Always provide haptic feedback for better game feel
122
- Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
123
- };
124
- const playBombSound = () => {
125
- if (settings.soundEnabled) {
126
- Speech.speak('Boom!', {
127
- pitch: 0.8,
128
- rate: 1.5,
129
- volume: 0.8
130
- });
131
- }
132
- // Always provide haptic feedback for bombs
133
- Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Heavy);
134
- };
170
+ // Balloon spawning - memoized to prevent unnecessary re-renders
171
+ const spawnBalloon = useCallback(balloon => {
172
+ addBalloon(balloon);
173
+ }, [addBalloon]);
135
174
 
136
- // Game control functions
137
- const handleStartGame = () => {
138
- startGame(settings.gameDuration);
175
+ // Game control functions - memoized to prevent unnecessary re-renders
176
+ const handleStartGame = useCallback(() => {
177
+ startGame(); // Store uses fixed 60s duration internally
139
178
  gameService.resetAnimations();
140
179
  gameService.startGameTimer(decrementTime);
141
180
  gameService.startBalloonSpawning(spawnBalloon, getDifficultySpawnInterval(settings.difficulty));
142
181
  gameService.startPhysicsLoop(updateBalloon, removeBalloon, () => useBalloonBlasterStore.getState().balloons);
143
- };
144
- const handleStopGame = () => {
182
+ }, [startGame, gameService, decrementTime, spawnBalloon, settings.difficulty, updateBalloon, removeBalloon]);
183
+ const handleStopGame = useCallback(() => {
145
184
  stopGame();
146
185
  gameService.cleanup();
147
186
  gameService.resetAnimations();
148
187
  currentSlicePath.current = [];
149
188
  setSlicePath([]);
150
189
  setIsSlicing(false);
151
- };
152
- const handleResetGame = () => {
190
+ }, [stopGame, gameService, setSlicePath, setIsSlicing]);
191
+ const handleResetGame = useCallback(() => {
153
192
  gameService.cleanup();
154
193
  resetGame();
155
194
  gameService.resetAnimations();
156
195
  currentSlicePath.current = [];
157
196
  setSlicePath([]);
158
197
  setIsSlicing(false);
159
- };
198
+ }, [gameService, resetGame, setSlicePath, setIsSlicing]);
160
199
 
161
- // Balloon spawning
162
- const spawnBalloon = balloon => {
163
- addBalloon(balloon);
164
- };
165
-
166
- // Balloon popping logic
167
- const handleBalloonPop = balloonId => {
200
+ // Balloon popping logic - memoized to prevent unnecessary re-renders
201
+ const handleBalloonPop = useCallback(balloonId => {
168
202
  // Double-check game state to prevent race conditions
169
203
  const currentState = useBalloonBlasterStore.getState();
170
204
  if (!currentState.isPlaying || currentState.gameOver) return;
@@ -174,7 +208,8 @@ export const BalloonBlaster = ({
174
208
  // Handle different balloon types BEFORE marking as popped
175
209
  if (balloon.isBomb) {
176
210
  // Bomb hit - lose life and end combo
177
- playBombSound();
211
+ playSound(GAME_SOUNDS.BALLOON_BLASTER.BOMB, settings.soundEnabled);
212
+ playHaptic(HapticType.HEAVY, settings.hapticEnabled);
178
213
 
179
214
  // Check current state again before losing life
180
215
  const stateBeforeLoss = useBalloonBlasterStore.getState();
@@ -192,11 +227,12 @@ export const BalloonBlaster = ({
192
227
  });
193
228
  } else {
194
229
  // Handle different balloon types with simplified mechanics
195
- playPopSound(balloon.type.name);
230
+ playSound(GAME_SOUNDS.BALLOON_BLASTER.POP, settings.soundEnabled);
231
+ playHaptic(HapticType.LIGHT, settings.hapticEnabled);
196
232
  if (balloon.isBonus) {
197
233
  // Star balloon - add a life instead of points
198
234
  addLife();
199
- playPopSound('bonus life!');
235
+ playSound(GAME_SOUNDS.BALLOON_BLASTER.POP, settings.soundEnabled);
200
236
  // Mark star as popped after processing
201
237
  updateBalloon(balloonId, {
202
238
  isPopped: true
@@ -217,10 +253,10 @@ export const BalloonBlaster = ({
217
253
  removeBalloon(balloonId);
218
254
  balloonAnimations.delete(balloonId);
219
255
  }, 500);
220
- };
256
+ }, [balloons, loseLife, resetCombo, gameService, updateBalloon, addLife, popBalloon, removeBalloon, balloonAnimations, settings.soundEnabled, settings.hapticEnabled]);
221
257
 
222
- // Gesture handling for slicing
223
- const handleGestureStart = event => {
258
+ // Gesture handling for slicing - memoized to prevent unnecessary re-renders
259
+ const handleGestureStart = useCallback(event => {
224
260
  if (!isPlaying) return;
225
261
  currentSlicePath.current = [{
226
262
  x: event.x,
@@ -233,9 +269,9 @@ export const BalloonBlaster = ({
233
269
  }]);
234
270
 
235
271
  // Light haptic feedback on slice start
236
- Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
237
- };
238
- const handleGestureUpdate = event => {
272
+ playHaptic(HapticType.LIGHT, settings.hapticEnabled);
273
+ }, [isPlaying, setIsSlicing, setSlicePath, settings.hapticEnabled]);
274
+ const handleGestureUpdate = useCallback(event => {
239
275
  if (!isPlaying) return;
240
276
  const newPoint = {
241
277
  x: event.x,
@@ -251,12 +287,12 @@ export const BalloonBlaster = ({
251
287
 
252
288
  // Check for balloon intersections
253
289
  checkBalloonIntersections(currentSlicePath.current);
254
- };
255
- const handleGestureEnd = () => {
290
+ }, [isPlaying, setSlicePath, checkBalloonIntersections]);
291
+ const handleGestureEnd = useCallback(() => {
256
292
  if (!isPlaying) return;
257
293
  setIsSlicing(false);
258
294
  clearSlicePath();
259
- };
295
+ }, [isPlaying, setIsSlicing, clearSlicePath]);
260
296
  const panGesture = Gesture.Pan().onStart(event => {
261
297
  runOnJS(handleGestureStart)(event);
262
298
  }).onUpdate(event => {
@@ -285,6 +321,25 @@ export const BalloonBlaster = ({
285
321
  };
286
322
  }, []);
287
323
 
324
+ // Sync particles from service to store for React re-rendering
325
+ useEffect(() => {
326
+ if (isPlaying && !gameOver) {
327
+ const syncParticles = () => {
328
+ const currentParticles = gameService.getParticles();
329
+ // Force re-render by creating new array reference
330
+ setParticles([...currentParticles]);
331
+ requestAnimationFrame(syncParticles);
332
+ };
333
+ const animationId = requestAnimationFrame(syncParticles);
334
+ return () => {
335
+ cancelAnimationFrame(animationId);
336
+ };
337
+ }
338
+
339
+ // Return empty cleanup function when not playing
340
+ return () => {};
341
+ }, [isPlaying, gameOver, setParticles]);
342
+
288
343
  // Cleanup when game ends (gameOver becomes true)
289
344
  useEffect(() => {
290
345
  if (gameOver) {
@@ -345,25 +400,39 @@ export const BalloonBlaster = ({
345
400
  children: /*#__PURE__*/_jsx(View, {
346
401
  style: styles.container,
347
402
  children: /*#__PURE__*/_jsxs(GameBackground, {
348
- children: [/*#__PURE__*/_jsx(ScoreBoard, {
349
- score: score,
350
- timeLeft: timeLeft,
351
- lives: lives
352
- }), /*#__PURE__*/_jsx(GestureDetector, {
403
+ children: [/*#__PURE__*/_jsx(GestureDetector, {
353
404
  gesture: panGesture,
354
405
  children: /*#__PURE__*/_jsx(GameArea, {
355
406
  balloons: balloons,
356
407
  balloonAnimations: balloonAnimations,
357
408
  slicePath: slicePath,
358
409
  isSlicing: isSlicing,
359
- particles: gameService.getParticles(),
410
+ particles: particles,
360
411
  onBalloonPop: handleBalloonPop
361
412
  })
362
- }), /*#__PURE__*/_jsx(GameControls, {
363
- isPlaying: isPlaying,
364
- gameOver: gameOver,
365
- onStartGame: handleStartGame,
366
- onStopGame: handleStopGame
413
+ }), /*#__PURE__*/_jsx(View, {
414
+ style: styles.scoreboardContainer,
415
+ children: /*#__PURE__*/_jsx(ScoreBoard, {
416
+ score: score,
417
+ timeLeft: timeLeft,
418
+ lives: lives
419
+ })
420
+ }), /*#__PURE__*/_jsx(View, {
421
+ style: styles.controlButtonContainer,
422
+ children: /*#__PURE__*/_jsx(GameControlButton, {
423
+ isPlaying: isPlaying,
424
+ gameOver: gameOver,
425
+ onStartGame: handleStartGame,
426
+ onStopGame: handleStopGame,
427
+ startButtonText: "START POPPING",
428
+ stopButtonText: "STOP GAME",
429
+ startButtonSubtext: "Pop balloons to score!",
430
+ stopButtonSubtext: "End current game",
431
+ startButtonColor: "#3b82f6",
432
+ stopButtonColor: "#dc2626",
433
+ startButtonBorderColor: "#60a5fa",
434
+ stopButtonBorderColor: "#f87171"
435
+ })
367
436
  }), /*#__PURE__*/_jsx(GameOverModal, {
368
437
  isVisible: gameOver,
369
438
  score: score,
@@ -386,6 +455,22 @@ export const BalloonBlaster = ({
386
455
  const styles = StyleSheet.create({
387
456
  container: {
388
457
  flex: 1
458
+ },
459
+ scoreboardContainer: {
460
+ position: 'absolute',
461
+ top: 0,
462
+ left: 20,
463
+ right: 20,
464
+ zIndex: 10,
465
+ pointerEvents: 'none' // Allow touches to pass through to GameArea
466
+ },
467
+ controlButtonContainer: {
468
+ position: 'absolute',
469
+ bottom: 20,
470
+ left: 20,
471
+ right: 20,
472
+ zIndex: 10,
473
+ alignItems: 'center'
389
474
  }
390
475
  });
391
476
  //# sourceMappingURL=BalloonBlaster.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","View","StyleSheet","Modal","runOnJS","Gesture","GestureDetector","GestureHandlerRootView","Speech","Haptics","useBalloonBlasterStore","createBalloonBlasterService","GAME_CONFIG","ScoreBoard","GameArea","GameControls","GameOverModal","GameBackground","DEFAULT_BALLOON_BLASTER_SETTINGS","gameDuration","difficulty","soundEnabled","hapticEnabled","getDifficultySpawnInterval","intervals","easy","medium","hard","GameSettings","createGameSettingsStore","jsx","_jsx","jsxs","_jsxs","BalloonBlaster","settings","externalSettings","onSettingsChange","showSettingsModal","onToggleSettingsModal","useSettings","useMemo","prevSettingsRef","prev","current","updateSettings","hasChanged","score","timeLeft","isPlaying","gameOver","lives","balloons","slicePath","isSlicing","startGame","stopGame","resetGame","popBalloon","decrementTime","addBalloon","removeBalloon","updateBalloon","setSlicePath","setIsSlicing","resetCombo","loseLife","addLife","balloonAnimations","Map","particleAnimations","gameService","currentSlicePath","checkBalloonIntersections","currentBalloons","getState","forEach","balloon","isPopped","checkBalloonPop","handleBalloonPop","id","clearSlicePath","setTimeout","playPopSound","_balloonType","speak","pitch","rate","volume","impactAsync","ImpactFeedbackStyle","Light","playBombSound","Heavy","handleStartGame","resetAnimations","startGameTimer","startBalloonSpawning","spawnBalloon","startPhysicsLoop","handleStopGame","cleanup","handleResetGame","balloonId","currentState","find","b","isBomb","stateBeforeLoss","createPopParticles","type","name","isBonus","delete","handleGestureStart","event","x","y","handleGestureUpdate","newPoint","push","length","SLICE_TRAIL_LENGTH","shift","handleGestureEnd","panGesture","Pan","onStart","onUpdate","onEnd","has","set","scale","opacity","cleanupTimeout","clearTimeout","interval","setInterval","position","livesBeforeLoss","clearInterval","style","flex","children","styles","container","gesture","particles","getParticles","onBalloonPop","onStartGame","onStopGame","isVisible","onPlayAgain","visible","animationType","presentationStyle","onRequestClose","gameId","onClose","settingsStore","create"],"sourceRoot":"../../../../src","sources":["games/balloon-blaster/BalloonBlaster.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useRef","useCallback","View","StyleSheet","Modal","runOnJS","Gesture","GestureDetector","GestureHandlerRootView","playSound","GAME_SOUNDS","playHaptic","HapticType","useBalloonBlasterStore","createBalloonBlasterService","GAME_CONFIG","ScoreBoard","GameArea","GameOverModal","GameBackground","GameControlButton","DEFAULT_BALLOON_BLASTER_SETTINGS","gameDuration","difficulty","soundEnabled","hapticEnabled","getDifficultySpawnInterval","intervals","easy","medium","hard","GameSettings","createGameSettingsStore","jsx","_jsx","jsxs","_jsxs","BalloonBlaster","settings","externalSettings","onSettingsChange","showSettingsModal","onToggleSettingsModal","useSettings","useMemo","prevSettingsRef","prev","current","updateSettings","hasChanged","score","timeLeft","isPlaying","gameOver","lives","balloons","particles","slicePath","isSlicing","startGame","stopGame","resetGame","popBalloon","decrementTime","addBalloon","removeBalloon","updateBalloon","setParticles","setSlicePath","setIsSlicing","resetCombo","loseLife","addLife","balloonAnimations","Map","particleAnimations","gameService","currentSlicePath","checkBalloonIntersections","currentBalloons","getState","forEach","balloon","isPopped","checkBalloonPop","balloonId","id","currentState","targetBalloon","find","b","isBomb","BALLOON_BLASTER","BOMB","HEAVY","stateBeforeLoss","createPopParticles","POP","LIGHT","isBonus","setTimeout","delete","clearSlicePath","spawnBalloon","handleStartGame","resetAnimations","startGameTimer","startBalloonSpawning","startPhysicsLoop","handleStopGame","cleanup","handleResetGame","handleBalloonPop","handleGestureStart","event","x","y","handleGestureUpdate","newPoint","push","length","SLICE_TRAIL_LENGTH","shift","handleGestureEnd","panGesture","Pan","onStart","onUpdate","onEnd","has","set","scale","opacity","syncParticles","currentParticles","getParticles","requestAnimationFrame","animationId","cancelAnimationFrame","cleanupTimeout","clearTimeout","interval","setInterval","position","livesBeforeLoss","clearInterval","style","flex","children","styles","container","gesture","onBalloonPop","scoreboardContainer","controlButtonContainer","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","isVisible","onPlayAgain","visible","animationType","presentationStyle","onRequestClose","gameId","onClose","settingsStore","create","top","left","right","zIndex","pointerEvents","bottom","alignItems"],"sourceRoot":"../../../../src","sources":["games/balloon-blaster/BalloonBlaster.tsx"],"mappings":"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","ignoreList":[]}