react-native-games 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +121 -130
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +121 -422
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +30 -31
  5. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -1
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +52 -124
  7. package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -1
  8. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +12 -1
  9. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -1
  10. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +102 -75
  11. package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -1
  12. package/lib/module/games/balloon-blaster/components/GameArea.js +139 -30
  13. package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
  14. package/lib/module/games/balloon-blaster/components/GameBackground.js +2 -2
  15. package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -1
  16. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +7 -6
  17. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  18. package/lib/module/games/balloon-blaster/components/index.js +0 -3
  19. package/lib/module/games/balloon-blaster/components/index.js.map +1 -1
  20. package/lib/module/games/fruit-ninja/FruitNinja.js +93 -376
  21. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  22. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +19 -22
  23. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -1
  24. package/lib/module/games/fruit-ninja/FruitNinjaService.js +25 -8
  25. package/lib/module/games/fruit-ninja/FruitNinjaService.js.map +1 -1
  26. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +29 -4
  27. package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -1
  28. package/lib/module/games/fruit-ninja/components/GameArea.js +194 -29
  29. package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -1
  30. package/lib/module/games/fruit-ninja/components/GameBackground.js +107 -190
  31. package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -1
  32. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +9 -30
  33. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
  34. package/lib/module/games/fruit-ninja/components/index.js +0 -3
  35. package/lib/module/games/fruit-ninja/components/index.js.map +1 -1
  36. package/lib/module/games/maze-runner/MazeRunner.js +106 -109
  37. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  38. package/lib/module/games/maze-runner/MazeRunnerConstants.js +19 -24
  39. package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -1
  40. package/lib/module/games/maze-runner/MazeRunnerService.js +2 -1
  41. package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -1
  42. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +5 -4
  43. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js.map +1 -1
  44. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +32 -15
  45. package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -1
  46. package/lib/module/games/maze-runner/components/ScoreBoard.js +8 -3
  47. package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
  48. package/lib/module/games/maze-runner/components/WallComponent.js +3 -2
  49. package/lib/module/games/maze-runner/components/WallComponent.js.map +1 -1
  50. package/lib/module/games/maze-runner/components/index.js +0 -1
  51. package/lib/module/games/maze-runner/components/index.js.map +1 -1
  52. package/lib/module/games/popit-fidget/PopitFidget.js +113 -112
  53. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  54. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +20 -23
  55. package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -1
  56. package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -59
  57. package/lib/module/games/popit-fidget/PopitFidgetService.js.map +1 -1
  58. package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -27
  59. package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -1
  60. package/lib/module/games/popit-fidget/components/BubbleComponent.js +24 -22
  61. package/lib/module/games/popit-fidget/components/BubbleComponent.js.map +1 -1
  62. package/lib/module/games/popit-fidget/components/GameBackground.js +4 -1
  63. package/lib/module/games/popit-fidget/components/GameBackground.js.map +1 -1
  64. package/lib/module/games/popit-fidget/components/ScoreBoard.js +9 -2
  65. package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -1
  66. package/lib/module/games/popit-fidget/components/index.js +0 -2
  67. package/lib/module/games/popit-fidget/components/index.js.map +1 -1
  68. package/lib/module/games/space-fighter/SpaceFighter.js +121 -369
  69. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  70. package/lib/module/games/space-fighter/SpaceFighterConstants.js +21 -23
  71. package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -1
  72. package/lib/module/games/space-fighter/SpaceFighterService.js +30 -11
  73. package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -1
  74. package/lib/module/games/space-fighter/SpaceFighterStore.js +54 -2
  75. package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -1
  76. package/lib/module/games/space-fighter/components/AsteroidComponent.js +7 -5
  77. package/lib/module/games/space-fighter/components/AsteroidComponent.js.map +1 -1
  78. package/lib/module/games/space-fighter/components/GameArea.js +234 -14
  79. package/lib/module/games/space-fighter/components/GameArea.js.map +1 -1
  80. package/lib/module/games/space-fighter/components/GameBackground.js +10 -65
  81. package/lib/module/games/space-fighter/components/GameBackground.js.map +1 -1
  82. package/lib/module/games/space-fighter/components/ScoreBoard.js +9 -7
  83. package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -1
  84. package/lib/module/games/space-fighter/components/Spacecraft3D.js +90 -250
  85. package/lib/module/games/space-fighter/components/Spacecraft3D.js.map +1 -1
  86. package/lib/module/games/space-fighter/components/SpacecraftPath.js +42 -27
  87. package/lib/module/games/space-fighter/components/SpacecraftPath.js.map +1 -1
  88. package/lib/module/games/space-fighter/components/index.js +0 -3
  89. package/lib/module/games/space-fighter/components/index.js.map +1 -1
  90. package/lib/module/games/whack-a-mole/WhackAMole.js +63 -73
  91. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  92. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +17 -19
  93. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -1
  94. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +20 -7
  95. package/lib/module/games/whack-a-mole/WhackAMoleStore.js.map +1 -1
  96. package/lib/module/games/whack-a-mole/components/GameHole.js +2 -2
  97. package/lib/module/games/whack-a-mole/components/GameHole.js.map +1 -1
  98. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +5 -1
  99. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
  100. package/lib/module/games/whack-a-mole/components/index.js +0 -1
  101. package/lib/module/games/whack-a-mole/components/index.js.map +1 -1
  102. package/lib/module/services/GamesConstants.js +13 -21
  103. package/lib/module/services/GamesConstants.js.map +1 -1
  104. package/lib/module/services/GamesService.js +30 -26
  105. package/lib/module/services/GamesService.js.map +1 -1
  106. package/lib/module/services/SoundsService.js +21 -21
  107. package/lib/module/shared/helpers/AnimationFrame.js +120 -0
  108. package/lib/module/shared/helpers/AnimationFrame.js.map +1 -0
  109. package/lib/module/shared/helpers/AnimationTracker.js +89 -0
  110. package/lib/module/shared/helpers/AnimationTracker.js.map +1 -0
  111. package/lib/module/shared/helpers/ErrorHandler.js +269 -0
  112. package/lib/module/shared/helpers/ErrorHandler.js.map +1 -0
  113. package/lib/module/shared/helpers/GameControlButton.js +67 -58
  114. package/lib/module/shared/helpers/GameControlButton.js.map +1 -1
  115. package/lib/module/{games/whack-a-mole/components → shared/helpers}/GameOverModal.js +23 -13
  116. package/lib/module/shared/helpers/GameOverModal.js.map +1 -0
  117. package/lib/module/shared/helpers/GameSettingsModal.js +287 -0
  118. package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -0
  119. package/lib/module/shared/helpers/ParticleBlast.js +133 -0
  120. package/lib/module/shared/helpers/ParticleBlast.js.map +1 -0
  121. package/lib/module/shared/helpers/index.js +7 -0
  122. package/lib/module/shared/helpers/index.js.map +1 -1
  123. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +2 -14
  124. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  125. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +10 -9
  126. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts.map +1 -1
  127. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -2
  128. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -1
  129. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -1
  130. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -1
  131. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +1 -15
  132. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -1
  133. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -1
  134. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +1 -7
  135. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  136. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +0 -3
  137. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -1
  138. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +2 -14
  139. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  140. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +5 -5
  141. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts.map +1 -1
  142. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +8 -0
  143. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts.map +1 -1
  144. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +1 -0
  145. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts.map +1 -1
  146. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +1 -15
  147. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts.map +1 -1
  148. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -1
  149. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +1 -7
  150. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
  151. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts +0 -3
  152. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts.map +1 -1
  153. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +2 -8
  154. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  155. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +4 -4
  156. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts.map +1 -1
  157. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -1
  158. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts.map +1 -1
  159. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -1
  160. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
  161. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts.map +1 -1
  162. package/lib/typescript/src/games/maze-runner/components/index.d.ts +0 -1
  163. package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -1
  164. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +2 -8
  165. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  166. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +4 -4
  167. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts.map +1 -1
  168. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -21
  169. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts.map +1 -1
  170. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +1 -5
  171. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -1
  172. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts.map +1 -1
  173. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts +2 -2
  174. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts.map +1 -1
  175. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +2 -2
  176. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -1
  177. package/lib/typescript/src/games/popit-fidget/components/index.d.ts +0 -2
  178. package/lib/typescript/src/games/popit-fidget/components/index.d.ts.map +1 -1
  179. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +3 -8
  180. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  181. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +4 -4
  182. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts.map +1 -1
  183. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -1
  184. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -1
  185. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -1
  186. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts.map +1 -1
  187. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +1 -15
  188. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -1
  189. package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts.map +1 -1
  190. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +1 -6
  191. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -1
  192. package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts.map +1 -1
  193. package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts.map +1 -1
  194. package/lib/typescript/src/games/space-fighter/components/index.d.ts +0 -3
  195. package/lib/typescript/src/games/space-fighter/components/index.d.ts.map +1 -1
  196. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +2 -11
  197. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  198. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +2 -2
  199. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts.map +1 -1
  200. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts.map +1 -1
  201. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts +0 -1
  202. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts.map +1 -1
  203. package/lib/typescript/src/services/GamesConstants.d.ts +47 -38
  204. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  205. package/lib/typescript/src/services/GamesService.d.ts +20 -3
  206. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  207. package/lib/typescript/src/services/SoundsService.d.ts +20 -20
  208. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts +41 -0
  209. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +1 -0
  210. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts +45 -0
  211. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +1 -0
  212. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts +124 -0
  213. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +1 -0
  214. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +1 -1
  215. package/lib/typescript/src/{games/balloon-blaster/components → shared/helpers}/GameOverModal.d.ts +5 -0
  216. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -0
  217. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts +9 -0
  218. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +1 -0
  219. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts +12 -0
  220. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -0
  221. package/lib/typescript/src/shared/helpers/index.d.ts +9 -0
  222. package/lib/typescript/src/shared/helpers/index.d.ts.map +1 -1
  223. package/package.json +2 -2
  224. package/lib/module/games/balloon-blaster/components/GameOverModal.js +0 -133
  225. package/lib/module/games/balloon-blaster/components/GameOverModal.js.map +0 -1
  226. package/lib/module/games/balloon-blaster/components/ParticleSystem.js +0 -55
  227. package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +0 -1
  228. package/lib/module/games/balloon-blaster/components/SliceTrail.js +0 -58
  229. package/lib/module/games/balloon-blaster/components/SliceTrail.js.map +0 -1
  230. package/lib/module/games/fruit-ninja/components/GameOverModal.js +0 -189
  231. package/lib/module/games/fruit-ninja/components/GameOverModal.js.map +0 -1
  232. package/lib/module/games/fruit-ninja/components/ParticleSystem.js +0 -52
  233. package/lib/module/games/fruit-ninja/components/ParticleSystem.js.map +0 -1
  234. package/lib/module/games/fruit-ninja/components/SliceTrail.js +0 -58
  235. package/lib/module/games/fruit-ninja/components/SliceTrail.js.map +0 -1
  236. package/lib/module/games/maze-runner/components/GameOverModal.js +0 -134
  237. package/lib/module/games/maze-runner/components/GameOverModal.js.map +0 -1
  238. package/lib/module/games/popit-fidget/components/GameOverModal.js +0 -132
  239. package/lib/module/games/popit-fidget/components/GameOverModal.js.map +0 -1
  240. package/lib/module/games/popit-fidget/components/ParticleSystem.js +0 -89
  241. package/lib/module/games/popit-fidget/components/ParticleSystem.js.map +0 -1
  242. package/lib/module/games/space-fighter/components/GameOverModal.js +0 -182
  243. package/lib/module/games/space-fighter/components/GameOverModal.js.map +0 -1
  244. package/lib/module/games/space-fighter/components/ParticleComponent.js +0 -34
  245. package/lib/module/games/space-fighter/components/ParticleComponent.js.map +0 -1
  246. package/lib/module/games/space-fighter/components/SettingsModal.js +0 -222
  247. package/lib/module/games/space-fighter/components/SettingsModal.js.map +0 -1
  248. package/lib/module/games/whack-a-mole/components/GameOverModal.js.map +0 -1
  249. package/lib/module/shared/settings/GameSettings.js +0 -295
  250. package/lib/module/shared/settings/GameSettings.js.map +0 -1
  251. package/lib/module/shared/settings/SettingsService.js +0 -125
  252. package/lib/module/shared/settings/SettingsService.js.map +0 -1
  253. package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts.map +0 -1
  254. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts +0 -8
  255. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +0 -1
  256. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts +0 -11
  257. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts.map +0 -1
  258. package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts +0 -9
  259. package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts.map +0 -1
  260. package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts +0 -8
  261. package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts.map +0 -1
  262. package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts +0 -11
  263. package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts.map +0 -1
  264. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts +0 -11
  265. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts.map +0 -1
  266. package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts +0 -9
  267. package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts.map +0 -1
  268. package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts +0 -9
  269. package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts.map +0 -1
  270. package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts +0 -9
  271. package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts.map +0 -1
  272. package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts +0 -8
  273. package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts.map +0 -1
  274. package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts +0 -9
  275. package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts.map +0 -1
  276. package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts +0 -9
  277. package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts.map +0 -1
  278. package/lib/typescript/src/shared/settings/GameSettings.d.ts +0 -36
  279. package/lib/typescript/src/shared/settings/GameSettings.d.ts.map +0 -1
  280. package/lib/typescript/src/shared/settings/SettingsService.d.ts +0 -33
  281. package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +0 -1
