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,190 @@
1
+ "use strict";
2
+
3
+ import { create } from 'zustand';
4
+ import { subscribeWithSelector } from 'zustand/middleware';
5
+ import { GAME_CONFIG } from "./PopitFidgetService.js";
6
+ import { immerMiddleware } from "../../services/GamesService.js";
7
+ // Optimized store with selective subscriptions for low-end devices
8
+ export const usePopitFidgetStore = create()(subscribeWithSelector(immerMiddleware((set, get) => ({
9
+ // Initial state
10
+ score: 0,
11
+ timeLeft: 60,
12
+ // Default duration, will be set based on difficulty
13
+ isPlaying: false,
14
+ gameOver: false,
15
+ gameWon: false,
16
+ fidgetGrid: null,
17
+ particles: [],
18
+ bubblesPopped: 0,
19
+ totalBubbles: 0,
20
+ bubbleStates: {},
21
+ // Actions
22
+ startGame: _gameDuration => {
23
+ // Always use fixed duration regardless of difficulty or passed duration
24
+ const duration = 60;
25
+ set(draft => {
26
+ draft.isPlaying = true;
27
+ draft.gameOver = false;
28
+ draft.gameWon = false;
29
+ draft.timeLeft = duration;
30
+ draft.score = 0;
31
+ draft.bubblesPopped = 0;
32
+ draft.particles = [];
33
+ });
34
+ },
35
+ stopGame: () => {
36
+ set(draft => {
37
+ draft.isPlaying = false;
38
+ draft.gameOver = true;
39
+ });
40
+ },
41
+ resetGame: () => {
42
+ set(draft => {
43
+ draft.score = 0;
44
+ draft.timeLeft = 60; // Fixed 60 seconds
45
+ draft.isPlaying = false;
46
+ draft.gameOver = false;
47
+ draft.gameWon = false;
48
+ draft.fidgetGrid = null;
49
+ draft.particles = [];
50
+ draft.bubblesPopped = 0;
51
+ draft.totalBubbles = 0;
52
+ });
53
+ },
54
+ setFidgetGrid: grid => {
55
+ // For square grids, total bubbles = size * size
56
+ const totalCount = grid.size * grid.size;
57
+ set(draft => {
58
+ draft.fidgetGrid = grid;
59
+ draft.totalBubbles = totalCount;
60
+ draft.bubblesPopped = 0;
61
+
62
+ // Initialize bubble states for all bubbles
63
+ draft.bubbleStates = {};
64
+ for (let row = 0; row < grid.size; row++) {
65
+ for (let col = 0; col < grid.size; col++) {
66
+ const bubble = grid.bubbles[row]?.[col];
67
+ if (bubble) {
68
+ draft.bubbleStates[bubble.id] = {
69
+ isPopped: bubble.isPopped || false,
70
+ popTime: bubble.popTime
71
+ };
72
+ }
73
+ }
74
+ }
75
+ });
76
+ },
77
+ popBubble: (row, col) => {
78
+ set(draft => {
79
+ if (!draft.fidgetGrid) return;
80
+ const bubble = draft.fidgetGrid.bubbles[row]?.[col];
81
+ if (!bubble) return;
82
+
83
+ // Check if bubble is already popped using bubbleStates
84
+ const bubbleState = draft.bubbleStates[bubble.id];
85
+ if (bubbleState?.isPopped) return;
86
+
87
+ // Update only the bubbleStates, not the fidgetGrid
88
+ // This prevents the entire fidgetGrid array from changing references
89
+ draft.bubbleStates[bubble.id] = {
90
+ isPopped: true,
91
+ popTime: Date.now()
92
+ };
93
+ draft.bubblesPopped = draft.bubblesPopped + 1;
94
+
95
+ // Only update score if game is actively playing
96
+ if (draft.isPlaying) {
97
+ // Simple scoring - just add base points per bubble
98
+ const points = GAME_CONFIG.POINTS_PER_BUBBLE;
99
+ draft.score = draft.score + points;
100
+ }
101
+ });
102
+
103
+ // Check if game is won (only if actively playing)
104
+ const state = get();
105
+ if (state.isPlaying) {
106
+ get().checkGameWon();
107
+ }
108
+ },
109
+ updateScore: points => {
110
+ set(draft => {
111
+ draft.score = draft.score + points;
112
+ });
113
+ },
114
+ decrementTime: () => {
115
+ set(draft => {
116
+ const newTimeLeft = Math.max(0, draft.timeLeft - 1);
117
+ draft.timeLeft = newTimeLeft;
118
+ if (newTimeLeft === 0 && draft.isPlaying) {
119
+ draft.isPlaying = false;
120
+ draft.gameOver = true;
121
+ }
122
+ });
123
+ },
124
+ setTimeLeft: timeLeft => {
125
+ set(draft => {
126
+ const newTimeLeft = Math.max(0, timeLeft);
127
+ draft.timeLeft = newTimeLeft;
128
+ if (newTimeLeft === 0 && draft.isPlaying) {
129
+ draft.isPlaying = false;
130
+ draft.gameOver = true;
131
+ }
132
+ });
133
+ },
134
+ setParticles: particles => {
135
+ set(draft => {
136
+ draft.particles = particles;
137
+ });
138
+ },
139
+ addParticles: particles => {
140
+ set(draft => {
141
+ // Limit total particles to prevent memory issues and performance degradation
142
+ const maxParticles = 50;
143
+ const newParticles = [...draft.particles, ...particles];
144
+
145
+ // If we exceed the limit, remove the oldest particles
146
+ if (newParticles.length > maxParticles) {
147
+ draft.particles = newParticles.slice(-maxParticles);
148
+ } else {
149
+ draft.particles = newParticles;
150
+ }
151
+ });
152
+ },
153
+ clearParticles: () => {
154
+ set(draft => {
155
+ draft.particles = [];
156
+ });
157
+ },
158
+ checkGameWon: () => {
159
+ const state = get();
160
+ if (!state.fidgetGrid) return;
161
+
162
+ // Check if all bubbles are popped using bubbleStates
163
+ let allPopped = true;
164
+ for (let row = 0; row < state.fidgetGrid.size; row++) {
165
+ for (let col = 0; col < state.fidgetGrid.size; col++) {
166
+ const bubble = state.fidgetGrid.bubbles[row]?.[col];
167
+ if (bubble) {
168
+ const bubbleState = state.bubbleStates[bubble.id];
169
+ if (!bubbleState?.isPopped) {
170
+ allPopped = false;
171
+ break;
172
+ }
173
+ }
174
+ }
175
+ if (!allPopped) break;
176
+ }
177
+ if (allPopped && state.isPlaying) {
178
+ // Bonus points for completing the fidget
179
+ const completionBonus = GAME_CONFIG.COMPLETION_BONUS;
180
+ const timeBonus = Math.floor(state.timeLeft * GAME_CONFIG.TIME_BONUS_MULTIPLIER);
181
+ set(draft => {
182
+ draft.isPlaying = false;
183
+ draft.gameWon = true;
184
+ draft.gameOver = true;
185
+ draft.score = state.score + completionBonus + timeBonus;
186
+ });
187
+ }
188
+ }
189
+ }))));
190
+ //# sourceMappingURL=PopitFidgetStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","subscribeWithSelector","GAME_CONFIG","immerMiddleware","usePopitFidgetStore","set","get","score","timeLeft","isPlaying","gameOver","gameWon","fidgetGrid","particles","bubblesPopped","totalBubbles","bubbleStates","startGame","_gameDuration","duration","draft","stopGame","resetGame","setFidgetGrid","grid","totalCount","size","row","col","bubble","bubbles","id","isPopped","popTime","popBubble","bubbleState","Date","now","points","POINTS_PER_BUBBLE","state","checkGameWon","updateScore","decrementTime","newTimeLeft","Math","max","setTimeLeft","setParticles","addParticles","maxParticles","newParticles","length","slice","clearParticles","allPopped","completionBonus","COMPLETION_BONUS","timeBonus","floor","TIME_BONUS_MULTIPLIER"],"sourceRoot":"../../../../src","sources":["games/popit-fidget/PopitFidgetStore.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+
3
+ import React, { useState, useCallback, useMemo } from 'react';
4
+ import { View, TouchableOpacity } from 'react-native';
5
+ import { Canvas, Circle, LinearGradient, vec, Shadow } from '@shopify/react-native-skia';
6
+ import { playHaptic, HapticType } from "../../../services/HapticsService.js";
7
+ import { usePopitFidgetStore } from "../PopitFidgetStore.js";
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const BubbleComponent = ({
10
+ bubble,
11
+ size,
12
+ onPop,
13
+ hapticEnabled = true,
14
+ isPlaying
15
+ }) => {
16
+ // Get bubble state from store to prevent re-renders when other bubbles change
17
+ const bubbleState = usePopitFidgetStore(state => state.bubbleStates[bubble.id]);
18
+ const isPopped = bubbleState?.isPopped || false;
19
+ // Simple state for press feedback - no animations to prevent crashes
20
+ const [isPressed, setIsPressed] = useState(false);
21
+
22
+ // Memoize callbacks to prevent unnecessary re-renders
23
+ const handlePop = useCallback(() => {
24
+ // Only allow popping when game is actively playing
25
+ if (!isPlaying || isPopped) return;
26
+
27
+ // Enhanced haptic feedback - stronger for more satisfaction
28
+ playHaptic(HapticType.MEDIUM, hapticEnabled || false);
29
+
30
+ // Trigger pop callback
31
+ onPop();
32
+ }, [onPop, hapticEnabled, isPlaying, isPopped]);
33
+ const handlePressIn = useCallback(() => {
34
+ if (!isPopped && isPlaying) {
35
+ setIsPressed(true);
36
+ // Haptic feedback on press
37
+ playHaptic(HapticType.LIGHT, hapticEnabled || false);
38
+ }
39
+ }, [isPopped, isPlaying, hapticEnabled]);
40
+ const handlePressOut = useCallback(() => {
41
+ setIsPressed(false);
42
+ }, []);
43
+
44
+ // Memoize bubble style to prevent recalculation
45
+ const bubbleStyle = useMemo(() => ({
46
+ position: 'absolute',
47
+ left: bubble.x - size / 2,
48
+ top: bubble.y - size / 2,
49
+ width: size,
50
+ height: size,
51
+ transform: [{
52
+ scale: isPressed ? 0.95 : 1
53
+ }]
54
+ }), [bubble.x, bubble.y, size, isPressed]);
55
+
56
+ // Simplified popped state rendering
57
+ if (isPopped) {
58
+ return /*#__PURE__*/_jsx(View, {
59
+ style: bubbleStyle,
60
+ children: /*#__PURE__*/_jsxs(Canvas, {
61
+ style: {
62
+ width: size,
63
+ height: size
64
+ },
65
+ children: [/*#__PURE__*/_jsx(Circle, {
66
+ cx: size / 2,
67
+ cy: size / 2,
68
+ r: size / 2,
69
+ color: bubble.color,
70
+ children: /*#__PURE__*/_jsx(LinearGradient, {
71
+ start: vec(0, 0),
72
+ end: vec(size, size),
73
+ colors: [`${bubble.color}60`,
74
+ // Muted to show flatness
75
+ `${bubble.color}40`,
76
+ // More muted
77
+ `${bubble.color}30` // Very muted to show depression
78
+ ]
79
+ })
80
+ }), /*#__PURE__*/_jsx(Circle, {
81
+ cx: size / 2,
82
+ cy: size / 2 + 1,
83
+ r: size / 2 - 6,
84
+ color: bubble.color,
85
+ children: /*#__PURE__*/_jsx(LinearGradient, {
86
+ start: vec(size * 0.7, size * 0.7),
87
+ end: vec(size * 0.3, size * 0.3),
88
+ colors: ['#FFFFFF30',
89
+ // Light highlight
90
+ `${bubble.color}80`,
91
+ // Bubble color
92
+ '#00000020' // Subtle shadow
93
+ ]
94
+ })
95
+ }), /*#__PURE__*/_jsx(Circle, {
96
+ cx: size / 2 + size * 0.15,
97
+ cy: size / 2 + size * 0.2,
98
+ r: size * 0.06,
99
+ color: "#FFFFFF",
100
+ opacity: 0.6
101
+ })]
102
+ })
103
+ });
104
+ }
105
+
106
+ // Simplified unpopped bubble rendering with TouchableOpacity
107
+ return /*#__PURE__*/_jsxs(View, {
108
+ style: bubbleStyle,
109
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
110
+ style: {
111
+ width: size,
112
+ height: size
113
+ },
114
+ onPress: handlePop,
115
+ onPressIn: handlePressIn,
116
+ onPressOut: handlePressOut,
117
+ activeOpacity: 1,
118
+ disabled: isPopped || !isPlaying,
119
+ children: /*#__PURE__*/_jsx(View, {
120
+ style: {
121
+ position: 'absolute',
122
+ width: size,
123
+ height: size,
124
+ backgroundColor: 'transparent'
125
+ }
126
+ })
127
+ }), /*#__PURE__*/_jsxs(Canvas, {
128
+ style: {
129
+ position: 'absolute',
130
+ width: size,
131
+ height: size,
132
+ pointerEvents: 'none'
133
+ },
134
+ children: [/*#__PURE__*/_jsx(Circle, {
135
+ cx: size / 2,
136
+ cy: size / 2,
137
+ r: size / 2,
138
+ color: bubble.color,
139
+ children: /*#__PURE__*/_jsx(LinearGradient, {
140
+ start: vec(0, 0),
141
+ end: vec(size, size),
142
+ colors: [`${bubble.color}E0`, `${bubble.color}A0`, `${bubble.color}80`]
143
+ })
144
+ }), /*#__PURE__*/_jsx(Circle, {
145
+ cx: size / 2,
146
+ cy: size / 2 + 2,
147
+ r: size / 2 - 4,
148
+ color: "rgba(0,0,0,0.15)"
149
+ }), /*#__PURE__*/_jsxs(Circle, {
150
+ cx: size / 2,
151
+ cy: size / 2 - 1,
152
+ r: size / 2 - 4,
153
+ color: bubble.color,
154
+ children: [/*#__PURE__*/_jsx(LinearGradient, {
155
+ start: vec(size * 0.2, size * 0.2),
156
+ end: vec(size * 0.8, size * 0.8),
157
+ colors: ['#FFFFFF', '#FFFFFFA0', bubble.color, `${bubble.color}C0`, '#00000020']
158
+ }), /*#__PURE__*/_jsx(Shadow, {
159
+ dx: 0,
160
+ dy: 3,
161
+ blur: 6,
162
+ color: "rgba(0,0,0,0.2)"
163
+ })]
164
+ }), /*#__PURE__*/_jsx(Circle, {
165
+ cx: size / 2 - size * 0.15,
166
+ cy: size / 2 - size * 0.2,
167
+ r: size * 0.12,
168
+ color: "#FFFFFF",
169
+ opacity: 0.8,
170
+ children: /*#__PURE__*/_jsx(LinearGradient, {
171
+ start: vec(0, 0),
172
+ end: vec(size * 0.24, size * 0.24),
173
+ colors: ['#FFFFFF', '#FFFFFF80', '#FFFFFF00']
174
+ })
175
+ }), /*#__PURE__*/_jsx(Circle, {
176
+ cx: size / 2 + size * 0.1,
177
+ cy: size / 2 - size * 0.15,
178
+ r: size * 0.06,
179
+ color: "#FFFFFF",
180
+ opacity: 0.6
181
+ })]
182
+ })]
183
+ });
184
+ };
185
+
186
+ // Memoized BubbleComponent with custom comparison to prevent unnecessary re-renders
187
+ // Note: We don't compare onPop function reference as it may change but functionality remains the same
188
+ // Note: We don't compare bubble.isPopped as we now use store state which is subscribed individually
189
+ const MemoizedBubbleComponent = /*#__PURE__*/React.memo(BubbleComponent, (prevProps, nextProps) => {
190
+ return prevProps.bubble.id === nextProps.bubble.id && prevProps.bubble.x === nextProps.bubble.x && prevProps.bubble.y === nextProps.bubble.y && prevProps.bubble.color === nextProps.bubble.color && prevProps.size === nextProps.size && prevProps.hapticEnabled === nextProps.hapticEnabled && prevProps.isPlaying === nextProps.isPlaying
191
+ // Removed bubble.isPopped comparison as we now use individual store subscriptions
192
+ // Removed onPop comparison as function reference may change but behavior is the same
193
+ ;
194
+ });
195
+ export default MemoizedBubbleComponent;
196
+ //# sourceMappingURL=BubbleComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","useCallback","useMemo","View","TouchableOpacity","Canvas","Circle","LinearGradient","vec","Shadow","playHaptic","HapticType","usePopitFidgetStore","jsx","_jsx","jsxs","_jsxs","BubbleComponent","bubble","size","onPop","hapticEnabled","isPlaying","bubbleState","state","bubbleStates","id","isPopped","isPressed","setIsPressed","handlePop","MEDIUM","handlePressIn","LIGHT","handlePressOut","bubbleStyle","position","left","x","top","y","width","height","transform","scale","style","children","cx","cy","r","color","start","end","colors","opacity","onPress","onPressIn","onPressOut","activeOpacity","disabled","backgroundColor","pointerEvents","dx","dy","blur","MemoizedBubbleComponent","memo","prevProps","nextProps"],"sourceRoot":"../../../../../src","sources":["games/popit-fidget/components/BubbleComponent.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ import React, { useMemo, useCallback } from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import { RAINBOW_COLORS } from "../PopitFidgetConstants.js";
6
+ import BubbleComponent from "./BubbleComponent.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const FidgetGrid = ({
9
+ grid,
10
+ bubbleSize,
11
+ onBubblePop,
12
+ hapticEnabled = true,
13
+ isPlaying
14
+ }) => {
15
+ const padding = 20;
16
+
17
+ // Memoize row color calculation to prevent recalculation
18
+ const getRowColor = useCallback(rowIndex => {
19
+ const colorIndex = Math.floor(rowIndex / (grid.size - 1) * (RAINBOW_COLORS.length - 1));
20
+ return RAINBOW_COLORS[colorIndex] || RAINBOW_COLORS[0];
21
+ }, [grid.size]);
22
+
23
+ // Memoize container dimensions to prevent recalculation
24
+ const containerDimensions = useMemo(() => ({
25
+ width: grid.width + padding * 2,
26
+ height: grid.height + padding * 2
27
+ }), [grid.width, grid.height, padding]);
28
+
29
+ // Memoize bubble pop handlers using a stable reference pattern
30
+ const bubblePopHandlers = useMemo(() => {
31
+ const handlers = {};
32
+ grid.bubbles.forEach((row, rowIndex) => {
33
+ row.forEach((bubble, colIndex) => {
34
+ if (bubble) {
35
+ handlers[bubble.id] = () => onBubblePop(rowIndex, colIndex);
36
+ }
37
+ });
38
+ });
39
+ return handlers;
40
+ }, [grid.bubbles, onBubblePop]);
41
+ return /*#__PURE__*/_jsxs(View, {
42
+ style: [styles.container, containerDimensions],
43
+ children: [/*#__PURE__*/_jsxs(View, {
44
+ style: [styles.backgroundContainer, styles.fidget3D, {
45
+ ...containerDimensions,
46
+ borderRadius: 20,
47
+ overflow: 'hidden'
48
+ }],
49
+ children: [/*#__PURE__*/_jsx(View, {
50
+ style: [styles.outerBorder, {
51
+ ...containerDimensions,
52
+ borderRadius: 20
53
+ }]
54
+ }), /*#__PURE__*/_jsx(View, {
55
+ style: [styles.innerRecess, {
56
+ position: 'absolute',
57
+ left: 8,
58
+ top: 8,
59
+ width: containerDimensions.width - 16,
60
+ height: containerDimensions.height - 16,
61
+ borderRadius: 12,
62
+ overflow: 'hidden'
63
+ }],
64
+ children: grid.bubbles.map((_, rowIndex) => {
65
+ const rowHeight = grid.height / grid.size;
66
+ const rowColor = getRowColor(rowIndex);
67
+ return /*#__PURE__*/_jsx(View, {
68
+ style: {
69
+ position: 'absolute',
70
+ left: padding - 8,
71
+ top: padding - 8 + rowIndex * rowHeight,
72
+ width: grid.width,
73
+ height: rowHeight,
74
+ backgroundColor: `${rowColor}50`
75
+ }
76
+ }, `row-bg-${rowIndex}`);
77
+ })
78
+ })]
79
+ }), /*#__PURE__*/_jsx(View, {
80
+ style: {
81
+ position: 'absolute',
82
+ left: padding,
83
+ top: padding
84
+ },
85
+ children: grid.bubbles.map((row, _rowIndex) => row.map((bubble, _colIndex) => {
86
+ if (!bubble) return null;
87
+ const bubbleHandler = bubblePopHandlers[bubble.id];
88
+ if (!bubbleHandler) return null;
89
+ return /*#__PURE__*/_jsx(BubbleComponent, {
90
+ bubble: bubble,
91
+ size: bubbleSize,
92
+ onPop: bubbleHandler,
93
+ hapticEnabled: hapticEnabled,
94
+ isPlaying: isPlaying
95
+ }, bubble.id);
96
+ }))
97
+ })]
98
+ });
99
+ };
100
+ const styles = StyleSheet.create({
101
+ container: {
102
+ position: 'relative',
103
+ padding: 15
104
+ // Removed flex: 1 since we now use explicit width/height
105
+ // The parent gameArea container handles centering
106
+ },
107
+ backgroundContainer: {
108
+ position: 'absolute'
109
+ },
110
+ fidget3D: {
111
+ // Deep shadow for authentic Pop It depth
112
+ shadowColor: '#000',
113
+ shadowOffset: {
114
+ width: 0,
115
+ height: 8
116
+ },
117
+ shadowOpacity: 0.4,
118
+ shadowRadius: 12,
119
+ elevation: 12
120
+ },
121
+ outerBorder: {
122
+ position: 'absolute',
123
+ backgroundColor: '#f0f0f0',
124
+ // Raised border gradient effect using multiple borders
125
+ borderWidth: 2,
126
+ borderTopColor: '#ffffff',
127
+ borderLeftColor: '#ffffff',
128
+ borderRightColor: '#cccccc',
129
+ borderBottomColor: '#aaaaaa'
130
+ },
131
+ innerRecess: {
132
+ backgroundColor: '#e8e8e8',
133
+ // Recessed inner area with inverted lighting
134
+ borderWidth: 1,
135
+ borderTopColor: '#cccccc',
136
+ borderLeftColor: '#cccccc',
137
+ borderRightColor: '#ffffff',
138
+ borderBottomColor: '#ffffff',
139
+ // Inner shadow effect
140
+ shadowColor: '#000',
141
+ shadowOffset: {
142
+ width: 0,
143
+ height: -2
144
+ },
145
+ shadowOpacity: 0.2,
146
+ shadowRadius: 4,
147
+ elevation: -2
148
+ }
149
+ });
150
+
151
+ // Memoized FidgetGrid component to prevent unnecessary re-renders
152
+ const MemoizedFidgetGrid = /*#__PURE__*/React.memo(FidgetGrid, (prevProps, nextProps) => {
153
+ // Only re-render if grid structure, bubble states, or key props change
154
+ return prevProps.grid.size === nextProps.grid.size && prevProps.grid.width === nextProps.grid.width && prevProps.grid.height === nextProps.grid.height && prevProps.bubbleSize === nextProps.bubbleSize && prevProps.hapticEnabled === nextProps.hapticEnabled && prevProps.isPlaying === nextProps.isPlaying && prevProps.onBubblePop === nextProps.onBubblePop &&
155
+ // Check if bubble states have changed
156
+ JSON.stringify(prevProps.grid.bubbles.map(row => row.map(bubble => bubble ? {
157
+ id: bubble.id,
158
+ isPopped: bubble.isPopped
159
+ } : null))) === JSON.stringify(nextProps.grid.bubbles.map(row => row.map(bubble => bubble ? {
160
+ id: bubble.id,
161
+ isPopped: bubble.isPopped
162
+ } : null)));
163
+ });
164
+ export default MemoizedFidgetGrid;
165
+ //# sourceMappingURL=FidgetGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useMemo","useCallback","View","StyleSheet","RAINBOW_COLORS","BubbleComponent","jsx","_jsx","jsxs","_jsxs","FidgetGrid","grid","bubbleSize","onBubblePop","hapticEnabled","isPlaying","padding","getRowColor","rowIndex","colorIndex","Math","floor","size","length","containerDimensions","width","height","bubblePopHandlers","handlers","bubbles","forEach","row","bubble","colIndex","id","style","styles","container","children","backgroundContainer","fidget3D","borderRadius","overflow","outerBorder","innerRecess","position","left","top","map","_","rowHeight","rowColor","backgroundColor","_rowIndex","_colIndex","bubbleHandler","onPop","create","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","borderWidth","borderTopColor","borderLeftColor","borderRightColor","borderBottomColor","MemoizedFidgetGrid","memo","prevProps","nextProps","JSON","stringify","isPopped"],"sourceRoot":"../../../../../src","sources":["games/popit-fidget/components/FidgetGrid.tsx"],"mappings":"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","ignoreList":[]}