react-native-games 0.7.0 → 1.0.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 (459) hide show
  1. package/README.md +507 -84
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +13 -21
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +1 -1
  5. package/lib/module/games/balloon-blaster/components/GameArea.js +1 -1
  6. package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
  7. package/lib/module/games/balloon-blaster/components/GameBackground.js +24 -17
  8. package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -1
  9. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +47 -47
  10. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  11. package/lib/module/games/candy-crush/CandyCrush.js +131 -0
  12. package/lib/module/games/candy-crush/CandyCrush.js.map +1 -0
  13. package/lib/module/games/candy-crush/CandyCrushConstants.js +125 -0
  14. package/lib/module/games/candy-crush/CandyCrushConstants.js.map +1 -0
  15. package/lib/module/games/candy-crush/CandyCrushService.js +370 -0
  16. package/lib/module/games/candy-crush/CandyCrushService.js.map +1 -0
  17. package/lib/module/games/candy-crush/CandyCrushStore.js +303 -0
  18. package/lib/module/games/candy-crush/CandyCrushStore.js.map +1 -0
  19. package/lib/module/games/candy-crush/components/CandyItem.js +191 -0
  20. package/lib/module/games/candy-crush/components/CandyItem.js.map +1 -0
  21. package/lib/module/games/candy-crush/components/GameBackground.js +85 -0
  22. package/lib/module/games/candy-crush/components/GameBackground.js.map +1 -0
  23. package/lib/module/games/candy-crush/components/GameGrid.js +314 -0
  24. package/lib/module/games/candy-crush/components/GameGrid.js.map +1 -0
  25. package/lib/module/games/candy-crush/components/ScoreBoard.js +79 -0
  26. package/lib/module/games/candy-crush/components/ScoreBoard.js.map +1 -0
  27. package/lib/module/games/candy-crush/components/index.js +7 -0
  28. package/lib/module/games/candy-crush/components/index.js.map +1 -0
  29. package/lib/module/games/candy-crush/index.js +6 -0
  30. package/lib/module/games/candy-crush/index.js.map +1 -0
  31. package/lib/module/games/colors-sort/ColorsSort.js +143 -0
  32. package/lib/module/games/colors-sort/ColorsSort.js.map +1 -0
  33. package/lib/module/games/colors-sort/ColorsSortConstants.js +72 -0
  34. package/lib/module/games/colors-sort/ColorsSortConstants.js.map +1 -0
  35. package/lib/module/games/colors-sort/ColorsSortService.js +255 -0
  36. package/lib/module/games/colors-sort/ColorsSortService.js.map +1 -0
  37. package/lib/module/games/colors-sort/ColorsSortStore.js +257 -0
  38. package/lib/module/games/colors-sort/ColorsSortStore.js.map +1 -0
  39. package/lib/module/games/colors-sort/components/ColorContainer.js +140 -0
  40. package/lib/module/games/colors-sort/components/ColorContainer.js.map +1 -0
  41. package/lib/module/games/colors-sort/components/GameBackground.js +135 -0
  42. package/lib/module/games/colors-sort/components/GameBackground.js.map +1 -0
  43. package/lib/module/games/colors-sort/components/ScoreBoard.js +70 -0
  44. package/lib/module/games/colors-sort/components/ScoreBoard.js.map +1 -0
  45. package/lib/module/games/colors-sort/components/index.js +6 -0
  46. package/lib/module/games/colors-sort/components/index.js.map +1 -0
  47. package/lib/module/games/dino-jump/DinoJump.js +209 -0
  48. package/lib/module/games/dino-jump/DinoJump.js.map +1 -0
  49. package/lib/module/games/dino-jump/DinoJumpConstants.js +189 -0
  50. package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -0
  51. package/lib/module/games/dino-jump/DinoJumpService.js +270 -0
  52. package/lib/module/games/dino-jump/DinoJumpService.js.map +1 -0
  53. package/lib/module/games/dino-jump/DinoJumpStore.js +381 -0
  54. package/lib/module/games/dino-jump/DinoJumpStore.js.map +1 -0
  55. package/lib/module/games/dino-jump/components/DinoSprite.js +418 -0
  56. package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -0
  57. package/lib/module/games/dino-jump/components/GameArea.js +68 -0
  58. package/lib/module/games/dino-jump/components/GameArea.js.map +1 -0
  59. package/lib/module/games/dino-jump/components/GameBackground.js +444 -0
  60. package/lib/module/games/dino-jump/components/GameBackground.js.map +1 -0
  61. package/lib/module/games/dino-jump/components/ObstacleSprite.js +306 -0
  62. package/lib/module/games/dino-jump/components/ObstacleSprite.js.map +1 -0
  63. package/lib/module/games/dino-jump/components/ScoreBoard.js +105 -0
  64. package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -0
  65. package/lib/module/games/dino-jump/components/StarSprite.js +45 -0
  66. package/lib/module/games/dino-jump/components/StarSprite.js.map +1 -0
  67. package/lib/module/games/dino-jump/components/index.js +9 -0
  68. package/lib/module/games/dino-jump/components/index.js.map +1 -0
  69. package/lib/module/games/flappy-bird/FlappyBird.js +126 -0
  70. package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -0
  71. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +90 -0
  72. package/lib/module/games/flappy-bird/FlappyBirdConstants.js.map +1 -0
  73. package/lib/module/games/flappy-bird/FlappyBirdStore.js +300 -0
  74. package/lib/module/games/flappy-bird/FlappyBirdStore.js.map +1 -0
  75. package/lib/module/games/flappy-bird/components/Bird.js +87 -0
  76. package/lib/module/games/flappy-bird/components/Bird.js.map +1 -0
  77. package/lib/module/games/flappy-bird/components/GameArea.js +87 -0
  78. package/lib/module/games/flappy-bird/components/GameArea.js.map +1 -0
  79. package/lib/module/games/flappy-bird/components/GameBackground.js +79 -0
  80. package/lib/module/games/flappy-bird/components/GameBackground.js.map +1 -0
  81. package/lib/module/games/flappy-bird/components/Pipes.js +172 -0
  82. package/lib/module/games/flappy-bird/components/Pipes.js.map +1 -0
  83. package/lib/module/games/flappy-bird/components/ScoreBoard.js +73 -0
  84. package/lib/module/games/flappy-bird/components/ScoreBoard.js.map +1 -0
  85. package/lib/module/games/flappy-bird/components/index.js +8 -0
  86. package/lib/module/games/flappy-bird/components/index.js.map +1 -0
  87. package/lib/module/games/fruit-merger/FruitMerger.js +120 -0
  88. package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -0
  89. package/lib/module/games/fruit-merger/FruitMergerConstants.js +119 -0
  90. package/lib/module/games/fruit-merger/FruitMergerConstants.js.map +1 -0
  91. package/lib/module/games/fruit-merger/FruitMergerService.js +13 -0
  92. package/lib/module/games/fruit-merger/FruitMergerService.js.map +1 -0
  93. package/lib/module/games/fruit-merger/FruitMergerStore.js +315 -0
  94. package/lib/module/games/fruit-merger/FruitMergerStore.js.map +1 -0
  95. package/lib/module/games/fruit-merger/components/FruitItem.js +102 -0
  96. package/lib/module/games/fruit-merger/components/FruitItem.js.map +1 -0
  97. package/lib/module/games/fruit-merger/components/GameArea.js +103 -0
  98. package/lib/module/games/fruit-merger/components/GameArea.js.map +1 -0
  99. package/lib/module/games/fruit-merger/components/GameBackground.js +498 -0
  100. package/lib/module/games/fruit-merger/components/GameBackground.js.map +1 -0
  101. package/lib/module/games/fruit-merger/components/ScoreBoard.js +58 -0
  102. package/lib/module/games/fruit-merger/components/ScoreBoard.js.map +1 -0
  103. package/lib/module/games/fruit-merger/components/index.js +7 -0
  104. package/lib/module/games/fruit-merger/components/index.js.map +1 -0
  105. package/lib/module/games/fruit-ninja/FruitNinja.js +14 -22
  106. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  107. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +1 -1
  108. package/lib/module/games/fruit-ninja/components/GameArea.js +1 -1
  109. package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -1
  110. package/lib/module/games/fruit-ninja/components/GameBackground.js +70 -45
  111. package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -1
  112. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +47 -46
  113. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
  114. package/lib/module/games/game-2048/Game2048.js +149 -0
  115. package/lib/module/games/game-2048/Game2048.js.map +1 -0
  116. package/lib/module/games/game-2048/Game2048Constants.js +263 -0
  117. package/lib/module/games/game-2048/Game2048Constants.js.map +1 -0
  118. package/lib/module/games/game-2048/Game2048Service.js +457 -0
  119. package/lib/module/games/game-2048/Game2048Service.js.map +1 -0
  120. package/lib/module/games/game-2048/Game2048Store.js +236 -0
  121. package/lib/module/games/game-2048/Game2048Store.js.map +1 -0
  122. package/lib/module/games/game-2048/components/GameBackground.js +247 -0
  123. package/lib/module/games/game-2048/components/GameBackground.js.map +1 -0
  124. package/lib/module/games/game-2048/components/GameGrid.js +139 -0
  125. package/lib/module/games/game-2048/components/GameGrid.js.map +1 -0
  126. package/lib/module/games/game-2048/components/GameTile.js +72 -0
  127. package/lib/module/games/game-2048/components/GameTile.js.map +1 -0
  128. package/lib/module/games/game-2048/components/ScoreBoard.js +52 -0
  129. package/lib/module/games/game-2048/components/ScoreBoard.js.map +1 -0
  130. package/lib/module/games/game-2048/components/index.js +7 -0
  131. package/lib/module/games/game-2048/components/index.js.map +1 -0
  132. package/lib/module/games/maze-runner/MazeRunner.js +51 -41
  133. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  134. package/lib/module/games/maze-runner/MazeRunnerService.js +19 -17
  135. package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -1
  136. package/lib/module/games/maze-runner/components/ScoreBoard.js +32 -42
  137. package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
  138. package/lib/module/games/popit-fidget/PopitFidget.js +57 -66
  139. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  140. package/lib/module/games/popit-fidget/PopitFidgetStore.js +6 -44
  141. package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -1
  142. package/lib/module/games/popit-fidget/components/ScoreBoard.js +31 -45
  143. package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -1
  144. package/lib/module/games/sliding-numbers/SlidingNumbers.js +159 -0
  145. package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -0
  146. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +207 -0
  147. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js.map +1 -0
  148. package/lib/module/games/sliding-numbers/SlidingNumbersService.js +248 -0
  149. package/lib/module/games/sliding-numbers/SlidingNumbersService.js.map +1 -0
  150. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +274 -0
  151. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js.map +1 -0
  152. package/lib/module/games/sliding-numbers/components/GameBackground.js +259 -0
  153. package/lib/module/games/sliding-numbers/components/GameBackground.js.map +1 -0
  154. package/lib/module/games/sliding-numbers/components/NumbersGrid.js +174 -0
  155. package/lib/module/games/sliding-numbers/components/NumbersGrid.js.map +1 -0
  156. package/lib/module/games/sliding-numbers/components/NumbersTile.js +116 -0
  157. package/lib/module/games/sliding-numbers/components/NumbersTile.js.map +1 -0
  158. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +64 -0
  159. package/lib/module/games/sliding-numbers/components/ScoreBoard.js.map +1 -0
  160. package/lib/module/games/sliding-numbers/components/index.js +7 -0
  161. package/lib/module/games/sliding-numbers/components/index.js.map +1 -0
  162. package/lib/module/games/snake/Snake.js +189 -0
  163. package/lib/module/games/snake/Snake.js.map +1 -0
  164. package/lib/module/games/snake/SnakeConstants.js +138 -0
  165. package/lib/module/games/snake/SnakeConstants.js.map +1 -0
  166. package/lib/module/games/snake/SnakeService.js +148 -0
  167. package/lib/module/games/snake/SnakeService.js.map +1 -0
  168. package/lib/module/games/snake/SnakeStore.js +182 -0
  169. package/lib/module/games/snake/SnakeStore.js.map +1 -0
  170. package/lib/module/games/snake/components/GameBackground.js +221 -0
  171. package/lib/module/games/snake/components/GameBackground.js.map +1 -0
  172. package/lib/module/games/snake/components/GameGrid.js +153 -0
  173. package/lib/module/games/snake/components/GameGrid.js.map +1 -0
  174. package/lib/module/games/snake/components/ScoreBoard.js +51 -0
  175. package/lib/module/games/snake/components/ScoreBoard.js.map +1 -0
  176. package/lib/module/games/snake/components/index.js +6 -0
  177. package/lib/module/games/snake/components/index.js.map +1 -0
  178. package/lib/module/games/snake/index.js +6 -0
  179. package/lib/module/games/snake/index.js.map +1 -0
  180. package/lib/module/games/space-fighter/SpaceFighter.js +22 -26
  181. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  182. package/lib/module/games/space-fighter/SpaceFighterService.js +7 -6
  183. package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -1
  184. package/lib/module/games/space-fighter/SpaceFighterStore.js +25 -11
  185. package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -1
  186. package/lib/module/games/space-fighter/components/GameArea.js +1 -7
  187. package/lib/module/games/space-fighter/components/GameArea.js.map +1 -1
  188. package/lib/module/games/space-fighter/components/ScoreBoard.js +47 -48
  189. package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -1
  190. package/lib/module/games/whack-a-mole/WhackAMole.js +17 -10
  191. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  192. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +1 -1
  193. package/lib/module/games/whack-a-mole/components/GameBackground.js +37 -30
  194. package/lib/module/games/whack-a-mole/components/GameBackground.js.map +1 -1
  195. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +32 -38
  196. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
  197. package/lib/module/helpers/AnimationFrame.js.map +1 -0
  198. package/lib/module/helpers/AnimationTracker.js.map +1 -0
  199. package/lib/module/helpers/ErrorHandler.js.map +1 -0
  200. package/lib/module/helpers/GameControlButton.js.map +1 -0
  201. package/lib/module/{shared/helpers → helpers}/GameOverModal.js +6 -3
  202. package/lib/module/helpers/GameOverModal.js.map +1 -0
  203. package/lib/module/{shared/helpers → helpers}/GameSettingsModal.js +5 -5
  204. package/lib/module/helpers/GameSettingsModal.js.map +1 -0
  205. package/lib/module/{shared/helpers → helpers}/ParticleBlast.js +3 -2
  206. package/lib/module/helpers/ParticleBlast.js.map +1 -0
  207. package/lib/module/helpers/ScoreBoardContainer.js +34 -0
  208. package/lib/module/helpers/ScoreBoardContainer.js.map +1 -0
  209. package/lib/module/{shared/helpers → helpers}/index.js +1 -1
  210. package/lib/module/helpers/index.js.map +1 -0
  211. package/lib/module/index.js +9 -0
  212. package/lib/module/index.js.map +1 -1
  213. package/lib/module/services/GamesConstants.js +100 -5
  214. package/lib/module/services/GamesConstants.js.map +1 -1
  215. package/lib/module/services/GamesService.js +108 -42
  216. package/lib/module/services/GamesService.js.map +1 -1
  217. package/lib/module/services/SoundsService.js +132 -1
  218. package/lib/module/services/SoundsService.js.map +1 -1
  219. package/lib/module/services/UtilsService.js +32 -0
  220. package/lib/module/services/UtilsService.js.map +1 -0
  221. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +1 -1
  222. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  223. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +1 -0
  224. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -1
  225. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +5 -1
  226. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  227. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +4 -0
  228. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -0
  229. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +104 -0
  230. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts.map +1 -0
  231. package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +40 -0
  232. package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts.map +1 -0
  233. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +48 -0
  234. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts.map +1 -0
  235. package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +13 -0
  236. package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts.map +1 -0
  237. package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts +5 -0
  238. package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts.map +1 -0
  239. package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +3 -0
  240. package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts.map +1 -0
  241. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +6 -0
  242. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts.map +1 -0
  243. package/lib/typescript/src/games/candy-crush/components/index.d.ts +5 -0
  244. package/lib/typescript/src/games/candy-crush/components/index.d.ts.map +1 -0
  245. package/lib/typescript/src/games/candy-crush/index.d.ts +4 -0
  246. package/lib/typescript/src/games/candy-crush/index.d.ts.map +1 -0
  247. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts +4 -0
  248. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts.map +1 -0
  249. package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts +54 -0
  250. package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts.map +1 -0
  251. package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts +66 -0
  252. package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts.map +1 -0
  253. package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts +48 -0
  254. package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts.map +1 -0
  255. package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts +11 -0
  256. package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts.map +1 -0
  257. package/lib/typescript/src/games/colors-sort/components/GameBackground.d.ts +7 -0
  258. package/lib/typescript/src/games/colors-sort/components/GameBackground.d.ts.map +1 -0
  259. package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +7 -0
  260. package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts.map +1 -0
  261. package/lib/typescript/src/games/colors-sort/components/index.d.ts +4 -0
  262. package/lib/typescript/src/games/colors-sort/components/index.d.ts.map +1 -0
  263. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +4 -0
  264. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -0
  265. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +97 -0
  266. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts.map +1 -0
  267. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +40 -0
  268. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts.map +1 -0
  269. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +103 -0
  270. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts.map +1 -0
  271. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +3 -0
  272. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -0
  273. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +8 -0
  274. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts.map +1 -0
  275. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +8 -0
  276. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts.map +1 -0
  277. package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +3 -0
  278. package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts.map +1 -0
  279. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +7 -0
  280. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts.map +1 -0
  281. package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +3 -0
  282. package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts.map +1 -0
  283. package/lib/typescript/src/games/dino-jump/components/index.d.ts +7 -0
  284. package/lib/typescript/src/games/dino-jump/components/index.d.ts.map +1 -0
  285. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +4 -0
  286. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -0
  287. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +83 -0
  288. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts.map +1 -0
  289. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +53 -0
  290. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts.map +1 -0
  291. package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +8 -0
  292. package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts.map +1 -0
  293. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +8 -0
  294. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts.map +1 -0
  295. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +8 -0
  296. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts.map +1 -0
  297. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +9 -0
  298. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts.map +1 -0
  299. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +7 -0
  300. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts.map +1 -0
  301. package/lib/typescript/src/games/flappy-bird/components/index.d.ts +6 -0
  302. package/lib/typescript/src/games/flappy-bird/components/index.d.ts.map +1 -0
  303. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +4 -0
  304. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -0
  305. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +115 -0
  306. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts.map +1 -0
  307. package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +5 -0
  308. package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts.map +1 -0
  309. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +43 -0
  310. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts.map +1 -0
  311. package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +10 -0
  312. package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts.map +1 -0
  313. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +8 -0
  314. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts.map +1 -0
  315. package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts +8 -0
  316. package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts.map +1 -0
  317. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +7 -0
  318. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts.map +1 -0
  319. package/lib/typescript/src/games/fruit-merger/components/index.d.ts +5 -0
  320. package/lib/typescript/src/games/fruit-merger/components/index.d.ts.map +1 -0
  321. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +1 -1
  322. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  323. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +1 -0
  324. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -1
  325. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +5 -1
  326. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
  327. package/lib/typescript/src/games/game-2048/Game2048.d.ts +4 -0
  328. package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -0
  329. package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +163 -0
  330. package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts.map +1 -0
  331. package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +113 -0
  332. package/lib/typescript/src/games/game-2048/Game2048Service.d.ts.map +1 -0
  333. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +48 -0
  334. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts.map +1 -0
  335. package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts +7 -0
  336. package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts.map +1 -0
  337. package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +7 -0
  338. package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts.map +1 -0
  339. package/lib/typescript/src/games/game-2048/components/GameTile.d.ts +13 -0
  340. package/lib/typescript/src/games/game-2048/components/GameTile.d.ts.map +1 -0
  341. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +7 -0
  342. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts.map +1 -0
  343. package/lib/typescript/src/games/game-2048/components/index.d.ts +5 -0
  344. package/lib/typescript/src/games/game-2048/components/index.d.ts.map +1 -0
  345. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +1 -1
  346. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  347. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts +1 -0
  348. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -1
  349. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +1 -0
  350. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
  351. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +1 -1
  352. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  353. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +2 -5
  354. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -1
  355. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +2 -2
  356. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -1
  357. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +4 -0
  358. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -0
  359. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +108 -0
  360. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts.map +1 -0
  361. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +34 -0
  362. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts.map +1 -0
  363. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +56 -0
  364. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts.map +1 -0
  365. package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts +7 -0
  366. package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts.map +1 -0
  367. package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +7 -0
  368. package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts.map +1 -0
  369. package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts +11 -0
  370. package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts.map +1 -0
  371. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +7 -0
  372. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts.map +1 -0
  373. package/lib/typescript/src/games/sliding-numbers/components/index.d.ts +5 -0
  374. package/lib/typescript/src/games/sliding-numbers/components/index.d.ts.map +1 -0
  375. package/lib/typescript/src/games/snake/Snake.d.ts +4 -0
  376. package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -0
  377. package/lib/typescript/src/games/snake/SnakeConstants.d.ts +93 -0
  378. package/lib/typescript/src/games/snake/SnakeConstants.d.ts.map +1 -0
  379. package/lib/typescript/src/games/snake/SnakeService.d.ts +30 -0
  380. package/lib/typescript/src/games/snake/SnakeService.d.ts.map +1 -0
  381. package/lib/typescript/src/games/snake/SnakeStore.d.ts +43 -0
  382. package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -0
  383. package/lib/typescript/src/games/snake/components/GameBackground.d.ts +5 -0
  384. package/lib/typescript/src/games/snake/components/GameBackground.d.ts.map +1 -0
  385. package/lib/typescript/src/games/snake/components/GameGrid.d.ts +3 -0
  386. package/lib/typescript/src/games/snake/components/GameGrid.d.ts.map +1 -0
  387. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts +7 -0
  388. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -0
  389. package/lib/typescript/src/games/snake/components/index.d.ts +4 -0
  390. package/lib/typescript/src/games/snake/components/index.d.ts.map +1 -0
  391. package/lib/typescript/src/games/snake/index.d.ts +4 -0
  392. package/lib/typescript/src/games/snake/index.d.ts.map +1 -0
  393. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +1 -1
  394. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  395. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -1
  396. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts +2 -0
  397. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -1
  398. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -1
  399. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +5 -1
  400. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -1
  401. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +1 -1
  402. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  403. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +1 -0
  404. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts.map +1 -1
  405. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +1 -0
  406. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -1
  407. package/lib/typescript/src/helpers/AnimationFrame.d.ts.map +1 -0
  408. package/lib/typescript/src/helpers/AnimationTracker.d.ts.map +1 -0
  409. package/lib/typescript/src/helpers/ErrorHandler.d.ts.map +1 -0
  410. package/lib/typescript/src/helpers/GameControlButton.d.ts.map +1 -0
  411. package/lib/typescript/src/{shared/helpers → helpers}/GameOverModal.d.ts +2 -0
  412. package/lib/typescript/src/helpers/GameOverModal.d.ts.map +1 -0
  413. package/lib/typescript/src/{shared/helpers → helpers}/GameSettingsModal.d.ts +1 -1
  414. package/lib/typescript/src/helpers/GameSettingsModal.d.ts.map +1 -0
  415. package/lib/typescript/src/helpers/ParticleBlast.d.ts.map +1 -0
  416. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +9 -0
  417. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts.map +1 -0
  418. package/lib/typescript/src/{shared/helpers → helpers}/index.d.ts +2 -1
  419. package/lib/typescript/src/helpers/index.d.ts.map +1 -0
  420. package/lib/typescript/src/index.d.ts +9 -0
  421. package/lib/typescript/src/index.d.ts.map +1 -1
  422. package/lib/typescript/src/services/GamesConstants.d.ts +162 -0
  423. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  424. package/lib/typescript/src/services/GamesService.d.ts +3 -25
  425. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  426. package/lib/typescript/src/services/SoundsService.d.ts +103 -0
  427. package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
  428. package/lib/typescript/src/services/UtilsService.d.ts +38 -0
  429. package/lib/typescript/src/services/UtilsService.d.ts.map +1 -0
  430. package/package.json +1 -1
  431. package/lib/module/shared/helpers/AnimationFrame.js.map +0 -1
  432. package/lib/module/shared/helpers/AnimationTracker.js.map +0 -1
  433. package/lib/module/shared/helpers/ErrorHandler.js.map +0 -1
  434. package/lib/module/shared/helpers/GameControlButton.js.map +0 -1
  435. package/lib/module/shared/helpers/GameOverModal.js.map +0 -1
  436. package/lib/module/shared/helpers/GameSettingsModal.js.map +0 -1
  437. package/lib/module/shared/helpers/ParticleBlast.js.map +0 -1
  438. package/lib/module/shared/helpers/ResponsiveScoreBoard.js +0 -81
  439. package/lib/module/shared/helpers/ResponsiveScoreBoard.js.map +0 -1
  440. package/lib/module/shared/helpers/index.js.map +0 -1
  441. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +0 -1
  442. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +0 -1
  443. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +0 -1
  444. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +0 -1
  445. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +0 -1
  446. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +0 -1
  447. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +0 -1
  448. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts +0 -42
  449. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts.map +0 -1
  450. package/lib/typescript/src/shared/helpers/index.d.ts.map +0 -1
  451. /package/lib/module/{shared/helpers → helpers}/AnimationFrame.js +0 -0
  452. /package/lib/module/{shared/helpers → helpers}/AnimationTracker.js +0 -0
  453. /package/lib/module/{shared/helpers → helpers}/ErrorHandler.js +0 -0
  454. /package/lib/module/{shared/helpers → helpers}/GameControlButton.js +0 -0
  455. /package/lib/typescript/src/{shared/helpers → helpers}/AnimationFrame.d.ts +0 -0
  456. /package/lib/typescript/src/{shared/helpers → helpers}/AnimationTracker.d.ts +0 -0
  457. /package/lib/typescript/src/{shared/helpers → helpers}/ErrorHandler.d.ts +0 -0
  458. /package/lib/typescript/src/{shared/helpers → helpers}/GameControlButton.d.ts +0 -0
  459. /package/lib/typescript/src/{shared/helpers → helpers}/ParticleBlast.d.ts +0 -0