@@ -1,376 +1,153 @@
1
1
  "use strict";
2
2
 
3
- import { useEffect, useRef, useMemo } from 'react';
4
- import { View, Dimensions, StyleSheet, Modal } from 'react-native';
5
- import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
6
- import { playSound, stopAllSounds, GAME_SOUNDS } from "../../services/SoundsService.js";
7
- import { playHaptic, HapticType } from "../../services/HapticsService.js";
3
+ import React, { useEffect, useCallback, useMemo } from 'react';
4
+ import { View, StyleSheet, Dimensions } from 'react-native';
5
+ import { GestureHandlerRootView } from 'react-native-gesture-handler';
8
6
  import { useSpaceFighterStore } from "./SpaceFighterStore.js";
9
7
  import { createSpaceFighterService } from "./SpaceFighterService.js";
10
- import { ScoreBoard, GameArea, GameOverModal, GameBackground } from "./components/index.js";
11
- import { GameControlButton } from "../../shared/helpers/index.js";
12
- import { DEFAULT_SPACE_FIGHTER_SETTINGS, getDifficultySettings } from "./SpaceFighterConstants.js";
13
- import { GameSettings } from "../../shared/settings/GameSettings.js";
14
- import { createGameSettingsStore } from "../../shared/settings/SettingsService.js";
8
+ import { getDifficultySettings } from "./SpaceFighterConstants.js";
9
+ import { ScoreBoard, GameArea, GameBackground } from "./components/index.js";
10
+ import { GameControlButton, GameOverModal, useGameErrorHandler, GameErrorType } from "../../shared/helpers/index.js";
11
+ import { GameSettingsModal } from "../../shared/helpers/index.js";
12
+ import { GAME_IDS } from "../../services/GamesService.js";
15
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
14
  const {
17
15
  width,
18
16
  height
19
17
  } = Dimensions.get('window');
