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,209 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useMemo, useCallback, useRef } from 'react';
4
+ import { View, StyleSheet } from 'react-native';
5
+ import { GestureHandlerRootView } from 'react-native-gesture-handler';
6
+ import { useDinoJumpStore, useIsPlaying, useIsGameOver, useScore } from "./DinoJumpStore.js";
7
+ import { DinoJumpService } from "./DinoJumpService.js";
8
+ import { GameBackground, GameArea, ScoreBoard } from "./components/index.js";
9
+ import { GameControlButton, GameOverModal, ParticleBlast } from "../../shared/helpers/index.js";
10
+ import { GameSettingsModal } from "../../shared/helpers/index.js";
11
+ import { DINO_JUMP_COLORS } from "./DinoJumpConstants.js";
12
+ import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/GamesService.js";
13
+ import { playSound, GAME_SOUNDS } from "../../services/SoundsService.js";
14
+ import { playHaptic, HapticType } from "../../services/HapticsService.js";
15
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
16
+ export const DinoJump = /*#__PURE__*/React.memo(({
17
+ settings = DEFAULT_GAME_SETTINGS,
18
+ onSettingsChange
19
+ }) => {
20
+ // ==================== STATE ====================
21
+ const isPlaying = useIsPlaying();
22
+ const isGameOver = useIsGameOver();
23
+ const score = useScore();
24
+
25
+ // ==================== STORE ACTIONS ====================
26
+ const initializeGame = useDinoJumpStore(state => state.initializeGame);
27
+ const startGame = useDinoJumpStore(state => state.startGame);
28
+ const stopGame = useDinoJumpStore(state => state.stopGame);
29
+ const resetGame = useDinoJumpStore(state => state.resetGame);
30
+ const decrementTime = useDinoJumpStore(state => state.decrementTime);
31
+ const updateDinosaur = useDinoJumpStore(state => state.updateDinosaur);
32
+ const updateObstacles = useDinoJumpStore(state => state.updateObstacles);
33
+ const updateClouds = useDinoJumpStore(state => state.updateClouds);
34
+ const updateStars = useDinoJumpStore(state => state.updateStars);
35
+ const updateGround = useDinoJumpStore(state => state.updateGround);
36
+ const updateScore = useDinoJumpStore(state => state.updateScore);
37
+ const updateSpeed = useDinoJumpStore(state => state.updateSpeed);
38
+ const addObstacle = useDinoJumpStore(state => state.addObstacle);
39
+ const addCloud = useDinoJumpStore(state => state.addCloud);
40
+ const addStar = useDinoJumpStore(state => state.addStar);
41
+ const checkCollisionsAction = useDinoJumpStore(state => state.checkCollisions);
42
+ const collisionBlasts = useDinoJumpStore(state => state.collisionBlasts);
43
+ const removeCollisionBlast = useDinoJumpStore(state => state.removeCollisionBlast);
44
+
45
+ // Use ref to keep settings stable
46
+ const settingsRef = useRef(settings);
47
+ settingsRef.current = settings;
48
+
49
+ // Wrap checkCollisions to pass settings
50
+ const checkCollisions = useCallback(() => checkCollisionsAction(settingsRef.current), [checkCollisionsAction]);
51
+
52
+ // ==================== CONFIGURATION ====================
53
+ const difficulty = settings.difficulty;
54
+ const gameService = useMemo(() => new DinoJumpService(), []);
55
+
56
+ // ==================== EFFECTS ====================
57
+ // Initialize game when difficulty changes
58
+ useEffect(() => {
59
+ initializeGame(difficulty);
60
+ }, [difficulty, initializeGame]);
61
+
62
+ // Game timer effect
63
+ useEffect(() => {
64
+ if (isPlaying) {
65
+ gameService.startTimer(() => {
66
+ decrementTime();
67
+ });
68
+ } else {
69
+ gameService.stopTimer();
70
+ }
71
+ return () => {
72
+ gameService.stopTimer();
73
+ };
74
+ }, [isPlaying, gameService, decrementTime]);
75
+
76
+ // Physics loop effect
77
+ useEffect(() => {
78
+ // Always cleanup first to prevent multiple loops
79
+ gameService.stopPhysicsLoop();
80
+ gameService.stopObstacleSpawning();
81
+ gameService.stopCloudSpawning();
82
+ if (isPlaying && !isGameOver) {
83
+ // Small delay to ensure cleanup is complete
84
+ const startTimeout = setTimeout(() => {
85
+ try {
86
+ gameService.startPhysicsLoop(updateDinosaur, updateObstacles, updateClouds, updateStars, updateGround, updateScore, updateSpeed, checkCollisions, stopGame);
87
+ gameService.startObstacleSpawning(addObstacle, difficulty);
88
+ gameService.startCloudSpawning(addCloud);
89
+ gameService.startStarSpawning(addStar);
90
+ } catch (error) {
91
+ console.error('Failed to start game loops:', error);
92
+ stopGame();
93
+ }
94
+ }, 50);
95
+ return () => {
96
+ clearTimeout(startTimeout);
97
+ gameService.stopPhysicsLoop();
98
+ gameService.stopObstacleSpawning();
99
+ gameService.stopCloudSpawning();
100
+ };
101
+ }
102
+ return () => {
103
+ gameService.stopPhysicsLoop();
104
+ gameService.stopObstacleSpawning();
105
+ gameService.stopCloudSpawning();
106
+ };
107
+ }, [isPlaying, isGameOver, gameService, updateDinosaur, updateObstacles, updateClouds, updateStars, updateGround, updateScore, updateSpeed, checkCollisions, stopGame, addObstacle, addCloud, addStar, difficulty]);
108
+
109
+ // Cleanup on unmount
110
+ useEffect(() => {
111
+ return () => {
112
+ gameService.cleanup();
113
+ };
114
+ }, [gameService]);
115
+
116
+ // ==================== HANDLERS ====================
117
+ const handleStartGame = useCallback(() => {
118
+ startGame();
119
+ playSound(GAME_SOUNDS.DINO_JUMP.START, settingsRef.current.enableSounds);
120
+ playHaptic(HapticType.MEDIUM, settingsRef.current.enableHaptics);
121
+ }, [startGame]);
122
+ const handleStopGame = useCallback(() => {
123
+ stopGame();
124
+ }, [stopGame]);
125
+ const handleResetGame = useCallback(() => {
126
+ resetGame();
127
+ initializeGame(difficulty);
128
+ playHaptic(HapticType.LIGHT, settingsRef.current.enableHaptics);
129
+ }, [resetGame, initializeGame, difficulty]);
130
+
131
+ // Memoize GameControlButton props to prevent re-renders (CRITICAL)
132
+ const gameControlButtonProps = useMemo(() => ({
133
+ isPlaying,
134
+ gameOver: isGameOver,
135
+ onStartGame: handleStartGame,
136
+ onStopGame: handleStopGame,
137
+ startButtonText: "START RUNNING",
138
+ stopButtonText: "STOP GAME",
139
+ startButtonSubtext: "Tap to jump over cacti!",
140
+ stopButtonSubtext: "End current game",
141
+ startButtonColor: DINO_JUMP_COLORS.BUTTON_PRIMARY,
142
+ stopButtonColor: "#dc2626",
143
+ startButtonBorderColor: DINO_JUMP_COLORS.BUTTON_SECONDARY,
144
+ stopButtonBorderColor: "#f87171"
145
+ }), [isPlaying, isGameOver, handleStartGame, handleStopGame]);
146
+
147
+ // Memoize GameOverModal props
148
+ const gameOverModalProps = useMemo(() => ({
149
+ isVisible: isGameOver,
150
+ score,
151
+ onPlayAgain: handleResetGame,
152
+ buttonText: "Run Again!",
153
+ primaryColor: "rgba(231, 76, 60, 0.95)",
154
+ borderColor: "#E74C3C",
155
+ buttonColor: DINO_JUMP_COLORS.BUTTON_PRIMARY,
156
+ buttonBorderColor: DINO_JUMP_COLORS.BUTTON_SECONDARY
157
+ }), [isGameOver, score, handleResetGame]);
158
+
159
+ // Memoize GameSettingsModal props
160
+ const gameSettingsModalProps = useMemo(() => ({
161
+ gameId: GAME_IDS.DINO_JUMP,
162
+ settings,
163
+ onSettingsChange
164
+ }), [settings, onSettingsChange]);
165
+
166
+ // ==================== RENDER ====================
167
+ return /*#__PURE__*/_jsx(View, {
168
+ style: styles.container,
169
+ children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
170
+ children: /*#__PURE__*/_jsxs(GameBackground, {
171
+ children: [/*#__PURE__*/_jsx(GameArea, {
172
+ settings: settings
173
+ }), collisionBlasts.map(blast => /*#__PURE__*/_jsx(ParticleBlast, {
174
+ x: blast.x,
175
+ y: blast.y,
176
+ particleCount: 15,
177
+ colors: ['#FF6B35', '#FFA500', '#FFD700', '#FF8C42', '#32CD32'],
178
+ duration: 800,
179
+ onComplete: () => removeCollisionBlast(blast.id)
180
+ }, blast.id)), /*#__PURE__*/_jsx(View, {
181
+ style: styles.scoreboardContainer,
182
+ children: /*#__PURE__*/_jsx(ScoreBoard, {})
183
+ }), /*#__PURE__*/_jsx(GameControlButton, {
184
+ ...gameControlButtonProps
185
+ }), /*#__PURE__*/_jsx(GameOverModal, {
186
+ ...gameOverModalProps
187
+ }), /*#__PURE__*/_jsx(GameSettingsModal, {
188
+ ...gameSettingsModalProps
189
+ })]
190
+ })
191
+ })
192
+ });
193
+ });
194
+ const styles = StyleSheet.create({
195
+ container: {
196
+ flex: 1
197
+ // backgroundColor: DINO_JUMP_COLORS.SKY_BOTTOM,
198
+ },
199
+ scoreboardContainer: {
200
+ position: 'absolute',
201
+ top: 0,
202
+ left: 0,
203
+ right: 0,
204
+ zIndex: 100,
205
+ pointerEvents: 'none' // Allow touches to pass through
206
+ }
207
+ });
208
+ DinoJump.displayName = 'DinoJump';
209
+ //# sourceMappingURL=DinoJump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useEffect","useMemo","useCallback","useRef","View","StyleSheet","GestureHandlerRootView","useDinoJumpStore","useIsPlaying","useIsGameOver","useScore","DinoJumpService","GameBackground","GameArea","ScoreBoard","GameControlButton","GameOverModal","ParticleBlast","GameSettingsModal","DINO_JUMP_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","jsx","_jsx","jsxs","_jsxs","DinoJump","memo","settings","onSettingsChange","isPlaying","isGameOver","score","initializeGame","state","startGame","stopGame","resetGame","decrementTime","updateDinosaur","updateObstacles","updateClouds","updateStars","updateGround","updateScore","updateSpeed","addObstacle","addCloud","addStar","checkCollisionsAction","checkCollisions","collisionBlasts","removeCollisionBlast","settingsRef","current","difficulty","gameService","startTimer","stopTimer","stopPhysicsLoop","stopObstacleSpawning","stopCloudSpawning","startTimeout","setTimeout","startPhysicsLoop","startObstacleSpawning","startCloudSpawning","startStarSpawning","error","console","clearTimeout","cleanup","handleStartGame","DINO_JUMP","START","enableSounds","MEDIUM","enableHaptics","handleStopGame","handleResetGame","LIGHT","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","BUTTON_PRIMARY","stopButtonColor","startButtonBorderColor","BUTTON_SECONDARY","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","gameSettingsModalProps","gameId","style","styles","container","children","map","blast","x","y","particleCount","colors","duration","onComplete","id","scoreboardContainer","create","flex","position","top","left","right","zIndex","pointerEvents","displayName"],"sourceRoot":"../../../../src","sources":["games/dino-jump/DinoJump.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+
3
+ import { Dimensions } from 'react-native';
4
+ // Memoize screen dimensions for better performance
5
+ const {
6
+ width,
7
+ height
8
+ } = Dimensions.get('window');
9
+
10
+ // Dinosaur Jump Game Constants
11
+ export const DINO_JUMP_CONSTANTS = {
12
+ // Chrome dino physics - more realistic
13
+ gravity: 1.0,
14
+ jumpForce: -20,
15
+ // Higher jump for better obstacle clearance
16
+ gameSpeed: {
17
+ easy: 4,
18
+ // Chrome dino starts slower
19
+ medium: 6,
20
+ hard: 8
21
+ },
22
+ // Chrome dino scoring - distance based
23
+ baseScore: {
24
+ easy: 1,
25
+ // 1 point per frame
26
+ medium: 1,
27
+ hard: 1
28
+ },
29
+ scoreMultiplier: {
30
+ easy: 1,
31
+ medium: 1.5,
32
+ hard: 2
33
+ },
34
+ // Speed increase over time (Chrome dino gets faster)
35
+ speedIncreaseRate: 0.001,
36
+ maxSpeed: 12,
37
+ // Time limits per difficulty (in seconds)
38
+ timeLimit: {
39
+ easy: 60,
40
+ // 1 minute
41
+ medium: 120,
42
+ // 2 minutes
43
+ hard: 180 // 3 minutes
44
+ }
45
+ };
46
+ export const DINO_JUMP_GAME_CONFIG = {
47
+ // Screen dimensions
48
+ SCREEN_WIDTH: width,
49
+ SCREEN_HEIGHT: height,
50
+ GROUND_HEIGHT: 250,
51
+ // Increased for better visibility
52
+
53
+ // Dinosaur properties
54
+ DINOSAUR_WIDTH: 55,
55
+ DINOSAUR_HEIGHT: 58,
56
+ DINOSAUR_X: 80,
57
+ // Fixed X position
58
+
59
+ // Obstacle properties
60
+ OBSTACLE_WIDTH: 20,
61
+ OBSTACLE_HEIGHT: 40,
62
+ OBSTACLE_SPAWN_DISTANCE: 600,
63
+ // Distance between obstacles
64
+
65
+ // Game timing
66
+ GAME_DURATION: 120,
67
+ // 5 minutes in seconds
68
+ PHYSICS_FRAME_RATE: 60,
69
+ // 60 FPS
70
+ OBSTACLE_SPAWN_INTERVAL: 2000,
71
+ // 2 seconds
72
+
73
+ // Animation
74
+ JUMP_DURATION: 600,
75
+ // milliseconds
76
+ GROUND_SCROLL_SPEED: 4 // pixels per frame
77
+ };
78
+ export const DINO_JUMP_ANIMATION_CONFIG = {
79
+ DINO_JUMP: {
80
+ damping: 15,
81
+ stiffness: 300,
82
+ mass: 1
83
+ },
84
+ OBSTACLE_MOVE: {
85
+ duration: 3000 // 3 seconds to cross screen
86
+ },
87
+ COLLISION_FEEDBACK: {
88
+ duration: 200,
89
+ intensity: 0.1
90
+ }
91
+ };
92
+ export const DINO_JUMP_COLORS = {
93
+ // Background colors - vibrant and colorful
94
+ SKY_TOP: '#FF9A9E',
95
+ // Soft pink gradient
96
+ SKY_BOTTOM: '#FECFEF',
97
+ // Light pink
98
+ GROUND: '#FFD93D',
99
+ // Bright sunny yellow
100
+ GROUND_LINE: '#FF6B6B',
101
+ // Coral red
102
+
103
+ // Dinosaur colors - bright and fun
104
+ DINOSAUR_PRIMARY: '#4ECDC4',
105
+ // Bright teal
106
+ DINOSAUR_SECONDARY: '#45B7D1',
107
+ // Sky blue
108
+ DINOSAUR_OUTLINE: '#2C3E50',
109
+ // Dark blue-gray
110
+
111
+ // Obstacle colors (cactus) - vibrant greens
112
+ OBSTACLE_PRIMARY: '#2ECC71',
113
+ // Emerald green
114
+ OBSTACLE_SECONDARY: '#27AE60',
115
+ // Darker emerald
116
+ OBSTACLE_OUTLINE: '#1E8449',
117
+ // Forest green
118
+
119
+ // UI colors - bright and engaging
120
+ SCORE_TEXT: '#2C3E50',
121
+ // Dark blue-gray
122
+ GAME_OVER_OVERLAY: 'rgba(231, 76, 60, 0.8)',
123
+ // Red overlay
124
+ BUTTON_PRIMARY: '#E74C3C',
125
+ // Bright red
126
+ BUTTON_SECONDARY: '#C0392B',
127
+ // Dark red
128
+ TEXT_PRIMARY: '#FFFFFF',
129
+ TEXT_SECONDARY: '#ECF0F1',
130
+ // Light gray
131
+
132
+ // Cloud colors - soft and dreamy
133
+ CLOUD_COLOR: '#FFFFFF',
134
+ CLOUD_SHADOW: 'rgba(52, 152, 219, 0.2)' // Blue shadow
135
+ };
136
+
137
+ // Dinosaur states for animation
138
+ export const DINOSAUR_STATES = {
139
+ RUNNING: 'running',
140
+ JUMPING: 'jumping',
141
+ DUCKING: 'ducking',
142
+ DEAD: 'dead'
143
+ };
144
+
145
+ // Obstacle types
146
+ export const OBSTACLE_TYPES = {
147
+ CACTUS_SMALL: 'cactus_small',
148
+ CACTUS_LARGE: 'cactus_large',
149
+ BIRD: 'bird'
150
+ };
151
+
152
+ // Dinosaur Jump Game Theme - Desert/Orange theme
153
+ export const DINO_JUMP_THEME = {
154
+ backgroundColor: '#F0E68C',
155
+ // Khaki background like desert
156
+ headerBackgroundColor: 'rgba(255, 99, 71, 0.9)',
157
+ // Tomato header
158
+ headerTextColor: '#ffffff',
159
+ sectionBackgroundColor: 'rgba(255, 99, 71, 0.4)',
160
+ // Light tomato sections
161
+ sectionTitleColor: '#ffffff',
162
+ buttonSelectedColor: '#FF6347',
163
+ // Tomato for selected
164
+ buttonUnselectedColor: 'rgba(255, 255, 255, 0.3)',
165
+ buttonSelectedTextColor: '#ffffff',
166
+ buttonUnselectedTextColor: '#1f2937',
167
+ switchTrackColorFalse: 'rgba(255, 99, 71, 0.5)',
168
+ switchTrackColorTrue: '#FF6347',
169
+ switchThumbColor: '#ffffff',
170
+ infoTextColor: '#1f2937' // Dark text for readability
171
+ };
172
+
173
+ // Dinosaur Jump Difficulty Descriptions
174
+ export const DINO_JUMP_DIFFICULTY_DESCRIPTIONS = {
175
+ easy: 'Slow speed, easy obstacles, perfect for beginners',
176
+ medium: 'Medium speed, moderate challenge with mixed obstacles',
177
+ hard: 'Fast speed, frequent obstacles, expert level challenge'
178
+ };
179
+ //# sourceMappingURL=DinoJumpConstants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dimensions","width","height","get","DINO_JUMP_CONSTANTS","gravity","jumpForce","gameSpeed","easy","medium","hard","baseScore","scoreMultiplier","speedIncreaseRate","maxSpeed","timeLimit","DINO_JUMP_GAME_CONFIG","SCREEN_WIDTH","SCREEN_HEIGHT","GROUND_HEIGHT","DINOSAUR_WIDTH","DINOSAUR_HEIGHT","DINOSAUR_X","OBSTACLE_WIDTH","OBSTACLE_HEIGHT","OBSTACLE_SPAWN_DISTANCE","GAME_DURATION","PHYSICS_FRAME_RATE","OBSTACLE_SPAWN_INTERVAL","JUMP_DURATION","GROUND_SCROLL_SPEED","DINO_JUMP_ANIMATION_CONFIG","DINO_JUMP","damping","stiffness","mass","OBSTACLE_MOVE","duration","COLLISION_FEEDBACK","intensity","DINO_JUMP_COLORS","SKY_TOP","SKY_BOTTOM","GROUND","GROUND_LINE","DINOSAUR_PRIMARY","DINOSAUR_SECONDARY","DINOSAUR_OUTLINE","OBSTACLE_PRIMARY","OBSTACLE_SECONDARY","OBSTACLE_OUTLINE","SCORE_TEXT","GAME_OVER_OVERLAY","BUTTON_PRIMARY","BUTTON_SECONDARY","TEXT_PRIMARY","TEXT_SECONDARY","CLOUD_COLOR","CLOUD_SHADOW","DINOSAUR_STATES","RUNNING","JUMPING","DUCKING","DEAD","OBSTACLE_TYPES","CACTUS_SMALL","CACTUS_LARGE","BIRD","DINO_JUMP_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","DINO_JUMP_DIFFICULTY_DESCRIPTIONS"],"sourceRoot":"../../../../src","sources":["games/dino-jump/DinoJumpConstants.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAGzC;AACA,MAAM;EAAEC,KAAK;EAAEC;AAAO,CAAC,GAAGF,UAAU,CAACG,GAAG,CAAC,QAAQ,CAAC;;AAElD;AACA,OAAO,MAAMC,mBAAmB,GAAG;EACjC;EACAC,OAAO,EAAE,GAAG;EACZC,SAAS,EAAE,CAAC,EAAE;EAAE;EAChBC,SAAS,EAAE;IACTC,IAAI,EAAE,CAAC;IAAK;IACZC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE;EACR,CAAC;EACD;EACAC,SAAS,EAAE;IACTH,IAAI,EAAE,CAAC;IAAK;IACZC,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE;EACR,CAAC;EACDE,eAAe,EAAE;IACfJ,IAAI,EAAE,CAAC;IACPC,MAAM,EAAE,GAAG;IACXC,IAAI,EAAE;EACR,CAAC;EACD;EACAG,iBAAiB,EAAE,KAAK;EACxBC,QAAQ,EAAE,EAAE;EACZ;EACAC,SAAS,EAAE;IACTP,IAAI,EAAE,EAAE;IAAM;IACdC,MAAM,EAAE,GAAG;IAAG;IACdC,IAAI,EAAE,GAAG,CAAK;EAChB;AACF,CAAU;AAEV,OAAO,MAAMM,qBAAqB,GAAG;EACnC;EACAC,YAAY,EAAEhB,KAAK;EACnBiB,aAAa,EAAEhB,MAAM;EACrBiB,aAAa,EAAE,GAAG;EAAE;;EAEpB;EACAC,cAAc,EAAE,EAAE;EAClBC,eAAe,EAAE,EAAE;EACnBC,UAAU,EAAE,EAAE;EAAE;;EAEhB;EACAC,cAAc,EAAE,EAAE;EAClBC,eAAe,EAAE,EAAE;EACnBC,uBAAuB,EAAE,GAAG;EAAE;;EAE9B;EACAC,aAAa,EAAE,GAAG;EAAE;EACpBC,kBAAkB,EAAE,EAAE;EAAE;EACxBC,uBAAuB,EAAE,IAAI;EAAE;;EAE/B;EACAC,aAAa,EAAE,GAAG;EAAE;EACpBC,mBAAmB,EAAE,CAAC,CAAE;AAC1B,CAAU;AAEV,OAAO,MAAMC,0BAA0B,GAAG;EACxCC,SAAS,EAAE;IACTC,OAAO,EAAE,EAAE;IACXC,SAAS,EAAE,GAAG;IACdC,IAAI,EAAE;EACR,CAAC;EACDC,aAAa,EAAE;IACbC,QAAQ,EAAE,IAAI,CAAE;EAClB,CAAC;EACDC,kBAAkB,EAAE;IAClBD,QAAQ,EAAE,GAAG;IACbE,SAAS,EAAE;EACb;AACF,CAAU;AAEV,OAAO,MAAMC,gBAAgB,GAAG;EAC9B;EACAC,OAAO,EAAE,SAAS;EAAE;EACpBC,UAAU,EAAE,SAAS;EAAE;EACvBC,MAAM,EAAE,SAAS;EAAE;EACnBC,WAAW,EAAE,SAAS;EAAE;;EAExB;EACAC,gBAAgB,EAAE,SAAS;EAAE;EAC7BC,kBAAkB,EAAE,SAAS;EAAE;EAC/BC,gBAAgB,EAAE,SAAS;EAAE;;EAE7B;EACAC,gBAAgB,EAAE,SAAS;EAAE;EAC7BC,kBAAkB,EAAE,SAAS;EAAE;EAC/BC,gBAAgB,EAAE,SAAS;EAAE;;EAE7B;EACAC,UAAU,EAAE,SAAS;EAAE;EACvBC,iBAAiB,EAAE,wBAAwB;EAAE;EAC7CC,cAAc,EAAE,SAAS;EAAE;EAC3BC,gBAAgB,EAAE,SAAS;EAAE;EAC7BC,YAAY,EAAE,SAAS;EACvBC,cAAc,EAAE,SAAS;EAAE;;EAE3B;EACAC,WAAW,EAAE,SAAS;EACtBC,YAAY,EAAE,yBAAyB,CAAE;AAC3C,CAAU;;AAEV;AACA,OAAO,MAAMC,eAAe,GAAG;EAC7BC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE;AACR,CAAU;;AAEV;AACA,OAAO,MAAMC,cAAc,GAAG;EAC5BC,YAAY,EAAE,cAAc;EAC5BC,YAAY,EAAE,cAAc;EAC5BC,IAAI,EAAE;AACR,CAAU;;AAEV;AACA,OAAO,MAAMC,eAAkC,GAAG;EAChDC,eAAe,EAAE,SAAS;EAAE;EAC5BC,qBAAqB,EAAE,wBAAwB;EAAE;EACjDC,eAAe,EAAE,SAAS;EAC1BC,sBAAsB,EAAE,wBAAwB;EAAE;EAClDC,iBAAiB,EAAE,SAAS;EAC5BC,mBAAmB,EAAE,SAAS;EAAE;EAChCC,qBAAqB,EAAE,0BAA0B;EACjDC,uBAAuB,EAAE,SAAS;EAClCC,yBAAyB,EAAE,SAAS;EACpCC,qBAAqB,EAAE,wBAAwB;EAC/CC,oBAAoB,EAAE,SAAS;EAC/BC,gBAAgB,EAAE,SAAS;EAC3BC,aAAa,EAAE,SAAS,CAAE;AAC5B,CAAC;;AAED;AACA,OAAO,MAAMC,iCAAiC,GAAG;EAC/C1E,IAAI,EAAE,mDAAmD;EACzDC,MAAM,EAAE,uDAAuD;EAC/DC,IAAI,EAAE;AACR,CAAU","ignoreList":[]}
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+
3
+ import { DINO_JUMP_CONSTANTS, DINO_JUMP_GAME_CONFIG, OBSTACLE_TYPES } from "./DinoJumpConstants.js";
4
+ export class DinoJumpService {
5
+ gameTimer = null;
6
+ physicsAnimationId = null;
7
+ obstacleTimer = null;
8
+ cloudTimer = null;
9
+ starTimer = null;
10
+ lastFrameTime = 0;
11
+ obstacleId = 0;
12
+ cloudId = 0;
13
+ starId = 0;
14
+ isPhysicsRunning = false;
15
+ constructor() {
16
+ this.lastFrameTime = performance.now();
17
+ }
18
+
19
+ // Get difficulty settings
20
+ getDifficultySettings(difficulty) {
21
+ return {
22
+ speed: DINO_JUMP_CONSTANTS.gameSpeed[difficulty],
23
+ baseScore: DINO_JUMP_CONSTANTS.baseScore[difficulty],
24
+ scoreMultiplier: DINO_JUMP_CONSTANTS.scoreMultiplier[difficulty],
25
+ obstacleSpawnRate: difficulty === 'easy' ? 3000 : difficulty === 'medium' ? 2000 : 1500
26
+ };
27
+ }
28
+
29
+ // Start game timer
30
+ startTimer(decrementTimeCallback) {
31
+ this.stopTimer();
32
+ this.gameTimer = setInterval(() => {
33
+ decrementTimeCallback();
34
+ }, 1000);
35
+ }
36
+
37
+ // Stop game timer
38
+ stopTimer() {
39
+ if (this.gameTimer) {
40
+ clearInterval(this.gameTimer);
41
+ this.gameTimer = null;
42
+ }
43
+ }
44
+
45
+ // Start physics loop
46
+ startPhysicsLoop(updateDinosaur, updateObstacles, updateClouds, updateStars, updateGround, updateScore, updateSpeed, checkCollisions, stopGame) {
47
+ this.stopPhysicsLoop();
48
+ this.isPhysicsRunning = true;
49
+ this.lastFrameTime = performance.now();
50
+ const physicsLoop = currentTime => {
51
+ if (!this.isPhysicsRunning) return;
52
+ const deltaTime = Math.min((currentTime - this.lastFrameTime) / 1000, 0.016); // Cap at 60fps
53
+ this.lastFrameTime = currentTime;
54
+ try {
55
+ // Update game objects
56
+ updateDinosaur(deltaTime);
57
+ updateObstacles(deltaTime);
58
+ updateClouds(deltaTime);
59
+ updateStars(deltaTime);
60
+ updateGround(deltaTime);
61
+
62
+ // Update score (distance-based)
63
+ updateScore(1);
64
+ updateSpeed();
65
+
66
+ // Check for collisions (collision handler will stop game if lives reach 0)
67
+ checkCollisions();
68
+
69
+ // Continue loop using requestAnimationFrame for better performance
70
+ if (this.isPhysicsRunning) {
71
+ this.physicsAnimationId = requestAnimationFrame(physicsLoop);
72
+ }
73
+ } catch (error) {
74
+ console.error('Physics loop error:', error);
75
+ this.stopPhysicsLoop();
76
+ stopGame();
77
+ }
78
+ };
79
+ this.physicsAnimationId = requestAnimationFrame(physicsLoop);
80
+ }
81
+
82
+ // Stop physics loop
83
+ stopPhysicsLoop() {
84
+ this.isPhysicsRunning = false;
85
+ if (this.physicsAnimationId) {
86
+ cancelAnimationFrame(this.physicsAnimationId);
87
+ this.physicsAnimationId = null;
88
+ }
89
+ }
90
+
91
+ // Start obstacle spawning
92
+ startObstacleSpawning(addObstacle, difficulty) {
93
+ this.stopObstacleSpawning();
94
+ const settings = this.getDifficultySettings(difficulty);
95
+ const spawnObstacle = () => {
96
+ const obstacle = this.createRandomObstacle();
97
+ addObstacle(obstacle);
98
+
99
+ // Schedule next obstacle
100
+ const nextSpawnTime = settings.obstacleSpawnRate + Math.random() * 1000; // Add randomness
101
+ this.obstacleTimer = setTimeout(spawnObstacle, nextSpawnTime);
102
+ };
103
+
104
+ // Start spawning after initial delay
105
+ this.obstacleTimer = setTimeout(spawnObstacle, 2000);
106
+ }
107
+
108
+ // Stop obstacle spawning
109
+ stopObstacleSpawning() {
110
+ if (this.obstacleTimer) {
111
+ clearTimeout(this.obstacleTimer);
112
+ this.obstacleTimer = null;
113
+ }
114
+ }
115
+
116
+ // Start cloud spawning
117
+ startCloudSpawning(addCloud) {
118
+ this.stopCloudSpawning();
119
+ const spawnCloud = () => {
120
+ const cloud = this.createRandomCloud();
121
+ addCloud(cloud);
122
+
123
+ // Schedule next cloud (clouds spawn less frequently)
124
+ const nextSpawnTime = 5000 + Math.random() * 5000; // 5-10 seconds
125
+ this.cloudTimer = setTimeout(spawnCloud, nextSpawnTime);
126
+ };
127
+
128
+ // Start spawning clouds
129
+ this.cloudTimer = setTimeout(spawnCloud, 3000);
130
+ }
131
+
132
+ // Stop cloud spawning
133
+ stopCloudSpawning() {
134
+ if (this.cloudTimer) {
135
+ clearTimeout(this.cloudTimer);
136
+ this.cloudTimer = null;
137
+ }
138
+ }
139
+
140
+ // Start star spawning
141
+ startStarSpawning(addStar) {
142
+ this.stopStarSpawning();
143
+ const spawnStar = () => {
144
+ const star = this.createRandomStar();
145
+ addStar(star);
146
+
147
+ // Schedule next star (stars spawn occasionally)
148
+ const nextSpawnTime = 8000 + Math.random() * 7000; // 8-15 seconds
149
+ this.starTimer = setTimeout(spawnStar, nextSpawnTime);
150
+ };
151
+
152
+ // Start spawning stars after initial delay
153
+ this.starTimer = setTimeout(spawnStar, 10000);
154
+ }
155
+
156
+ // Stop star spawning
157
+ stopStarSpawning() {
158
+ if (this.starTimer) {
159
+ clearTimeout(this.starTimer);
160
+ this.starTimer = null;
161
+ }
162
+ }
163
+
164
+ // Create random obstacle - only cactus plants
165
+ createRandomObstacle() {
166
+ const types = [OBSTACLE_TYPES.CACTUS_SMALL, OBSTACLE_TYPES.CACTUS_LARGE];
167
+ const type = types[Math.floor(Math.random() * types.length)];
168
+ let width, height, y;
169
+ const groundY = DINO_JUMP_GAME_CONFIG.SCREEN_HEIGHT - DINO_JUMP_GAME_CONFIG.GROUND_HEIGHT;
170
+ switch (type) {
171
+ case 'cactus_small':
172
+ width = 22;
173
+ height = 45;
174
+ y = groundY - height - 22; // Exactly on top of ground
175
+ break;
176
+ case 'cactus_large':
177
+ width = 32;
178
+ height = 65;
179
+ y = groundY - height - 22; // Exactly on top of ground
180
+ break;
181
+ }
182
+ return {
183
+ id: `obstacle_${this.obstacleId++}`,
184
+ type,
185
+ x: DINO_JUMP_GAME_CONFIG.SCREEN_WIDTH + 50,
186
+ y,
187
+ width,
188
+ height,
189
+ speed: 5 // Base speed, will be modified by game speed
190
+ };
191
+ }
192
+
193
+ // Create random cloud
194
+ createRandomCloud() {
195
+ return {
196
+ id: `cloud_${this.cloudId++}`,
197
+ x: DINO_JUMP_GAME_CONFIG.SCREEN_WIDTH + 50,
198
+ y: 50 + Math.random() * 80,
199
+ // Sky height
200
+ width: 46 + Math.random() * 30,
201
+ height: 14 + Math.random() * 10,
202
+ speed: 1 + Math.random() * 2 // Slow moving
203
+ };
204
+ }
205
+
206
+ // Create random star (mushroom)
207
+ createRandomStar() {
208
+ const groundY = DINO_JUMP_GAME_CONFIG.SCREEN_HEIGHT - DINO_JUMP_GAME_CONFIG.GROUND_HEIGHT;
209
+ const width = 45;
210
+ const height = 45;
211
+ return {
212
+ id: `star_${this.starId++}`,
213
+ x: DINO_JUMP_GAME_CONFIG.SCREEN_WIDTH + 50,
214
+ y: groundY - height - 5,
215
+ // Same as obstacles - sits on ground
216
+ width,
217
+ height,
218
+ speed: 5 // Same speed as obstacles
219
+ };
220
+ }
221
+
222
+ // Format time for display
223
+ formatTime(timeInSeconds) {
224
+ const minutes = Math.floor(timeInSeconds / 60);
225
+ const seconds = timeInSeconds % 60;
226
+ return `${minutes}:${seconds.toString().padStart(2, '0')}`;
227
+ }
228
+
229
+ // Calculate final score
230
+ calculateFinalScore(score, timeElapsed, difficulty) {
231
+ const settings = this.getDifficultySettings(difficulty);
232
+ const timeBonus = Math.max(0, 300 - timeElapsed) * settings.scoreMultiplier;
233
+ return score + timeBonus;
234
+ }
235
+
236
+ // Check if new high score
237
+ isNewHighScore(currentScore, previousHighScore) {
238
+ return currentScore > previousHighScore;
239
+ }
240
+
241
+ // Generate random ground pattern for visual variety
242
+ generateGroundPattern() {
243
+ const pattern = [];
244
+ for (let i = 0; i < 20; i++) {
245
+ pattern.push(Math.random() * 3); // Random height variation
246
+ }
247
+ return pattern;
248
+ }
249
+
250
+ // Cleanup all timers and intervals
251
+ cleanup() {
252
+ this.stopTimer();
253
+ this.stopPhysicsLoop();
254
+ this.stopObstacleSpawning();
255
+ this.stopCloudSpawning();
256
+ this.stopStarSpawning();
257
+ }
258
+
259
+ // Reset service state
260
+ reset() {
261
+ this.cleanup();
262
+ this.obstacleId = 0;
263
+ this.cloudId = 0;
264
+ this.starId = 0;
265
+ this.lastFrameTime = performance.now();
266
+ }
267
+ }
268
+ //# sourceMappingURL=DinoJumpService.js.map