react-native-games 0.3.0 → 0.5.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 (429) hide show
  1. package/README.md +134 -130
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +116 -343
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +182 -0
  5. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -0
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +123 -101
  7. package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -1
  8. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +119 -92
  9. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -1
  10. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +123 -113
  11. package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -1
  12. package/lib/module/games/balloon-blaster/components/GameArea.js +137 -23
  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/ScoreBoard.js +15 -22
  17. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  18. package/lib/module/games/balloon-blaster/components/index.js +0 -4
  19. package/lib/module/games/balloon-blaster/components/index.js.map +1 -1
  20. package/lib/module/games/fruit-ninja/FruitNinja.js +143 -0
  21. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -0
  22. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +148 -0
  23. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -0
  24. package/lib/module/games/{fruit-slicer/FruitSlicerService.js → fruit-ninja/FruitNinjaService.js} +43 -21
  25. package/lib/module/games/fruit-ninja/FruitNinjaService.js.map +1 -0
  26. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +191 -0
  27. package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -0
  28. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/FruitComponent.js +1 -1
  29. package/lib/module/games/fruit-ninja/components/FruitComponent.js.map +1 -0
  30. package/lib/module/games/fruit-ninja/components/GameArea.js +215 -0
  31. package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -0
  32. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/GameBackground.js +250 -304
  33. package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -0
  34. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/ScoreBoard.js +17 -47
  35. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -0
  36. package/lib/module/games/fruit-ninja/components/index.js +7 -0
  37. package/lib/module/games/fruit-ninja/components/index.js.map +1 -0
  38. package/lib/module/games/maze-runner/MazeRunner.js +184 -169
  39. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  40. package/lib/module/games/maze-runner/MazeRunnerConstants.js +100 -0
  41. package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -0
  42. package/lib/module/games/maze-runner/MazeRunnerService.js +37 -14
  43. package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -1
  44. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +5 -4
  45. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js.map +1 -1
  46. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +20 -15
  47. package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -1
  48. package/lib/module/games/maze-runner/components/GameBackground.js +151 -192
  49. package/lib/module/games/maze-runner/components/GameBackground.js.map +1 -1
  50. package/lib/module/games/maze-runner/components/ScoreBoard.js +15 -25
  51. package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
  52. package/lib/module/games/maze-runner/components/WallComponent.js +3 -2
  53. package/lib/module/games/maze-runner/components/WallComponent.js.map +1 -1
  54. package/lib/module/games/maze-runner/components/index.js +0 -2
  55. package/lib/module/games/maze-runner/components/index.js.map +1 -1
  56. package/lib/module/games/popit-fidget/PopitFidget.js +294 -0
  57. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -0
  58. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +113 -0
  59. package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -0
  60. package/lib/module/games/popit-fidget/PopitFidgetService.js +132 -0
  61. package/lib/module/games/popit-fidget/PopitFidgetService.js.map +1 -0
  62. package/lib/module/games/popit-fidget/PopitFidgetStore.js +163 -0
  63. package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -0
  64. package/lib/module/games/popit-fidget/components/BubbleComponent.js +198 -0
  65. package/lib/module/games/popit-fidget/components/BubbleComponent.js.map +1 -0
  66. package/lib/module/games/popit-fidget/components/FidgetGrid.js +165 -0
  67. package/lib/module/games/popit-fidget/components/FidgetGrid.js.map +1 -0
  68. package/lib/module/games/popit-fidget/components/GameBackground.js +177 -0
  69. package/lib/module/games/popit-fidget/components/GameBackground.js.map +1 -0
  70. package/lib/module/games/popit-fidget/components/ScoreBoard.js +75 -0
  71. package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -0
  72. package/lib/module/games/popit-fidget/components/index.js +7 -0
  73. package/lib/module/games/popit-fidget/components/index.js.map +1 -0
  74. package/lib/module/games/space-fighter/SpaceFighter.js +169 -0
  75. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -0
  76. package/lib/module/games/space-fighter/SpaceFighterConstants.js +108 -0
  77. package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -0
  78. package/lib/module/games/{space-traveller/SpaceTravellerService.js → space-fighter/SpaceFighterService.js} +48 -21
  79. package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -0
  80. package/lib/module/games/space-fighter/SpaceFighterStore.js +195 -0
  81. package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -0
  82. package/lib/module/games/{space-traveller → space-fighter}/components/AsteroidComponent.js +7 -5
  83. package/lib/module/games/space-fighter/components/AsteroidComponent.js.map +1 -0
  84. package/lib/module/games/space-fighter/components/GameArea.js +295 -0
  85. package/lib/module/games/space-fighter/components/GameArea.js.map +1 -0
  86. package/lib/module/games/{space-traveller → space-fighter}/components/GameBackground.js +10 -65
  87. package/lib/module/games/space-fighter/components/GameBackground.js.map +1 -0
  88. package/lib/module/games/{space-traveller → space-fighter}/components/ScoreBoard.js +20 -26
  89. package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -0
  90. package/lib/module/games/{space-traveller → space-fighter}/components/Spacecraft3D.js +72 -111
  91. package/lib/module/games/space-fighter/components/Spacecraft3D.js.map +1 -0
  92. package/lib/module/games/space-fighter/components/SpacecraftPath.js +52 -0
  93. package/lib/module/games/space-fighter/components/SpacecraftPath.js.map +1 -0
  94. package/lib/module/games/{space-traveller → space-fighter}/components/index.js +0 -4
  95. package/lib/module/games/space-fighter/components/index.js.map +1 -0
  96. package/lib/module/games/whack-a-mole/WhackAMole.js +263 -0
  97. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -0
  98. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +115 -0
  99. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -0
  100. package/lib/module/games/whack-a-mole/WhackAMoleService.js +120 -0
  101. package/lib/module/games/whack-a-mole/WhackAMoleService.js.map +1 -0
  102. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +172 -0
  103. package/lib/module/games/whack-a-mole/WhackAMoleStore.js.map +1 -0
  104. package/lib/module/games/{cat-popper → whack-a-mole}/components/GameBackground.js +31 -91
  105. package/lib/module/games/whack-a-mole/components/GameBackground.js.map +1 -0
  106. package/lib/module/games/whack-a-mole/components/GameGrid.js +97 -0
  107. package/lib/module/games/whack-a-mole/components/GameGrid.js.map +1 -0
  108. package/lib/module/games/{cat-popper → whack-a-mole}/components/GameHole.js +67 -54
  109. package/lib/module/games/whack-a-mole/components/GameHole.js.map +1 -0
  110. package/lib/module/games/{cat-popper/components/CatCharacter.js → whack-a-mole/components/MoleCharacter.js} +75 -115
  111. package/lib/module/games/whack-a-mole/components/MoleCharacter.js.map +1 -0
  112. package/lib/module/games/{cat-popper → whack-a-mole}/components/ScoreBoard.js +13 -17
  113. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -0
  114. package/lib/module/games/{cat-popper → whack-a-mole}/components/index.js +1 -3
  115. package/lib/module/games/whack-a-mole/components/index.js.map +1 -0
  116. package/lib/module/index.js +4 -3
  117. package/lib/module/index.js.map +1 -1
  118. package/lib/module/services/GamesConstants.js +41 -519
  119. package/lib/module/services/GamesConstants.js.map +1 -1
  120. package/lib/module/services/GamesService.js +35 -23
  121. package/lib/module/services/GamesService.js.map +1 -1
  122. package/lib/module/services/HapticsService.js +77 -0
  123. package/lib/module/services/HapticsService.js.map +1 -0
  124. package/lib/module/services/SoundsService.js +171 -0
  125. package/lib/module/services/SoundsService.js.map +1 -0
  126. package/lib/module/shared/helpers/AnimationFrame.js +120 -0
  127. package/lib/module/shared/helpers/AnimationFrame.js.map +1 -0
  128. package/lib/module/shared/helpers/AnimationTracker.js +89 -0
  129. package/lib/module/shared/helpers/AnimationTracker.js.map +1 -0
  130. package/lib/module/shared/helpers/ErrorHandler.js +269 -0
  131. package/lib/module/shared/helpers/ErrorHandler.js.map +1 -0
  132. package/lib/module/shared/helpers/GameControlButton.js +219 -0
  133. package/lib/module/shared/helpers/GameControlButton.js.map +1 -0
  134. package/lib/module/{games/balloon-blaster/components → shared/helpers}/GameOverModal.js +25 -17
  135. package/lib/module/shared/helpers/GameOverModal.js.map +1 -0
  136. package/lib/module/shared/helpers/GameSettingsModal.js +287 -0
  137. package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -0
  138. package/lib/module/shared/helpers/ParticleBlast.js +133 -0
  139. package/lib/module/shared/helpers/ParticleBlast.js.map +1 -0
  140. package/lib/module/shared/helpers/ResponsiveScoreBoard.js +81 -0
  141. package/lib/module/shared/helpers/ResponsiveScoreBoard.js.map +1 -0
  142. package/lib/module/shared/helpers/index.js +12 -0
  143. package/lib/module/shared/helpers/index.js.map +1 -0
  144. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +2 -14
  145. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  146. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +144 -0
  147. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts.map +1 -0
  148. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +1 -1
  149. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -1
  150. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +12 -2
  151. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -1
  152. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -1
  153. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +1 -15
  154. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -1
  155. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -1
  156. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +1 -7
  157. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  158. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +0 -4
  159. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -1
  160. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +4 -0
  161. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -0
  162. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +112 -0
  163. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts.map +1 -0
  164. package/lib/typescript/src/games/{fruit-slicer/FruitSlicerService.d.ts → fruit-ninja/FruitNinjaService.d.ts} +13 -5
  165. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts.map +1 -0
  166. package/lib/typescript/src/games/{fruit-slicer/FruitSlicerStore.d.ts → fruit-ninja/FruitNinjaStore.d.ts} +13 -4
  167. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts.map +1 -0
  168. package/lib/typescript/src/games/{fruit-slicer → fruit-ninja}/components/FruitComponent.d.ts +1 -1
  169. package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts.map +1 -0
  170. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +3 -0
  171. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts.map +1 -0
  172. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -0
  173. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +3 -0
  174. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -0
  175. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts +5 -0
  176. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts.map +1 -0
  177. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +2 -16
  178. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  179. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +41 -0
  180. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts.map +1 -0
  181. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts +4 -2
  182. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -1
  183. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts.map +1 -1
  184. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -1
  185. package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts +2 -1
  186. package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts.map +1 -1
  187. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
  188. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts.map +1 -1
  189. package/lib/typescript/src/games/maze-runner/components/index.d.ts +0 -2
  190. package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -1
  191. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +5 -0
  192. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -0
  193. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +45 -0
  194. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts.map +1 -0
  195. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +33 -0
  196. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts.map +1 -0
  197. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +36 -0
  198. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -0
  199. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +12 -0
  200. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts.map +1 -0
  201. package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +12 -0
  202. package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts.map +1 -0
  203. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts +9 -0
  204. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts.map +1 -0
  205. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +8 -0
  206. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -0
  207. package/lib/typescript/src/games/popit-fidget/components/index.d.ts +5 -0
  208. package/lib/typescript/src/games/popit-fidget/components/index.d.ts.map +1 -0
  209. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +4 -0
  210. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -0
  211. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +71 -0
  212. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts.map +1 -0
  213. package/lib/typescript/src/games/{space-traveller/SpaceTravellerService.d.ts → space-fighter/SpaceFighterService.d.ts} +7 -4
  214. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -0
  215. package/lib/typescript/src/games/{space-traveller/SpaceTravellerStore.d.ts → space-fighter/SpaceFighterStore.d.ts} +12 -4
  216. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -0
  217. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +8 -0
  218. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts.map +1 -0
  219. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +3 -0
  220. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -0
  221. package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts.map +1 -0
  222. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +3 -0
  223. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -0
  224. package/lib/typescript/src/games/{space-traveller → space-fighter}/components/Spacecraft3D.d.ts +1 -1
  225. package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts.map +1 -0
  226. package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts.map +1 -0
  227. package/lib/typescript/src/games/{space-traveller → space-fighter}/components/index.d.ts +0 -4
  228. package/lib/typescript/src/games/space-fighter/components/index.d.ts.map +1 -0
  229. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +4 -0
  230. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -0
  231. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +79 -0
  232. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts.map +1 -0
  233. package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +33 -0
  234. package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts.map +1 -0
  235. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +41 -0
  236. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts.map +1 -0
  237. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts.map +1 -0
  238. package/lib/typescript/src/games/{cat-popper → whack-a-mole}/components/GameGrid.d.ts +2 -2
  239. package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts.map +1 -0
  240. package/lib/typescript/src/games/{cat-popper → whack-a-mole}/components/GameHole.d.ts +3 -2
  241. package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts.map +1 -0
  242. package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +7 -0
  243. package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts.map +1 -0
  244. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -0
  245. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts +6 -0
  246. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts.map +1 -0
  247. package/lib/typescript/src/index.d.ts +4 -3
  248. package/lib/typescript/src/index.d.ts.map +1 -1
  249. package/lib/typescript/src/services/GamesConstants.d.ts +61 -340
  250. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  251. package/lib/typescript/src/services/GamesService.d.ts +21 -3
  252. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  253. package/lib/typescript/src/services/HapticsService.d.ts +16 -0
  254. package/lib/typescript/src/services/HapticsService.d.ts.map +1 -0
  255. package/lib/typescript/src/services/SoundsService.d.ts +154 -0
  256. package/lib/typescript/src/services/SoundsService.d.ts.map +1 -0
  257. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts +41 -0
  258. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +1 -0
  259. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts +45 -0
  260. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +1 -0
  261. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts +124 -0
  262. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +1 -0
  263. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts +17 -0
  264. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +1 -0
  265. package/lib/typescript/src/{games/cat-popper/components → shared/helpers}/GameOverModal.d.ts +5 -0
  266. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -0
  267. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts +9 -0
  268. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +1 -0
  269. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts +12 -0
  270. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -0
  271. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts +42 -0
  272. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts.map +1 -0
  273. package/lib/typescript/src/shared/helpers/index.d.ts +13 -0
  274. package/lib/typescript/src/shared/helpers/index.d.ts.map +1 -0
  275. package/package.json +9 -6
  276. package/lib/module/games/balloon-blaster/components/GameControls.js +0 -229
  277. package/lib/module/games/balloon-blaster/components/GameControls.js.map +0 -1
  278. package/lib/module/games/balloon-blaster/components/GameOverModal.js.map +0 -1
  279. package/lib/module/games/balloon-blaster/components/ParticleSystem.js +0 -52
  280. package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +0 -1
  281. package/lib/module/games/balloon-blaster/components/SliceTrail.js +0 -58
  282. package/lib/module/games/balloon-blaster/components/SliceTrail.js.map +0 -1
  283. package/lib/module/games/cat-popper/CatPopper.js +0 -230
  284. package/lib/module/games/cat-popper/CatPopper.js.map +0 -1
  285. package/lib/module/games/cat-popper/CatPopperService.js +0 -100
  286. package/lib/module/games/cat-popper/CatPopperService.js.map +0 -1
  287. package/lib/module/games/cat-popper/CatPopperStore.js +0 -113
  288. package/lib/module/games/cat-popper/CatPopperStore.js.map +0 -1
  289. package/lib/module/games/cat-popper/components/CatCharacter.js.map +0 -1
  290. package/lib/module/games/cat-popper/components/GameBackground.js.map +0 -1
  291. package/lib/module/games/cat-popper/components/GameControls.js +0 -230
  292. package/lib/module/games/cat-popper/components/GameControls.js.map +0 -1
  293. package/lib/module/games/cat-popper/components/GameGrid.js +0 -66
  294. package/lib/module/games/cat-popper/components/GameGrid.js.map +0 -1
  295. package/lib/module/games/cat-popper/components/GameHole.js.map +0 -1
  296. package/lib/module/games/cat-popper/components/GameOverModal.js +0 -131
  297. package/lib/module/games/cat-popper/components/GameOverModal.js.map +0 -1
  298. package/lib/module/games/cat-popper/components/ScoreBoard.js.map +0 -1
  299. package/lib/module/games/cat-popper/components/index.js.map +0 -1
  300. package/lib/module/games/fruit-slicer/FruitSlicer.js +0 -411
  301. package/lib/module/games/fruit-slicer/FruitSlicer.js.map +0 -1
  302. package/lib/module/games/fruit-slicer/FruitSlicerService.js.map +0 -1
  303. package/lib/module/games/fruit-slicer/FruitSlicerStore.js +0 -156
  304. package/lib/module/games/fruit-slicer/FruitSlicerStore.js.map +0 -1
  305. package/lib/module/games/fruit-slicer/components/FruitComponent.js.map +0 -1
  306. package/lib/module/games/fruit-slicer/components/GameArea.js +0 -50
  307. package/lib/module/games/fruit-slicer/components/GameArea.js.map +0 -1
  308. package/lib/module/games/fruit-slicer/components/GameBackground.js.map +0 -1
  309. package/lib/module/games/fruit-slicer/components/GameControls.js +0 -230
  310. package/lib/module/games/fruit-slicer/components/GameControls.js.map +0 -1
  311. package/lib/module/games/fruit-slicer/components/GameOverModal.js +0 -189
  312. package/lib/module/games/fruit-slicer/components/GameOverModal.js.map +0 -1
  313. package/lib/module/games/fruit-slicer/components/ParticleSystem.js +0 -52
  314. package/lib/module/games/fruit-slicer/components/ParticleSystem.js.map +0 -1
  315. package/lib/module/games/fruit-slicer/components/ScoreBoard.js.map +0 -1
  316. package/lib/module/games/fruit-slicer/components/SliceTrail.js +0 -58
  317. package/lib/module/games/fruit-slicer/components/SliceTrail.js.map +0 -1
  318. package/lib/module/games/fruit-slicer/components/index.js +0 -11
  319. package/lib/module/games/fruit-slicer/components/index.js.map +0 -1
  320. package/lib/module/games/maze-runner/components/GameControls.js +0 -129
  321. package/lib/module/games/maze-runner/components/GameControls.js.map +0 -1
  322. package/lib/module/games/maze-runner/components/GameOverModal.js +0 -134
  323. package/lib/module/games/maze-runner/components/GameOverModal.js.map +0 -1
  324. package/lib/module/games/space-traveller/SpaceTraveller.js +0 -393
  325. package/lib/module/games/space-traveller/SpaceTraveller.js.map +0 -1
  326. package/lib/module/games/space-traveller/SpaceTravellerService.js.map +0 -1
  327. package/lib/module/games/space-traveller/SpaceTravellerStore.js +0 -139
  328. package/lib/module/games/space-traveller/SpaceTravellerStore.js.map +0 -1
  329. package/lib/module/games/space-traveller/components/AsteroidComponent.js.map +0 -1
  330. package/lib/module/games/space-traveller/components/GameArea.js +0 -75
  331. package/lib/module/games/space-traveller/components/GameArea.js.map +0 -1
  332. package/lib/module/games/space-traveller/components/GameBackground.js.map +0 -1
  333. package/lib/module/games/space-traveller/components/GameControls.js +0 -177
  334. package/lib/module/games/space-traveller/components/GameControls.js.map +0 -1
  335. package/lib/module/games/space-traveller/components/GameOverModal.js +0 -182
  336. package/lib/module/games/space-traveller/components/GameOverModal.js.map +0 -1
  337. package/lib/module/games/space-traveller/components/ParticleComponent.js +0 -34
  338. package/lib/module/games/space-traveller/components/ParticleComponent.js.map +0 -1
  339. package/lib/module/games/space-traveller/components/ScoreBoard.js.map +0 -1
  340. package/lib/module/games/space-traveller/components/SettingsModal.js +0 -222
  341. package/lib/module/games/space-traveller/components/SettingsModal.js.map +0 -1
  342. package/lib/module/games/space-traveller/components/Spacecraft3D.js.map +0 -1
  343. package/lib/module/games/space-traveller/components/SpacecraftPath.js +0 -37
  344. package/lib/module/games/space-traveller/components/SpacecraftPath.js.map +0 -1
  345. package/lib/module/games/space-traveller/components/index.js.map +0 -1
  346. package/lib/module/shared/settings/GameSettings.js +0 -295
  347. package/lib/module/shared/settings/GameSettings.js.map +0 -1
  348. package/lib/module/shared/settings/SettingsService.js +0 -119
  349. package/lib/module/shared/settings/SettingsService.js.map +0 -1
  350. package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts +0 -10
  351. package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts.map +0 -1
  352. package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts +0 -9
  353. package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts.map +0 -1
  354. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts +0 -8
  355. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +0 -1
  356. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts +0 -11
  357. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts.map +0 -1
  358. package/lib/typescript/src/games/cat-popper/CatPopper.d.ts +0 -13
  359. package/lib/typescript/src/games/cat-popper/CatPopper.d.ts.map +0 -1
  360. package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts +0 -32
  361. package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts.map +0 -1
  362. package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts +0 -21
  363. package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts.map +0 -1
  364. package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts +0 -7
  365. package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts.map +0 -1
  366. package/lib/typescript/src/games/cat-popper/components/GameBackground.d.ts.map +0 -1
  367. package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts +0 -10
  368. package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts.map +0 -1
  369. package/lib/typescript/src/games/cat-popper/components/GameGrid.d.ts.map +0 -1
  370. package/lib/typescript/src/games/cat-popper/components/GameHole.d.ts.map +0 -1
  371. package/lib/typescript/src/games/cat-popper/components/GameOverModal.d.ts.map +0 -1
  372. package/lib/typescript/src/games/cat-popper/components/ScoreBoard.d.ts.map +0 -1
  373. package/lib/typescript/src/games/cat-popper/components/index.d.ts +0 -8
  374. package/lib/typescript/src/games/cat-popper/components/index.d.ts.map +0 -1
  375. package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts +0 -16
  376. package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts.map +0 -1
  377. package/lib/typescript/src/games/fruit-slicer/FruitSlicerService.d.ts.map +0 -1
  378. package/lib/typescript/src/games/fruit-slicer/FruitSlicerStore.d.ts.map +0 -1
  379. package/lib/typescript/src/games/fruit-slicer/components/FruitComponent.d.ts.map +0 -1
  380. package/lib/typescript/src/games/fruit-slicer/components/GameArea.d.ts +0 -17
  381. package/lib/typescript/src/games/fruit-slicer/components/GameArea.d.ts.map +0 -1
  382. package/lib/typescript/src/games/fruit-slicer/components/GameBackground.d.ts.map +0 -1
  383. package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts +0 -10
  384. package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts.map +0 -1
  385. package/lib/typescript/src/games/fruit-slicer/components/GameOverModal.d.ts +0 -9
  386. package/lib/typescript/src/games/fruit-slicer/components/GameOverModal.d.ts.map +0 -1
  387. package/lib/typescript/src/games/fruit-slicer/components/ParticleSystem.d.ts +0 -8
  388. package/lib/typescript/src/games/fruit-slicer/components/ParticleSystem.d.ts.map +0 -1
  389. package/lib/typescript/src/games/fruit-slicer/components/ScoreBoard.d.ts +0 -9
  390. package/lib/typescript/src/games/fruit-slicer/components/ScoreBoard.d.ts.map +0 -1
  391. package/lib/typescript/src/games/fruit-slicer/components/SliceTrail.d.ts +0 -11
  392. package/lib/typescript/src/games/fruit-slicer/components/SliceTrail.d.ts.map +0 -1
  393. package/lib/typescript/src/games/fruit-slicer/components/index.d.ts +0 -9
  394. package/lib/typescript/src/games/fruit-slicer/components/index.d.ts.map +0 -1
  395. package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts +0 -10
  396. package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts.map +0 -1
  397. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts +0 -11
  398. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts.map +0 -1
  399. package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts +0 -17
  400. package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts.map +0 -1
  401. package/lib/typescript/src/games/space-traveller/SpaceTravellerService.d.ts.map +0 -1
  402. package/lib/typescript/src/games/space-traveller/SpaceTravellerStore.d.ts.map +0 -1
  403. package/lib/typescript/src/games/space-traveller/components/AsteroidComponent.d.ts +0 -9
  404. package/lib/typescript/src/games/space-traveller/components/AsteroidComponent.d.ts.map +0 -1
  405. package/lib/typescript/src/games/space-traveller/components/GameArea.d.ts +0 -17
  406. package/lib/typescript/src/games/space-traveller/components/GameArea.d.ts.map +0 -1
  407. package/lib/typescript/src/games/space-traveller/components/GameBackground.d.ts.map +0 -1
  408. package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts +0 -10
  409. package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts.map +0 -1
  410. package/lib/typescript/src/games/space-traveller/components/GameOverModal.d.ts +0 -9
  411. package/lib/typescript/src/games/space-traveller/components/GameOverModal.d.ts.map +0 -1
  412. package/lib/typescript/src/games/space-traveller/components/ParticleComponent.d.ts +0 -8
  413. package/lib/typescript/src/games/space-traveller/components/ParticleComponent.d.ts.map +0 -1
  414. package/lib/typescript/src/games/space-traveller/components/ScoreBoard.d.ts +0 -8
  415. package/lib/typescript/src/games/space-traveller/components/ScoreBoard.d.ts.map +0 -1
  416. package/lib/typescript/src/games/space-traveller/components/SettingsModal.d.ts +0 -9
  417. package/lib/typescript/src/games/space-traveller/components/SettingsModal.d.ts.map +0 -1
  418. package/lib/typescript/src/games/space-traveller/components/Spacecraft3D.d.ts.map +0 -1
  419. package/lib/typescript/src/games/space-traveller/components/SpacecraftPath.d.ts.map +0 -1
  420. package/lib/typescript/src/games/space-traveller/components/index.d.ts.map +0 -1
  421. package/lib/typescript/src/shared/settings/GameSettings.d.ts +0 -36
  422. package/lib/typescript/src/shared/settings/GameSettings.d.ts.map +0 -1
  423. package/lib/typescript/src/shared/settings/SettingsService.d.ts +0 -32
  424. package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +0 -1
  425. /package/lib/typescript/src/games/{cat-popper → fruit-ninja}/components/GameBackground.d.ts +0 -0
  426. /package/lib/typescript/src/games/{fruit-slicer → space-fighter}/components/GameBackground.d.ts +0 -0
  427. /package/lib/typescript/src/games/{space-traveller → space-fighter}/components/SpacecraftPath.d.ts +0 -0
  428. /package/lib/typescript/src/games/{space-traveller → whack-a-mole}/components/GameBackground.d.ts +0 -0
  429. /package/lib/typescript/src/games/{cat-popper → whack-a-mole}/components/ScoreBoard.d.ts +0 -0
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+
3
+ import React, { useRef, useEffect, useCallback, useState, useMemo } from 'react';
4
+ import { View, Text, StyleSheet, Dimensions } from 'react-native';
5
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
6
+ import { useSpaceFighterStore } from "../SpaceFighterStore.js";
7
+ import { createSpaceFighterService } from "../SpaceFighterService.js";
8
+ import { playSound, GAME_SOUNDS } from "../../../services/SoundsService.js";
9
+ import { playHaptic, HapticType } from "../../../services/HapticsService.js";
10
+ import { ParticleBlast } from "../../../shared/helpers/index.js";
11
+ import { AsteroidComponent } from "./AsteroidComponent.js";
12
+ import { Spacecraft3D } from "./Spacecraft3D.js";
13
+ import { SpacecraftPath } from "./SpacecraftPath.js";
14
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
+ const {
16
+ width,
17
+ height
18
+ } = Dimensions.get('window');
19
+
20
+ // Self-contained GameArea component following FruitNinja pattern with performance optimizations
21
+ export const GameArea = /*#__PURE__*/React.memo(() => {
22
+ // Optimized store subscriptions - read only what's needed for rendering
23
+ const asteroids = useSpaceFighterStore(state => state.asteroids);
24
+ const spacecraft = useSpaceFighterStore(state => state.spacecraft);
25
+ const spacecraftPath = useSpaceFighterStore(state => state.spacecraftPath);
26
+ const isControllingSpacecraft = useSpaceFighterStore(state => state.isControllingSpacecraft);
27
+ const isPlaying = useSpaceFighterStore(state => state.isPlaying);
28
+
29
+ // Get store actions independently (these don't cause re-renders)
30
+ const updateSpacecraft = useSpaceFighterStore(state => state.updateSpacecraft);
31
+ const setSpacecraftPath = useSpaceFighterStore(state => state.setSpacecraftPath);
32
+ const setIsControllingSpacecraft = useSpaceFighterStore(state => state.setIsControllingSpacecraft);
33
+ const markAsteroidPassed = useSpaceFighterStore(state => state.markAsteroidPassed);
34
+ const loseLife = useSpaceFighterStore(state => state.loseLife);
35
+
36
+ // Self-contained component - no external settings needed
37
+
38
+ // Game service ref
39
+ const gameService = useRef(createSpaceFighterService(width, height)).current;
40
+
41
+ // Initialize spacecraft position on mount
42
+ useEffect(() => {
43
+ const initialSpacecraft = gameService.getInitialSpacecraft();
44
+ updateSpacecraft(initialSpacecraft);
45
+ }, [gameService, updateSpacecraft]);
46
+
47
+ // Spacecraft control refs
48
+ const currentSpacecraftPath = useRef([]);
49
+ const initialSpacecraftPosition = useRef(null);
50
+ const initialTouchPosition = useRef(null);
51
+ const pendingSpacecraftUpdate = useRef(null);
52
+ const animationFrameId = useRef(null);
53
+ const lastCollisionTime = useRef(0);
54
+
55
+ // State for managing active particle blasts
56
+ const [activeBlasts, setActiveBlasts] = useState([]);
57
+
58
+ // Memoized particle blast colors for performance
59
+ const particleColors = useMemo(() => ['#ff6b6b', '#ff8e53', '#ff6b35'], []);
60
+
61
+ // Sound and haptic feedback functions (using default enabled state)
62
+ const playSuccessSound = useCallback(() => {
63
+ playSound(GAME_SOUNDS.SPACE_FIGHTER.SUCCESS, true);
64
+ playHaptic(HapticType.LIGHT, true);
65
+ }, []);
66
+ const playCollisionSound = useCallback(() => {
67
+ playSound(GAME_SOUNDS.SPACE_FIGHTER.COLLISION, true);
68
+ playHaptic(HapticType.HEAVY, true);
69
+ }, []);
70
+
71
+ // Spacecraft control functions
72
+ const handleSpacecraftControlStart = useCallback((x, y) => {
73
+ const currentSpacecraft = useSpaceFighterStore.getState().spacecraft;
74
+ const controlledSpacecraft = gameService.controlSpacecraft({
75
+ ...currentSpacecraft
76
+ }, x, y);
77
+ updateSpacecraft(controlledSpacecraft);
78
+ setIsControllingSpacecraft(true);
79
+ currentSpacecraftPath.current = [{
80
+ x,
81
+ y
82
+ }];
83
+ setSpacecraftPath([{
84
+ x,
85
+ y
86
+ }]);
87
+ }, [gameService, updateSpacecraft, setIsControllingSpacecraft, setSpacecraftPath]);
88
+ const processPendingSpacecraftUpdate = useCallback(() => {
89
+ if (pendingSpacecraftUpdate.current) {
90
+ const {
91
+ x,
92
+ y
93
+ } = pendingSpacecraftUpdate.current;
94
+ const currentSpacecraft = useSpaceFighterStore.getState().spacecraft;
95
+ const controlledSpacecraft = gameService.controlSpacecraft({
96
+ ...currentSpacecraft
97
+ }, x, y);
98
+ updateSpacecraft(controlledSpacecraft);
99
+
100
+ // Throttle path updates to reduce re-renders
101
+ currentSpacecraftPath.current.push({
102
+ x,
103
+ y
104
+ });
105
+ if (currentSpacecraftPath.current.length > 8) {
106
+ currentSpacecraftPath.current.shift();
107
+ }
108
+
109
+ // Only update path every 3rd update to reduce re-renders
110
+ if (currentSpacecraftPath.current.length % 3 === 0) {
111
+ setSpacecraftPath([...currentSpacecraftPath.current]);
112
+ }
113
+ pendingSpacecraftUpdate.current = null;
114
+ }
115
+ animationFrameId.current = null;
116
+ }, [gameService, updateSpacecraft, setSpacecraftPath]);
117
+ const handleSpacecraftControlMove = useCallback((x, y) => {
118
+ pendingSpacecraftUpdate.current = {
119
+ x,
120
+ y
121
+ };
122
+ if (animationFrameId.current === null) {
123
+ animationFrameId.current = requestAnimationFrame(processPendingSpacecraftUpdate);
124
+ }
125
+ }, [processPendingSpacecraftUpdate]);
126
+ const handleSpacecraftControlEnd = useCallback(() => {
127
+ if (animationFrameId.current !== null) {
128
+ cancelAnimationFrame(animationFrameId.current);
129
+ animationFrameId.current = null;
130
+ }
131
+ if (pendingSpacecraftUpdate.current) {
132
+ processPendingSpacecraftUpdate();
133
+ }
134
+ const currentSpacecraft = useSpaceFighterStore.getState().spacecraft;
135
+ const releasedSpacecraft = gameService.releaseSpacecraft({
136
+ ...currentSpacecraft
137
+ });
138
+ updateSpacecraft(releasedSpacecraft);
139
+ setIsControllingSpacecraft(false);
140
+ setTimeout(() => {
141
+ currentSpacecraftPath.current = [];
142
+ setSpacecraftPath([]);
143
+ }, 300);
144
+ }, [gameService, updateSpacecraft, setIsControllingSpacecraft, setSpacecraftPath, processPendingSpacecraftUpdate]);
145
+
146
+ // Optimized collision detection with reduced store access
147
+ useEffect(() => {
148
+ if (!isPlaying) return;
149
+ const interval = setInterval(() => {
150
+ // Single store access for better performance
151
+ const state = useSpaceFighterStore.getState();
152
+ const currentSpacecraft = state.spacecraft;
153
+ const currentAsteroids = state.asteroids;
154
+
155
+ // Skip if no asteroids to check
156
+ if (currentAsteroids.length === 0) return;
157
+ const collision = gameService.checkCollision(currentSpacecraft, currentAsteroids);
158
+ const now = Date.now();
159
+ if (collision.collision && now - lastCollisionTime.current > 1000) {
160
+ lastCollisionTime.current = now;
161
+ playCollisionSound();
162
+
163
+ // Create particle blast at collision point
164
+ const blastId = `blast-${now}`;
165
+ setActiveBlasts(prev => [...prev, {
166
+ id: blastId,
167
+ x: currentSpacecraft.x,
168
+ y: currentSpacecraft.y
169
+ }]);
170
+
171
+ // Remove blast after animation
172
+ setTimeout(() => {
173
+ setActiveBlasts(prev => prev.filter(blast => blast.id !== blastId));
174
+ }, 800);
175
+ loseLife(); // This now handles spacecraft position reset internally
176
+ return;
177
+ }
178
+
179
+ // Check asteroid passes for scoring
180
+ const passedAsteroids = gameService.checkAsteroidPass(currentSpacecraft, currentAsteroids);
181
+ if (passedAsteroids.length > 0) {
182
+ passedAsteroids.forEach(pairId => {
183
+ markAsteroidPassed(pairId);
184
+ playSuccessSound();
185
+ });
186
+ }
187
+ }, 100); // Slightly increased interval for better performance (was 80ms)
188
+
189
+ return () => clearInterval(interval);
190
+ }, [isPlaying, gameService, playCollisionSound, loseLife, updateSpacecraft, markAsteroidPassed, playSuccessSound]);
191
+
192
+ // Memoized gesture handling for better performance
193
+ const panGesture = useMemo(() => Gesture.Pan().onStart(event => {
194
+ const currentSpacecraft = useSpaceFighterStore.getState().spacecraft;
195
+ initialSpacecraftPosition.current = {
196
+ x: currentSpacecraft.x,
197
+ y: currentSpacecraft.y
198
+ };
199
+ initialTouchPosition.current = {
200
+ x: event.absoluteX,
201
+ y: event.absoluteY
202
+ };
203
+ handleSpacecraftControlStart(currentSpacecraft.x, currentSpacecraft.y);
204
+ }).onUpdate(event => {
205
+ if (!initialSpacecraftPosition.current || !initialTouchPosition.current) {
206
+ return;
207
+ }
208
+ const dx = event.absoluteX - initialTouchPosition.current.x;
209
+ const newX = initialSpacecraftPosition.current.x + dx;
210
+ const newY = initialSpacecraftPosition.current.y;
211
+ handleSpacecraftControlMove(newX, newY);
212
+ }).onEnd(() => {
213
+ initialTouchPosition.current = null;
214
+ handleSpacecraftControlEnd();
215
+ }).onFinalize(() => {
216
+ initialTouchPosition.current = null;
217
+ handleSpacecraftControlEnd();
218
+ }).runOnJS(true), [handleSpacecraftControlStart, handleSpacecraftControlMove, handleSpacecraftControlEnd]);
219
+ return /*#__PURE__*/_jsxs(View, {
220
+ style: [styles.gameArea],
221
+ children: [/*#__PURE__*/_jsx(SpacecraftPath, {
222
+ path: spacecraftPath
223
+ }), asteroids.map(asteroid => /*#__PURE__*/_jsx(AsteroidComponent, {
224
+ asteroid: asteroid
225
+ }, asteroid.id)), activeBlasts.map(blast => /*#__PURE__*/_jsx(ParticleBlast, {
226
+ x: blast.x,
227
+ y: blast.y,
228
+ colors: particleColors,
229
+ particleCount: 12,
230
+ duration: 800
231
+ }, blast.id)), /*#__PURE__*/_jsx(Spacecraft3D, {
232
+ spacecraft: spacecraft,
233
+ isControlled: isControllingSpacecraft
234
+ }), /*#__PURE__*/_jsx(GestureDetector, {
235
+ gesture: panGesture,
236
+ children: /*#__PURE__*/_jsx(View, {
237
+ style: styles.gestureOverlay
238
+ })
239
+ }), asteroids.length === 0 && /*#__PURE__*/_jsxs(View, {
240
+ style: styles.instructionsContainer,
241
+ children: [/*#__PURE__*/_jsx(Text, {
242
+ style: styles.instructionsEmoji,
243
+ children: "\uD83D\uDE80"
244
+ }), /*#__PURE__*/_jsx(Text, {
245
+ style: styles.instructionsTitle,
246
+ children: "Navigate your spacecraft through the space!"
247
+ }), /*#__PURE__*/_jsx(Text, {
248
+ style: styles.instructionsSubtitle,
249
+ children: "Touch and drag to control your spacecraft"
250
+ })]
251
+ })]
252
+ });
253
+ });
254
+ const styles = StyleSheet.create({
255
+ gameArea: {
256
+ flex: 1,
257
+ position: 'relative'
258
+ },
259
+ gestureOverlay: {
260
+ position: 'absolute',
261
+ top: 0,
262
+ left: 0,
263
+ right: 0,
264
+ bottom: 0,
265
+ backgroundColor: 'transparent',
266
+ zIndex: 10
267
+ },
268
+ instructionsContainer: {
269
+ position: 'absolute',
270
+ top: '33%',
271
+ left: 0,
272
+ right: 0,
273
+ opacity: 0.6,
274
+ alignItems: 'center',
275
+ justifyContent: 'center'
276
+ },
277
+ instructionsEmoji: {
278
+ textAlign: 'center',
279
+ fontSize: 24,
280
+ marginBottom: 12
281
+ },
282
+ instructionsTitle: {
283
+ color: '#ffffff',
284
+ textAlign: 'center',
285
+ fontSize: 18,
286
+ fontWeight: 'bold',
287
+ marginBottom: 8
288
+ },
289
+ instructionsSubtitle: {
290
+ color: '#ffffff',
291
+ textAlign: 'center',
292
+ marginTop: 8
293
+ }
294
+ });
295
+ //# sourceMappingURL=GameArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useRef","useEffect","useCallback","useState","useMemo","View","Text","StyleSheet","Dimensions","Gesture","GestureDetector","useSpaceFighterStore","createSpaceFighterService","playSound","GAME_SOUNDS","playHaptic","HapticType","ParticleBlast","AsteroidComponent","Spacecraft3D","SpacecraftPath","jsx","_jsx","jsxs","_jsxs","width","height","get","GameArea","memo","asteroids","state","spacecraft","spacecraftPath","isControllingSpacecraft","isPlaying","updateSpacecraft","setSpacecraftPath","setIsControllingSpacecraft","markAsteroidPassed","loseLife","gameService","current","initialSpacecraft","getInitialSpacecraft","currentSpacecraftPath","initialSpacecraftPosition","initialTouchPosition","pendingSpacecraftUpdate","animationFrameId","lastCollisionTime","activeBlasts","setActiveBlasts","particleColors","playSuccessSound","SPACE_FIGHTER","SUCCESS","LIGHT","playCollisionSound","COLLISION","HEAVY","handleSpacecraftControlStart","x","y","currentSpacecraft","getState","controlledSpacecraft","controlSpacecraft","processPendingSpacecraftUpdate","push","length","shift","handleSpacecraftControlMove","requestAnimationFrame","handleSpacecraftControlEnd","cancelAnimationFrame","releasedSpacecraft","releaseSpacecraft","setTimeout","interval","setInterval","currentAsteroids","collision","checkCollision","now","Date","blastId","prev","id","filter","blast","passedAsteroids","checkAsteroidPass","forEach","pairId","clearInterval","panGesture","Pan","onStart","event","absoluteX","absoluteY","onUpdate","dx","newX","newY","onEnd","onFinalize","runOnJS","style","styles","gameArea","children","path","map","asteroid","colors","particleCount","duration","isControlled","gesture","gestureOverlay","instructionsContainer","instructionsEmoji","instructionsTitle","instructionsSubtitle","create","flex","position","top","left","right","bottom","backgroundColor","zIndex","opacity","alignItems","justifyContent","textAlign","fontSize","marginBottom","color","fontWeight","marginTop"],"sourceRoot":"../../../../../src","sources":["games/space-fighter/components/GameArea.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,48 +1,20 @@
1
1
  "use strict";