20
18
  export const SpaceFighter = ({
21
- showSettingsModal = false,
22
- onToggleSettingsModal,
23
- settings: externalSettings,
19
+ settings,
24
20
  onSettingsChange
25
21
  }) => {
26
- let gameService = useRef(createSpaceFighterService(width, height)).current;
27
-
28
- // Create unified game settings store
29
- const settingsStore = useMemo(() => {
30
- const defaultSettings = {
31
- ...DEFAULT_SPACE_FIGHTER_SETTINGS,
32
- ...externalSettings
33
- };
34
-
35
- // Wrapper function to handle the callback type mismatch
36
- const handleSettingsChange = onSettingsChange ? newSettings => {
37
- const spaceFighterSettings = {
38
- ...DEFAULT_SPACE_FIGHTER_SETTINGS,
39
- ...externalSettings,
40
- difficulty: newSettings.difficulty,
41
- soundEnabled: newSettings.soundEnabled,
42
- hapticEnabled: newSettings.hapticEnabled,
43
- gameDuration: newSettings.gameDuration
44
- };
45
- onSettingsChange(spaceFighterSettings);
46
- } : undefined;
47
- return createGameSettingsStore(defaultSettings, handleSettingsChange);
48
- }, [externalSettings, onSettingsChange]);
49
-
50
- // Add infinite loop prevention
51
- const prevSettingsRef = useRef(externalSettings);
52
- useEffect(() => {
53
- const prev = prevSettingsRef.current;
54
- const current = externalSettings;
55
- if (!prev && !current) return;
56
- const hasChanged = prev?.difficulty !== current?.difficulty || prev?.soundEnabled !== current?.soundEnabled || prev?.hapticEnabled !== current?.hapticEnabled || prev?.gameDuration !== current?.gameDuration;
57
- if (hasChanged) {
58
- const commonSettings = {
59
- difficulty: current?.difficulty || 'medium',
60
- soundEnabled: current?.soundEnabled ?? true,
61
- hapticEnabled: current?.hapticEnabled ?? true
62
- };
63
- settingsStore().updateSettings(commonSettings);
64
- prevSettingsRef.current = current;
65
- }
66
- }, [externalSettings, settingsStore]);
67
- const settings = settingsStore();
22
+ // Memoize settings destructuring to prevent unnecessary re-renders
68
23
  const {
69
- soundEnabled,
70
- hapticEnabled,
71
24
  difficulty
72
- } = settings;
25
+ } = useMemo(() => settings, [settings]);
73
26
 