@@ -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(92, 184, 92, 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,300 @@
1
+ "use strict";
2
+
3
+ import { create } from 'zustand';
4
+ import { subscribeWithSelector } from 'zustand/middleware';
5
+ import { immerMiddleware } from "../../services/UtilsService.js";
6
+ import { FLAPPY_BIRD_GAME_CONFIG, DIFFICULTY_CONFIG } from "./FlappyBirdConstants.js";
7
+ const BASE_BRICK_WALL_HEIGHT = 150; // Base wall height (both top and bottom)
8
+
9
+ const generateRandomPipeHeight = (offset = 0) => {
10
+ const {
11
+ MIN_PIPE_HEIGHT,
12
+ GAME_HEIGHT
13
+ } = FLAPPY_BIRD_GAME_CONFIG;
14
+ const topWallHeight = BASE_BRICK_WALL_HEIGHT + offset;
15
+ const bottomWallHeight = offset > 0 ? 150 : 250; // Dynamic bottom wall height
16
+ // Calculate playable height accounting for increased top wall and dynamic bottom wall
17
+ // Bottom wall is at screen bottom, so no GROUND_HEIGHT subtraction needed
18
+ const playableHeight = GAME_HEIGHT - topWallHeight - bottomWallHeight;
19
+ const minHeight = topWallHeight + MIN_PIPE_HEIGHT;
20
+ const maxHeight = topWallHeight + playableHeight * 0.6;
21
+ return minHeight + Math.random() * (maxHeight - minHeight);
22
+ };
23
+ export const useFlappyBirdStore = create()(subscribeWithSelector(immerMiddleware((set, get) => ({
24
+ isPlaying: false,
25
+ isGameOver: false,
26
+ score: 0,
27
+ survivalTime: 0,
28
+ birdY: FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y,
29
+ birdVelocity: 0,
30
+ pipes: [],
31
+ collisionBlasts: [],
32
+ gameLoopInterval: null,
33
+ pipeSpawnInterval: null,
34
+ timerInterval: null,
35
+ initializeGame: () => {
36
+ set(state => {
37
+ state.isPlaying = false;
38
+ state.isGameOver = false;
39
+ state.score = 0;
40
+ state.survivalTime = 0;
41
+ state.birdY = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y;
42
+ state.birdVelocity = 0;
43
+ state.pipes = [];
44
+ state.collisionBlasts = [];
45
+ });
46
+ },
47
+ startGame: settings => {
48
+ const state = get();
49
+ if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
50
+ if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
51
+ if (state.timerInterval) clearInterval(state.timerInterval);
52
+ set(state => {
53
+ state.isPlaying = true;
54
+ state.isGameOver = false;
55
+ state.birdY = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y;
56
+ state.birdVelocity = 0;
57
+ state.pipes = [];
58
+ state.score = 0;
59
+ state.survivalTime = 0;
60
+ });
61
+
62
+ // Start game loop (60fps)
63
+ const gameLoop = setInterval(() => {
64
+ get().updatePhysics(settings);
65
+ }, 1000 / 60);
66
+
67
+ // Start pipe spawning
68
+ const pipeSpawn = setInterval(() => {
69
+ get().spawnPipe(settings);
70
+ }, FLAPPY_BIRD_GAME_CONFIG.PIPE_SPAWN_INTERVAL);
71
+
72
+ // Start survival timer (1 second intervals)
73
+ const timer = setInterval(() => {
74
+ set(state => {
75
+ state.survivalTime += 1;
76
+ });
77
+ }, 1000);
78
+ set(state => {
79
+ state.gameLoopInterval = gameLoop;
80
+ state.pipeSpawnInterval = pipeSpawn;
81
+ state.timerInterval = timer;
82
+ });
83
+
84
+ // Spawn first pipe immediately
85
+ setTimeout(() => get().spawnPipe(settings), 500);
86
+ },
87
+ stopGame: () => {
88
+ const state = get();
89
+ if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
90
+ if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
91
+ if (state.timerInterval) clearInterval(state.timerInterval);
92
+
93
+ // Reset the game instead of showing game over modal
94
+ state.initializeGame();
95
+ },
96
+ resetGame: () => {
97
+ const state = get();
98
+ if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
99
+ if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
100
+ if (state.timerInterval) clearInterval(state.timerInterval);
101
+ set(state => {
102
+ state.isPlaying = false;
103
+ state.isGameOver = false;
104
+ state.score = 0;
105
+ state.survivalTime = 0;
106
+ state.birdY = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y;
107
+ state.birdVelocity = 0;
108
+ state.pipes = [];
109
+ state.collisionBlasts = [];
110
+ state.gameLoopInterval = null;
111
+ state.pipeSpawnInterval = null;
112
+ state.timerInterval = null;
113
+ });
114
+ },
115
+ jump: () => {
116
+ const state = get();
117
+ if (!state.isPlaying || state.isGameOver) return;
118
+ set(state => {
119
+ state.birdVelocity = FLAPPY_BIRD_GAME_CONFIG.JUMP_VELOCITY;
120
+ });
121
+ },
122
+ updatePhysics: settings => {
123
+ const state = get();
124
+ if (!state.isPlaying || state.isGameOver) return;
125
+ const config = DIFFICULTY_CONFIG[settings.difficulty];
126
+ const {
127
+ GAME_HEIGHT,
128
+ GRAVITY,
129
+ BIRD_SIZE,
130
+ MAX_FALL_SPEED,
131
+ VELOCITY_DAMPING
132
+ } = FLAPPY_BIRD_GAME_CONFIG;
133
+ const offset = settings.offset ?? 0;
134
+ const topWallHeight = BASE_BRICK_WALL_HEIGHT + offset;
135
+ const bottomWallHeight = offset > 0 ? 150 : 250; // Dynamic bottom wall height
136
+ const bottomWallTop = GAME_HEIGHT - bottomWallHeight; // Bottom wall at screen bottom
137
+
138
+ let topWallCollision = false;
139
+ let bottomWallCollision = false;
140
+ set(draftState => {
141
+ // Update bird physics with damping for smoother movement
142
+ draftState.birdVelocity += GRAVITY;
143
+ draftState.birdVelocity *= VELOCITY_DAMPING;
144
+
145
+ // Cap maximum fall speed for more control
146
+ if (draftState.birdVelocity > MAX_FALL_SPEED) {
147
+ draftState.birdVelocity = MAX_FALL_SPEED;
148
+ }
149
+ draftState.birdY += draftState.birdVelocity;
150
+
151
+ // Update pipes
152
+ for (let i = draftState.pipes.length - 1; i >= 0; i--) {
153
+ const pipe = draftState.pipes[i];
154
+ if (!pipe) continue;
155
+ pipe.x -= config.pipeSpeed;
156
+
157
+ // Check if bird passed pipe
158
+ if (!pipe.passed && pipe.x + FLAPPY_BIRD_GAME_CONFIG.PIPE_WIDTH < FLAPPY_BIRD_GAME_CONFIG.BIRD_START_X) {
159
+ pipe.passed = true;
160
+ draftState.score += 1;
161
+ }
162
+
163
+ // Remove off-screen pipes
164
+ if (pipe.x + FLAPPY_BIRD_GAME_CONFIG.PIPE_WIDTH < 0) {
165
+ draftState.pipes.splice(i, 1);
166
+ }
167
+ }
168
+
169
+ // Check boundaries - top wall adjusted by offset
170
+ // Top brick wall collision (with offset)
171
+ if (draftState.birdY < topWallHeight) {
172
+ draftState.birdY = topWallHeight;
173
+ draftState.birdVelocity = 0;
174
+ draftState.isGameOver = true;
175
+ draftState.isPlaying = false;
176
+ topWallCollision = true;
177
+ }
178
+
179
+ // Bottom wall collision (150px wall at ground)
180
+ if (draftState.birdY + BIRD_SIZE > bottomWallTop) {
181
+ draftState.birdY = bottomWallTop - BIRD_SIZE;
182
+ draftState.isGameOver = true;
183
+ draftState.isPlaying = false;
184
+ bottomWallCollision = true;
185
+ }
186
+ });
187
+
188
+ // Add collision blasts after state update
189
+ if (topWallCollision) {
190
+ const blastX = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_X + BIRD_SIZE / 2;
191
+ const blastY = topWallHeight + BIRD_SIZE / 2;
192
+ get().addCollisionBlast(blastX, blastY);
193
+ // Clear intervals but don't reset game (modal will show)
194
+ const state = get();
195
+ if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
196
+ if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
197
+ if (state.timerInterval) clearInterval(state.timerInterval);
198
+ }
199
+ if (bottomWallCollision) {
200
+ const blastX = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_X + BIRD_SIZE / 2;
201
+ const blastY = bottomWallTop - BIRD_SIZE / 2;
202
+ get().addCollisionBlast(blastX, blastY);
203
+ // Clear intervals but don't reset game (modal will show)
204
+ const state = get();
205
+ if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
206
+ if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
207
+ if (state.timerInterval) clearInterval(state.timerInterval);
208
+ }
209
+
210
+ // Check collision with pipes
211
+ if (get().checkCollision()) {
212
+ // Clear intervals but don't reset game (modal will show)
213
+ const state = get();
214
+ if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
215
+ if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
216
+ if (state.timerInterval) clearInterval(state.timerInterval);
217
+ }
218
+ },
219
+ spawnPipe: settings => {
220
+ const state = get();
221
+ if (!state.isPlaying || state.isGameOver) return;
222
+ const config = DIFFICULTY_CONFIG[settings.difficulty];
223
+ const offset = settings.offset ?? 0;
224
+ const topHeight = generateRandomPipeHeight(offset);
225
+ const bottomY = topHeight + config.pipeGap;
226
+ const pipe = {
227
+ id: `pipe-${Date.now()}-${Math.random()}`,
228
+ x: FLAPPY_BIRD_GAME_CONFIG.GAME_WIDTH,
229
+ topHeight,
230
+ bottomY,
231
+ passed: false
232
+ };
233
+ set(state => {
234
+ state.pipes.push(pipe);
235
+ });
236
+ },
237
+ checkCollision: () => {
238
+ const state = get();
239
+ const {
240
+ BIRD_START_X,
241
+ BIRD_SIZE,
242
+ PIPE_WIDTH
243
+ } = FLAPPY_BIRD_GAME_CONFIG;
244
+ const birdLeft = BIRD_START_X;
245
+ const birdRight = BIRD_START_X + BIRD_SIZE;
246
+ const birdTop = state.birdY;
247
+ const birdBottom = state.birdY + BIRD_SIZE;
248
+ const birdCenterX = BIRD_START_X + BIRD_SIZE / 2;
249
+ const birdCenterY = state.birdY + BIRD_SIZE / 2;
250
+ for (const pipe of state.pipes) {
251
+ const pipeLeft = pipe.x;
252
+ const pipeRight = pipe.x + PIPE_WIDTH;
253
+
254
+ // Check if bird is in pipe's horizontal range
255
+ if (birdRight > pipeLeft && birdLeft < pipeRight) {
256
+ // Check collision with top pipe
257
+ if (birdTop < pipe.topHeight) {
258
+ get().addCollisionBlast(birdCenterX, birdCenterY);
259
+ set(state => {
260
+ state.isGameOver = true;
261
+ state.isPlaying = false;
262
+ });
263
+ return true;
264
+ }
265
+ // Check collision with bottom pipe
266
+ if (birdBottom > pipe.bottomY) {
267
+ get().addCollisionBlast(birdCenterX, birdCenterY);
268
+ set(state => {
269
+ state.isGameOver = true;
270
+ state.isPlaying = false;
271
+ });
272
+ return true;
273
+ }
274
+ }
275
+ }
276
+ return false;
277
+ },
278
+ addCollisionBlast: (x, y) => {
279
+ set(state => {
280
+ state.collisionBlasts.push({
281
+ id: `blast-${Date.now()}-${Math.random()}`,
282
+ x,
283
+ y
284
+ });
285
+ });
286
+ },
287
+ removeCollisionBlast: id => {
288
+ set(state => {
289
+ state.collisionBlasts = state.collisionBlasts.filter(blast => blast.id !== id);
290
+ });
291
+ }
292
+ }))));
293
+ export const useIsPlaying = () => useFlappyBirdStore(state => state.isPlaying);
294
+ export const useIsGameOver = () => useFlappyBirdStore(state => state.isGameOver);
295
+ export const useScore = () => useFlappyBirdStore(state => state.score);
296
+ export const useSurvivalTime = () => useFlappyBirdStore(state => state.survivalTime);
297
+ export const useBirdY = () => useFlappyBirdStore(state => state.birdY);
298
+ export const usePipes = () => useFlappyBirdStore(state => state.pipes);
299
+ export const useCollisionBlasts = () => useFlappyBirdStore(state => state.collisionBlasts);
300
+ //# sourceMappingURL=FlappyBirdStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","subscribeWithSelector","immerMiddleware","FLAPPY_BIRD_GAME_CONFIG","DIFFICULTY_CONFIG","BASE_BRICK_WALL_HEIGHT","generateRandomPipeHeight","offset","MIN_PIPE_HEIGHT","GAME_HEIGHT","topWallHeight","bottomWallHeight","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","bottomWallTop","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":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,IACbC,gBAAgB,EAChBC,WAAW,EACXC,WAAW,QACN,yBAAyB;AAChC,SAASC,MAAM,EAAEC,MAAM,EAAEC,KAAK,QAAQ,4BAA4B;AAClE,SAASC,uBAAuB,EAAEC,kBAAkB,QAAQ,2BAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOrF,MAAM;EAAEC;AAAU,CAAC,GAAGN,uBAAuB;;AAE7C;AACA,MAAMO,kBAAkB,GAAG;EACzBC,QAAQ,EAAE,UAAmB;EAC7BC,KAAK,EAAEH,SAAS;EAChBI,MAAM,EAAEJ;AACV,CAAC;AAED,MAAMK,WAAW,GAAG;EAClBF,KAAK,EAAEH,SAAS;EAChBI,MAAM,EAAEJ;AACV,CAAC;AAED,OAAO,MAAMM,IAAyB,gBAAGpB,KAAK,CAACqB,IAAI,CAAC,CAAC;EAAEC,KAAK;EAAEC;AAAS,CAAC,KAAK;EAC3E,MAAM;IAAEC;EAAa,CAAC,GAAGhB,uBAAuB;;EAEhD;EACA,MAAMiB,aAAa,GAAGvB,gBAAgB,CAAC,MAAM;IAC3C,SAAS;;IACT,MAAMwB,cAAc,GAAGvB,WAAW,CAChCoB,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EACT,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EACTnB,WAAW,CAACuB,KACd,CAAC;IAED,OAAO;MACLC,SAAS,EAAE,CACT;QAAEC,UAAU,EAAEL;MAAa,CAAC,EAC5B;QAAEM,UAAU,EAAER;MAAM,CAAC,EACrB;QAAES,MAAM,EAAE,GAAGL,cAAc;MAAM,CAAC;IAEtC,CAAC;EACH,CAAC,EAAE,CAACJ,KAAK,EAAEC,QAAQ,CAAC,CAAC;EAErB,oBACEZ,IAAA,CAACV,QAAQ,CAAC+B,IAAI;IACZC,KAAK,EAAE,CACLlB,kBAAkB,EAClBU,aAAa,CACb;IAAAS,QAAA,eAEFvB,IAAA,CAACN,MAAM;MAAC4B,KAAK,EAAEd,WAAY;MAAAe,QAAA,eACzBrB,KAAA,CAACN,KAAK;QAAA2B,QAAA,gBAEJvB,IAAA,CAACL,MAAM;UACL6B,EAAE,EAAErB,SAAS,GAAG,CAAE;UAClBsB,EAAE,EAAEtB,SAAS,GAAG,CAAE;UAClBuB,CAAC,EAAEvB,SAAS,GAAG,CAAE;UACjBwB,KAAK,EAAE7B,kBAAkB,CAAC8B;QAAY,CACvC,CAAC,eAGF5B,IAAA,CAACL,MAAM;UACL6B,EAAE,EAAErB,SAAS,GAAG,CAAE;UAClBsB,EAAE,EAAEtB,SAAS,GAAG,CAAC,GAAG,CAAE;UACtBuB,CAAC,EAAEvB,SAAS,GAAG,CAAE;UACjBwB,KAAK,EAAE7B,kBAAkB,CAAC+B;QAAY,CACvC,CAAC,eAGF7B,IAAA,CAACL,MAAM;UAAC6B,EAAE,EAAErB,SAAS,GAAG,CAAC,GAAG,CAAE;UAACsB,EAAE,EAAEtB,SAAS,GAAG,CAAC,GAAG,CAAE;UAACuB,CAAC,EAAE,CAAE;UAACC,KAAK,EAAC;QAAS,CAAE,CAAC,eAC9E3B,IAAA,CAACL,MAAM;UAAC6B,EAAE,EAAErB,SAAS,GAAG,CAAC,GAAG,CAAE;UAACsB,EAAE,EAAEtB,SAAS,GAAG,CAAC,GAAG,CAAE;UAACuB,CAAC,EAAE,CAAE;UAACC,KAAK,EAAC;QAAS,CAAE,CAAC,eAG9E3B,IAAA,CAACL,MAAM;UAAC6B,EAAE,EAAErB,SAAS,GAAG,CAAC,GAAG,EAAG;UAACsB,EAAE,EAAEtB,SAAS,GAAG,CAAE;UAACuB,CAAC,EAAE,CAAE;UAACC,KAAK,EAAC;QAAS,CAAE,CAAC,eAG3E3B,IAAA,CAACL,MAAM;UACL6B,EAAE,EAAErB,SAAS,GAAG,CAAC,GAAG,CAAE;UACtBsB,EAAE,EAAEtB,SAAS,GAAG,CAAC,GAAG,CAAE;UACtBuB,CAAC,EAAE,EAAG;UACNC,KAAK,EAAE7B,kBAAkB,CAAC+B,WAAY;UACtCC,OAAO,EAAE;QAAI,CACd,CAAC;MAAA,CACG;IAAC,CACF;EAAC,CACI,CAAC;AAEpB,CAAC,CAAC;AAEFrB,IAAI,CAACsB,WAAW,GAAG,MAAM","ignoreList":[]}
@@ -0,0 +1,87 @@
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 "../../../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
+ offset: settings.offset ?? 0
61
+ }), /*#__PURE__*/_jsx(Bird, {
62
+ birdY: birdY,
63
+ velocity: birdVelocity
64
+ }), collisionBlasts.map(blast => /*#__PURE__*/_jsx(ParticleBlast, {
65
+ x: blast.x,
66
+ y: blast.y,
67
+ particleCount: 12,
68
+ colors: PARTICLE_COLORS,
69
+ duration: 800,
70
+ onComplete: () => handleBlastComplete(blast.id)
71
+ }, blast.id))]
72
+ })
73
+ })
74
+ })
75
+ });
76
+ });
77
+ const styles = StyleSheet.create({
78
+ container: {
79
+ flex: 1
80
+ },
81
+ gameContainer: {
82
+ flex: 1,
83
+ position: 'relative'
84
+ }
85
+ });
86
+ GameArea.displayName = 'GameArea';
87
+ //# 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","offset","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":[]}