react-native-games 1.1.0 → 1.3.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 (419) hide show
  1. package/README.md +101 -30
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -167
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -182
  5. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -1
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +1 -318
  7. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +1 -183
  8. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +1 -237
  9. package/lib/module/games/balloon-blaster/components/GameArea.js +1 -156
  10. package/lib/module/games/balloon-blaster/components/GameBackground.js +1 -476
  11. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +1 -112
  12. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  13. package/lib/module/games/balloon-blaster/components/index.js +1 -7
  14. package/lib/module/games/bike-racing/BikeRacing.js +1 -0
  15. package/lib/module/games/bike-racing/BikeRacing.js.map +1 -0
  16. package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -0
  17. package/lib/module/games/bike-racing/BikeRacingConstants.js.map +1 -0
  18. package/lib/module/games/bike-racing/BikeRacingService.js +1 -0
  19. package/lib/module/games/bike-racing/BikeRacingService.js.map +1 -0
  20. package/lib/module/games/bike-racing/BikeRacingStore.js +1 -0
  21. package/lib/module/games/bike-racing/BikeRacingStore.js.map +1 -0
  22. package/lib/module/games/bike-racing/components/BikeComponent.js +1 -0
  23. package/lib/module/games/bike-racing/components/BikeComponent.js.map +1 -0
  24. package/lib/module/games/bike-racing/components/GameBackground.js +1 -0
  25. package/lib/module/games/bike-racing/components/GameBackground.js.map +1 -0
  26. package/lib/module/games/bike-racing/components/ScoreBoard.js +1 -0
  27. package/lib/module/games/bike-racing/components/ScoreBoard.js.map +1 -0
  28. package/lib/module/games/bike-racing/components/index.js +1 -0
  29. package/lib/module/games/bike-racing/components/index.js.map +1 -0
  30. package/lib/module/games/bike-racing/index.js +1 -0
  31. package/lib/module/games/bike-racing/index.js.map +1 -0
  32. package/lib/module/games/block-blast/BlockBlast.js +1 -0
  33. package/lib/module/games/block-blast/BlockBlast.js.map +1 -0
  34. package/lib/module/games/block-blast/BlockBlastConstants.js +1 -0
  35. package/lib/module/games/block-blast/BlockBlastConstants.js.map +1 -0
  36. package/lib/module/games/block-blast/BlockBlastService.js +1 -0
  37. package/lib/module/games/block-blast/BlockBlastService.js.map +1 -0
  38. package/lib/module/games/block-blast/BlockBlastStore.js +1 -0
  39. package/lib/module/games/block-blast/BlockBlastStore.js.map +1 -0
  40. package/lib/module/games/block-blast/components/BlockPieceComponent.js +1 -0
  41. package/lib/module/games/block-blast/components/BlockPieceComponent.js.map +1 -0
  42. package/lib/module/games/block-blast/components/GameArea.js +1 -0
  43. package/lib/module/games/block-blast/components/GameArea.js.map +1 -0
  44. package/lib/module/games/block-blast/components/GameBackground.js +1 -0
  45. package/lib/module/games/block-blast/components/GameBackground.js.map +1 -0
  46. package/lib/module/games/block-blast/components/GridComponent.js +1 -0
  47. package/lib/module/games/block-blast/components/GridComponent.js.map +1 -0
  48. package/lib/module/games/block-blast/components/ScoreBoard.js +1 -0
  49. package/lib/module/games/block-blast/components/ScoreBoard.js.map +1 -0
  50. package/lib/module/games/block-blast/components/index.js +1 -0
  51. package/lib/module/games/block-blast/components/index.js.map +1 -0
  52. package/lib/module/games/block-blast/index.js +1 -0
  53. package/lib/module/games/block-blast/index.js.map +1 -0
  54. package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -0
  55. package/lib/module/games/bubble-shooter/BubbleShooter.js.map +1 -0
  56. package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -0
  57. package/lib/module/games/bubble-shooter/BubbleShooterConstants.js.map +1 -0
  58. package/lib/module/games/bubble-shooter/BubbleShooterService.js +1 -0
  59. package/lib/module/games/bubble-shooter/BubbleShooterService.js.map +1 -0
  60. package/lib/module/games/bubble-shooter/BubbleShooterStore.js +1 -0
  61. package/lib/module/games/bubble-shooter/BubbleShooterStore.js.map +1 -0
  62. package/lib/module/games/bubble-shooter/components/GameArea.js +1 -0
  63. package/lib/module/games/bubble-shooter/components/GameArea.js.map +1 -0
  64. package/lib/module/games/bubble-shooter/components/GameBackground.js +1 -0
  65. package/lib/module/games/bubble-shooter/components/GameBackground.js.map +1 -0
  66. package/lib/module/games/bubble-shooter/components/ScoreBoard.js +1 -0
  67. package/lib/module/games/bubble-shooter/components/ScoreBoard.js.map +1 -0
  68. package/lib/module/games/bubble-shooter/components/index.js +1 -0
  69. package/lib/module/games/bubble-shooter/components/index.js.map +1 -0
  70. package/lib/module/games/bubble-shooter/index.js +1 -0
  71. package/lib/module/games/bubble-shooter/index.js.map +1 -0
  72. package/lib/module/games/candy-crush/CandyCrush.js +1 -131
  73. package/lib/module/games/candy-crush/CandyCrush.js.map +1 -1
  74. package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -125
  75. package/lib/module/games/candy-crush/CandyCrushConstants.js.map +1 -1
  76. package/lib/module/games/candy-crush/CandyCrushService.js +1 -370
  77. package/lib/module/games/candy-crush/CandyCrushStore.js +1 -303
  78. package/lib/module/games/candy-crush/components/CandyItem.js +1 -191
  79. package/lib/module/games/candy-crush/components/GameBackground.js +1 -85
  80. package/lib/module/games/candy-crush/components/GameGrid.js +1 -314
  81. package/lib/module/games/candy-crush/components/ScoreBoard.js +1 -79
  82. package/lib/module/games/candy-crush/components/index.js +1 -7
  83. package/lib/module/games/candy-crush/index.js +1 -6
  84. package/lib/module/games/car-racing/CarRacing.js +1 -0
  85. package/lib/module/games/car-racing/CarRacing.js.map +1 -0
  86. package/lib/module/games/car-racing/CarRacingConstants.js +1 -0
  87. package/lib/module/games/car-racing/CarRacingConstants.js.map +1 -0
  88. package/lib/module/games/car-racing/CarRacingService.js +1 -0
  89. package/lib/module/games/car-racing/CarRacingService.js.map +1 -0
  90. package/lib/module/games/car-racing/CarRacingStore.js +1 -0
  91. package/lib/module/games/car-racing/CarRacingStore.js.map +1 -0
  92. package/lib/module/games/car-racing/components/CarComponent.js +1 -0
  93. package/lib/module/games/car-racing/components/CarComponent.js.map +1 -0
  94. package/lib/module/games/car-racing/components/GameBackground.js +1 -0
  95. package/lib/module/games/car-racing/components/GameBackground.js.map +1 -0
  96. package/lib/module/games/car-racing/components/ScoreBoard.js +1 -0
  97. package/lib/module/games/car-racing/components/ScoreBoard.js.map +1 -0
  98. package/lib/module/games/car-racing/components/index.js +1 -0
  99. package/lib/module/games/car-racing/components/index.js.map +1 -0
  100. package/lib/module/games/colors-sort/ColorsSort.js +1 -143
  101. package/lib/module/games/colors-sort/ColorsSort.js.map +1 -1
  102. package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -72
  103. package/lib/module/games/colors-sort/ColorsSortConstants.js.map +1 -1
  104. package/lib/module/games/colors-sort/ColorsSortService.js +1 -255
  105. package/lib/module/games/colors-sort/ColorsSortStore.js +1 -257
  106. package/lib/module/games/colors-sort/ColorsSortStore.js.map +1 -1
  107. package/lib/module/games/colors-sort/components/ColorContainer.js +1 -140
  108. package/lib/module/games/colors-sort/components/GameBackground.js +1 -135
  109. package/lib/module/games/colors-sort/components/ScoreBoard.js +1 -70
  110. package/lib/module/games/colors-sort/components/index.js +1 -6
  111. package/lib/module/games/dino-jump/DinoJump.js +1 -209
  112. package/lib/module/games/dino-jump/DinoJump.js.map +1 -1
  113. package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -189
  114. package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -1
  115. package/lib/module/games/dino-jump/DinoJumpService.js +1 -270
  116. package/lib/module/games/dino-jump/DinoJumpStore.js +1 -381
  117. package/lib/module/games/dino-jump/components/DinoSprite.js +1 -418
  118. package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -1
  119. package/lib/module/games/dino-jump/components/GameArea.js +1 -68
  120. package/lib/module/games/dino-jump/components/GameBackground.js +1 -444
  121. package/lib/module/games/dino-jump/components/ObstacleSprite.js +1 -306
  122. package/lib/module/games/dino-jump/components/ScoreBoard.js +1 -105
  123. package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -1
  124. package/lib/module/games/dino-jump/components/StarSprite.js +1 -45
  125. package/lib/module/games/dino-jump/components/index.js +1 -9
  126. package/lib/module/games/flappy-bird/FlappyBird.js +1 -126
  127. package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -1
  128. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -90
  129. package/lib/module/games/flappy-bird/FlappyBirdConstants.js.map +1 -1
  130. package/lib/module/games/flappy-bird/FlappyBirdStore.js +1 -300
  131. package/lib/module/games/flappy-bird/components/Bird.js +1 -87
  132. package/lib/module/games/flappy-bird/components/GameArea.js +1 -87
  133. package/lib/module/games/flappy-bird/components/GameBackground.js +1 -79
  134. package/lib/module/games/flappy-bird/components/Pipes.js +1 -172
  135. package/lib/module/games/flappy-bird/components/ScoreBoard.js +1 -73
  136. package/lib/module/games/flappy-bird/components/index.js +1 -8
  137. package/lib/module/games/fruit-merger/FruitMerger.js +1 -120
  138. package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -1
  139. package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -119
  140. package/lib/module/games/fruit-merger/FruitMergerConstants.js.map +1 -1
  141. package/lib/module/games/fruit-merger/FruitMergerService.js +1 -13
  142. package/lib/module/games/fruit-merger/FruitMergerStore.js +1 -315
  143. package/lib/module/games/fruit-merger/components/FruitItem.js +1 -102
  144. package/lib/module/games/fruit-merger/components/GameArea.js +1 -103
  145. package/lib/module/games/fruit-merger/components/GameBackground.js +1 -498
  146. package/lib/module/games/fruit-merger/components/ScoreBoard.js +1 -58
  147. package/lib/module/games/fruit-merger/components/index.js +1 -7
  148. package/lib/module/games/fruit-ninja/FruitNinja.js +1 -134
  149. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  150. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -148
  151. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -1
  152. package/lib/module/games/fruit-ninja/FruitNinjaService.js +1 -311
  153. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +1 -191
  154. package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -1
  155. package/lib/module/games/fruit-ninja/components/FruitComponent.js +1 -99
  156. package/lib/module/games/fruit-ninja/components/GameArea.js +1 -215
  157. package/lib/module/games/fruit-ninja/components/GameBackground.js +1 -1267
  158. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +1 -92
  159. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
  160. package/lib/module/games/fruit-ninja/components/index.js +1 -7
  161. package/lib/module/games/game-2048/Game2048.js +1 -149
  162. package/lib/module/games/game-2048/Game2048.js.map +1 -1
  163. package/lib/module/games/game-2048/Game2048Constants.js +1 -263
  164. package/lib/module/games/game-2048/Game2048Constants.js.map +1 -1
  165. package/lib/module/games/game-2048/Game2048Service.js +1 -457
  166. package/lib/module/games/game-2048/Game2048Store.js +1 -236
  167. package/lib/module/games/game-2048/components/GameBackground.js +1 -247
  168. package/lib/module/games/game-2048/components/GameGrid.js +1 -139
  169. package/lib/module/games/game-2048/components/GameTile.js +1 -72
  170. package/lib/module/games/game-2048/components/ScoreBoard.js +1 -52
  171. package/lib/module/games/game-2048/components/index.js +1 -7
  172. package/lib/module/games/maze-runner/MazeRunner.js +1 -267
  173. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  174. package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -100
  175. package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -1
  176. package/lib/module/games/maze-runner/MazeRunnerService.js +1 -586
  177. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +1 -150
  178. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +1 -370
  179. package/lib/module/games/maze-runner/components/GameBackground.js +1 -175
  180. package/lib/module/games/maze-runner/components/ScoreBoard.js +1 -61
  181. package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +1 -209
  182. package/lib/module/games/maze-runner/components/StaticGameBackground.js +1 -169
  183. package/lib/module/games/maze-runner/components/WallComponent.js +1 -91
  184. package/lib/module/games/maze-runner/components/index.js +1 -8
  185. package/lib/module/games/perfect-circle/PerfectCircle.js +1 -0
  186. package/lib/module/games/perfect-circle/PerfectCircle.js.map +1 -0
  187. package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -0
  188. package/lib/module/games/perfect-circle/PerfectCircleConstants.js.map +1 -0
  189. package/lib/module/games/perfect-circle/PerfectCircleService.js +1 -0
  190. package/lib/module/games/perfect-circle/PerfectCircleService.js.map +1 -0
  191. package/lib/module/games/perfect-circle/PerfectCircleStore.js +1 -0
  192. package/lib/module/games/perfect-circle/PerfectCircleStore.js.map +1 -0
  193. package/lib/module/games/perfect-circle/components/DrawingCanvas.js +1 -0
  194. package/lib/module/games/perfect-circle/components/DrawingCanvas.js.map +1 -0
  195. package/lib/module/games/perfect-circle/components/GameBackground.js +1 -0
  196. package/lib/module/games/perfect-circle/components/GameBackground.js.map +1 -0
  197. package/lib/module/games/perfect-circle/components/ScoreBoard.js +1 -0
  198. package/lib/module/games/perfect-circle/components/ScoreBoard.js.map +1 -0
  199. package/lib/module/games/perfect-circle/index.js +1 -0
  200. package/lib/module/games/perfect-circle/index.js.map +1 -0
  201. package/lib/module/games/popit-fidget/PopitFidget.js +1 -285
  202. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  203. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -113
  204. package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -1
  205. package/lib/module/games/popit-fidget/PopitFidgetService.js +1 -132
  206. package/lib/module/games/popit-fidget/PopitFidgetStore.js +1 -125
  207. package/lib/module/games/popit-fidget/components/BubbleComponent.js +1 -198
  208. package/lib/module/games/popit-fidget/components/FidgetGrid.js +1 -165
  209. package/lib/module/games/popit-fidget/components/GameBackground.js +1 -177
  210. package/lib/module/games/popit-fidget/components/ScoreBoard.js +1 -61
  211. package/lib/module/games/popit-fidget/components/index.js +1 -7
  212. package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -159
  213. package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -1
  214. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -207
  215. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js.map +1 -1
  216. package/lib/module/games/sliding-numbers/SlidingNumbersService.js +1 -248
  217. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +1 -274
  218. package/lib/module/games/sliding-numbers/components/GameBackground.js +1 -259
  219. package/lib/module/games/sliding-numbers/components/NumbersGrid.js +1 -174
  220. package/lib/module/games/sliding-numbers/components/NumbersTile.js +1 -116
  221. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +1 -64
  222. package/lib/module/games/sliding-numbers/components/index.js +1 -7
  223. package/lib/module/games/snake/Snake.js +1 -189
  224. package/lib/module/games/snake/Snake.js.map +1 -1
  225. package/lib/module/games/snake/SnakeConstants.js +1 -138
  226. package/lib/module/games/snake/SnakeConstants.js.map +1 -1
  227. package/lib/module/games/snake/SnakeService.js +1 -148
  228. package/lib/module/games/snake/SnakeStore.js +1 -182
  229. package/lib/module/games/snake/SnakeStore.js.map +1 -1
  230. package/lib/module/games/snake/components/GameBackground.js +1 -221
  231. package/lib/module/games/snake/components/GameGrid.js +1 -153
  232. package/lib/module/games/snake/components/ScoreBoard.js +1 -51
  233. package/lib/module/games/snake/components/ScoreBoard.js.map +1 -1
  234. package/lib/module/games/snake/components/index.js +1 -6
  235. package/lib/module/games/snake/index.js +1 -6
  236. package/lib/module/games/space-fighter/SpaceFighter.js +1 -165
  237. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  238. package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -108
  239. package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -1
  240. package/lib/module/games/space-fighter/SpaceFighterService.js +1 -326
  241. package/lib/module/games/space-fighter/SpaceFighterStore.js +1 -209
  242. package/lib/module/games/space-fighter/components/AsteroidComponent.js +1 -113
  243. package/lib/module/games/space-fighter/components/GameArea.js +1 -289
  244. package/lib/module/games/space-fighter/components/GameBackground.js +1 -239
  245. package/lib/module/games/space-fighter/components/ScoreBoard.js +1 -136
  246. package/lib/module/games/space-fighter/components/Spacecraft3D.js +1 -202
  247. package/lib/module/games/space-fighter/components/SpacecraftPath.js +1 -52
  248. package/lib/module/games/space-fighter/components/index.js +1 -9
  249. package/lib/module/games/whack-a-mole/WhackAMole.js +1 -270
  250. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  251. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -115
  252. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -1
  253. package/lib/module/games/whack-a-mole/WhackAMoleService.js +1 -120
  254. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +1 -172
  255. package/lib/module/games/whack-a-mole/components/GameBackground.js +1 -477
  256. package/lib/module/games/whack-a-mole/components/GameGrid.js +1 -97
  257. package/lib/module/games/whack-a-mole/components/GameHole.js +1 -196
  258. package/lib/module/games/whack-a-mole/components/MoleCharacter.js +1 -241
  259. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +1 -67
  260. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
  261. package/lib/module/games/whack-a-mole/components/index.js +1 -8
  262. package/lib/module/helpers/AnimationFrame.js +1 -120
  263. package/lib/module/helpers/AnimationTracker.js +1 -89
  264. package/lib/module/helpers/ErrorHandler.js +1 -269
  265. package/lib/module/helpers/GameControlButton.js +1 -219
  266. package/lib/module/helpers/GameOverModal.js +1 -144
  267. package/lib/module/helpers/GameOverModal.js.map +1 -1
  268. package/lib/module/helpers/GameSettingsModal.js +1 -287
  269. package/lib/module/helpers/GameSettingsModal.js.map +1 -1
  270. package/lib/module/helpers/ParticleBlast.js +1 -134
  271. package/lib/module/helpers/ScoreBoardContainer.js +1 -34
  272. package/lib/module/helpers/ScoreBoardContainer.js.map +1 -1
  273. package/lib/module/helpers/index.js +1 -12
  274. package/lib/module/index.js +1 -22
  275. package/lib/module/index.js.map +1 -1
  276. package/lib/module/services/GamesConstants.js +1 -178
  277. package/lib/module/services/GamesConstants.js.map +1 -1
  278. package/lib/module/services/GamesService.js +1 -112
  279. package/lib/module/services/GamesService.js.map +1 -1
  280. package/lib/module/services/HapticsService.js +1 -77
  281. package/lib/module/services/ScoringService.js +1 -0
  282. package/lib/module/services/ScoringService.js.map +1 -0
  283. package/lib/module/services/SoundsService.js +1 -302
  284. package/lib/module/services/SoundsService.js.map +1 -1
  285. package/lib/module/services/UtilsService.js +1 -32
  286. package/lib/module/services/UtilsService.js.map +1 -1
  287. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  288. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +1 -1
  289. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  290. package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +4 -0
  291. package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts.map +1 -0
  292. package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +76 -0
  293. package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts.map +1 -0
  294. package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +22 -0
  295. package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts.map +1 -0
  296. package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +72 -0
  297. package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts.map +1 -0
  298. package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +12 -0
  299. package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts.map +1 -0
  300. package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +9 -0
  301. package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts.map +1 -0
  302. package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +7 -0
  303. package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts.map +1 -0
  304. package/lib/typescript/src/games/bike-racing/components/index.d.ts +4 -0
  305. package/lib/typescript/src/games/bike-racing/components/index.d.ts.map +1 -0
  306. package/lib/typescript/src/games/bike-racing/index.d.ts +5 -0
  307. package/lib/typescript/src/games/bike-racing/index.d.ts.map +1 -0
  308. package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +4 -0
  309. package/lib/typescript/src/games/block-blast/BlockBlast.d.ts.map +1 -0
  310. package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +82 -0
  311. package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts.map +1 -0
  312. package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +17 -0
  313. package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts.map +1 -0
  314. package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +62 -0
  315. package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts.map +1 -0
  316. package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +14 -0
  317. package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts.map +1 -0
  318. package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +12 -0
  319. package/lib/typescript/src/games/block-blast/components/GameArea.d.ts.map +1 -0
  320. package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts +7 -0
  321. package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts.map +1 -0
  322. package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +17 -0
  323. package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts.map +1 -0
  324. package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +7 -0
  325. package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts.map +1 -0
  326. package/lib/typescript/src/games/block-blast/components/index.d.ts +6 -0
  327. package/lib/typescript/src/games/block-blast/components/index.d.ts.map +1 -0
  328. package/lib/typescript/src/games/block-blast/index.d.ts +5 -0
  329. package/lib/typescript/src/games/block-blast/index.d.ts.map +1 -0
  330. package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +4 -0
  331. package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts.map +1 -0
  332. package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +61 -0
  333. package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts.map +1 -0
  334. package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +26 -0
  335. package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts.map +1 -0
  336. package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +62 -0
  337. package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts.map +1 -0
  338. package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +9 -0
  339. package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts.map +1 -0
  340. package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts +8 -0
  341. package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts.map +1 -0
  342. package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +7 -0
  343. package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts.map +1 -0
  344. package/lib/typescript/src/games/bubble-shooter/components/index.d.ts +4 -0
  345. package/lib/typescript/src/games/bubble-shooter/components/index.d.ts.map +1 -0
  346. package/lib/typescript/src/games/bubble-shooter/index.d.ts +3 -0
  347. package/lib/typescript/src/games/bubble-shooter/index.d.ts.map +1 -0
  348. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -1
  349. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +7 -7
  350. package/lib/typescript/src/games/car-racing/CarRacing.d.ts +4 -0
  351. package/lib/typescript/src/games/car-racing/CarRacing.d.ts.map +1 -0
  352. package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +76 -0
  353. package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts.map +1 -0
  354. package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +22 -0
  355. package/lib/typescript/src/games/car-racing/CarRacingService.d.ts.map +1 -0
  356. package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +72 -0
  357. package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts.map +1 -0
  358. package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +13 -0
  359. package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts.map +1 -0
  360. package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +9 -0
  361. package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts.map +1 -0
  362. package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +7 -0
  363. package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts.map +1 -0
  364. package/lib/typescript/src/games/car-racing/components/index.d.ts +4 -0
  365. package/lib/typescript/src/games/car-racing/components/index.d.ts.map +1 -0
  366. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts.map +1 -1
  367. package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts.map +1 -1
  368. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -1
  369. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -1
  370. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -1
  371. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts.map +1 -1
  372. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -1
  373. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts.map +1 -1
  374. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  375. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
  376. package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -1
  377. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  378. package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +4 -0
  379. package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts.map +1 -0
  380. package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +81 -0
  381. package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts.map +1 -0
  382. package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +14 -0
  383. package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts.map +1 -0
  384. package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +40 -0
  385. package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts.map +1 -0
  386. package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +9 -0
  387. package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts.map +1 -0
  388. package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts +8 -0
  389. package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts.map +1 -0
  390. package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +7 -0
  391. package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts.map +1 -0
  392. package/lib/typescript/src/games/perfect-circle/index.d.ts +3 -0
  393. package/lib/typescript/src/games/perfect-circle/index.d.ts.map +1 -0
  394. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  395. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -1
  396. package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -1
  397. package/lib/typescript/src/games/snake/SnakeStore.d.ts +4 -0
  398. package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -1
  399. package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -1
  400. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  401. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  402. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +1 -1
  403. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -1
  404. package/lib/typescript/src/helpers/GameOverModal.d.ts +3 -0
  405. package/lib/typescript/src/helpers/GameOverModal.d.ts.map +1 -1
  406. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts.map +1 -1
  407. package/lib/typescript/src/index.d.ts +6 -1
  408. package/lib/typescript/src/index.d.ts.map +1 -1
  409. package/lib/typescript/src/services/GamesConstants.d.ts +57 -7
  410. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  411. package/lib/typescript/src/services/GamesService.d.ts +2 -1
  412. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  413. package/lib/typescript/src/services/ScoringService.d.ts +2 -0
  414. package/lib/typescript/src/services/ScoringService.d.ts.map +1 -0
  415. package/lib/typescript/src/services/SoundsService.d.ts +88 -0
  416. package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
  417. package/lib/typescript/src/services/UtilsService.d.ts +12 -1
  418. package/lib/typescript/src/services/UtilsService.d.ts.map +1 -1
  419. package/package.json +2 -2