74
- // Make game constants reactive to difficulty changes
75
- const gameConstants = useMemo(() => {
76
- const difficultySettings = getDifficultySettings(difficulty);
77
- return {
78
- asteroidSpawnInterval: difficultySettings.asteroidSpawnInterval,
79
- asteroidSpeed: difficultySettings.asteroidSpeed,
80
- gameDuration: difficultySettings.gameDuration
81
- };
82
- }, [difficulty]);
83
- const {
84
- score,
85
- timeLeft,
86
- isPlaying,
87
- gameOver,
88
- asteroids,
89
- spacecraft,
90
- spacecraftPath,
91
- isControllingSpacecraft,
92
- startGame,
93
- stopGame,
94
- resetGame,
95
- decrementTime,
96
- addAsteroids,
97
- removeAsteroid,
98
- updateAsteroid,
99
- updateSpacecraft,
100
- setSpacecraftPath,
101
- setIsControllingSpacecraft,
102
- markAsteroidPassed,
103
- loseLife
104
- } = useSpaceFighterStore();
105
- const currentSpacecraftPath = useRef([]);
106
- const dragOffset = useRef(null);
107
- const initialSpacecraftPosition = useRef(null);
108
- const initialTouchPosition = useRef(null);
109
- const pendingSpacecraftUpdate = useRef(null);
110
- const animationFrameId = useRef(null);
111
- const lastCollisionTime = useRef(0);
112
- const handleSpacecraftControlStart = (x, y) => {
113
- const currentSpacecraft = useSpaceFighterStore.getState().spacecraft;
114
- const controlledSpacecraft = gameService.controlSpacecraft({
115
- ...currentSpacecraft
116
- }, x, y);
117
- updateSpacecraft(controlledSpacecraft);
118
- setIsControllingSpacecraft(true);
119
- currentSpacecraftPath.current = [{
120
- x,
121
- y
122
- }];
123
- setSpacecraftPath([{
124
- x,
125
- y
126
- }]);
127
- };
128
- const processPendingSpacecraftUpdate = () => {
129
- if (pendingSpacecraftUpdate.current) {
130
- const {
131
- x,
132
- y
133
- } = pendingSpacecraftUpdate.current;
134
- const currentSpacecraft = useSpaceFighterStore.getState().spacecraft;
135
- const controlledSpacecraft = gameService.controlSpacecraft({
136
- ...currentSpacecraft
137
- }, x, y);
138
- updateSpacecraft(controlledSpacecraft);
139
- currentSpacecraftPath.current.push({
140
- x,
141
- y
142
- });
143
- if (currentSpacecraftPath.current.length > 10) {
144
- currentSpacecraftPath.current.shift();
145
- }
146
- setSpacecraftPath([...currentSpacecraftPath.current]);
147
- pendingSpacecraftUpdate.current = null;
148
- }
149
- animationFrameId.current = null;
150
- };
151
- const handleSpacecraftControlMove = (x, y) => {
152
- pendingSpacecraftUpdate.current = {
153
- x,
154
- y
155
- };
156
- if (animationFrameId.current === null) {
157
- animationFrameId.current = requestAnimationFrame(processPendingSpacecraftUpdate);
158
- }
159
- };
160
- const handleSpacecraftControlEnd = () => {
161
- if (animationFrameId.current !== null) {
162
- cancelAnimationFrame(animationFrameId.current);
163
- animationFrameId.current = null;
164
- }
165
- if (pendingSpacecraftUpdate.current) {
166
- processPendingSpacecraftUpdate();
167
- }
168
- const currentSpacecraft = useSpaceFighterStore.getState().spacecraft;
169
- const releasedSpacecraft = gameService.releaseSpacecraft({
170
- ...currentSpacecraft
171
- });
172
- updateSpacecraft(releasedSpacecraft);
173
- setIsControllingSpacecraft(false);
174
- dragOffset.current = null;
175
- initialSpacecraftPosition.current = null;
176
- setTimeout(() => {
177
- currentSpacecraftPath.current = [];
178
- setSpacecraftPath([]);
179
- }, 500);
180
- };
27
+ // Read UI-critical state independently to minimize re-renders
28
+ const isPlaying = useSpaceFighterStore(state => state.isPlaying);
29
+ const gameOver = useSpaceFighterStore(state => state.gameOver);
30
+ const score = useSpaceFighterStore(state => state.score);
181
31
 
