react-native-games 1.1.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 (419) hide show
  1. package/README.md +101 -30
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -167
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -182
  5. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -1
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +1 -318
  7. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +1 -183
  8. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +1 -237
  9. package/lib/module/games/balloon-blaster/components/GameArea.js +1 -156
  10. package/lib/module/games/balloon-blaster/components/GameBackground.js +1 -476
  11. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +1 -112
  12. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  13. package/lib/module/games/balloon-blaster/components/index.js +1 -7
  14. package/lib/module/games/bike-racing/BikeRacing.js +1 -0
  15. package/lib/module/games/bike-racing/BikeRacing.js.map +1 -0
  16. package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -0
  17. package/lib/module/games/bike-racing/BikeRacingConstants.js.map +1 -0
  18. package/lib/module/games/bike-racing/BikeRacingService.js +1 -0
  19. package/lib/module/games/bike-racing/BikeRacingService.js.map +1 -0
  20. package/lib/module/games/bike-racing/BikeRacingStore.js +1 -0
  21. package/lib/module/games/bike-racing/BikeRacingStore.js.map +1 -0
  22. package/lib/module/games/bike-racing/components/BikeComponent.js +1 -0
  23. package/lib/module/games/bike-racing/components/BikeComponent.js.map +1 -0
  24. package/lib/module/games/bike-racing/components/GameBackground.js +1 -0
  25. package/lib/module/games/bike-racing/components/GameBackground.js.map +1 -0
  26. package/lib/module/games/bike-racing/components/ScoreBoard.js +1 -0
  27. package/lib/module/games/bike-racing/components/ScoreBoard.js.map +1 -0
  28. package/lib/module/games/bike-racing/components/index.js +1 -0
  29. package/lib/module/games/bike-racing/components/index.js.map +1 -0
  30. package/lib/module/games/bike-racing/index.js +1 -0
  31. package/lib/module/games/bike-racing/index.js.map +1 -0
  32. package/lib/module/games/block-blast/BlockBlast.js +1 -0
  33. package/lib/module/games/block-blast/BlockBlast.js.map +1 -0
  34. package/lib/module/games/block-blast/BlockBlastConstants.js +1 -0
  35. package/lib/module/games/block-blast/BlockBlastConstants.js.map +1 -0
  36. package/lib/module/games/block-blast/BlockBlastService.js +1 -0
  37. package/lib/module/games/block-blast/BlockBlastService.js.map +1 -0
  38. package/lib/module/games/block-blast/BlockBlastStore.js +1 -0
  39. package/lib/module/games/block-blast/BlockBlastStore.js.map +1 -0
  40. package/lib/module/games/block-blast/components/BlockPieceComponent.js +1 -0
  41. package/lib/module/games/block-blast/components/BlockPieceComponent.js.map +1 -0
  42. package/lib/module/games/block-blast/components/GameArea.js +1 -0
  43. package/lib/module/games/block-blast/components/GameArea.js.map +1 -0
  44. package/lib/module/games/block-blast/components/GameBackground.js +1 -0
  45. package/lib/module/games/block-blast/components/GameBackground.js.map +1 -0
  46. package/lib/module/games/block-blast/components/GridComponent.js +1 -0
  47. package/lib/module/games/block-blast/components/GridComponent.js.map +1 -0
  48. package/lib/module/games/block-blast/components/ScoreBoard.js +1 -0
  49. package/lib/module/games/block-blast/components/ScoreBoard.js.map +1 -0
  50. package/lib/module/games/block-blast/components/index.js +1 -0
  51. package/lib/module/games/block-blast/components/index.js.map +1 -0
  52. package/lib/module/games/block-blast/index.js +1 -0
  53. package/lib/module/games/block-blast/index.js.map +1 -0
  54. package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -0
  55. package/lib/module/games/bubble-shooter/BubbleShooter.js.map +1 -0
  56. package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -0
  57. package/lib/module/games/bubble-shooter/BubbleShooterConstants.js.map +1 -0
  58. package/lib/module/games/bubble-shooter/BubbleShooterService.js +1 -0
  59. package/lib/module/games/bubble-shooter/BubbleShooterService.js.map +1 -0
  60. package/lib/module/games/bubble-shooter/BubbleShooterStore.js +1 -0
  61. package/lib/module/games/bubble-shooter/BubbleShooterStore.js.map +1 -0
  62. package/lib/module/games/bubble-shooter/components/GameArea.js +1 -0
  63. package/lib/module/games/bubble-shooter/components/GameArea.js.map +1 -0
  64. package/lib/module/games/bubble-shooter/components/GameBackground.js +1 -0
  65. package/lib/module/games/bubble-shooter/components/GameBackground.js.map +1 -0
  66. package/lib/module/games/bubble-shooter/components/ScoreBoard.js +1 -0
  67. package/lib/module/games/bubble-shooter/components/ScoreBoard.js.map +1 -0
  68. package/lib/module/games/bubble-shooter/components/index.js +1 -0
  69. package/lib/module/games/bubble-shooter/components/index.js.map +1 -0
  70. package/lib/module/games/bubble-shooter/index.js +1 -0
  71. package/lib/module/games/bubble-shooter/index.js.map +1 -0
  72. package/lib/module/games/candy-crush/CandyCrush.js +1 -131
  73. package/lib/module/games/candy-crush/CandyCrush.js.map +1 -1
  74. package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -125
  75. package/lib/module/games/candy-crush/CandyCrushConstants.js.map +1 -1
  76. package/lib/module/games/candy-crush/CandyCrushService.js +1 -370
  77. package/lib/module/games/candy-crush/CandyCrushStore.js +1 -303
  78. package/lib/module/games/candy-crush/components/CandyItem.js +1 -191
  79. package/lib/module/games/candy-crush/components/GameBackground.js +1 -85
  80. package/lib/module/games/candy-crush/components/GameGrid.js +1 -314
  81. package/lib/module/games/candy-crush/components/ScoreBoard.js +1 -79
  82. package/lib/module/games/candy-crush/components/index.js +1 -7
  83. package/lib/module/games/candy-crush/index.js +1 -6
  84. package/lib/module/games/car-racing/CarRacing.js +1 -0
  85. package/lib/module/games/car-racing/CarRacing.js.map +1 -0
  86. package/lib/module/games/car-racing/CarRacingConstants.js +1 -0
  87. package/lib/module/games/car-racing/CarRacingConstants.js.map +1 -0
  88. package/lib/module/games/car-racing/CarRacingService.js +1 -0
  89. package/lib/module/games/car-racing/CarRacingService.js.map +1 -0
  90. package/lib/module/games/car-racing/CarRacingStore.js +1 -0
  91. package/lib/module/games/car-racing/CarRacingStore.js.map +1 -0
  92. package/lib/module/games/car-racing/components/CarComponent.js +1 -0
  93. package/lib/module/games/car-racing/components/CarComponent.js.map +1 -0
  94. package/lib/module/games/car-racing/components/GameBackground.js +1 -0
  95. package/lib/module/games/car-racing/components/GameBackground.js.map +1 -0
  96. package/lib/module/games/car-racing/components/ScoreBoard.js +1 -0
  97. package/lib/module/games/car-racing/components/ScoreBoard.js.map +1 -0
  98. package/lib/module/games/car-racing/components/index.js +1 -0
  99. package/lib/module/games/car-racing/components/index.js.map +1 -0
  100. package/lib/module/games/colors-sort/ColorsSort.js +1 -143
  101. package/lib/module/games/colors-sort/ColorsSort.js.map +1 -1
  102. package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -72
  103. package/lib/module/games/colors-sort/ColorsSortConstants.js.map +1 -1
  104. package/lib/module/games/colors-sort/ColorsSortService.js +1 -255
  105. package/lib/module/games/colors-sort/ColorsSortStore.js +1 -257
  106. package/lib/module/games/colors-sort/ColorsSortStore.js.map +1 -1
  107. package/lib/module/games/colors-sort/components/ColorContainer.js +1 -140
  108. package/lib/module/games/colors-sort/components/GameBackground.js +1 -135
  109. package/lib/module/games/colors-sort/components/ScoreBoard.js +1 -70
  110. package/lib/module/games/colors-sort/components/index.js +1 -6
  111. package/lib/module/games/dino-jump/DinoJump.js +1 -209
  112. package/lib/module/games/dino-jump/DinoJump.js.map +1 -1
  113. package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -189
  114. package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -1
  115. package/lib/module/games/dino-jump/DinoJumpService.js +1 -270
  116. package/lib/module/games/dino-jump/DinoJumpStore.js +1 -381
  117. package/lib/module/games/dino-jump/components/DinoSprite.js +1 -418
  118. package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -1
  119. package/lib/module/games/dino-jump/components/GameArea.js +1 -68
  120. package/lib/module/games/dino-jump/components/GameBackground.js +1 -444
  121. package/lib/module/games/dino-jump/components/ObstacleSprite.js +1 -306
  122. package/lib/module/games/dino-jump/components/ScoreBoard.js +1 -105
  123. package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -1
  124. package/lib/module/games/dino-jump/components/StarSprite.js +1 -45
  125. package/lib/module/games/dino-jump/components/index.js +1 -9
  126. package/lib/module/games/flappy-bird/FlappyBird.js +1 -126
  127. package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -1
  128. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -90
  129. package/lib/module/games/flappy-bird/FlappyBirdConstants.js.map +1 -1
  130. package/lib/module/games/flappy-bird/FlappyBirdStore.js +1 -300
  131. package/lib/module/games/flappy-bird/components/Bird.js +1 -87
  132. package/lib/module/games/flappy-bird/components/GameArea.js +1 -87
  133. package/lib/module/games/flappy-bird/components/GameBackground.js +1 -79
  134. package/lib/module/games/flappy-bird/components/Pipes.js +1 -172
  135. package/lib/module/games/flappy-bird/components/ScoreBoard.js +1 -73
  136. package/lib/module/games/flappy-bird/components/index.js +1 -8
  137. package/lib/module/games/fruit-merger/FruitMerger.js +1 -120
  138. package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -1
  139. package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -119
  140. package/lib/module/games/fruit-merger/FruitMergerConstants.js.map +1 -1
  141. package/lib/module/games/fruit-merger/FruitMergerService.js +1 -13
  142. package/lib/module/games/fruit-merger/FruitMergerStore.js +1 -315
  143. package/lib/module/games/fruit-merger/components/FruitItem.js +1 -102
  144. package/lib/module/games/fruit-merger/components/GameArea.js +1 -103
  145. package/lib/module/games/fruit-merger/components/GameBackground.js +1 -498
  146. package/lib/module/games/fruit-merger/components/ScoreBoard.js +1 -58
  147. package/lib/module/games/fruit-merger/components/index.js +1 -7
  148. package/lib/module/games/fruit-ninja/FruitNinja.js +1 -134
  149. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  150. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -148
  151. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -1
  152. package/lib/module/games/fruit-ninja/FruitNinjaService.js +1 -311
  153. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +1 -191
  154. package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -1
  155. package/lib/module/games/fruit-ninja/components/FruitComponent.js +1 -99
  156. package/lib/module/games/fruit-ninja/components/GameArea.js +1 -215
  157. package/lib/module/games/fruit-ninja/components/GameBackground.js +1 -1267
  158. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +1 -92
  159. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
  160. package/lib/module/games/fruit-ninja/components/index.js +1 -7
  161. package/lib/module/games/game-2048/Game2048.js +1 -149
  162. package/lib/module/games/game-2048/Game2048.js.map +1 -1
  163. package/lib/module/games/game-2048/Game2048Constants.js +1 -263
  164. package/lib/module/games/game-2048/Game2048Constants.js.map +1 -1
  165. package/lib/module/games/game-2048/Game2048Service.js +1 -457
  166. package/lib/module/games/game-2048/Game2048Store.js +1 -236
  167. package/lib/module/games/game-2048/components/GameBackground.js +1 -247
  168. package/lib/module/games/game-2048/components/GameGrid.js +1 -139
  169. package/lib/module/games/game-2048/components/GameTile.js +1 -72
  170. package/lib/module/games/game-2048/components/ScoreBoard.js +1 -52
  171. package/lib/module/games/game-2048/components/index.js +1 -7
  172. package/lib/module/games/maze-runner/MazeRunner.js +1 -267
  173. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  174. package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -100
  175. package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -1
  176. package/lib/module/games/maze-runner/MazeRunnerService.js +1 -586
  177. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +1 -150
  178. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +1 -370
  179. package/lib/module/games/maze-runner/components/GameBackground.js +1 -175
  180. package/lib/module/games/maze-runner/components/ScoreBoard.js +1 -61
  181. package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +1 -209
  182. package/lib/module/games/maze-runner/components/StaticGameBackground.js +1 -169
  183. package/lib/module/games/maze-runner/components/WallComponent.js +1 -91
  184. package/lib/module/games/maze-runner/components/index.js +1 -8
  185. package/lib/module/games/perfect-circle/PerfectCircle.js +1 -0
  186. package/lib/module/games/perfect-circle/PerfectCircle.js.map +1 -0
  187. package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -0
  188. package/lib/module/games/perfect-circle/PerfectCircleConstants.js.map +1 -0
  189. package/lib/module/games/perfect-circle/PerfectCircleService.js +1 -0
  190. package/lib/module/games/perfect-circle/PerfectCircleService.js.map +1 -0
  191. package/lib/module/games/perfect-circle/PerfectCircleStore.js +1 -0
  192. package/lib/module/games/perfect-circle/PerfectCircleStore.js.map +1 -0
  193. package/lib/module/games/perfect-circle/components/DrawingCanvas.js +1 -0
  194. package/lib/module/games/perfect-circle/components/DrawingCanvas.js.map +1 -0
  195. package/lib/module/games/perfect-circle/components/GameBackground.js +1 -0
  196. package/lib/module/games/perfect-circle/components/GameBackground.js.map +1 -0
  197. package/lib/module/games/perfect-circle/components/ScoreBoard.js +1 -0
  198. package/lib/module/games/perfect-circle/components/ScoreBoard.js.map +1 -0
  199. package/lib/module/games/perfect-circle/index.js +1 -0
  200. package/lib/module/games/perfect-circle/index.js.map +1 -0
  201. package/lib/module/games/popit-fidget/PopitFidget.js +1 -285
  202. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  203. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -113
  204. package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -1
  205. package/lib/module/games/popit-fidget/PopitFidgetService.js +1 -132
  206. package/lib/module/games/popit-fidget/PopitFidgetStore.js +1 -125
  207. package/lib/module/games/popit-fidget/components/BubbleComponent.js +1 -198
  208. package/lib/module/games/popit-fidget/components/FidgetGrid.js +1 -165
  209. package/lib/module/games/popit-fidget/components/GameBackground.js +1 -177
  210. package/lib/module/games/popit-fidget/components/ScoreBoard.js +1 -61
  211. package/lib/module/games/popit-fidget/components/index.js +1 -7
  212. package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -159
  213. package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -1
  214. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -207
  215. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js.map +1 -1
  216. package/lib/module/games/sliding-numbers/SlidingNumbersService.js +1 -248
  217. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +1 -274
  218. package/lib/module/games/sliding-numbers/components/GameBackground.js +1 -259
  219. package/lib/module/games/sliding-numbers/components/NumbersGrid.js +1 -174
  220. package/lib/module/games/sliding-numbers/components/NumbersTile.js +1 -116
  221. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +1 -64
  222. package/lib/module/games/sliding-numbers/components/index.js +1 -7
  223. package/lib/module/games/snake/Snake.js +1 -189
  224. package/lib/module/games/snake/Snake.js.map +1 -1
  225. package/lib/module/games/snake/SnakeConstants.js +1 -138
  226. package/lib/module/games/snake/SnakeConstants.js.map +1 -1
  227. package/lib/module/games/snake/SnakeService.js +1 -148
  228. package/lib/module/games/snake/SnakeStore.js +1 -182
  229. package/lib/module/games/snake/SnakeStore.js.map +1 -1
  230. package/lib/module/games/snake/components/GameBackground.js +1 -221
  231. package/lib/module/games/snake/components/GameGrid.js +1 -153
  232. package/lib/module/games/snake/components/ScoreBoard.js +1 -51
  233. package/lib/module/games/snake/components/ScoreBoard.js.map +1 -1
  234. package/lib/module/games/snake/components/index.js +1 -6
  235. package/lib/module/games/snake/index.js +1 -6
  236. package/lib/module/games/space-fighter/SpaceFighter.js +1 -165
  237. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  238. package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -108
  239. package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -1
  240. package/lib/module/games/space-fighter/SpaceFighterService.js +1 -326
  241. package/lib/module/games/space-fighter/SpaceFighterStore.js +1 -209
  242. package/lib/module/games/space-fighter/components/AsteroidComponent.js +1 -113
  243. package/lib/module/games/space-fighter/components/GameArea.js +1 -289
  244. package/lib/module/games/space-fighter/components/GameBackground.js +1 -239
  245. package/lib/module/games/space-fighter/components/ScoreBoard.js +1 -136
  246. package/lib/module/games/space-fighter/components/Spacecraft3D.js +1 -202
  247. package/lib/module/games/space-fighter/components/SpacecraftPath.js +1 -52
  248. package/lib/module/games/space-fighter/components/index.js +1 -9
  249. package/lib/module/games/whack-a-mole/WhackAMole.js +1 -270
  250. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  251. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -115
  252. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -1
  253. package/lib/module/games/whack-a-mole/WhackAMoleService.js +1 -120
  254. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +1 -172
  255. package/lib/module/games/whack-a-mole/components/GameBackground.js +1 -477
  256. package/lib/module/games/whack-a-mole/components/GameGrid.js +1 -97
  257. package/lib/module/games/whack-a-mole/components/GameHole.js +1 -196
  258. package/lib/module/games/whack-a-mole/components/MoleCharacter.js +1 -241
  259. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +1 -67
  260. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
  261. package/lib/module/games/whack-a-mole/components/index.js +1 -8
  262. package/lib/module/helpers/AnimationFrame.js +1 -120
  263. package/lib/module/helpers/AnimationTracker.js +1 -89
  264. package/lib/module/helpers/ErrorHandler.js +1 -269
  265. package/lib/module/helpers/GameControlButton.js +1 -219
  266. package/lib/module/helpers/GameOverModal.js +1 -144
  267. package/lib/module/helpers/GameOverModal.js.map +1 -1
  268. package/lib/module/helpers/GameSettingsModal.js +1 -287
  269. package/lib/module/helpers/GameSettingsModal.js.map +1 -1
  270. package/lib/module/helpers/ParticleBlast.js +1 -134
  271. package/lib/module/helpers/ScoreBoardContainer.js +1 -34
  272. package/lib/module/helpers/ScoreBoardContainer.js.map +1 -1
  273. package/lib/module/helpers/index.js +1 -12
  274. package/lib/module/index.js +1 -22
  275. package/lib/module/index.js.map +1 -1
  276. package/lib/module/services/GamesConstants.js +1 -178
  277. package/lib/module/services/GamesConstants.js.map +1 -1
  278. package/lib/module/services/GamesService.js +1 -112
  279. package/lib/module/services/GamesService.js.map +1 -1
  280. package/lib/module/services/HapticsService.js +1 -77
  281. package/lib/module/services/ScoringService.js +1 -0
  282. package/lib/module/services/ScoringService.js.map +1 -0
  283. package/lib/module/services/SoundsService.js +1 -302
  284. package/lib/module/services/SoundsService.js.map +1 -1
  285. package/lib/module/services/UtilsService.js +1 -32
  286. package/lib/module/services/UtilsService.js.map +1 -1
  287. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  288. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +1 -1
  289. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  290. package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +4 -0
  291. package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts.map +1 -0
  292. package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +76 -0
  293. package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts.map +1 -0
  294. package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +22 -0
  295. package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts.map +1 -0
  296. package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +72 -0
  297. package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts.map +1 -0
  298. package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +12 -0
  299. package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts.map +1 -0
  300. package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +9 -0
  301. package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts.map +1 -0
  302. package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +7 -0
  303. package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts.map +1 -0
  304. package/lib/typescript/src/games/bike-racing/components/index.d.ts +4 -0
  305. package/lib/typescript/src/games/bike-racing/components/index.d.ts.map +1 -0
  306. package/lib/typescript/src/games/bike-racing/index.d.ts +5 -0
  307. package/lib/typescript/src/games/bike-racing/index.d.ts.map +1 -0
  308. package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +4 -0
  309. package/lib/typescript/src/games/block-blast/BlockBlast.d.ts.map +1 -0
  310. package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +82 -0
  311. package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts.map +1 -0
  312. package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +17 -0
  313. package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts.map +1 -0
  314. package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +62 -0
  315. package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts.map +1 -0
  316. package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +14 -0
  317. package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts.map +1 -0
  318. package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +12 -0
  319. package/lib/typescript/src/games/block-blast/components/GameArea.d.ts.map +1 -0
  320. package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts +7 -0
  321. package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts.map +1 -0
  322. package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +17 -0
  323. package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts.map +1 -0
  324. package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +7 -0
  325. package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts.map +1 -0
  326. package/lib/typescript/src/games/block-blast/components/index.d.ts +6 -0
  327. package/lib/typescript/src/games/block-blast/components/index.d.ts.map +1 -0
  328. package/lib/typescript/src/games/block-blast/index.d.ts +5 -0
  329. package/lib/typescript/src/games/block-blast/index.d.ts.map +1 -0
  330. package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +4 -0
  331. package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts.map +1 -0
  332. package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +61 -0
  333. package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts.map +1 -0
  334. package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +26 -0
  335. package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts.map +1 -0
  336. package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +62 -0
  337. package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts.map +1 -0
  338. package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +9 -0
  339. package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts.map +1 -0
  340. package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts +8 -0
  341. package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts.map +1 -0
  342. package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +7 -0
  343. package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts.map +1 -0
  344. package/lib/typescript/src/games/bubble-shooter/components/index.d.ts +4 -0
  345. package/lib/typescript/src/games/bubble-shooter/components/index.d.ts.map +1 -0
  346. package/lib/typescript/src/games/bubble-shooter/index.d.ts +3 -0
  347. package/lib/typescript/src/games/bubble-shooter/index.d.ts.map +1 -0
  348. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -1
  349. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +7 -7
  350. package/lib/typescript/src/games/car-racing/CarRacing.d.ts +4 -0
  351. package/lib/typescript/src/games/car-racing/CarRacing.d.ts.map +1 -0
  352. package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +76 -0
  353. package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts.map +1 -0
  354. package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +22 -0
  355. package/lib/typescript/src/games/car-racing/CarRacingService.d.ts.map +1 -0
  356. package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +72 -0
  357. package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts.map +1 -0
  358. package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +13 -0
  359. package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts.map +1 -0
  360. package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +9 -0
  361. package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts.map +1 -0
  362. package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +7 -0
  363. package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts.map +1 -0
  364. package/lib/typescript/src/games/car-racing/components/index.d.ts +4 -0
  365. package/lib/typescript/src/games/car-racing/components/index.d.ts.map +1 -0
  366. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts.map +1 -1
  367. package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts.map +1 -1
  368. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -1
  369. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -1
  370. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -1
  371. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts.map +1 -1
  372. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -1
  373. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts.map +1 -1
  374. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  375. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
  376. package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -1
  377. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  378. package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +4 -0
  379. package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts.map +1 -0
  380. package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +81 -0
  381. package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts.map +1 -0
  382. package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +14 -0
  383. package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts.map +1 -0
  384. package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +40 -0
  385. package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts.map +1 -0
  386. package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +9 -0
  387. package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts.map +1 -0
  388. package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts +8 -0
  389. package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts.map +1 -0
  390. package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +7 -0
  391. package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts.map +1 -0
  392. package/lib/typescript/src/games/perfect-circle/index.d.ts +3 -0
  393. package/lib/typescript/src/games/perfect-circle/index.d.ts.map +1 -0
  394. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  395. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -1
  396. package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -1
  397. package/lib/typescript/src/games/snake/SnakeStore.d.ts +4 -0
  398. package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -1
  399. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -1
  400. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  401. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  402. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +1 -1
  403. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -1
  404. package/lib/typescript/src/helpers/GameOverModal.d.ts +3 -0
  405. package/lib/typescript/src/helpers/GameOverModal.d.ts.map +1 -1
  406. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts.map +1 -1
  407. package/lib/typescript/src/index.d.ts +6 -1
  408. package/lib/typescript/src/index.d.ts.map +1 -1
  409. package/lib/typescript/src/services/GamesConstants.d.ts +57 -7
  410. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  411. package/lib/typescript/src/services/GamesService.d.ts +2 -1
  412. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  413. package/lib/typescript/src/services/ScoringService.d.ts +2 -0
  414. package/lib/typescript/src/services/ScoringService.d.ts.map +1 -0
  415. package/lib/typescript/src/services/SoundsService.d.ts +88 -0
  416. package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
  417. package/lib/typescript/src/services/UtilsService.d.ts +12 -1
  418. package/lib/typescript/src/services/UtilsService.d.ts.map +1 -1
  419. package/package.json +2 -2
