react-native-games 0.8.0 → 1.1.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 (334) hide show
  1. package/README.md +135 -176
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +9 -14
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +1 -1
  5. package/lib/module/games/balloon-blaster/components/GameArea.js +1 -1
  6. package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
  7. package/lib/module/games/balloon-blaster/components/GameBackground.js +24 -17
  8. package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -1
  9. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +47 -47
  10. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  11. package/lib/module/games/candy-crush/CandyCrush.js +16 -6
  12. package/lib/module/games/candy-crush/CandyCrush.js.map +1 -1
  13. package/lib/module/games/candy-crush/CandyCrushStore.js +4 -6
  14. package/lib/module/games/candy-crush/CandyCrushStore.js.map +1 -1
  15. package/lib/module/games/candy-crush/components/ScoreBoard.js +32 -65
  16. package/lib/module/games/candy-crush/components/ScoreBoard.js.map +1 -1
  17. package/lib/module/games/{color-sort/ColorSort.js → colors-sort/ColorsSort.js} +37 -24
  18. package/lib/module/games/colors-sort/ColorsSort.js.map +1 -0
  19. package/lib/module/games/{color-sort/ColorSortConstants.js → colors-sort/ColorsSortConstants.js} +11 -7
  20. package/lib/module/games/colors-sort/ColorsSortConstants.js.map +1 -0
  21. package/lib/module/games/{color-sort/ColorSortService.js → colors-sort/ColorsSortService.js} +1 -1
  22. package/lib/module/games/colors-sort/ColorsSortService.js.map +1 -0
  23. package/lib/module/games/{color-sort/ColorSortStore.js → colors-sort/ColorsSortStore.js} +20 -21
  24. package/lib/module/games/colors-sort/ColorsSortStore.js.map +1 -0
  25. package/lib/module/games/{color-sort → colors-sort}/components/ColorContainer.js +4 -4
  26. package/lib/module/games/colors-sort/components/ColorContainer.js.map +1 -0
  27. package/lib/module/games/{color-sort → colors-sort}/components/GameBackground.js +1 -1
  28. package/lib/module/games/colors-sort/components/GameBackground.js.map +1 -0
  29. package/lib/module/games/{color-sort → colors-sort}/components/ScoreBoard.js +14 -22
  30. package/lib/module/games/colors-sort/components/ScoreBoard.js.map +1 -0
  31. package/lib/module/games/colors-sort/components/index.js.map +1 -0
  32. package/lib/module/games/dino-jump/DinoJump.js +23 -23
  33. package/lib/module/games/dino-jump/DinoJump.js.map +1 -1
  34. package/lib/module/games/dino-jump/DinoJumpConstants.js +16 -6
  35. package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -1
  36. package/lib/module/games/dino-jump/DinoJumpService.js +14 -12
  37. package/lib/module/games/dino-jump/DinoJumpService.js.map +1 -1
  38. package/lib/module/games/dino-jump/DinoJumpStore.js +14 -20
  39. package/lib/module/games/dino-jump/DinoJumpStore.js.map +1 -1
  40. package/lib/module/games/dino-jump/components/DinoSprite.js +15 -6
  41. package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -1
  42. package/lib/module/games/dino-jump/components/GameBackground.js +65 -42
  43. package/lib/module/games/dino-jump/components/GameBackground.js.map +1 -1
  44. package/lib/module/games/dino-jump/components/ScoreBoard.js +48 -50
  45. package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -1
  46. package/lib/module/games/flappy-bird/FlappyBird.js +9 -14
  47. package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -1
  48. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -1
  49. package/lib/module/games/flappy-bird/FlappyBirdStore.js +53 -29
  50. package/lib/module/games/flappy-bird/FlappyBirdStore.js.map +1 -1
  51. package/lib/module/games/flappy-bird/components/GameArea.js +3 -2
  52. package/lib/module/games/flappy-bird/components/GameArea.js.map +1 -1
  53. package/lib/module/games/flappy-bird/components/GameBackground.js +10 -43
  54. package/lib/module/games/flappy-bird/components/GameBackground.js.map +1 -1
  55. package/lib/module/games/flappy-bird/components/Pipes.js +65 -68
  56. package/lib/module/games/flappy-bird/components/Pipes.js.map +1 -1
  57. package/lib/module/games/flappy-bird/components/ScoreBoard.js +23 -22
  58. package/lib/module/games/flappy-bird/components/ScoreBoard.js.map +1 -1
  59. package/lib/module/games/fruit-merger/FruitMerger.js +13 -5
  60. package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -1
  61. package/lib/module/games/fruit-merger/FruitMergerConstants.js +4 -4
  62. package/lib/module/games/fruit-merger/FruitMergerStore.js +5 -8
  63. package/lib/module/games/fruit-merger/FruitMergerStore.js.map +1 -1
  64. package/lib/module/games/fruit-merger/components/GameArea.js +5 -25
  65. package/lib/module/games/fruit-merger/components/GameArea.js.map +1 -1
  66. package/lib/module/games/fruit-merger/components/GameBackground.js +40 -19
  67. package/lib/module/games/fruit-merger/components/GameBackground.js.map +1 -1
  68. package/lib/module/games/fruit-merger/components/ScoreBoard.js +9 -17
  69. package/lib/module/games/fruit-merger/components/ScoreBoard.js.map +1 -1
  70. package/lib/module/games/fruit-ninja/FruitNinja.js +9 -14
  71. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  72. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +1 -1
  73. package/lib/module/games/fruit-ninja/components/GameArea.js +1 -1
  74. package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -1
  75. package/lib/module/games/fruit-ninja/components/GameBackground.js +70 -45
  76. package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -1
  77. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +47 -46
  78. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
  79. package/lib/module/games/game-2048/Game2048.js +81 -52
  80. package/lib/module/games/game-2048/Game2048.js.map +1 -1
  81. package/lib/module/games/game-2048/Game2048Constants.js +18 -18
  82. package/lib/module/games/game-2048/Game2048Constants.js.map +1 -1
  83. package/lib/module/games/game-2048/Game2048Store.js +10 -12
  84. package/lib/module/games/game-2048/Game2048Store.js.map +1 -1
  85. package/lib/module/games/game-2048/components/ScoreBoard.js +25 -43
  86. package/lib/module/games/game-2048/components/ScoreBoard.js.map +1 -1
  87. package/lib/module/games/maze-runner/MazeRunner.js +22 -14
  88. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  89. package/lib/module/games/maze-runner/MazeRunnerService.js +19 -17
  90. package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -1
  91. package/lib/module/games/maze-runner/components/ScoreBoard.js +32 -42
  92. package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
  93. package/lib/module/games/popit-fidget/PopitFidget.js +27 -38
  94. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  95. package/lib/module/games/popit-fidget/PopitFidgetStore.js +6 -44
  96. package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -1
  97. package/lib/module/games/popit-fidget/components/ScoreBoard.js +31 -45
  98. package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -1
  99. package/lib/module/games/sliding-numbers/SlidingNumbers.js +18 -20
  100. package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -1
  101. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +4 -5
  102. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js.map +1 -1
  103. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +26 -28
  104. package/lib/module/games/sliding-numbers/components/ScoreBoard.js.map +1 -1
  105. package/lib/module/games/snake/Snake.js +23 -26
  106. package/lib/module/games/snake/Snake.js.map +1 -1
  107. package/lib/module/games/snake/SnakeConstants.js +2 -2
  108. package/lib/module/games/snake/SnakeStore.js +4 -6
  109. package/lib/module/games/snake/SnakeStore.js.map +1 -1
  110. package/lib/module/games/snake/components/ScoreBoard.js +10 -16
  111. package/lib/module/games/snake/components/ScoreBoard.js.map +1 -1
  112. package/lib/module/games/space-fighter/SpaceFighter.js +16 -17
  113. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  114. package/lib/module/games/space-fighter/SpaceFighterService.js +7 -6
  115. package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -1
  116. package/lib/module/games/space-fighter/SpaceFighterStore.js +25 -11
  117. package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -1
  118. package/lib/module/games/space-fighter/components/GameArea.js +1 -7
  119. package/lib/module/games/space-fighter/components/GameArea.js.map +1 -1
  120. package/lib/module/games/space-fighter/components/ScoreBoard.js +47 -48
  121. package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -1
  122. package/lib/module/games/whack-a-mole/WhackAMole.js +12 -5
  123. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  124. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +1 -1
  125. package/lib/module/games/whack-a-mole/components/GameBackground.js +37 -30
  126. package/lib/module/games/whack-a-mole/components/GameBackground.js.map +1 -1
  127. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +32 -38
  128. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
  129. package/lib/module/helpers/AnimationFrame.js.map +1 -0
  130. package/lib/module/helpers/AnimationTracker.js.map +1 -0
  131. package/lib/module/helpers/ErrorHandler.js.map +1 -0
  132. package/lib/module/helpers/GameControlButton.js.map +1 -0
  133. package/lib/module/helpers/GameOverModal.js.map +1 -0
  134. package/lib/module/{shared/helpers → helpers}/GameSettingsModal.js +2 -2
  135. package/lib/module/helpers/GameSettingsModal.js.map +1 -0
  136. package/lib/module/helpers/ParticleBlast.js.map +1 -0
  137. package/lib/module/helpers/ScoreBoardContainer.js +34 -0
  138. package/lib/module/helpers/ScoreBoardContainer.js.map +1 -0
  139. package/lib/module/{shared/helpers → helpers}/index.js +1 -1
  140. package/lib/module/helpers/index.js.map +1 -0
  141. package/lib/module/index.js +2 -1
  142. package/lib/module/index.js.map +1 -1
  143. package/lib/module/services/GamesConstants.js +49 -10
  144. package/lib/module/services/GamesConstants.js.map +1 -1
  145. package/lib/module/services/GamesService.js +108 -82
  146. package/lib/module/services/GamesService.js.map +1 -1
  147. package/lib/module/services/SoundsService.js +1 -1
  148. package/lib/module/services/SoundsService.js.map +1 -1
  149. package/lib/module/services/UtilsService.js +32 -0
  150. package/lib/module/services/UtilsService.js.map +1 -0
  151. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +1 -1
  152. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  153. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +1 -0
  154. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -1
  155. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +5 -1
  156. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  157. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +1 -1
  158. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -1
  159. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts.map +1 -1
  160. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +4 -1
  161. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts.map +1 -1
  162. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts +4 -0
  163. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts.map +1 -0
  164. package/lib/typescript/src/games/{color-sort/ColorSortConstants.d.ts → colors-sort/ColorsSortConstants.d.ts} +8 -6
  165. package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts.map +1 -0
  166. package/lib/typescript/src/games/{color-sort/ColorSortService.d.ts → colors-sort/ColorsSortService.d.ts} +1 -1
  167. package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts.map +1 -0
  168. package/lib/typescript/src/games/{color-sort/ColorSortStore.d.ts → colors-sort/ColorsSortStore.d.ts} +6 -6
  169. package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts.map +1 -0
  170. package/lib/typescript/src/games/{color-sort → colors-sort}/components/ColorContainer.d.ts +1 -1
  171. package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts.map +1 -0
  172. package/lib/typescript/src/games/colors-sort/components/GameBackground.d.ts.map +1 -0
  173. package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +7 -0
  174. package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts.map +1 -0
  175. package/lib/typescript/src/games/colors-sort/components/index.d.ts.map +1 -0
  176. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +1 -1
  177. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -1
  178. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +6 -4
  179. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts.map +1 -1
  180. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +4 -4
  181. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts.map +1 -1
  182. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +3 -3
  183. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts.map +1 -1
  184. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -1
  185. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +1 -1
  186. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +1 -0
  187. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts.map +1 -1
  188. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +5 -1
  189. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts.map +1 -1
  190. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +1 -1
  191. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -1
  192. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +1 -1
  193. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts.map +1 -1
  194. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +1 -1
  195. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +1 -0
  196. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts.map +1 -1
  197. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +1 -0
  198. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts.map +1 -1
  199. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +5 -1
  200. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts.map +1 -1
  201. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +1 -1
  202. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -1
  203. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +1 -1
  204. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts.map +1 -1
  205. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +1 -1
  206. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts.map +1 -1
  207. package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts +1 -0
  208. package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts.map +1 -1
  209. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +5 -1
  210. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts.map +1 -1
  211. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +1 -1
  212. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  213. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +1 -0
  214. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -1
  215. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +5 -1
  216. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
  217. package/lib/typescript/src/games/game-2048/Game2048.d.ts +1 -1
  218. package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -1
  219. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +3 -3
  220. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts.map +1 -1
  221. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +5 -1
  222. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts.map +1 -1
  223. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +1 -1
  224. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  225. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts +1 -0
  226. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -1
  227. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +1 -0
  228. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
  229. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +1 -1
  230. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  231. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +2 -5
  232. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -1
  233. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +2 -2
  234. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -1
  235. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +1 -1
  236. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -1
  237. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts.map +1 -1
  238. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +5 -1
  239. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts.map +1 -1
  240. package/lib/typescript/src/games/snake/Snake.d.ts +1 -1
  241. package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -1
  242. package/lib/typescript/src/games/snake/SnakeConstants.d.ts +2 -2
  243. package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -1
  244. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts +5 -1
  245. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -1
  246. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +1 -1
  247. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  248. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -1
  249. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts +2 -0
  250. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -1
  251. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -1
  252. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +5 -1
  253. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -1
  254. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +1 -1
  255. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  256. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +1 -0
  257. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts.map +1 -1
  258. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +1 -0
  259. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -1
  260. package/lib/typescript/src/helpers/AnimationFrame.d.ts.map +1 -0
  261. package/lib/typescript/src/helpers/AnimationTracker.d.ts.map +1 -0
  262. package/lib/typescript/src/helpers/ErrorHandler.d.ts.map +1 -0
  263. package/lib/typescript/src/helpers/GameControlButton.d.ts.map +1 -0
  264. package/lib/typescript/src/helpers/GameOverModal.d.ts.map +1 -0
  265. package/lib/typescript/src/{shared/helpers → helpers}/GameSettingsModal.d.ts +1 -1
  266. package/lib/typescript/src/helpers/GameSettingsModal.d.ts.map +1 -0
  267. package/lib/typescript/src/helpers/ParticleBlast.d.ts.map +1 -0
  268. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +9 -0
  269. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts.map +1 -0
  270. package/lib/typescript/src/{shared/helpers → helpers}/index.d.ts +2 -1
  271. package/lib/typescript/src/helpers/index.d.ts.map +1 -0
  272. package/lib/typescript/src/index.d.ts +2 -1
  273. package/lib/typescript/src/index.d.ts.map +1 -1
  274. package/lib/typescript/src/services/GamesConstants.d.ts +8 -2
  275. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  276. package/lib/typescript/src/services/GamesService.d.ts +3 -33
  277. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  278. package/lib/typescript/src/services/SoundsService.d.ts +1 -1
  279. package/lib/typescript/src/services/UtilsService.d.ts +38 -0
  280. package/lib/typescript/src/services/UtilsService.d.ts.map +1 -0
  281. package/package.json +1 -1
  282. package/lib/module/games/color-sort/ColorSort.js.map +0 -1
  283. package/lib/module/games/color-sort/ColorSortConstants.js.map +0 -1
  284. package/lib/module/games/color-sort/ColorSortService.js.map +0 -1
  285. package/lib/module/games/color-sort/ColorSortStore.js.map +0 -1
  286. package/lib/module/games/color-sort/components/ColorContainer.js.map +0 -1
  287. package/lib/module/games/color-sort/components/GameBackground.js.map +0 -1
  288. package/lib/module/games/color-sort/components/ScoreBoard.js.map +0 -1
  289. package/lib/module/games/color-sort/components/index.js.map +0 -1
  290. package/lib/module/shared/helpers/AnimationFrame.js.map +0 -1
  291. package/lib/module/shared/helpers/AnimationTracker.js.map +0 -1
  292. package/lib/module/shared/helpers/ErrorHandler.js.map +0 -1
  293. package/lib/module/shared/helpers/GameControlButton.js.map +0 -1
  294. package/lib/module/shared/helpers/GameOverModal.js.map +0 -1
  295. package/lib/module/shared/helpers/GameSettingsModal.js.map +0 -1
  296. package/lib/module/shared/helpers/ParticleBlast.js.map +0 -1
  297. package/lib/module/shared/helpers/ResponsiveScoreBoard.js +0 -81
  298. package/lib/module/shared/helpers/ResponsiveScoreBoard.js.map +0 -1
  299. package/lib/module/shared/helpers/index.js.map +0 -1
  300. package/lib/typescript/src/games/color-sort/ColorSort.d.ts +0 -4
  301. package/lib/typescript/src/games/color-sort/ColorSort.d.ts.map +0 -1
  302. package/lib/typescript/src/games/color-sort/ColorSortConstants.d.ts.map +0 -1
  303. package/lib/typescript/src/games/color-sort/ColorSortService.d.ts.map +0 -1
  304. package/lib/typescript/src/games/color-sort/ColorSortStore.d.ts.map +0 -1
  305. package/lib/typescript/src/games/color-sort/components/ColorContainer.d.ts.map +0 -1
  306. package/lib/typescript/src/games/color-sort/components/GameBackground.d.ts.map +0 -1
  307. package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts +0 -3
  308. package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts.map +0 -1
  309. package/lib/typescript/src/games/color-sort/components/index.d.ts.map +0 -1
  310. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +0 -1
  311. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +0 -1
  312. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +0 -1
  313. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +0 -1
  314. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +0 -1
  315. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +0 -1
  316. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +0 -1
  317. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts +0 -42
  318. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts.map +0 -1
  319. package/lib/typescript/src/shared/helpers/index.d.ts.map +0 -1
  320. /package/lib/module/games/{color-sort → colors-sort}/components/index.js +0 -0
  321. /package/lib/module/{shared/helpers → helpers}/AnimationFrame.js +0 -0
  322. /package/lib/module/{shared/helpers → helpers}/AnimationTracker.js +0 -0
  323. /package/lib/module/{shared/helpers → helpers}/ErrorHandler.js +0 -0
  324. /package/lib/module/{shared/helpers → helpers}/GameControlButton.js +0 -0
  325. /package/lib/module/{shared/helpers → helpers}/GameOverModal.js +0 -0
  326. /package/lib/module/{shared/helpers → helpers}/ParticleBlast.js +0 -0
  327. /package/lib/typescript/src/games/{color-sort → colors-sort}/components/GameBackground.d.ts +0 -0
  328. /package/lib/typescript/src/games/{color-sort → colors-sort}/components/index.d.ts +0 -0
  329. /package/lib/typescript/src/{shared/helpers → helpers}/AnimationFrame.d.ts +0 -0
  330. /package/lib/typescript/src/{shared/helpers → helpers}/AnimationTracker.d.ts +0 -0
  331. /package/lib/typescript/src/{shared/helpers → helpers}/ErrorHandler.d.ts +0 -0
  332. /package/lib/typescript/src/{shared/helpers → helpers}/GameControlButton.d.ts +0 -0
  333. /package/lib/typescript/src/{shared/helpers → helpers}/GameOverModal.d.ts +0 -0
  334. /package/lib/typescript/src/{shared/helpers → helpers}/ParticleBlast.d.ts +0 -0