@@ -1,91 +1 @@
1
- "use strict";
2
-
3
- import React from 'react';
4
- import { Canvas, Rect, LinearGradient, vec, Shadow, RoundedRect } from '@shopify/react-native-skia';
5
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- // Memoized WallComponent to prevent unnecessary re-renders
7
- export const WallComponent = /*#__PURE__*/React.memo(({
8
- walls,
9
- width,
10
- height
11
- }) => {
12
- // Group walls by type and position for better joining
13
- const renderWall = (wall, index) => {
14
- const cornerRadius = 2; // Small radius for slightly rounded corners
15
- const shadowOffset = 1.5;
16
- return /*#__PURE__*/_jsxs(React.Fragment, {
17
- children: [/*#__PURE__*/_jsxs(RoundedRect, {
18
- x: wall.x,
19
- y: wall.y,
20
- width: wall.width,
21
- height: wall.height,
22
- r: cornerRadius,
23
- children: [/*#__PURE__*/_jsx(LinearGradient, {
24
- start: vec(0, 0),
25
- end: wall.type === 'horizontal' ? vec(0, wall.height) : vec(wall.width, 0),
26
- colors: ['#654321',
27
- // Dark brown
28
- '#8B4513',
29
- // Saddle brown
30
- '#A0522D',
31
- // Sienna
32
- '#CD853F',
33
- // Peru
34
- '#D2691E' // Chocolate
35
- ]
36
- }), /*#__PURE__*/_jsx(Shadow, {
37
- dx: shadowOffset,
38
- dy: shadowOffset,
39
- blur: 3,
40
- color: "rgba(0, 0, 0, 0.4)"
41
- })]
42
- }), /*#__PURE__*/_jsx(RoundedRect, {
43
- x: wall.x + 1,
44
- y: wall.y + 1,
45
- width: Math.max(0, wall.width - 2),
46
- height: Math.max(0, wall.height - 2),
47
- r: Math.max(0, cornerRadius - 1),
48
- children: /*#__PURE__*/_jsx(LinearGradient, {
49
- start: vec(0, 0),
50
- end: wall.type === 'horizontal' ? vec(0, wall.height - 2) : vec(wall.width - 2, 0),
51
- colors: ['rgba(255, 255, 255, 0.3)',
52
- // Light highlight
53
- 'rgba(255, 255, 255, 0.1)',
54
- // Subtle highlight
55
- 'rgba(0, 0, 0, 0.1)',
56
- // Subtle shadow
57
- 'rgba(0, 0, 0, 0.2)' // Darker shadow
58
- ]
59
- })
60
- }), wall.type === 'horizontal' && /*#__PURE__*/_jsx(Rect, {
61
- x: wall.x,
62
- y: wall.y,
63
- width: wall.width,
64
- height: 1,
65
- children: /*#__PURE__*/_jsx(LinearGradient, {
66
- start: vec(0, 0),
67
- end: vec(wall.width, 0),
68
- colors: ['rgba(255, 255, 255, 0.6)', 'rgba(255, 255, 255, 0.3)']
69
- })
70
- }), wall.type === 'vertical' && /*#__PURE__*/_jsx(Rect, {
71
- x: wall.x,
72
- y: wall.y,
73
- width: 1,
74
- height: wall.height,
75
- children: /*#__PURE__*/_jsx(LinearGradient, {
76
- start: vec(0, 0),
77
- end: vec(0, wall.height),
78
- colors: ['rgba(255, 255, 255, 0.6)', 'rgba(255, 255, 255, 0.3)']
79
- })
80
- })]
81
- }, index);
82
- };
83
- return /*#__PURE__*/_jsx(Canvas, {
84
- style: {
85
- width,
86
- height
87
- },
88
- children: walls.map((wall, index) => renderWall(wall, index))
89
- });
90
- });
91
- //# sourceMappingURL=WallComponent.js.map
1
+ "use strict";import React from 'react';import{Canvas,Rect,LinearGradient,vec,Shadow,RoundedRect}from '@shopify/react-native-skia';import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const WallComponent = React.memo(({walls,width,height})=>{const renderWall =(wall,index)=>{const cornerRadius = 2;const shadowOffset = 1.5;return _jsxs(React.Fragment,{children:[_jsxs(RoundedRect,{x:wall.x,y:wall.y,width:wall.width,height:wall.height,r:cornerRadius,children:[_jsx(LinearGradient,{start:vec(0,0),end:wall.type === 'horizontal' ? vec(0,wall.height):vec(wall.width,0),colors:['#654321','#8B4513','#A0522D','#CD853F','#D2691E' ]}),_jsx(Shadow,{dx:shadowOffset,dy:shadowOffset,blur:3,color:"rgba(0,0,0,0.4)"})]}),_jsx(RoundedRect,{x:wall.x + 1,y:wall.y + 1,width:Math.max(0,wall.width - 2),height:Math.max(0,wall.height - 2),r:Math.max(0,cornerRadius - 1),children:_jsx(LinearGradient,{start:vec(0,0),end:wall.type === 'horizontal' ? vec(0,wall.height - 2):vec(wall.width - 2,0),colors:['rgba(255,255,255,0.3)','rgba(255,255,255,0.1)','rgba(0,0,0,0.1)','rgba(0,0,0,0.2)' ]})}),wall.type === 'horizontal' && _jsx(Rect,{x:wall.x,y:wall.y,width:wall.width,height:1,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(wall.width,0),colors:['rgba(255,255,255,0.6)','rgba(255,255,255,0.3)']})}),wall.type === 'vertical' && _jsx(Rect,{x:wall.x,y:wall.y,width:1,height:wall.height,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(0,wall.height),colors:['rgba(255,255,255,0.6)','rgba(255,255,255,0.3)']})})]},index);};return _jsx(Canvas,{style:{width,height},children:walls.map((wall,index)=> renderWall(wall,index))});});
@@ -1,8 +1 @@
1
- "use strict";
2
-
3
- export { EnhancedBallComponent } from "./EnhancedBallComponent.js";
4
- export { WallComponent } from "./WallComponent.js";
5
- export { EnhancedGameArea } from "./EnhancedGameArea.js";
6
- export { GameBackground } from "./GameBackground.js";
7
- export { ScoreBoard } from "./ScoreBoard.js";
8
- //# sourceMappingURL=index.js.map
1
+ "use strict";export{EnhancedBallComponent}from "./EnhancedBallComponent.js";export{WallComponent}from "./WallComponent.js";export{EnhancedGameArea}from "./EnhancedGameArea.js";export{GameBackground}from "./GameBackground.js";export{ScoreBoard}from "./ScoreBoard.js";
@@ -0,0 +1 @@
1
+ "use strict";import React from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{GameControlButton,GameOverModal,GameSettingsModal}from "../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{usePerfectCircleStore,useIsPlaying,useGameOver,useGameWon,useAccuracy}from "./PerfectCircleStore.js";import{PerfectCircleService}from "./PerfectCircleService.js";import{PERFECT_CIRCLE_COLORS,getDifficultySettings,ACCURACY_LEVELS}from "./PerfectCircleConstants.js";import{GameBackground}from "./components/GameBackground.js";import{ScoreBoard}from "./components/ScoreBoard.js";import{DrawingCanvas}from "./components/DrawingCanvas.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const PerfectCircleComponent =({settings:externalSettings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const{difficulty,soundEnabled,hapticEnabled,offset}= React.useMemo(()=>({difficulty:externalSettings?.difficulty || 'medium',soundEnabled:externalSettings?.enableSounds ?? true,hapticEnabled:externalSettings?.enableHaptics ?? true,offset:externalSettings?.offset ?? 0}),[externalSettings?.difficulty,externalSettings?.enableSounds,externalSettings?.enableHaptics,externalSettings?.offset]);const isPlaying = useIsPlaying();const gameOver = useGameOver();const gameWon = useGameWon();const accuracy = useAccuracy();const gameReportedRef = React.useRef(false);const reportGameEnd = React.useCallback(status =>{if(onEndGame && !gameReportedRef.current){onEndGame({status,score:accuracy.toFixed(2)});gameReportedRef.current = true;}},[onEndGame,accuracy]);const resetGame = React.useCallback(()=> usePerfectCircleStore.getState().resetGame(),[]);const gameService = React.useMemo(()=> new PerfectCircleService(),[]);const difficultySettings = React.useMemo(()=> getDifficultySettings(difficulty),[difficulty]);const handleAccuracyCalculated = React.useCallback(calculatedAccuracy =>{if(calculatedAccuracy >= difficultySettings.minAccuracy){playSound(GAME_SOUNDS.PERFECT_CIRCLE.SUCCESS,soundEnabled);playHaptic(HapticType.SUCCESS,hapticEnabled);}else{playSound(GAME_SOUNDS.PERFECT_CIRCLE.FAIL,soundEnabled);playHaptic(HapticType.HEAVY,hapticEnabled);}},[soundEnabled,hapticEnabled,difficultySettings.minAccuracy]);React.useEffect(()=>{gameService.setCallbacks(handleAccuracyCalculated);},[gameService,handleAccuracyCalculated]);React.useEffect(()=>{if((gameOver || gameWon)&& !gameReportedRef.current){const status = gameWon ? 'win':'lose';reportGameEnd(status);}if(!gameOver && !gameWon){gameReportedRef.current = false;}},[gameOver,gameWon,reportGameEnd]);React.useEffect(()=>{return()=>{gameService.cleanup();usePerfectCircleStore.getState().resetGame();};},[gameService]);const handleStartGame = React.useCallback(()=>{gameReportedRef.current = false;gameService.startGame();playSound(GAME_SOUNDS.PERFECT_CIRCLE.START,soundEnabled);playHaptic(HapticType.SUCCESS,hapticEnabled);},[gameService,soundEnabled,hapticEnabled]);const handleStopGame = React.useCallback(()=>{reportGameEnd('cancel');resetGame();gameService.resetGame();},[resetGame,gameService,reportGameEnd]);const handleResetGame = React.useCallback(()=>{resetGame();gameService.resetGame();},[resetGame,gameService]);const handlePlayAgain = React.useCallback(()=>{handleResetGame();},[handleResetGame]);const accuracyLevel = React.useMemo(()=>{for(const level of Object.values(ACCURACY_LEVELS)){if(accuracy >= level.min){return level;}}return ACCURACY_LEVELS.POOR;},[accuracy]);const gameControlButtonProps = React.useMemo(()=>({isPlaying,gameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonColor:PERFECT_CIRCLE_COLORS.UI,stopButtonColor:PERFECT_CIRCLE_COLORS.UI,startButtonBorderColor:PERFECT_CIRCLE_COLORS.UI,stopButtonBorderColor:PERFECT_CIRCLE_COLORS.UI,startButtonText:'START DRAWING',stopButtonText:'STOP GAME',startButtonSubtext:'Draw the perfect circle!'}),[isPlaying,gameOver,handleStartGame,handleStopGame]);const gameOverModalProps = React.useMemo(()=>({isVisible:gameOver,score:accuracy,onPlayAgain:handlePlayAgain,buttonText:'Try Again',primaryColor:'rgba(0,212,255,0.85)',borderColor:PERFECT_CIRCLE_COLORS.UI,buttonColor:'#ffffff',buttonBorderColor:'#ffffff',buttonTextColor:PERFECT_CIRCLE_COLORS.UI,title:gameWon ? `${accuracyLevel.emoji}${accuracyLevel.label}`:'😔 NOT QUITE!',message:gameWon ? `${accuracy}% accuracy - Amazing circle!`:`${accuracy}% accuracy - Need >50% to win`}),[gameOver,accuracy,handlePlayAgain,gameWon,accuracyLevel]);return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{style:styles.gestureRoot,children:_jsxs(GameBackground,{offset:offset,children:[_jsx(ScoreBoard,{offset:offset}),_jsx(DrawingCanvas,{gameService:gameService,offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{gameId:GAME_IDS.PERFECT_CIRCLE,settings:{...DEFAULT_GAME_SETTINGS,...externalSettings},onSettingsChange:onSettingsChange})]})})});};const styles = StyleSheet.create({container:{flex:1},gestureRoot:{flex:1}});const arePropsEqual =(prevProps,nextProps)=>{return prevProps.settings?.difficulty === nextProps.settings?.difficulty && prevProps.settings?.enableSounds === nextProps.settings?.enableSounds && prevProps.settings?.enableHaptics === nextProps.settings?.enableHaptics && prevProps.settings?.offset === nextProps.settings?.offset && prevProps.settings?.isVisible === nextProps.settings?.isVisible && prevProps.onSettingsChange === nextProps.onSettingsChange;};export const PerfectCircle = React.memo(PerfectCircleComponent,arePropsEqual);PerfectCircle.displayName = 'PerfectCircle';
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","StyleSheet","GestureHandlerRootView","GameControlButton","GameOverModal","GameSettingsModal","DEFAULT_GAME_SETTINGS","GAME_IDS","playSound","GAME_SOUNDS","playHaptic","HapticType","usePerfectCircleStore","useIsPlaying","useGameOver","useGameWon","useAccuracy","PerfectCircleService","PERFECT_CIRCLE_COLORS","getDifficultySettings","ACCURACY_LEVELS","GameBackground","ScoreBoard","DrawingCanvas","jsx","_jsx","jsxs","_jsxs","PerfectCircleComponent","settings","externalSettings","onSettingsChange","onEndGame","difficulty","soundEnabled","hapticEnabled","offset","useMemo","enableSounds","enableHaptics","isPlaying","gameOver","gameWon","accuracy","gameReportedRef","useRef","reportGameEnd","useCallback","status","current","score","toFixed","resetGame","getState","gameService","difficultySettings","handleAccuracyCalculated","calculatedAccuracy","minAccuracy","PERFECT_CIRCLE","SUCCESS","FAIL","HEAVY","useEffect","setCallbacks","cleanup","handleStartGame","startGame","START","handleStopGame","handleResetGame","handlePlayAgain","accuracyLevel","level","Object","values","min","POOR","gameControlButtonProps","onStartGame","onStopGame","startButtonColor","UI","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","startButtonText","stopButtonText","startButtonSubtext","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","title","emoji","label","message","style","styles","container","children","gestureRoot","gameId","create","flex","arePropsEqual","prevProps","nextProps","PerfectCircle","memo","displayName"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/PerfectCircle.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";export const PERFECT_CIRCLE_DIFFICULTY_CONFIG ={easy:{minAccuracy:70},medium:{minAccuracy:80},hard:{minAccuracy:90}};export const getDifficultySettings = difficulty =>{return PERFECT_CIRCLE_DIFFICULTY_CONFIG[difficulty];};export const DEFAULT_PERFECT_CIRCLE_SETTINGS ={difficulty:'medium',soundEnabled:true,hapticEnabled:true,minAccuracy:PERFECT_CIRCLE_DIFFICULTY_CONFIG.medium.minAccuracy};export const PERFECT_CIRCLE_GAME_CONFIG ={MIN_POINTS:20,SAMPLE_POINTS:100,STROKE_WIDTH:4,GUIDE_CIRCLE_OPACITY:0.15};export const PERFECT_CIRCLE_COLORS ={BACKGROUND:'#1a1a2e',CANVAS:'#16213e',STROKE:'#00d4ff',GUIDE:'#ffffff',SUCCESS:'#4ecca3',FAIL:'#ff6b6b',UI:'#00d4ff',TEXT:'#ffffff'};export const PERFECT_CIRCLE_THEME ={backgroundColor:'rgba(0,0,0,0.7)',headerBackgroundColor:'#00d4ff',headerTextColor:'#ffffff',sectionBackgroundColor:'rgba(0,212,255,0.15)',sectionTitleColor:'#00d4ff',buttonSelectedColor:'#00d4ff',buttonUnselectedColor:'rgba(255,255,255,0.2)',buttonSelectedTextColor:'#ffffff',buttonUnselectedTextColor:'rgba(255,255,255,0.7)',switchTrackColorFalse:'rgba(0,212,255,0.3)',switchTrackColorTrue:'#00d4ff',switchThumbColor:'#ffffff',infoTextColor:'rgba(255,255,255,0.9)'};export const PERFECT_CIRCLE_DIFFICULTY_DESCRIPTIONS ={easy:'70% accuracy needed to win',medium:'80% accuracy needed to win',hard:'90% accuracy needed to win'};export const ACCURACY_LEVELS ={PERFECT:{min:95,label:'PERFECT!',emoji:'🎯'},EXCELLENT:{min:90,label:'EXCELLENT!',emoji:'⭐'},GREAT:{min:85,label:'GREAT!',emoji:'✨'},GOOD:{min:80,label:'GOOD!',emoji:'👍'},NICE:{min:70,label:'NICE TRY!',emoji:'👌'},POOR:{min:0,label:'KEEP TRYING!',emoji:'💪'}};
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PERFECT_CIRCLE_DIFFICULTY_CONFIG","easy","minAccuracy","medium","hard","getDifficultySettings","difficulty","DEFAULT_PERFECT_CIRCLE_SETTINGS","soundEnabled","hapticEnabled","PERFECT_CIRCLE_GAME_CONFIG","MIN_POINTS","SAMPLE_POINTS","STROKE_WIDTH","GUIDE_CIRCLE_OPACITY","PERFECT_CIRCLE_COLORS","BACKGROUND","CANVAS","STROKE","GUIDE","SUCCESS","FAIL","UI","TEXT","PERFECT_CIRCLE_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","PERFECT_CIRCLE_DIFFICULTY_DESCRIPTIONS","ACCURACY_LEVELS","PERFECT","min","label","emoji","EXCELLENT","GREAT","GOOD","NICE","POOR"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/PerfectCircleConstants.ts"],"mappings":";;AAEA;;AAQA;AACA,OAAO,MAAMA,gCAAgC,GAAG;EAC9CC,IAAI,EAAE;IACJC,WAAW,EAAE,EAAE,CAAE;EACnB,CAAC;EACDC,MAAM,EAAE;IACND,WAAW,EAAE,EAAE,CAAE;EACnB,CAAC;EACDE,IAAI,EAAE;IACJF,WAAW,EAAE,EAAE,CAAE;EACnB;AACF,CAAU;;AAEV;AACA,OAAO,MAAMG,qBAAqB,GAAIC,UAAsC,IAAK;EAC/E,OAAON,gCAAgC,CAACM,UAAU,CAAC;AACrD,CAAC;;AAED;AACA,OAAO,MAAMC,+BAAsD,GAAG;EACpED,UAAU,EAAE,QAAQ;EACpBE,YAAY,EAAE,IAAI;EAClBC,aAAa,EAAE,IAAI;EACnBP,WAAW,EAAEF,gCAAgC,CAACG,MAAM,CAACD;AACvD,CAAC;;AAED;AACA,OAAO,MAAMQ,0BAA0B,GAAG;EACxCC,UAAU,EAAE,EAAE;EAAE;EAChBC,aAAa,EAAE,GAAG;EAAE;EACpBC,YAAY,EAAE,CAAC;EAAE;EACjBC,oBAAoB,EAAE,IAAI,CAAE;AAC9B,CAAU;;AAEV;AACA,OAAO,MAAMC,qBAAqB,GAAG;EACnCC,UAAU,EAAE,SAAS;EACrBC,MAAM,EAAE,SAAS;EACjBC,MAAM,EAAE,SAAS;EACjBC,KAAK,EAAE,SAAS;EAChBC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE,SAAS;EACfC,EAAE,EAAE,SAAS;EACbC,IAAI,EAAE;AACR,CAAU;;AAEV;AACA,OAAO,MAAMC,oBAAuC,GAAG;EACrDC,eAAe,EAAE,oBAAoB;EACrCC,qBAAqB,EAAE,SAAS;EAChCC,eAAe,EAAE,SAAS;EAC1BC,sBAAsB,EAAE,yBAAyB;EACjDC,iBAAiB,EAAE,SAAS;EAC5BC,mBAAmB,EAAE,SAAS;EAC9BC,qBAAqB,EAAE,0BAA0B;EACjDC,uBAAuB,EAAE,SAAS;EAClCC,yBAAyB,EAAE,0BAA0B;EACrDC,qBAAqB,EAAE,wBAAwB;EAC/CC,oBAAoB,EAAE,SAAS;EAC/BC,gBAAgB,EAAE,SAAS;EAC3BC,aAAa,EAAE;AACjB,CAAC;;AAED;AACA,OAAO,MAAMC,sCAAsC,GAAG;EACpDrC,IAAI,EAAE,4BAA4B;EAClCE,MAAM,EAAE,4BAA4B;EACpCC,IAAI,EAAE;AACR,CAAU;;AAEV;AACA,OAAO,MAAMmC,eAAe,GAAG;EAC7BC,OAAO,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,UAAU;IAAEC,KAAK,EAAE;EAAK,CAAC;EACpDC,SAAS,EAAE;IAAEH,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,YAAY;IAAEC,KAAK,EAAE;EAAI,CAAC;EACvDE,KAAK,EAAE;IAAEJ,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,QAAQ;IAAEC,KAAK,EAAE;EAAI,CAAC;EAC/CG,IAAI,EAAE;IAAEL,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,OAAO;IAAEC,KAAK,EAAE;EAAK,CAAC;EAC9CI,IAAI,EAAE;IAAEN,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,WAAW;IAAEC,KAAK,EAAE;EAAK,CAAC;EAClDK,IAAI,EAAE;IAAEP,GAAG,EAAE,CAAC;IAAEC,KAAK,EAAE,cAAc;IAAEC,KAAK,EAAE;EAAK;AACrD,CAAU","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import{usePerfectCircleStore}from "./PerfectCircleStore.js";import{PERFECT_CIRCLE_GAME_CONFIG}from "./PerfectCircleConstants.js";export class PerfectCircleService{constructor(){}setCallbacks(onAccuracyCalculated){this.onAccuracyCalculated = onAccuracyCalculated;}startGame(){const store = usePerfectCircleStore.getState();store.startGame();}stopGame(){usePerfectCircleStore.getState().stopGame();}resetGame(){usePerfectCircleStore.getState().resetGame();}cleanup(){}calculateCircleAccuracy(points){if(points.length < PERFECT_CIRCLE_GAME_CONFIG.MIN_POINTS){return 0;}const centerX = points.reduce((sum,p)=> sum + p.x,0)/ points.length;const centerY = points.reduce((sum,p)=> sum + p.y,0)/ points.length;const radii = points.map(p =>{const dx = p.x - centerX;const dy = p.y - centerY;return Math.sqrt(dx * dx + dy * dy);});const avgRadius = radii.reduce((sum,r)=> sum + r,0)/ radii.length;if(avgRadius === 0){return 0;}const variance = radii.reduce((sum,r)=> sum + Math.pow(r - avgRadius,2),0)/ radii.length;const stdDev = Math.sqrt(variance);const coefficientOfVariation = stdDev / avgRadius;const accuracy = 100 * Math.exp(-coefficientOfVariation * 2.5);return Math.round(accuracy);}evaluateDrawing(){const store = usePerfectCircleStore.getState();const points = store.drawnPoints;if(points.length < PERFECT_CIRCLE_GAME_CONFIG.MIN_POINTS){store.setAccuracy(0);store.setGameResult(false);return;}const accuracy = this.calculateCircleAccuracy(points);store.setAccuracy(accuracy);this.onAccuracyCalculated?.(accuracy);const won = accuracy > 50;store.setGameResult(won);}finishDrawing(){this.evaluateDrawing();}}
@@ -0,0 +1 @@
1
+ {"version":3,"names":["usePerfectCircleStore","PERFECT_CIRCLE_GAME_CONFIG","PerfectCircleService","constructor","setCallbacks","onAccuracyCalculated","startGame","store","getState","stopGame","resetGame","cleanup","calculateCircleAccuracy","points","length","MIN_POINTS","centerX","reduce","sum","p","x","centerY","y","radii","map","dx","dy","Math","sqrt","avgRadius","r","variance","pow","stdDev","coefficientOfVariation","accuracy","exp","round","evaluateDrawing","drawnPoints","setAccuracy","setGameResult","won","finishDrawing"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/PerfectCircleService.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import{create}from 'zustand';import{subscribeWithSelector}from 'zustand/middleware';import{immerMiddleware}from "../../services/UtilsService.js";export const usePerfectCircleStore = create()(subscribeWithSelector(immerMiddleware(set =>({isPlaying:false,isDrawing:false,gameOver:false,gameWon:false,accuracy:0,drawnPoints:[],startPoint:null,startGame:()=>{set(draft =>{draft.isPlaying = true;draft.isDrawing = false;draft.gameOver = false;draft.gameWon = false;draft.accuracy = 0;draft.drawnPoints = [];draft.startPoint = null;});},stopGame:()=>{set(draft =>{draft.isPlaying = false;draft.isDrawing = false;});},resetGame:()=>{set(draft =>{draft.isPlaying = false;draft.isDrawing = false;draft.gameOver = false;draft.gameWon = false;draft.accuracy = 0;draft.drawnPoints = [];draft.startPoint = null;});},startDrawing:point =>{set(draft =>{draft.isDrawing = true;draft.startPoint = point;draft.drawnPoints = [point];});},addPoint:point =>{set(draft =>{draft.drawnPoints.push(point);});},finishDrawing:()=>{set(draft =>{draft.isDrawing = false;});},setAccuracy:accuracy =>{set(draft =>{draft.accuracy = accuracy;});},setGameResult:won =>{set(draft =>{draft.gameOver = true;draft.gameWon = won;draft.isPlaying = false;draft.isDrawing = false;});},clearDrawing:()=>{set(draft =>{draft.drawnPoints = [];draft.startPoint = null;draft.isDrawing = false;draft.accuracy = 0;});}}))));export const useIsPlaying =()=> usePerfectCircleStore(state => state.isPlaying);export const useIsDrawing =()=> usePerfectCircleStore(state => state.isDrawing);export const useGameOver =()=> usePerfectCircleStore(state => state.gameOver);export const useGameWon =()=> usePerfectCircleStore(state => state.gameWon);export const useAccuracy =()=> usePerfectCircleStore(state => state.accuracy);export const useDrawnPoints =()=> usePerfectCircleStore(state => state.drawnPoints);
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","subscribeWithSelector","immerMiddleware","usePerfectCircleStore","set","isPlaying","isDrawing","gameOver","gameWon","accuracy","drawnPoints","startPoint","startGame","draft","stopGame","resetGame","startDrawing","point","addPoint","push","finishDrawing","setAccuracy","setGameResult","won","clearDrawing","useIsPlaying","state","useIsDrawing","useGameOver","useGameWon","useAccuracy","useDrawnPoints"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/PerfectCircleStore.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import React from 'react';import{View,Dimensions,StyleSheet}from 'react-native';import{Canvas,Path,Skia,Circle}from '@shopify/react-native-skia';import{Gesture,GestureDetector}from 'react-native-gesture-handler';import{runOnJS}from 'react-native-reanimated';import{usePerfectCircleStore,useDrawnPoints,useIsPlaying}from "../PerfectCircleStore.js";import{PERFECT_CIRCLE_COLORS,PERFECT_CIRCLE_GAME_CONFIG}from "../PerfectCircleConstants.js";import{playHaptic,HapticType}from "../../../services/HapticsService.js";import{playSound,GAME_SOUNDS}from "../../../services/SoundsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const GUIDE_CIRCLE_RADIUS = width / 2 - 20;const DrawingCanvasComponent =({gameService,offset = 0})=>{const drawnPoints = useDrawnPoints();const isPlaying = useIsPlaying();const path = React.useMemo(()=>{if(drawnPoints.length === 0)return null;const skPath = Skia.Path.Make();const firstPoint = drawnPoints[0];if(!firstPoint)return null;skPath.moveTo(firstPoint.x,firstPoint.y);for(let i = 1;i < drawnPoints.length;i++){const point = drawnPoints[i];if(point){skPath.lineTo(point.x,point.y);}}return skPath;},[drawnPoints]);const startDrawingJS = React.useCallback((x,y)=>{usePerfectCircleStore.getState().startDrawing({x,y});playHaptic(HapticType.LIGHT,true);},[]);const addPointJS = React.useCallback((x,y)=>{usePerfectCircleStore.getState().addPoint({x,y});},[]);const finishDrawingJS = React.useCallback(()=>{usePerfectCircleStore.getState().finishDrawing();playHaptic(HapticType.MEDIUM,true);playSound(GAME_SOUNDS.PERFECT_CIRCLE.DRAW_END,true);gameService.finishDrawing();},[gameService]);const panGesture = React.useMemo(()=> Gesture.Pan().onStart(event =>{'worklet';if(isPlaying){runOnJS(startDrawingJS)(event.x,event.y);}}).onUpdate(event =>{'worklet';if(isPlaying){runOnJS(addPointJS)(event.x,event.y);}}).onEnd(()=>{'worklet';if(isPlaying){runOnJS(finishDrawingJS)();}}),[isPlaying,startDrawingJS,addPointJS,finishDrawingJS]);const{circleCenterX,circleCenterY}= React.useMemo(()=>{const canvasHeight = height - offset + 100 - 350;return{circleCenterX:width / 2,circleCenterY:canvasHeight / 2};},[offset]);return _jsx(View,{style:[styles.container,{top:offset + 260}],children:_jsx(GestureDetector,{gesture:panGesture,children:_jsxs(Canvas,{style:styles.canvas,children:[_jsx(Circle,{cx:circleCenterX,cy:circleCenterY,r:GUIDE_CIRCLE_RADIUS,color:PERFECT_CIRCLE_COLORS.GUIDE,opacity:PERFECT_CIRCLE_GAME_CONFIG.GUIDE_CIRCLE_OPACITY,style:"stroke",strokeWidth:2}),path && _jsx(Path,{path:path,color:PERFECT_CIRCLE_COLORS.STROKE,style:"stroke",strokeWidth:PERFECT_CIRCLE_GAME_CONFIG.STROKE_WIDTH,strokeCap:"round",strokeJoin:"round"})]})})});};const styles = StyleSheet.create({container:{position:'absolute',left:0,right:0,bottom:250,justifyContent:'center',alignItems:'center'},canvas:{width,height:height - 350,justifyContent:'center',alignItems:'center'}});const arePropsEqual =(prevProps,nextProps)=>{return prevProps.offset === nextProps.offset && prevProps.gameService === nextProps.gameService;};export const DrawingCanvas = React.memo(DrawingCanvasComponent,arePropsEqual);DrawingCanvas.displayName = 'DrawingCanvas';
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Dimensions","StyleSheet","Canvas","Path","Skia","Circle","Gesture","GestureDetector","runOnJS","usePerfectCircleStore","useDrawnPoints","useIsPlaying","PERFECT_CIRCLE_COLORS","PERFECT_CIRCLE_GAME_CONFIG","playHaptic","HapticType","playSound","GAME_SOUNDS","jsx","_jsx","jsxs","_jsxs","width","height","get","GUIDE_CIRCLE_RADIUS","DrawingCanvasComponent","gameService","offset","drawnPoints","isPlaying","path","useMemo","length","skPath","Make","firstPoint","moveTo","x","y","i","point","lineTo","startDrawingJS","useCallback","getState","startDrawing","LIGHT","addPointJS","addPoint","finishDrawingJS","finishDrawing","MEDIUM","PERFECT_CIRCLE","DRAW_END","panGesture","Pan","onStart","event","onUpdate","onEnd","circleCenterX","circleCenterY","canvasHeight","style","styles","container","top","children","gesture","canvas","cx","cy","r","color","GUIDE","opacity","GUIDE_CIRCLE_OPACITY","strokeWidth","STROKE","STROKE_WIDTH","strokeCap","strokeJoin","create","position","left","right","bottom","justifyContent","alignItems","arePropsEqual","prevProps","nextProps","DrawingCanvas","memo","displayName"],"sourceRoot":"../../../../../src","sources":["games/perfect-circle/components/DrawingCanvas.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import React from 'react';import{View,Dimensions}from 'react-native';import{Canvas,LinearGradient,Rect,vec,Circle}from '@shopify/react-native-skia';import{PERFECT_CIRCLE_COLORS}from "../PerfectCircleConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const verticalGridLines = Array.from({length:Math.floor(width / 80)},(_,i)=> i);const horizontalGridLines = Array.from({length:Math.floor(height / 80)},(_,i)=> i);export const GameBackground = React.memo(({children})=>{const decorativeCircles = React.useMemo(()=>{const circles = [];const circleCount = 15;for(let i = 0;i < circleCount;i++){const x = width / circleCount * i + Math.random()* 100;const y = height / circleCount * i + Math.random()* 100;const size = 20 + Math.random()* 40;const opacity = 0.05 + Math.random()* 0.1;circles.push(_jsx(Circle,{cx:x,cy:y,r:size,color:`${PERFECT_CIRCLE_COLORS.GUIDE}${Math.floor(opacity * 255).toString(16).padStart(2,'0')}`},`circle-${i}`));}return circles;},[]);return _jsxs(View,{style:{flex:1},children:[_jsxs(Canvas,{style:{position:'absolute',top:0,left:0,right:0,bottom:0,width,height},children:[_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width,height),colors:[PERFECT_CIRCLE_COLORS.BACKGROUND,PERFECT_CIRCLE_COLORS.CANVAS,PERFECT_CIRCLE_COLORS.BACKGROUND]})}),_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(width / 2,height / 2),end:vec(width,height),colors:['rgba(0,212,255,0.1)','transparent','rgba(0,212,255,0.05)']})}),decorativeCircles,verticalGridLines.map(i => _jsx(Rect,{x:i * 80,y:0,width:1,height:height,color:"rgba(255,255,255,0.03)"},`grid-v-${i}`)),horizontalGridLines.map(i => _jsx(Rect,{x:0,y:i * 80,width:width,height:1,color:"rgba(255,255,255,0.03)"},`grid-h-${i}`))]}),children]});});GameBackground.displayName = 'GameBackground';
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Dimensions","Canvas","LinearGradient","Rect","vec","Circle","PERFECT_CIRCLE_COLORS","jsx","_jsx","jsxs","_jsxs","width","height","get","verticalGridLines","Array","from","length","Math","floor","_","i","horizontalGridLines","GameBackground","memo","children","decorativeCircles","useMemo","circles","circleCount","x","random","y","size","opacity","push","cx","cy","r","color","GUIDE","toString","padStart","style","flex","position","top","left","right","bottom","start","end","colors","BACKGROUND","CANVAS","map","displayName"],"sourceRoot":"../../../../../src","sources":["games/perfect-circle/components/GameBackground.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";import React from 'react';import{View,Text,StyleSheet}from 'react-native';import{useAccuracy}from "../PerfectCircleStore.js";import{PERFECT_CIRCLE_COLORS}from "../PerfectCircleConstants.js";import{ScoreBoardContainer}from "../../../helpers/index.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const ScoreBoard = React.memo(({offset = 0})=>{const accuracy = useAccuracy();return _jsx(ScoreBoardContainer,{offset:offset,backgroundColor:"rgba(0,212,255,0.3)",borderColor:PERFECT_CIRCLE_COLORS.UI,children:_jsx(View,{style:styles.scoreBoard,children:_jsxs(View,{style:styles.scoreSection,children:[_jsx(Text,{style:styles.scoreLabel,children:"Accuracy"}),_jsx(Text,{style:[styles.scoreValue,accuracy > 0 && styles.accuracyActive],children:accuracy})]})})});});ScoreBoard.displayName = 'ScoreBoard';const styles = StyleSheet.create({scoreBoard:{flexDirection:'row',justifyContent:'center',alignItems:'center'},scoreSection:{alignItems:'center',flex:1},scoreLabel:{fontSize:16,fontWeight:'bold',color:PERFECT_CIRCLE_COLORS.TEXT,marginBottom:4},scoreValue:{fontSize:25,fontWeight:'bold',color:PERFECT_CIRCLE_COLORS.TEXT},accuracyActive:{color:PERFECT_CIRCLE_COLORS.UI}});
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","View","Text","StyleSheet","useAccuracy","PERFECT_CIRCLE_COLORS","ScoreBoardContainer","jsx","_jsx","jsxs","_jsxs","ScoreBoard","memo","offset","accuracy","backgroundColor","borderColor","UI","children","style","styles","scoreBoard","scoreSection","scoreLabel","scoreValue","accuracyActive","displayName","create","flexDirection","justifyContent","alignItems","flex","fontSize","fontWeight","color","TEXT","marginBottom"],"sourceRoot":"../../../../../src","sources":["games/perfect-circle/components/ScoreBoard.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AACrD,SAASC,WAAW,QAAQ,0BAAuB;AACnD,SAASC,qBAAqB,QAAQ,8BAA2B;AACjE,SAASC,mBAAmB,QAAQ,2BAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMvD,OAAO,MAAMC,UAAqC,gBAAGX,KAAK,CAACY,IAAI,CAAC,CAAC;EAAEC,MAAM,GAAG;AAAE,CAAC,KAAK;EAClF;EACA,MAAMC,QAAQ,GAAGV,WAAW,CAAC,CAAC;EAE9B,oBACEI,IAAA,CAACF,mBAAmB;IAClBO,MAAM,EAAEA,MAAO;IACfE,eAAe,EAAC,wBAAwB;IACxCC,WAAW,EAAEX,qBAAqB,CAACY,EAAG;IAAAC,QAAA,eAEtCV,IAAA,CAACP,IAAI;MAACkB,KAAK,EAAEC,MAAM,CAACC,UAAW;MAAAH,QAAA,eAC7BR,KAAA,CAACT,IAAI;QAACkB,KAAK,EAAEC,MAAM,CAACE,YAAa;QAAAJ,QAAA,gBAC/BV,IAAA,CAACN,IAAI;UAACiB,KAAK,EAAEC,MAAM,CAACG,UAAW;UAAAL,QAAA,EAAC;QAAQ,CAAM,CAAC,eAC/CV,IAAA,CAACN,IAAI;UAACiB,KAAK,EAAE,CAACC,MAAM,CAACI,UAAU,EAAEV,QAAQ,GAAG,CAAC,IAAIM,MAAM,CAACK,cAAc,CAAE;UAAAP,QAAA,EACrEJ;QAAQ,CACL,CAAC;MAAA,CACH;IAAC,CACH;EAAC,CACY,CAAC;AAE1B,CAAC,CAAC;AAEFH,UAAU,CAACe,WAAW,GAAG,YAAY;AAErC,MAAMN,MAAM,GAAGjB,UAAU,CAACwB,MAAM,CAAC;EAC/BN,UAAU,EAAE;IACVO,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDR,YAAY,EAAE;IACZQ,UAAU,EAAE,QAAQ;IACpBC,IAAI,EAAE;EACR,CAAC;EACDR,UAAU,EAAE;IACVS,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE7B,qBAAqB,CAAC8B,IAAI;IACjCC,YAAY,EAAE;EAChB,CAAC;EACDZ,UAAU,EAAE;IACVQ,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE7B,qBAAqB,CAAC8B;EAC/B,CAAC;EACDV,cAAc,EAAE;IACdS,KAAK,EAAE7B,qBAAqB,CAACY;EAC/B;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ "use strict";export{PerfectCircle}from "./PerfectCircle.js";export{PERFECT_CIRCLE_THEME}from "./PerfectCircleConstants.js";
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PerfectCircle","PERFECT_CIRCLE_THEME"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/index.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,oBAAoB,QAAQ,6BAA0B","ignoreList":[]}
@@ -1,285 +1 @@
1
- "use strict";
2
-
3
- import React, { useEffect, useRef, useCallback, useMemo } from 'react';
4
- import { View, StyleSheet, Dimensions } from 'react-native';
5
- import { GestureHandlerRootView } from 'react-native-gesture-handler';
6
- import { usePopitFidgetStore } from "./PopitFidgetStore.js";
7
- import { PopitFidgetService } from "./PopitFidgetService.js";
8
- import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/UtilsService.js";
9
- import { playSound, GAME_SOUNDS } from "../../services/SoundsService.js";
10
- import { playHaptic, HapticType } from "../../services/HapticsService.js";
11
- import { GameBackground, FidgetGrid as FidgetGridComponent, ScoreBoard } from "./components/index.js";
12
- import { GameControlButton, GameOverModal } from "../../helpers/index.js";
13
- import { GameSettingsModal } from "../../helpers/index.js";
14
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
- const {
16
- width,
17
- height
18
- } = Dimensions.get('window');
19
- const PopitFidget = ({
20
- settings,
21
- onSettingsChange
22
- }) => {
23
- // Use selective subscriptions to prevent unnecessary re-renders
24
- const fidgetGrid = usePopitFidgetStore(state => state.fidgetGrid);
25
- const timeElapsed = usePopitFidgetStore(state => state.timeElapsed);
26
- const isPlaying = usePopitFidgetStore(state => state.isPlaying);
27
- const gameOver = usePopitFidgetStore(state => state.gameOver);
28
- const gameWon = usePopitFidgetStore(state => state.gameWon);
29
-
30
- // Get store actions (these don't cause re-renders)
31
- const startGame = usePopitFidgetStore(state => state.startGame);
32
- const resetGame = usePopitFidgetStore(state => state.resetGame);
33
- const setFidgetGrid = usePopitFidgetStore(state => state.setFidgetGrid);
34
- const popBubble = usePopitFidgetStore(state => state.popBubble);
35
- const incrementTime = usePopitFidgetStore(state => state.incrementTime);
36
- const serviceRef = useRef(null);
37
-
38
- // Use settings from props
39
- const {
40
- difficulty = 'medium',
41
- enableSounds = true,
42
- enableHaptics = true
43
- } = settings || {};
44
-
45
- // Initialize service and generate initial fidget grid
46
- useEffect(() => {
47
- if (!serviceRef.current) {
48
- serviceRef.current = new PopitFidgetService();
49
- }
50
-
51
- // Generate initial fidget grid so it shows before game starts
52
- if (serviceRef.current && !fidgetGrid) {
53
- const grid = serviceRef.current.generateFidgetGrid(difficulty);
54
- setFidgetGrid(grid);
55
- }
56
- }, [fidgetGrid, setFidgetGrid, difficulty]);
57
-
58
- // Unmount-only cleanup to fully reset without causing state update loops
59
- useEffect(() => {
60
- return () => {
61
- // Stop timers and reset store, but do NOT generate a new grid on unmount
62
- try {
63
- serviceRef.current?.stopGameTimer();
64
- } catch {}
65
- try {
66
- resetGame();
67
- } catch {}
68
- try {
69
- serviceRef.current?.cleanup();
70
- } catch {}
71
- };
72
- }, []);
73
-
74
- // Memoize service to prevent recreation
75
- const service = useMemo(() => {
76
- if (!serviceRef.current) {
77
- serviceRef.current = new PopitFidgetService();
78
- }
79
- return serviceRef.current;
80
- }, []);
81
-
82
- // Generate new fidget grid (simplified - always square based on difficulty)
83
- const generateNewFidget = useCallback(() => {
84
- const grid = service.generateFidgetGrid(difficulty);
85
- setFidgetGrid(grid);
86
- }, [service, setFidgetGrid, difficulty]);
87
-
88
- // Track previous difficulty to avoid infinite loops
89
- const prevDifficultyRef = React.useRef(difficulty);
90
-
91
- // Watch for difficulty changes and regenerate grid when difficulty changes
92
- const handleDifficultyChange = useCallback(() => {
93
- // Only regenerate if difficulty actually changed
94
- if (prevDifficultyRef.current !== difficulty) {
95
- if (!isPlaying) {
96
- // Game not playing - just regenerate grid
97
- generateNewFidget();
98
- }
99
- prevDifficultyRef.current = difficulty;
100
- }
101
- }, [difficulty, isPlaying, generateNewFidget]);
102
- useEffect(() => {
103
- handleDifficultyChange();
104
- }, [handleDifficultyChange]);
105
-
106
- // Watch for game completion events and play appropriate sounds
107
- React.useEffect(() => {
108
- if (gameOver && !isPlaying) {
109
- if (gameWon) {
110
- // All bubbles popped - game completed successfully
111
- playSound(GAME_SOUNDS.BUBBLE_POPPER.COMPLETE, enableSounds);
112
- } else {
113
- // Time ran out - game over
114
- playSound(GAME_SOUNDS.TIME_UP, enableSounds);
115
- }
116
- }
117
- }, [gameOver, gameWon, isPlaying, enableSounds]);
118
-
119
- // Timer effect - handles time elapsed when game is playing
120
- useEffect(() => {
121
- let timerInterval = null;
122
- if (isPlaying) {
123
- timerInterval = setInterval(() => {
124
- incrementTime();
125
- }, 1000);
126
- }
127
- return () => {
128
- if (timerInterval) {
129
- clearInterval(timerInterval);
130
- }
131
- };
132
- }, [isPlaying, incrementTime]);
133
-
134
- // Start game
135
- const startGameHandler = useCallback(() => {
136
- // Always generate new fidget when starting a new game
137
- generateNewFidget();
138
-
139
- // Play game start sound
140
- playSound(GAME_SOUNDS.BUBBLE_POPPER.START, enableSounds);
141
-
142
- // Store uses fixed 60s duration internally
143
- startGame();
144
-
145
- // Haptic feedback
146
- playHaptic(HapticType.MEDIUM, enableHaptics);
147
- }, [startGame, enableSounds, enableHaptics, generateNewFidget]);
148
-
149
- // Stop game - simply reset the game state without showing game over popup
150
- const stopGameHandler = useCallback(() => {
151
- service.stopGameTimer();
152
- resetGame();
153
- generateNewFidget();
154
- }, [service, resetGame, generateNewFidget]);
155
-
156
- // Reset game
157
- const resetGameHandler = useCallback(() => {
158
- service.stopGameTimer();
159
- resetGame();
160
- generateNewFidget();
161
- }, [service, resetGame, generateNewFidget]);
162
-
163
- // Handle bubble pop with stable callback reference
164
- const handleBubblePop = useCallback((row, col) => {
165
- if (!fidgetGrid) return;
166
- const bubble = fidgetGrid.bubbles[row]?.[col];
167
- if (!bubble || bubble.isPopped) return;
168
-
169
- // Play pop sound
170
- playSound(GAME_SOUNDS.BUBBLE_POPPER.POP, enableSounds);
171
-
172
- // Pop the bubble in store
173
- popBubble(row, col);
174
-
175
- // Haptic feedback
176
- playHaptic(HapticType.LIGHT, enableHaptics);
177
-
178
- // Completion percentage is already calculated efficiently in the store
179
- }, [fidgetGrid, popBubble, enableSounds, enableHaptics]);
180
-
181
- // Memoize screen dimensions to prevent recalculation
182
- const screenDimensions = useMemo(() => ({
183
- width,
184
- height
185
- }), []);
186
-
187
- // Calculate bubble size based on grid - made bigger for Pop It appearance
188
- const bubbleSize = useMemo(() => {
189
- if (!fidgetGrid) return 60;
190
- const availableWidth = screenDimensions.width * 0.85;
191
- const availableHeight = screenDimensions.height * 0.6;
192
- const maxSize = Math.min(availableWidth / fidgetGrid.size, availableHeight / fidgetGrid.size);
193
- // Increased minimum and maximum sizes for bigger, more prominent bubbles
194
- return Math.max(45, Math.min(80, maxSize * 0.9));
195
- }, [fidgetGrid, screenDimensions]);
196
-
197
- // Memoize game control button props to prevent unnecessary re-renders
198
- const gameControlButtonProps = useMemo(() => ({
199
- isPlaying,
200
- gameOver,
201
- onStartGame: startGameHandler,
202
- onStopGame: stopGameHandler,
203
- startButtonText: "START POPPING",
204
- stopButtonText: "STOP GAME",
205
- startButtonSubtext: "Pop bubbles to relax!",
206
- stopButtonSubtext: "End current game",
207
- startButtonColor: "#9c27b0",
208
- stopButtonColor: "#dc2626",
209
- startButtonBorderColor: "#ce93d8",
210
- stopButtonBorderColor: "#f87171"
211
- }), [isPlaying, gameOver, startGameHandler, stopGameHandler]);
212
-
213
- // Memoize game over modal props to prevent unnecessary re-renders
214
- const gameOverModalProps = useMemo(() => ({
215
- isVisible: gameOver,
216
- score: timeElapsed,
217
- onPlayAgain: resetGameHandler,
218
- buttonText: "Pop Again!",
219
- primaryColor: "rgba(108, 92, 231, 0.85)",
220
- borderColor: "rgba(108, 92, 231, 0.95)",
221
- buttonColor: "#9c27b0",
222
- buttonBorderColor: "#ce93d8",
223
- scoreFormatter: time => {
224
- const mins = Math.floor(time / 60);
225
- const secs = time % 60;
226
- return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
227
- },
228
- scoreLabel: "Time Elapsed"
229
- }), [gameOver, timeElapsed, resetGameHandler]);
230
-
231
- // Get offset from settings
232
- const offset = settings?.offset ?? 0;
233
- return /*#__PURE__*/_jsx(View, {
234
- style: styles.container,
235
- children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
236
- children: /*#__PURE__*/_jsxs(View, {
237
- style: [styles.gameContainer, {
238
- paddingTop: offset
239
- }],
240
- children: [/*#__PURE__*/_jsx(GameBackground, {
241
- width: screenDimensions.width,
242
- height: screenDimensions.height,
243
- isPlaying: isPlaying
244
- }), /*#__PURE__*/_jsx(ScoreBoard, {
245
- timeElapsed: timeElapsed,
246
- offset: offset
247
- }), /*#__PURE__*/_jsx(View, {
248
- style: styles.gameArea,
249
- children: fidgetGrid && /*#__PURE__*/_jsx(FidgetGridComponent, {
250
- grid: fidgetGrid,
251
- bubbleSize: bubbleSize,
252
- onBubblePop: handleBubblePop,
253
- hapticEnabled: enableHaptics,
254
- isPlaying: isPlaying
255
- })
256
- }), /*#__PURE__*/_jsx(GameControlButton, {
257
- ...gameControlButtonProps
258
- }), /*#__PURE__*/_jsx(GameOverModal, {
259
- ...gameOverModalProps
260
- }), /*#__PURE__*/_jsx(GameSettingsModal, {
261
- gameId: GAME_IDS.POPIT_FIDGET,
262
- settings: settings || DEFAULT_GAME_SETTINGS,
263
- onSettingsChange: onSettingsChange
264
- })]
265
- })
266
- })
267
- });
268
- };
269
- const styles = StyleSheet.create({
270
- container: {
271
- flex: 1
272
- },
273
- gameContainer: {
274
- flex: 1,
275
- backgroundColor: '#fef7ff' // Very light lavender to complement rainbow theme
276
- },
277
- gameArea: {
278
- flex: 1,
279
- justifyContent: 'center',
280
- alignItems: 'center',
281
- paddingHorizontal: 20
282
- }
283
- });
284
- export { PopitFidget };
285
- //# sourceMappingURL=PopitFidget.js.map
1
+ "use strict";import React,{useEffect,useRef,useCallback,useMemo}from 'react';import{View,StyleSheet,Dimensions}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{usePopitFidgetStore}from "./PopitFidgetStore.js";import{PopitFidgetService}from "./PopitFidgetService.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{calculateTimeBasedScore}from "../../services/ScoringService.js";import{GameBackground,FidgetGrid as FidgetGridComponent,ScoreBoard}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const PopitFidget =({settings,onSettingsChange,onEndGame})=>{const fidgetGrid = usePopitFidgetStore(state => state.fidgetGrid);const timeElapsed = usePopitFidgetStore(state => state.timeElapsed);const isPlaying = usePopitFidgetStore(state => state.isPlaying);const gameOver = usePopitFidgetStore(state => state.gameOver);const gameWon = usePopitFidgetStore(state => state.gameWon);const gameReportedRef = useRef(false);const{difficulty = 'medium',enableSounds = true,enableHaptics = true}= settings ||{};const reportGameEnd = useCallback((status,currentTime)=>{if(onEndGame && !gameReportedRef.current){const expectedTimes ={easy:30,medium:45,hard:60};const expectedTime = expectedTimes[difficulty];const calculatedScore = status === 'win' ? calculateTimeBasedScore(currentTime,expectedTime):0;onEndGame({status,score:calculatedScore.toString()});gameReportedRef.current = true;}},[onEndGame,difficulty]);const startGame = usePopitFidgetStore(state => state.startGame);const resetGame = usePopitFidgetStore(state => state.resetGame);const setFidgetGrid = usePopitFidgetStore(state => state.setFidgetGrid);const popBubble = usePopitFidgetStore(state => state.popBubble);const incrementTime = usePopitFidgetStore(state => state.incrementTime);const serviceRef = useRef(null);useEffect(()=>{if(!serviceRef.current){serviceRef.current = new PopitFidgetService();}if(serviceRef.current && !fidgetGrid){const grid = serviceRef.current.generateFidgetGrid(difficulty);setFidgetGrid(grid);}},[fidgetGrid,setFidgetGrid,difficulty]);useEffect(()=>{return()=>{try{serviceRef.current?.stopGameTimer();}catch{}try{resetGame();}catch{}try{serviceRef.current?.cleanup();}catch{}};},[]);const service = useMemo(()=>{if(!serviceRef.current){serviceRef.current = new PopitFidgetService();}return serviceRef.current;},[]);const generateNewFidget = useCallback(()=>{const grid = service.generateFidgetGrid(difficulty);setFidgetGrid(grid);},[service,setFidgetGrid,difficulty]);const prevDifficultyRef = React.useRef(difficulty);const handleDifficultyChange = useCallback(()=>{if(prevDifficultyRef.current !== difficulty){if(!isPlaying){generateNewFidget();}prevDifficultyRef.current = difficulty;}},[difficulty,isPlaying,generateNewFidget]);useEffect(()=>{handleDifficultyChange();},[handleDifficultyChange]);React.useEffect(()=>{if(gameOver && !isPlaying && !gameReportedRef.current){if(gameWon){playSound(GAME_SOUNDS.BUBBLE_POPPER.COMPLETE,enableSounds);reportGameEnd('win',timeElapsed);}else{playSound(GAME_SOUNDS.TIME_UP,enableSounds);reportGameEnd('lose',timeElapsed);}}if(!gameOver){gameReportedRef.current = false;}},[gameOver,gameWon,isPlaying,enableSounds,reportGameEnd,timeElapsed]);useEffect(()=>{let timerInterval = null;if(isPlaying){timerInterval = setInterval(()=>{incrementTime();},1000);}return()=>{if(timerInterval){clearInterval(timerInterval);}};},[isPlaying,incrementTime]);const startGameHandler = useCallback(()=>{gameReportedRef.current = false;generateNewFidget();playSound(GAME_SOUNDS.BUBBLE_POPPER.START,enableSounds);startGame();playHaptic(HapticType.MEDIUM,enableHaptics);},[startGame,enableSounds,enableHaptics,generateNewFidget]);const stopGameHandler = useCallback(()=>{reportGameEnd('cancel',timeElapsed);service.stopGameTimer();resetGame();generateNewFidget();},[service,resetGame,generateNewFidget,reportGameEnd,timeElapsed]);const resetGameHandler = useCallback(()=>{service.stopGameTimer();resetGame();generateNewFidget();},[service,resetGame,generateNewFidget]);const handleBubblePop = useCallback((row,col)=>{if(!fidgetGrid)return;const bubble = fidgetGrid.bubbles[row]?.[col];if(!bubble || bubble.isPopped)return;playSound(GAME_SOUNDS.BUBBLE_POPPER.POP,enableSounds);popBubble(row,col);playHaptic(HapticType.LIGHT,enableHaptics);},[fidgetGrid,popBubble,enableSounds,enableHaptics]);const screenDimensions = useMemo(()=>({width,height}),[]);const bubbleSize = useMemo(()=>{if(!fidgetGrid)return 60;const availableWidth = screenDimensions.width * 0.85;const availableHeight = screenDimensions.height * 0.6;const maxSize = Math.min(availableWidth / fidgetGrid.size,availableHeight / fidgetGrid.size);return Math.max(45,Math.min(80,maxSize * 0.9));},[fidgetGrid,screenDimensions]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver,onStartGame:startGameHandler,onStopGame:stopGameHandler,startButtonText:"START POPPING",stopButtonText:"STOP GAME",startButtonSubtext:"Pop bubbles to relax!",stopButtonSubtext:"End current game",startButtonColor:"#9c27b0",stopButtonColor:"#dc2626",startButtonBorderColor:"#ce93d8",stopButtonBorderColor:"#f87171"}),[isPlaying,gameOver,startGameHandler,stopGameHandler]);const gameOverModalProps = useMemo(()=>({isVisible:gameOver,score:timeElapsed,onPlayAgain:resetGameHandler,buttonText:"Pop Again!",primaryColor:"rgba(156,39,176,0.5)",borderColor:"rgba(156,39,176,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#9c27b0",scoreFormatter:time =>{const mins = Math.floor(time / 60);const secs = time % 60;return `${mins.toString().padStart(2,'0')}:${secs.toString().padStart(2,'0')}`;},scoreLabel:"Time Elapsed"}),[gameOver,timeElapsed,resetGameHandler]);const offset = settings?.offset ?? 0;return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(View,{style:[styles.gameContainer,{paddingTop:offset}],children:[_jsx(GameBackground,{width:screenDimensions.width,height:screenDimensions.height,isPlaying:isPlaying}),_jsx(ScoreBoard,{timeElapsed:timeElapsed,offset:offset}),_jsx(View,{style:styles.gameArea,children:fidgetGrid && _jsx(FidgetGridComponent,{grid:fidgetGrid,bubbleSize:bubbleSize,onBubblePop:handleBubblePop,hapticEnabled:enableHaptics,isPlaying:isPlaying})}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{gameId:GAME_IDS.POPIT_FIDGET,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]})})});};const styles = StyleSheet.create({container:{flex:1},gameContainer:{flex:1,backgroundColor:'#fef7ff'},gameArea:{flex:1,justifyContent:'center',alignItems:'center',paddingHorizontal:20}});export{PopitFidget};
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useRef","useCallback","useMemo","View","StyleSheet","Dimensions","GestureHandlerRootView","usePopitFidgetStore","PopitFidgetService","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","GameBackground","FidgetGrid","FidgetGridComponent","ScoreBoard","GameControlButton","GameOverModal","GameSettingsModal","jsx","_jsx","jsxs","_jsxs","width","height","get","PopitFidget","settings","onSettingsChange","fidgetGrid","state","timeElapsed","isPlaying","gameOver","gameWon","startGame","resetGame","setFidgetGrid","popBubble","incrementTime","serviceRef","difficulty","enableSounds","enableHaptics","current","grid","generateFidgetGrid","stopGameTimer","cleanup","service","generateNewFidget","prevDifficultyRef","handleDifficultyChange","BUBBLE_POPPER","COMPLETE","TIME_UP","timerInterval","setInterval","clearInterval","startGameHandler","START","MEDIUM","stopGameHandler","resetGameHandler","handleBubblePop","row","col","bubble","bubbles","isPopped","POP","LIGHT","screenDimensions","bubbleSize","availableWidth","availableHeight","maxSize","Math","min","size","max","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","score","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","scoreFormatter","time","mins","floor","secs","toString","padStart","scoreLabel","offset","style","styles","container","children","gameContainer","paddingTop","gameArea","onBubblePop","hapticEnabled","gameId","POPIT_FIDGET","create","flex","backgroundColor","justifyContent","alignItems","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["games/popit-fidget/PopitFidget.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useRef","useCallback","useMemo","View","StyleSheet","Dimensions","GestureHandlerRootView","usePopitFidgetStore","PopitFidgetService","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","calculateTimeBasedScore","GameBackground","FidgetGrid","FidgetGridComponent","ScoreBoard","GameControlButton","GameOverModal","GameSettingsModal","jsx","_jsx","jsxs","_jsxs","width","height","get","PopitFidget","settings","onSettingsChange","onEndGame","fidgetGrid","state","timeElapsed","isPlaying","gameOver","gameWon","gameReportedRef","difficulty","enableSounds","enableHaptics","reportGameEnd","status","currentTime","current","expectedTimes","easy","medium","hard","expectedTime","calculatedScore","score","toString","startGame","resetGame","setFidgetGrid","popBubble","incrementTime","serviceRef","grid","generateFidgetGrid","stopGameTimer","cleanup","service","generateNewFidget","prevDifficultyRef","handleDifficultyChange","BUBBLE_POPPER","COMPLETE","TIME_UP","timerInterval","setInterval","clearInterval","startGameHandler","START","MEDIUM","stopGameHandler","resetGameHandler","handleBubblePop","row","col","bubble","bubbles","isPopped","POP","LIGHT","screenDimensions","bubbleSize","availableWidth","availableHeight","maxSize","Math","min","size","max","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreFormatter","time","mins","floor","secs","padStart","scoreLabel","offset","style","styles","container","children","gameContainer","paddingTop","gameArea","onBubblePop","hapticEnabled","gameId","POPIT_FIDGET","create","flex","backgroundColor","justifyContent","alignItems","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["games/popit-fidget/PopitFidget.tsx"],"mappings":"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","ignoreList":[]}