package/README.md CHANGED
@@ -2,29 +2,85 @@
2
2
 
3
3
  **react-native-games** is a collection of high-performance games for your React Native projects. Built with modern React Native technologies including Skia, Reanimated, Gesture Handler and TypeScript for smooth 60fps gameplay across iOS, Android, and Web platforms.
4
4
 
5
- | | | |
6
- |:---|:---|:---|
7
- | **🚀 High Performance**<br/>• 60fps gameplay with React Native Skia<br/>• Optimized animations using Reanimated 3<br/>• Delta time physics loops<br/>• React.memo optimizations<br/>• Minimal re-renders with direct store subscriptions | **📱 Cross-Platform**<br/>• iOS, Android, and Web support<br/>• Consistent performance across platforms<br/>• Responsive design for all screen sizes<br/>• Dynamic offset handling for notches<br/>• Adaptive UI components | **🎵 Rich Audio & Haptics**<br/>• Sound effects and speech synthesis<br/>• Haptic feedback for immersive experience<br/>• Configurable audio settings<br/>• Per-game sound customization |
8
- | **🎯 Customizable**<br/>• Multiple difficulty levels<br/>• Adjustable game parameters<br/>• Persistent settings storage<br/>• Unified settings interface | **🎮 Game Features**<br/>• Physics simulation and collisions<br/>• Particle systems and visual effects<br/>• Procedural generation (mazes, obstacles)<br/>• Score systems and achievements<br/>• Progressive difficulty scaling | **🛠️ Developer Friendly**<br/>• TypeScript support throughout<br/>• Shared components (GameControlButton, ScoreBoard)<br/>• Consistent API across all games<br/>• Easy integration and customization<br/>• Comprehensive documentation |
5
+ <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin: 20px 0;">
6
+
7
+ <div>
8
+ <strong>🚀 High Performance</strong><br/>
9
+ • 60fps gameplay with React Native Skia<br/>
10
+ • Optimized animations using Reanimated 3<br/>
11
+ • Delta time physics loops<br/>
12
+ • React.memo optimizations<br/>
13
+ • Minimal re-renders with direct store subscriptions
14
+ </div>
15
+
16
+ <div>
17
+ <strong>📱 Cross-Platform</strong><br/>
18
+ • iOS, Android, and Web support<br/>
19
+ • Consistent performance across platforms<br/>
20
+ • Responsive design for all screen sizes<br/>
21
+ • Dynamic offset handling for notches<br/>
22
+ • Adaptive UI components
23
+ </div>
24
+
25
+ <div>
26
+ <strong>🎵 Rich Audio & Haptics</strong><br/>
27
+ • Sound effects and speech synthesis<br/>
28
+ • Haptic feedback for immersive experience<br/>
29
+ • Configurable audio settings<br/>
30
+ • Per-game sound customization
31
+ </div>
32
+
33
+ <div>
34
+ <strong>🎯 Customizable</strong><br/>
35
+ • Multiple difficulty levels<br/>
36
+ • Adjustable game parameters<br/>
37
+ • Persistent settings storage<br/>
38
+ • Unified settings interface
39
+ </div>
40
+
41
+ <div>
42
+ <strong>🎮 Game Features</strong><br/>
43
+ • Physics simulation and collisions<br/>
44
+ • Particle systems and visual effects<br/>
45
+ • Procedural generation (mazes, obstacles)<br/>
46
+ • Score systems and achievements<br/>
47
+ • Progressive difficulty scaling
48
+ </div>
49
+
50
+ <div>
51
+ <strong>🛠️ Developer Friendly</strong><br/>
52
+ • TypeScript support throughout<br/>
53
+ • Shared components (GameControlButton, ScoreBoard)<br/>
54
+ • Consistent API across all games<br/>
55
+ • Easy integration and customization<br/>
56
+ • Comprehensive documentation
57
+ </div>
58
+
59
+ </div>
9
60
 