package/README.md CHANGED
@@ -1,25 +1,30 @@
1
1
  # 🎮 react-native-games
2
2
 
3
- **react-native-games** is a collection of free, 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.
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
+
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 |
4
9
 
5
10
  ## 🎯 Available Games
6
11
 
7
- | Game | Description | Features |
8
- |------------------------|-------------|----------|
9
- | **🐱 Whack A Mole** | Whack cute cats popping from holes - fast reflexes needed! | Multiple difficulty levels, customizable grid sizes, haptic feedback |
10
- | **🫧 Popit Fidget** | Pop satisfying bubbles in this relaxing fidget toy game | Relaxing gameplay, colorful bubbles, different shapes |
11
- | **🍎 Fruit Ninja** | Slice flying fruits with finger swipes - avoid the bombs! | Physics-based slicing, particle effects, combo system |
12
- | **🧩 Maze Runner** | Navigate ball through mazes using tilt and physics controls | Dynamic maze generation, physics controls, multiple difficulties |
13
- | **🚀 Space Fighter** | Pilot spaceship through asteroid fields in endless space | 3D-style graphics, progressive difficulty, space physics |
14
- | **🎈 Balloon Blaster** | Pop rising balloons before they escape - quick taps win! | Physics-based gameplay, particle effects, combo system |
15
- | **🦖 Dino Jump** | Jump over cacti and collect stars in endless desert run | Tap to jump, collect stars for extra lives, progressive difficulty |
16
- | **🐦 Flappy Bird** | Navigate bird through pipes with precise timing | Classic flappy mechanics, pixel-perfect collision, addictive gameplay |
17
- | **🐍 Snake Game** | Classic snake game with modern touch controls | Grow by eating food, avoid walls and yourself, smooth controls |
18
- | **🎮 2048 Game** | Merge tiles to reach 2048 and beyond | Swipe to merge, strategic gameplay, undo moves |
19
- | **🔢 Sliding Numbers** | Solve the classic 15-puzzle with numbers | Multiple grid sizes, timer challenge, smooth animations |
20
- | **🍬 Candy Crush** | Match colorful candies in this puzzle game | Match-3 mechanics, special candies, cascading combos |
21
- | **🎨 Color Sort** | Sort colored liquids into matching tubes | Logic puzzle, satisfying pour animations, increasing difficulty |
22
- | **🍉 Fruit Merger** | Merge fruits to create bigger ones | Physics-based merging, watermelon evolution, combo system |
12
+ | Screenshot | Game Details |
13
+ |------------|--------------|
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 |
23
28
 