182
- // Sound and haptic feedback
183
- const playSuccessSound = () => {
184
- playSound(GAME_SOUNDS.SPACE_FIGHTER.SUCCESS, soundEnabled);
185
- playHaptic(HapticType.LIGHT, hapticEnabled);
186
- };
187
- const playCollisionSound = () => {
188
- playSound(GAME_SOUNDS.SPACE_FIGHTER.COLLISION, soundEnabled);
189
- playHaptic(HapticType.HEAVY, hapticEnabled);
190
- };
191
- const playGameOverSound = () => {
192
- playSound(GAME_SOUNDS.GAME_OVER, soundEnabled);
193
- playHaptic(HapticType.HEAVY, hapticEnabled);
194
- };
195
- const handleStartGame = async () => {
196
- startGame(); // Store uses fixed 60s duration internally
32
+ // Get store actions independently (these don't cause re-renders)
33
+ const startGame = useSpaceFighterStore(state => state.startGame);
34
+ const stopGame = useSpaceFighterStore(state => state.stopGame);
35
+ const resetGame = useSpaceFighterStore(state => state.resetGame);
36
+ const decrementTime = useSpaceFighterStore(state => state.decrementTime);
37
+ const addAsteroids = useSpaceFighterStore(state => state.addAsteroids);
38
+ const removeAsteroid = useSpaceFighterStore(state => state.removeAsteroid);
39
+ const updateAsteroid = useSpaceFighterStore(state => state.updateAsteroid);
40
+ const updateSpacecraft = useSpaceFighterStore(state => state.updateSpacecraft);
197
41
 
198
- // Update game service with current difficulty settings
199
- gameService.updateDifficultySettings(gameConstants.asteroidSpeed, gameConstants.asteroidSpawnInterval);
200
- const initialSpacecraft = gameService.getInitialSpacecraft();
201
- updateSpacecraft(initialSpacecraft);
202
- gameService.startGameTimer(decrementTime);
203
- gameService.startAsteroidSpawning(addAsteroids);
204
- gameService.startPhysicsLoop(updateSpacecraft, updateAsteroid, removeAsteroid, () => useSpaceFighterStore.getState().spacecraft, () => useSpaceFighterStore.getState().asteroids);
205
- if (soundEnabled) {
206
- stopAllSounds();
207
- playSound(GAME_SOUNDS.SPACE_FIGHTER.START, soundEnabled);
208
- }
209
- };
210
- const handleStopGame = () => {
211
- stopGame();
212
- gameService.cleanup();
213
- currentSpacecraftPath.current = [];
214
- setSpacecraftPath([]);
215
- setIsControllingSpacecraft(false);
216
- };
217
- const handleResetGame = () => {
218
- resetGame();
219
- const initialSpacecraft = gameService.getInitialSpacecraft();
220
- updateSpacecraft(initialSpacecraft);
221
- gameService.cleanup();
222
- currentSpacecraftPath.current = [];
223
- setSpacecraftPath([]);
224
- setIsControllingSpacecraft(false);
225
- };
42
+ // Error handling for the game
43
+ const {
44
+ wrapFunction,
45
+ safeExecute
46
+ } = useGameErrorHandler(GAME_IDS.SPACE_FIGHTER);
47
+
48
+ // Memoize game service to prevent recreation
49
+ const gameService = useMemo(() => safeExecute(() => createSpaceFighterService(width, height),
50
+ // Use actual screen dimensions
51
+ createSpaceFighterService(width, height),
52
+ // Fallback to direct creation
53
+ GameErrorType.INITIALIZATION_ERROR), [safeExecute]);
226
54
 
227
- // Collision detection effect
55
+ // Game service cleanup on unmount
228
56
  useEffect(() => {
229
- if (!isPlaying) return;
230
- const interval = setInterval(() => {
231
- const currentSpacecraft = useSpaceFighterStore.getState().spacecraft;
232
- const currentAsteroids = useSpaceFighterStore.getState().asteroids;
233
- const collision = gameService.checkCollision(currentSpacecraft, currentAsteroids);
234
- const now = Date.now();
235
- if (collision.collision && now - lastCollisionTime.current > 1000) {
236
- lastCollisionTime.current = now;
237
- playCollisionSound();
238
- gameService.createCollisionParticles(currentSpacecraft.x, currentSpacecraft.y);
239
- loseLife();
240
- const resetSpacecraft = gameService.getInitialSpacecraft();
241
- updateSpacecraft(resetSpacecraft);
242
- return;
57
+ return () => {
58
+ handleResetGame();
59
+ if (gameService) {
60
+ gameService.cleanup();
243
61
  }
62
+ };
63
+ }, [gameService]);
244
64
 
245
- // Check asteroid passes for scoring
246
- const passedAsteroids = gameService.checkAsteroidPass(currentSpacecraft, currentAsteroids);
247
- passedAsteroids.forEach(pairId => {
248
- markAsteroidPassed(pairId);
249
- playSuccessSound();
250
- });
251
- }, 50);
252
- return () => clearInterval(interval);
253
- }, [isPlaying]);
254
-
255
- // Game over effect
65
+ // Auto-stop physics when game over state changes
256
66
  useEffect(() => {
257
- if (gameOver) {
258
- playGameOverSound();
67
+ if (gameOver && gameService) {
68
+ // Stop all timers and physics when game over
259
69
  gameService.cleanup();
260
70
  }
261
- }, [gameOver]);
71
+ }, [gameOver, gameService]);
262
72
 
263
- // Update game service when difficulty changes
264
- useEffect(() => {
265
- gameService.updateDifficultySettings(gameConstants.asteroidSpeed, gameConstants.asteroidSpawnInterval);
266
- }, [gameConstants.asteroidSpeed, gameConstants.asteroidSpawnInterval]);
73
+ // Memoize difficulty settings to prevent recalculation
74
+ const difficultySettings = useMemo(() => getDifficultySettings(difficulty), [difficulty]);
267
75
 