10
61
  ## 🎯 Available Games
11
62
 
12
63
  | Screenshot | Game Details |
13
64
  |------------|--------------|
14
- | <img src="https://cdn.worklage.com/playtura/screenshots/fruit-ninja.png" alt="Fruit Ninja" width="120"/> | **🍎 Fruit Ninja**<br/>Slice flying fruits with finger swipes - avoid the bombs!<br/><br/>• Fixed 60-second gameplay sessions<br/>• Physics-based slicing with particle effects and combo system<br/>• Difficulty affects fruit spawn rate and bomb frequency |
15
- | <img src="https://cdn.worklage.com/playtura/screenshots/candy-crush.png" alt="Candy Crush" width="120"/> | **🍬 Candy Crush**<br/>Match colorful candies in this puzzle game<br/><br/>• Match-3 puzzle with colorful candies<br/>• Create special candies with 4+ matches<br/>• Cascading combos and satisfying animations<br/>• Difficulty affects level objectives and move limits |
16
- | <img src="https://cdn.worklage.com/playtura/screenshots/flappy-bird.png" alt="Flappy Bird" width="120"/> | **🐦 Flappy Bird**<br/>Navigate bird through pipes with precise timing<br/><br/>• Classic tap-to-flap mechanics with gravity physics<br/>• Navigate through pipes with pixel-perfect collision<br/>• Progressive difficulty with increasing pipe speed<br/>• Difficulty affects pipe gap size and spawn frequency |
17
- | <img src="https://cdn.worklage.com/playtura/screenshots/colors-sort.png" alt="Colors Sort" width="120"/> | **🎨 Colors Sort**<br/>Sort colored liquids into matching tubes<br/><br/>• Sort colored liquids into matching tubes<br/>• Logic puzzle with increasing complexity<br/>• Satisfying pour animations and sound effects<br/>• Difficulty affects number of tubes and colors |
18
- | <img src="https://cdn.worklage.com/playtura/screenshots/dino-jump.png" alt="Dino Jump" width="120"/> | **🦖 Dino Jump**<br/>Chrome offline dino game - jump to avoid obstacles!<br/><br/>• Endless runner with tap-to-jump mechanics<br/>• Collect stars for extra lives (max 3 lives)<br/>• Game durations: easy 2 mins, medium 3 mins, hard 5 mins<br/>• Dynamic ground height based on device offset (150px or 250px)<br/>• Difficulty affects obstacle spawn rate and game speed |
19
- | <img src="https://cdn.worklage.com/playtura/screenshots/popit-fidget.png" alt="Popit Fidget" width="120"/> | **🫧 Popit Fidget**<br/>Pop satisfying bubbles in this relaxing fidget toy game<br/><br/>• Relaxing bubble popping with satisfying sound effects<br/>• Different bubble shapes and colors for variety<br/>• Difficulty affects bubble responsiveness and patterns |
20
- | <img src="https://cdn.worklage.com/playtura/screenshots/whack-a-mole.png" alt="Whack A Mole" width="120"/> | **🐱 Whack A Mole**<br/>Whack cute cats popping from holes - fast reflexes needed!<br/><br/>• Cat spawn intervals: easy 2000ms, medium 1500ms, hard 1000ms<br/>• Cat visible duration: easy 2500ms, medium 2000ms, hard 1500ms<br/>• Grid sizes: easy/medium 3x3, hard 4x4 |
21
- | <img src="https://cdn.worklage.com/playtura/screenshots/balloon-blaster.png" alt="Balloon Blaster" width="120"/> | **🎈 Balloon Blaster**<br/>Pop rising balloons before they escape - quick taps win!<br/><br/>• Fixed 60-second gameplay sessions<br/>• Balloon spawn interval: 1200ms, rise speed: 0.08<br/>• Physics-based balloon movement with particle effects |
22
- | <img src="https://cdn.worklage.com/playtura/screenshots/space-fighter.png" alt="Space Fighter" width="120"/> | **🚀 Space Fighter**<br/>Pilot spaceship through asteroid fields in endless space<br/><br/>• Horizontal drag controls with smooth spacecraft movement<br/>• Dynamic spacecraft positioning based on device offset<br/>• Progressive difficulty with asteroid spawn intervals<br/>• 1-second collision immunity after each hit<br/>• Difficulty affects asteroid speed and spawn frequency |
23
- | <img src="https://cdn.worklage.com/playtura/screenshots/maze-runner.png" alt="Maze Runner" width="120"/> | **🧩 Maze Runner**<br/>Navigate ball through mazes using tilt and physics controls<br/><br/>• Grid sizes: easy 8x8, medium 10x10, hard 12x12<br/>• Procedurally generated mazes with intelligent pathfinding<br/>• Game over modal only appears on maze completion (not on stop)<br/>• White time display for better visibility<br/>• Difficulty affects maze complexity and time limits |
24
- | <img src="https://cdn.worklage.com/playtura/screenshots/sliding-numbers.png" alt="Sliding Numbers" width="120"/> | **🔢 Sliding Numbers**<br/>Solve the classic 15-puzzle with numbers<br/><br/>• Classic 15-puzzle with numbered tiles<br/>• Grid sizes: easy 3x3, medium 4x4, hard 5x5<br/>• Timer challenge to solve as fast as possible<br/>• Smooth tile sliding animations |
25
- | <img src="https://cdn.worklage.com/playtura/screenshots/game-2048.png" alt="2048 Game" width="120"/> | **🎮 2048 Game**<br/>Merge tiles to reach 2048 and beyond<br/><br/>• Swipe to merge tiles with same numbers<br/>• Reach 2048 tile to win, continue for higher scores<br/>• Undo moves feature for strategic gameplay<br/>• Difficulty affects starting tile values and spawn rate |
26
- | <img src="https://cdn.worklage.com/playtura/screenshots/fruit-merger.png" alt="Fruit Merger" width="120"/> | **🍉 Fruit Merger**<br/>Merge fruits to create bigger ones<br/><br/>• Merge fruits to create bigger ones (watermelon evolution)<br/>• Physics-based dropping and merging mechanics<br/>• Combo system for multiple merges<br/>• Difficulty affects merge requirements and spawn rate |
27
- | <img src="https://cdn.worklage.com/playtura/screenshots/snake.png" alt="Snake & Eggs" width="120"/> | **🐍 Snake & Eggs**<br/>Classic snake game with modern touch controls<br/><br/>• Classic snake gameplay with modern touch controls<br/>• Swipe or tap to change direction<br/>• Grow by eating food, avoid walls and yourself<br/>• Difficulty affects snake speed and grid size |
65
+ | <img src="https://cdn.worklage.com/playtura/screenshots/block-blast.png" alt="Block Blast" width="120"/> | **🧩 Block Blast**<br/>Place blocks on grid to clear lines - strategic puzzle challenge!<br/><br/>• Tetris-style block placement puzzle<br/>• Clear lines horizontally or vertically<br/>• Strategic planning required for high scores<br/>• Difficulty affects available block shapes |
66
+ | <img src="https://cdn.worklage.com/playtura/screenshots/bubble-shooter.png" alt="Bubble Shooter" width="120"/> | **🎯 Bubble Shooter**<br/>Match 3+ bubbles of the same color - classic puzzle fun!<br/><br/>• Aim and shoot bubbles to match colors<br/>• Clear clusters of 3 or more bubbles<br/>• Physics-based bubble bouncing<br/>• Difficulty affects bubble speed and patterns |
67
+ | <img src="https://cdn.worklage.com/playtura/screenshots/car-racing.png" alt="Car Racing" width="120"/> | **🏎️ Car Racing**<br/>Dodge traffic and race through lanes - test your reflexes!<br/><br/>• Lane-based racing with traffic dodging<br/>• Swipe to change lanes quickly<br/>• Collect coins and power-ups<br/>• Difficulty affects traffic density and speed |
68
+ | <img src="https://cdn.worklage.com/playtura/screenshots/fruit-ninja.png" alt="Fruit Ninja" width="120"/> | **🍎 Fruit Ninja**<br/>Slice flying fruits with finger swipes - avoid the bombs!<br/><br/>• Swipe-based fruit slicing mechanics<br/>• Physics-based particle effects and combos<br/>• Avoid bombs for survival<br/>• Difficulty affects fruit spawn rate and bomb frequency |
69
+ | <img src="https://cdn.worklage.com/playtura/screenshots/popit-fidget.png" alt="Popit Fidget" width="120"/> | **🫧 Popit Fidget**<br/>Pop satisfying bubbles in this relaxing fidget toy simulation!<br/><br/>• Relaxing bubble popping experience<br/>• Satisfying sound effects and haptics<br/>• Rainbow gradient background<br/>• Different bubble patterns and colors |
70
+ | <img src="https://cdn.worklage.com/playtura/screenshots/flappy-bird.png" alt="Flappy Bird" width="120"/> | **🐦 Flappy Bird**<br/>Tap to flap and navigate through pipes - classic arcade challenge!<br/><br/>• Classic tap-to-flap mechanics<br/>• Gravity physics and collision detection<br/>• Navigate through pipe gaps<br/>• Difficulty affects pipe gap size and speed |
71
+ | <img src="https://cdn.worklage.com/playtura/screenshots/colors-sort.png" alt="Colors Sort" width="120"/> | **🎨 Colors Sort**<br/>Sort colored liquids into matching tubes - challenging logic puzzle!<br/><br/>• Pour liquids between tubes<br/>• Match all colors in separate tubes<br/>• Satisfying pour animations<br/>• Difficulty affects number of tubes and colors |
72
+ | <img src="https://cdn.worklage.com/playtura/screenshots/dino-jump.png" alt="Dino Jump" width="120"/> | **🦖 Dino Jump**<br/>Jump over obstacles and collect stars for lives - endless runner!<br/><br/>• Chrome dino-inspired endless runner<br/>• Tap to jump over obstacles<br/>• Collect stars for extra lives (max 3)<br/>• Difficulty affects obstacle spawn rate and speed |
73
+ | <img src="https://cdn.worklage.com/playtura/screenshots/candy-crush.png" alt="Candy Crush" width="120"/> | **🍬 Candy Crush**<br/>Match colorful candies in rows to score points - sweet puzzle fun!<br/><br/>• Match-3 puzzle mechanics<br/>• Create special candies with 4+ matches<br/>• Cascading combos and animations<br/>• Difficulty affects level objectives |
74
+ | <img src="https://cdn.worklage.com/playtura/screenshots/whack-a-mole.png" alt="Whack A Mole" width="120"/> | **🐱 Whack A Mole**<br/>Whack cute cats popping from holes - test your lightning reflexes!<br/><br/>• Fast-paced whacking action<br/>• Grid sizes: easy/medium 3x3, hard 4x4<br/>• Cat spawn intervals vary by difficulty<br/>• Difficulty affects speed and grid size |
75
+ | <img src="https://cdn.worklage.com/playtura/screenshots/balloon-blaster.png" alt="Balloon Blaster" width="120"/> | **🎈 Balloon Blaster**<br/>Pop rising balloons before they escape - quick taps and swipes win!<br/><br/>• Swipe or tap to pop balloons<br/>• Balloons rise from bottom to top<br/>• Particle effects on pop<br/>• Difficulty affects balloon speed and spawn rate |
76
+ | <img src="https://cdn.worklage.com/playtura/screenshots/space-fighter.png" alt="Space Fighter" width="120"/> | **🚀 Space Fighter**<br/>Pilot your spaceship through asteroid fields - endless space survival!<br/><br/>• Drag controls for spacecraft movement<br/>• Dodge asteroids in endless space<br/>• 1-second collision immunity<br/>• Difficulty affects asteroid speed and frequency |
77
+ | <img src="https://cdn.worklage.com/playtura/screenshots/bike-racing.png" alt="Bike Racing" width="120"/> | **🏍️ Bike Racing**<br/>Race on bikes through traffic - faster and more challenging!<br/><br/>• High-speed bike racing<br/>• Lane-based traffic dodging<br/>• Faster than car racing<br/>• Difficulty affects traffic and speed |
78
+ | <img src="https://cdn.worklage.com/playtura/screenshots/maze-runner.png" alt="Maze Runner" width="120"/> | **🧩 Maze Runner**<br/>Navigate ball through procedural mazes - tilt and physics controls!<br/><br/>• Procedurally generated mazes<br/>• Tilt-based physics controls<br/>• Grid sizes: easy 8x8, medium 10x10, hard 12x12<br/>• Difficulty affects maze complexity |
79
+ | <img src="https://cdn.worklage.com/playtura/screenshots/sliding-numbers.png" alt="Sliding Numbers" width="120"/> | **🔢 Sliding Numbers**<br/>Slide numbered tiles to solve puzzles - classic sliding puzzle game!<br/><br/>• Classic 15-puzzle mechanics<br/>• Grid sizes: easy 3x3, medium 4x4, hard 5x5<br/>• Timer challenge mode<br/>• Smooth tile sliding animations |
80
+ | <img src="https://cdn.worklage.com/playtura/screenshots/game-2048.png" alt="2048" width="120"/> | **🎮 2048**<br/>Merge matching tiles to reach 2048 and beyond - addictive puzzle!<br/><br/>• Swipe to merge matching tiles<br/>• Reach 2048 tile to win<br/>• Continue for higher scores<br/>• Difficulty affects starting values |
81
+ | <img src="https://cdn.worklage.com/playtura/screenshots/fruit-merger.png" alt="Fruit Merger" width="120"/> | **🍉 Fruit Merger**<br/>Drop and merge fruits to create bigger ones - reach the watermelon!<br/><br/>• Physics-based fruit dropping<br/>• Merge fruits to evolve them<br/>• Reach watermelon for victory<br/>• Combo system for multiple merges |
82
+ | <img src="https://cdn.worklage.com/playtura/screenshots/snake.png" alt="Snake & Eggs" width="120"/> | **🐍 Snake & Eggs**<br/>Eat eggs to grow longer and avoid walls - classic snake gameplay!<br/><br/>• Classic snake mechanics<br/>• Swipe or tap to change direction<br/>• Grow by eating eggs<br/>• Difficulty affects snake speed |
83
+ | <img src="https://cdn.worklage.com/playtura/screenshots/perfect-circle.png" alt="Perfect Circle" width="120"/> | **⭕ Perfect Circle**<br/>Draw the most perfect circle you can - test your precision!<br/><br/>• Draw circles with your finger<br/>• Precision scoring system<br/>• Challenge your drawing skills<br/>• Difficulty affects scoring strictness |
28
84
 
