react-native-games 0.7.0 → 0.8.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 (341) hide show
  1. package/README.md +148 -23
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +5 -8
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/candy-crush/CandyCrush.js +121 -0
  5. package/lib/module/games/candy-crush/CandyCrush.js.map +1 -0
  6. package/lib/module/games/candy-crush/CandyCrushConstants.js +125 -0
  7. package/lib/module/games/candy-crush/CandyCrushConstants.js.map +1 -0
  8. package/lib/module/games/candy-crush/CandyCrushService.js +370 -0
  9. package/lib/module/games/candy-crush/CandyCrushService.js.map +1 -0
  10. package/lib/module/games/candy-crush/CandyCrushStore.js +305 -0
  11. package/lib/module/games/candy-crush/CandyCrushStore.js.map +1 -0
  12. package/lib/module/games/candy-crush/components/CandyItem.js +191 -0
  13. package/lib/module/games/candy-crush/components/CandyItem.js.map +1 -0
  14. package/lib/module/games/candy-crush/components/GameBackground.js +85 -0
  15. package/lib/module/games/candy-crush/components/GameBackground.js.map +1 -0
  16. package/lib/module/games/candy-crush/components/GameGrid.js +314 -0
  17. package/lib/module/games/candy-crush/components/GameGrid.js.map +1 -0
  18. package/lib/module/games/candy-crush/components/ScoreBoard.js +112 -0
  19. package/lib/module/games/candy-crush/components/ScoreBoard.js.map +1 -0
  20. package/lib/module/games/candy-crush/components/index.js +7 -0
  21. package/lib/module/games/candy-crush/components/index.js.map +1 -0
  22. package/lib/module/games/candy-crush/index.js +6 -0
  23. package/lib/module/games/candy-crush/index.js.map +1 -0
  24. package/lib/module/games/color-sort/ColorSort.js +130 -0
  25. package/lib/module/games/color-sort/ColorSort.js.map +1 -0
  26. package/lib/module/games/color-sort/ColorSortConstants.js +68 -0
  27. package/lib/module/games/color-sort/ColorSortConstants.js.map +1 -0
  28. package/lib/module/games/color-sort/ColorSortService.js +255 -0
  29. package/lib/module/games/color-sort/ColorSortService.js.map +1 -0
  30. package/lib/module/games/color-sort/ColorSortStore.js +258 -0
  31. package/lib/module/games/color-sort/ColorSortStore.js.map +1 -0
  32. package/lib/module/games/color-sort/components/ColorContainer.js +140 -0
  33. package/lib/module/games/color-sort/components/ColorContainer.js.map +1 -0
  34. package/lib/module/games/color-sort/components/GameBackground.js +135 -0
  35. package/lib/module/games/color-sort/components/GameBackground.js.map +1 -0
  36. package/lib/module/games/color-sort/components/ScoreBoard.js +78 -0
  37. package/lib/module/games/color-sort/components/ScoreBoard.js.map +1 -0
  38. package/lib/module/games/color-sort/components/index.js +6 -0
  39. package/lib/module/games/color-sort/components/index.js.map +1 -0
  40. package/lib/module/games/dino-jump/DinoJump.js +209 -0
  41. package/lib/module/games/dino-jump/DinoJump.js.map +1 -0
  42. package/lib/module/games/dino-jump/DinoJumpConstants.js +179 -0
  43. package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -0
  44. package/lib/module/games/dino-jump/DinoJumpService.js +268 -0
  45. package/lib/module/games/dino-jump/DinoJumpService.js.map +1 -0
  46. package/lib/module/games/dino-jump/DinoJumpStore.js +387 -0
  47. package/lib/module/games/dino-jump/DinoJumpStore.js.map +1 -0
  48. package/lib/module/games/dino-jump/components/DinoSprite.js +409 -0
  49. package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -0
  50. package/lib/module/games/dino-jump/components/GameArea.js +68 -0
  51. package/lib/module/games/dino-jump/components/GameArea.js.map +1 -0
  52. package/lib/module/games/dino-jump/components/GameBackground.js +421 -0
  53. package/lib/module/games/dino-jump/components/GameBackground.js.map +1 -0
  54. package/lib/module/games/dino-jump/components/ObstacleSprite.js +306 -0
  55. package/lib/module/games/dino-jump/components/ObstacleSprite.js.map +1 -0
  56. package/lib/module/games/dino-jump/components/ScoreBoard.js +107 -0
  57. package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -0
  58. package/lib/module/games/dino-jump/components/StarSprite.js +45 -0
  59. package/lib/module/games/dino-jump/components/StarSprite.js.map +1 -0
  60. package/lib/module/games/dino-jump/components/index.js +9 -0
  61. package/lib/module/games/dino-jump/components/index.js.map +1 -0
  62. package/lib/module/games/flappy-bird/FlappyBird.js +131 -0
  63. package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -0
  64. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +90 -0
  65. package/lib/module/games/flappy-bird/FlappyBirdConstants.js.map +1 -0
  66. package/lib/module/games/flappy-bird/FlappyBirdStore.js +276 -0
  67. package/lib/module/games/flappy-bird/FlappyBirdStore.js.map +1 -0
  68. package/lib/module/games/flappy-bird/components/Bird.js +87 -0
  69. package/lib/module/games/flappy-bird/components/Bird.js.map +1 -0
  70. package/lib/module/games/flappy-bird/components/GameArea.js +86 -0
  71. package/lib/module/games/flappy-bird/components/GameArea.js.map +1 -0
  72. package/lib/module/games/flappy-bird/components/GameBackground.js +112 -0
  73. package/lib/module/games/flappy-bird/components/GameBackground.js.map +1 -0
  74. package/lib/module/games/flappy-bird/components/Pipes.js +175 -0
  75. package/lib/module/games/flappy-bird/components/Pipes.js.map +1 -0
  76. package/lib/module/games/flappy-bird/components/ScoreBoard.js +72 -0
  77. package/lib/module/games/flappy-bird/components/ScoreBoard.js.map +1 -0
  78. package/lib/module/games/flappy-bird/components/index.js +8 -0
  79. package/lib/module/games/flappy-bird/components/index.js.map +1 -0
  80. package/lib/module/games/fruit-merger/FruitMerger.js +112 -0
  81. package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -0
  82. package/lib/module/games/fruit-merger/FruitMergerConstants.js +119 -0
  83. package/lib/module/games/fruit-merger/FruitMergerConstants.js.map +1 -0
  84. package/lib/module/games/fruit-merger/FruitMergerService.js +13 -0
  85. package/lib/module/games/fruit-merger/FruitMergerService.js.map +1 -0
  86. package/lib/module/games/fruit-merger/FruitMergerStore.js +318 -0
  87. package/lib/module/games/fruit-merger/FruitMergerStore.js.map +1 -0
  88. package/lib/module/games/fruit-merger/components/FruitItem.js +102 -0
  89. package/lib/module/games/fruit-merger/components/FruitItem.js.map +1 -0
  90. package/lib/module/games/fruit-merger/components/GameArea.js +123 -0
  91. package/lib/module/games/fruit-merger/components/GameArea.js.map +1 -0
  92. package/lib/module/games/fruit-merger/components/GameBackground.js +477 -0
  93. package/lib/module/games/fruit-merger/components/GameBackground.js.map +1 -0
  94. package/lib/module/games/fruit-merger/components/ScoreBoard.js +66 -0
  95. package/lib/module/games/fruit-merger/components/ScoreBoard.js.map +1 -0
  96. package/lib/module/games/fruit-merger/components/index.js +7 -0
  97. package/lib/module/games/fruit-merger/components/index.js.map +1 -0
  98. package/lib/module/games/fruit-ninja/FruitNinja.js +6 -9
  99. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  100. package/lib/module/games/game-2048/Game2048.js +120 -0
  101. package/lib/module/games/game-2048/Game2048.js.map +1 -0
  102. package/lib/module/games/game-2048/Game2048Constants.js +263 -0
  103. package/lib/module/games/game-2048/Game2048Constants.js.map +1 -0
  104. package/lib/module/games/game-2048/Game2048Service.js +457 -0
  105. package/lib/module/games/game-2048/Game2048Service.js.map +1 -0
  106. package/lib/module/games/game-2048/Game2048Store.js +238 -0
  107. package/lib/module/games/game-2048/Game2048Store.js.map +1 -0
  108. package/lib/module/games/game-2048/components/GameBackground.js +247 -0
  109. package/lib/module/games/game-2048/components/GameBackground.js.map +1 -0
  110. package/lib/module/games/game-2048/components/GameGrid.js +139 -0
  111. package/lib/module/games/game-2048/components/GameGrid.js.map +1 -0
  112. package/lib/module/games/game-2048/components/GameTile.js +72 -0
  113. package/lib/module/games/game-2048/components/GameTile.js.map +1 -0
  114. package/lib/module/games/game-2048/components/ScoreBoard.js +70 -0
  115. package/lib/module/games/game-2048/components/ScoreBoard.js.map +1 -0
  116. package/lib/module/games/game-2048/components/index.js +7 -0
  117. package/lib/module/games/game-2048/components/index.js.map +1 -0
  118. package/lib/module/games/maze-runner/MazeRunner.js +33 -31
  119. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  120. package/lib/module/games/popit-fidget/PopitFidget.js +34 -32
  121. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  122. package/lib/module/games/sliding-numbers/SlidingNumbers.js +161 -0
  123. package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -0
  124. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +207 -0
  125. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js.map +1 -0
  126. package/lib/module/games/sliding-numbers/SlidingNumbersService.js +248 -0
  127. package/lib/module/games/sliding-numbers/SlidingNumbersService.js.map +1 -0
  128. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +275 -0
  129. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js.map +1 -0
  130. package/lib/module/games/sliding-numbers/components/GameBackground.js +259 -0
  131. package/lib/module/games/sliding-numbers/components/GameBackground.js.map +1 -0
  132. package/lib/module/games/sliding-numbers/components/NumbersGrid.js +174 -0
  133. package/lib/module/games/sliding-numbers/components/NumbersGrid.js.map +1 -0
  134. package/lib/module/games/sliding-numbers/components/NumbersTile.js +116 -0
  135. package/lib/module/games/sliding-numbers/components/NumbersTile.js.map +1 -0
  136. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +66 -0
  137. package/lib/module/games/sliding-numbers/components/ScoreBoard.js.map +1 -0
  138. package/lib/module/games/sliding-numbers/components/index.js +7 -0
  139. package/lib/module/games/sliding-numbers/components/index.js.map +1 -0
  140. package/lib/module/games/snake/Snake.js +192 -0
  141. package/lib/module/games/snake/Snake.js.map +1 -0
  142. package/lib/module/games/snake/SnakeConstants.js +138 -0
  143. package/lib/module/games/snake/SnakeConstants.js.map +1 -0
  144. package/lib/module/games/snake/SnakeService.js +148 -0
  145. package/lib/module/games/snake/SnakeService.js.map +1 -0
  146. package/lib/module/games/snake/SnakeStore.js +184 -0
  147. package/lib/module/games/snake/SnakeStore.js.map +1 -0
  148. package/lib/module/games/snake/components/GameBackground.js +221 -0
  149. package/lib/module/games/snake/components/GameBackground.js.map +1 -0
  150. package/lib/module/games/snake/components/GameGrid.js +153 -0
  151. package/lib/module/games/snake/components/GameGrid.js.map +1 -0
  152. package/lib/module/games/snake/components/ScoreBoard.js +57 -0
  153. package/lib/module/games/snake/components/ScoreBoard.js.map +1 -0
  154. package/lib/module/games/snake/components/index.js +6 -0
  155. package/lib/module/games/snake/components/index.js.map +1 -0
  156. package/lib/module/games/snake/index.js +6 -0
  157. package/lib/module/games/snake/index.js.map +1 -0
  158. package/lib/module/games/space-fighter/SpaceFighter.js +7 -10
  159. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  160. package/lib/module/games/whack-a-mole/WhackAMole.js +6 -6
  161. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  162. package/lib/module/index.js +8 -0
  163. package/lib/module/index.js.map +1 -1
  164. package/lib/module/services/GamesConstants.js +58 -2
  165. package/lib/module/services/GamesConstants.js.map +1 -1
  166. package/lib/module/services/GamesService.js +40 -0
  167. package/lib/module/services/GamesService.js.map +1 -1
  168. package/lib/module/services/SoundsService.js +132 -1
  169. package/lib/module/services/SoundsService.js.map +1 -1
  170. package/lib/module/shared/helpers/GameOverModal.js +6 -3
  171. package/lib/module/shared/helpers/GameOverModal.js.map +1 -1
  172. package/lib/module/shared/helpers/GameSettingsModal.js +3 -3
  173. package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -1
  174. package/lib/module/shared/helpers/ParticleBlast.js +3 -2
  175. package/lib/module/shared/helpers/ParticleBlast.js.map +1 -1
  176. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  177. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +4 -0
  178. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -0
  179. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +104 -0
  180. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts.map +1 -0
  181. package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +40 -0
  182. package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts.map +1 -0
  183. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +48 -0
  184. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts.map +1 -0
  185. package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +13 -0
  186. package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts.map +1 -0
  187. package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts +5 -0
  188. package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts.map +1 -0
  189. package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +3 -0
  190. package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts.map +1 -0
  191. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +3 -0
  192. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts.map +1 -0
  193. package/lib/typescript/src/games/candy-crush/components/index.d.ts +5 -0
  194. package/lib/typescript/src/games/candy-crush/components/index.d.ts.map +1 -0
  195. package/lib/typescript/src/games/candy-crush/index.d.ts +4 -0
  196. package/lib/typescript/src/games/candy-crush/index.d.ts.map +1 -0
  197. package/lib/typescript/src/games/color-sort/ColorSort.d.ts +4 -0
  198. package/lib/typescript/src/games/color-sort/ColorSort.d.ts.map +1 -0
  199. package/lib/typescript/src/games/color-sort/ColorSortConstants.d.ts +52 -0
  200. package/lib/typescript/src/games/color-sort/ColorSortConstants.d.ts.map +1 -0
  201. package/lib/typescript/src/games/color-sort/ColorSortService.d.ts +66 -0
  202. package/lib/typescript/src/games/color-sort/ColorSortService.d.ts.map +1 -0
  203. package/lib/typescript/src/games/color-sort/ColorSortStore.d.ts +48 -0
  204. package/lib/typescript/src/games/color-sort/ColorSortStore.d.ts.map +1 -0
  205. package/lib/typescript/src/games/color-sort/components/ColorContainer.d.ts +11 -0
  206. package/lib/typescript/src/games/color-sort/components/ColorContainer.d.ts.map +1 -0
  207. package/lib/typescript/src/games/color-sort/components/GameBackground.d.ts +7 -0
  208. package/lib/typescript/src/games/color-sort/components/GameBackground.d.ts.map +1 -0
  209. package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts +3 -0
  210. package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts.map +1 -0
  211. package/lib/typescript/src/games/color-sort/components/index.d.ts +4 -0
  212. package/lib/typescript/src/games/color-sort/components/index.d.ts.map +1 -0
  213. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +4 -0
  214. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -0
  215. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +95 -0
  216. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts.map +1 -0
  217. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +40 -0
  218. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts.map +1 -0
  219. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +103 -0
  220. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts.map +1 -0
  221. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +3 -0
  222. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -0
  223. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +8 -0
  224. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts.map +1 -0
  225. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +7 -0
  226. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts.map +1 -0
  227. package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +3 -0
  228. package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts.map +1 -0
  229. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +3 -0
  230. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts.map +1 -0
  231. package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +3 -0
  232. package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts.map +1 -0
  233. package/lib/typescript/src/games/dino-jump/components/index.d.ts +7 -0
  234. package/lib/typescript/src/games/dino-jump/components/index.d.ts.map +1 -0
  235. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +4 -0
  236. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -0
  237. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +83 -0
  238. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts.map +1 -0
  239. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +53 -0
  240. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts.map +1 -0
  241. package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +8 -0
  242. package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts.map +1 -0
  243. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +8 -0
  244. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts.map +1 -0
  245. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +7 -0
  246. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts.map +1 -0
  247. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +8 -0
  248. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts.map +1 -0
  249. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +3 -0
  250. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts.map +1 -0
  251. package/lib/typescript/src/games/flappy-bird/components/index.d.ts +6 -0
  252. package/lib/typescript/src/games/flappy-bird/components/index.d.ts.map +1 -0
  253. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +4 -0
  254. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -0
  255. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +115 -0
  256. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts.map +1 -0
  257. package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +5 -0
  258. package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts.map +1 -0
  259. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +43 -0
  260. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts.map +1 -0
  261. package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +10 -0
  262. package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts.map +1 -0
  263. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +8 -0
  264. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts.map +1 -0
  265. package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts +7 -0
  266. package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts.map +1 -0
  267. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +3 -0
  268. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts.map +1 -0
  269. package/lib/typescript/src/games/fruit-merger/components/index.d.ts +5 -0
  270. package/lib/typescript/src/games/fruit-merger/components/index.d.ts.map +1 -0
  271. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  272. package/lib/typescript/src/games/game-2048/Game2048.d.ts +4 -0
  273. package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -0
  274. package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +163 -0
  275. package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts.map +1 -0
  276. package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +113 -0
  277. package/lib/typescript/src/games/game-2048/Game2048Service.d.ts.map +1 -0
  278. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +48 -0
  279. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts.map +1 -0
  280. package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts +7 -0
  281. package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts.map +1 -0
  282. package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +7 -0
  283. package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts.map +1 -0
  284. package/lib/typescript/src/games/game-2048/components/GameTile.d.ts +13 -0
  285. package/lib/typescript/src/games/game-2048/components/GameTile.d.ts.map +1 -0
  286. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +3 -0
  287. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts.map +1 -0
  288. package/lib/typescript/src/games/game-2048/components/index.d.ts +5 -0
  289. package/lib/typescript/src/games/game-2048/components/index.d.ts.map +1 -0
  290. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  291. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  292. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +4 -0
  293. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -0
  294. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +108 -0
  295. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts.map +1 -0
  296. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +34 -0
  297. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts.map +1 -0
  298. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +56 -0
  299. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts.map +1 -0
  300. package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts +7 -0
  301. package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts.map +1 -0
  302. package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +7 -0
  303. package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts.map +1 -0
  304. package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts +11 -0
  305. package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts.map +1 -0
  306. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +3 -0
  307. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts.map +1 -0
  308. package/lib/typescript/src/games/sliding-numbers/components/index.d.ts +5 -0
  309. package/lib/typescript/src/games/sliding-numbers/components/index.d.ts.map +1 -0
  310. package/lib/typescript/src/games/snake/Snake.d.ts +4 -0
  311. package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -0
  312. package/lib/typescript/src/games/snake/SnakeConstants.d.ts +93 -0
  313. package/lib/typescript/src/games/snake/SnakeConstants.d.ts.map +1 -0
  314. package/lib/typescript/src/games/snake/SnakeService.d.ts +30 -0
  315. package/lib/typescript/src/games/snake/SnakeService.d.ts.map +1 -0
  316. package/lib/typescript/src/games/snake/SnakeStore.d.ts +43 -0
  317. package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -0
  318. package/lib/typescript/src/games/snake/components/GameBackground.d.ts +5 -0
  319. package/lib/typescript/src/games/snake/components/GameBackground.d.ts.map +1 -0
  320. package/lib/typescript/src/games/snake/components/GameGrid.d.ts +3 -0
  321. package/lib/typescript/src/games/snake/components/GameGrid.d.ts.map +1 -0
  322. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts +3 -0
  323. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -0
  324. package/lib/typescript/src/games/snake/components/index.d.ts +4 -0
  325. package/lib/typescript/src/games/snake/components/index.d.ts.map +1 -0
  326. package/lib/typescript/src/games/snake/index.d.ts +4 -0
  327. package/lib/typescript/src/games/snake/index.d.ts.map +1 -0
  328. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  329. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  330. package/lib/typescript/src/index.d.ts +8 -0
  331. package/lib/typescript/src/index.d.ts.map +1 -1
  332. package/lib/typescript/src/services/GamesConstants.d.ts +156 -0
  333. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  334. package/lib/typescript/src/services/GamesService.d.ts +10 -2
  335. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  336. package/lib/typescript/src/services/SoundsService.d.ts +103 -0
  337. package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
  338. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts +2 -0
  339. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -1
  340. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -1
  341. package/package.json +1 -1