268
- // Initialize and cleanup
269
- useEffect(() => {
270
- const initialSpacecraft = gameService.getInitialSpacecraft();
271
- updateSpacecraft(initialSpacecraft);
272
- return () => {
76
+ // Game control functions with error handling and memoization
77
+ const handleStartGame = useCallback(() => wrapFunction(() => {
78
+ startGame(); // Store uses fixed 60s duration internally
79
+ if (gameService) {
80
+ gameService.updateDifficultySettings(difficultySettings.asteroidSpeed, difficultySettings.asteroidSpawnInterval);
81
+ const initialSpacecraft = gameService.getInitialSpacecraft();
82
+ updateSpacecraft(initialSpacecraft);
83
+ gameService.startGameTimer(decrementTime);
84
+ gameService.startAsteroidSpawning(addAsteroids);
85
+ gameService.startPhysicsLoop(updateSpacecraft, updateAsteroid, removeAsteroid, () => useSpaceFighterStore.getState().spacecraft, () => useSpaceFighterStore.getState().asteroids);
86
+ }
87
+ }, GameErrorType.INITIALIZATION_ERROR)(), [wrapFunction, startGame, gameService, difficultySettings, updateSpacecraft, decrementTime, addAsteroids, updateAsteroid, removeAsteroid]);
88
+ const handleStopGame = useCallback(() => wrapFunction(() => {
89
+ stopGame();
90
+ if (gameService) {
273
91
  gameService.cleanup();
274
- };
275
- }, []);
276
- const panGesture = Gesture.Pan().onStart(event => {
277
- const currentSpacecraft = useSpaceFighterStore.getState().spacecraft;
278
- initialSpacecraftPosition.current = {
279
- x: currentSpacecraft.x,
280
- y: currentSpacecraft.y
281
- };
282
- initialTouchPosition.current = {
283
- x: event.absoluteX,
284
- y: event.absoluteY
285
- };
286
- handleSpacecraftControlStart(currentSpacecraft.x, currentSpacecraft.y);
287
- }).onUpdate(event => {
288
- if (!initialSpacecraftPosition.current || !initialTouchPosition.current) {
289
- return;
290
92
  }
291
- const dx = event.absoluteX - initialTouchPosition.current.x;
292
- const newX = initialSpacecraftPosition.current.x + dx;
293
- const newY = initialSpacecraftPosition.current.y;
294
- handleSpacecraftControlMove(newX, newY);
295
- }).onEnd(() => {
296
- initialTouchPosition.current = null;
297
- handleSpacecraftControlEnd();
298
- }).onFinalize(() => {
299
- initialTouchPosition.current = null;
300
- handleSpacecraftControlEnd();
301
- }).runOnJS(true);
93
+ }, GameErrorType.UNKNOWN_ERROR)(), [wrapFunction, stopGame, gameService]);
94
+ const handleResetGame = useCallback(() => wrapFunction(() => {
95
+ if (gameService) {
96
+ gameService.cleanup();
97
+ }
98
+ resetGame();
99
+ if (gameService) {
100
+ const initialSpacecraft = gameService.getInitialSpacecraft();
101
+ updateSpacecraft(initialSpacecraft);
102
+ }
103
+ }, GameErrorType.UNKNOWN_ERROR)(), [wrapFunction, gameService, resetGame, updateSpacecraft]);
104
+
105
+ // Memoize component props to prevent unnecessary re-renders
106
+ const gameControlButtonProps = useMemo(() => ({
107
+ isPlaying,
108
+ gameOver,
109
+ onStartGame: handleStartGame,
110
+ onStopGame: handleStopGame,
111
+ startButtonText: "START FLYING",
112
+ stopButtonText: "STOP GAME",
113
+ startButtonSubtext: "Navigate through space!",
114
+ stopButtonSubtext: "End current game",
115
+ startButtonColor: "#9370db",
116
+ stopButtonColor: "#dc2626",
117
+ startButtonBorderColor: "#ba68c8",
118
+ stopButtonBorderColor: "#f87171"
119
+ }), [isPlaying, gameOver, handleStartGame, handleStopGame]);
120
+ const gameOverModalProps = useMemo(() => ({
121
+ isVisible: gameOver,
122
+ score,
123
+ onPlayAgain: handleResetGame,
124
+ buttonText: "Fly Again!",
125
+ primaryColor: "rgba(147, 112, 219, 0.8)",
126
+ borderColor: "rgba(147, 112, 219, 0.9)",
127
+ buttonColor: "#9370db",
128
+ buttonBorderColor: "#ba68c8"
129
+ }), [gameOver, score, handleResetGame]);
130
+ const gameSettingsModalProps = useMemo(() => ({
131
+ gameId: GAME_IDS.SPACE_FIGHTER,
132
+ settings,
133
+ onSettingsChange
134
+ }), [settings, onSettingsChange]);
302
135
  return /*#__PURE__*/_jsx(GestureHandlerRootView, {
303
136
  style: {
304
137
  flex: 1
305
138
  },
306
- children: /*#__PURE__*/_jsx(GameBackground, {
307
- children: /*#__PURE__*/_jsxs(View, {
308
- style: styles.container,
309
- children: [/*#__PURE__*/_jsx(View, {
310
- style: {
311
- zIndex: 100,
312
- position: 'relative',
313
- paddingTop: 0,
314
- paddingHorizontal: 20
315
- },
316
- children: /*#__PURE__*/_jsx(ScoreBoard, {
317
- score: score,
318
- timeLeft: timeLeft
319
- })
320
- }), /*#__PURE__*/_jsxs(View, {
321
- style: {
322
- flex: 1,
323
- position: 'relative'
324
- },
325
- children: [/*#__PURE__*/_jsx(GameArea, {
326
- asteroids: asteroids,
327
- spacecraft: spacecraft,
328
- particles: gameService.getParticles(),
329
- spacecraftPath: spacecraftPath,
330
- isControllingSpacecraft: isControllingSpacecraft,
331
- onSpacecraftControl: handleSpacecraftControlMove,
332
- onSpacecraftRelease: handleSpacecraftControlEnd
333
- }), /*#__PURE__*/_jsx(GestureDetector, {
334
- gesture: panGesture,
335
- children: /*#__PURE__*/_jsx(View, {
336
- style: {
337
- position: 'absolute',
338
- top: 0,
339
- left: 0,
340
- right: 0,
341
- bottom: 0,
342
- backgroundColor: 'transparent',
343
- zIndex: 10
344
- }
345
- })
346
- })]
139
+ children: /*#__PURE__*/_jsx(View, {
140
+ style: styles.container,
141
+ children: /*#__PURE__*/_jsxs(GameBackground, {
142
+ children: [/*#__PURE__*/_jsx(GameArea, {}), /*#__PURE__*/_jsx(View, {
143
+ style: styles.scoreboardContainer,
144
+ children: /*#__PURE__*/_jsx(ScoreBoard, {})
347
145
  }), /*#__PURE__*/_jsx(GameControlButton, {
348
- isPlaying: isPlaying,
349
- gameOver: gameOver,
350
- onStartGame: handleStartGame,
351
- onStopGame: handleStopGame,
352
- startButtonText: "START FLYING",
353
- stopButtonText: "STOP GAME",
354
- startButtonSubtext: "Navigate through space!",
355
- stopButtonSubtext: "End current game",
356
- startButtonColor: "#9370db",
357
- stopButtonColor: "#dc2626",
358
- startButtonBorderColor: "#ba68c8",
359
- stopButtonBorderColor: "#f87171"
146
+ ...gameControlButtonProps
360
147
  }), /*#__PURE__*/_jsx(GameOverModal, {
361
- isVisible: gameOver,
362
- score: score,
363
- onPlayAgain: handleResetGame
364
- }), /*#__PURE__*/_jsx(Modal, {
365
- visible: showSettingsModal,
366
- animationType: "slide",
367
- presentationStyle: "pageSheet",
368
- onRequestClose: onToggleSettingsModal,
369
- children: /*#__PURE__*/_jsx(GameSettings, {
370
- gameId: "space-fighter",
371
- onClose: onToggleSettingsModal || (() => {}),
372
- settingsStore: settings
373
- })
148
+ ...gameOverModalProps
149
+ }), /*#__PURE__*/_jsx(GameSettingsModal, {
150
+ ...gameSettingsModalProps
374
151
  })]
375
152
  })
376
153
  })
@@ -380,38 +157,13 @@ const styles = StyleSheet.create({
380
157
  container: {
381
158
  flex: 1
382
159
  },
383
- settingsOverlay: {
160
+ scoreboardContainer: {
384
161
  position: 'absolute',
385
162
  top: 0,
386
- left: 0,
387
- right: 0,
388
- bottom: 0,
389
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
390
- justifyContent: 'center',
391
- alignItems: 'center'
392
- },
393
- settingsModal: {
394
- backgroundColor: '#1e3a8a',
395
- // bg-blue-900
396
- padding: 24,
397
- borderRadius: 16
398
- },
399
- settingsTitle: {
400
- color: '#ffffff',
401
- fontSize: 20,
402
- fontWeight: 'bold',
403
- marginBottom: 16
404
- },
405
- closeButton: {
406
- backgroundColor: '#2563eb',
407
- // bg-blue-600
408
- paddingVertical: 8,
409
- paddingHorizontal: 16,
410
- borderRadius: 8
411
- },
412
- closeButtonText: {
413
- color: '#ffffff',
414
- fontWeight: '600'
163
+ left: 20,
164
+ right: 20,
165
+ zIndex: 100,
166
+ pointerEvents: 'none' // Allow touches to pass through to spacecraft below
415
167
  }
416
168
  });
417
169
  //# sourceMappingURL=SpaceFighter.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useMemo","View","Dimensions","StyleSheet","Modal","Gesture","GestureDetector","GestureHandlerRootView","playSound","stopAllSounds","GAME_SOUNDS","playHaptic","HapticType","useSpaceFighterStore","createSpaceFighterService","ScoreBoard","GameArea","GameOverModal","GameBackground","GameControlButton","DEFAULT_SPACE_FIGHTER_SETTINGS","getDifficultySettings","GameSettings","createGameSettingsStore","jsx","_jsx","jsxs","_jsxs","width","height","get","SpaceFighter","showSettingsModal","onToggleSettingsModal","settings","externalSettings","onSettingsChange","gameService","current","settingsStore","defaultSettings","handleSettingsChange","newSettings","spaceFighterSettings","difficulty","soundEnabled","hapticEnabled","gameDuration","undefined","prevSettingsRef","prev","hasChanged","commonSettings","updateSettings","gameConstants","difficultySettings","asteroidSpawnInterval","asteroidSpeed","score","timeLeft","isPlaying","gameOver","asteroids","spacecraft","spacecraftPath","isControllingSpacecraft","startGame","stopGame","resetGame","decrementTime","addAsteroids","removeAsteroid","updateAsteroid","updateSpacecraft","setSpacecraftPath","setIsControllingSpacecraft","markAsteroidPassed","loseLife","currentSpacecraftPath","dragOffset","initialSpacecraftPosition","initialTouchPosition","pendingSpacecraftUpdate","animationFrameId","lastCollisionTime","handleSpacecraftControlStart","x","y","currentSpacecraft","getState","controlledSpacecraft","controlSpacecraft","processPendingSpacecraftUpdate","push","length","shift","handleSpacecraftControlMove","requestAnimationFrame","handleSpacecraftControlEnd","cancelAnimationFrame","releasedSpacecraft","releaseSpacecraft","setTimeout","playSuccessSound","SPACE_FIGHTER","SUCCESS","LIGHT","playCollisionSound","COLLISION","HEAVY","playGameOverSound","GAME_OVER","handleStartGame","updateDifficultySettings","initialSpacecraft","getInitialSpacecraft","startGameTimer","startAsteroidSpawning","startPhysicsLoop","START","handleStopGame","cleanup","handleResetGame","interval","setInterval","currentAsteroids","collision","checkCollision","now","Date","createCollisionParticles","resetSpacecraft","passedAsteroids","checkAsteroidPass","forEach","pairId","clearInterval","panGesture","Pan","onStart","event","absoluteX","absoluteY","onUpdate","dx","newX","newY","onEnd","onFinalize","runOnJS","style","flex","children","styles","container","zIndex","position","paddingTop","paddingHorizontal","particles","getParticles","onSpacecraftControl","onSpacecraftRelease","gesture","top","left","right","bottom","backgroundColor","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","isVisible","onPlayAgain","visible","animationType","presentationStyle","onRequestClose","gameId","onClose","create","settingsOverlay","justifyContent","alignItems","settingsModal","padding","borderRadius","settingsTitle","color","fontSize","fontWeight","marginBottom","closeButton","paddingVertical","closeButtonText"],"sourceRoot":"../../../../src","sources":["games/space-fighter/SpaceFighter.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useCallback","useMemo","View","StyleSheet","Dimensions","GestureHandlerRootView","useSpaceFighterStore","createSpaceFighterService","getDifficultySettings","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","useGameErrorHandler","GameErrorType","GameSettingsModal","GAME_IDS","jsx","_jsx","jsxs","_jsxs","width","height","get","SpaceFighter","settings","onSettingsChange","difficulty","isPlaying","state","gameOver","score","startGame","stopGame","resetGame","decrementTime","addAsteroids","removeAsteroid","updateAsteroid","updateSpacecraft","wrapFunction","safeExecute","SPACE_FIGHTER","gameService","INITIALIZATION_ERROR","handleResetGame","cleanup","difficultySettings","handleStartGame","updateDifficultySettings","asteroidSpeed","asteroidSpawnInterval","initialSpacecraft","getInitialSpacecraft","startGameTimer","startAsteroidSpawning","startPhysicsLoop","getState","spacecraft","asteroids","handleStopGame","UNKNOWN_ERROR","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","gameSettingsModalProps","gameId","style","flex","children","styles","container","scoreboardContainer","create","position","top","left","right","zIndex","pointerEvents"],"sourceRoot":"../../../../src","sources":["games/space-fighter/SpaceFighter.tsx"],"mappings":"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","ignoreList":[]}
@@ -75,36 +75,34 @@ export const SPACE_FIGHTER_COLORS = {
75
75
  STARS: '#ffffff' // White for stars
76
76
  };
77
77
 
78
- // Space Fighter Game Theme
78
+ // Space Fighter Game Theme - Matches scoreboard purple
79
79
  export const SPACE_FIGHTER_THEME = {
80
- backgroundColor: '#87CEEB',
81
- // Sky blue
82
- headerBackgroundColor: 'rgba(20, 83, 45, 0.8)',
83
- // Green with transparency
80
+ backgroundColor: '#1a1b3a',
81
+ // Lighter space purple for better visibility in modal
82
+ headerBackgroundColor: 'rgba(147, 112, 219, 0.9)',
83
+ // Purple header to match scoreboard
84
84
  headerTextColor: '#ffffff',
85
- sectionBackgroundColor: 'rgba(255, 255, 255, 0.2)',
86
- sectionTitleColor: '#1f2937',
87
- // Dark gray
88
- buttonSelectedColor: '#22c55e',
89
- // Green
85
+ sectionBackgroundColor: 'rgba(147, 112, 219, 0.4)',
86
+ // Match scoreboard transparency
87
+ sectionTitleColor: '#ffffff',
88
+ // White text on purple sections
89
+ buttonSelectedColor: '#9370db',
90
+ // Match start button purple
90
91
  buttonUnselectedColor: 'rgba(255, 255, 255, 0.3)',
91
92
  buttonSelectedTextColor: '#ffffff',
92
- buttonUnselectedTextColor: '#1f2937',
93
- switchTrackColorFalse: '#16a34a',
94
- switchTrackColorTrue: '#22c55e',
95
- switchThumbColor: '#fbbf24',
96
- // Amber
97
- infoTextColor: '#374151',
98
- // Gray
99
- resetButtonColor: '#ef4444',
100
- // Red
101
- resetButtonTextColor: '#ffffff'
93
+ buttonUnselectedTextColor: '#ffffff',
94
+ // White text for space theme
95
+ switchTrackColorFalse: 'rgba(147, 112, 219, 0.5)',
96
+ switchTrackColorTrue: '#9370db',
97
+ // Match start button
98
+ switchThumbColor: '#ffffff',
99
+ infoTextColor: '#ffffff' // White text for readability on dark background
102
100
  };
103
101
 
104
102
  // Space Fighter Difficulty Descriptions
105
103
  export const SPACE_FIGHTER_DIFFICULTY_DESCRIPTIONS = {
106
- easy: '60 seconds, slow asteroids, relaxed gameplay',
107
- medium: '120 seconds, normal asteroid speed, balanced challenge',
108
- hard: '180 seconds, fast asteroids, quick reflexes needed!'
104
+ easy: 'Slow asteroids, relaxed gameplay',
105
+ medium: 'Normal asteroid speed, balanced challenge',
106
+ hard: 'Fast asteroids, quick reflexes needed!'
109
107
  };
110
108
  //# sourceMappingURL=SpaceFighterConstants.js.map