react-native-games 1.2.0 → 1.3.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 (262) hide show
  1. package/README.md +43 -23
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -1
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/bike-racing/BikeRacing.js +1 -0
  5. package/lib/module/games/bike-racing/BikeRacing.js.map +1 -0
  6. package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -0
  7. package/lib/module/games/bike-racing/BikeRacingConstants.js.map +1 -0
  8. package/lib/module/games/bike-racing/BikeRacingService.js +1 -0
  9. package/lib/module/games/bike-racing/BikeRacingService.js.map +1 -0
  10. package/lib/module/games/bike-racing/BikeRacingStore.js +1 -0
  11. package/lib/module/games/bike-racing/BikeRacingStore.js.map +1 -0
  12. package/lib/module/games/bike-racing/components/BikeComponent.js +1 -0
  13. package/lib/module/games/bike-racing/components/BikeComponent.js.map +1 -0
  14. package/lib/module/games/bike-racing/components/GameBackground.js +1 -0
  15. package/lib/module/games/bike-racing/components/GameBackground.js.map +1 -0
  16. package/lib/module/games/bike-racing/components/ScoreBoard.js +1 -0
  17. package/lib/module/games/bike-racing/components/ScoreBoard.js.map +1 -0
  18. package/lib/module/games/bike-racing/components/index.js +1 -0
  19. package/lib/module/games/bike-racing/components/index.js.map +1 -0
  20. package/lib/module/games/bike-racing/index.js +1 -0
  21. package/lib/module/games/bike-racing/index.js.map +1 -0
  22. package/lib/module/games/block-blast/BlockBlast.js +1 -0
  23. package/lib/module/games/block-blast/BlockBlast.js.map +1 -0
  24. package/lib/module/games/block-blast/BlockBlastConstants.js +1 -0
  25. package/lib/module/games/block-blast/BlockBlastConstants.js.map +1 -0
  26. package/lib/module/games/block-blast/BlockBlastService.js +1 -0
  27. package/lib/module/games/block-blast/BlockBlastService.js.map +1 -0
  28. package/lib/module/games/block-blast/BlockBlastStore.js +1 -0
  29. package/lib/module/games/block-blast/BlockBlastStore.js.map +1 -0
  30. package/lib/module/games/block-blast/components/BlockPieceComponent.js +1 -0
  31. package/lib/module/games/block-blast/components/BlockPieceComponent.js.map +1 -0
  32. package/lib/module/games/block-blast/components/GameArea.js +1 -0
  33. package/lib/module/games/block-blast/components/GameArea.js.map +1 -0
  34. package/lib/module/games/block-blast/components/GameBackground.js +1 -0
  35. package/lib/module/games/block-blast/components/GameBackground.js.map +1 -0
  36. package/lib/module/games/block-blast/components/GridComponent.js +1 -0
  37. package/lib/module/games/block-blast/components/GridComponent.js.map +1 -0
  38. package/lib/module/games/block-blast/components/ScoreBoard.js +1 -0
  39. package/lib/module/games/block-blast/components/ScoreBoard.js.map +1 -0
  40. package/lib/module/games/block-blast/components/index.js +1 -0
  41. package/lib/module/games/block-blast/components/index.js.map +1 -0
  42. package/lib/module/games/block-blast/index.js +1 -0
  43. package/lib/module/games/block-blast/index.js.map +1 -0
  44. package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -0
  45. package/lib/module/games/bubble-shooter/BubbleShooter.js.map +1 -0
  46. package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -0
  47. package/lib/module/games/bubble-shooter/BubbleShooterConstants.js.map +1 -0
  48. package/lib/module/games/bubble-shooter/BubbleShooterService.js +1 -0
  49. package/lib/module/games/bubble-shooter/BubbleShooterService.js.map +1 -0
  50. package/lib/module/games/bubble-shooter/BubbleShooterStore.js +1 -0
  51. package/lib/module/games/bubble-shooter/BubbleShooterStore.js.map +1 -0
  52. package/lib/module/games/bubble-shooter/components/GameArea.js +1 -0
  53. package/lib/module/games/bubble-shooter/components/GameArea.js.map +1 -0
  54. package/lib/module/games/bubble-shooter/components/GameBackground.js +1 -0
  55. package/lib/module/games/bubble-shooter/components/GameBackground.js.map +1 -0
  56. package/lib/module/games/bubble-shooter/components/ScoreBoard.js +1 -0
  57. package/lib/module/games/bubble-shooter/components/ScoreBoard.js.map +1 -0
  58. package/lib/module/games/bubble-shooter/components/index.js +1 -0
  59. package/lib/module/games/bubble-shooter/components/index.js.map +1 -0
  60. package/lib/module/games/bubble-shooter/index.js +1 -0
  61. package/lib/module/games/bubble-shooter/index.js.map +1 -0
  62. package/lib/module/games/candy-crush/CandyCrush.js +1 -1
  63. package/lib/module/games/candy-crush/CandyCrush.js.map +1 -1
  64. package/lib/module/games/car-racing/CarRacing.js +1 -0
  65. package/lib/module/games/car-racing/CarRacing.js.map +1 -0
  66. package/lib/module/games/car-racing/CarRacingConstants.js +1 -0
  67. package/lib/module/games/car-racing/CarRacingConstants.js.map +1 -0
  68. package/lib/module/games/car-racing/CarRacingService.js +1 -0
  69. package/lib/module/games/car-racing/CarRacingService.js.map +1 -0
  70. package/lib/module/games/car-racing/CarRacingStore.js +1 -0
  71. package/lib/module/games/car-racing/CarRacingStore.js.map +1 -0
  72. package/lib/module/games/car-racing/components/CarComponent.js +1 -0
  73. package/lib/module/games/car-racing/components/CarComponent.js.map +1 -0
  74. package/lib/module/games/car-racing/components/GameBackground.js +1 -0
  75. package/lib/module/games/car-racing/components/GameBackground.js.map +1 -0
  76. package/lib/module/games/car-racing/components/ScoreBoard.js +1 -0
  77. package/lib/module/games/car-racing/components/ScoreBoard.js.map +1 -0
  78. package/lib/module/games/car-racing/components/index.js +1 -0
  79. package/lib/module/games/car-racing/components/index.js.map +1 -0
  80. package/lib/module/games/colors-sort/ColorsSort.js +1 -1
  81. package/lib/module/games/colors-sort/ColorsSort.js.map +1 -1
  82. package/lib/module/games/dino-jump/DinoJump.js +1 -1
  83. package/lib/module/games/dino-jump/DinoJump.js.map +1 -1
  84. package/lib/module/games/flappy-bird/FlappyBird.js +1 -1
  85. package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -1
  86. package/lib/module/games/fruit-merger/FruitMerger.js +1 -1
  87. package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -1
  88. package/lib/module/games/fruit-ninja/FruitNinja.js +1 -1
  89. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  90. package/lib/module/games/game-2048/Game2048.js +1 -1
  91. package/lib/module/games/game-2048/Game2048.js.map +1 -1
  92. package/lib/module/games/maze-runner/MazeRunner.js +1 -1
  93. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  94. package/lib/module/games/perfect-circle/PerfectCircle.js +1 -0
  95. package/lib/module/games/perfect-circle/PerfectCircle.js.map +1 -0
  96. package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -0
  97. package/lib/module/games/perfect-circle/PerfectCircleConstants.js.map +1 -0
  98. package/lib/module/games/perfect-circle/PerfectCircleService.js +1 -0
  99. package/lib/module/games/perfect-circle/PerfectCircleService.js.map +1 -0
  100. package/lib/module/games/perfect-circle/PerfectCircleStore.js +1 -0
  101. package/lib/module/games/perfect-circle/PerfectCircleStore.js.map +1 -0
  102. package/lib/module/games/perfect-circle/components/DrawingCanvas.js +1 -0
  103. package/lib/module/games/perfect-circle/components/DrawingCanvas.js.map +1 -0
  104. package/lib/module/games/perfect-circle/components/GameBackground.js +1 -0
  105. package/lib/module/games/perfect-circle/components/GameBackground.js.map +1 -0
  106. package/lib/module/games/perfect-circle/components/ScoreBoard.js +1 -0
  107. package/lib/module/games/perfect-circle/components/ScoreBoard.js.map +1 -0
  108. package/lib/module/games/perfect-circle/index.js +1 -0
  109. package/lib/module/games/perfect-circle/index.js.map +1 -0
  110. package/lib/module/games/popit-fidget/PopitFidget.js +1 -1
  111. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  112. package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -1
  113. package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -1
  114. package/lib/module/games/snake/Snake.js +1 -1
  115. package/lib/module/games/snake/Snake.js.map +1 -1
  116. package/lib/module/games/snake/SnakeStore.js +1 -1
  117. package/lib/module/games/snake/SnakeStore.js.map +1 -1
  118. package/lib/module/games/snake/components/ScoreBoard.js +1 -1
  119. package/lib/module/games/snake/components/ScoreBoard.js.map +1 -1
  120. package/lib/module/games/space-fighter/SpaceFighter.js +1 -1
  121. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  122. package/lib/module/games/whack-a-mole/WhackAMole.js +1 -1
  123. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  124. package/lib/module/helpers/GameOverModal.js +1 -1
  125. package/lib/module/helpers/GameOverModal.js.map +1 -1
  126. package/lib/module/helpers/GameSettingsModal.js +1 -1
  127. package/lib/module/helpers/GameSettingsModal.js.map +1 -1
  128. package/lib/module/helpers/ScoreBoardContainer.js +1 -1
  129. package/lib/module/helpers/ScoreBoardContainer.js.map +1 -1
  130. package/lib/module/index.js +1 -1
  131. package/lib/module/index.js.map +1 -1
  132. package/lib/module/services/GamesConstants.js +1 -1
  133. package/lib/module/services/GamesConstants.js.map +1 -1
  134. package/lib/module/services/GamesService.js +1 -1
  135. package/lib/module/services/GamesService.js.map +1 -1
  136. package/lib/module/services/ScoringService.js +1 -0
  137. package/lib/module/services/ScoringService.js.map +1 -0
  138. package/lib/module/services/SoundsService.js +1 -1
  139. package/lib/module/services/SoundsService.js.map +1 -1
  140. package/lib/module/services/UtilsService.js +1 -1
  141. package/lib/module/services/UtilsService.js.map +1 -1
  142. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  143. package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +4 -0
  144. package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts.map +1 -0
  145. package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +76 -0
  146. package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts.map +1 -0
  147. package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +22 -0
  148. package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts.map +1 -0
  149. package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +72 -0
  150. package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts.map +1 -0
  151. package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +12 -0
  152. package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts.map +1 -0
  153. package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +9 -0
  154. package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts.map +1 -0
  155. package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +7 -0
  156. package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts.map +1 -0
  157. package/lib/typescript/src/games/bike-racing/components/index.d.ts +4 -0
  158. package/lib/typescript/src/games/bike-racing/components/index.d.ts.map +1 -0
  159. package/lib/typescript/src/games/bike-racing/index.d.ts +5 -0
  160. package/lib/typescript/src/games/bike-racing/index.d.ts.map +1 -0
  161. package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +4 -0
  162. package/lib/typescript/src/games/block-blast/BlockBlast.d.ts.map +1 -0
  163. package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +82 -0
  164. package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts.map +1 -0
  165. package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +17 -0
  166. package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts.map +1 -0
  167. package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +62 -0
  168. package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts.map +1 -0
  169. package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +14 -0
  170. package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts.map +1 -0
  171. package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +12 -0
  172. package/lib/typescript/src/games/block-blast/components/GameArea.d.ts.map +1 -0
  173. package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts +7 -0
  174. package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts.map +1 -0
  175. package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +17 -0
  176. package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts.map +1 -0
  177. package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +7 -0
  178. package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts.map +1 -0
  179. package/lib/typescript/src/games/block-blast/components/index.d.ts +6 -0
  180. package/lib/typescript/src/games/block-blast/components/index.d.ts.map +1 -0
  181. package/lib/typescript/src/games/block-blast/index.d.ts +5 -0
  182. package/lib/typescript/src/games/block-blast/index.d.ts.map +1 -0
  183. package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +4 -0
  184. package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts.map +1 -0
  185. package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +61 -0
  186. package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts.map +1 -0
  187. package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +26 -0
  188. package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts.map +1 -0
  189. package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +62 -0
  190. package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts.map +1 -0
  191. package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +9 -0
  192. package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts.map +1 -0
  193. package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts +8 -0
  194. package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts.map +1 -0
  195. package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +7 -0
  196. package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts.map +1 -0
  197. package/lib/typescript/src/games/bubble-shooter/components/index.d.ts +4 -0
  198. package/lib/typescript/src/games/bubble-shooter/components/index.d.ts.map +1 -0
  199. package/lib/typescript/src/games/bubble-shooter/index.d.ts +3 -0
  200. package/lib/typescript/src/games/bubble-shooter/index.d.ts.map +1 -0
  201. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -1
  202. package/lib/typescript/src/games/car-racing/CarRacing.d.ts +4 -0
  203. package/lib/typescript/src/games/car-racing/CarRacing.d.ts.map +1 -0
  204. package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +76 -0
  205. package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts.map +1 -0
  206. package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +22 -0
  207. package/lib/typescript/src/games/car-racing/CarRacingService.d.ts.map +1 -0
  208. package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +72 -0
  209. package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts.map +1 -0
  210. package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +13 -0
  211. package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts.map +1 -0
  212. package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +9 -0
  213. package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts.map +1 -0
  214. package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +7 -0
  215. package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts.map +1 -0
  216. package/lib/typescript/src/games/car-racing/components/index.d.ts +4 -0
  217. package/lib/typescript/src/games/car-racing/components/index.d.ts.map +1 -0
  218. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts.map +1 -1
  219. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -1
  220. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -1
  221. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -1
  222. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  223. package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -1
  224. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  225. package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +4 -0
  226. package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts.map +1 -0
  227. package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +81 -0
  228. package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts.map +1 -0
  229. package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +14 -0
  230. package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts.map +1 -0
  231. package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +40 -0
  232. package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts.map +1 -0
  233. package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +9 -0
  234. package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts.map +1 -0
  235. package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts +8 -0
  236. package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts.map +1 -0
  237. package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +7 -0
  238. package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts.map +1 -0
  239. package/lib/typescript/src/games/perfect-circle/index.d.ts +3 -0
  240. package/lib/typescript/src/games/perfect-circle/index.d.ts.map +1 -0
  241. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  242. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -1
  243. package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -1
  244. package/lib/typescript/src/games/snake/SnakeStore.d.ts +4 -0
  245. package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -1
  246. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -1
  247. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  248. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  249. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts.map +1 -1
  250. package/lib/typescript/src/index.d.ts +6 -1
  251. package/lib/typescript/src/index.d.ts.map +1 -1
  252. package/lib/typescript/src/services/GamesConstants.d.ts +50 -0
  253. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  254. package/lib/typescript/src/services/GamesService.d.ts +2 -1
  255. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  256. package/lib/typescript/src/services/ScoringService.d.ts +2 -0
  257. package/lib/typescript/src/services/ScoringService.d.ts.map +1 -0
  258. package/lib/typescript/src/services/SoundsService.d.ts +88 -0
  259. package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
  260. package/lib/typescript/src/services/UtilsService.d.ts +12 -1
  261. package/lib/typescript/src/services/UtilsService.d.ts.map +1 -1
  262. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","Dimensions","GestureDetector","Gesture","GestureHandlerRootView","useCarRacingStore","useScore","useIsPlaying","useGameOver","useObstacles","usePlayerCar","useRoadOffset","useParticleEffects","useLives","CarRacingService","GameBackground","CarComponent","ScoreBoard","GameControlButton","GameOverModal","GameSettingsModal","ParticleBlast","GAME_IDS","DEFAULT_GAME_SETTINGS","getDifficultySettings","CAR_RACING_COLORS","CAR_RACING_GAME_CONFIG","playSound","GAME_SOUNDS","playHaptic","HapticType","jsx","_jsx","jsxs","_jsxs","width","height","get","CarRacing","settings","externalSettings","onSettingsChange","onEndGame","difficulty","soundEnabled","enableSounds","hapticEnabled","enableHaptics","offset","score","isPlaying","gameOver","lives","obstacles","playerCar","roadOffset","particleEffects","gameReportedRef","useRef","reportGameEnd","useCallback","status","current","toString","startGame","duration","getState","stopGame","resetGame","handleParticleComplete","effectId","removeParticleEffect","difficultySettings","useMemo","gameService","roadSpeed","obstacleSpawnInterval","useEffect","setOffset","handleCollision","CAR_RACING","CRASH","ERROR","handlePass","PASS","LIGHT","setCallbacks","timer","setInterval","decrementTime","clearInterval","cleanup","handleStartGame","gameDuration","START","SUCCESS","handleStopGame","handleResetGame","handlePlayAgain","previousLaneRef","panGesture","Pan","onUpdate","event","roadWidth","LANE_WIDTH","ROAD_LANES","roadStartX","relativeX","absoluteX","lane","Math","floor","clampedLane","max","min","LANE_SWITCH","SELECTION","movePlayerToLane","runOnJS","gameControlButtonProps","onStartGame","onStopGame","startButtonColor","UI","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","startButtonText","stopButtonText","startButtonSubtext","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","style","styles","container","children","absoluteFillObject","gesture","gameArea","map","obstacle","x","y","color","isPlayer","id","PLAYER_CAR","effect","particleCount","colors","onComplete","gameId","create","flex","backgroundColor"],"sourceRoot":"../../../../src","sources":["games/car-racing/CarRacing.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";export const CAR_RACING_DIFFICULTY_CONFIG ={easy:{gameDuration:60,obstacleSpawnInterval:2500,roadSpeed:4},medium:{gameDuration:120,obstacleSpawnInterval:2000,roadSpeed:6},hard:{gameDuration:180,obstacleSpawnInterval:1500,roadSpeed:8}};export const getDifficultySettings = difficulty =>{return CAR_RACING_DIFFICULTY_CONFIG[difficulty];};export const DEFAULT_CAR_RACING_SETTINGS ={difficulty:'medium',soundEnabled:true,hapticEnabled:true,gameDuration:CAR_RACING_DIFFICULTY_CONFIG.medium.gameDuration,obstacleSpawnInterval:CAR_RACING_DIFFICULTY_CONFIG.medium.obstacleSpawnInterval,roadSpeed:CAR_RACING_DIFFICULTY_CONFIG.medium.roadSpeed};export const CAR_RACING_GAME_CONFIG ={GAME_DURATION:120,CAR_WIDTH:50,CAR_HEIGHT:80,OBSTACLE_WIDTH:50,OBSTACLE_HEIGHT:80,ROAD_LANES:3,LANE_WIDTH:100,ROAD_SPEED:6,OBSTACLE_SPAWN_INTERVAL:2000,COLLISION_TOLERANCE:5,POINTS_PER_OBSTACLE_PASSED:10,LANE_SWITCH_DURATION:200};export const CAR_RACING_COLORS ={ROAD_DARK:'#2a2a2a',ROAD_LIGHT:'#3a3a3a',ROAD_LINE:'#ffffff',GRASS_GREEN:'#2d5016',GRASS_DARK:'#1a3009',SKY_BLUE:'#87ceeb',PLAYER_CAR:'#ff4444',OBSTACLE_CAR_1:'#4444ff',OBSTACLE_CAR_2:'#44ff44',OBSTACLE_CAR_3:'#ffff44',SCORE:'#ffd700',UI:'#ff4444'};export const CAR_RACING_THEME ={backgroundColor:'rgba(0,0,0,0.7)',headerBackgroundColor:'#ff4444',headerTextColor:'#ffffff',sectionBackgroundColor:'rgba(255,68,68,0.15)',sectionTitleColor:'#ff4444',buttonSelectedColor:'#ff4444',buttonUnselectedColor:'rgba(255,255,255,0.2)',buttonSelectedTextColor:'#ffffff',buttonUnselectedTextColor:'rgba(255,255,255,0.7)',switchTrackColorFalse:'rgba(255,68,68,0.3)',switchTrackColorTrue:'#ff4444',switchThumbColor:'#ffffff',infoTextColor:'rgba(255,255,255,0.9)'};export const CAR_RACING_DIFFICULTY_DESCRIPTIONS ={easy:'1 min,slower traffic,relaxed driving',medium:'2 mins,normal traffic speed,balanced challenge',hard:'3 mins,fast traffic,quick reflexes needed!'};export const getLanePosition =(laneIndex,screenWidth)=>{const roadWidth = CAR_RACING_GAME_CONFIG.LANE_WIDTH * CAR_RACING_GAME_CONFIG.ROAD_LANES;const roadStartX =(screenWidth - roadWidth)/ 2;const laneCenterX = roadStartX + laneIndex * CAR_RACING_GAME_CONFIG.LANE_WIDTH + CAR_RACING_GAME_CONFIG.LANE_WIDTH / 2;return laneCenterX - CAR_RACING_GAME_CONFIG.CAR_WIDTH / 2;};
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CAR_RACING_DIFFICULTY_CONFIG","easy","gameDuration","obstacleSpawnInterval","roadSpeed","medium","hard","getDifficultySettings","difficulty","DEFAULT_CAR_RACING_SETTINGS","soundEnabled","hapticEnabled","CAR_RACING_GAME_CONFIG","GAME_DURATION","CAR_WIDTH","CAR_HEIGHT","OBSTACLE_WIDTH","OBSTACLE_HEIGHT","ROAD_LANES","LANE_WIDTH","ROAD_SPEED","OBSTACLE_SPAWN_INTERVAL","COLLISION_TOLERANCE","POINTS_PER_OBSTACLE_PASSED","LANE_SWITCH_DURATION","CAR_RACING_COLORS","ROAD_DARK","ROAD_LIGHT","ROAD_LINE","GRASS_GREEN","GRASS_DARK","SKY_BLUE","PLAYER_CAR","OBSTACLE_CAR_1","OBSTACLE_CAR_2","OBSTACLE_CAR_3","SCORE","UI","CAR_RACING_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","CAR_RACING_DIFFICULTY_DESCRIPTIONS","getLanePosition","laneIndex","screenWidth","roadWidth","roadStartX","laneCenterX"],"sourceRoot":"../../../../src","sources":["games/car-racing/CarRacingConstants.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import{Dimensions}from 'react-native';import{useCarRacingStore}from "./CarRacingStore.js";import{CAR_RACING_GAME_CONFIG,CAR_RACING_COLORS,getLanePosition}from "./CarRacingConstants.js";const{width,height}= Dimensions.get('window');export class CarRacingService{obstacleSpawnTimer = null;gameLoopTimer = null;obstacleIdCounter = 0;roadSpeed = CAR_RACING_GAME_CONFIG.ROAD_SPEED;obstacleSpawnInterval = CAR_RACING_GAME_CONFIG.OBSTACLE_SPAWN_INTERVAL;collisionCooldown = new Map();constructor(roadSpeed,obstacleSpawnInterval){if(roadSpeed)this.roadSpeed = roadSpeed;if(obstacleSpawnInterval)this.obstacleSpawnInterval = obstacleSpawnInterval;}setCallbacks(onCollision,onPass){this.onCollision = onCollision;this.onPass = onPass;}startGame(){this.cleanup();this.obstacleIdCounter = 0;this.collisionCooldown.clear();this.startObstacleSpawning();this.gameLoopTimer = setInterval(()=>{this.updateGameState();},16);}stopGame(){this.cleanup();}updateGameState(){const store = useCarRacingStore.getState();const{obstacles,playerCar,isPlaying}= store;if(!isPlaying)return;const newRoadOffset =(store.roadOffset + this.roadSpeed)% 100;store.updateRoadOffset(newRoadOffset);for(let i = 0;i < obstacles.length;i++){const obstacle = obstacles[i];if(!obstacle)continue;const newY = obstacle.y + this.roadSpeed;if(newY > height + 50){store.removeObstacle(obstacle.id);continue;}if(!obstacle.passed && newY > playerCar.y + playerCar.height){store.markObstaclePassed(obstacle.id);if(this.onPass){this.onPass();}}store.updateObstacle(obstacle.id,{y:newY});this.checkCollision(obstacle,playerCar);}}checkCollision(obstacle,playerCar){const store = useCarRacingStore.getState();const cooldownTime = this.collisionCooldown.get(obstacle.id);if(cooldownTime && Date.now()- cooldownTime < 1000){return;}const tolerance = CAR_RACING_GAME_CONFIG.COLLISION_TOLERANCE;const collision = playerCar.x < obstacle.x + obstacle.width - tolerance && playerCar.x + playerCar.width > obstacle.x + tolerance && playerCar.y < obstacle.y + obstacle.height - tolerance && playerCar.y + playerCar.height > obstacle.y + tolerance;if(collision){this.collisionCooldown.set(obstacle.id,Date.now());const collisionX =(playerCar.x + playerCar.width / 2 + obstacle.x + obstacle.width / 2)/ 2;const collisionY =(playerCar.y + playerCar.height / 2 + obstacle.y + obstacle.height / 2)/ 2;store.addParticleEffect(collisionX,collisionY);store.loseLife();store.removeObstacle(obstacle.id);if(this.onCollision){this.onCollision();}}}startObstacleSpawning(){this.obstacleSpawnTimer = setInterval(()=>{this.spawnObstacle();},this.obstacleSpawnInterval);this.spawnObstacle();}spawnObstacle(){const store = useCarRacingStore.getState();if(!store.isPlaying)return;const lane = this.fastRandom(0,CAR_RACING_GAME_CONFIG.ROAD_LANES);const x = getLanePosition(lane,width);const colors = [CAR_RACING_COLORS.OBSTACLE_CAR_1,CAR_RACING_COLORS.OBSTACLE_CAR_2,CAR_RACING_COLORS.OBSTACLE_CAR_3];const colorIndex = this.fastRandom(0,colors.length);const color = colors[colorIndex] || CAR_RACING_COLORS.OBSTACLE_CAR_1;const obstacle ={id:`obstacle-${this.obstacleIdCounter++}`,x:x,y:-CAR_RACING_GAME_CONFIG.OBSTACLE_HEIGHT,lane,width:CAR_RACING_GAME_CONFIG.OBSTACLE_WIDTH,height:CAR_RACING_GAME_CONFIG.OBSTACLE_HEIGHT,color,passed:false};store.addObstacle(obstacle);}fastRandom(min,max){return Math.floor(Math.random()*(max - min))+ min;}movePlayerToLane(lane){const store = useCarRacingStore.getState();if(!store.isPlaying)return;store.movePlayerCar(lane);}cleanup(){if(this.obstacleSpawnTimer){clearInterval(this.obstacleSpawnTimer);this.obstacleSpawnTimer = null;}if(this.gameLoopTimer){clearInterval(this.gameLoopTimer);this.gameLoopTimer = null;}this.collisionCooldown.clear();}}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dimensions","useCarRacingStore","CAR_RACING_GAME_CONFIG","CAR_RACING_COLORS","getLanePosition","width","height","get","CarRacingService","obstacleSpawnTimer","gameLoopTimer","obstacleIdCounter","roadSpeed","ROAD_SPEED","obstacleSpawnInterval","OBSTACLE_SPAWN_INTERVAL","collisionCooldown","Map","constructor","setCallbacks","onCollision","onPass","startGame","cleanup","clear","startObstacleSpawning","setInterval","updateGameState","stopGame","store","getState","obstacles","playerCar","isPlaying","newRoadOffset","roadOffset","updateRoadOffset","i","length","obstacle","newY","y","removeObstacle","id","passed","markObstaclePassed","updateObstacle","checkCollision","cooldownTime","Date","now","tolerance","COLLISION_TOLERANCE","collision","x","set","collisionX","collisionY","addParticleEffect","loseLife","spawnObstacle","lane","fastRandom","ROAD_LANES","colors","OBSTACLE_CAR_1","OBSTACLE_CAR_2","OBSTACLE_CAR_3","colorIndex","color","OBSTACLE_HEIGHT","OBSTACLE_WIDTH","addObstacle","min","max","Math","floor","random","movePlayerToLane","movePlayerCar","clearInterval"],"sourceRoot":"../../../../src","sources":["games/car-racing/CarRacingService.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import{create}from 'zustand';import{subscribeWithSelector}from 'zustand/middleware';import{Dimensions}from 'react-native';import{immerMiddleware}from "../../services/UtilsService.js";import{CAR_RACING_GAME_CONFIG,getLanePosition}from "./CarRacingConstants.js";const{width,height}= Dimensions.get('window');export const useCarRacingStore = create()(subscribeWithSelector(immerMiddleware((set,_get)=>({score:0,timeLeft:CAR_RACING_GAME_CONFIG.GAME_DURATION,isPlaying:false,gameOver:false,lives:3,obstacles:[],playerCar:{x:getLanePosition(1,width),y:height * 0.65,lane:1,width:CAR_RACING_GAME_CONFIG.CAR_WIDTH,height:CAR_RACING_GAME_CONFIG.CAR_HEIGHT},roadOffset:0,particleEffects:[],offset:0,gameDuration:CAR_RACING_GAME_CONFIG.GAME_DURATION,setOffset:offset =>{set(draft =>{draft.offset = offset;const yPosition = offset > 0 ? height * 0.75:height * 0.62;draft.playerCar.y = yPosition;});},startGame:(gameDuration,offset)=>{const duration = gameDuration || CAR_RACING_GAME_CONFIG.GAME_DURATION;set(draft =>{draft.score = 0;draft.timeLeft = duration;draft.gameDuration = duration;draft.isPlaying = true;draft.gameOver = false;draft.lives = 3;draft.obstacles = [];draft.roadOffset = 0;if(offset !== undefined){draft.offset = offset;}const yPosition =(offset !== undefined ? offset:draft.offset)> 0 ? height * 0.75:height * 0.62;draft.playerCar ={x:getLanePosition(1,width),y:yPosition,lane:1,width:CAR_RACING_GAME_CONFIG.CAR_WIDTH,height:CAR_RACING_GAME_CONFIG.CAR_HEIGHT};});},stopGame:()=>{set(draft =>{draft.score = 0;draft.timeLeft = draft.gameDuration;draft.isPlaying = false;draft.gameOver = false;draft.lives = 3;draft.obstacles = [];draft.roadOffset = 0;const yPosition = draft.offset > 0 ? height * 0.75:height * 0.62;draft.playerCar ={x:getLanePosition(1,width),y:yPosition,lane:1,width:CAR_RACING_GAME_CONFIG.CAR_WIDTH,height:CAR_RACING_GAME_CONFIG.CAR_HEIGHT};});},resetGame:()=>{set(draft =>{draft.score = 0;draft.timeLeft = draft.gameDuration;draft.isPlaying = false;draft.gameOver = false;draft.lives = 3;draft.obstacles = [];draft.roadOffset = 0;const yPosition = draft.offset > 0 ? height * 0.75:height * 0.62;draft.playerCar ={x:getLanePosition(1,width),y:yPosition,lane:1,width:CAR_RACING_GAME_CONFIG.CAR_WIDTH,height:CAR_RACING_GAME_CONFIG.CAR_HEIGHT};});},updateScore:points =>{set(draft =>{draft.score = draft.score + points;});},decrementTime:()=>{set(draft =>{const newTimeLeft = draft.timeLeft - 1;if(newTimeLeft <= 0){draft.timeLeft = 0;draft.isPlaying = false;draft.gameOver = true;}else{draft.timeLeft = newTimeLeft;}});},addObstacle:obstacle =>{set(draft =>{draft.obstacles.push(obstacle);});},removeObstacle:obstacleId =>{set(draft =>{draft.obstacles = draft.obstacles.filter(o => o.id !== obstacleId);});},updateObstacle:(obstacleId,updates)=>{set(draft =>{for(let i = 0;i < draft.obstacles.length;i++){if(draft.obstacles[i].id === obstacleId){Object.assign(draft.obstacles[i],updates);break;}}});},movePlayerCar:lane =>{set(draft =>{const validLane = Math.max(0,Math.min(CAR_RACING_GAME_CONFIG.ROAD_LANES - 1,lane));draft.playerCar.lane = validLane;draft.playerCar.x = getLanePosition(validLane,width);});},updateRoadOffset:offset =>{set(draft =>{draft.roadOffset = offset;});},markObstaclePassed:obstacleId =>{set(draft =>{for(let i = 0;i < draft.obstacles.length;i++){if(draft.obstacles[i].id === obstacleId && !draft.obstacles[i].passed){draft.obstacles[i].passed = true;draft.score = draft.score + CAR_RACING_GAME_CONFIG.POINTS_PER_OBSTACLE_PASSED;break;}}});},loseLife:()=>{set(draft =>{const newLives = draft.lives - 1;if(newLives <= 0){draft.lives = 0;draft.isPlaying = false;draft.gameOver = true;}else{draft.lives = newLives;}});},clearObstacles:()=>{set(draft =>{draft.obstacles = [];});},addParticleEffect:(x,y)=>{set(draft =>{draft.particleEffects.push({id:`particle-${Date.now()}-${Math.random()}`,x,y});});},removeParticleEffect:effectId =>{set(draft =>{draft.particleEffects = draft.particleEffects.filter(e => e.id !== effectId);});}}))));export const useScore =()=> useCarRacingStore(state => state.score);export const useTimeLeft =()=> useCarRacingStore(state => state.timeLeft);export const useLives =()=> useCarRacingStore(state => state.lives);export const useIsPlaying =()=> useCarRacingStore(state => state.isPlaying);export const useGameOver =()=> useCarRacingStore(state => state.gameOver);export const useObstacles =()=> useCarRacingStore(state => state.obstacles);export const usePlayerCar =()=> useCarRacingStore(state => state.playerCar);export const useRoadOffset =()=> useCarRacingStore(state => state.roadOffset);export const useParticleEffects =()=> useCarRacingStore(state => state.particleEffects);
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","subscribeWithSelector","Dimensions","immerMiddleware","CAR_RACING_GAME_CONFIG","getLanePosition","width","height","get","useCarRacingStore","set","_get","score","timeLeft","GAME_DURATION","isPlaying","gameOver","lives","obstacles","playerCar","x","y","lane","CAR_WIDTH","CAR_HEIGHT","roadOffset","particleEffects","offset","gameDuration","setOffset","draft","yPosition","startGame","duration","undefined","stopGame","resetGame","updateScore","points","decrementTime","newTimeLeft","addObstacle","obstacle","push","removeObstacle","obstacleId","filter","o","id","updateObstacle","updates","i","length","Object","assign","movePlayerCar","validLane","Math","max","min","ROAD_LANES","updateRoadOffset","markObstaclePassed","passed","POINTS_PER_OBSTACLE_PASSED","loseLife","newLives","clearObstacles","addParticleEffect","Date","now","random","removeParticleEffect","effectId","e","useScore","state","useTimeLeft","useLives","useIsPlaying","useGameOver","useObstacles","usePlayerCar","useRoadOffset","useParticleEffects"],"sourceRoot":"../../../../src","sources":["games/car-racing/CarRacingStore.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import React from 'react';import{Canvas,RoundedRect,Rect,Circle,LinearGradient,vec}from '@shopify/react-native-skia';import Animated,{useAnimatedStyle,withSpring}from 'react-native-reanimated';import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const CarComponent = React.memo(({x,y,width,height,color,isPlayer = false})=>{const animatedStyle = useAnimatedStyle(()=>{if(isPlayer){return{transform:[{translateX:withSpring(x,{damping:25,stiffness:150,mass:0.8})},{translateY:y}]};}return{transform:[{translateX:x},{translateY:y}]};},[x,y,isPlayer]);return _jsx(Animated.View,{style:[{position:'absolute',width,height},animatedStyle],children:_jsxs(Canvas,{style:{width,height},children:[_jsx(RoundedRect,{x:width * 0.05,y:0,width:width * 0.9,height:height * 0.12,r:4,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width,0),colors:[adjustBrightness(color,-30),adjustBrightness(color,-40)]})}),_jsx(RoundedRect,{x:0,y:height * 0.1,width:width,height:height * 0.25,r:6,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width,0),colors:[color,adjustBrightness(color,-15),color]})}),_jsx(RoundedRect,{x:width * 0.12,y:height * 0.32,width:width * 0.76,height:height * 0.12,r:4,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(0,height * 0.12),colors:['rgba(100,150,200,0.7)','rgba(50,100,150,0.8)']})}),_jsx(RoundedRect,{x:width * 0.08,y:height * 0.42,width:width * 0.84,height:height * 0.22,r:5,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width,0),colors:[adjustBrightness(color,10),color,adjustBrightness(color,10)]})}),_jsx(Rect,{x:width * 0.12,y:height * 0.45,width:width * 0.25,height:height * 0.16,color:"rgba(50,100,150,0.75)"}),_jsx(Rect,{x:width * 0.63,y:height * 0.45,width:width * 0.25,height:height * 0.16,color:"rgba(50,100,150,0.75)"}),_jsx(RoundedRect,{x:width * 0.12,y:height * 0.62,width:width * 0.76,height:height * 0.1,r:4,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(0,height * 0.1),colors:['rgba(50,100,150,0.8)','rgba(100,150,200,0.7)']})}),_jsx(RoundedRect,{x:0,y:height * 0.7,width:width,height:height * 0.2,r:6,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width,0),colors:[color,adjustBrightness(color,-15),color]})}),_jsx(RoundedRect,{x:width * 0.05,y:height * 0.88,width:width * 0.9,height:height * 0.12,r:4,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width,0),colors:[adjustBrightness(color,-30),adjustBrightness(color,-40)]})}),_jsx(RoundedRect,{x:-width * 0.09,y:height * 0.17,width:width * 0.2,height:height * 0.22,r:3,color:"#ffffff"}),_jsx(RoundedRect,{x:-width * 0.08,y:height * 0.18,width:width * 0.18,height:height * 0.2,r:3,color:"#000000"}),_jsx(RoundedRect,{x:-width * 0.06,y:height * 0.2,width:width * 0.14,height:height * 0.16,r:2,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width * 0.14,0),colors:['#8a8a8a','#c0c0c0','#8a8a8a']})}),_jsx(RoundedRect,{x:-width * 0.04,y:height * 0.24,width:width * 0.08,height:height * 0.08,r:1,color:"#4a4a4a"}),_jsx(RoundedRect,{x:width * 0.89,y:height * 0.17,width:width * 0.2,height:height * 0.22,r:3,color:"#ffffff"}),_jsx(RoundedRect,{x:width * 0.9,y:height * 0.18,width:width * 0.18,height:height * 0.2,r:3,color:"#000000"}),_jsx(RoundedRect,{x:width * 0.92,y:height * 0.2,width:width * 0.14,height:height * 0.16,r:2,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width * 0.14,0),colors:['#8a8a8a','#c0c0c0','#8a8a8a']})}),_jsx(RoundedRect,{x:width * 0.96,y:height * 0.24,width:width * 0.08,height:height * 0.08,r:1,color:"#4a4a4a"}),_jsx(RoundedRect,{x:-width * 0.09,y:height * 0.61,width:width * 0.2,height:height * 0.22,r:3,color:"#ffffff"}),_jsx(RoundedRect,{x:-width * 0.08,y:height * 0.62,width:width * 0.18,height:height * 0.2,r:3,color:"#000000"}),_jsx(RoundedRect,{x:-width * 0.06,y:height * 0.64,width:width * 0.14,height:height * 0.16,r:2,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width * 0.14,0),colors:['#8a8a8a','#c0c0c0','#8a8a8a']})}),_jsx(RoundedRect,{x:-width * 0.04,y:height * 0.68,width:width * 0.08,height:height * 0.08,r:1,color:"#4a4a4a"}),_jsx(RoundedRect,{x:width * 0.89,y:height * 0.61,width:width * 0.2,height:height * 0.22,r:3,color:"#ffffff"}),_jsx(RoundedRect,{x:width * 0.9,y:height * 0.62,width:width * 0.18,height:height * 0.2,r:3,color:"#000000"}),_jsx(RoundedRect,{x:width * 0.92,y:height * 0.64,width:width * 0.14,height:height * 0.16,r:2,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width * 0.14,0),colors:['#8a8a8a','#c0c0c0','#8a8a8a']})}),_jsx(RoundedRect,{x:width * 0.96,y:height * 0.68,width:width * 0.08,height:height * 0.08,r:1,color:"#4a4a4a"}),_jsx(RoundedRect,{x:-width * 0.05,y:height * 0.4,width:width * 0.12,height:height * 0.08,r:2,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width * 0.12,0),colors:[adjustBrightness(color,-20),color]})}),_jsx(RoundedRect,{x:width * 0.93,y:height * 0.4,width:width * 0.12,height:height * 0.08,r:2,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width * 0.12,0),colors:[color,adjustBrightness(color,-20)]})}),_jsx(Circle,{cx:width * 0.2,cy:height * 0.06,r:width * 0.1,color:isPlayer ? '#ffff99':'#ffffcc'}),_jsx(Circle,{cx:width * 0.8,cy:height * 0.06,r:width * 0.1,color:isPlayer ? '#ffff99':'#ffffcc'}),_jsx(Circle,{cx:width * 0.2,cy:height * 0.06,r:width * 0.06,color:isPlayer ? '#ffffff':'#ffffe0'}),_jsx(Circle,{cx:width * 0.8,cy:height * 0.06,r:width * 0.06,color:isPlayer ? '#ffffff':'#ffffe0'}),_jsx(RoundedRect,{x:width * 0.12,y:height * 0.94,width:width * 0.15,height:height * 0.05,r:2,color:"#ff3333"}),_jsx(RoundedRect,{x:width * 0.73,y:height * 0.94,width:width * 0.15,height:height * 0.05,r:2,color:"#ff3333"}),_jsx(Rect,{x:width * 0.45,y:height * 0.12,width:width * 0.1,height:height * 0.22,color:"rgba(255,255,255,0.15)"}),_jsx(RoundedRect,{x:width * 0.2,y:height * 0.46,width:width * 0.6,height:height * 0.06,r:3,color:"rgba(255,255,255,0.25)"}),_jsx(Rect,{x:width * 0.38,y:height * 0.42,width:width * 0.02,height:height * 0.22,color:"rgba(0,0,0,0.3)"}),_jsx(Rect,{x:width * 0.6,y:height * 0.42,width:width * 0.02,height:height * 0.22,color:"rgba(0,0,0,0.3)"})]})});});CarComponent.displayName = 'CarComponent';const arePropsEqual =(prevProps,nextProps)=>{return prevProps.x === nextProps.x && prevProps.y === nextProps.y && prevProps.width === nextProps.width && prevProps.height === nextProps.height && prevProps.color === nextProps.color && prevProps.isPlayer === nextProps.isPlayer;};export const MemoizedCarComponent = React.memo(CarComponent,arePropsEqual);function adjustBrightness(color,amount){const hex = color.replace('#','');const r = Math.max(0,Math.min(255,parseInt(hex.substring(0,2),16)+ amount));const g = Math.max(0,Math.min(255,parseInt(hex.substring(2,4),16)+ amount));const b = Math.max(0,Math.min(255,parseInt(hex.substring(4,6),16)+ amount));return `#${r.toString(16).padStart(2,'0')}${g.toString(16).padStart(2,'0')}${b.toString(16).padStart(2,'0')}`;}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Canvas","RoundedRect","Rect","Circle","LinearGradient","vec","Animated","useAnimatedStyle","withSpring","jsx","_jsx","jsxs","_jsxs","CarComponent","memo","x","y","width","height","color","isPlayer","animatedStyle","transform","translateX","damping","stiffness","mass","translateY","View","style","position","children","r","start","end","colors","adjustBrightness","cx","cy","displayName","arePropsEqual","prevProps","nextProps","MemoizedCarComponent","amount","hex","replace","Math","max","min","parseInt","substring","g","b","toString","padStart"],"sourceRoot":"../../../../../src","sources":["games/car-racing/components/CarComponent.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import React from 'react';import{Canvas,Rect,LinearGradient,vec,Line}from '@shopify/react-native-skia';import{CAR_RACING_COLORS,CAR_RACING_GAME_CONFIG}from "../CarRacingConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const GameBackgroundComponent =({width,height,roadOffset})=>{const roadWidth = CAR_RACING_GAME_CONFIG.LANE_WIDTH * CAR_RACING_GAME_CONFIG.ROAD_LANES;const roadStartX =(width - roadWidth)/ 2;const grassWidth = roadStartX;const lineSpacing = 40;const lineHeight = 30;const lineOffset = roadOffset % lineSpacing;return _jsxs(Canvas,{style:{width,height},children:[_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(width / 2,0),end:vec(width / 2,height),colors:[CAR_RACING_COLORS.SKY_BLUE,'#b0e0e6']})}),_jsx(Rect,{x:0,y:0,width:grassWidth,height:height,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(grassWidth,0),colors:[CAR_RACING_COLORS.GRASS_DARK,CAR_RACING_COLORS.GRASS_GREEN]})}),_jsx(Rect,{x:roadStartX + roadWidth,y:0,width:grassWidth,height:height,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(grassWidth,0),colors:[CAR_RACING_COLORS.GRASS_GREEN,CAR_RACING_COLORS.GRASS_DARK]})}),_jsx(Rect,{x:roadStartX,y:0,width:roadWidth,height:height,color:CAR_RACING_COLORS.ROAD_DARK}),[1,2].map(laneIndex =>{const lineX = roadStartX + laneIndex * CAR_RACING_GAME_CONFIG.LANE_WIDTH;const numLines = Math.ceil(height / lineSpacing)+ 1;return _jsx(React.Fragment,{children:Array.from({length:numLines}).map((_,i)=>{const y = i * lineSpacing - lineOffset;return _jsx(Line,{p1:vec(lineX,y),p2:vec(lineX,y + lineHeight),color:CAR_RACING_COLORS.ROAD_LINE,strokeWidth:3},`line-${laneIndex}-${i}`);})},`lane-${laneIndex}`);}),_jsx(Line,{p1:vec(roadStartX,0),p2:vec(roadStartX,height),color:CAR_RACING_COLORS.ROAD_LINE,strokeWidth:4}),_jsx(Line,{p1:vec(roadStartX + roadWidth,0),p2:vec(roadStartX + roadWidth,height),color:CAR_RACING_COLORS.ROAD_LINE,strokeWidth:4})]});};const arePropsEqual =(prevProps,nextProps)=>{return prevProps.width === nextProps.width && prevProps.height === nextProps.height && Math.floor(prevProps.roadOffset / 5)=== Math.floor(nextProps.roadOffset / 5);};export const GameBackground = React.memo(GameBackgroundComponent,arePropsEqual);GameBackground.displayName = 'GameBackground';
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Canvas","Rect","LinearGradient","vec","Line","CAR_RACING_COLORS","CAR_RACING_GAME_CONFIG","jsx","_jsx","jsxs","_jsxs","GameBackgroundComponent","width","height","roadOffset","roadWidth","LANE_WIDTH","ROAD_LANES","roadStartX","grassWidth","lineSpacing","lineHeight","lineOffset","style","children","x","y","start","end","colors","SKY_BLUE","GRASS_DARK","GRASS_GREEN","color","ROAD_DARK","map","laneIndex","lineX","numLines","Math","ceil","Fragment","Array","from","length","_","i","p1","p2","ROAD_LINE","strokeWidth","arePropsEqual","prevProps","nextProps","floor","GameBackground","memo","displayName"],"sourceRoot":"../../../../../src","sources":["games/car-racing/components/GameBackground.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import React from 'react';import{View,Text,StyleSheet}from 'react-native';import{ScoreBoardContainer}from "../../../helpers/index.js";import{CAR_RACING_COLORS}from "../CarRacingConstants.js";import{useScore,useTimeLeft,useLives}from "../CarRacingStore.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const ScoreBoard = React.memo(({offset = 0})=>{const score = useScore();const timeLeft = useTimeLeft();const lives = useLives();const formattedTime = React.useMemo(()=>{const mins = Math.floor(timeLeft / 60);const secs = timeLeft % 60;return `${mins.toString().padStart(2,'0')}:${secs.toString().padStart(2,'0')}`;},[timeLeft]);return _jsx(ScoreBoardContainer,{offset:offset,backgroundColor:"rgba(255,68,68,0.4)",borderColor:"rgba(255,68,68,0.4)",children:_jsxs(View,{style:styles.rowContainer,children:[_jsxs(View,{style:styles.scoreSection,children:[_jsx(Text,{style:styles.label,children:"SCORE"}),_jsx(Text,{style:styles.value,children:score})]}),_jsxs(View,{style:styles.timeSection,children:[_jsx(Text,{style:styles.label,children:"TIME"}),_jsx(Text,{style:[styles.value,timeLeft <= 10 && styles.timeWarning],children:formattedTime})]}),_jsxs(View,{style:styles.livesSection,children:[_jsx(Text,{style:styles.label,children:"LIVES"}),_jsx(View,{style:styles.heartsContainer,children:Array.from({length:3}).map((_,index)=> _jsx(Text,{style:styles.heartIcon,children:index < lives ? '❤️':'🖤'},index))})]})]})});});ScoreBoard.displayName = 'ScoreBoard';const styles = StyleSheet.create({rowContainer:{flexDirection:'row',justifyContent:'space-between',alignItems:'center',width:'100%'},scoreSection:{flex:1,alignItems:'center'},timeSection:{flex:1,alignItems:'center'},livesSection:{flex:1,alignItems:'center'},label:{fontSize:16,fontWeight:'bold',color:'#ffffff',marginBottom:4,letterSpacing:0.5},value:{fontSize:25,fontWeight:'bold',color:'#ffffff'},timeWarning:{color:CAR_RACING_COLORS.UI},heartsContainer:{flexDirection:'row',gap:4},heartIcon:{fontSize:22}});
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Text","StyleSheet","ScoreBoardContainer","CAR_RACING_COLORS","useScore","useTimeLeft","useLives","jsx","_jsx","jsxs","_jsxs","ScoreBoard","memo","offset","score","timeLeft","lives","formattedTime","useMemo","mins","Math","floor","secs","toString","padStart","backgroundColor","borderColor","children","style","styles","rowContainer","scoreSection","label","value","timeSection","timeWarning","livesSection","heartsContainer","Array","from","length","map","_","index","heartIcon","displayName","create","flexDirection","justifyContent","alignItems","width","flex","fontSize","fontWeight","color","marginBottom","letterSpacing","UI","gap"],"sourceRoot":"../../../../../src","sources":["games/car-racing/components/ScoreBoard.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";export{GameBackground}from "./GameBackground.js";export{CarComponent}from "./CarComponent.js";export{ScoreBoard}from "./ScoreBoard.js";
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GameBackground","CarComponent","ScoreBoard"],"sourceRoot":"../../../../../src","sources":["games/car-racing/components/index.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,qBAAkB;AACjD,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,UAAU,QAAQ,iBAAc","ignoreList":[]}
@@ -1 +1 @@
1
- "use strict";import React,{useEffect,useCallback,useMemo}from 'react';import{View,StyleSheet}from 'react-native';import{useColorsSortStore,useIsPlaying,useIsGameOver,useTime,useContainers,useSelectedContainerId}from "./ColorsSortStore.js";import{ColorContainer,ScoreBoard,GameBackground}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{COLORS_SORT_COLORS}from "./ColorsSortConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{formatTime,getGridLayout}from "./ColorsSortService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const ColorsSort = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange})=>{const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const time = useTime();const containers = useContainers();const selectedContainerId = useSelectedContainerId();const initializeGame = useColorsSortStore(state => state.initializeGame);const startGame = useColorsSortStore(state => state.startGame);const stopGame = useColorsSortStore(state => state.stopGame);const resetGame = useColorsSortStore(state => state.resetGame);const selectContainer = useColorsSortStore(state => state.selectContainer);const difficulty = settings.difficulty;const gridStyle = useMemo(()=> getGridLayout(difficulty),[difficulty]);useEffect(()=>{initializeGame(difficulty);},[difficulty,initializeGame]);const handleStartGame = useCallback(()=>{initializeGame(difficulty);startGame();playSound(GAME_SOUNDS.COLORS_SORT.START,settings.enableSounds);playHaptic(HapticType.MEDIUM,settings.enableHaptics);},[difficulty,initializeGame,startGame,settings.enableSounds,settings.enableHaptics]);const handleStopGame = useCallback(()=>{stopGame();},[stopGame]);const handleResetGame = useCallback(()=>{resetGame();initializeGame(difficulty);},[resetGame,initializeGame,difficulty]);const handleContainerPress = useCallback(containerId =>{if(!isPlaying || isGameOver)return;selectContainer(containerId,settings);},[isPlaying,isGameOver,selectContainer,settings]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START SORTING",stopButtonText:"STOP GAME",startButtonSubtext:"Sort colors!",startButtonColor:COLORS_SORT_COLORS.BUTTON_PRIMARY,startButtonBorderColor:COLORS_SORT_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame]);const gameOverModalProps = useMemo(()=>({isVisible:isGameOver,score:time,onPlayAgain:handleResetGame,buttonText:"Sort Again!",primaryColor:"rgba(255,107,53,0.5)",borderColor:"rgba(255,107,53,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#FF6B35",scoreLabel:"Completion Time",scoreFormatter:formatTime}),[isGameOver,time,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.COLORS_SORT,settings,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const dynamicStyles = useMemo(()=>({gameArea:{...styles.gameArea,paddingTop:100 + offset}}),[offset]);return _jsx(GameBackground,{children:_jsxs(View,{style:styles.container,children:[_jsx(ScoreBoard,{offset:offset}),_jsx(View,{style:dynamicStyles.gameArea,children:_jsx(View,{style:[styles.containersGrid,gridStyle],children:containers.map(container => _jsx(ColorContainer,{container:container,isSelected:selectedContainerId === container.id,onPress:()=> handleContainerPress(container.id),difficulty:difficulty},container.id))})}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})});});const styles = StyleSheet.create({container:{flex:1},gameArea:{flex:1,justifyContent:'center',alignItems:'center',paddingTop:100,paddingBottom:120},containersGrid:{flexDirection:'row',flexWrap:'wrap',justifyContent:'center',alignItems:'flex-end',gap:15,paddingHorizontal:10}});ColorsSort.displayName = 'ColorsSort';
1
+ "use strict";import React,{useEffect,useCallback,useMemo}from 'react';import{View,StyleSheet}from 'react-native';import{useColorsSortStore,useIsPlaying,useIsGameOver,useTime,useContainers,useSelectedContainerId}from "./ColorsSortStore.js";import{ColorContainer,ScoreBoard,GameBackground}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{COLORS_SORT_COLORS}from "./ColorsSortConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{formatTime,getGridLayout}from "./ColorsSortService.js";import{calculateTimeBasedScore}from "../../services/ScoringService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const ColorsSort = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const time = useTime();const containers = useContainers();const selectedContainerId = useSelectedContainerId();const gameReportedRef = React.useRef(false);const reportGameEnd = React.useCallback(status =>{if(onEndGame && !gameReportedRef.current){const expectedTimes ={easy:60,medium:120,hard:180};const expectedTime = expectedTimes[settings.difficulty];const calculatedScore = status === 'win' ? calculateTimeBasedScore(time,expectedTime):0;onEndGame({status,score:calculatedScore.toString()});gameReportedRef.current = true;}},[onEndGame,time,settings.difficulty]);const initializeGame = useColorsSortStore(state => state.initializeGame);const startGame = useColorsSortStore(state => state.startGame);const stopGame = useColorsSortStore(state => state.stopGame);const resetGame = useColorsSortStore(state => state.resetGame);const selectContainer = useColorsSortStore(state => state.selectContainer);const difficulty = settings.difficulty;const gridStyle = useMemo(()=> getGridLayout(difficulty),[difficulty]);useEffect(()=>{initializeGame(difficulty);},[difficulty,initializeGame]);useEffect(()=>{if(isGameOver && !gameReportedRef.current){reportGameEnd('win');}if(!isGameOver){gameReportedRef.current = false;}},[isGameOver,reportGameEnd]);const handleStartGame = useCallback(()=>{gameReportedRef.current = false;initializeGame(difficulty);startGame();playSound(GAME_SOUNDS.COLORS_SORT.START,settings.enableSounds);playHaptic(HapticType.MEDIUM,settings.enableHaptics);},[difficulty,initializeGame,startGame,settings.enableSounds,settings.enableHaptics]);const handleStopGame = useCallback(()=>{reportGameEnd('cancel');stopGame();},[stopGame,reportGameEnd]);const handleResetGame = useCallback(()=>{resetGame();initializeGame(difficulty);},[resetGame,initializeGame,difficulty]);const handleContainerPress = useCallback(containerId =>{if(!isPlaying || isGameOver)return;selectContainer(containerId,settings);},[isPlaying,isGameOver,selectContainer,settings]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START SORTING",stopButtonText:"STOP GAME",startButtonSubtext:"Sort colors!",startButtonColor:COLORS_SORT_COLORS.BUTTON_PRIMARY,startButtonBorderColor:COLORS_SORT_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame]);const gameOverModalProps = useMemo(()=>({isVisible:isGameOver,score:time,onPlayAgain:handleResetGame,buttonText:"Sort Again!",primaryColor:"rgba(255,107,53,0.5)",borderColor:"rgba(255,107,53,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#FF6B35",scoreLabel:"Completion Time",scoreFormatter:formatTime}),[isGameOver,time,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.COLORS_SORT,settings,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const dynamicStyles = useMemo(()=>({gameArea:{...styles.gameArea,paddingTop:100 + offset}}),[offset]);return _jsx(GameBackground,{children:_jsxs(View,{style:styles.container,children:[_jsx(ScoreBoard,{offset:offset}),_jsx(View,{style:dynamicStyles.gameArea,children:_jsx(View,{style:[styles.containersGrid,gridStyle],children:containers.map(container => _jsx(ColorContainer,{container:container,isSelected:selectedContainerId === container.id,onPress:()=> handleContainerPress(container.id),difficulty:difficulty},container.id))})}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})});});const styles = StyleSheet.create({container:{flex:1},gameArea:{flex:1,justifyContent:'center',alignItems:'center',paddingTop:100,paddingBottom:120},containersGrid:{flexDirection:'row',flexWrap:'wrap',justifyContent:'center',alignItems:'flex-end',gap:15,paddingHorizontal:10}});ColorsSort.displayName = 'ColorsSort';
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useCallback","useMemo","View","StyleSheet","useColorsSortStore","useIsPlaying","useIsGameOver","useTime","useContainers","useSelectedContainerId","ColorContainer","ScoreBoard","GameBackground","GameControlButton","GameOverModal","GameSettingsModal","COLORS_SORT_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","formatTime","getGridLayout","jsx","_jsx","jsxs","_jsxs","ColorsSort","memo","settings","onSettingsChange","isPlaying","isGameOver","time","containers","selectedContainerId","initializeGame","state","startGame","stopGame","resetGame","selectContainer","difficulty","gridStyle","handleStartGame","COLORS_SORT","START","enableSounds","MEDIUM","enableHaptics","handleStopGame","handleResetGame","handleContainerPress","containerId","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","gameOverModalProps","isVisible","score","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreLabel","scoreFormatter","gameSettingsModalProps","gameId","offset","dynamicStyles","gameArea","styles","paddingTop","children","style","container","containersGrid","map","isSelected","id","onPress","create","flex","justifyContent","alignItems","paddingBottom","flexDirection","flexWrap","gap","paddingHorizontal","displayName"],"sourceRoot":"../../../../src","sources":["games/colors-sort/ColorsSort.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useCallback","useMemo","View","StyleSheet","useColorsSortStore","useIsPlaying","useIsGameOver","useTime","useContainers","useSelectedContainerId","ColorContainer","ScoreBoard","GameBackground","GameControlButton","GameOverModal","GameSettingsModal","COLORS_SORT_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","formatTime","getGridLayout","calculateTimeBasedScore","jsx","_jsx","jsxs","_jsxs","ColorsSort","memo","settings","onSettingsChange","onEndGame","isPlaying","isGameOver","time","containers","selectedContainerId","gameReportedRef","useRef","reportGameEnd","status","current","expectedTimes","easy","medium","hard","expectedTime","difficulty","calculatedScore","score","toString","initializeGame","state","startGame","stopGame","resetGame","selectContainer","gridStyle","handleStartGame","COLORS_SORT","START","enableSounds","MEDIUM","enableHaptics","handleStopGame","handleResetGame","handleContainerPress","containerId","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreLabel","scoreFormatter","gameSettingsModalProps","gameId","offset","dynamicStyles","gameArea","styles","paddingTop","children","style","container","containersGrid","map","isSelected","id","onPress","create","flex","justifyContent","alignItems","paddingBottom","flexDirection","flexWrap","gap","paddingHorizontal","displayName"],"sourceRoot":"../../../../src","sources":["games/colors-sort/ColorsSort.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- "use strict";import React,{useEffect,useMemo,useCallback,useRef}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useDinoJumpStore,useIsPlaying,useIsGameOver,useScore}from "./DinoJumpStore.js";import{DinoJumpService}from "./DinoJumpService.js";import{GameBackground,GameArea,ScoreBoard}from "./components/index.js";import{GameControlButton,GameOverModal,ParticleBlast}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const DinoJump = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange})=>{const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const score = useScore();const setOffset = useDinoJumpStore(state => state.setOffset);const initializeGame = useDinoJumpStore(state => state.initializeGame);const startGame = useDinoJumpStore(state => state.startGame);const stopGame = useDinoJumpStore(state => state.stopGame);const resetGame = useDinoJumpStore(state => state.resetGame);const offset = settings?.offset ?? 0;useEffect(()=>{setOffset(offset);},[offset,setOffset]);const decrementTime = useDinoJumpStore(state => state.decrementTime);const updateDinosaur = useDinoJumpStore(state => state.updateDinosaur);const updateObstacles = useDinoJumpStore(state => state.updateObstacles);const updateClouds = useDinoJumpStore(state => state.updateClouds);const updateStars = useDinoJumpStore(state => state.updateStars);const updateGround = useDinoJumpStore(state => state.updateGround);const updateScore = useDinoJumpStore(state => state.updateScore);const updateSpeed = useDinoJumpStore(state => state.updateSpeed);const addObstacle = useDinoJumpStore(state => state.addObstacle);const addCloud = useDinoJumpStore(state => state.addCloud);const addStar = useDinoJumpStore(state => state.addStar);const checkCollisionsAction = useDinoJumpStore(state => state.checkCollisions);const collisionBlasts = useDinoJumpStore(state => state.collisionBlasts);const removeCollisionBlast = useDinoJumpStore(state => state.removeCollisionBlast);const settingsRef = useRef(settings);settingsRef.current = settings;const checkCollisions = useCallback(()=> checkCollisionsAction(settingsRef.current),[checkCollisionsAction]);const difficulty = settings.difficulty;const gameService = useMemo(()=> new DinoJumpService(),[]);useEffect(()=>{initializeGame(difficulty);},[difficulty,initializeGame]);useEffect(()=>{if(isPlaying){gameService.startTimer(()=>{decrementTime();});}else{gameService.stopTimer();}return()=>{gameService.stopTimer();};},[isPlaying,gameService,decrementTime]);useEffect(()=>{gameService.stopPhysicsLoop();gameService.stopObstacleSpawning();gameService.stopCloudSpawning();if(isPlaying && !isGameOver){const startTimeout = setTimeout(()=>{try{gameService.startPhysicsLoop(updateDinosaur,updateObstacles,updateClouds,updateStars,updateGround,updateScore,updateSpeed,checkCollisions,stopGame);gameService.startObstacleSpawning(addObstacle,difficulty,()=> offset);gameService.startCloudSpawning(addCloud);gameService.startStarSpawning(addStar,()=> offset);}catch(error){console.error('Failed to start game loops:',error);stopGame();}},50);return()=>{clearTimeout(startTimeout);gameService.stopPhysicsLoop();gameService.stopObstacleSpawning();gameService.stopCloudSpawning();};}return()=>{gameService.stopPhysicsLoop();gameService.stopObstacleSpawning();gameService.stopCloudSpawning();};},[isPlaying,isGameOver,gameService,updateDinosaur,updateObstacles,updateClouds,updateStars,updateGround,updateScore,updateSpeed,checkCollisions,stopGame,addObstacle,addCloud,addStar,difficulty]);useEffect(()=>{return()=>{gameService.cleanup();};},[gameService]);const handleStartGame = useCallback(()=>{startGame();playSound(GAME_SOUNDS.DINO_JUMP.START,settingsRef.current.enableSounds);playHaptic(HapticType.MEDIUM,settingsRef.current.enableHaptics);},[startGame]);const handleStopGame = useCallback(()=>{stopGame();},[stopGame]);const handleResetGame = useCallback(()=>{resetGame();initializeGame(difficulty);playHaptic(HapticType.LIGHT,settingsRef.current.enableHaptics);},[resetGame,initializeGame,difficulty]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START RUNNING",stopButtonText:"STOP GAME",startButtonSubtext:"Tap to jump over cacti!",stopButtonSubtext:"End current game",startButtonColor:"#FF6347",stopButtonColor:"#dc2626",startButtonBorderColor:"#FF4500",stopButtonBorderColor:"#f87171"}),[isPlaying,isGameOver,handleStartGame,handleStopGame]);const gameOverModalProps = useMemo(()=>({isVisible:isGameOver,score,onPlayAgain:handleResetGame,buttonText:"Run Again!",primaryColor:"rgba(255,99,71,0.5)",borderColor:"rgba(255,99,71,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#FF6347"}),[isGameOver,score,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.DINO_JUMP,settings,onSettingsChange}),[settings,onSettingsChange]);return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(GameBackground,{offset:offset,children:[_jsx(GameArea,{settings:settings}),collisionBlasts.map(blast => _jsx(ParticleBlast,{x:blast.x,y:blast.y,particleCount:15,colors:['#FF6B35','#FFA500','#FFD700','#FF8C42','#32CD32'],duration:800,onComplete:()=> removeCollisionBlast(blast.id)},blast.id)),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})});});const styles = StyleSheet.create({container:{flex:1}});DinoJump.displayName = 'DinoJump';
1
+ "use strict";import React,{useEffect,useMemo,useCallback,useRef}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useDinoJumpStore,useIsPlaying,useIsGameOver,useScore,useLives}from "./DinoJumpStore.js";import{DinoJumpService}from "./DinoJumpService.js";import{GameBackground,GameArea,ScoreBoard}from "./components/index.js";import{GameControlButton,GameOverModal,ParticleBlast}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const DinoJump = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const score = useScore();const lives = useLives();const gameReportedRef = useRef(false);const reportGameEnd = useCallback(status =>{if(onEndGame && !gameReportedRef.current){onEndGame({status,score:score.toString()});gameReportedRef.current = true;}},[onEndGame,score]);const setOffset = useDinoJumpStore(state => state.setOffset);const initializeGame = useDinoJumpStore(state => state.initializeGame);const startGame = useDinoJumpStore(state => state.startGame);const stopGame = useDinoJumpStore(state => state.stopGame);const resetGame = useDinoJumpStore(state => state.resetGame);const offset = settings?.offset ?? 0;useEffect(()=>{setOffset(offset);},[offset,setOffset]);const decrementTime = useDinoJumpStore(state => state.decrementTime);const updateDinosaur = useDinoJumpStore(state => state.updateDinosaur);const updateObstacles = useDinoJumpStore(state => state.updateObstacles);const updateClouds = useDinoJumpStore(state => state.updateClouds);const updateStars = useDinoJumpStore(state => state.updateStars);const updateGround = useDinoJumpStore(state => state.updateGround);const updateScore = useDinoJumpStore(state => state.updateScore);const updateSpeed = useDinoJumpStore(state => state.updateSpeed);const addObstacle = useDinoJumpStore(state => state.addObstacle);const addCloud = useDinoJumpStore(state => state.addCloud);const addStar = useDinoJumpStore(state => state.addStar);const checkCollisionsAction = useDinoJumpStore(state => state.checkCollisions);const collisionBlasts = useDinoJumpStore(state => state.collisionBlasts);const removeCollisionBlast = useDinoJumpStore(state => state.removeCollisionBlast);const settingsRef = useRef(settings);settingsRef.current = settings;const checkCollisions = useCallback(()=> checkCollisionsAction(settingsRef.current),[checkCollisionsAction]);const difficulty = settings.difficulty;const gameService = useMemo(()=> new DinoJumpService(),[]);useEffect(()=>{initializeGame(difficulty);},[difficulty,initializeGame]);useEffect(()=>{if(isPlaying){gameService.startTimer(()=>{decrementTime();});}else{gameService.stopTimer();}return()=>{gameService.stopTimer();};},[isPlaying,gameService,decrementTime]);useEffect(()=>{gameService.stopPhysicsLoop();gameService.stopObstacleSpawning();gameService.stopCloudSpawning();if(isPlaying && !isGameOver){const startTimeout = setTimeout(()=>{try{gameService.startPhysicsLoop(updateDinosaur,updateObstacles,updateClouds,updateStars,updateGround,updateScore,updateSpeed,checkCollisions,stopGame);gameService.startObstacleSpawning(addObstacle,difficulty,()=> offset);gameService.startCloudSpawning(addCloud);gameService.startStarSpawning(addStar,()=> offset);}catch(error){console.error('Failed to start game loops:',error);stopGame();}},50);return()=>{clearTimeout(startTimeout);gameService.stopPhysicsLoop();gameService.stopObstacleSpawning();gameService.stopCloudSpawning();};}return()=>{gameService.stopPhysicsLoop();gameService.stopObstacleSpawning();gameService.stopCloudSpawning();};},[isPlaying,isGameOver,gameService,updateDinosaur,updateObstacles,updateClouds,updateStars,updateGround,updateScore,updateSpeed,checkCollisions,stopGame,addObstacle,addCloud,addStar,difficulty]);useEffect(()=>{if(isGameOver && !gameReportedRef.current){const status = lives > 0 ? 'win':'lose';reportGameEnd(status);}if(!isGameOver){gameReportedRef.current = false;}},[isGameOver,lives,reportGameEnd]);useEffect(()=>{return()=>{gameService.cleanup();};},[gameService]);const handleStartGame = useCallback(()=>{gameReportedRef.current = false;startGame();playSound(GAME_SOUNDS.DINO_JUMP.START,settingsRef.current.enableSounds);playHaptic(HapticType.MEDIUM,settingsRef.current.enableHaptics);},[startGame]);const handleStopGame = useCallback(()=>{reportGameEnd('cancel');stopGame();},[stopGame,reportGameEnd]);const handleResetGame = useCallback(()=>{resetGame();initializeGame(difficulty);playHaptic(HapticType.LIGHT,settingsRef.current.enableHaptics);},[resetGame,initializeGame,difficulty]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START RUNNING",stopButtonText:"STOP GAME",startButtonSubtext:"Tap to jump over cacti!",stopButtonSubtext:"End current game",startButtonColor:"#FF6347",stopButtonColor:"#dc2626",startButtonBorderColor:"#FF4500",stopButtonBorderColor:"#f87171"}),[isPlaying,isGameOver,handleStartGame,handleStopGame]);const gameOverModalProps = useMemo(()=>({isVisible:isGameOver,score,onPlayAgain:handleResetGame,buttonText:"Run Again!",primaryColor:"rgba(255,99,71,0.5)",borderColor:"rgba(255,99,71,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#FF6347"}),[isGameOver,score,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.DINO_JUMP,settings,onSettingsChange}),[settings,onSettingsChange]);return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(GameBackground,{offset:offset,children:[_jsx(GameArea,{settings:settings}),collisionBlasts.map(blast => _jsx(ParticleBlast,{x:blast.x,y:blast.y,particleCount:15,colors:['#FF6B35','#FFA500','#FFD700','#FF8C42','#32CD32'],duration:800,onComplete:()=> removeCollisionBlast(blast.id)},blast.id)),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})});});const styles = StyleSheet.create({container:{flex:1}});DinoJump.displayName = 'DinoJump';
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useMemo","useCallback","useRef","View","StyleSheet","GestureHandlerRootView","useDinoJumpStore","useIsPlaying","useIsGameOver","useScore","DinoJumpService","GameBackground","GameArea","ScoreBoard","GameControlButton","GameOverModal","ParticleBlast","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","jsx","_jsx","jsxs","_jsxs","DinoJump","memo","settings","onSettingsChange","isPlaying","isGameOver","score","setOffset","state","initializeGame","startGame","stopGame","resetGame","offset","decrementTime","updateDinosaur","updateObstacles","updateClouds","updateStars","updateGround","updateScore","updateSpeed","addObstacle","addCloud","addStar","checkCollisionsAction","checkCollisions","collisionBlasts","removeCollisionBlast","settingsRef","current","difficulty","gameService","startTimer","stopTimer","stopPhysicsLoop","stopObstacleSpawning","stopCloudSpawning","startTimeout","setTimeout","startPhysicsLoop","startObstacleSpawning","startCloudSpawning","startStarSpawning","error","console","clearTimeout","cleanup","handleStartGame","DINO_JUMP","START","enableSounds","MEDIUM","enableHaptics","handleStopGame","handleResetGame","LIGHT","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","gameSettingsModalProps","gameId","style","styles","container","children","map","blast","x","y","particleCount","colors","duration","onComplete","id","create","flex","displayName"],"sourceRoot":"../../../../src","sources":["games/dino-jump/DinoJump.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,OAAO,EAAEC,WAAW,EAAEC,MAAM,QAAQ,OAAO;AACtE,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,gBAAgB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,QAAQ,QAAQ,oBAAiB;AACzF,SAASC,eAAe,QAAQ,sBAAmB;AACnD,SAASC,cAAc,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,uBAAc;AACnE,SAASC,iBAAiB,EAAEC,aAAa,EAAEC,aAAa,QAAQ,wBAAe;AAC/E,SAASC,iBAAiB,QAAQ,wBAAe;AACjD,SAASC,QAAQ,EAAkBC,qBAAqB,QAAQ,gCAA6B;AAC7F,SAASC,SAAS,EAAEC,WAAW,QAAQ,iCAA8B;AACrE,SAASC,UAAU,EAAEC,UAAU,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEvE,OAAO,MAAMC,QAA6B,gBAAG9B,KAAK,CAAC+B,IAAI,CAAC,CAAC;EACvDC,QAAQ,GAAGX,qBAAqB;EAChCY;AACF,CAAC,KAAK;EACJ;EACA,MAAMC,SAAS,GAAGzB,YAAY,CAAC,CAAC;EAChC,MAAM0B,UAAU,GAAGzB,aAAa,CAAC,CAAC;EAClC,MAAM0B,KAAK,GAAGzB,QAAQ,CAAC,CAAC;;EAExB;EACA,MAAM0B,SAAS,GAAG7B,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACD,SAAS,CAAC;EAC5D,MAAME,cAAc,GAAG/B,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACC,cAAc,CAAC;EACtE,MAAMC,SAAS,GAAGhC,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACE,SAAS,CAAC;EAC5D,MAAMC,QAAQ,GAAGjC,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACG,QAAQ,CAAC;EAC1D,MAAMC,SAAS,GAAGlC,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACI,SAAS,CAAC;;EAE5D;EACA,MAAMC,MAAM,GAAGX,QAAQ,EAAEW,MAAM,IAAI,CAAC;;EAEpC;EACA1C,SAAS,CAAC,MAAM;IACdoC,SAAS,CAACM,MAAM,CAAC;EACnB,CAAC,EAAE,CAACA,MAAM,EAAEN,SAAS,CAAC,CAAC;EACvB,MAAMO,aAAa,GAAGpC,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACM,aAAa,CAAC;EACpE,MAAMC,cAAc,GAAGrC,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACO,cAAc,CAAC;EACtE,MAAMC,eAAe,GAAGtC,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACQ,eAAe,CAAC;EACxE,MAAMC,YAAY,GAAGvC,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACS,YAAY,CAAC;EAClE,MAAMC,WAAW,GAAGxC,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACU,WAAW,CAAC;EAChE,MAAMC,YAAY,GAAGzC,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACW,YAAY,CAAC;EAClE,MAAMC,WAAW,GAAG1C,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACY,WAAW,CAAC;EAChE,MAAMC,WAAW,GAAG3C,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACa,WAAW,CAAC;EAChE,MAAMC,WAAW,GAAG5C,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACc,WAAW,CAAC;EAChE,MAAMC,QAAQ,GAAG7C,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACe,QAAQ,CAAC;EAC1D,MAAMC,OAAO,GAAG9C,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACgB,OAAO,CAAC;EACxD,MAAMC,qBAAqB,GAAG/C,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACkB,eAAe,CAAC;EAC9E,MAAMC,eAAe,GAAGjD,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACmB,eAAe,CAAC;EACxE,MAAMC,oBAAoB,GAAGlD,gBAAgB,CAAC8B,KAAK,IAAIA,KAAK,CAACoB,oBAAoB,CAAC;;EAElF;EACA,MAAMC,WAAW,GAAGvD,MAAM,CAAC4B,QAAQ,CAAC;EACpC2B,WAAW,CAACC,OAAO,GAAG5B,QAAQ;;EAE9B;EACA,MAAMwB,eAAe,GAAGrD,WAAW,CAAC,MAAMoD,qBAAqB,CAACI,WAAW,CAACC,OAAO,CAAC,EAAE,CAACL,qBAAqB,CAAC,CAAC;;EAE9G;EACA,MAAMM,UAAU,GAAG7B,QAAQ,CAAC6B,UAAU;EACtC,MAAMC,WAAW,GAAG5D,OAAO,CAAC,MAAM,IAAIU,eAAe,CAAC,CAAC,EAAE,EAAE,CAAC;;EAE5D;EACA;EACAX,SAAS,CAAC,MAAM;IACdsC,cAAc,CAACsB,UAAU,CAAC;EAC5B,CAAC,EAAE,CAACA,UAAU,EAAEtB,cAAc,CAAC,CAAC;;EAEhC;EACAtC,SAAS,CAAC,MAAM;IACd,IAAIiC,SAAS,EAAE;MACb4B,WAAW,CAACC,UAAU,CAAC,MAAM;QAC3BnB,aAAa,CAAC,CAAC;MACjB,CAAC,CAAC;IACJ,CAAC,MAAM;MACLkB,WAAW,CAACE,SAAS,CAAC,CAAC;IACzB;IAEA,OAAO,MAAM;MACXF,WAAW,CAACE,SAAS,CAAC,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAAC9B,SAAS,EAAE4B,WAAW,EAAElB,aAAa,CAAC,CAAC;;EAE3C;EACA3C,SAAS,CAAC,MAAM;IACd;IACA6D,WAAW,CAACG,eAAe,CAAC,CAAC;IAC7BH,WAAW,CAACI,oBAAoB,CAAC,CAAC;IAClCJ,WAAW,CAACK,iBAAiB,CAAC,CAAC;IAE/B,IAAIjC,SAAS,IAAI,CAACC,UAAU,EAAE;MAC5B;MACA,MAAMiC,YAAY,GAAGC,UAAU,CAAC,MAAM;QACpC,IAAI;UACFP,WAAW,CAACQ,gBAAgB,CAC1BzB,cAAc,EACdC,eAAe,EACfC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXK,eAAe,EACff,QACF,CAAC;UAEDqB,WAAW,CAACS,qBAAqB,CAACnB,WAAW,EAAES,UAAU,EAAE,MAAMlB,MAAM,CAAC;UACxEmB,WAAW,CAACU,kBAAkB,CAACnB,QAAQ,CAAC;UACxCS,WAAW,CAACW,iBAAiB,CAACnB,OAAO,EAAE,MAAMX,MAAM,CAAC;QACtD,CAAC,CAAC,OAAO+B,KAAK,EAAE;UACdC,OAAO,CAACD,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;UACnDjC,QAAQ,CAAC,CAAC;QACZ;MACF,CAAC,EAAE,EAAE,CAAC;MAEN,OAAO,MAAM;QACXmC,YAAY,CAACR,YAAY,CAAC;QAC1BN,WAAW,CAACG,eAAe,CAAC,CAAC;QAC7BH,WAAW,CAACI,oBAAoB,CAAC,CAAC;QAClCJ,WAAW,CAACK,iBAAiB,CAAC,CAAC;MACjC,CAAC;IACH;IAEA,OAAO,MAAM;MACXL,WAAW,CAACG,eAAe,CAAC,CAAC;MAC7BH,WAAW,CAACI,oBAAoB,CAAC,CAAC;MAClCJ,WAAW,CAACK,iBAAiB,CAAC,CAAC;IACjC,CAAC;EACH,CAAC,EAAE,CACDjC,SAAS,EACTC,UAAU,EACV2B,WAAW,EACXjB,cAAc,EACdC,eAAe,EACfC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,WAAW,EACXK,eAAe,EACff,QAAQ,EACRW,WAAW,EACXC,QAAQ,EACRC,OAAO,EACPO,UAAU,CACX,CAAC;;EAEF;EACA5D,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX6D,WAAW,CAACe,OAAO,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACf,WAAW,CAAC,CAAC;;EAEjB;EACA,MAAMgB,eAAe,GAAG3E,WAAW,CAAC,MAAM;IACxCqC,SAAS,CAAC,CAAC;IACXlB,SAAS,CAACC,WAAW,CAACwD,SAAS,CAACC,KAAK,EAAErB,WAAW,CAACC,OAAO,CAACqB,YAAY,CAAC;IACxEzD,UAAU,CAACC,UAAU,CAACyD,MAAM,EAAEvB,WAAW,CAACC,OAAO,CAACuB,aAAa,CAAC;EAClE,CAAC,EAAE,CAAC3C,SAAS,CAAC,CAAC;EAEf,MAAM4C,cAAc,GAAGjF,WAAW,CAAC,MAAM;IACvCsC,QAAQ,CAAC,CAAC;EACZ,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,MAAM4C,eAAe,GAAGlF,WAAW,CAAC,MAAM;IACxCuC,SAAS,CAAC,CAAC;IACXH,cAAc,CAACsB,UAAU,CAAC;IAC1BrC,UAAU,CAACC,UAAU,CAAC6D,KAAK,EAAE3B,WAAW,CAACC,OAAO,CAACuB,aAAa,CAAC;EACjE,CAAC,EAAE,CAACzC,SAAS,EAAEH,cAAc,EAAEsB,UAAU,CAAC,CAAC;;EAE3C;EACA,MAAM0B,sBAAsB,GAAGrF,OAAO,CAAC,OAAO;IAC5CgC,SAAS;IACTsD,QAAQ,EAAErD,UAAU;IACpBsD,WAAW,EAAEX,eAAe;IAC5BY,UAAU,EAAEN,cAAc;IAC1BO,eAAe,EAAE,eAAe;IAChCC,cAAc,EAAE,WAAW;IAC3BC,kBAAkB,EAAE,yBAAyB;IAC7CC,iBAAiB,EAAE,kBAAkB;IACrCC,gBAAgB,EAAE,SAAS;IAC3BC,eAAe,EAAE,SAAS;IAC1BC,sBAAsB,EAAE,SAAS;IACjCC,qBAAqB,EAAE;EACzB,CAAC,CAAC,EAAE,CAAChE,SAAS,EAAEC,UAAU,EAAE2C,eAAe,EAAEM,cAAc,CAAC,CAAC;;EAE7D;EACA,MAAMe,kBAAkB,GAAGjG,OAAO,CAAC,OAAO;IACxCkG,SAAS,EAAEjE,UAAU;IACrBC,KAAK;IACLiE,WAAW,EAAEhB,eAAe;IAC5BiB,UAAU,EAAE,YAAY;IACxBC,YAAY,EAAE,wBAAwB;IAAE;IACxCC,WAAW,EAAE,wBAAwB;IAAE;IACvCC,WAAW,EAAE,SAAS;IAAE;IACxBC,iBAAiB,EAAE,SAAS;IAAE;IAC9BC,eAAe,EAAE,SAAS,CAAC;EAC7B,CAAC,CAAC,EAAE,CAACxE,UAAU,EAAEC,KAAK,EAAEiD,eAAe,CAAC,CAAC;;EAEzC;EACA,MAAMuB,sBAAsB,GAAG1G,OAAO,CAAC,OAAO;IAC5C2G,MAAM,EAAEzF,QAAQ,CAAC2D,SAAS;IAC1B/C,QAAQ;IACRC;EACF,CAAC,CAAC,EAAE,CAACD,QAAQ,EAAEC,gBAAgB,CAAC,CAAC;;EAEjC;EACA,oBACEN,IAAA,CAACtB,IAAI;IAACyG,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,eAC5BtF,IAAA,CAACpB,sBAAsB;MAAA0G,QAAA,eACrBpF,KAAA,CAAChB,cAAc;QAAC8B,MAAM,EAAEA,MAAO;QAAAsE,QAAA,gBAE7BtF,IAAA,CAACb,QAAQ;UAACkB,QAAQ,EAAEA;QAAS,CAAE,CAAC,EAG/ByB,eAAe,CAACyD,GAAG,CAAEC,KAAK,iBACzBxF,IAAA,CAACT,aAAa;UAEZkG,CAAC,EAAED,KAAK,CAACC,CAAE;UACXC,CAAC,EAAEF,KAAK,CAACE,CAAE;UACXC,aAAa,EAAE,EAAG;UAClBC,MAAM,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAE;UAChEC,QAAQ,EAAE,GAAI;UACdC,UAAU,EAAEA,CAAA,KAAM/D,oBAAoB,CAACyD,KAAK,CAACO,EAAE;QAAE,GAN5CP,KAAK,CAACO,EAOZ,CACF,CAAC,eAGF/F,IAAA,CAACZ,UAAU;UAAC4B,MAAM,EAAEA;QAAO,CAAE,CAAC,eAG9BhB,IAAA,CAACX,iBAAiB;UAAA,GAAKuE;QAAsB,CAAG,CAAC,eAGjD5D,IAAA,CAACV,aAAa;UAAA,GAAKkF;QAAkB,CAAG,CAAC,eAGzCxE,IAAA,CAACR,iBAAiB;UAAA,GAAKyF;QAAsB,CAAG,CAAC;MAAA,CACnC;IAAC,CACK;EAAC,CACrB,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMG,MAAM,GAAGzG,UAAU,CAACqH,MAAM,CAAC;EAC/BX,SAAS,EAAE;IACTY,IAAI,EAAE;IACN;EACF;AACF,CAAC,CAAC;AAEF9F,QAAQ,CAAC+F,WAAW,GAAG,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useMemo","useCallback","useRef","View","StyleSheet","GestureHandlerRootView","useDinoJumpStore","useIsPlaying","useIsGameOver","useScore","useLives","DinoJumpService","GameBackground","GameArea","ScoreBoard","GameControlButton","GameOverModal","ParticleBlast","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","jsx","_jsx","jsxs","_jsxs","DinoJump","memo","settings","onSettingsChange","onEndGame","isPlaying","isGameOver","score","lives","gameReportedRef","reportGameEnd","status","current","toString","setOffset","state","initializeGame","startGame","stopGame","resetGame","offset","decrementTime","updateDinosaur","updateObstacles","updateClouds","updateStars","updateGround","updateScore","updateSpeed","addObstacle","addCloud","addStar","checkCollisionsAction","checkCollisions","collisionBlasts","removeCollisionBlast","settingsRef","difficulty","gameService","startTimer","stopTimer","stopPhysicsLoop","stopObstacleSpawning","stopCloudSpawning","startTimeout","setTimeout","startPhysicsLoop","startObstacleSpawning","startCloudSpawning","startStarSpawning","error","console","clearTimeout","cleanup","handleStartGame","DINO_JUMP","START","enableSounds","MEDIUM","enableHaptics","handleStopGame","handleResetGame","LIGHT","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","gameSettingsModalProps","gameId","style","styles","container","children","map","blast","x","y","particleCount","colors","duration","onComplete","id","create","flex","displayName"],"sourceRoot":"../../../../src","sources":["games/dino-jump/DinoJump.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- "use strict";import React,{useEffect,useCallback,useMemo,useRef}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useFlappyBirdStore}from "./FlappyBirdStore.js";import{ScoreBoard,GameArea,GameBackground}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{FLAPPY_BIRD_COLORS}from "./FlappyBirdConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const formatTime = seconds =>{const mins = Math.floor(seconds / 60);const secs = seconds % 60;return `${mins.toString().padStart(2,'0')}:${secs.toString().padStart(2,'0')}`;};export const FlappyBird = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange})=>{const isPlaying = useFlappyBirdStore(state => state.isPlaying);const isGameOver = useFlappyBirdStore(state => state.isGameOver);const survivalTime = useFlappyBirdStore(state => state.survivalTime);const initializeGame = useFlappyBirdStore(state => state.initializeGame);const startGame = useFlappyBirdStore(state => state.startGame);const stopGame = useFlappyBirdStore(state => state.stopGame);const resetGame = useFlappyBirdStore(state => state.resetGame);useEffect(()=>{initializeGame();return()=>{stopGame();};},[initializeGame,stopGame]);const prevGameOverRef = useRef(false);useEffect(()=>{if(isGameOver && !prevGameOverRef.current){playSound(GAME_SOUNDS.FLAPPY_BIRD.HIT,settings.enableSounds);playHaptic(HapticType.HEAVY,settings.enableHaptics);}prevGameOverRef.current = isGameOver;},[isGameOver,settings.enableSounds,settings.enableHaptics]);const handleStartGame = useCallback(()=>{initializeGame();startGame(settings);playSound(GAME_SOUNDS.FLAPPY_BIRD.START,settings.enableSounds);playHaptic(HapticType.MEDIUM,settings.enableHaptics);},[initializeGame,startGame,settings]);const handleStopGame = useCallback(()=>{stopGame();},[stopGame]);const handleResetGame = useCallback(()=>{resetGame();initializeGame();},[resetGame,initializeGame]);const gameOverModalProps = useMemo(()=>({isVisible:isGameOver,score:survivalTime,onPlayAgain:handleResetGame,buttonText:"Fly Again!",primaryColor:"rgba(92,184,92,0.5)",borderColor:"rgba(92,184,92,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#5CB85C",scoreLabel:"Survival Time",scoreFormatter:formatTime}),[isGameOver,survivalTime,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.FLAPPY_BIRD,settings,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START FLYING",stopButtonText:"STOP GAME",startButtonSubtext:"Tap to flap!",startButtonColor:FLAPPY_BIRD_COLORS.BUTTON_PRIMARY,startButtonBorderColor:FLAPPY_BIRD_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame]);return _jsx(View,{style:styles.root,children:_jsx(GestureHandlerRootView,{children:_jsx(GameBackground,{offset:offset,children:_jsxs(View,{style:styles.container,children:[_jsx(GameArea,{settings:settings}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})})});});const styles = StyleSheet.create({root:{flex:1},container:{flex:1}});FlappyBird.displayName = 'FlappyBird';
1
+ "use strict";import React,{useEffect,useCallback,useMemo,useRef}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useFlappyBirdStore}from "./FlappyBirdStore.js";import{ScoreBoard,GameArea,GameBackground}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{FLAPPY_BIRD_COLORS}from "./FlappyBirdConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const formatTime = seconds =>{const mins = Math.floor(seconds / 60);const secs = seconds % 60;return `${mins.toString().padStart(2,'0')}:${secs.toString().padStart(2,'0')}`;};export const FlappyBird = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const isPlaying = useFlappyBirdStore(state => state.isPlaying);const isGameOver = useFlappyBirdStore(state => state.isGameOver);const survivalTime = useFlappyBirdStore(state => state.survivalTime);const gameReportedRef = useRef(false);const reportGameEnd = useCallback(status =>{if(onEndGame && !gameReportedRef.current){onEndGame({status,score:survivalTime.toString()});gameReportedRef.current = true;}},[onEndGame,survivalTime]);const initializeGame = useFlappyBirdStore(state => state.initializeGame);const startGame = useFlappyBirdStore(state => state.startGame);const stopGame = useFlappyBirdStore(state => state.stopGame);const resetGame = useFlappyBirdStore(state => state.resetGame);useEffect(()=>{initializeGame();return()=>{stopGame();};},[initializeGame,stopGame]);const prevGameOverRef = useRef(false);useEffect(()=>{if(isGameOver && !prevGameOverRef.current){playSound(GAME_SOUNDS.FLAPPY_BIRD.HIT,settings.enableSounds);playHaptic(HapticType.HEAVY,settings.enableHaptics);reportGameEnd('lose');}prevGameOverRef.current = isGameOver;if(!isGameOver){gameReportedRef.current = false;}},[isGameOver,settings.enableSounds,settings.enableHaptics,reportGameEnd]);const handleStartGame = useCallback(()=>{gameReportedRef.current = false;initializeGame();startGame(settings);playSound(GAME_SOUNDS.FLAPPY_BIRD.START,settings.enableSounds);playHaptic(HapticType.MEDIUM,settings.enableHaptics);},[initializeGame,startGame,settings]);const handleStopGame = useCallback(()=>{reportGameEnd('cancel');stopGame();},[stopGame,reportGameEnd]);const handleResetGame = useCallback(()=>{resetGame();initializeGame();},[resetGame,initializeGame]);const gameOverModalProps = useMemo(()=>({isVisible:isGameOver,score:survivalTime,onPlayAgain:handleResetGame,buttonText:"Fly Again!",primaryColor:"rgba(92,184,92,0.5)",borderColor:"rgba(92,184,92,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#5CB85C",scoreLabel:"Survival Time",scoreFormatter:formatTime}),[isGameOver,survivalTime,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.FLAPPY_BIRD,settings,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START FLYING",stopButtonText:"STOP GAME",startButtonSubtext:"Tap to flap!",startButtonColor:FLAPPY_BIRD_COLORS.BUTTON_PRIMARY,startButtonBorderColor:FLAPPY_BIRD_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame]);return _jsx(View,{style:styles.root,children:_jsx(GestureHandlerRootView,{children:_jsx(GameBackground,{offset:offset,children:_jsxs(View,{style:styles.container,children:[_jsx(GameArea,{settings:settings}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})})});});const styles = StyleSheet.create({root:{flex:1},container:{flex:1}});FlappyBird.displayName = 'FlappyBird';
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useCallback","useMemo","useRef","View","StyleSheet","GestureHandlerRootView","useFlappyBirdStore","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","GameSettingsModal","FLAPPY_BIRD_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","jsx","_jsx","jsxs","_jsxs","formatTime","seconds","mins","Math","floor","secs","toString","padStart","FlappyBird","memo","settings","onSettingsChange","isPlaying","state","isGameOver","survivalTime","initializeGame","startGame","stopGame","resetGame","prevGameOverRef","current","FLAPPY_BIRD","HIT","enableSounds","HEAVY","enableHaptics","handleStartGame","START","MEDIUM","handleStopGame","handleResetGame","gameOverModalProps","isVisible","score","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreLabel","scoreFormatter","gameSettingsModalProps","gameId","offset","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","style","styles","root","children","container","create","flex","displayName"],"sourceRoot":"../../../../src","sources":["games/flappy-bird/FlappyBird.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useCallback","useMemo","useRef","View","StyleSheet","GestureHandlerRootView","useFlappyBirdStore","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","GameSettingsModal","FLAPPY_BIRD_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","jsx","_jsx","jsxs","_jsxs","formatTime","seconds","mins","Math","floor","secs","toString","padStart","FlappyBird","memo","settings","onSettingsChange","onEndGame","isPlaying","state","isGameOver","survivalTime","gameReportedRef","reportGameEnd","status","current","score","initializeGame","startGame","stopGame","resetGame","prevGameOverRef","FLAPPY_BIRD","HIT","enableSounds","HEAVY","enableHaptics","handleStartGame","START","MEDIUM","handleStopGame","handleResetGame","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreLabel","scoreFormatter","gameSettingsModalProps","gameId","offset","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","style","styles","root","children","container","create","flex","displayName"],"sourceRoot":"../../../../src","sources":["games/flappy-bird/FlappyBird.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- "use strict";import React,{useEffect,useCallback,useMemo,useRef}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useFruitMergerStore,useIsPlaying,useIsGameOver,useTime}from "./FruitMergerStore.js";import{ScoreBoard,GameArea,GameBackground}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{FRUIT_MERGER_COLORS}from "./FruitMergerConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{formatTime}from "./FruitMergerService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const FruitMerger = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange})=>{const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const time = useTime();const initializeGame = useFruitMergerStore(state => state.initializeGame);const startGame = useFruitMergerStore(state => state.startGame);const stopGame = useFruitMergerStore(state => state.stopGame);const resetGame = useFruitMergerStore(state => state.resetGame);useEffect(()=>{initializeGame();},[initializeGame]);const prevGameOverRef = useRef(false);useEffect(()=>{if(isGameOver && !prevGameOverRef.current){playSound(GAME_SOUNDS.FRUIT_MERGER.GAME_OVER,settings.enableSounds);playHaptic(HapticType.HEAVY,settings.enableHaptics);}prevGameOverRef.current = isGameOver;},[isGameOver,settings.enableSounds,settings.enableHaptics]);const handleStartGame = useCallback(()=>{initializeGame();startGame();playSound(GAME_SOUNDS.FRUIT_MERGER.START,settings.enableSounds);playHaptic(HapticType.MEDIUM,settings.enableHaptics);},[initializeGame,startGame,settings.enableSounds,settings.enableHaptics]);const handleStopGame = useCallback(()=>{stopGame();},[stopGame]);const handleResetGame = useCallback(()=>{resetGame();initializeGame();},[resetGame,initializeGame]);const gameOverModalProps = useMemo(()=>({isVisible:isGameOver,score:time,onPlayAgain:handleResetGame,buttonText:"Merge Again!",primaryColor:"rgba(76,175,80,0.5)",borderColor:"rgba(76,175,80,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#4CAF50",scoreLabel:"Time Survived",scoreFormatter:formatTime}),[isGameOver,time,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.FRUIT_MERGER,settings,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START MERGING",stopButtonText:"STOP GAME",startButtonSubtext:"Merge fruits!",startButtonColor:FRUIT_MERGER_COLORS.BUTTON_PRIMARY,startButtonBorderColor:FRUIT_MERGER_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame]);return _jsx(View,{style:styles.root,children:_jsx(GestureHandlerRootView,{children:_jsx(GameBackground,{offset:offset,children:_jsxs(View,{style:[styles.container,{paddingTop:offset}],children:[_jsx(ScoreBoard,{offset:offset}),_jsx(GameArea,{settings:settings}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})})});});const styles = StyleSheet.create({root:{flex:1},container:{flex:1}});FruitMerger.displayName = 'FruitMerger';
1
+ "use strict";import React,{useEffect,useCallback,useMemo,useRef}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useFruitMergerStore,useIsPlaying,useIsGameOver,useTime}from "./FruitMergerStore.js";import{ScoreBoard,GameArea,GameBackground}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{FRUIT_MERGER_COLORS}from "./FruitMergerConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{formatTime}from "./FruitMergerService.js";import{calculateTimeBasedScore}from "../../services/ScoringService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const FruitMerger = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const time = useTime();const gameReportedRef = useRef(false);const reportGameEnd = useCallback(status =>{if(onEndGame && !gameReportedRef.current){const expectedTimes ={easy:60,medium:120,hard:180};const expectedTime = expectedTimes[settings.difficulty];const calculatedScore = status === 'lose' ? calculateTimeBasedScore(time,expectedTime):0;onEndGame({status,score:calculatedScore.toString()});gameReportedRef.current = true;}},[onEndGame,time,settings.difficulty]);const initializeGame = useFruitMergerStore(state => state.initializeGame);const startGame = useFruitMergerStore(state => state.startGame);const stopGame = useFruitMergerStore(state => state.stopGame);const resetGame = useFruitMergerStore(state => state.resetGame);useEffect(()=>{initializeGame();},[initializeGame]);const prevGameOverRef = useRef(false);useEffect(()=>{if(isGameOver && !prevGameOverRef.current){playSound(GAME_SOUNDS.FRUIT_MERGER.GAME_OVER,settings.enableSounds);playHaptic(HapticType.HEAVY,settings.enableHaptics);reportGameEnd('lose');}prevGameOverRef.current = isGameOver;if(!isGameOver){gameReportedRef.current = false;}},[isGameOver,settings.enableSounds,settings.enableHaptics,reportGameEnd]);const handleStartGame = useCallback(()=>{gameReportedRef.current = false;initializeGame();startGame();playSound(GAME_SOUNDS.FRUIT_MERGER.START,settings.enableSounds);playHaptic(HapticType.MEDIUM,settings.enableHaptics);},[initializeGame,startGame,settings.enableSounds,settings.enableHaptics]);const handleStopGame = useCallback(()=>{reportGameEnd('cancel');stopGame();},[stopGame,reportGameEnd]);const handleResetGame = useCallback(()=>{resetGame();initializeGame();},[resetGame,initializeGame]);const gameOverModalProps = useMemo(()=>({isVisible:isGameOver,score:time,onPlayAgain:handleResetGame,buttonText:"Merge Again!",primaryColor:"rgba(76,175,80,0.5)",borderColor:"rgba(76,175,80,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#4CAF50",scoreLabel:"Time Survived",scoreFormatter:formatTime}),[isGameOver,time,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.FRUIT_MERGER,settings,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START MERGING",stopButtonText:"STOP GAME",startButtonSubtext:"Merge fruits!",startButtonColor:FRUIT_MERGER_COLORS.BUTTON_PRIMARY,startButtonBorderColor:FRUIT_MERGER_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame]);return _jsx(View,{style:styles.root,children:_jsx(GestureHandlerRootView,{children:_jsx(GameBackground,{offset:offset,children:_jsxs(View,{style:[styles.container,{paddingTop:offset}],children:[_jsx(ScoreBoard,{offset:offset}),_jsx(GameArea,{settings:settings}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})})});});const styles = StyleSheet.create({root:{flex:1},container:{flex:1}});FruitMerger.displayName = 'FruitMerger';
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useCallback","useMemo","useRef","View","StyleSheet","GestureHandlerRootView","useFruitMergerStore","useIsPlaying","useIsGameOver","useTime","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","GameSettingsModal","FRUIT_MERGER_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","formatTime","jsx","_jsx","jsxs","_jsxs","FruitMerger","memo","settings","onSettingsChange","isPlaying","isGameOver","time","initializeGame","state","startGame","stopGame","resetGame","prevGameOverRef","current","FRUIT_MERGER","GAME_OVER","enableSounds","HEAVY","enableHaptics","handleStartGame","START","MEDIUM","handleStopGame","handleResetGame","gameOverModalProps","isVisible","score","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreLabel","scoreFormatter","gameSettingsModalProps","gameId","offset","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","style","styles","root","children","container","paddingTop","create","flex","displayName"],"sourceRoot":"../../../../src","sources":["games/fruit-merger/FruitMerger.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useCallback","useMemo","useRef","View","StyleSheet","GestureHandlerRootView","useFruitMergerStore","useIsPlaying","useIsGameOver","useTime","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","GameSettingsModal","FRUIT_MERGER_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","formatTime","calculateTimeBasedScore","jsx","_jsx","jsxs","_jsxs","FruitMerger","memo","settings","onSettingsChange","onEndGame","isPlaying","isGameOver","time","gameReportedRef","reportGameEnd","status","current","expectedTimes","easy","medium","hard","expectedTime","difficulty","calculatedScore","score","toString","initializeGame","state","startGame","stopGame","resetGame","prevGameOverRef","FRUIT_MERGER","GAME_OVER","enableSounds","HEAVY","enableHaptics","handleStartGame","START","MEDIUM","handleStopGame","handleResetGame","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreLabel","scoreFormatter","gameSettingsModalProps","gameId","offset","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","style","styles","root","children","container","paddingTop","create","flex","displayName"],"sourceRoot":"../../../../src","sources":["games/fruit-merger/FruitMerger.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- "use strict";import React,{useEffect,useRef}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useFruitNinjaStore,registerGameService}from "./FruitNinjaStore.js";import{createFruitNinjaService,getDifficultySpawnInterval}from "./FruitNinjaService.js";import{ScoreBoard,GameArea,GameBackground}from "./components/index.js";import{GameControlButton,GameOverModal,useAnimationTrackers,useGameErrorHandler,GameErrorType}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const FruitNinja =({settings,onSettingsChange})=>{const isPlaying = useFruitNinjaStore(state => state.isPlaying);const gameOver = useFruitNinjaStore(state => state.gameOver);const score = useFruitNinjaStore(state => state.score);const startGame = useFruitNinjaStore(state => state.startGame);const stopGame = useFruitNinjaStore(state => state.stopGame);const resetGame = useFruitNinjaStore(state => state.resetGame);const decrementTime = useFruitNinjaStore(state => state.decrementTime);const addFruit = useFruitNinjaStore(state => state.addFruit);const removeFruit = useFruitNinjaStore(state => state.removeFruit);const updateFruit = useFruitNinjaStore(state => state.updateFruit);const{fruitAnimations,particleAnimations}= useAnimationTrackers(['fruitAnimations','particleAnimations']);const{wrapFunction,safeExecute}= useGameErrorHandler(GAME_IDS.FRUIT_NINJA);const gameService = useRef(safeExecute(()=> createFruitNinjaService(fruitAnimations,particleAnimations),createFruitNinjaService(fruitAnimations,particleAnimations),GameErrorType.INITIALIZATION_ERROR)).current;useEffect(()=>{registerGameService(gameService);return()=>{handleResetGame();};},[gameService]);const handleStartGame = wrapFunction(()=>{startGame();if(gameService){gameService.resetAnimations();gameService.startGameTimer(decrementTime);gameService.startFruitSpawning(spawnFruit,getDifficultySpawnInterval(settings?.difficulty || 'medium'));gameService.startPhysicsLoop(updateFruit,removeFruit,()=> useFruitNinjaStore.getState().fruits);}},GameErrorType.INITIALIZATION_ERROR);const handleStopGame = wrapFunction(()=>{stopGame();if(gameService){gameService.cleanup();gameService.resetAnimations();}},GameErrorType.UNKNOWN_ERROR);const handleResetGame = wrapFunction(()=>{if(gameService){gameService.cleanup();}resetGame();if(gameService){gameService.resetAnimations();}},GameErrorType.UNKNOWN_ERROR);const spawnFruit = fruit =>{addFruit(fruit);};const offset = settings?.offset ?? 0;return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(GameBackground,{offset:offset,children:[_jsx(GameArea,{}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{isPlaying:isPlaying,gameOver:gameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START SLICING",stopButtonText:"STOP GAME",startButtonSubtext:"Slice fruits to score!",stopButtonSubtext:"End current game",startButtonColor:"#10b981",stopButtonColor:"#dc2626",startButtonBorderColor:"#34d399",stopButtonBorderColor:"#f87171"}),_jsx(GameOverModal,{isVisible:gameOver,score:score,onPlayAgain:handleResetGame,buttonText:"Slice Again!",primaryColor:"rgba(16,185,129,0.5)",borderColor:"rgba(16,185,129,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#10b981"}),_jsx(GameSettingsModal,{gameId:GAME_IDS.FRUIT_NINJA,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]})})});};const styles = StyleSheet.create({container:{flex:1}});
1
+ "use strict";import React,{useEffect,useRef}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useFruitNinjaStore,registerGameService}from "./FruitNinjaStore.js";import{createFruitNinjaService,getDifficultySpawnInterval}from "./FruitNinjaService.js";import{ScoreBoard,GameArea,GameBackground}from "./components/index.js";import{GameControlButton,GameOverModal,useAnimationTrackers,useGameErrorHandler,GameErrorType}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const FruitNinja =({settings,onSettingsChange,onEndGame})=>{const isPlaying = useFruitNinjaStore(state => state.isPlaying);const gameOver = useFruitNinjaStore(state => state.gameOver);const score = useFruitNinjaStore(state => state.score);const startGame = useFruitNinjaStore(state => state.startGame);const stopGame = useFruitNinjaStore(state => state.stopGame);const resetGame = useFruitNinjaStore(state => state.resetGame);const decrementTime = useFruitNinjaStore(state => state.decrementTime);const addFruit = useFruitNinjaStore(state => state.addFruit);const removeFruit = useFruitNinjaStore(state => state.removeFruit);const updateFruit = useFruitNinjaStore(state => state.updateFruit);const gameReportedRef = useRef(false);const reportGameEnd = status =>{if(onEndGame && !gameReportedRef.current){const currentState = useFruitNinjaStore.getState();onEndGame({status,score:currentState.score.toString()});gameReportedRef.current = true;}};const{fruitAnimations,particleAnimations}= useAnimationTrackers(['fruitAnimations','particleAnimations']);const{wrapFunction,safeExecute}= useGameErrorHandler(GAME_IDS.FRUIT_NINJA);const gameService = useRef(safeExecute(()=> createFruitNinjaService(fruitAnimations,particleAnimations),createFruitNinjaService(fruitAnimations,particleAnimations),GameErrorType.INITIALIZATION_ERROR)).current;useEffect(()=>{registerGameService(gameService);return()=>{handleResetGame();};},[gameService]);useEffect(()=>{if(gameOver && !gameReportedRef.current){const currentState = useFruitNinjaStore.getState();const status = currentState.lives <= 0 ? 'lose':'win';reportGameEnd(status);}if(!gameOver){gameReportedRef.current = false;}},[gameOver]);const handleStartGame = wrapFunction(()=>{gameReportedRef.current = false;startGame();if(gameService){gameService.resetAnimations();gameService.startGameTimer(decrementTime);gameService.startFruitSpawning(spawnFruit,getDifficultySpawnInterval(settings?.difficulty || 'medium'));gameService.startPhysicsLoop(updateFruit,removeFruit,()=> useFruitNinjaStore.getState().fruits);}},GameErrorType.INITIALIZATION_ERROR);const handleStopGame = wrapFunction(()=>{reportGameEnd('cancel');stopGame();if(gameService){gameService.cleanup();gameService.resetAnimations();}},GameErrorType.UNKNOWN_ERROR);const handleResetGame = wrapFunction(()=>{if(gameService){gameService.cleanup();}resetGame();if(gameService){gameService.resetAnimations();}},GameErrorType.UNKNOWN_ERROR);const spawnFruit = fruit =>{addFruit(fruit);};const offset = settings?.offset ?? 0;return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(GameBackground,{offset:offset,children:[_jsx(GameArea,{}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{isPlaying:isPlaying,gameOver:gameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START SLICING",stopButtonText:"STOP GAME",startButtonSubtext:"Slice fruits to score!",stopButtonSubtext:"End current game",startButtonColor:"#10b981",stopButtonColor:"#dc2626",startButtonBorderColor:"#34d399",stopButtonBorderColor:"#f87171"}),_jsx(GameOverModal,{isVisible:gameOver,score:score,onPlayAgain:handleResetGame,buttonText:"Slice Again!",primaryColor:"rgba(16,185,129,0.5)",borderColor:"rgba(16,185,129,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#10b981"}),_jsx(GameSettingsModal,{gameId:GAME_IDS.FRUIT_NINJA,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]})})});};const styles = StyleSheet.create({container:{flex:1}});