24
29
  ## 📦 Installation
25
30
 
@@ -41,12 +46,11 @@ npm install @shopify/react-native-skia react-native-reanimated react-native-gest
41
46
 
42
47
  Follow the installation guides for each peer dependency:
43
48
 
44
- - **[@shopify/react-native-skia](https://shopify.github.io/react-native-skia/docs/getting-started/installation)** - Graphics rendering
49
+ - **[@shopify/react-native-skia](https://shopify.github.io/react-native-skia/docs/getting-started/installation)** - Graphics
45
50
  - **[react-native-reanimated](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started)** - Animations
46
51
  - **[react-native-gesture-handler](https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation)** - Gestures
47
- - **[react-native-worklets](https://github.com/margelo/react-native-worklets)** - Worklets for high-performance animations
48
- - **[expo-speech](https://docs.expo.dev/versions/latest/sdk/speech/)** - Text-to-speech functionality
49
- - **[expo-haptics](https://docs.expo.dev/versions/latest/sdk/haptics/)** - Haptic feedback
52
+ - **[expo-speech](https://docs.expo.dev/versions/latest/sdk/speech/)** - Sounds
53
+ - **[expo-haptics](https://docs.expo.dev/versions/latest/sdk/haptics/)** - Haptic
50
54
 
51
55
  ## 🚀 Usage
52
56
 
@@ -122,20 +126,20 @@ All games use the same props interface:
122
126
  ```tsx
123
127
  // Import any game you want
124
128
  import {
125
- WhackAMole,
126
- PopitFidget,
127
129
  FruitNinja,
128
- MazeRunner,
129
- SpaceFighter,
130
- BalloonBlaster,
131
- DinoJump,
130
+ CandyCrush,
132
131
  FlappyBird,
133
- Snake,
134
- Game2048,
132
+ ColorsSort,
133
+ DinoJump,
134
+ PopitFidget,
135
+ WhackAMole,
136
+ BalloonBlaster,
137
+ SpaceFighter,
138
+ MazeRunner,
135
139
  SlidingNumbers,
136
- CandyCrush,
137
- ColorSort,
138
- FruitMerger
140
+ Game2048,
141
+ FruitMerger,
142
+ Snake
139
143
  } from 'react-native-games';
140
144
 
141
145
  // All games accept the same props:
@@ -163,89 +167,10 @@ const DEFAULT_GAME_SETTINGS = {
163
167
  difficulty: 'medium',
164
168
  enableSounds: true,
165
169
  enableHaptics: true,
170
+ offset: 0,
166
171
  };
167
172
  ```
168
173
 
169
- #### Game-Specific Behaviors
170
-
171
- **Whack A Mole**
172
- - Cat spawn intervals: easy 2000ms, medium 1500ms, hard 1000ms
173
- - Cat visible duration: easy 2500ms, medium 2000ms, hard 1500ms
174
- - Grid sizes: easy/medium 3x3, hard 4x4
175
-
176
- **Popit Fidget**
177
- - Relaxing bubble popping with satisfying sound effects
178
- - Different bubble shapes and colors for variety
179
- - Difficulty affects bubble responsiveness and patterns
180
-
181
- **Fruit Ninja**
182
- - Fixed 60-second gameplay sessions
183
- - Physics-based slicing with particle effects and combo system
184
- - Difficulty affects fruit spawn rate and bomb frequency
185
-
186
- **Space Fighter**
187
- - Progressive difficulty with asteroid spawn intervals
188
- - Horizontal drag controls with collision immunity system
189
- - Difficulty affects asteroid speed and spawn frequency
190
-
191
- **Maze Runner**
192
- - Grid sizes: easy 8x8, medium 10x10, hard 12x12
193
- - Procedurally generated mazes with intelligent pathfinding
194
- - Difficulty affects maze complexity and time limits
195
-
196
- **Balloon Blaster**
197
- - Fixed 60-second gameplay sessions
198
- - Balloon spawn interval: 1200ms, rise speed: 0.08
199
- - Physics-based balloon movement with particle effects
200
-
201
- **Dino Jump**
202
- - Endless runner with tap-to-jump mechanics
203
- - Collect stars for extra lives (max 3 lives)
204
- - Progressive difficulty with increasing speed
205
- - Difficulty affects obstacle spawn rate and game speed
206
-
207
- **Flappy Bird**
208
- - Classic tap-to-flap mechanics with gravity physics
209
- - Navigate through pipes with pixel-perfect collision
210
- - Progressive difficulty with increasing pipe speed
211
- - Difficulty affects pipe gap size and spawn frequency
212
-
213
- **Snake**
214
- - Classic snake gameplay with modern touch controls
215
- - Swipe or tap to change direction
216
- - Grow by eating food, avoid walls and yourself
217
- - Difficulty affects snake speed and grid size
218
-
219
- **Game 2048**
220
- - Swipe to merge tiles with same numbers
221
- - Reach 2048 tile to win, continue for higher scores
222
- - Undo moves feature for strategic gameplay
223
- - Difficulty affects starting tile values and spawn rate
224
-
225
- **Sliding Numbers**
226
- - Classic 15-puzzle with numbered tiles
227
- - Grid sizes: easy 3x3, medium 4x4, hard 5x5
228
- - Timer challenge to solve as fast as possible
229
- - Smooth tile sliding animations
230
-
231
- **Candy Crush**
232
- - Match-3 puzzle with colorful candies
233
- - Create special candies with 4+ matches
234
- - Cascading combos and satisfying animations
235
- - Difficulty affects level objectives and move limits
236
-
237
- **Color Sort**
238
- - Sort colored liquids into matching tubes
239
- - Logic puzzle with increasing complexity
240
- - Satisfying pour animations and sound effects
241
- - Difficulty affects number of tubes and colors
242
-
243
- **Fruit Merger**
244
- - Merge fruits to create bigger ones (watermelon evolution)
245
- - Physics-based dropping and merging mechanics
246
- - Combo system for multiple merges
247
- - Difficulty affects merge requirements and spawn rate
248
-
249
174
  ### Game Settings
250
175
 
251
176
  Each game includes built-in settings screens with a unified, simplified interface:
@@ -258,48 +183,112 @@ All games use a centralized settings system for consistency and ease of maintena
258
183
 
259
184
  ## 📚 API Reference
260
185
 
261
- ### GamesService
262
-
263
- Core game configuration and settings management.
186
+ ### Exported Constants & Types
264
187
 
265
188
  ```tsx
266
189
  import {
190
+ // Game IDs Enum
267
191
  GAME_IDS,
192
+
193
+ // Default Settings
268
194
  DEFAULT_GAME_SETTINGS,
269
- gamesList,
195
+
196
+ // Games List & Mapping
197
+ GAMES_LIST,
198
+ GAMES_MAPPING,
199
+
200
+ // TypeScript Types
270
201
  type GameSettings,
271
- type GameProps
202
+ type GameProps,
203
+ type GameDefinition,
204
+ type GameComponent,
205
+
206
+ // All Game Components
207
+ FruitNinja,
208
+ CandyCrush,
209
+ FlappyBird,
210
+ ColorsSort,
211
+ DinoJump,
212
+ PopitFidget,
213
+ WhackAMole,
214
+ BalloonBlaster,
215
+ SpaceFighter,
216
+ MazeRunner,
217
+ SlidingNumbers,
218
+ Game2048,
219
+ FruitMerger,
220
+ Snake
272
221
  } from 'react-native-games';
222
+ ```
223
+
224
+ ### GAME_IDS Enum
225
+
226
+ All available game identifiers:
227
+
228
+ ```tsx
229
+ GAME_IDS.FRUIT_NINJA // 'fruit-ninja'
230
+ GAME_IDS.CANDY_CRUSH // 'candy-crush'
231
+ GAME_IDS.FLAPPY_BIRD // 'flappy-bird'
232
+ GAME_IDS.COLORS_SORT // 'colors-sort'
233
+ GAME_IDS.DINO_JUMP // 'dino-jump'
234
+ GAME_IDS.POPIT_FIDGET // 'popit-fidget'
235
+ GAME_IDS.WHACK_A_MOLE // 'whack-a-mole'
236
+ GAME_IDS.BALLOON_BLASTER // 'balloon-blaster'
237
+ GAME_IDS.SPACE_FIGHTER // 'space-fighter'
238
+ GAME_IDS.MAZE_RUNNER // 'maze-runner'
239
+ GAME_IDS.SLIDING_NUMBERS // 'sliding-numbers'
240
+ GAME_IDS.GAME_2048 // 'game-2048'
241
+ GAME_IDS.FRUIT_MERGER // 'fruit-merger'
242
+ GAME_IDS.SNAKE // 'snake'
243
+ ```
244
+
245
+ ### DEFAULT_GAME_SETTINGS
246
+
247
+ Default configuration for all games:
248
+
249
+ ```tsx
250
+ const DEFAULT_GAME_SETTINGS = {
251
+ isVisible: false, // Settings modal visibility
252
+ difficulty: 'medium', // Game difficulty level
253
+ enableSounds: true, // Audio feedback enabled
254
+ enableHaptics: true, // Haptic feedback enabled
255
+ offset: 0, // Top offset for notch/status bar
256
+ };
257
+
258
+ // Example: Custom settings with offset
259
+ const customSettings = {
260
+ ...DEFAULT_GAME_SETTINGS,
261
+ offset: 50, // Moves game elements 50px down from top
262
+ };
263
+ ```
273
264
 
274
- // Game IDs enum for all available games
275
- GAME_IDS.WHACK_A_MOLE
276
- GAME_IDS.POPIT_FIDGET
277
- GAME_IDS.FRUIT_NINJA
278
- GAME_IDS.BALLOON_BLASTER
279
- GAME_IDS.SPACE_FIGHTER
280
- GAME_IDS.MAZE_RUNNER
281
- GAME_IDS.SLIDING_NUMBERS
282
- GAME_IDS.GAME_2048
283
- GAME_IDS.DINO_JUMP
284
- GAME_IDS.COLOR_SORT
285
- GAME_IDS.FRUIT_MERGER
286
- GAME_IDS.FLAPPY_BIRD
287
- GAME_IDS.CANDY_CRUSH
288
- GAME_IDS.SNAKE
289
-
290
- // Default game settings
291
- const settings = DEFAULT_GAME_SETTINGS;
292
- // {
293
- // isVisible: false,
294
- // difficulty: 'medium',
295
- // enableSounds: true,
296
- // enableHaptics: true
297
- // }
298
-
299
- // Games list with metadata
300
- gamesList.forEach(game => {
301
- console.log(game.id, game.title, game.description);
265
+ ### GAMES_LIST
266
+
267
+ Array of all game definitions with metadata:
268
+
269
+ ```tsx
270
+ // GAMES_LIST is an array of GameDefinition objects
271
+ GAMES_LIST.forEach(game => {
272
+ console.log(game.id); // GAME_IDS enum value
273
+ console.log(game.title); // Display title
274
+ console.log(game.description); // Game description
275
+ console.log(game.component); // React component
302
276
  });
277
+
278
+ // Example: Find a specific game
279
+ const fruitNinja = GAMES_LIST.find(g => g.id === GAME_IDS.FRUIT_NINJA);
280
+ ```
281
+
282
+ ### GAMES_MAPPING
283
+
284
+ Object mapping game IDs to their components:
285
+
286
+ ```tsx
287
+ // Access game component by ID
288
+ const GameComponent = GAMES_MAPPING[GAME_IDS.FRUIT_NINJA];
289
+
290
+ // Render dynamically
291
+ <GameComponent settings={settings} onSettingsChange={handleChange} />
303
292
  ```
304
293
 
305
294
  ### TypeScript Types
@@ -311,6 +300,7 @@ interface GameSettings {
311
300
  difficulty: 'easy' | 'medium' | 'hard';
312
301
  enableSounds: boolean; // Audio feedback
313
302
  enableHaptics: boolean; // Haptic feedback
303
+ offset?: number; // Optional padding from top (default: 0)
314
304
  }
315
305
 
316
306
  // Game component props
@@ -320,37 +310,6 @@ interface GameProps {
320
310
  }
321
311
  ```
322
312
 
323
- ## 🎨 Features
324
-
325
- ### 🚀 **High Performance**
326
- - Built with React Native Skia for 60fps gameplay
327
- - Optimized animations using Reanimated 3 with worklets
328
- - Delta time physics loops for consistent performance
329
- - React.memo optimizations and efficient state management
330
- - Minimal re-renders with direct store subscriptions
331
-
332
- ### 🎵 **Rich Audio & Haptics**
333
- - Sound effects and speech synthesis
334
- - Haptic feedback for immersive experience
335
- - Configurable audio settings
336
-
337
- ### 🎯 **Customizable**
338
- - Multiple difficulty levels
339
- - Adjustable game parameters
340
- - Persistent settings storage
341
-
342
- ### 📱 **Cross-Platform**
343
- - iOS and Android support
344
- - Consistent performance across devices
345
- - Responsive design for different screen sizes
346
-
347
- ### 🎮 **Game Features**
348
- - **Physics Simulation**: Realistic movement and collisions
349
- - **Particle Systems**: Visual effects and animations
350
- - **Procedural Generation**: Dynamic content (mazes, obstacles)
351
- - **Score Systems**: Leaderboards and achievements
352
- - **Progressive Difficulty**: Adaptive challenge levels
353
-
354
313
  ## 📄 License
355
314
 
356
315
  This library is available under a **dual licensing model**:
@@ -6,9 +6,9 @@ import { GestureHandlerRootView } from 'react-native-gesture-handler';
6
6
  import { useBalloonBlasterStore } from "./BalloonBlasterStore.js";
7
7
  import { createBalloonBlasterService } from "./BalloonBlasterService.js";
8
8
  import { ScoreBoard, GameArea, GameBackground } from "./components/index.js";
9
- import { GameControlButton, GameOverModal, useAnimationTrackers, useGameErrorHandler, GameErrorType } from "../../shared/helpers/index.js";
10
- import { GameSettingsModal } from "../../shared/helpers/index.js";
11
- import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/GamesService.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
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  export const BalloonBlaster = /*#__PURE__*/React.memo(({
14
14
  settings,
@@ -138,13 +138,16 @@ export const BalloonBlaster = /*#__PURE__*/React.memo(({
138
138
  settings: settings || DEFAULT_GAME_SETTINGS,
139
139
  onSettingsChange
140
140
  }), [settings, onSettingsChange]);
141
+
142
+ // Get offset from settings
143
+ const offset = settings?.offset ?? 0;
141
144
  return /*#__PURE__*/_jsx(View, {
142
145
  style: styles.container,
143
146
  children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
144
147
  children: /*#__PURE__*/_jsxs(GameBackground, {
145
- children: [/*#__PURE__*/_jsx(GameArea, {}), /*#__PURE__*/_jsx(View, {
146
- style: styles.scoreboardContainer,
147
- children: /*#__PURE__*/_jsx(ScoreBoard, {})
148
+ offset: offset,
149
+ children: [/*#__PURE__*/_jsx(GameArea, {}), /*#__PURE__*/_jsx(ScoreBoard, {
150
+ offset: offset
148
151
  }), /*#__PURE__*/_jsx(GameControlButton, {
149
152
  ...gameControlButtonProps
150
153
  }), /*#__PURE__*/_jsx(GameOverModal, {
@@ -159,14 +162,6 @@ export const BalloonBlaster = /*#__PURE__*/React.memo(({
159
162
  const styles = StyleSheet.create({
160
163
  container: {
161
164
  flex: 1
162
- },
163
- scoreboardContainer: {
164
- position: 'absolute',
165
- top: 0,
166
- left: 20,
167
- right: 20,
168
- zIndex: 10,
169
- pointerEvents: 'none' // Allow touches to pass through to GameArea
170
165
  }
171
166
  });
172
167
  //# sourceMappingURL=BalloonBlaster.js.map
@@ -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","style","styles","container","children","scoreboardContainer","create","flex","position","top","left","right","zIndex","pointerEvents"],"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","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":[]}
@@ -3,7 +3,7 @@
3
3
  import { create } from 'zustand';
4
4
  import { subscribeWithSelector } from 'zustand/middleware';
5
5
  import { GAME_CONFIG } from "./BalloonBlasterService.js";
6
- import { immerMiddleware } from "../../services/GamesService.js";
6
+ import { immerMiddleware } from "../../services/UtilsService.js";
7
7
  // Optimized store with selective subscriptions for low-end devices
8
8
  export const useBalloonBlasterStore = create()(subscribeWithSelector(immerMiddleware((set, get) => ({
9
9
  // Initial state
@@ -6,7 +6,7 @@ import { useBalloonBlasterStore } from "../BalloonBlasterStore.js";
6
6
  import { GAME_CONFIG } from "../BalloonBlasterService.js";
7
7
  import { playSound, GAME_SOUNDS } from "../../../services/SoundsService.js";
8
8
  import { playHaptic, HapticType } from "../../../services/HapticsService.js";
9
- import { ParticleBlast, useAnimationTracker } from "../../../shared/helpers/index.js";
9
+ import { ParticleBlast, useAnimationTracker } from "../../../helpers/index.js";
10
10
  import { BalloonComponent } from "./BalloonComponent.js";
11
11
 
12
12
  // Constants for better maintainability
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useState","useCallback","useMemo","View","StyleSheet","useBalloonBlasterStore","GAME_CONFIG","playSound","GAME_SOUNDS","playHaptic","HapticType","ParticleBlast","useAnimationTracker","BalloonComponent","jsx","_jsx","jsxs","_jsxs","BALLOON_REMOVAL_DELAY","PARTICLE_COUNT","PARTICLE_DURATION","GameArea","memo","balloons","state","isPlaying","gameOver","popBalloon","removeBalloon","updateBalloon","resetCombo","loseLife","addLife","balloonAnimations","activeBlasts","setActiveBlasts","playPopSound","BALLOON_BLASTER","POP","LIGHT","playBombSound","BOMB","HEAVY","createBlastParticles","balloon","blastX","position","x","BALLOON_SIZE","blastY","y","blastId","Date","now","Math","random","prev","id","handleBlastComplete","filter","blast","handleBalloonPop","balloonId","currentBalloons","getState","find","b","isPopped","isBomb","isBonus","setTimeout","delete","forEach","has","initialize","balloonComponents","map","animation","get","onPop","blastComponents","particleCount","duration","onComplete","style","styles","gameArea","children","create","flex","overflow"],"sourceRoot":"../../../../../src","sources":["games/balloon-blaster/components/GameArea.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useState","useCallback","useMemo","View","StyleSheet","useBalloonBlasterStore","GAME_CONFIG","playSound","GAME_SOUNDS","playHaptic","HapticType","ParticleBlast","useAnimationTracker","BalloonComponent","jsx","_jsx","jsxs","_jsxs","BALLOON_REMOVAL_DELAY","PARTICLE_COUNT","PARTICLE_DURATION","GameArea","memo","balloons","state","isPlaying","gameOver","popBalloon","removeBalloon","updateBalloon","resetCombo","loseLife","addLife","balloonAnimations","activeBlasts","setActiveBlasts","playPopSound","BALLOON_BLASTER","POP","LIGHT","playBombSound","BOMB","HEAVY","createBlastParticles","balloon","blastX","position","x","BALLOON_SIZE","blastY","y","blastId","Date","now","Math","random","prev","id","handleBlastComplete","filter","blast","handleBalloonPop","balloonId","currentBalloons","getState","find","b","isPopped","isBomb","isBonus","setTimeout","delete","forEach","has","initialize","balloonComponents","map","animation","get","onPop","blastComponents","particleCount","duration","onComplete","style","styles","gameArea","children","create","flex","overflow"],"sourceRoot":"../../../../../src","sources":["games/balloon-blaster/components/GameArea.tsx"],"mappings":"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","ignoreList":[]}