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
@@ -0,0 +1,293 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useRef, useCallback } from 'react';
4
+ import { View, StyleSheet, Dimensions, Modal } from 'react-native';
5
+ import { GestureHandlerRootView } from 'react-native-gesture-handler';
6
+ import { usePopitFidgetStore } from "./PopitFidgetStore.js";
7
+ import { PopitFidgetService } from "./PopitFidgetService.js";
8
+ import { createGameSettingsStore } from "../../shared/settings/SettingsService.js";
9
+ import { playSound, GAME_SOUNDS } from "../../services/SoundsService.js";
10
+ import { playHaptic, HapticType } from "../../services/HapticsService.js";
11
+ import { getDurationForDifficulty } from "../../shared/settings/SettingsService.js";
12
+ import { GameBackground, FidgetGrid as FidgetGridComponent, ScoreBoard, GameOverModal } from "./components/index.js";
13
+ import { GameControlButton } from "../../shared/helpers/index.js";
14
+ import { GameSettings as GameSettingsComponent } from "../../shared/settings/GameSettings.js";
15
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
+ const {
17
+ width,
18
+ height
19
+ } = Dimensions.get('window');
20
+ const PopitFidget = ({
21
+ showSettingsModal = false,
22
+ onToggleSettingsModal,
23
+ externalSettings,
24
+ onSettingsChange
25
+ }) => {
26
+ // Use selective subscriptions to prevent unnecessary re-renders
27
+ const fidgetGrid = usePopitFidgetStore(state => state.fidgetGrid);
28
+ const score = usePopitFidgetStore(state => state.score);
29
+ const timeLeft = usePopitFidgetStore(state => state.timeLeft);
30
+ const isPlaying = usePopitFidgetStore(state => state.isPlaying);
31
+ const gameOver = usePopitFidgetStore(state => state.gameOver);
32
+ const gameWon = usePopitFidgetStore(state => state.gameWon);
33
+
34
+ // Get store actions (these don't cause re-renders)
35
+ const startGame = usePopitFidgetStore(state => state.startGame);
36
+ const stopGame = usePopitFidgetStore(state => state.stopGame);
37
+ const resetGame = usePopitFidgetStore(state => state.resetGame);
38
+ const setFidgetGrid = usePopitFidgetStore(state => state.setFidgetGrid);
39
+ const popBubble = usePopitFidgetStore(state => state.popBubble);
40
+ const setTimeLeft = usePopitFidgetStore(state => state.setTimeLeft);
41
+ const serviceRef = useRef(null);
42
+ // Removed animation maps to prevent memory leaks
43
+ const useSettings = useRef(createGameSettingsStore()).current;
44
+ const settings = useSettings();
45
+ const prevSettingsRef = useRef(null);
46
+
47
+ // Initialize service and generate initial fidget grid
48
+ useEffect(() => {
49
+ if (!serviceRef.current) {
50
+ serviceRef.current = new PopitFidgetService();
51
+ }
52
+
53
+ // Generate initial fidget grid so it shows before game starts
54
+ if (serviceRef.current && !fidgetGrid) {
55
+ const grid = serviceRef.current.generateFidgetGrid(settings.difficulty);
56
+ setFidgetGrid(grid);
57
+ }
58
+ return () => {
59
+ serviceRef.current?.cleanup();
60
+ };
61
+ }, [fidgetGrid, setFidgetGrid, settings.difficulty]);
62
+
63
+ // Handle external settings changes
64
+ useEffect(() => {
65
+ if (!externalSettings) return;
66
+ const prev = prevSettingsRef.current;
67
+ const hasChanged = !prev || prev.difficulty !== externalSettings.difficulty || prev.soundEnabled !== externalSettings.soundEnabled || prev.hapticEnabled !== externalSettings.hapticEnabled;
68
+ if (hasChanged) {
69
+ const commonSettings = {
70
+ difficulty: externalSettings.difficulty,
71
+ soundEnabled: externalSettings.soundEnabled,
72
+ hapticEnabled: externalSettings.hapticEnabled
73
+ };
74
+ settings.setDifficulty(commonSettings.difficulty);
75
+ settings.setSoundEnabled(commonSettings.soundEnabled);
76
+ settings.setHapticEnabled(commonSettings.hapticEnabled);
77
+ prevSettingsRef.current = externalSettings;
78
+ }
79
+ }, [externalSettings, settings]);
80
+
81
+ // Settings change callback
82
+ useEffect(() => {
83
+ if (!onSettingsChange) return;
84
+ const unsubscribe = useSettings.subscribe(state => {
85
+ onSettingsChange({
86
+ difficulty: state.difficulty,
87
+ soundEnabled: state.soundEnabled,
88
+ hapticEnabled: state.hapticEnabled
89
+ });
90
+ });
91
+ return unsubscribe;
92
+ }, [onSettingsChange, useSettings]);
93
+
94
+ // Generate new fidget grid (simplified - always square based on difficulty)
95
+ const generateNewFidget = useCallback(() => {
96
+ if (!serviceRef.current) return;
97
+ const grid = serviceRef.current.generateFidgetGrid(settings.difficulty);
98
+ setFidgetGrid(grid);
99
+ }, [setFidgetGrid, settings.difficulty]);
100
+
101
+ // Track previous difficulty to avoid infinite loops
102
+ const prevDifficultyRef = React.useRef(settings.difficulty);
103
+
104
+ // Watch for difficulty changes and regenerate grid when difficulty changes
105
+ React.useEffect(() => {
106
+ // Only regenerate if difficulty actually changed
107
+ if (prevDifficultyRef.current !== settings.difficulty && serviceRef.current) {
108
+ if (!isPlaying) {
109
+ // Game not playing - just regenerate grid
110
+ const grid = serviceRef.current.generateFidgetGrid(settings.difficulty);
111
+ setFidgetGrid(grid);
112
+ } else {
113
+ // Game is playing - restart with new difficulty duration
114
+ const newDuration = getDurationForDifficulty(settings.difficulty);
115
+
116
+ // Stop current timer
117
+ serviceRef.current.stopGameTimer();
118
+
119
+ // Start new timer with new duration
120
+ serviceRef.current.startGameTimer(newDuration, timeLeft => setTimeLeft(timeLeft), () => stopGame());
121
+
122
+ // Update store with new duration
123
+ setTimeLeft(newDuration);
124
+ }
125
+ prevDifficultyRef.current = settings.difficulty;
126
+ }
127
+ }, [settings.difficulty, isPlaying, setFidgetGrid, setTimeLeft, stopGame]);
128
+
129
+ // Watch for game completion events and play appropriate sounds
130
+ React.useEffect(() => {
131
+ if (gameOver && !isPlaying) {
132
+ if (gameWon) {
133
+ // All bubbles popped - game completed successfully
134
+ playSound(GAME_SOUNDS.BUBBLE_POPPER.COMPLETE, settings.soundEnabled);
135
+ } else {
136
+ // Time ran out - game over
137
+ playSound(GAME_SOUNDS.TIME_UP, settings.soundEnabled);
138
+ }
139
+ }
140
+ }, [gameOver, gameWon, isPlaying, settings.soundEnabled]);
141
+
142
+ // Timer effect - handles countdown when game is playing
143
+ useEffect(() => {
144
+ let timerInterval = null;
145
+ if (isPlaying && timeLeft > 0) {
146
+ timerInterval = setInterval(() => {
147
+ const newTime = timeLeft - 1;
148
+ if (newTime <= 0) {
149
+ // Time's up - stop the game
150
+ setTimeLeft(0);
151
+ stopGame();
152
+ } else {
153
+ setTimeLeft(newTime);
154
+ }
155
+ }, 1000);
156
+ }
157
+ return () => {
158
+ if (timerInterval) {
159
+ clearInterval(timerInterval);
160
+ }
161
+ };
162
+ }, [isPlaying, timeLeft, setTimeLeft, stopGame]);
163
+
164
+ // Start game
165
+ const startGameHandler = useCallback(() => {
166
+ if (!serviceRef.current) return;
167
+
168
+ // Always generate new fidget when starting a new game
169
+ generateNewFidget();
170
+
171
+ // Play game start sound
172
+ playSound(GAME_SOUNDS.BUBBLE_POPPER.START, settings.soundEnabled);
173
+
174
+ // Store uses fixed 60s duration internally
175
+ startGame();
176
+
177
+ // Haptic feedback
178
+ playHaptic(HapticType.MEDIUM, settings.hapticEnabled);
179
+ }, [startGame, settings.soundEnabled, settings.hapticEnabled, generateNewFidget]);
180
+
181
+ // Stop game - simply reset the game state without showing game over popup
182
+ const stopGameHandler = useCallback(() => {
183
+ if (!serviceRef.current) return;
184
+ serviceRef.current.stopGameTimer();
185
+ serviceRef.current.clearParticles();
186
+ resetGame();
187
+ generateNewFidget();
188
+ }, [resetGame, generateNewFidget]);
189
+
190
+ // Reset game
191
+ const resetGameHandler = useCallback(() => {
192
+ if (!serviceRef.current) return;
193
+ serviceRef.current.stopGameTimer();
194
+ serviceRef.current.clearParticles();
195
+ resetGame();
196
+ generateNewFidget();
197
+ }, [resetGame, generateNewFidget]);
198
+
199
+ // Handle bubble pop with stable callback reference
200
+ const handleBubblePop = useCallback((row, col) => {
201
+ if (!serviceRef.current || !fidgetGrid) return;
202
+ const bubble = fidgetGrid.bubbles[row]?.[col];
203
+ if (!bubble || bubble.isPopped) return;
204
+
205
+ // Play pop sound
206
+ playSound(GAME_SOUNDS.BUBBLE_POPPER.POP, settings.soundEnabled);
207
+
208
+ // Pop the bubble in store
209
+ popBubble(row, col);
210
+
211
+ // Haptic feedback
212
+ playHaptic(HapticType.LIGHT, settings.hapticEnabled);
213
+
214
+ // Completion percentage is already calculated efficiently in the store
215
+ }, [fidgetGrid, popBubble, settings.soundEnabled, settings.hapticEnabled]);
216
+
217
+ // Calculate bubble size based on grid - made bigger for Pop It appearance
218
+ const getBubbleSize = useCallback(() => {
219
+ if (!fidgetGrid) return 60;
220
+ const availableWidth = width * 0.85;
221
+ const availableHeight = height * 0.6;
222
+ const maxSize = Math.min(availableWidth / fidgetGrid.size, availableHeight / fidgetGrid.size);
223
+ // Increased minimum and maximum sizes for bigger, more prominent bubbles
224
+ return Math.max(45, Math.min(80, maxSize * 0.9));
225
+ }, [fidgetGrid]);
226
+ return /*#__PURE__*/_jsx(GestureHandlerRootView, {
227
+ style: styles.container,
228
+ children: /*#__PURE__*/_jsxs(View, {
229
+ style: styles.gameContainer,
230
+ children: [/*#__PURE__*/_jsx(GameBackground, {
231
+ width: width,
232
+ height: height,
233
+ isPlaying: isPlaying
234
+ }), /*#__PURE__*/_jsx(ScoreBoard, {
235
+ score: score,
236
+ timeLeft: timeLeft
237
+ }), /*#__PURE__*/_jsx(View, {
238
+ style: styles.gameArea,
239
+ children: fidgetGrid && /*#__PURE__*/_jsx(FidgetGridComponent, {
240
+ grid: fidgetGrid,
241
+ bubbleSize: getBubbleSize(),
242
+ onBubblePop: handleBubblePop,
243
+ hapticEnabled: settings.hapticEnabled,
244
+ isPlaying: isPlaying
245
+ })
246
+ }), /*#__PURE__*/_jsx(GameControlButton, {
247
+ isPlaying: isPlaying,
248
+ gameOver: gameOver,
249
+ onStartGame: startGameHandler,
250
+ onStopGame: stopGameHandler,
251
+ startButtonText: "START POPPING",
252
+ stopButtonText: "STOP GAME",
253
+ startButtonSubtext: "Pop bubbles to relax!",
254
+ stopButtonSubtext: "End current game",
255
+ startButtonColor: "#9c27b0",
256
+ stopButtonColor: "#dc2626",
257
+ startButtonBorderColor: "#ce93d8",
258
+ stopButtonBorderColor: "#f87171"
259
+ }), /*#__PURE__*/_jsx(GameOverModal, {
260
+ visible: gameOver,
261
+ score: score,
262
+ onPlayAgain: resetGameHandler
263
+ }), /*#__PURE__*/_jsx(Modal, {
264
+ visible: showSettingsModal,
265
+ animationType: "slide",
266
+ presentationStyle: "pageSheet",
267
+ onRequestClose: onToggleSettingsModal,
268
+ children: /*#__PURE__*/_jsx(GameSettingsComponent, {
269
+ gameId: "popit-fidget",
270
+ onClose: onToggleSettingsModal || (() => {}),
271
+ settingsStore: settings
272
+ })
273
+ })]
274
+ })
275
+ });
276
+ };
277
+ const styles = StyleSheet.create({
278
+ container: {
279
+ flex: 1
280
+ },
281
+ gameContainer: {
282
+ flex: 1,
283
+ backgroundColor: '#fef7ff' // Very light lavender to complement rainbow theme
284
+ },
285
+ gameArea: {
286
+ flex: 1,
287
+ justifyContent: 'center',
288
+ alignItems: 'center',
289
+ paddingHorizontal: 20
290
+ }
291
+ });
292
+ export { PopitFidget };
293
+ //# sourceMappingURL=PopitFidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useRef","useCallback","View","StyleSheet","Dimensions","Modal","GestureHandlerRootView","usePopitFidgetStore","PopitFidgetService","createGameSettingsStore","playSound","GAME_SOUNDS","playHaptic","HapticType","getDurationForDifficulty","GameBackground","FidgetGrid","FidgetGridComponent","ScoreBoard","GameOverModal","GameControlButton","GameSettings","GameSettingsComponent","jsx","_jsx","jsxs","_jsxs","width","height","get","PopitFidget","showSettingsModal","onToggleSettingsModal","externalSettings","onSettingsChange","fidgetGrid","state","score","timeLeft","isPlaying","gameOver","gameWon","startGame","stopGame","resetGame","setFidgetGrid","popBubble","setTimeLeft","serviceRef","useSettings","current","settings","prevSettingsRef","grid","generateFidgetGrid","difficulty","cleanup","prev","hasChanged","soundEnabled","hapticEnabled","commonSettings","setDifficulty","setSoundEnabled","setHapticEnabled","unsubscribe","subscribe","generateNewFidget","prevDifficultyRef","newDuration","stopGameTimer","startGameTimer","BUBBLE_POPPER","COMPLETE","TIME_UP","timerInterval","setInterval","newTime","clearInterval","startGameHandler","START","MEDIUM","stopGameHandler","clearParticles","resetGameHandler","handleBubblePop","row","col","bubble","bubbles","isPopped","POP","LIGHT","getBubbleSize","availableWidth","availableHeight","maxSize","Math","min","size","max","style","styles","container","children","gameContainer","gameArea","bubbleSize","onBubblePop","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","visible","onPlayAgain","animationType","presentationStyle","onRequestClose","gameId","onClose","settingsStore","create","flex","backgroundColor","justifyContent","alignItems","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["games/popit-fidget/PopitFidget.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ // Popit Fidget Game Constants
4
+ export const POPIT_FIDGET_GAME_CONFIG = {
5
+ GAME_DURATION: 120,
6
+ // seconds
7
+ POINTS_PER_BUBBLE: 10,
8
+ COMPLETION_BONUS: 500,
9
+ TIME_BONUS_MULTIPLIER: 5,
10
+ BUBBLE_SIZE: 40,
11
+ ANIMATION_DURATION: 300,
12
+ PARTICLE_COUNT: 4,
13
+ // Reduced for better performance
14
+ PARTICLE_LIFETIME: 800,
15
+ // Difficulty-based square grid sizes
16
+ GRID_SIZES: {
17
+ easy: 5,
18
+ // 5x5 = 25 bubbles
19
+ medium: 6,
20
+ // 6x6 = 36 bubbles
21
+ hard: 7 // 7x7 = 49 bubbles
22
+ }
23
+ };
24
+ export const POPIT_FIDGET_ANIMATION_CONFIG = {
25
+ POP_SCALE: 1.3,
26
+ POP_DURATION: 200,
27
+ FADE_DURATION: 300,
28
+ BOUNCE_SCALE: 0.9,
29
+ PARTICLE_VELOCITY: 3,
30
+ PARTICLE_GRAVITY: 0.2
31
+ };
32
+ export const POPIT_FIDGET_COLORS = {
33
+ BACKGROUND: '#f5f5f5',
34
+ // Light gray background
35
+ FIDGET_BORDER: '#333',
36
+ FIDGET_SHADOW: 'rgba(0,0,0,0.3)',
37
+ SCORE: '#4a90e2',
38
+ UI: '#6c5ce7',
39
+ POPPED_BUBBLE: '#d0d0d0',
40
+ PARTICLE_GLOW: 'rgba(255,255,255,0.9)',
41
+ // Pop It fidget toy colors - rainbow gradient
42
+ FIDGET_BASE: '#ffffff',
43
+ BUBBLE_SHADOW: 'rgba(0,0,0,0.2)',
44
+ BUBBLE_HIGHLIGHT: 'rgba(255,255,255,0.6)'
45
+ };
46
+
47
+ // Rainbow gradient colors for authentic Pop It fidget toy look - enhanced vibrancy
48
+ export const RAINBOW_COLORS = ['#E91E63',
49
+ // Vibrant pink/magenta (like image)
50
+ '#F44336',
51
+ // Bright red
52
+ '#FF5722',
53
+ // Deep orange
54
+ '#FF9800',
55
+ // Orange
56
+ '#FFC107',
57
+ // Amber/yellow
58
+ '#8E24AA',
59
+ // Deep purple
60
+ '#CDDC39',
61
+ // Lime
62
+ '#8BC34A',
63
+ // Light green
64
+ '#4CAF50',
65
+ // Green
66
+ '#009688',
67
+ // Teal
68
+ '#00BCD4',
69
+ // Cyan
70
+ '#03A9F4',
71
+ // Light blue
72
+ '#2196F3',
73
+ // Blue
74
+ '#3F51B5',
75
+ // Indigo
76
+ '#9C27B0',
77
+ // Purple
78
+ '#E91E63' // Back to vibrant pink for seamless loop
79
+ ];
80
+
81
+ // Legacy bubble colors for backward compatibility
82
+ export const BUBBLE_COLORS = RAINBOW_COLORS;
83
+
84
+ // Popit Fidget Game Theme
85
+ export const POPIT_FIDGET_THEME = {
86
+ backgroundColor: '#f0f8ff',
87
+ // Alice blue
88
+ headerBackgroundColor: 'rgba(106, 92, 206, 0.8)',
89
+ // Purple with transparency
90
+ headerTextColor: '#ffffff',
91
+ sectionBackgroundColor: 'rgba(255, 255, 255, 0.3)',
92
+ sectionTitleColor: '#1f2937',
93
+ // Dark gray
94
+ buttonSelectedColor: '#6c5ce7',
95
+ // Purple
96
+ buttonUnselectedColor: 'rgba(255, 255, 255, 0.4)',
97
+ buttonSelectedTextColor: '#ffffff',
98
+ buttonUnselectedTextColor: '#1f2937',
99
+ switchTrackColorFalse: '#a29bfe',
100
+ switchTrackColorTrue: '#6c5ce7',
101
+ switchThumbColor: '#fd79a8',
102
+ // Pink
103
+ infoTextColor: '#374151',
104
+ // Gray
105
+ resetButtonColor: '#e84393',
106
+ // Pink
107
+ resetButtonTextColor: '#ffffff'
108
+ };
109
+
110
+ // Popit Fidget Difficulty Descriptions
111
+ export const POPIT_FIDGET_DIFFICULTY_DESCRIPTIONS = {
112
+ easy: '60 seconds, smaller fidget grids, relaxing pace',
113
+ medium: '120 seconds, medium grids, satisfying pops',
114
+ hard: '180 seconds, large complex shapes, ultimate satisfaction!'
115
+ };
116
+ //# sourceMappingURL=PopitFidgetConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["POPIT_FIDGET_GAME_CONFIG","GAME_DURATION","POINTS_PER_BUBBLE","COMPLETION_BONUS","TIME_BONUS_MULTIPLIER","BUBBLE_SIZE","ANIMATION_DURATION","PARTICLE_COUNT","PARTICLE_LIFETIME","GRID_SIZES","easy","medium","hard","POPIT_FIDGET_ANIMATION_CONFIG","POP_SCALE","POP_DURATION","FADE_DURATION","BOUNCE_SCALE","PARTICLE_VELOCITY","PARTICLE_GRAVITY","POPIT_FIDGET_COLORS","BACKGROUND","FIDGET_BORDER","FIDGET_SHADOW","SCORE","UI","POPPED_BUBBLE","PARTICLE_GLOW","FIDGET_BASE","BUBBLE_SHADOW","BUBBLE_HIGHLIGHT","RAINBOW_COLORS","BUBBLE_COLORS","POPIT_FIDGET_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","resetButtonColor","resetButtonTextColor","POPIT_FIDGET_DIFFICULTY_DESCRIPTIONS"],"sourceRoot":"../../../../src","sources":["games/popit-fidget/PopitFidgetConstants.ts"],"mappings":";;AAEA;AACA,OAAO,MAAMA,wBAAwB,GAAG;EACtCC,aAAa,EAAE,GAAG;EAAE;EACpBC,iBAAiB,EAAE,EAAE;EACrBC,gBAAgB,EAAE,GAAG;EACrBC,qBAAqB,EAAE,CAAC;EACxBC,WAAW,EAAE,EAAE;EACfC,kBAAkB,EAAE,GAAG;EACvBC,cAAc,EAAE,CAAC;EAAE;EACnBC,iBAAiB,EAAE,GAAG;EACtB;EACAC,UAAU,EAAE;IACVC,IAAI,EAAE,CAAC;IAAK;IACZC,MAAM,EAAE,CAAC;IAAG;IACZC,IAAI,EAAE,CAAC,CAAK;EACd;AACF,CAAU;AAEV,OAAO,MAAMC,6BAA6B,GAAG;EAC3CC,SAAS,EAAE,GAAG;EACdC,YAAY,EAAE,GAAG;EACjBC,aAAa,EAAE,GAAG;EAClBC,YAAY,EAAE,GAAG;EACjBC,iBAAiB,EAAE,CAAC;EACpBC,gBAAgB,EAAE;AACpB,CAAU;AAEV,OAAO,MAAMC,mBAAmB,GAAG;EACjCC,UAAU,EAAE,SAAS;EAAE;EACvBC,aAAa,EAAE,MAAM;EACrBC,aAAa,EAAE,iBAAiB;EAChCC,KAAK,EAAE,SAAS;EAChBC,EAAE,EAAE,SAAS;EACbC,aAAa,EAAE,SAAS;EACxBC,aAAa,EAAE,uBAAuB;EACtC;EACAC,WAAW,EAAE,SAAS;EACtBC,aAAa,EAAE,iBAAiB;EAChCC,gBAAgB,EAAE;AACpB,CAAU;;AAEV;AACA,OAAO,MAAMC,cAAc,GAAG,CAC5B,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS,CAAE;AAAA,CACH;;AAEV;AACA,OAAO,MAAMC,aAAa,GAAGD,cAAc;;AAE3C;AACA,OAAO,MAAME,kBAAqC,GAAG;EACnDC,eAAe,EAAE,SAAS;EAAE;EAC5BC,qBAAqB,EAAE,yBAAyB;EAAE;EAClDC,eAAe,EAAE,SAAS;EAC1BC,sBAAsB,EAAE,0BAA0B;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,SAAS;EAChCC,oBAAoB,EAAE,SAAS;EAC/BC,gBAAgB,EAAE,SAAS;EAAE;EAC7BC,aAAa,EAAE,SAAS;EAAE;EAC1BC,gBAAgB,EAAE,SAAS;EAAE;EAC7BC,oBAAoB,EAAE;AACxB,CAAC;;AAED;AACA,OAAO,MAAMC,oCAAoC,GAAG;EAClDvC,IAAI,EAAE,iDAAiD;EACvDC,MAAM,EAAE,4CAA4C;EACpDC,IAAI,EAAE;AACR,CAAU","ignoreList":[]}
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+
3
+ import { Dimensions } from 'react-native';
4
+ import { POPIT_FIDGET_GAME_CONFIG as GAME_CONFIG, POPIT_FIDGET_ANIMATION_CONFIG as ANIMATION_CONFIG, POPIT_FIDGET_COLORS as COLORS, RAINBOW_COLORS, BUBBLE_COLORS } from "./PopitFidgetConstants.js";
5
+ const {
6
+ width,
7
+ height
8
+ } = Dimensions.get('window');
9
+
10
+ // Constants now imported from PopitFidgetConstants.ts
11
+ // Re-export for backward compatibility
12
+ export { GAME_CONFIG, ANIMATION_CONFIG, COLORS, BUBBLE_COLORS };
13
+
14
+ // Types - Simplified to always use square grids
15
+
16
+ export class PopitFidgetService {
17
+ gameTimerRef = null;
18
+ animationRef = null;
19
+ particles = [];
20
+ constructor() {}
21
+
22
+ // Generate square fidget grid based on difficulty
23
+ generateFidgetGrid(difficulty) {
24
+ const availableWidth = width * 0.85; // Match PopitFidget component calculation
25
+ const availableHeight = height * 0.6; // Match PopitFidget component calculation
26
+
27
+ // Get grid size from difficulty-based configuration
28
+ const gridSize = GAME_CONFIG.GRID_SIZES[difficulty];
29
+
30
+ // Use same bubble size calculation as PopitFidget component
31
+ const maxSize = Math.min(availableWidth / gridSize, availableHeight / gridSize);
32
+ const bubbleSize = Math.max(45, Math.min(80, maxSize * 0.9));
33
+
34
+ // Calculate grid dimensions with proper spacing
35
+ const spacing = bubbleSize * 1.1;
36
+ const gridWidth = (gridSize - 1) * spacing + bubbleSize;
37
+ const gridHeight = (gridSize - 1) * spacing + bubbleSize;
38
+ const bubbles = [];
39
+
40
+ // Generate square grid - all bubbles are included (no shape filtering)
41
+ for (let row = 0; row < gridSize; row++) {
42
+ bubbles[row] = [];
43
+ for (let col = 0; col < gridSize; col++) {
44
+ // Position bubbles with proper spacing to prevent overlap
45
+ const x = col * spacing + bubbleSize / 2;
46
+ const y = row * spacing + bubbleSize / 2;
47
+ bubbles[row][col] = {
48
+ id: `${row}-${col}`,
49
+ row,
50
+ col,
51
+ x,
52
+ y,
53
+ isPopped: false,
54
+ color: this.getRainbowColorForPosition(row, gridSize),
55
+ animationProgress: 0
56
+ };
57
+ }
58
+ }
59
+ return {
60
+ size: gridSize,
61
+ bubbles,
62
+ centerX: gridWidth / 2,
63
+ centerY: gridHeight / 2,
64
+ width: gridWidth,
65
+ height: gridHeight
66
+ };
67
+ }
68
+
69
+ // Get rainbow gradient color based on row position for authentic Pop It look
70
+ getRainbowColorForPosition(row, totalRows) {
71
+ // Create rainbow gradient effect like real Pop It fidget toys
72
+ const colorIndex = Math.floor(row / totalRows * RAINBOW_COLORS.length);
73
+ return RAINBOW_COLORS[colorIndex] || RAINBOW_COLORS[0];
74
+ }
75
+
76
+ // Pop bubble and create particle effect
77
+ popBubble(bubble, onParticleCreated) {
78
+ if (bubble.isPopped) return;
79
+
80
+ // Create pop particles (reduced count for better performance)
81
+ const particles = [];
82
+ const particleCount = 4;
83
+ for (let i = 0; i < particleCount; i++) {
84
+ const angle = i / particleCount * Math.PI * 2;
85
+ const velocity = 2 + Math.random() * 3;
86
+ particles.push({
87
+ id: `${bubble.id}-particle-${i}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,
88
+ position: {
89
+ x: bubble.x,
90
+ y: bubble.y
91
+ },
92
+ velocity: {
93
+ x: Math.cos(angle) * velocity,
94
+ y: Math.sin(angle) * velocity
95
+ },
96
+ color: bubble.color,
97
+ size: 4 + Math.random() * 6,
98
+ lifetime: 0,
99
+ maxLifetime: 500 + Math.random() * 300
100
+ });
101
+ }
102
+ onParticleCreated(particles);
103
+ }
104
+
105
+ // Check if all bubbles are popped
106
+ checkAllBubblesPopped(grid) {
107
+ for (let row = 0; row < grid.size; row++) {
108
+ for (let col = 0; col < grid.size; col++) {
109
+ const bubble = grid.bubbles[row]?.[col];
110
+ if (bubble && !bubble.isPopped) {
111
+ return false;
112
+ }
113
+ }
114
+ }
115
+ return true;
116
+ }
117
+
118
+ // Calculate completion percentage
119
+ calculateCompletionPercentage(grid) {
120
+ let totalBubbles = 0;
121
+ let poppedBubbles = 0;
122
+ for (let row = 0; row < grid.size; row++) {
123
+ for (let col = 0; col < grid.size; col++) {
124
+ const bubble = grid.bubbles[row]?.[col];
125
+ if (bubble) {
126
+ totalBubbles++;
127
+ if (bubble.isPopped) {
128
+ poppedBubbles++;
129
+ }
130
+ }
131
+ }
132
+ }
133
+ return totalBubbles > 0 ? poppedBubbles / totalBubbles * 100 : 0;
134
+ }
135
+
136
+ // Start game timer
137
+ startGameTimer(duration, onTick, onComplete) {
138
+ this.stopGameTimer();
139
+ let timeLeft = duration;
140
+ this.gameTimerRef = setInterval(() => {
141
+ timeLeft -= 1;
142
+ onTick(timeLeft);
143
+ if (timeLeft <= 0) {
144
+ this.stopGameTimer();
145
+ onComplete();
146
+ }
147
+ }, 1000);
148
+ }
149
+
150
+ // Stop game timer
151
+ stopGameTimer() {
152
+ if (this.gameTimerRef) {
153
+ clearInterval(this.gameTimerRef);
154
+ this.gameTimerRef = null;
155
+ }
156
+ }
157
+
158
+ // Update particles animation
159
+ updateParticles(deltaTime) {
160
+ this.particles = this.particles.filter(particle => {
161
+ particle.lifetime += deltaTime;
162
+ particle.position.x += particle.velocity.x;
163
+ particle.position.y += particle.velocity.y;
164
+ particle.velocity.y += 0.2; // Gravity effect
165
+
166
+ return particle.lifetime < particle.maxLifetime;
167
+ });
168
+ return this.particles;
169
+ }
170
+
171
+ // Add particles
172
+ addParticles(newParticles) {
173
+ this.particles.push(...newParticles);
174
+ }
175
+
176
+ // Clear particles
177
+ clearParticles() {
178
+ this.particles = [];
179
+ }
180
+
181
+ // Cleanup
182
+ cleanup() {
183
+ this.stopGameTimer();
184
+ this.clearParticles();
185
+ if (this.animationRef) {
186
+ cancelAnimationFrame(this.animationRef);
187
+ this.animationRef = null;
188
+ }
189
+ }
190
+ }
191
+ //# sourceMappingURL=PopitFidgetService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dimensions","POPIT_FIDGET_GAME_CONFIG","GAME_CONFIG","POPIT_FIDGET_ANIMATION_CONFIG","ANIMATION_CONFIG","POPIT_FIDGET_COLORS","COLORS","RAINBOW_COLORS","BUBBLE_COLORS","width","height","get","PopitFidgetService","gameTimerRef","animationRef","particles","constructor","generateFidgetGrid","difficulty","availableWidth","availableHeight","gridSize","GRID_SIZES","maxSize","Math","min","bubbleSize","max","spacing","gridWidth","gridHeight","bubbles","row","col","x","y","id","isPopped","color","getRainbowColorForPosition","animationProgress","size","centerX","centerY","totalRows","colorIndex","floor","length","popBubble","bubble","onParticleCreated","particleCount","i","angle","PI","velocity","random","push","Date","now","toString","substr","position","cos","sin","lifetime","maxLifetime","checkAllBubblesPopped","grid","calculateCompletionPercentage","totalBubbles","poppedBubbles","startGameTimer","duration","onTick","onComplete","stopGameTimer","timeLeft","setInterval","clearInterval","updateParticles","deltaTime","filter","particle","addParticles","newParticles","clearParticles","cleanup","cancelAnimationFrame"],"sourceRoot":"../../../../src","sources":["games/popit-fidget/PopitFidgetService.ts"],"mappings":"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","ignoreList":[]}