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
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ import { Dimensions } from 'react-native';
4
+ const {
5
+ width,
6
+ height
7
+ } = Dimensions.get('window');
8
+ export const FLAPPY_BIRD_GAME_CONFIG = {
9
+ BIRD_SIZE: 40,
10
+ BIRD_START_X: width * 0.2,
11
+ BIRD_START_Y: height * 0.4,
12
+ GRAVITY: 0.25,
13
+ JUMP_VELOCITY: -6.5,
14
+ MAX_FALL_SPEED: 7,
15
+ VELOCITY_DAMPING: 0.98,
16
+ PIPE_WIDTH: 60,
17
+ PIPE_GAP: 200,
18
+ PIPE_SPEED_EASY: 1.5,
19
+ PIPE_SPEED_MEDIUM: 2.5,
20
+ PIPE_SPEED_HARD: 3.5,
21
+ PIPE_SPAWN_INTERVAL: 2800,
22
+ MIN_PIPE_HEIGHT: 100,
23
+ MAX_PIPE_HEIGHT: height * 0.6,
24
+ GROUND_HEIGHT: 80,
25
+ GAME_WIDTH: width,
26
+ GAME_HEIGHT: height
27
+ };
28
+ export const FLAPPY_BIRD_COLORS = {
29
+ SKY_START: '#87CEEB',
30
+ SKY_END: '#E0F6FF',
31
+ GROUND: '#DEB887',
32
+ GROUND_DARK: '#8B7355',
33
+ PIPE_GREEN: '#5CB85C',
34
+ PIPE_DARK: '#4A934A',
35
+ BIRD_YELLOW: '#FFD700',
36
+ BIRD_ORANGE: '#FF8C00',
37
+ SCORE_TEXT: '#FFFFFF',
38
+ BUTTON_PRIMARY: '#5CB85C',
39
+ BUTTON_SECONDARY: '#4A934A',
40
+ GAME_OVER_BG: 'rgba(74, 147, 74, 0.95)',
41
+ SCORE_BACKGROUND: 'rgba(92, 184, 92, 0.4)',
42
+ SCORE_BORDER: 'rgba(255, 215, 0, 0.8)'
43
+ };
44
+ export const FLAPPY_BIRD_THEME = {
45
+ backgroundColor: '#87CEEB',
46
+ headerBackgroundColor: '#5CB85C',
47
+ headerTextColor: '#FFFFFF',
48
+ sectionBackgroundColor: 'rgba(255, 255, 255, 0.95)',
49
+ sectionTitleColor: '#2C3E50',
50
+ buttonSelectedColor: '#5CB85C',
51
+ buttonUnselectedColor: '#E8E8E8',
52
+ buttonSelectedTextColor: '#FFFFFF',
53
+ buttonUnselectedTextColor: '#7F8C8D',
54
+ switchTrackColorFalse: '#D1D5DB',
55
+ switchTrackColorTrue: '#5CB85C',
56
+ switchThumbColor: '#FFFFFF',
57
+ infoTextColor: '#7F8C8D'
58
+ };
59
+ export const FLAPPY_BIRD_DIFFICULTY_DESCRIPTIONS = {
60
+ easy: {
61
+ title: 'Easy Mode',
62
+ description: 'Perfect for beginners! Slower pipes and more time to react.',
63
+ features: ['Slower pipe speed', 'Easier timing', 'Great for learning']
64
+ },
65
+ medium: {
66
+ title: 'Medium Mode',
67
+ description: 'Balanced challenge for casual players.',
68
+ features: ['Moderate pipe speed', 'Standard difficulty', 'Good practice']
69
+ },
70
+ hard: {
71
+ title: 'Hard Mode',
72
+ description: 'Fast-paced action for experienced players!',
73
+ features: ['Fast pipe speed', 'Quick reflexes needed', 'Maximum challenge']
74
+ }
75
+ };
76
+ export const DIFFICULTY_CONFIG = {
77
+ easy: {
78
+ pipeSpeed: FLAPPY_BIRD_GAME_CONFIG.PIPE_SPEED_EASY,
79
+ pipeGap: 250
80
+ },
81
+ medium: {
82
+ pipeSpeed: FLAPPY_BIRD_GAME_CONFIG.PIPE_SPEED_MEDIUM,
83
+ pipeGap: 220
84
+ },
85
+ hard: {
86
+ pipeSpeed: FLAPPY_BIRD_GAME_CONFIG.PIPE_SPEED_HARD,
87
+ pipeGap: 200
88
+ }
89
+ };
90
+ //# sourceMappingURL=FlappyBirdConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dimensions","width","height","get","FLAPPY_BIRD_GAME_CONFIG","BIRD_SIZE","BIRD_START_X","BIRD_START_Y","GRAVITY","JUMP_VELOCITY","MAX_FALL_SPEED","VELOCITY_DAMPING","PIPE_WIDTH","PIPE_GAP","PIPE_SPEED_EASY","PIPE_SPEED_MEDIUM","PIPE_SPEED_HARD","PIPE_SPAWN_INTERVAL","MIN_PIPE_HEIGHT","MAX_PIPE_HEIGHT","GROUND_HEIGHT","GAME_WIDTH","GAME_HEIGHT","FLAPPY_BIRD_COLORS","SKY_START","SKY_END","GROUND","GROUND_DARK","PIPE_GREEN","PIPE_DARK","BIRD_YELLOW","BIRD_ORANGE","SCORE_TEXT","BUTTON_PRIMARY","BUTTON_SECONDARY","GAME_OVER_BG","SCORE_BACKGROUND","SCORE_BORDER","FLAPPY_BIRD_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","FLAPPY_BIRD_DIFFICULTY_DESCRIPTIONS","easy","title","description","features","medium","hard","DIFFICULTY_CONFIG","pipeSpeed","pipeGap"],"sourceRoot":"../../../../src","sources":["games/flappy-bird/FlappyBirdConstants.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,MAAM;EAAEC,KAAK;EAAEC;AAAO,CAAC,GAAGF,UAAU,CAACG,GAAG,CAAC,QAAQ,CAAC;AAElD,OAAO,MAAMC,uBAAuB,GAAG;EACrCC,SAAS,EAAE,EAAE;EACbC,YAAY,EAAEL,KAAK,GAAG,GAAG;EACzBM,YAAY,EAAEL,MAAM,GAAG,GAAG;EAC1BM,OAAO,EAAE,IAAI;EACbC,aAAa,EAAE,CAAC,GAAG;EACnBC,cAAc,EAAE,CAAC;EACjBC,gBAAgB,EAAE,IAAI;EACtBC,UAAU,EAAE,EAAE;EACdC,QAAQ,EAAE,GAAG;EACbC,eAAe,EAAE,GAAG;EACpBC,iBAAiB,EAAE,GAAG;EACtBC,eAAe,EAAE,GAAG;EACpBC,mBAAmB,EAAE,IAAI;EACzBC,eAAe,EAAE,GAAG;EACpBC,eAAe,EAAEjB,MAAM,GAAG,GAAG;EAC7BkB,aAAa,EAAE,EAAE;EACjBC,UAAU,EAAEpB,KAAK;EACjBqB,WAAW,EAAEpB;AACf,CAAC;AAED,OAAO,MAAMqB,kBAAkB,GAAG;EAChCC,SAAS,EAAE,SAAS;EACpBC,OAAO,EAAE,SAAS;EAClBC,MAAM,EAAE,SAAS;EACjBC,WAAW,EAAE,SAAS;EACtBC,UAAU,EAAE,SAAS;EACrBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,UAAU,EAAE,SAAS;EACrBC,cAAc,EAAE,SAAS;EACzBC,gBAAgB,EAAE,SAAS;EAC3BC,YAAY,EAAE,yBAAyB;EACvCC,gBAAgB,EAAE,wBAAwB;EAC1CC,YAAY,EAAE;AAChB,CAAC;AAED,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,eAAe,EAAE,SAAS;EAC1BC,qBAAqB,EAAE,SAAS;EAChCC,eAAe,EAAE,SAAS;EAC1BC,sBAAsB,EAAE,2BAA2B;EACnDC,iBAAiB,EAAE,SAAS;EAC5BC,mBAAmB,EAAE,SAAS;EAC9BC,qBAAqB,EAAE,SAAS;EAChCC,uBAAuB,EAAE,SAAS;EAClCC,yBAAyB,EAAE,SAAS;EACpCC,qBAAqB,EAAE,SAAS;EAChCC,oBAAoB,EAAE,SAAS;EAC/BC,gBAAgB,EAAE,SAAS;EAC3BC,aAAa,EAAE;AACjB,CAAC;AAED,OAAO,MAAMC,mCAAmC,GAAG;EACjDC,IAAI,EAAE;IACJC,KAAK,EAAE,WAAW;IAClBC,WAAW,EAAE,6DAA6D;IAC1EC,QAAQ,EAAE,CAAC,mBAAmB,EAAE,eAAe,EAAE,oBAAoB;EACvE,CAAC;EACDC,MAAM,EAAE;IACNH,KAAK,EAAE,aAAa;IACpBC,WAAW,EAAE,wCAAwC;IACrDC,QAAQ,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,eAAe;EAC1E,CAAC;EACDE,IAAI,EAAE;IACJJ,KAAK,EAAE,WAAW;IAClBC,WAAW,EAAE,4CAA4C;IACzDC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,mBAAmB;EAC5E;AACF,CAAC;AAED,OAAO,MAAMG,iBAAiB,GAAG;EAC/BN,IAAI,EAAE;IACJO,SAAS,EAAExD,uBAAuB,CAACU,eAAe;IAClD+C,OAAO,EAAE;EACX,CAAC;EACDJ,MAAM,EAAE;IACNG,SAAS,EAAExD,uBAAuB,CAACW,iBAAiB;IACpD8C,OAAO,EAAE;EACX,CAAC;EACDH,IAAI,EAAE;IACJE,SAAS,EAAExD,uBAAuB,CAACY,eAAe;IAClD6C,OAAO,EAAE;EACX;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+
3
+ import { create } from 'zustand';
4
+ import { subscribeWithSelector } from 'zustand/middleware';
5
+ import { immerMiddleware } from "../../services/GamesService.js";
6
+ import { FLAPPY_BIRD_GAME_CONFIG, DIFFICULTY_CONFIG } from "./FlappyBirdConstants.js";
7
+ const BRICK_WALL_HEIGHT = 150; // Must match Pipes.tsx
8
+
9
+ const generateRandomPipeHeight = () => {
10
+ const {
11
+ MIN_PIPE_HEIGHT,
12
+ GAME_HEIGHT,
13
+ GROUND_HEIGHT
14
+ } = FLAPPY_BIRD_GAME_CONFIG;
15
+ const playableHeight = GAME_HEIGHT - GROUND_HEIGHT - BRICK_WALL_HEIGHT * 2;
16
+ const minHeight = BRICK_WALL_HEIGHT + MIN_PIPE_HEIGHT;
17
+ const maxHeight = BRICK_WALL_HEIGHT + playableHeight * 0.6;
18
+ return minHeight + Math.random() * (maxHeight - minHeight);
19
+ };
20
+ export const useFlappyBirdStore = create()(subscribeWithSelector(immerMiddleware((set, get) => ({
21
+ isPlaying: false,
22
+ isGameOver: false,
23
+ score: 0,
24
+ survivalTime: 0,
25
+ birdY: FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y,
26
+ birdVelocity: 0,
27
+ pipes: [],
28
+ collisionBlasts: [],
29
+ gameLoopInterval: null,
30
+ pipeSpawnInterval: null,
31
+ timerInterval: null,
32
+ initializeGame: () => {
33
+ set(state => {
34
+ state.isPlaying = false;
35
+ state.isGameOver = false;
36
+ state.score = 0;
37
+ state.survivalTime = 0;
38
+ state.birdY = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y;
39
+ state.birdVelocity = 0;
40
+ state.pipes = [];
41
+ state.collisionBlasts = [];
42
+ });
43
+ },
44
+ startGame: settings => {
45
+ const state = get();
46
+ if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
47
+ if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
48
+ if (state.timerInterval) clearInterval(state.timerInterval);
49
+ set(state => {
50
+ state.isPlaying = true;
51
+ state.isGameOver = false;
52
+ state.birdY = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y;
53
+ state.birdVelocity = 0;
54
+ state.pipes = [];
55
+ state.score = 0;
56
+ state.survivalTime = 0;
57
+ });
58
+
59
+ // Start game loop (60fps)
60
+ const gameLoop = setInterval(() => {
61
+ get().updatePhysics(settings);
62
+ }, 1000 / 60);
63
+
64
+ // Start pipe spawning
65
+ const pipeSpawn = setInterval(() => {
66
+ get().spawnPipe(settings);
67
+ }, FLAPPY_BIRD_GAME_CONFIG.PIPE_SPAWN_INTERVAL);
68
+
69
+ // Start survival timer (1 second intervals)
70
+ const timer = setInterval(() => {
71
+ set(state => {
72
+ state.survivalTime += 1;
73
+ });
74
+ }, 1000);
75
+ set(state => {
76
+ state.gameLoopInterval = gameLoop;
77
+ state.pipeSpawnInterval = pipeSpawn;
78
+ state.timerInterval = timer;
79
+ });
80
+
81
+ // Spawn first pipe immediately
82
+ setTimeout(() => get().spawnPipe(settings), 500);
83
+ },
84
+ stopGame: () => {
85
+ const state = get();
86
+ if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
87
+ if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
88
+ if (state.timerInterval) clearInterval(state.timerInterval);
89
+ set(state => {
90
+ state.isPlaying = false;
91
+ state.isGameOver = true;
92
+ state.gameLoopInterval = null;
93
+ state.pipeSpawnInterval = null;
94
+ state.timerInterval = null;
95
+ });
96
+ },
97
+ resetGame: () => {
98
+ const state = get();
99
+ if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
100
+ if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
101
+ if (state.timerInterval) clearInterval(state.timerInterval);
102
+ set(state => {
103
+ state.isPlaying = false;
104
+ state.isGameOver = false;
105
+ state.score = 0;
106
+ state.survivalTime = 0;
107
+ state.birdY = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y;
108
+ state.birdVelocity = 0;
109
+ state.pipes = [];
110
+ state.collisionBlasts = [];
111
+ state.gameLoopInterval = null;
112
+ state.pipeSpawnInterval = null;
113
+ state.timerInterval = null;
114
+ });
115
+ },
116
+ jump: () => {
117
+ const state = get();
118
+ if (!state.isPlaying || state.isGameOver) return;
119
+ set(state => {
120
+ state.birdVelocity = FLAPPY_BIRD_GAME_CONFIG.JUMP_VELOCITY;
121
+ });
122
+ },
123
+ updatePhysics: settings => {
124
+ const state = get();
125
+ if (!state.isPlaying || state.isGameOver) return;
126
+ const config = DIFFICULTY_CONFIG[settings.difficulty];
127
+ const {
128
+ GAME_HEIGHT,
129
+ GROUND_HEIGHT,
130
+ GRAVITY,
131
+ BIRD_SIZE,
132
+ MAX_FALL_SPEED,
133
+ VELOCITY_DAMPING
134
+ } = FLAPPY_BIRD_GAME_CONFIG;
135
+ let topWallCollision = false;
136
+ let bottomWallCollision = false;
137
+ set(draftState => {
138
+ // Update bird physics with damping for smoother movement
139
+ draftState.birdVelocity += GRAVITY;
140
+ draftState.birdVelocity *= VELOCITY_DAMPING;
141
+
142
+ // Cap maximum fall speed for more control
143
+ if (draftState.birdVelocity > MAX_FALL_SPEED) {
144
+ draftState.birdVelocity = MAX_FALL_SPEED;
145
+ }
146
+ draftState.birdY += draftState.birdVelocity;
147
+
148
+ // Update pipes
149
+ for (let i = draftState.pipes.length - 1; i >= 0; i--) {
150
+ const pipe = draftState.pipes[i];
151
+ if (!pipe) continue;
152
+ pipe.x -= config.pipeSpeed;
153
+
154
+ // Check if bird passed pipe
155
+ if (!pipe.passed && pipe.x + FLAPPY_BIRD_GAME_CONFIG.PIPE_WIDTH < FLAPPY_BIRD_GAME_CONFIG.BIRD_START_X) {
156
+ pipe.passed = true;
157
+ draftState.score += 1;
158
+ }
159
+
160
+ // Remove off-screen pipes
161
+ if (pipe.x + FLAPPY_BIRD_GAME_CONFIG.PIPE_WIDTH < 0) {
162
+ draftState.pipes.splice(i, 1);
163
+ }
164
+ }
165
+
166
+ // Check boundaries - brick walls are at 150px from top and bottom
167
+ // Top brick wall collision
168
+ if (draftState.birdY < BRICK_WALL_HEIGHT) {
169
+ draftState.birdY = BRICK_WALL_HEIGHT;
170
+ draftState.birdVelocity = 0;
171
+ draftState.isGameOver = true;
172
+ draftState.isPlaying = false;
173
+ topWallCollision = true;
174
+ }
175
+
176
+ // Bottom brick wall collision
177
+ if (draftState.birdY + BIRD_SIZE > GAME_HEIGHT - GROUND_HEIGHT - BRICK_WALL_HEIGHT) {
178
+ draftState.birdY = GAME_HEIGHT - GROUND_HEIGHT - BRICK_WALL_HEIGHT - BIRD_SIZE;
179
+ draftState.isGameOver = true;
180
+ draftState.isPlaying = false;
181
+ bottomWallCollision = true;
182
+ }
183
+ });
184
+
185
+ // Add collision blasts after state update
186
+ if (topWallCollision) {
187
+ const blastX = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_X + BIRD_SIZE / 2;
188
+ const blastY = BRICK_WALL_HEIGHT + BIRD_SIZE / 2;
189
+ get().addCollisionBlast(blastX, blastY);
190
+ get().stopGame(); // Stop game and clear all intervals including timer
191
+ }
192
+ if (bottomWallCollision) {
193
+ const blastX = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_X + BIRD_SIZE / 2;
194
+ const blastY = GAME_HEIGHT - GROUND_HEIGHT - BRICK_WALL_HEIGHT - BIRD_SIZE / 2;
195
+ get().addCollisionBlast(blastX, blastY);
196
+ get().stopGame(); // Stop game and clear all intervals including timer
197
+ }
198
+
199
+ // Check collision with pipes
200
+ if (get().checkCollision()) {
201
+ get().stopGame();
202
+ }
203
+ },
204
+ spawnPipe: settings => {
205
+ const state = get();
206
+ if (!state.isPlaying || state.isGameOver) return;
207
+ const config = DIFFICULTY_CONFIG[settings.difficulty];
208
+ const topHeight = generateRandomPipeHeight();
209
+ const bottomY = topHeight + config.pipeGap;
210
+ const pipe = {
211
+ id: `pipe-${Date.now()}-${Math.random()}`,
212
+ x: FLAPPY_BIRD_GAME_CONFIG.GAME_WIDTH,
213
+ topHeight,
214
+ bottomY,
215
+ passed: false
216
+ };
217
+ set(state => {
218
+ state.pipes.push(pipe);
219
+ });
220
+ },
221
+ checkCollision: () => {
222
+ const state = get();
223
+ const {
224
+ BIRD_START_X,
225
+ BIRD_SIZE,
226
+ PIPE_WIDTH
227
+ } = FLAPPY_BIRD_GAME_CONFIG;
228
+ const birdLeft = BIRD_START_X;
229
+ const birdRight = BIRD_START_X + BIRD_SIZE;
230
+ const birdTop = state.birdY;
231
+ const birdBottom = state.birdY + BIRD_SIZE;
232
+ const birdCenterX = BIRD_START_X + BIRD_SIZE / 2;
233
+ const birdCenterY = state.birdY + BIRD_SIZE / 2;
234
+ for (const pipe of state.pipes) {
235
+ const pipeLeft = pipe.x;
236
+ const pipeRight = pipe.x + PIPE_WIDTH;
237
+
238
+ // Check if bird is in pipe's horizontal range
239
+ if (birdRight > pipeLeft && birdLeft < pipeRight) {
240
+ // Check collision with top pipe
241
+ if (birdTop < pipe.topHeight) {
242
+ get().addCollisionBlast(birdCenterX, birdCenterY);
243
+ return true;
244
+ }
245
+ // Check collision with bottom pipe
246
+ if (birdBottom > pipe.bottomY) {
247
+ get().addCollisionBlast(birdCenterX, birdCenterY);
248
+ return true;
249
+ }
250
+ }
251
+ }
252
+ return false;
253
+ },
254
+ addCollisionBlast: (x, y) => {
255
+ set(state => {
256
+ state.collisionBlasts.push({
257
+ id: `blast-${Date.now()}-${Math.random()}`,
258
+ x,
259
+ y
260
+ });
261
+ });
262
+ },
263
+ removeCollisionBlast: id => {
264
+ set(state => {
265
+ state.collisionBlasts = state.collisionBlasts.filter(blast => blast.id !== id);
266
+ });
267
+ }
268
+ }))));
269
+ export const useIsPlaying = () => useFlappyBirdStore(state => state.isPlaying);
270
+ export const useIsGameOver = () => useFlappyBirdStore(state => state.isGameOver);
271
+ export const useScore = () => useFlappyBirdStore(state => state.score);
272
+ export const useSurvivalTime = () => useFlappyBirdStore(state => state.survivalTime);
273
+ export const useBirdY = () => useFlappyBirdStore(state => state.birdY);
274
+ export const usePipes = () => useFlappyBirdStore(state => state.pipes);
275
+ export const useCollisionBlasts = () => useFlappyBirdStore(state => state.collisionBlasts);
276
+ //# sourceMappingURL=FlappyBirdStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","subscribeWithSelector","immerMiddleware","FLAPPY_BIRD_GAME_CONFIG","DIFFICULTY_CONFIG","BRICK_WALL_HEIGHT","generateRandomPipeHeight","MIN_PIPE_HEIGHT","GAME_HEIGHT","GROUND_HEIGHT","playableHeight","minHeight","maxHeight","Math","random","useFlappyBirdStore","set","get","isPlaying","isGameOver","score","survivalTime","birdY","BIRD_START_Y","birdVelocity","pipes","collisionBlasts","gameLoopInterval","pipeSpawnInterval","timerInterval","initializeGame","state","startGame","settings","clearInterval","gameLoop","setInterval","updatePhysics","pipeSpawn","spawnPipe","PIPE_SPAWN_INTERVAL","timer","setTimeout","stopGame","resetGame","jump","JUMP_VELOCITY","config","difficulty","GRAVITY","BIRD_SIZE","MAX_FALL_SPEED","VELOCITY_DAMPING","topWallCollision","bottomWallCollision","draftState","i","length","pipe","x","pipeSpeed","passed","PIPE_WIDTH","BIRD_START_X","splice","blastX","blastY","addCollisionBlast","checkCollision","topHeight","bottomY","pipeGap","id","Date","now","GAME_WIDTH","push","birdLeft","birdRight","birdTop","birdBottom","birdCenterX","birdCenterY","pipeLeft","pipeRight","y","removeCollisionBlast","filter","blast","useIsPlaying","useIsGameOver","useScore","useSurvivalTime","useBirdY","usePipes","useCollisionBlasts"],"sourceRoot":"../../../../src","sources":["games/flappy-bird/FlappyBirdStore.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import Animated, { useAnimatedStyle, interpolate, Extrapolate } from 'react-native-reanimated';
5
+ import { Canvas, Circle, Group } from '@shopify/react-native-skia';
6
+ import { FLAPPY_BIRD_GAME_CONFIG, FLAPPY_BIRD_COLORS } from "../FlappyBirdConstants.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ const {
9
+ BIRD_SIZE
10
+ } = FLAPPY_BIRD_GAME_CONFIG;
11
+
12
+ // Define styles outside component to prevent re-creation
13
+ const birdContainerStyle = {
14
+ position: 'absolute',
15
+ width: BIRD_SIZE,
16
+ height: BIRD_SIZE
17
+ };
18
+ const canvasStyle = {
19
+ width: BIRD_SIZE,
20
+ height: BIRD_SIZE
21
+ };
22
+ export const Bird = /*#__PURE__*/React.memo(({
23
+ birdY,
24
+ velocity
25
+ }) => {
26
+ const {
27
+ BIRD_START_X
28
+ } = FLAPPY_BIRD_GAME_CONFIG;
29
+
30
+ // Use derived value instead of useEffect (PERFORMANCE OPTIMIZATION)
31
+ const animatedStyle = useAnimatedStyle(() => {
32
+ 'worklet';
33
+
34
+ const targetRotation = interpolate(velocity, [-15, 15], [-30, 90], Extrapolate.CLAMP);
35
+ return {
36
+ transform: [{
37
+ translateX: BIRD_START_X
38
+ }, {
39
+ translateY: birdY
40
+ }, {
41
+ rotate: `${targetRotation}deg`
42
+ }]
43
+ };
44
+ }, [birdY, velocity]);
45
+ return /*#__PURE__*/_jsx(Animated.View, {
46
+ style: [birdContainerStyle, animatedStyle],
47
+ children: /*#__PURE__*/_jsx(Canvas, {
48
+ style: canvasStyle,
49
+ children: /*#__PURE__*/_jsxs(Group, {
50
+ children: [/*#__PURE__*/_jsx(Circle, {
51
+ cx: BIRD_SIZE / 2,
52
+ cy: BIRD_SIZE / 2,
53
+ r: BIRD_SIZE / 2,
54
+ color: FLAPPY_BIRD_COLORS.BIRD_YELLOW
55
+ }), /*#__PURE__*/_jsx(Circle, {
56
+ cx: BIRD_SIZE / 2,
57
+ cy: BIRD_SIZE / 2 + 5,
58
+ r: BIRD_SIZE / 3,
59
+ color: FLAPPY_BIRD_COLORS.BIRD_ORANGE
60
+ }), /*#__PURE__*/_jsx(Circle, {
61
+ cx: BIRD_SIZE / 2 + 8,
62
+ cy: BIRD_SIZE / 2 - 5,
63
+ r: 4,
64
+ color: "#FFFFFF"
65
+ }), /*#__PURE__*/_jsx(Circle, {
66
+ cx: BIRD_SIZE / 2 + 8,
67
+ cy: BIRD_SIZE / 2 - 5,
68
+ r: 2,
69
+ color: "#000000"
70
+ }), /*#__PURE__*/_jsx(Circle, {
71
+ cx: BIRD_SIZE / 2 + 15,
72
+ cy: BIRD_SIZE / 2,
73
+ r: 5,
74
+ color: "#FF8C00"
75
+ }), /*#__PURE__*/_jsx(Circle, {
76
+ cx: BIRD_SIZE / 2 - 5,
77
+ cy: BIRD_SIZE / 2 + 5,
78
+ r: 10,
79
+ color: FLAPPY_BIRD_COLORS.BIRD_ORANGE,
80
+ opacity: 0.8
81
+ })]
82
+ })
83
+ })
84
+ });
85
+ });
86
+ Bird.displayName = 'Bird';
87
+ //# sourceMappingURL=Bird.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Animated","useAnimatedStyle","interpolate","Extrapolate","Canvas","Circle","Group","FLAPPY_BIRD_GAME_CONFIG","FLAPPY_BIRD_COLORS","jsx","_jsx","jsxs","_jsxs","BIRD_SIZE","birdContainerStyle","position","width","height","canvasStyle","Bird","memo","birdY","velocity","BIRD_START_X","animatedStyle","targetRotation","CLAMP","transform","translateX","translateY","rotate","View","style","children","cx","cy","r","color","BIRD_YELLOW","BIRD_ORANGE","opacity","displayName"],"sourceRoot":"../../../../../src","sources":["games/flappy-bird/components/Bird.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ import React, { useCallback, useEffect, useRef } from 'react';
4
+ import { View, StyleSheet, TouchableOpacity } from 'react-native';
5
+ import { GestureHandlerRootView } from 'react-native-gesture-handler';
6
+ import { usePipes, useFlappyBirdStore, useCollisionBlasts } from "../FlappyBirdStore.js";
7
+ import { Bird } from "./Bird.js";
8
+ import { Pipes } from "./Pipes.js";
9
+ import { ParticleBlast } from "../../../shared/helpers/index.js";
10
+ import { playSound, GAME_SOUNDS } from "../../../services/SoundsService.js";
11
+ import { playHaptic, HapticType } from "../../../services/HapticsService.js";
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ // Constant particle colors - defined outside component to prevent re-creation
14
+ const PARTICLE_COLORS = ['#FFD700', '#FF8C00', '#FF6B6B', '#FF4757', '#FFA500', '#FF6347'];
15
+ export const GameArea = /*#__PURE__*/React.memo(({
16
+ settings
17
+ }) => {
18
+ const birdY = useFlappyBirdStore(state => state.birdY);
19
+ const birdVelocity = useFlappyBirdStore(state => state.birdVelocity);
20
+ const isPlaying = useFlappyBirdStore(state => state.isPlaying);
21
+ const score = useFlappyBirdStore(state => state.score);
22
+ const pipes = usePipes();
23
+ const collisionBlasts = useCollisionBlasts();
24
+
25
+ // Stable references - don't change on re-renders
26
+ const jump = useFlappyBirdStore(state => state.jump);
27
+ const removeCollisionBlast = useFlappyBirdStore(state => state.removeCollisionBlast);
28
+ const prevScoreRef = useRef(0);
29
+
30
+ // Play sound when score increases (bird passes through pipe)
31
+ useEffect(() => {
32
+ if (score > prevScoreRef.current && isPlaying) {
33
+ playSound(GAME_SOUNDS.FLAPPY_BIRD.SCORE, settings.enableSounds);
34
+ playHaptic(HapticType.LIGHT, settings.enableHaptics);
35
+ }
36
+ prevScoreRef.current = score;
37
+ }, [score, isPlaying, settings.enableSounds, settings.enableHaptics]);
38
+ const handleTap = useCallback(() => {
39
+ if (!isPlaying) return;
40
+ jump();
41
+ playSound(GAME_SOUNDS.FLAPPY_BIRD.FLAP, settings.enableSounds);
42
+ playHaptic(HapticType.LIGHT, settings.enableHaptics);
43
+ }, [isPlaying, jump, settings.enableSounds, settings.enableHaptics]);
44
+
45
+ // Memoize particle blast callback to prevent re-creating on every render
46
+ const handleBlastComplete = useCallback(id => {
47
+ removeCollisionBlast(id);
48
+ }, [removeCollisionBlast]);
49
+ return /*#__PURE__*/_jsx(View, {
50
+ style: styles.container,
51
+ children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
52
+ children: /*#__PURE__*/_jsx(TouchableOpacity, {
53
+ style: styles.container,
54
+ activeOpacity: 1,
55
+ onPress: handleTap,
56
+ children: /*#__PURE__*/_jsxs(View, {
57
+ style: styles.gameContainer,
58
+ children: [/*#__PURE__*/_jsx(Pipes, {
59
+ pipes: pipes
60
+ }), /*#__PURE__*/_jsx(Bird, {
61
+ birdY: birdY,
62
+ velocity: birdVelocity
63
+ }), collisionBlasts.map(blast => /*#__PURE__*/_jsx(ParticleBlast, {
64
+ x: blast.x,
65
+ y: blast.y,
66
+ particleCount: 12,
67
+ colors: PARTICLE_COLORS,
68
+ duration: 800,
69
+ onComplete: () => handleBlastComplete(blast.id)
70
+ }, blast.id))]
71
+ })
72
+ })
73
+ })
74
+ });
75
+ });
76
+ const styles = StyleSheet.create({
77
+ container: {
78
+ flex: 1
79
+ },
80
+ gameContainer: {
81
+ flex: 1,
82
+ position: 'relative'
83
+ }
84
+ });
85
+ GameArea.displayName = 'GameArea';
86
+ //# sourceMappingURL=GameArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useEffect","useRef","View","StyleSheet","TouchableOpacity","GestureHandlerRootView","usePipes","useFlappyBirdStore","useCollisionBlasts","Bird","Pipes","ParticleBlast","playSound","GAME_SOUNDS","playHaptic","HapticType","jsx","_jsx","jsxs","_jsxs","PARTICLE_COLORS","GameArea","memo","settings","birdY","state","birdVelocity","isPlaying","score","pipes","collisionBlasts","jump","removeCollisionBlast","prevScoreRef","current","FLAPPY_BIRD","SCORE","enableSounds","LIGHT","enableHaptics","handleTap","FLAP","handleBlastComplete","id","style","styles","container","children","activeOpacity","onPress","gameContainer","velocity","map","blast","x","y","particleCount","colors","duration","onComplete","create","flex","position","displayName"],"sourceRoot":"../../../../../src","sources":["games/flappy-bird/components/GameArea.tsx"],"mappings":"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","ignoreList":[]}