2
2
 
3
- import React, { useEffect } from 'react';
4
- import { Dimensions } from 'react-native';
3
+ import React from 'react';
4
+ import { View, Dimensions } from 'react-native';
5
5
  import { Canvas, LinearGradient, Rect, Circle, Group, Shadow, vec } from '@shopify/react-native-skia';
6
- import { useSharedValue, withRepeat, withTiming, withSequence, interpolate, Extrapolation, Easing } from 'react-native-reanimated';
7
- import Animated, { useAnimatedStyle } from 'react-native-reanimated';
8
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
7
  const {
10
8
  width,
11
9
  height
12
10
  } = Dimensions.get('window');
13
- export const GameBackground = ({
11
+ export const GameBackground = /*#__PURE__*/React.memo(({
14
12
  children
15
13
  }) => {
16
- // Optimized animated values - reduced from 4 to 2 for better performance
17
- const starTwinkle = useSharedValue(0);
18
- const spaceFloat = useSharedValue(0); // Combined animation for planet, nebula, and asteroids
19
-
20
- useEffect(() => {
21
- // Optimized star twinkling with easing for smoother animation
22
- starTwinkle.value = withRepeat(withSequence(withTiming(1, {
23
- duration: 3000,
24
- easing: Easing.inOut(Easing.ease)
25
- }), withTiming(0.4, {
26
- duration: 3000,
27
- easing: Easing.inOut(Easing.ease)
28
- })), -1, false);
29
-
30
- // Combined space animation for all floating elements
31
- spaceFloat.value = withRepeat(withTiming(1, {
32
- duration: 15000,
33
- easing: Easing.inOut(Easing.ease)
34
- }), -1, true // Reverse for smooth back-and-forth motion
35
- );
36
- }, []);
37
- const animatedBackgroundStyle = useAnimatedStyle(() => {
38
- return {
39
- transform: []
40
- };
41
- });
42
- return /*#__PURE__*/_jsxs(Animated.View, {
43
- style: [{
14
+ return /*#__PURE__*/_jsxs(View, {
15
+ style: {
44
16
  flex: 1
45
- }, animatedBackgroundStyle],
17
+ },
46
18
  children: [/*#__PURE__*/_jsxs(Canvas, {
47
19
  style: {
48
20
  position: 'absolute',
@@ -70,14 +42,12 @@ export const GameBackground = ({
70
42
  const x = width / 8 * (i % 8) + i % 5 * 25;
71
43
  const y = height / 5 * Math.floor(i / 8) + i % 3 * 40;
72
44
  const size = 1 + i % 3 * 0.4;
73
- const isAnimated = i % 3 === 0; // Only animate every 3rd star for performance
74
-
75
45
  return /*#__PURE__*/_jsx(Circle, {
76
46
  cx: x,
77
47
  cy: y,
78
48
  r: size,
79
49
  color: "#ffffff",
80
- opacity: isAnimated ? interpolate(starTwinkle.value, [0, 1], [0.4, 0.9], Extrapolation.CLAMP) : 0.6
50
+ opacity: 0.6
81
51
  }, `star-${i}`);
82
52
  })
83
53
  }), /*#__PURE__*/_jsx(Group, {
@@ -112,37 +82,23 @@ export const GameBackground = ({
112
82
  const pos = positions[i];
113
83
  if (!pos) return null;
114
84
  const size = 2.5 + i % 2 * 0.5;
115
- const isAnimated = i % 2 === 0; // Only animate every other bright star
116
-
117
85
  return /*#__PURE__*/_jsx(Group, {
118
86
  children: /*#__PURE__*/_jsx(Circle, {
119
87
  cx: pos.x,
120
88
  cy: pos.y,
121
89
  r: size,
122
90
  color: "#ffffff",
123
- opacity: isAnimated ? interpolate(starTwinkle.value, [0, 1], [0.7, 1], Extrapolation.CLAMP) : 0.8,
91
+ opacity: 0.8,
124
92
  children: /*#__PURE__*/_jsx(Shadow, {
125
93
  dx: 0,
126
94
  dy: 0,
127
- blur: 10 // Static blur for better performance
128
- ,
95
+ blur: 10,
129
96
  color: "#ffffff"
130
97
  })
131
98
  })
132
99
  }, `bright-star-${i}`);
133
100
  })
134
101
  }), /*#__PURE__*/_jsxs(Group, {
135
- transform: [{
136
- translateX: width * 0.85
137
- }, {
138
- translateY: height * 0.2
139
- }, {
140
- rotate: interpolate(spaceFloat.value, [0, 1], [0, Math.PI * 2], Extrapolation.CLAMP)
141
- }, {
142
- translateX: -width * 0.85
143
- }, {
144
- translateY: -height * 0.2
145
- }],
146
102
  children: [/*#__PURE__*/_jsx(Circle, {
147
103
  cx: width * 0.85,
148
104
  cy: height * 0.2,
@@ -176,9 +132,6 @@ export const GameBackground = ({
176
132
  })]
177
133
  }), /*#__PURE__*/_jsxs(Group, {
178
134
  children: [/*#__PURE__*/_jsxs(Group, {
179
- transform: [{
180
- translateX: interpolate(spaceFloat.value, [0, 1], [-3, 3], Extrapolation.CLAMP)
181
- }],
182
135
  children: [/*#__PURE__*/_jsx(Circle, {
183
136
  cx: width * 0.2,
184
137
  cy: height * 0.6,
@@ -199,9 +152,6 @@ export const GameBackground = ({
199
152
  opacity: 0.1
200
153
  })]
201
154
  }), /*#__PURE__*/_jsxs(Group, {
202
- transform: [{
203
- translateX: interpolate(spaceFloat.value, [0, 1], [2, -2], Extrapolation.CLAMP)
204
- }],
205
155
  children: [/*#__PURE__*/_jsx(Circle, {
206
156
  cx: width * 0.7,
207
157
  cy: height * 0.4,
@@ -245,12 +195,7 @@ export const GameBackground = ({
245
195
  const pos = positions[i];
246
196
  if (!pos) return null;
247
197
  const size = 3 + i % 3;
248
- const isAnimated = i % 2 === 0; // Only animate every other asteroid
249
-
250
198
  return /*#__PURE__*/_jsxs(Group, {
251
- transform: isAnimated ? [{
252
- translateX: interpolate(spaceFloat.value, [0, 1], [-1.5, 1.5], Extrapolation.CLAMP)
253
- }] : [],
254
199
  children: [/*#__PURE__*/_jsx(Circle, {
255
200
  cx: pos.x,
256
201
  cy: pos.y,
@@ -290,5 +235,5 @@ export const GameBackground = ({
290
235
  })]
291
236
  }), children]
292
237
  });
293
- };
238
+ });
294
239
  //# sourceMappingURL=GameBackground.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Dimensions","Canvas","LinearGradient","Rect","Circle","Group","Shadow","vec","jsx","_jsx","jsxs","_jsxs","width","height","get","GameBackground","memo","children","style","flex","position","top","left","right","bottom","x","y","start","end","colors","Array","from","length","_","i","Math","floor","size","cx","cy","r","color","opacity","positions","pos","dx","dy","blur"],"sourceRoot":"../../../../../src","sources":["games/space-fighter/components/GameBackground.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,13 +2,16 @@
2
2
 
3
3
  import React from 'react';
4
4
  import { View, Text, StyleSheet } from 'react-native';
5
- import { useSpaceTravellerStore } from "../SpaceTravellerStore.js";
5
+ import { useSpaceFighterStore } from "../SpaceFighterStore.js";
6
+ import { RESPONSIVE_SCOREBOARD_CONTAINER, RESPONSIVE_SCOREBOARD_FONTS } from "../../../shared/helpers/index.js";
7
+
8
+ // Self-contained ScoreBoard component that reads directly from store
6
9
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
- export const ScoreBoard = ({
8
- score,
9
- timeLeft
10
- }) => {
11
- const currentLives = useSpaceTravellerStore(state => state.lives);
10
+ export const ScoreBoard = /*#__PURE__*/React.memo(() => {
11
+ // Read state directly from store to minimize re-renders
12
+ const score = useSpaceFighterStore(state => state.score);
13
+ const timeLeft = useSpaceFighterStore(state => state.timeLeft);
14
+ const currentLives = useSpaceFighterStore(state => state.lives);
12
15
  const maxLives = 3;
13
16
  return /*#__PURE__*/_jsxs(View, {
14
17
  style: [styles.scoreBoard, {
@@ -28,9 +31,9 @@ export const ScoreBoard = ({
28
31
  children: [/*#__PURE__*/_jsx(Text, {
29
32
  style: styles.scoreLabel,
30
33
  children: "Time"
31
- }), /*#__PURE__*/_jsxs(Text, {
34
+ }), /*#__PURE__*/_jsx(Text, {
32
35
  style: styles.timeValue,
33
- children: [timeLeft, "s"]
36
+ children: timeLeft
34
37
  })]
35
38
  }), /*#__PURE__*/_jsxs(View, {
36
39
  style: styles.scoreItem,
@@ -48,34 +51,25 @@ export const ScoreBoard = ({
48
51
  })]
49
52
  })]
50
53
  });
51
- };
54
+ });
52
55
  const styles = StyleSheet.create({
53
56
  scoreBoard: {
57
+ ...RESPONSIVE_SCOREBOARD_CONTAINER,
54
58
  flexDirection: 'row',
55
59
  justifyContent: 'space-between',
56
60
  alignItems: 'center',
57
- backgroundColor: 'rgba(30, 27, 75, 0.3)',
58
- // Deep space blue with transparency
59
- borderRadius: 20,
60
- padding: 20,
61
+ backgroundColor: 'rgba(147, 112, 219, 0.4)',
62
+ // Matches start/stop button purple color with 0.4 opacity
63
+ marginBottom: 20,
61
64
  borderWidth: 2,
62
- borderColor: 'rgba(139, 92, 246, 0.3)',
63
- // Purple space border
64
- shadowColor: '#000',
65
- shadowOffset: {
66
- width: 0,
67
- height: 4
68
- },
69
- shadowOpacity: 0.3,
70
- shadowRadius: 8,
71
- elevation: 8
65
+ borderColor: 'rgba(139, 92, 246, 0.3)' // Purple space border
72
66
  },
73
67
  scoreItem: {
74
68
  alignItems: 'center',
75
69
  flex: 1
76
70
  },
77
71
  scoreLabel: {
78
- fontSize: 16,
72
+ fontSize: RESPONSIVE_SCOREBOARD_FONTS.labelSize,
79
73
  fontWeight: 'bold',
80
74
  color: '#e2e8f0',
81
75
  // Light space gray
@@ -88,7 +82,7 @@ const styles = StyleSheet.create({
88
82
  textShadowRadius: 2
89
83
  },
90
84
  scoreValue: {
91
- fontSize: 28,
85
+ fontSize: RESPONSIVE_SCOREBOARD_FONTS.valueSize,
92
86
  fontWeight: 'bold',
93
87
  color: '#fbbf24',
94
88
  // Bright yellow for score
@@ -100,7 +94,7 @@ const styles = StyleSheet.create({
100
94
  textShadowRadius: 2
101
95
  },
102
96
  timeValue: {
103
- fontSize: 24,
97
+ fontSize: RESPONSIVE_SCOREBOARD_FONTS.timeSize,
104
98
  fontWeight: 'bold',
105
99
  color: '#34d399',
106
100
  // Bright green for time
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Text","StyleSheet","useSpaceFighterStore","RESPONSIVE_SCOREBOARD_CONTAINER","RESPONSIVE_SCOREBOARD_FONTS","jsx","_jsx","jsxs","_jsxs","ScoreBoard","memo","score","state","timeLeft","currentLives","lives","maxLives","style","styles","scoreBoard","zIndex","children","scoreItem","scoreLabel","scoreValue","timeValue","livesContainer","Array","from","length","_","i","lifeIcon","lifeActive","lifeInactive","create","flexDirection","justifyContent","alignItems","backgroundColor","marginBottom","borderWidth","borderColor","flex","fontSize","labelSize","fontWeight","color","textShadowColor","textShadowOffset","width","height","textShadowRadius","valueSize","timeSize","marginHorizontal"],"sourceRoot":"../../../../../src","sources":["games/space-fighter/components/ScoreBoard.tsx"],"mappings":"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","ignoreList":[]}