29
85
  ## 📦 Installation
30
86
 
@@ -50,7 +106,7 @@ Follow the installation guides for each peer dependency:
50
106
  - **[react-native-reanimated](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started)** - Animations
51
107
  - **[react-native-gesture-handler](https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation)** - Gestures
52
108
  - **[expo-speech](https://docs.expo.dev/versions/latest/sdk/speech/)** - Sounds
53
- - **[expo-haptics](https://docs.expo.dev/versions/latest/sdk/haptics/)** - Haptic
109
+ - **[expo-haptics](https://docs.expo.dev/versions/latest/sdk/haptics/)** - Haptics
54
110
 
55
111
  ## 🚀 Usage
56
112
 
@@ -61,14 +117,14 @@ For basic usage without settings persistence:
61
117
  ```tsx
62
118
  import React, { useState } from 'react';
63
119
  import { View } from 'react-native';
64
- import { DEFAULT_GAME_SETTINGS, BalloonBlaster } from 'react-native-games';
120
+ import { DEFAULT_GAME_SETTINGS, FruitNinja } from 'react-native-games';
65
121
 
66
122
  export default function GameScreen() {
67
123
  const [settings, setSettings] = useState(DEFAULT_GAME_SETTINGS);
68
124
 
69
125
  return (
70
126
  <View style={{ flex: 1 }}>
71
- <BalloonBlaster settings={settings} onSettingsChange={setSettings} />
127
+ <FruitNinja settings={settings} onSettingsChange={setSettings} />
72
128
  </View>
73
129
  );
74
130
  }
@@ -126,20 +182,25 @@ All games use the same props interface:
126
182
  ```tsx
127
183
  // Import any game you want
128
184
  import {
185
+ BlockBlast,
186
+ BubbleShooter,
187
+ CarRacing,
129
188
  FruitNinja,
130
- CandyCrush,
189
+ PopitFidget,
131
190
  FlappyBird,
132
191
  ColorsSort,
133
192
  DinoJump,
134
- PopitFidget,
193
+ CandyCrush,
135
194
  WhackAMole,
136
195
  BalloonBlaster,
137
196
  SpaceFighter,
197
+ BikeRacing,
138
198
  MazeRunner,
139
199
  SlidingNumbers,
140
200
  Game2048,
141
201
  FruitMerger,
142
- Snake
202
+ Snake,
203
+ PerfectCircle
143
204
  } from 'react-native-games';
144
205
 
145
206
  // All games accept the same props:
@@ -203,21 +264,26 @@ import {
203
264
  type GameDefinition,
204
265
  type GameComponent,
205
266
 
206
- // All Game Components
267
+ // All Game Components (19 total)
268
+ BlockBlast,
269
+ BubbleShooter,
270
+ CarRacing,
207
271
  FruitNinja,
208
- CandyCrush,
272
+ PopitFidget,
209
273
  FlappyBird,
210
274
  ColorsSort,
211
275
  DinoJump,
212
- PopitFidget,
276
+ CandyCrush,
213
277
  WhackAMole,
214
278
  BalloonBlaster,
215
279
  SpaceFighter,
280
+ BikeRacing,
216
281
  MazeRunner,
217
282
  SlidingNumbers,
218
283
  Game2048,
219
284
  FruitMerger,
220
- Snake
285
+ Snake,
286
+ PerfectCircle
221
287
  } from 'react-native-games';
222
288
  ```
223
289
 
@@ -226,20 +292,25 @@ import {
226
292
  All available game identifiers:
227
293
 
228
294
  ```tsx
295
+ GAME_IDS.BLOCK_BLAST // 'block-blast'
296
+ GAME_IDS.BUBBLE_SHOOTER // 'bubble-shooter'
297
+ GAME_IDS.CAR_RACING // 'car-racing'
229
298
  GAME_IDS.FRUIT_NINJA // 'fruit-ninja'
230
- GAME_IDS.CANDY_CRUSH // 'candy-crush'
299
+ GAME_IDS.POPIT_FIDGET // 'popit-fidget'
231
300
  GAME_IDS.FLAPPY_BIRD // 'flappy-bird'
232
301
  GAME_IDS.COLORS_SORT // 'colors-sort'
233
302
  GAME_IDS.DINO_JUMP // 'dino-jump'
234
- GAME_IDS.POPIT_FIDGET // 'popit-fidget'
303
+ GAME_IDS.CANDY_CRUSH // 'candy-crush'
235
304
  GAME_IDS.WHACK_A_MOLE // 'whack-a-mole'
236
305
  GAME_IDS.BALLOON_BLASTER // 'balloon-blaster'
237
306
  GAME_IDS.SPACE_FIGHTER // 'space-fighter'
307
+ GAME_IDS.BIKE_RACING // 'bike-racing'
238
308
  GAME_IDS.MAZE_RUNNER // 'maze-runner'
239
309
  GAME_IDS.SLIDING_NUMBERS // 'sliding-numbers'
240
310
  GAME_IDS.GAME_2048 // 'game-2048'
241
311
  GAME_IDS.FRUIT_MERGER // 'fruit-merger'
242
312
  GAME_IDS.SNAKE // 'snake'
313
+ GAME_IDS.PERFECT_CIRCLE // 'perfect-circle'
243
314
  ```
244
315
 
245
316
  ### DEFAULT_GAME_SETTINGS
@@ -1,167 +1 @@
1
- "use strict";
2
-
3
- import React, { useEffect, useMemo, useCallback } from 'react';
4
- import { View, StyleSheet } from 'react-native';
5
- import { GestureHandlerRootView } from 'react-native-gesture-handler';
6
- import { useBalloonBlasterStore } from "./BalloonBlasterStore.js";
7
- import { createBalloonBlasterService } from "./BalloonBlasterService.js";
8
- import { ScoreBoard, GameArea, GameBackground } from "./components/index.js";
9
- import { GameControlButton, GameOverModal, useAnimationTrackers, useGameErrorHandler, GameErrorType } from "../../helpers/index.js";
10
- import { GameSettingsModal } from "../../helpers/index.js";
11
- import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/UtilsService.js";
12
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- export const BalloonBlaster = /*#__PURE__*/React.memo(({
14
- settings,
15
- onSettingsChange
16
- }) => {
17
- // Read UI-critical state independently to minimize re-renders
18
- const isPlaying = useBalloonBlasterStore(state => state.isPlaying);
19
- const gameOver = useBalloonBlasterStore(state => state.gameOver);
20
- const score = useBalloonBlasterStore(state => state.score);
21
-
22
- // Get store actions independently (these don't cause re-renders)
23
- const startGame = useBalloonBlasterStore(state => state.startGame);
24
- const stopGame = useBalloonBlasterStore(state => state.stopGame);
25
- const resetGame = useBalloonBlasterStore(state => state.resetGame);
26
- const decrementTime = useBalloonBlasterStore(state => state.decrementTime);
27
- const addBalloon = useBalloonBlasterStore(state => state.addBalloon);
28
- const removeBalloon = useBalloonBlasterStore(state => state.removeBalloon);
29
- const updateBalloon = useBalloonBlasterStore(state => state.updateBalloon);
30
-
31
- // Use shared animation tracking utility
32
- const {
33
- balloonAnimations,
34
- particleAnimations
35
- } = useAnimationTrackers(['balloonAnimations', 'particleAnimations']);
36
-
37
- // Error handling for the game
38
- const {
39
- wrapFunction,
40
- safeExecute
41
- } = useGameErrorHandler(GAME_IDS.BALLOON_BLASTER);
42
-
43
- // Memoized balloon spawning callback
44
- const spawnBalloon = useCallback(balloon => {
45
- addBalloon(balloon);
46
- }, [addBalloon]);
47
-
48
- // Memoized game control functions with error handling
49
- const handleResetGame = useCallback(wrapFunction(() => {
50
- resetGame();
51
- }, GameErrorType.UNKNOWN_ERROR), [wrapFunction, resetGame]);
52
-
53
- // Memoized game service creation to prevent recreation
54
- const gameService = useMemo(() => {
55
- return safeExecute(() => createBalloonBlasterService(balloonAnimations, particleAnimations), createBalloonBlasterService(balloonAnimations, particleAnimations),
56
- // Fallback to direct creation
57
- GameErrorType.INITIALIZATION_ERROR);
58
- }, [balloonAnimations, particleAnimations, safeExecute]);
59
- const handleStartGame = useCallback(wrapFunction(() => {
60
- // AGGRESSIVE cleanup - force clear everything
61
- resetGame();
62
-
63
- // Force clear any existing balloons immediately
64
- const currentBalloons = useBalloonBlasterStore.getState().balloons;
65
- currentBalloons.forEach(balloon => removeBalloon(balloon.id));
66
-
67
- // Clean up service
68
- if (gameService) {
69
- gameService.cleanup();
70
- gameService.resetAnimations();
71
- }
72
-
73
- // Minimal delay to ensure complete cleanup
74
- setTimeout(() => {
75
- startGame(); // Store uses fixed 60s duration internally
76
- if (gameService) {
77
- gameService.startGameTimer(decrementTime);
78
- gameService.startBalloonSpawning(spawnBalloon, 600); // Even faster spawn interval
79
- gameService.startPhysicsLoop(updateBalloon, removeBalloon, () => useBalloonBlasterStore.getState().balloons);
80
- }
81
- }, 50); // Minimal delay for immediate game start
82
- }, GameErrorType.INITIALIZATION_ERROR), [wrapFunction, resetGame, removeBalloon, gameService, startGame, decrementTime, spawnBalloon, updateBalloon]);
83
- const handleStopGame = useCallback(wrapFunction(() => {
84
- stopGame();
85
- if (gameService) {
86
- gameService.cleanup();
87
- gameService.resetAnimations();
88
- }
89
- }, GameErrorType.UNKNOWN_ERROR), [wrapFunction, stopGame, gameService]);
90
-
91
- // Initialize game settings on mount
92
- useEffect(() => {
93
- return () => {
94
- handleResetGame();
95
- };
96
- }, [handleResetGame]);
97
-
98
- // Auto-stop balloon spawning when game over state changes
99
- useEffect(() => {
100
- if (gameOver && gameService) {
101
- // Stop all timers and physics when game over
102
- gameService.cleanup();
103
- }
104
- }, [gameOver, gameService]);
105
-
106
- // Memoized GameControlButton props to prevent unnecessary re-renders
107
- const gameControlButtonProps = useMemo(() => ({
108
- isPlaying,
109
- gameOver,
110
- onStartGame: handleStartGame,
111
- onStopGame: handleStopGame,
112
- startButtonText: "START POPPING",
113
- stopButtonText: "STOP GAME",
114
- startButtonSubtext: "Pop balloons to score!",
115
- stopButtonSubtext: "End current game",
116
- startButtonColor: "#3b82f6",
117
- stopButtonColor: "#dc2626",
118
- startButtonBorderColor: "#60a5fa",
119
- stopButtonBorderColor: "#f87171"
120
- }), [isPlaying, gameOver, handleStartGame, handleStopGame]);
121
-
122
- // Memoized GameOverModal props to prevent unnecessary re-renders
123
- const gameOverModalProps = useMemo(() => ({
124
- isVisible: gameOver,
125
- score,
126
- onPlayAgain: handleResetGame,
127
- buttonText: "Pop Again!",
128
- primaryColor: "rgba(59, 130, 246, 0.8)",
129
- // Blue theme for Balloon Blaster
130
- borderColor: "rgba(59, 130, 246, 0.9)",
131
- buttonColor: "#10b981",
132
- buttonBorderColor: "#34d399"
133
- }), [gameOver, score, handleResetGame]);
134
-
135
- // Memoized GameSettingsModal props to prevent unnecessary re-renders
136
- const gameSettingsModalProps = useMemo(() => ({
137
- gameId: GAME_IDS.BALLOON_BLASTER,
138
- settings: settings || DEFAULT_GAME_SETTINGS,
139
- onSettingsChange
140
- }), [settings, onSettingsChange]);
141
-
142
- // Get offset from settings
143
- const offset = settings?.offset ?? 0;
144
- return /*#__PURE__*/_jsx(View, {
145
- style: styles.container,
146
- children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
147
- children: /*#__PURE__*/_jsxs(GameBackground, {
148
- offset: offset,
149
- children: [/*#__PURE__*/_jsx(GameArea, {}), /*#__PURE__*/_jsx(ScoreBoard, {
150
- offset: offset
151
- }), /*#__PURE__*/_jsx(GameControlButton, {
152
- ...gameControlButtonProps
153
- }), /*#__PURE__*/_jsx(GameOverModal, {
154
- ...gameOverModalProps
155
- }), /*#__PURE__*/_jsx(GameSettingsModal, {
156
- ...gameSettingsModalProps
157
- })]
158
- })
159
- })
160
- });
161
- });
162
- const styles = StyleSheet.create({
163
- container: {
164
- flex: 1
165
- }
166
- });
167
- //# sourceMappingURL=BalloonBlaster.js.map
1
+ "use strict";import React,{useEffect,useMemo,useCallback}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useBalloonBlasterStore}from "./BalloonBlasterStore.js";import{createBalloonBlasterService}from "./BalloonBlasterService.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 BalloonBlaster = React.memo(({settings,onSettingsChange,onEndGame})=>{const isPlaying = useBalloonBlasterStore(state => state.isPlaying);const gameOver = useBalloonBlasterStore(state => state.gameOver);const score = useBalloonBlasterStore(state => state.score);const gameReportedRef = React.useRef(false);const reportGameEnd = React.useCallback(status =>{if(onEndGame && !gameReportedRef.current){const currentState = useBalloonBlasterStore.getState();onEndGame({status,score:currentState.score.toString()});gameReportedRef.current = true;}},[onEndGame]);const startGame = useBalloonBlasterStore(state => state.startGame);const stopGame = useBalloonBlasterStore(state => state.stopGame);const resetGame = useBalloonBlasterStore(state => state.resetGame);const decrementTime = useBalloonBlasterStore(state => state.decrementTime);const addBalloon = useBalloonBlasterStore(state => state.addBalloon);const removeBalloon = useBalloonBlasterStore(state => state.removeBalloon);const updateBalloon = useBalloonBlasterStore(state => state.updateBalloon);const{balloonAnimations,particleAnimations}= useAnimationTrackers(['balloonAnimations','particleAnimations']);const{wrapFunction,safeExecute}= useGameErrorHandler(GAME_IDS.BALLOON_BLASTER);const spawnBalloon = useCallback(balloon =>{addBalloon(balloon);},[addBalloon]);const handleResetGame = useCallback(wrapFunction(()=>{resetGame();},GameErrorType.UNKNOWN_ERROR),[wrapFunction,resetGame]);const gameService = useMemo(()=>{return safeExecute(()=> createBalloonBlasterService(balloonAnimations,particleAnimations),createBalloonBlasterService(balloonAnimations,particleAnimations),GameErrorType.INITIALIZATION_ERROR);},[balloonAnimations,particleAnimations,safeExecute]);const handleStartGame = useCallback(wrapFunction(()=>{gameReportedRef.current = false;resetGame();const currentBalloons = useBalloonBlasterStore.getState().balloons;currentBalloons.forEach(balloon => removeBalloon(balloon.id));if(gameService){gameService.cleanup();gameService.resetAnimations();}setTimeout(()=>{startGame();if(gameService){gameService.startGameTimer(decrementTime);gameService.startBalloonSpawning(spawnBalloon,600);gameService.startPhysicsLoop(updateBalloon,removeBalloon,()=> useBalloonBlasterStore.getState().balloons);}},50);},GameErrorType.INITIALIZATION_ERROR),[wrapFunction,resetGame,removeBalloon,gameService,startGame,decrementTime,spawnBalloon,updateBalloon]);const handleStopGame = useCallback(wrapFunction(()=>{reportGameEnd('cancel');stopGame();if(gameService){gameService.cleanup();gameService.resetAnimations();}},GameErrorType.UNKNOWN_ERROR),[wrapFunction,stopGame,gameService,reportGameEnd]);useEffect(()=>{return()=>{handleResetGame();};},[handleResetGame]);useEffect(()=>{if(gameOver && !gameReportedRef.current){const currentState = useBalloonBlasterStore.getState();const status = currentState.lives <= 0 ? 'lose':'win';reportGameEnd(status);}if(!gameOver){gameReportedRef.current = false;}},[gameOver,reportGameEnd]);useEffect(()=>{if(gameOver && gameService){gameService.cleanup();}},[gameOver,gameService]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START POPPING",stopButtonText:"STOP GAME",startButtonSubtext:"Pop balloons to score!",stopButtonSubtext:"End current game",startButtonColor:"#3b82f6",stopButtonColor:"#dc2626",startButtonBorderColor:"#60a5fa",stopButtonBorderColor:"#f87171"}),[isPlaying,gameOver,handleStartGame,handleStopGame]);const gameOverModalProps = useMemo(()=>({isVisible:gameOver,score,onPlayAgain:handleResetGame,buttonText:"Pop Again!",primaryColor:"rgba(59,130,246,0.5)",borderColor:"rgba(59,130,246,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#3b82f6"}),[gameOver,score,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.BALLOON_BLASTER,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange}),[settings,onSettingsChange]);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,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})});});const styles = StyleSheet.create({container:{flex:1}});
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useMemo","useCallback","View","StyleSheet","GestureHandlerRootView","useBalloonBlasterStore","createBalloonBlasterService","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","useAnimationTrackers","useGameErrorHandler","GameErrorType","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","BalloonBlaster","memo","settings","onSettingsChange","isPlaying","state","gameOver","score","startGame","stopGame","resetGame","decrementTime","addBalloon","removeBalloon","updateBalloon","balloonAnimations","particleAnimations","wrapFunction","safeExecute","BALLOON_BLASTER","spawnBalloon","balloon","handleResetGame","UNKNOWN_ERROR","gameService","INITIALIZATION_ERROR","handleStartGame","currentBalloons","getState","balloons","forEach","id","cleanup","resetAnimations","setTimeout","startGameTimer","startBalloonSpawning","startPhysicsLoop","handleStopGame","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","gameSettingsModalProps","gameId","offset","style","styles","container","children","create","flex"],"sourceRoot":"../../../../src","sources":["games/balloon-blaster/BalloonBlaster.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useMemo","useCallback","View","StyleSheet","GestureHandlerRootView","useBalloonBlasterStore","createBalloonBlasterService","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","useAnimationTrackers","useGameErrorHandler","GameErrorType","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","BalloonBlaster","memo","settings","onSettingsChange","onEndGame","isPlaying","state","gameOver","score","gameReportedRef","useRef","reportGameEnd","status","current","currentState","getState","toString","startGame","stopGame","resetGame","decrementTime","addBalloon","removeBalloon","updateBalloon","balloonAnimations","particleAnimations","wrapFunction","safeExecute","BALLOON_BLASTER","spawnBalloon","balloon","handleResetGame","UNKNOWN_ERROR","gameService","INITIALIZATION_ERROR","handleStartGame","currentBalloons","balloons","forEach","id","cleanup","resetAnimations","setTimeout","startGameTimer","startBalloonSpawning","startPhysicsLoop","handleStopGame","lives","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","gameSettingsModalProps","gameId","offset","style","styles","container","children","create","flex"],"sourceRoot":"../../../../src","sources":["games/balloon-blaster/BalloonBlaster.tsx"],"mappings":"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","ignoreList":[]}