package/README.md CHANGED
@@ -1,17 +1,25 @@
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, and TypeScript for smooth 60fps gameplay.
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.
4
4
 
5
5
  ## 🎯 Available Games
6
6
 
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 |
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
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 |
15
23
 
16
24
  ## 📦 Installation
17
25
 
@@ -36,9 +44,9 @@ Follow the installation guides for each peer dependency:
36
44
  - **[@shopify/react-native-skia](https://shopify.github.io/react-native-skia/docs/getting-started/installation)** - Graphics rendering
37
45
  - **[react-native-reanimated](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started)** - Animations
38
46
  - **[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
39
48
  - **[expo-speech](https://docs.expo.dev/versions/latest/sdk/speech/)** - Text-to-speech functionality
40
49
  - **[expo-haptics](https://docs.expo.dev/versions/latest/sdk/haptics/)** - Haptic feedback
41
- - **[react-native-worklets](https://github.com/margelo/react-native-worklets)** - JavaScript worklets for high-performance animations
42
50
 
43
51
  ## 🚀 Usage
44
52
 
@@ -92,10 +100,7 @@ export default function FruitNinjaScreen() {
92
100
  useLayoutEffect(() => {
93
101
  navigation.setOptions({
94
102
  headerRight: () => (
95
- <TouchableOpacity
96
- onPress={handleToggleSettingsModal}
97
- className="p-2"
98
- >
103
+ <TouchableOpacity className="p-2" onPress={handleToggleSettingsModal}>
99
104
  <Ionicons name="settings-outline" size={24} color={colors.text} />
100
105
  </TouchableOpacity>
101
106
  ),
@@ -116,19 +121,27 @@ All games use the same props interface:
116
121
 
117
122
  ```tsx
118
123
  // Import any game you want
119
- import {
120
- WhackAMole,
121
- PopitFidget,
122
- FruitNinja,
123
- MazeRunner,
124
- SpaceFighter,
125
- BalloonBlaster
124
+ import {
125
+ WhackAMole,
126
+ PopitFidget,
127
+ FruitNinja,
128
+ MazeRunner,
129
+ SpaceFighter,
130
+ BalloonBlaster,
131
+ DinoJump,
132
+ FlappyBird,
133
+ Snake,
134
+ Game2048,
135
+ SlidingNumbers,
136
+ CandyCrush,
137
+ ColorSort,
138
+ FruitMerger
126
139
  } from 'react-native-games';
127
140
 
128
141
  // All games accept the same props:
129
- <GameComponent
130
- settings={settings}
131
- onSettingsChange={handleSettingsChange}
142
+ <GameComponent
143
+ settings={settings}
144
+ onSettingsChange={handleSettingsChange}
132
145
  />
133
146
  ```
134
147
 
@@ -185,6 +198,54 @@ const DEFAULT_GAME_SETTINGS = {
185
198
  - Balloon spawn interval: 1200ms, rise speed: 0.08
186
199
  - Physics-based balloon movement with particle effects
187
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
+
188
249
  ### Game Settings
189
250
 
190
251
  Each game includes built-in settings screens with a unified, simplified interface:
@@ -195,6 +256,70 @@ Each game includes built-in settings screens with a unified, simplified interfac
195
256
 
196
257
  All games use a centralized settings system for consistency and ease of maintenance. Game durations and difficulty behaviors are customized per game for optimal gameplay experience.
197
258
 
259
+ ## 📚 API Reference
260
+
261
+ ### GamesService
262
+
263
+ Core game configuration and settings management.
264
+
265
+ ```tsx
266
+ import {
267
+ GAME_IDS,
268
+ DEFAULT_GAME_SETTINGS,
269
+ gamesList,
270
+ type GameSettings,
271
+ type GameProps
272
+ } from 'react-native-games';
273
+
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);
302
+ });
303
+ ```
304
+
305
+ ### TypeScript Types
306
+
307
+ ```tsx
308
+ // Game settings interface
309
+ interface GameSettings {
310
+ isVisible: boolean; // Settings modal visibility
311
+ difficulty: 'easy' | 'medium' | 'hard';
312
+ enableSounds: boolean; // Audio feedback
313
+ enableHaptics: boolean; // Haptic feedback
314
+ }
315
+
316
+ // Game component props
317
+ interface GameProps {
318
+ settings?: GameSettings;
319
+ onSettingsChange?: (settings: GameSettings) => void;
320
+ }
321
+ ```
322
+
198
323
  ## 🎨 Features
199
324
 
200
325
  ### 🚀 **High Performance**
@@ -8,7 +8,7 @@ import { createBalloonBlasterService } from "./BalloonBlasterService.js";
8
8
  import { ScoreBoard, GameArea, GameBackground } from "./components/index.js";
9
9
  import { GameControlButton, GameOverModal, useAnimationTrackers, useGameErrorHandler, GameErrorType } from "../../shared/helpers/index.js";
10
10
  import { GameSettingsModal } from "../../shared/helpers/index.js";
11
- import { GAME_IDS } from "../../services/GamesService.js";
11
+ import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/GamesService.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,
@@ -135,15 +135,12 @@ export const BalloonBlaster = /*#__PURE__*/React.memo(({
135
135
  // Memoized GameSettingsModal props to prevent unnecessary re-renders
136
136
  const gameSettingsModalProps = useMemo(() => ({
137
137
  gameId: GAME_IDS.BALLOON_BLASTER,
138
- settings,
138
+ settings: settings || DEFAULT_GAME_SETTINGS,
139
139
  onSettingsChange
140
140
  }), [settings, onSettingsChange]);
141
- return /*#__PURE__*/_jsx(GestureHandlerRootView, {
142
- style: {
143
- flex: 1
144
- },
145
- children: /*#__PURE__*/_jsx(View, {
146
- style: styles.container,
141
+ return /*#__PURE__*/_jsx(View, {
142
+ style: styles.container,
143
+ children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
147
144
  children: /*#__PURE__*/_jsxs(GameBackground, {
148
145
  children: [/*#__PURE__*/_jsx(GameArea, {}), /*#__PURE__*/_jsx(View, {
149
146
  style: styles.scoreboardContainer,
@@ -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","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","flex","children","styles","container","scoreboardContainer","create","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","style","styles","container","children","scoreboardContainer","create","flex","position","top","left","right","zIndex","pointerEvents"],"sourceRoot":"../../../../src","sources":["games/balloon-blaster/BalloonBlaster.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,OAAO,EAAEC,WAAW,QAAQ,OAAO;AAC9D,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,sBAAsB,QAAQ,0BAAuB;AAC9D,SAASC,2BAA2B,QAAQ,4BAAyB;AACrE,SAASC,UAAU,EAAEC,QAAQ,EAAEC,cAAc,QAAQ,uBAAc;AACnE,SAASC,iBAAiB,EAAEC,aAAa,EAAEC,oBAAoB,EAAEC,mBAAmB,EAAEC,aAAa,QAAQ,+BAAsB;AACjI,SAASC,iBAAiB,QAAQ,+BAAsB;AACxD,SAASC,QAAQ,EAAkBC,qBAAqB,QAAQ,gCAA6B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAE9F,OAAO,MAAMC,cAAmC,gBAAGxB,KAAK,CAACyB,IAAI,CAAC,CAAC;EAC7DC,QAAQ;EACRC;AACF,CAAC,KAAK;EACJ;EACA,MAAMC,SAAS,GAAGrB,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACD,SAAS,CAAC;EAClE,MAAME,QAAQ,GAAGvB,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACC,QAAQ,CAAC;EAChE,MAAMC,KAAK,GAAGxB,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACE,KAAK,CAAC;;EAE1D;EACA,MAAMC,SAAS,GAAGzB,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACG,SAAS,CAAC;EAClE,MAAMC,QAAQ,GAAG1B,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACI,QAAQ,CAAC;EAChE,MAAMC,SAAS,GAAG3B,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACK,SAAS,CAAC;EAClE,MAAMC,aAAa,GAAG5B,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACM,aAAa,CAAC;EAC1E,MAAMC,UAAU,GAAG7B,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACO,UAAU,CAAC;EACpE,MAAMC,aAAa,GAAG9B,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACQ,aAAa,CAAC;EAC1E,MAAMC,aAAa,GAAG/B,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACS,aAAa,CAAC;;EAE1E;EACA,MAAM;IAAEC,iBAAiB;IAAEC;EAAmB,CAAC,GAAG1B,oBAAoB,CAAC,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;;EAEnH;EACA,MAAM;IAAE2B,YAAY;IAAEC;EAAY,CAAC,GAAG3B,mBAAmB,CAACG,QAAQ,CAACyB,eAAe,CAAC;;EAEnF;EACA,MAAMC,YAAY,GAAGzC,WAAW,CAAE0C,OAAY,IAAK;IACjDT,UAAU,CAACS,OAAO,CAAC;EACrB,CAAC,EAAE,CAACT,UAAU,CAAC,CAAC;;EAEhB;EACA,MAAMU,eAAe,GAAG3C,WAAW,CAACsC,YAAY,CAAC,MAAM;IACrDP,SAAS,CAAC,CAAC;EACb,CAAC,EAAElB,aAAa,CAAC+B,aAAa,CAAC,EAAE,CAACN,YAAY,EAAEP,SAAS,CAAC,CAAC;;EAE3D;EACA,MAAMc,WAAW,GAAG9C,OAAO,CAAC,MAAM;IAChC,OAAOwC,WAAW,CAChB,MAAMlC,2BAA2B,CAAC+B,iBAAiB,EAAEC,kBAAkB,CAAC,EACxEhC,2BAA2B,CAAC+B,iBAAiB,EAAEC,kBAAkB,CAAC;IAAE;IACpExB,aAAa,CAACiC,oBAChB,CAAC;EACH,CAAC,EAAE,CAACV,iBAAiB,EAAEC,kBAAkB,EAAEE,WAAW,CAAC,CAAC;EAExD,MAAMQ,eAAe,GAAG/C,WAAW,CAACsC,YAAY,CAAC,MAAM;IACrD;IACAP,SAAS,CAAC,CAAC;;IAEX;IACA,MAAMiB,eAAe,GAAG5C,sBAAsB,CAAC6C,QAAQ,CAAC,CAAC,CAACC,QAAQ;IAClEF,eAAe,CAACG,OAAO,CAACT,OAAO,IAAIR,aAAa,CAACQ,OAAO,CAACU,EAAE,CAAC,CAAC;;IAE7D;IACA,IAAIP,WAAW,EAAE;MACfA,WAAW,CAACQ,OAAO,CAAC,CAAC;MACrBR,WAAW,CAACS,eAAe,CAAC,CAAC;IAC/B;;IAEA;IACAC,UAAU,CAAC,MAAM;MACf1B,SAAS,CAAC,CAAC,CAAC,CAAC;MACb,IAAIgB,WAAW,EAAE;QACfA,WAAW,CAACW,cAAc,CAACxB,aAAa,CAAC;QACzCa,WAAW,CAACY,oBAAoB,CAAChB,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC;QACrDI,WAAW,CAACa,gBAAgB,CAACvB,aAAa,EAAED,aAAa,EAAE,MAAM9B,sBAAsB,CAAC6C,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC;MAC9G;IACF,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EACV,CAAC,EAAErC,aAAa,CAACiC,oBAAoB,CAAC,EAAE,CAACR,YAAY,EAAEP,SAAS,EAAEG,aAAa,EAAEW,WAAW,EAAEhB,SAAS,EAAEG,aAAa,EAAES,YAAY,EAAEN,aAAa,CAAC,CAAC;EAErJ,MAAMwB,cAAc,GAAG3D,WAAW,CAACsC,YAAY,CAAC,MAAM;IACpDR,QAAQ,CAAC,CAAC;IACV,IAAIe,WAAW,EAAE;MACfA,WAAW,CAACQ,OAAO,CAAC,CAAC;MACrBR,WAAW,CAACS,eAAe,CAAC,CAAC;IAC/B;EACF,CAAC,EAAEzC,aAAa,CAAC+B,aAAa,CAAC,EAAE,CAACN,YAAY,EAAER,QAAQ,EAAEe,WAAW,CAAC,CAAC;;EAEvE;EACA/C,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACX6C,eAAe,CAAC,CAAC;IACnB,CAAC;EACH,CAAC,EAAE,CAACA,eAAe,CAAC,CAAC;;EAErB;EACA7C,SAAS,CAAC,MAAM;IACd,IAAI6B,QAAQ,IAAIkB,WAAW,EAAE;MAC3B;MACAA,WAAW,CAACQ,OAAO,CAAC,CAAC;IACvB;EACF,CAAC,EAAE,CAAC1B,QAAQ,EAAEkB,WAAW,CAAC,CAAC;;EAE3B;EACA,MAAMe,sBAAsB,GAAG7D,OAAO,CAAC,OAAO;IAC5C0B,SAAS;IACTE,QAAQ;IACRkC,WAAW,EAAEd,eAAe;IAC5Be,UAAU,EAAEH,cAAc;IAC1BI,eAAe,EAAE,eAAe;IAChCC,cAAc,EAAE,WAAW;IAC3BC,kBAAkB,EAAE,wBAAwB;IAC5CC,iBAAiB,EAAE,kBAAkB;IACrCC,gBAAgB,EAAE,SAAS;IAC3BC,eAAe,EAAE,SAAS;IAC1BC,sBAAsB,EAAE,SAAS;IACjCC,qBAAqB,EAAE;EACzB,CAAC,CAAC,EAAE,CAAC7C,SAAS,EAAEE,QAAQ,EAAEoB,eAAe,EAAEY,cAAc,CAAC,CAAC;;EAE3D;EACA,MAAMY,kBAAkB,GAAGxE,OAAO,CAAC,OAAO;IACxCyE,SAAS,EAAE7C,QAAQ;IACnBC,KAAK;IACL6C,WAAW,EAAE9B,eAAe;IAC5B+B,UAAU,EAAE,YAAY;IACxBC,YAAY,EAAE,yBAAyB;IAAE;IACzCC,WAAW,EAAE,yBAAyB;IACtCC,WAAW,EAAE,SAAS;IACtBC,iBAAiB,EAAE;EACrB,CAAC,CAAC,EAAE,CAACnD,QAAQ,EAAEC,KAAK,EAAEe,eAAe,CAAC,CAAC;;EAEvC;EACA,MAAMoC,sBAAsB,GAAGhF,OAAO,CAAC,OAAO;IAC5CiF,MAAM,EAAEjE,QAAQ,CAACyB,eAAe;IAChCjB,QAAQ,EAAEA,QAAQ,IAAIP,qBAAqB;IAC3CQ;EACF,CAAC,CAAC,EAAE,CAACD,QAAQ,EAAEC,gBAAgB,CAAC,CAAC;EAEjC,oBACEN,IAAA,CAACjB,IAAI;IAACgF,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,eAC5BlE,IAAA,CAACf,sBAAsB;MAAAiF,QAAA,eACrBhE,KAAA,CAACZ,cAAc;QAAA4E,QAAA,gBAEblE,IAAA,CAACX,QAAQ,IAAE,CAAC,eAGZW,IAAA,CAACjB,IAAI;UAACgF,KAAK,EAAEC,MAAM,CAACG,mBAAoB;UAAAD,QAAA,eACtClE,IAAA,CAACZ,UAAU,IAAE;QAAC,CACV,CAAC,eAGPY,IAAA,CAACT,iBAAiB;UAAA,GAAKmD;QAAsB,CAAG,CAAC,eAEjD1C,IAAA,CAACR,aAAa;UAAA,GAAK6D;QAAkB,CAAG,CAAC,eAGzCrD,IAAA,CAACJ,iBAAiB;UAAA,GAAKiE;QAAsB,CAAG,CAAC;MAAA,CACnC;IAAC,CACK;EAAC,CACrB,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMG,MAAM,GAAGhF,UAAU,CAACoF,MAAM,CAAC;EAC/BH,SAAS,EAAE;IACTI,IAAI,EAAE;EACR,CAAC;EACDF,mBAAmB,EAAE;IACnBG,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,EAAE;IACRC,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,aAAa,EAAE,MAAM,CAAE;EACzB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import { GameControlButton, GameOverModal, GameSettingsModal } from "../../shared/helpers/index.js";
6
+ import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/GamesService.js";
7
+ import { GameBackground, GameGrid, ScoreBoard } from "./components/index.js";
8
+ import { useCandyCrushStore, useScore, useIsPlaying, useIsGameOver } from "./CandyCrushStore.js";
9
+ import { CANDY_CRUSH_COLORS } from "./CandyCrushConstants.js";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ export const CandyCrush = /*#__PURE__*/React.memo(({
12
+ settings,
13
+ onSettingsChange
14
+ }) => {
15
+ // Zustand store selectors for optimal re-renders
16
+ const score = useScore();
17
+ const isPlaying = useIsPlaying();
18
+ const isGameOver = useIsGameOver();
19
+
20
+ // Store actions (memoized to prevent re-creation)
21
+ const startGame = useCandyCrushStore(state => state.startGame);
22
+ const stopGame = useCandyCrushStore(state => state.stopGame);
23
+ const resetGame = useCandyCrushStore(state => state.resetGame);
24
+ const initializeGame = useCandyCrushStore(state => state.initializeGame);
25
+ const updateSettings = useCandyCrushStore(state => state.updateSettings);
26
+
27
+ // Update settings when they change
28
+ React.useEffect(() => {
29
+ const enableSounds = settings?.enableSounds ?? true;
30
+ const enableHaptics = settings?.enableHaptics ?? true;
31
+ updateSettings(enableSounds, enableHaptics);
32
+ }, [settings?.enableSounds, settings?.enableHaptics, updateSettings]);
33
+
34
+ // Initialize on mount and when difficulty changes
35
+ React.useEffect(() => {
36
+ const difficulty = settings?.difficulty || 'easy';
37
+ initializeGame(difficulty);
38
+ }, [settings?.difficulty, initializeGame]);
39
+
40
+ // Game control handlers
41
+ const handleStartGame = React.useCallback(() => {
42
+ startGame();
43
+ }, [startGame]);
44
+ const handleResetGame = React.useCallback(() => {
45
+ resetGame();
46
+ }, [resetGame]);
47
+ const handleStopGame = React.useCallback(() => {
48
+ stopGame();
49
+ }, [stopGame]);
50
+
51
+ // Memoized GameControlButton props
52
+ const gameControlButtonProps = React.useMemo(() => ({
53
+ isPlaying,
54
+ gameOver: isGameOver,
55
+ onStartGame: handleStartGame,
56
+ onStopGame: handleStopGame,
57
+ onResetGame: handleResetGame,
58
+ startButtonText: 'Start Crushing!',
59
+ startButtonSubtext: 'Match 3 or more',
60
+ startButtonColor: CANDY_CRUSH_COLORS.BUTTON_PRIMARY,
61
+ startButtonBorderColor: CANDY_CRUSH_COLORS.BUTTON_SECONDARY
62
+ }), [isPlaying, isGameOver, handleStartGame, handleStopGame, handleResetGame]);
63
+
64
+ // Memoized GameOverModal props
65
+ const gameOverModalProps = React.useMemo(() => ({
66
+ isVisible: isGameOver,
67
+ score,
68
+ onPlayAgain: handleResetGame,
69
+ buttonText: 'Crush Again!',
70
+ primaryColor: CANDY_CRUSH_COLORS.MODAL_PRIMARY,
71
+ borderColor: CANDY_CRUSH_COLORS.MODAL_BORDER,
72
+ buttonColor: CANDY_CRUSH_COLORS.MODAL_BUTTON,
73
+ buttonBorderColor: CANDY_CRUSH_COLORS.MODAL_BUTTON_BORDER,
74
+ scoreFormatter: s => `${s}`,
75
+ additionalInfo: 'Time\'s up!'
76
+ }), [isGameOver, score, handleResetGame]);
77
+
78
+ // Memoized GameSettingsModal props
79
+ const gameSettingsModalProps = React.useMemo(() => ({
80
+ gameId: GAME_IDS.CANDY_CRUSH,
81
+ settings: settings || DEFAULT_GAME_SETTINGS,
82
+ onSettingsChange
83
+ }), [settings, onSettingsChange]);
84
+ return /*#__PURE__*/_jsx(GameBackground, {
85
+ children: /*#__PURE__*/_jsxs(View, {
86
+ style: styles.container,
87
+ children: [/*#__PURE__*/_jsx(View, {
88
+ style: styles.gridContainer,
89
+ children: /*#__PURE__*/_jsx(GameGrid, {})
90
+ }), /*#__PURE__*/_jsx(View, {
91
+ style: styles.scoreboardContainer,
92
+ children: /*#__PURE__*/_jsx(ScoreBoard, {})
93
+ }), /*#__PURE__*/_jsx(GameControlButton, {
94
+ ...gameControlButtonProps
95
+ }), /*#__PURE__*/_jsx(GameOverModal, {
96
+ ...gameOverModalProps
97
+ }), /*#__PURE__*/_jsx(GameSettingsModal, {
98
+ ...gameSettingsModalProps
99
+ })]
100
+ })
101
+ });
102
+ });
103
+ CandyCrush.displayName = 'CandyCrush';
104
+ const styles = StyleSheet.create({
105
+ container: {
106
+ flex: 1
107
+ },
108
+ gridContainer: {
109
+ flex: 1,
110
+ justifyContent: 'center',
111
+ alignItems: 'center'
112
+ },
113
+ scoreboardContainer: {
114
+ position: 'absolute',
115
+ top: 0,
116
+ left: 0,
117
+ right: 0,
118
+ zIndex: 10
119
+ }
120
+ });
121
+ //# sourceMappingURL=CandyCrush.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","GameBackground","GameGrid","ScoreBoard","useCandyCrushStore","useScore","useIsPlaying","useIsGameOver","CANDY_CRUSH_COLORS","jsx","_jsx","jsxs","_jsxs","CandyCrush","memo","settings","onSettingsChange","score","isPlaying","isGameOver","startGame","state","stopGame","resetGame","initializeGame","updateSettings","useEffect","enableSounds","enableHaptics","difficulty","handleStartGame","useCallback","handleResetGame","handleStopGame","gameControlButtonProps","useMemo","gameOver","onStartGame","onStopGame","onResetGame","startButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","MODAL_PRIMARY","borderColor","MODAL_BORDER","buttonColor","MODAL_BUTTON","buttonBorderColor","MODAL_BUTTON_BORDER","scoreFormatter","s","additionalInfo","gameSettingsModalProps","gameId","CANDY_CRUSH","children","style","styles","container","gridContainer","scoreboardContainer","displayName","create","flex","justifyContent","alignItems","position","top","left","right","zIndex"],"sourceRoot":"../../../../src","sources":["games/candy-crush/CandyCrush.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ // Candy Crush Game Constants
4
+ export const CANDY_CRUSH_GAME_CONFIG = {
5
+ GRID_SIZE: 8,
6
+ CANDY_TYPES: 6,
7
+ MIN_MATCH: 3,
8
+ ANIMATION_DURATION: 300,
9
+ FALL_DURATION: 400,
10
+ SWAP_DURATION: 200,
11
+ POINTS_PER_CANDY: 10,
12
+ COMBO_MULTIPLIER: 1.5,
13
+ SPECIAL_CANDY_THRESHOLD: 4
14
+ };
15
+ export const CANDY_COLORS = ['#FF3B30',
16
+ // Bright Red
17
+ '#34C759',
18
+ // Bright Green
19
+ '#007AFF',
20
+ // Bright Blue
21
+ '#FFCC00',
22
+ // Bright Yellow
23
+ '#9D4EDD',
24
+ // Bright Purple (replaced cyan)
25
+ '#FF6B9D' // Bright Pink
26
+ ];
27
+ export const CANDY_TYPES = {
28
+ NORMAL: 'normal',
29
+ STRIPED_HORIZONTAL: 'striped_h',
30
+ STRIPED_VERTICAL: 'striped_v',
31
+ WRAPPED: 'wrapped',
32
+ COLOR_BOMB: 'color_bomb'
33
+ };
34
+ export const CANDY_CRUSH_COLORS = {
35
+ BACKGROUND: '#2C3E50',
36
+ GRID_BACKGROUND: 'rgba(255, 149, 0, 0.1)',
37
+ GRID_BORDER: 'rgba(255, 149, 0, 0.3)',
38
+ SELECTED: 'rgba(255, 149, 0, 0.5)',
39
+ BUTTON_PRIMARY: '#FF9500',
40
+ BUTTON_SECONDARY: '#E68600',
41
+ SCORE_BACKGROUND: 'rgba(255, 149, 0, 0.4)',
42
+ SCORE_TEXT: '#FFFFFF',
43
+ TIME_GOOD: '#FF9500',
44
+ TIME_WARNING: '#FF9500',
45
+ TIME_CRITICAL: '#FF9500',
46
+ COMBO_TEXT: '#FF9500',
47
+ MODAL_PRIMARY: 'rgba(255, 149, 0, 0.95)',
48
+ MODAL_BORDER: 'rgba(230, 134, 0, 0.9)',
49
+ MODAL_BUTTON: '#FF9500',
50
+ MODAL_BUTTON_BORDER: '#E68600'
51
+ };
52
+ export const DIFFICULTY_CONFIG = {
53
+ easy: {
54
+ gameDuration: 60,
55
+ // 1 minute
56
+ candyTypes: 4
57
+ },
58
+ medium: {
59
+ gameDuration: 180,
60
+ // 3 minutes
61
+ candyTypes: 5
62
+ },
63
+ hard: {
64
+ gameDuration: 300,
65
+ // 5 minutes
66
+ candyTypes: 6
67
+ }
68
+ };
69
+ export const CANDY_CRUSH_SOUNDS = {
70
+ MATCH: {
71
+ text: 'Pop!',
72
+ pitch: 1.2,
73
+ rate: 1.5
74
+ },
75
+ SWAP: {
76
+ text: 'Swap',
77
+ pitch: 1.0,
78
+ rate: 1.8
79
+ },
80
+ SPECIAL: {
81
+ text: 'Boom!',
82
+ pitch: 1.5,
83
+ rate: 2.0
84
+ },
85
+ COMBO: {
86
+ text: 'Combo!',
87
+ pitch: 1.8,
88
+ rate: 2.2
89
+ },
90
+ WIN: {
91
+ text: 'Victory!',
92
+ pitch: 1.6,
93
+ rate: 1.8
94
+ },
95
+ LOSE: {
96
+ text: 'Game Over',
97
+ pitch: 0.8,
98
+ rate: 1.2
99
+ }
100
+ };
101
+
102
+ // Theme for settings modal
103
+ export const CANDY_CRUSH_THEME = {
104
+ backgroundColor: '#2C3E50',
105
+ headerBackgroundColor: '#FF9500',
106
+ headerTextColor: '#FFFFFF',
107
+ sectionBackgroundColor: 'rgba(255, 149, 0, 0.15)',
108
+ sectionTitleColor: '#FF9500',
109
+ buttonSelectedColor: '#FF9500',
110
+ buttonUnselectedColor: 'rgba(255, 149, 0, 0.2)',
111
+ buttonSelectedTextColor: '#FFFFFF',
112
+ buttonUnselectedTextColor: '#FF9500',
113
+ switchTrackColorFalse: 'rgba(255, 149, 0, 0.3)',
114
+ switchTrackColorTrue: '#FF9500',
115
+ switchThumbColor: '#FFFFFF',
116
+ infoTextColor: 'rgba(255, 255, 255, 0.7)'
117
+ };
118
+
119
+ // Difficulty descriptions
120
+ export const CANDY_CRUSH_DIFFICULTY_DESCRIPTIONS = {
121
+ easy: '1 minute • 4 candy types',
122
+ medium: '3 minutes • 5 candy types',
123
+ hard: '5 minutes • 6 candy types'
124
+ };
125
+ //# sourceMappingURL=CandyCrushConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CANDY_CRUSH_GAME_CONFIG","GRID_SIZE","CANDY_TYPES","MIN_MATCH","ANIMATION_DURATION","FALL_DURATION","SWAP_DURATION","POINTS_PER_CANDY","COMBO_MULTIPLIER","SPECIAL_CANDY_THRESHOLD","CANDY_COLORS","NORMAL","STRIPED_HORIZONTAL","STRIPED_VERTICAL","WRAPPED","COLOR_BOMB","CANDY_CRUSH_COLORS","BACKGROUND","GRID_BACKGROUND","GRID_BORDER","SELECTED","BUTTON_PRIMARY","BUTTON_SECONDARY","SCORE_BACKGROUND","SCORE_TEXT","TIME_GOOD","TIME_WARNING","TIME_CRITICAL","COMBO_TEXT","MODAL_PRIMARY","MODAL_BORDER","MODAL_BUTTON","MODAL_BUTTON_BORDER","DIFFICULTY_CONFIG","easy","gameDuration","candyTypes","medium","hard","CANDY_CRUSH_SOUNDS","MATCH","text","pitch","rate","SWAP","SPECIAL","COMBO","WIN","LOSE","CANDY_CRUSH_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","CANDY_CRUSH_DIFFICULTY_DESCRIPTIONS"],"sourceRoot":"../../../../src","sources":["games/candy-crush/CandyCrushConstants.ts"],"mappings":"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","ignoreList":[]}