react-native-games 0.4.0 → 0.5.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 (275) hide show
  1. package/README.md +121 -130
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +111 -423
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +27 -28
  5. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -1
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +42 -117
  7. package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -1
  8. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +12 -1
  9. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -1
  10. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +102 -75
  11. package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -1
  12. package/lib/module/games/balloon-blaster/components/GameArea.js +139 -30
  13. package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
  14. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +7 -6
  15. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  16. package/lib/module/games/balloon-blaster/components/index.js +0 -3
  17. package/lib/module/games/balloon-blaster/components/index.js.map +1 -1
  18. package/lib/module/games/fruit-ninja/FruitNinja.js +94 -376
  19. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  20. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +19 -22
  21. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -1
  22. package/lib/module/games/fruit-ninja/FruitNinjaService.js +30 -9
  23. package/lib/module/games/fruit-ninja/FruitNinjaService.js.map +1 -1
  24. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +29 -4
  25. package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -1
  26. package/lib/module/games/fruit-ninja/components/GameArea.js +194 -29
  27. package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -1
  28. package/lib/module/games/fruit-ninja/components/GameBackground.js +107 -190
  29. package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -1
  30. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +9 -30
  31. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
  32. package/lib/module/games/fruit-ninja/components/index.js +0 -3
  33. package/lib/module/games/fruit-ninja/components/index.js.map +1 -1
  34. package/lib/module/games/maze-runner/MazeRunner.js +106 -109
  35. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  36. package/lib/module/games/maze-runner/MazeRunnerConstants.js +19 -24
  37. package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -1
  38. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +5 -4
  39. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js.map +1 -1
  40. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +16 -7
  41. package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -1
  42. package/lib/module/games/maze-runner/components/ScoreBoard.js +8 -3
  43. package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
  44. package/lib/module/games/maze-runner/components/WallComponent.js +3 -2
  45. package/lib/module/games/maze-runner/components/WallComponent.js.map +1 -1
  46. package/lib/module/games/maze-runner/components/index.js +0 -1
  47. package/lib/module/games/maze-runner/components/index.js.map +1 -1
  48. package/lib/module/games/popit-fidget/PopitFidget.js +113 -112
  49. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  50. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +20 -23
  51. package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -1
  52. package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -59
  53. package/lib/module/games/popit-fidget/PopitFidgetService.js.map +1 -1
  54. package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -27
  55. package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -1
  56. package/lib/module/games/popit-fidget/components/BubbleComponent.js +24 -22
  57. package/lib/module/games/popit-fidget/components/BubbleComponent.js.map +1 -1
  58. package/lib/module/games/popit-fidget/components/GameBackground.js +4 -1
  59. package/lib/module/games/popit-fidget/components/GameBackground.js.map +1 -1
  60. package/lib/module/games/popit-fidget/components/ScoreBoard.js +9 -2
  61. package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -1
  62. package/lib/module/games/popit-fidget/components/index.js +0 -2
  63. package/lib/module/games/popit-fidget/components/index.js.map +1 -1
  64. package/lib/module/games/space-fighter/SpaceFighter.js +121 -369
  65. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  66. package/lib/module/games/space-fighter/SpaceFighterConstants.js +21 -23
  67. package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -1
  68. package/lib/module/games/space-fighter/SpaceFighterService.js +30 -11
  69. package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -1
  70. package/lib/module/games/space-fighter/SpaceFighterStore.js +54 -2
  71. package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -1
  72. package/lib/module/games/space-fighter/components/AsteroidComponent.js +7 -5
  73. package/lib/module/games/space-fighter/components/AsteroidComponent.js.map +1 -1
  74. package/lib/module/games/space-fighter/components/GameArea.js +234 -14
  75. package/lib/module/games/space-fighter/components/GameArea.js.map +1 -1
  76. package/lib/module/games/space-fighter/components/GameBackground.js +10 -65
  77. package/lib/module/games/space-fighter/components/GameBackground.js.map +1 -1
  78. package/lib/module/games/space-fighter/components/ScoreBoard.js +9 -7
  79. package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -1
  80. package/lib/module/games/space-fighter/components/Spacecraft3D.js +72 -111
  81. package/lib/module/games/space-fighter/components/Spacecraft3D.js.map +1 -1
  82. package/lib/module/games/space-fighter/components/SpacecraftPath.js +42 -27
  83. package/lib/module/games/space-fighter/components/SpacecraftPath.js.map +1 -1
  84. package/lib/module/games/space-fighter/components/index.js +0 -3
  85. package/lib/module/games/space-fighter/components/index.js.map +1 -1
  86. package/lib/module/games/whack-a-mole/WhackAMole.js +63 -73
  87. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  88. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +17 -19
  89. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -1
  90. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +20 -7
  91. package/lib/module/games/whack-a-mole/WhackAMoleStore.js.map +1 -1
  92. package/lib/module/games/whack-a-mole/components/GameHole.js +2 -2
  93. package/lib/module/games/whack-a-mole/components/GameHole.js.map +1 -1
  94. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +5 -1
  95. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
  96. package/lib/module/games/whack-a-mole/components/index.js +0 -1
  97. package/lib/module/games/whack-a-mole/components/index.js.map +1 -1
  98. package/lib/module/services/GamesConstants.js +13 -21
  99. package/lib/module/services/GamesConstants.js.map +1 -1
  100. package/lib/module/services/GamesService.js +30 -26
  101. package/lib/module/services/GamesService.js.map +1 -1
  102. package/lib/module/services/SoundsService.js +21 -21
  103. package/lib/module/shared/helpers/AnimationFrame.js +120 -0
  104. package/lib/module/shared/helpers/AnimationFrame.js.map +1 -0
  105. package/lib/module/shared/helpers/AnimationTracker.js +89 -0
  106. package/lib/module/shared/helpers/AnimationTracker.js.map +1 -0
  107. package/lib/module/shared/helpers/ErrorHandler.js +269 -0
  108. package/lib/module/shared/helpers/ErrorHandler.js.map +1 -0
  109. package/lib/module/shared/helpers/GameControlButton.js +67 -58
  110. package/lib/module/shared/helpers/GameControlButton.js.map +1 -1
  111. package/lib/module/{games/whack-a-mole/components → shared/helpers}/GameOverModal.js +23 -13
  112. package/lib/module/shared/helpers/GameOverModal.js.map +1 -0
  113. package/lib/module/shared/helpers/GameSettingsModal.js +287 -0
  114. package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -0
  115. package/lib/module/shared/helpers/ParticleBlast.js +133 -0
  116. package/lib/module/shared/helpers/ParticleBlast.js.map +1 -0
  117. package/lib/module/shared/helpers/index.js +7 -0
  118. package/lib/module/shared/helpers/index.js.map +1 -1
  119. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +2 -14
  120. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  121. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +8 -7
  122. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts.map +1 -1
  123. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -2
  124. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -1
  125. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -1
  126. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -1
  127. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +1 -15
  128. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -1
  129. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +1 -7
  130. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  131. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +0 -3
  132. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -1
  133. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +2 -14
  134. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  135. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +5 -5
  136. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts.map +1 -1
  137. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +9 -1
  138. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts.map +1 -1
  139. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +1 -0
  140. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts.map +1 -1
  141. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +1 -15
  142. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts.map +1 -1
  143. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -1
  144. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +1 -7
  145. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
  146. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts +0 -3
  147. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts.map +1 -1
  148. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +2 -8
  149. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  150. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +4 -4
  151. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts.map +1 -1
  152. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts.map +1 -1
  153. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -1
  154. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
  155. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts.map +1 -1
  156. package/lib/typescript/src/games/maze-runner/components/index.d.ts +0 -1
  157. package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -1
  158. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +2 -8
  159. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  160. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +4 -4
  161. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts.map +1 -1
  162. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -21
  163. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts.map +1 -1
  164. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +1 -5
  165. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -1
  166. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts.map +1 -1
  167. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts +2 -2
  168. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts.map +1 -1
  169. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +2 -2
  170. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -1
  171. package/lib/typescript/src/games/popit-fidget/components/index.d.ts +0 -2
  172. package/lib/typescript/src/games/popit-fidget/components/index.d.ts.map +1 -1
  173. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +3 -8
  174. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  175. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +4 -4
  176. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts.map +1 -1
  177. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -1
  178. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -1
  179. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -1
  180. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts.map +1 -1
  181. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +1 -15
  182. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -1
  183. package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts.map +1 -1
  184. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +1 -6
  185. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -1
  186. package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts.map +1 -1
  187. package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts.map +1 -1
  188. package/lib/typescript/src/games/space-fighter/components/index.d.ts +0 -3
  189. package/lib/typescript/src/games/space-fighter/components/index.d.ts.map +1 -1
  190. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +2 -11
  191. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  192. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +2 -2
  193. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts.map +1 -1
  194. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts.map +1 -1
  195. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts +0 -1
  196. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts.map +1 -1
  197. package/lib/typescript/src/services/GamesConstants.d.ts +47 -38
  198. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  199. package/lib/typescript/src/services/GamesService.d.ts +20 -3
  200. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  201. package/lib/typescript/src/services/SoundsService.d.ts +20 -20
  202. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts +41 -0
  203. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +1 -0
  204. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts +45 -0
  205. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +1 -0
  206. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts +124 -0
  207. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +1 -0
  208. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +1 -1
  209. package/lib/typescript/src/{games/balloon-blaster/components → shared/helpers}/GameOverModal.d.ts +5 -0
  210. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -0
  211. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts +9 -0
  212. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +1 -0
  213. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts +12 -0
  214. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -0
  215. package/lib/typescript/src/shared/helpers/index.d.ts +9 -0
  216. package/lib/typescript/src/shared/helpers/index.d.ts.map +1 -1
  217. package/package.json +1 -1
  218. package/lib/module/games/balloon-blaster/components/GameOverModal.js +0 -133
  219. package/lib/module/games/balloon-blaster/components/GameOverModal.js.map +0 -1
  220. package/lib/module/games/balloon-blaster/components/ParticleSystem.js +0 -55
  221. package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +0 -1
  222. package/lib/module/games/balloon-blaster/components/SliceTrail.js +0 -58
  223. package/lib/module/games/balloon-blaster/components/SliceTrail.js.map +0 -1
  224. package/lib/module/games/fruit-ninja/components/GameOverModal.js +0 -189
  225. package/lib/module/games/fruit-ninja/components/GameOverModal.js.map +0 -1
  226. package/lib/module/games/fruit-ninja/components/ParticleSystem.js +0 -52
  227. package/lib/module/games/fruit-ninja/components/ParticleSystem.js.map +0 -1
  228. package/lib/module/games/fruit-ninja/components/SliceTrail.js +0 -58
  229. package/lib/module/games/fruit-ninja/components/SliceTrail.js.map +0 -1
  230. package/lib/module/games/maze-runner/components/GameOverModal.js +0 -134
  231. package/lib/module/games/maze-runner/components/GameOverModal.js.map +0 -1
  232. package/lib/module/games/popit-fidget/components/GameOverModal.js +0 -132
  233. package/lib/module/games/popit-fidget/components/GameOverModal.js.map +0 -1
  234. package/lib/module/games/popit-fidget/components/ParticleSystem.js +0 -89
  235. package/lib/module/games/popit-fidget/components/ParticleSystem.js.map +0 -1
  236. package/lib/module/games/space-fighter/components/GameOverModal.js +0 -182
  237. package/lib/module/games/space-fighter/components/GameOverModal.js.map +0 -1
  238. package/lib/module/games/space-fighter/components/ParticleComponent.js +0 -34
  239. package/lib/module/games/space-fighter/components/ParticleComponent.js.map +0 -1
  240. package/lib/module/games/space-fighter/components/SettingsModal.js +0 -222
  241. package/lib/module/games/space-fighter/components/SettingsModal.js.map +0 -1
  242. package/lib/module/games/whack-a-mole/components/GameOverModal.js.map +0 -1
  243. package/lib/module/shared/settings/GameSettings.js +0 -295
  244. package/lib/module/shared/settings/GameSettings.js.map +0 -1
  245. package/lib/module/shared/settings/SettingsService.js +0 -125
  246. package/lib/module/shared/settings/SettingsService.js.map +0 -1
  247. package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts.map +0 -1
  248. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts +0 -8
  249. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +0 -1
  250. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts +0 -11
  251. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts.map +0 -1
  252. package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts +0 -9
  253. package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts.map +0 -1
  254. package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts +0 -8
  255. package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts.map +0 -1
  256. package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts +0 -11
  257. package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts.map +0 -1
  258. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts +0 -11
  259. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts.map +0 -1
  260. package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts +0 -9
  261. package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts.map +0 -1
  262. package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts +0 -9
  263. package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts.map +0 -1
  264. package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts +0 -9
  265. package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts.map +0 -1
  266. package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts +0 -8
  267. package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts.map +0 -1
  268. package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts +0 -9
  269. package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts.map +0 -1
  270. package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts +0 -9
  271. package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts.map +0 -1
  272. package/lib/typescript/src/shared/settings/GameSettings.d.ts +0 -36
  273. package/lib/typescript/src/shared/settings/GameSettings.d.ts.map +0 -1
  274. package/lib/typescript/src/shared/settings/SettingsService.d.ts +0 -33
  275. package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +0 -1
@@ -13,6 +13,23 @@ export { GAME_CONFIG, ANIMATION_CONFIG, COLORS, FRUIT_TYPES, SPECIAL_ITEMS };
13
13
 
14
14
  // Types
15
15
 
16
+ // Define game-specific types and constants locally
17
+
18
+ export const DEFAULT_FRUIT_NINJA_SETTINGS = {
19
+ gameDuration: 60,
20
+ // Fixed 60 seconds for all games
21
+ difficulty: 'medium',
22
+ soundEnabled: true,
23
+ hapticEnabled: true
24
+ };
25
+ export const getDifficultySpawnInterval = difficulty => {
26
+ const intervals = {
27
+ easy: 2000,
28
+ medium: 1500,
29
+ hard: 1000
30
+ };
31
+ return intervals[difficulty];
32
+ };
16
33
  export class FruitNinjaService {
17
34
  gameTimerRef = null;
18
35
  fruitSpawnRef = null;
@@ -40,7 +57,7 @@ export class FruitNinjaService {
40
57
  };
41
58
  this.fruitSpawnRef = setTimeout(spawnLoop, 1000);
42
59
  }
43
- startPhysicsLoop(updateFruit, removeFruit, getFruits) {
60
+ startPhysicsLoop(updateFruit, removeFruit, getFruits, loseLife) {
44
61
  const updateLoop = () => {
45
62
  const fruits = getFruits();
46
63
  fruits.forEach(fruit => {
@@ -58,6 +75,11 @@ export class FruitNinjaService {
58
75
 
59
76
  // Remove fruits that fall off screen (bottom only)
60
77
  if (newY > height + 100) {
78
+ // Fruit fell off screen without being sliced
79
+ if (!fruit.isBomb && !fruit.isBonus && !fruit.isFreeze) {
80
+ // Only lose life for regular fruits
81
+ loseLife();
82
+ }
61
83
  removeFruit(fruit.id);
62
84
  return;
63
85
  }
@@ -113,8 +135,7 @@ export class FruitNinjaService {
113
135
  this.animationRef = requestAnimationFrame(updateLoop);
114
136
  }
115
137
  createRandomFruit() {
116
- // 10% chance for special items
117
- const isSpecial = Math.random() < 0.1;
138
+ const isSpecial = Math.random() < 0.5;
118
139
  const type = isSpecial ? SPECIAL_ITEMS[Math.floor(Math.random() * SPECIAL_ITEMS.length)] : FRUIT_TYPES[Math.floor(Math.random() * FRUIT_TYPES.length)];
119
140
  if (!type) {
120
141
  // Fallback to default fruit type if undefined
@@ -139,9 +160,9 @@ export class FruitNinjaService {
139
160
  rotationSpeed: (Math.random() - 0.5) * 0.2,
140
161
  isSliced: false,
141
162
  spawnTime: Date.now(),
142
- isBomb: 'isBomb' in defaultType && Boolean(defaultType.isBomb),
143
- isBonus: 'isBonus' in defaultType && Boolean(defaultType.isBonus),
144
- isFreeze: 'isFreeze' in defaultType && Boolean(defaultType.isFreeze)
163
+ isBomb: Boolean(defaultType.isBomb),
164
+ isBonus: Boolean(defaultType.isBonus),
165
+ isFreeze: Boolean(defaultType.isFreeze)
145
166
  };
146
167
  }
147
168
 
@@ -168,9 +189,9 @@ export class FruitNinjaService {
168
189
  rotationSpeed: (Math.random() - 0.5) * 0.2,
169
190
  isSliced: false,
170
191
  spawnTime: Date.now(),
171
- isBomb: 'isBomb' in type && type.isBomb,
172
- isBonus: 'isBonus' in type && type.isBonus,
173
- isFreeze: 'isFreeze' in type && type.isFreeze
192
+ isBomb: Boolean(type.isBomb),
193
+ isBonus: Boolean(type.isBonus),
194
+ isFreeze: Boolean(type.isFreeze)
174
195
  };
175
196
  }
176
197
  createSliceParticles(fruit) {
@@ -1 +1 @@
1
- {"version":3,"names":["Dimensions","FRUIT_NINJA_GAME_CONFIG","GAME_CONFIG","FRUIT_NINJA_ANIMATION_CONFIG","ANIMATION_CONFIG","FRUIT_NINJA_COLORS","COLORS","FRUIT_TYPES","FRUIT_SPECIAL_ITEMS","SPECIAL_ITEMS","width","height","get","FruitNinjaService","gameTimerRef","fruitSpawnRef","animationRef","comboTimeoutRef","particles","constructor","fruitAnimations","particleAnimations","startGameTimer","onTick","clearGameTimer","setInterval","startFruitSpawning","spawnFruit","customSpawnInterval","clearFruitSpawn","spawnInterval","FRUIT_SPAWN_INTERVAL","spawnLoop","fruit","createRandomFruit","nextSpawnTime","Math","random","setTimeout","max","startPhysicsLoop","updateFruit","removeFruit","getFruits","updateLoop","fruits","forEach","isSliced","newVelocityY","velocity","y","GRAVITY","newX","position","x","newY","newRotation","rotation","rotationSpeed","id","newVelocityX","adjustedVelocityY","abs","FRUIT_SIZE","updateParticles","requestAnimationFrame","isSpecial","type","floor","length","defaultType","spawnX","spawnY","velocityX","INITIAL_VELOCITY_X_RANGE","velocityY","INITIAL_VELOCITY_Y","Date","now","spawnTime","isBomb","Boolean","isBonus","isFreeze","createSliceParticles","i","PARTICLE_COUNT","angle","PI","speed","push","cos","sin","color","PARTICLE_COLORS","size","lifetime","maxLifetime","PARTICLE_LIFETIME","filter","particle","getParticles","checkFruitSlice","slicePath","fruitCenter","fruitRadius","p1","p2","distance","distanceFromPointToLine","point","lineStart","lineEnd","A","B","C","D","dot","lenSq","sqrt","param","min","xx","yy","dx","dy","resetAnimations","clear","cleanup","clearAnimationLoop","clearComboTimeout","clearInterval","clearTimeout","cancelAnimationFrame","createFruitNinjaService"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaService.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Dimensions","FRUIT_NINJA_GAME_CONFIG","GAME_CONFIG","FRUIT_NINJA_ANIMATION_CONFIG","ANIMATION_CONFIG","FRUIT_NINJA_COLORS","COLORS","FRUIT_TYPES","FRUIT_SPECIAL_ITEMS","SPECIAL_ITEMS","width","height","get","DEFAULT_FRUIT_NINJA_SETTINGS","gameDuration","difficulty","soundEnabled","hapticEnabled","getDifficultySpawnInterval","intervals","easy","medium","hard","FruitNinjaService","gameTimerRef","fruitSpawnRef","animationRef","comboTimeoutRef","particles","constructor","fruitAnimations","particleAnimations","startGameTimer","onTick","clearGameTimer","setInterval","startFruitSpawning","spawnFruit","customSpawnInterval","clearFruitSpawn","spawnInterval","FRUIT_SPAWN_INTERVAL","spawnLoop","fruit","createRandomFruit","nextSpawnTime","Math","random","setTimeout","max","startPhysicsLoop","updateFruit","removeFruit","getFruits","loseLife","updateLoop","fruits","forEach","isSliced","newVelocityY","velocity","y","GRAVITY","newX","position","x","newY","newRotation","rotation","rotationSpeed","isBomb","isBonus","isFreeze","id","newVelocityX","adjustedVelocityY","abs","FRUIT_SIZE","updateParticles","requestAnimationFrame","isSpecial","type","floor","length","defaultType","spawnX","spawnY","velocityX","INITIAL_VELOCITY_X_RANGE","velocityY","INITIAL_VELOCITY_Y","Date","now","spawnTime","Boolean","createSliceParticles","i","PARTICLE_COUNT","angle","PI","speed","push","cos","sin","color","PARTICLE_COLORS","size","lifetime","maxLifetime","PARTICLE_LIFETIME","filter","particle","getParticles","checkFruitSlice","slicePath","fruitCenter","fruitRadius","p1","p2","distance","distanceFromPointToLine","point","lineStart","lineEnd","A","B","C","D","dot","lenSq","sqrt","param","min","xx","yy","dx","dy","resetAnimations","clear","cleanup","clearAnimationLoop","clearComboTimeout","clearInterval","clearTimeout","cancelAnimationFrame","createFruitNinjaService"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaService.ts"],"mappings":"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","ignoreList":[]}
@@ -147,13 +147,11 @@ export const useFruitNinjaStore = create()(subscribeWithSelector(immerMiddleware
147
147
  },
148
148
  loseLife: () => {
149
149
  set(draft => {
150
- const newLives = draft.lives - 1;
150
+ const newLives = Math.max(0, draft.lives - 1);
151
+ draft.lives = newLives;
151
152
  if (newLives <= 0) {
152
- draft.lives = 0;
153
153
  draft.isPlaying = false;
154
154
  draft.gameOver = true;
155
- } else {
156
- draft.lives = newLives;
157
155
  }
158
156
  });
159
157
  },
@@ -163,4 +161,31 @@ export const useFruitNinjaStore = create()(subscribeWithSelector(immerMiddleware
163
161
  });
164
162
  }
165
163
  }))));
164
+
165
+ // Store reference to game service for cleanup
166
+ let gameServiceInstance = null;
167
+
168
+ // Function to register game service instance
169
+ export const registerGameService = gameService => {
170
+ gameServiceInstance = gameService;
171
+ };
172
+
173
+ // Automatic game cleanup when gameOver becomes true
174
+ // This replaces the cleanup logic that was previously in the FruitNinja component
175
+ useFruitNinjaStore.subscribe(state => state.gameOver, (gameOver, previousGameOver) => {
176
+ if (gameOver && !previousGameOver) {
177
+ // Game just ended, trigger automatic cleanup
178
+ setTimeout(() => {
179
+ // Stop game service to prevent new fruits from spawning
180
+ if (gameServiceInstance) {
181
+ gameServiceInstance.cleanup();
182
+ }
183
+ const state = useFruitNinjaStore.getState();
184
+ // Clear all fruits from the screen
185
+ state.fruits.forEach(fruit => {
186
+ useFruitNinjaStore.getState().removeFruit(fruit.id);
187
+ });
188
+ }, 50); // Small delay to ensure state consistency
189
+ }
190
+ });
166
191
  //# sourceMappingURL=FruitNinjaStore.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["create","subscribeWithSelector","GAME_CONFIG","immerMiddleware","useFruitNinjaStore","set","get","score","timeLeft","isPlaying","gameOver","combo","lives","MAX_LIVES","fruits","slicePath","isSlicing","startGame","_gameDuration","duration","draft","stopGame","resetGame","sliceFruit","fruitId","fruitIndex","i","length","id","isSliced","points","sliceTime","Date","now","updateScore","decrementTime","newTimeLeft","addFruit","fruit","push","removeFruit","filter","f","updateFruit","updates","Object","assign","setSlicePath","path","setIsSlicing","incrementCombo","resetCombo","loseLife","newLives","addLife","Math","min"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaStore.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["create","subscribeWithSelector","GAME_CONFIG","immerMiddleware","useFruitNinjaStore","set","get","score","timeLeft","isPlaying","gameOver","combo","lives","MAX_LIVES","fruits","slicePath","isSlicing","startGame","_gameDuration","duration","draft","stopGame","resetGame","sliceFruit","fruitId","fruitIndex","i","length","id","isSliced","points","sliceTime","Date","now","updateScore","decrementTime","newTimeLeft","addFruit","fruit","push","removeFruit","filter","f","updateFruit","updates","Object","assign","setSlicePath","path","setIsSlicing","incrementCombo","resetCombo","loseLife","newLives","Math","max","addLife","min","gameServiceInstance","registerGameService","gameService","subscribe","state","previousGameOver","setTimeout","cleanup","getState","forEach"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinjaStore.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,SAAS;AAChC,SAASC,qBAAqB,QAAQ,oBAAoB;AAE1D,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,eAAe,QAAQ,gCAA6B;AAkC7D;AACA,OAAO,MAAMC,kBAAkB,GAAGJ,MAAM,CAAkB,CAAC,CACzDC,qBAAqB,CACnBE,eAAe,CAAC,CAACE,GAAQ,EAAEC,GAAQ,MAAM;EAC3C;EACAC,KAAK,EAAE,CAAC;EACRC,QAAQ,EAAE,EAAE;EAAE;EACdC,SAAS,EAAE,KAAK;EAChBC,QAAQ,EAAE,KAAK;EACfC,KAAK,EAAE,CAAC;EACRC,KAAK,EAAEV,WAAW,CAACW,SAAS;EAC5BC,MAAM,EAAE,EAAE;EACVC,SAAS,EAAE,EAAE;EACbC,SAAS,EAAE,KAAK;EAEhB;EACAC,SAAS,EAAGC,aAAsB,IAAK;IACrC;IACA,MAAMC,QAAQ,GAAG,EAAE;IACnBd,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACb,KAAK,GAAG,CAAC;MACfa,KAAK,CAACZ,QAAQ,GAAGW,QAAQ;MACzBC,KAAK,CAACX,SAAS,GAAG,IAAI;MACtBW,KAAK,CAACV,QAAQ,GAAG,KAAK;MACtBU,KAAK,CAACT,KAAK,GAAG,CAAC;MACfS,KAAK,CAACR,KAAK,GAAGV,WAAW,CAACW,SAAS;MACnCO,KAAK,CAACN,MAAM,GAAG,EAAE;MACjBM,KAAK,CAACL,SAAS,GAAG,EAAE;MACpBK,KAAK,CAACJ,SAAS,GAAG,KAAK;IACzB,CAAC,CAAC;EACJ,CAAC;EAEDK,QAAQ,EAAEA,CAAA,KAAM;IACdhB,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACb,KAAK,GAAG,CAAC;MACfa,KAAK,CAACZ,QAAQ,GAAG,EAAE,CAAC,CAAC;MACrBY,KAAK,CAACX,SAAS,GAAG,KAAK;MACvBW,KAAK,CAACV,QAAQ,GAAG,KAAK;MACtBU,KAAK,CAACT,KAAK,GAAG,CAAC;MACfS,KAAK,CAACR,KAAK,GAAGV,WAAW,CAACW,SAAS;MACnCO,KAAK,CAACN,MAAM,GAAG,EAAE;MACjBM,KAAK,CAACL,SAAS,GAAG,EAAE;MACpBK,KAAK,CAACJ,SAAS,GAAG,KAAK;IACzB,CAAC,CAAC;EACJ,CAAC;EAEDM,SAAS,EAAEA,CAAA,KAAM;IACfjB,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACb,KAAK,GAAG,CAAC;MACfa,KAAK,CAACZ,QAAQ,GAAG,EAAE,CAAC,CAAC;MACrBY,KAAK,CAACX,SAAS,GAAG,KAAK;MACvBW,KAAK,CAACV,QAAQ,GAAG,KAAK;MACtBU,KAAK,CAACT,KAAK,GAAG,CAAC;MACfS,KAAK,CAACR,KAAK,GAAGV,WAAW,CAACW,SAAS;MACnCO,KAAK,CAACN,MAAM,GAAG,EAAE;MACjBM,KAAK,CAACL,SAAS,GAAG,EAAE;MACpBK,KAAK,CAACJ,SAAS,GAAG,KAAK;IACzB,CAAC,CAAC;EACJ,CAAC;EAEDO,UAAU,EAAGC,OAAe,IAAK;IAC/B,MAAM;MAAEV,MAAM;MAAEL;IAAU,CAAC,GAAGH,GAAG,CAAC,CAAC;IACnC,IAAI,CAACG,SAAS,EAAE;;IAEhB;IACA,IAAIgB,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGZ,MAAM,CAACa,MAAM,EAAED,CAAC,EAAE,EAAE;MACtC,IAAIZ,MAAM,CAACY,CAAC,CAAC,CAACE,EAAE,KAAKJ,OAAO,EAAE;QAC5BC,UAAU,GAAGC,CAAC;QACd;MACF;IACF;IAEA,IAAID,UAAU,KAAK,CAAC,CAAC,IAAIX,MAAM,CAACW,UAAU,CAAC,CAACI,QAAQ,EAAE;;IAEtD;IACA,MAAMC,MAAM,GAAG,EAAE;IAEjBzB,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACb,KAAK,GAAGa,KAAK,CAACb,KAAK,GAAGuB,MAAM;MAClC;MACA,IAAIV,KAAK,CAACN,MAAM,CAACW,UAAU,CAAC,EAAE;QAC5BL,KAAK,CAACN,MAAM,CAACW,UAAU,CAAC,CAACI,QAAQ,GAAG,IAAI;QACxCT,KAAK,CAACN,MAAM,CAACW,UAAU,CAAC,CAACM,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;MACjD;IACF,CAAC,CAAC;EACJ,CAAC;EAEDC,WAAW,EAAGJ,MAAc,IAAK;IAC/BzB,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACb,KAAK,GAAGa,KAAK,CAACb,KAAK,GAAGuB,MAAM;IACpC,CAAC,CAAC;EACJ,CAAC;EAEDK,aAAa,EAAEA,CAAA,KAAM;IACnB9B,GAAG,CAAEe,KAAU,IAAK;MAClB,MAAMgB,WAAW,GAAGhB,KAAK,CAACZ,QAAQ,GAAG,CAAC;MACtC,IAAI4B,WAAW,IAAI,CAAC,EAAE;QACpBhB,KAAK,CAACZ,QAAQ,GAAG,CAAC;QAClBY,KAAK,CAACX,SAAS,GAAG,KAAK;QACvBW,KAAK,CAACV,QAAQ,GAAG,IAAI;MACvB,CAAC,MAAM;QACLU,KAAK,CAACZ,QAAQ,GAAG4B,WAAW;MAC9B;IACF,CAAC,CAAC;EACJ,CAAC;EAEDC,QAAQ,EAAGC,KAAY,IAAK;IAC1BjC,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACN,MAAM,CAACyB,IAAI,CAACD,KAAK,CAAC;IAC1B,CAAC,CAAC;EACJ,CAAC;EAEDE,WAAW,EAAGhB,OAAe,IAAK;IAChCnB,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACN,MAAM,GAAGM,KAAK,CAACN,MAAM,CAAC2B,MAAM,CAAEC,CAAM,IAAKA,CAAC,CAACd,EAAE,KAAKJ,OAAO,CAAC;IAClE,CAAC,CAAC;EACJ,CAAC;EAEDmB,WAAW,EAAEA,CAACnB,OAAe,EAAEoB,OAAuB,KAAK;IACzDvC,GAAG,CAAEe,KAAU,IAAK;MAClB;MACA,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,KAAK,CAACN,MAAM,CAACa,MAAM,EAAED,CAAC,EAAE,EAAE;QAC5C,IAAIN,KAAK,CAACN,MAAM,CAACY,CAAC,CAAC,CAACE,EAAE,KAAKJ,OAAO,EAAE;UAClCqB,MAAM,CAACC,MAAM,CAAC1B,KAAK,CAACN,MAAM,CAACY,CAAC,CAAC,EAAEkB,OAAO,CAAC;UACvC;QACF;MACF;IACF,CAAC,CAAC;EACJ,CAAC;EAEDG,YAAY,EAAGC,IAAgC,IAAK;IAClD3C,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACL,SAAS,GAAGiC,IAAI;IACxB,CAAC,CAAC;EACJ,CAAC;EAEDC,YAAY,EAAGjC,SAAkB,IAAK;IACpCX,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACJ,SAAS,GAAGA,SAAS;IAC7B,CAAC,CAAC;EACJ,CAAC;EAEDkC,cAAc,EAAEA,CAAA,KAAM;IACpB7C,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACT,KAAK,GAAGS,KAAK,CAACT,KAAK,GAAG,CAAC;IAC/B,CAAC,CAAC;EACJ,CAAC;EAEDwC,UAAU,EAAEA,CAAA,KAAM;IAChB9C,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACT,KAAK,GAAG,CAAC;IACjB,CAAC,CAAC;EACJ,CAAC;EAEDyC,QAAQ,EAAEA,CAAA,KAAM;IACd/C,GAAG,CAAEe,KAAU,IAAK;MAClB,MAAMiC,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEnC,KAAK,CAACR,KAAK,GAAG,CAAC,CAAC;MAC7CQ,KAAK,CAACR,KAAK,GAAGyC,QAAQ;MACtB,IAAIA,QAAQ,IAAI,CAAC,EAAE;QACjBjC,KAAK,CAACX,SAAS,GAAG,KAAK;QACvBW,KAAK,CAACV,QAAQ,GAAG,IAAI;MACvB;IACF,CAAC,CAAC;EACJ,CAAC;EAED8C,OAAO,EAAEA,CAAA,KAAM;IACbnD,GAAG,CAAEe,KAAU,IAAK;MAClBA,KAAK,CAACR,KAAK,GAAG0C,IAAI,CAACG,GAAG,CAACrC,KAAK,CAACR,KAAK,GAAG,CAAC,EAAEV,WAAW,CAACW,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC;EACJ;AACF,CAAC,CAAC,CAAC,CAAC,CAAC;;AAEL;AACA,IAAI6C,mBAAwB,GAAG,IAAI;;AAEnC;AACA,OAAO,MAAMC,mBAAmB,GAAIC,WAAgB,IAAK;EACvDF,mBAAmB,GAAGE,WAAW;AACnC,CAAC;;AAED;AACA;AACAxD,kBAAkB,CAACyD,SAAS,CACzBC,KAAK,IAAKA,KAAK,CAACpD,QAAQ,EACzB,CAACA,QAAQ,EAAEqD,gBAAgB,KAAK;EAC9B,IAAIrD,QAAQ,IAAI,CAACqD,gBAAgB,EAAE;IACjC;IACAC,UAAU,CAAC,MAAM;MACf;MACA,IAAIN,mBAAmB,EAAE;QACvBA,mBAAmB,CAACO,OAAO,CAAC,CAAC;MAC/B;MAEA,MAAMH,KAAK,GAAG1D,kBAAkB,CAAC8D,QAAQ,CAAC,CAAC;MAC3C;MACAJ,KAAK,CAAChD,MAAM,CAACqD,OAAO,CAAC7B,KAAK,IAAI;QAC5BlC,kBAAkB,CAAC8D,QAAQ,CAAC,CAAC,CAAC1B,WAAW,CAACF,KAAK,CAACV,EAAE,CAAC;MACrD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;EACV;AACF,CACF,CAAC","ignoreList":[]}
@@ -1,37 +1,203 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
3
+ import React, { useRef, useEffect, useState } from 'react';
4
4
  import { View, StyleSheet } from 'react-native';
5
+ import { runOnJS } from 'react-native-reanimated';
6
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
7
+ import { useFruitNinjaStore } from "../FruitNinjaStore.js";
8
+ import { GAME_CONFIG } from "../FruitNinjaService.js";
9
+ import { playSound, GAME_SOUNDS } from "../../../services/SoundsService.js";
10
+ import { playHaptic, HapticType } from "../../../services/HapticsService.js";
11
+ import { ParticleBlast, useAnimationTracker } from "../../../shared/helpers/index.js";
5
12
  import { FruitComponent } from "./FruitComponent.js";
6
- import { SliceTrail } from "./SliceTrail.js";
7
- import { ParticleSystem } from "./ParticleSystem.js";
8
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- export const GameArea = ({
10
- fruits,
11
- fruitAnimations,
12
- slicePath,
13
- isSlicing,
14
- particles,
15
- onFruitSlice,
16
- children
17
- }) => {
18
- return /*#__PURE__*/_jsxs(View, {
19
- style: styles.gameArea,
20
- children: [fruits.map(fruit => {
21
- const animation = fruitAnimations.get(fruit.id);
22
- return /*#__PURE__*/_jsx(FruitComponent, {
23
- fruit: fruit,
24
- animation: animation,
25
- onSlice: onFruitSlice
26
- }, fruit.id);
27
- }), /*#__PURE__*/_jsx(SliceTrail, {
28
- path: slicePath,
29
- isVisible: isSlicing
30
- }), /*#__PURE__*/_jsx(ParticleSystem, {
31
- particles: particles
32
- }), children]
14
+ export const GameArea = /*#__PURE__*/React.memo(() => {
15
+ // Read state directly from store to reduce main component re-renders
16
+ const fruits = useFruitNinjaStore(state => state.fruits);
17
+
18
+ // Get store actions
19
+ const {
20
+ sliceFruit,
21
+ removeFruit,
22
+ updateFruit,
23
+ resetCombo,
24
+ loseLife,
25
+ addLife
26
+ } = useFruitNinjaStore();
27
+
28
+ // Minimal collision detection - no visual trail needed
29
+ const lastGesturePoint = useRef(null);
30
+
31
+ // Self-contained component - no external settings needed
32
+
33
+ // Animation tracking for fruits using shared utility
34
+ const fruitAnimations = useAnimationTracker();
35
+
36
+ // State for managing active particle blasts
37
+ const [activeBlasts, setActiveBlasts] = useState([]);
38
+
39
+ // Sound and haptic feedback functions (using default enabled state)
40
+ const playSliceSound = () => {
41
+ playSound(GAME_SOUNDS.FRUIT_NINJA.SLICE, true);
42
+ playHaptic(HapticType.LIGHT, true);
43
+ };
44
+ const playBombSound = () => {
45
+ playSound(GAME_SOUNDS.FRUIT_NINJA.BOMB, true);
46
+ playHaptic(HapticType.HEAVY, true);
47
+ };
48
+
49
+ // Create blast particles using shared ParticleBlast component
50
+ const createBlastParticles = fruit => {
51
+ const blastX = fruit.position.x + GAME_CONFIG.FRUIT_SIZE / 2;
52
+ const blastY = fruit.position.y + GAME_CONFIG.FRUIT_SIZE / 2;
53
+ const blastId = `blast_${Date.now()}_${Math.random()}`;
54
+ setActiveBlasts(prev => [...prev, {
55
+ id: blastId,
56
+ x: blastX,
57
+ y: blastY
58
+ }]);
59
+ };
60
+
61
+ // Handle blast completion (remove from active blasts)
62
+ const handleBlastComplete = blastId => {
63
+ setActiveBlasts(prev => prev.filter(blast => blast.id !== blastId));
64
+ };
65
+
66
+ // Simplified gesture handling - no visual trail, just collision detection
67
+ const handleGestureStart = event => {
68
+ const currentState = useFruitNinjaStore.getState();
69
+ if (!currentState.isPlaying) return;
70
+ lastGesturePoint.current = {
71
+ x: event.x,
72
+ y: event.y
73
+ };
74
+
75
+ // Light haptic feedback on slice start
76
+ playHaptic(HapticType.LIGHT, true);
77
+ };
78
+ const handleGestureUpdate = event => {
79
+ const currentState = useFruitNinjaStore.getState();
80
+ if (!currentState.isPlaying) return;
81
+ const currentPoint = {
82
+ x: event.x,
83
+ y: event.y
84
+ };
85
+
86
+ // Check for fruit collisions with current gesture point
87
+ checkFruitCollisions(currentPoint);
88
+ lastGesturePoint.current = currentPoint;
89
+ };
90
+ const handleGestureEnd = () => {
91
+ const currentState = useFruitNinjaStore.getState();
92
+ if (!currentState.isPlaying) return;
93
+ lastGesturePoint.current = null;
94
+ };
95
+
96
+ // Create pan gesture - moved from parent
97
+ const panGesture = Gesture.Pan().onStart(event => {
98
+ runOnJS(handleGestureStart)(event);
99
+ }).onUpdate(event => {
100
+ runOnJS(handleGestureUpdate)(event);
101
+ }).onEnd(() => {
102
+ runOnJS(handleGestureEnd)();
103
+ });
104
+
105
+ // Fruit slicing logic - moved from parent
106
+ const handleFruitSlice = fruitId => {
107
+ // Double-check game state to prevent race conditions
108
+ const currentState = useFruitNinjaStore.getState();
109
+ if (!currentState.isPlaying || currentState.gameOver) return;
110
+ const fruit = currentState.fruits.find(f => f.id === fruitId);
111
+ if (!fruit || fruit.isSliced) return;
112
+
113
+ // Handle different fruit types BEFORE marking as sliced
114
+ if (fruit.isBomb) {
115
+ playBombSound();
116
+ loseLife();
117
+ resetCombo();
118
+ // Create blast particles at bomb location
119
+ createBlastParticles(fruit);
120
+ updateFruit(fruitId, {
121
+ isSliced: true
122
+ });
123
+ } else {
124
+ // Handle different fruit types with simplified mechanics
125
+ playSliceSound();
126
+ if (fruit.isBonus) {
127
+ // Star fruit - add a life instead of points
128
+ addLife();
129
+ playSliceSound();
130
+ // Mark star as sliced after processing
131
+ updateFruit(fruitId, {
132
+ isSliced: true
133
+ });
134
+ } else if (fruit.isFreeze) {
135
+ // Freeze fruit - slice and mark (sliceFruit handles marking)
136
+ sliceFruit(fruitId);
137
+ } else {
138
+ // Regular fruit - add 10 points (sliceFruit handles marking)
139
+ sliceFruit(fruitId);
140
+ }
141
+
142
+ // Create blast particles at fruit location
143
+ createBlastParticles(fruit);
144
+ }
145
+
146
+ // Remove fruit after animation
147
+ setTimeout(() => {
148
+ removeFruit(fruitId);
149
+ fruitAnimations.delete(fruitId);
150
+ }, 500);
151
+ };
152
+
153
+ // Optimized collision detection with single point
154
+ const checkFruitCollisions = gesturePoint => {
155
+ const currentFruits = useFruitNinjaStore.getState().fruits;
156
+ currentFruits.forEach(fruit => {
157
+ if (!fruit.isSliced) {
158
+ // Simple distance-based collision detection
159
+ const fruitCenterX = fruit.position.x + GAME_CONFIG.FRUIT_SIZE / 2;
160
+ const fruitCenterY = fruit.position.y + GAME_CONFIG.FRUIT_SIZE / 2;
161
+ const fruitRadius = GAME_CONFIG.FRUIT_SIZE / 2;
162
+
163
+ // Check if gesture point is within fruit radius
164
+ const distance = Math.sqrt(Math.pow(gesturePoint.x - fruitCenterX, 2) + Math.pow(gesturePoint.y - fruitCenterY, 2));
165
+ if (distance <= fruitRadius) {
166
+ handleFruitSlice(fruit.id);
167
+ }
168
+ }
169
+ });
170
+ };
171
+
172
+ // Track fruit animations without shared values - moved from parent
173
+ useEffect(() => {
174
+ fruits.forEach(fruit => {
175
+ if (!fruitAnimations.has(fruit.id)) {
176
+ fruitAnimations.initialize(fruit.id);
177
+ }
178
+ });
179
+ }, [fruits, fruitAnimations]);
180
+ return /*#__PURE__*/_jsx(GestureDetector, {
181
+ gesture: panGesture,
182
+ children: /*#__PURE__*/_jsxs(View, {
183
+ style: styles.gameArea,
184
+ children: [fruits.map(fruit => {
185
+ const animation = fruitAnimations.get(fruit.id);
186
+ return /*#__PURE__*/_jsx(FruitComponent, {
187
+ fruit: fruit,
188
+ animation: animation,
189
+ onSlice: handleFruitSlice
190
+ }, fruit.id);
191
+ }), activeBlasts.map(blast => /*#__PURE__*/_jsx(ParticleBlast, {
192
+ x: blast.x,
193
+ y: blast.y,
194
+ particleCount: 8,
195
+ duration: 1000,
196
+ onComplete: () => handleBlastComplete(blast.id)
197
+ }, blast.id))]
198
+ })
33
199
  });
34
- };
200
+ });
35
201
  const styles = StyleSheet.create({
36
202
  gameArea: {
37
203
  flex: 1,
@@ -44,7 +210,6 @@ const styles = StyleSheet.create({
44
210
  left: 0,
45
211
  right: 0,
46
212
  bottom: 0
47
- // backgroundColor: '#87CEEB', // Sky blue gradient fallback
48
213
  }
49
214
  });
50
215
  //# sourceMappingURL=GameArea.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","StyleSheet","FruitComponent","SliceTrail","ParticleSystem","jsx","_jsx","jsxs","_jsxs","GameArea","fruits","fruitAnimations","slicePath","isSlicing","particles","onFruitSlice","children","style","styles","gameArea","map","fruit","animation","get","id","onSlice","path","isVisible","create","flex","position","overflow","backgroundGradient","top","left","right","bottom"],"sourceRoot":"../../../../../src","sources":["games/fruit-ninja/components/GameArea.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAE/C,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,cAAc,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAYlD,OAAO,MAAMC,QAAiC,GAAGA,CAAC;EAAEC,MAAM;EAAEC,eAAe;EAAEC,SAAS;EAAEC,SAAS;EAAEC,SAAS;EAAEC,YAAY;EAAEC;AAAS,CAAC,KAAK;EACzI,oBACER,KAAA,CAACR,IAAI;IAACiB,KAAK,EAAEC,MAAM,CAACC,QAAS;IAAAH,QAAA,GAK1BN,MAAM,CAACU,GAAG,CAACC,KAAK,IAAI;MACnB,MAAMC,SAAS,GAAGX,eAAe,CAACY,GAAG,CAACF,KAAK,CAACG,EAAE,CAAC;MAE/C,oBAAOlB,IAAA,CAACJ,cAAc;QAAgBmB,KAAK,EAAEA,KAAM;QAACC,SAAS,EAAEA,SAAU;QAACG,OAAO,EAAEV;MAAa,GAApEM,KAAK,CAACG,EAAgE,CAAC;IACrG,CAAC,CAAC,eAGFlB,IAAA,CAACH,UAAU;MAACuB,IAAI,EAAEd,SAAU;MAACe,SAAS,EAAEd;IAAU,CAAE,CAAC,eAGrDP,IAAA,CAACF,cAAc;MAACU,SAAS,EAAEA;IAAU,CAAE,CAAC,EAGvCE,QAAQ;EAAA,CACL,CAAC;AAEX,CAAC;AAED,MAAME,MAAM,GAAGjB,UAAU,CAAC2B,MAAM,CAAC;EAC/BT,QAAQ,EAAE;IACRU,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE,UAAU;IACpBC,QAAQ,EAAE;EACZ,CAAC;EACDC,kBAAkB,EAAE;IAClBF,QAAQ,EAAE,UAAU;IACpBG,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;IACR;EACF;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useRef","useEffect","useState","View","StyleSheet","runOnJS","Gesture","GestureDetector","useFruitNinjaStore","GAME_CONFIG","playSound","GAME_SOUNDS","playHaptic","HapticType","ParticleBlast","useAnimationTracker","FruitComponent","jsx","_jsx","jsxs","_jsxs","GameArea","memo","fruits","state","sliceFruit","removeFruit","updateFruit","resetCombo","loseLife","addLife","lastGesturePoint","fruitAnimations","activeBlasts","setActiveBlasts","playSliceSound","FRUIT_NINJA","SLICE","LIGHT","playBombSound","BOMB","HEAVY","createBlastParticles","fruit","blastX","position","x","FRUIT_SIZE","blastY","y","blastId","Date","now","Math","random","prev","id","handleBlastComplete","filter","blast","handleGestureStart","event","currentState","getState","isPlaying","current","handleGestureUpdate","currentPoint","checkFruitCollisions","handleGestureEnd","panGesture","Pan","onStart","onUpdate","onEnd","handleFruitSlice","fruitId","gameOver","find","f","isSliced","isBomb","isBonus","isFreeze","setTimeout","delete","gesturePoint","currentFruits","forEach","fruitCenterX","fruitCenterY","fruitRadius","distance","sqrt","pow","has","initialize","gesture","children","style","styles","gameArea","map","animation","get","onSlice","particleCount","duration","onComplete","create","flex","overflow","backgroundGradient","top","left","right","bottom"],"sourceRoot":"../../../../../src","sources":["games/fruit-ninja/components/GameArea.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,MAAM,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC1D,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,OAAO,QAAQ,yBAAyB;AACjD,SAASC,OAAO,EAAEC,eAAe,QAAQ,8BAA8B;AACvE,SAASC,kBAAkB,QAAQ,uBAAoB;AACvD,SAASC,WAAW,QAAQ,yBAAsB;AAClD,SAASC,SAAS,EAAEC,WAAW,QAAQ,oCAAiC;AACxE,SAASC,UAAU,EAAEC,UAAU,QAAQ,qCAAkC;AACzE,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,kCAAyB;AAC5E,SAASC,cAAc,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAElD,OAAO,MAAMC,QAAkB,gBAAGtB,KAAK,CAACuB,IAAI,CAAC,MAAM;EACjD;EACA,MAAMC,MAAM,GAAGf,kBAAkB,CAACgB,KAAK,IAAIA,KAAK,CAACD,MAAM,CAAC;;EAExD;EACA,MAAM;IACJE,UAAU;IACVC,WAAW;IACXC,WAAW;IACXC,UAAU;IACVC,QAAQ;IACRC;EACF,CAAC,GAAGtB,kBAAkB,CAAC,CAAC;;EAExB;EACA,MAAMuB,gBAAgB,GAAG/B,MAAM,CAAkC,IAAI,CAAC;;EAEtE;;EAEA;EACA,MAAMgC,eAAe,GAAGjB,mBAAmB,CAAC,CAAC;;EAE7C;EACA,MAAM,CAACkB,YAAY,EAAEC,eAAe,CAAC,GAAGhC,QAAQ,CAA4C,EAAE,CAAC;;EAE/F;EACA,MAAMiC,cAAc,GAAGA,CAAA,KAAM;IAC3BzB,SAAS,CAACC,WAAW,CAACyB,WAAW,CAACC,KAAK,EAAE,IAAI,CAAC;IAC9CzB,UAAU,CAACC,UAAU,CAACyB,KAAK,EAAE,IAAI,CAAC;EACpC,CAAC;EAED,MAAMC,aAAa,GAAGA,CAAA,KAAM;IAC1B7B,SAAS,CAACC,WAAW,CAACyB,WAAW,CAACI,IAAI,EAAE,IAAI,CAAC;IAC7C5B,UAAU,CAACC,UAAU,CAAC4B,KAAK,EAAE,IAAI,CAAC;EACpC,CAAC;;EAED;EACA,MAAMC,oBAAoB,GAAIC,KAAU,IAAK;IAC3C,MAAMC,MAAM,GAAGD,KAAK,CAACE,QAAQ,CAACC,CAAC,GAAGrC,WAAW,CAACsC,UAAU,GAAG,CAAC;IAC5D,MAAMC,MAAM,GAAGL,KAAK,CAACE,QAAQ,CAACI,CAAC,GAAGxC,WAAW,CAACsC,UAAU,GAAG,CAAC;IAE5D,MAAMG,OAAO,GAAG,SAASC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,EAAE;IACtDpB,eAAe,CAACqB,IAAI,IAAI,CAAC,GAAGA,IAAI,EAAE;MAAEC,EAAE,EAAEN,OAAO;MAAEJ,CAAC,EAAEF,MAAM;MAAEK,CAAC,EAAED;IAAO,CAAC,CAAC,CAAC;EAC3E,CAAC;;EAED;EACA,MAAMS,mBAAmB,GAAIP,OAAe,IAAK;IAC/ChB,eAAe,CAACqB,IAAI,IAAIA,IAAI,CAACG,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACH,EAAE,KAAKN,OAAO,CAAC,CAAC;EACrE,CAAC;;EAED;EACA,MAAMU,kBAAkB,GAAIC,KAAU,IAAK;IACzC,MAAMC,YAAY,GAAGtD,kBAAkB,CAACuD,QAAQ,CAAC,CAAC;IAClD,IAAI,CAACD,YAAY,CAACE,SAAS,EAAE;IAE7BjC,gBAAgB,CAACkC,OAAO,GAAG;MAAEnB,CAAC,EAAEe,KAAK,CAACf,CAAC;MAAEG,CAAC,EAAEY,KAAK,CAACZ;IAAE,CAAC;;IAErD;IACArC,UAAU,CAACC,UAAU,CAACyB,KAAK,EAAE,IAAI,CAAC;EACpC,CAAC;EAED,MAAM4B,mBAAmB,GAAIL,KAAU,IAAK;IAC1C,MAAMC,YAAY,GAAGtD,kBAAkB,CAACuD,QAAQ,CAAC,CAAC;IAClD,IAAI,CAACD,YAAY,CAACE,SAAS,EAAE;IAE7B,MAAMG,YAAY,GAAG;MAAErB,CAAC,EAAEe,KAAK,CAACf,CAAC;MAAEG,CAAC,EAAEY,KAAK,CAACZ;IAAE,CAAC;;IAE/C;IACAmB,oBAAoB,CAACD,YAAY,CAAC;IAElCpC,gBAAgB,CAACkC,OAAO,GAAGE,YAAY;EACzC,CAAC;EAED,MAAME,gBAAgB,GAAGA,CAAA,KAAM;IAC7B,MAAMP,YAAY,GAAGtD,kBAAkB,CAACuD,QAAQ,CAAC,CAAC;IAClD,IAAI,CAACD,YAAY,CAACE,SAAS,EAAE;IAE7BjC,gBAAgB,CAACkC,OAAO,GAAG,IAAI;EACjC,CAAC;;EAED;EACA,MAAMK,UAAU,GAAGhE,OAAO,CAACiE,GAAG,CAAC,CAAC,CAC7BC,OAAO,CAACX,KAAK,IAAI;IAChBxD,OAAO,CAACuD,kBAAkB,CAAC,CAACC,KAAK,CAAC;EACpC,CAAC,CAAC,CACDY,QAAQ,CAACZ,KAAK,IAAI;IACjBxD,OAAO,CAAC6D,mBAAmB,CAAC,CAACL,KAAK,CAAC;EACrC,CAAC,CAAC,CACDa,KAAK,CAAC,MAAM;IACXrE,OAAO,CAACgE,gBAAgB,CAAC,CAAC,CAAC;EAC7B,CAAC,CAAC;;EAEJ;EACA,MAAMM,gBAAgB,GAAIC,OAAe,IAAK;IAC5C;IACA,MAAMd,YAAY,GAAGtD,kBAAkB,CAACuD,QAAQ,CAAC,CAAC;IAClD,IAAI,CAACD,YAAY,CAACE,SAAS,IAAIF,YAAY,CAACe,QAAQ,EAAE;IAEtD,MAAMlC,KAAK,GAAGmB,YAAY,CAACvC,MAAM,CAACuD,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACvB,EAAE,KAAKoB,OAAO,CAAC;IAC7D,IAAI,CAACjC,KAAK,IAAIA,KAAK,CAACqC,QAAQ,EAAE;;IAE9B;IACA,IAAIrC,KAAK,CAACsC,MAAM,EAAE;MAChB1C,aAAa,CAAC,CAAC;MACfV,QAAQ,CAAC,CAAC;MACVD,UAAU,CAAC,CAAC;MACZ;MACAc,oBAAoB,CAACC,KAAK,CAAC;MAC3BhB,WAAW,CAACiD,OAAO,EAAE;QAAEI,QAAQ,EAAE;MAAK,CAAC,CAAC;IAC1C,CAAC,MAAM;MACL;MACA7C,cAAc,CAAC,CAAC;MAEhB,IAAIQ,KAAK,CAACuC,OAAO,EAAE;QACjB;QACApD,OAAO,CAAC,CAAC;QACTK,cAAc,CAAC,CAAC;QAChB;QACAR,WAAW,CAACiD,OAAO,EAAE;UAAEI,QAAQ,EAAE;QAAK,CAAC,CAAC;MAC1C,CAAC,MAAM,IAAIrC,KAAK,CAACwC,QAAQ,EAAE;QACzB;QACA1D,UAAU,CAACmD,OAAO,CAAC;MACrB,CAAC,MAAM;QACL;QACAnD,UAAU,CAACmD,OAAO,CAAC;MACrB;;MAEA;MACAlC,oBAAoB,CAACC,KAAK,CAAC;IAC7B;;IAEA;IACAyC,UAAU,CAAC,MAAM;MACf1D,WAAW,CAACkD,OAAO,CAAC;MACpB5C,eAAe,CAACqD,MAAM,CAACT,OAAO,CAAC;IACjC,CAAC,EAAE,GAAG,CAAC;EACT,CAAC;;EAED;EACA,MAAMR,oBAAoB,GAAIkB,YAAsC,IAAK;IACvE,MAAMC,aAAa,GAAG/E,kBAAkB,CAACuD,QAAQ,CAAC,CAAC,CAACxC,MAAM;IAC1DgE,aAAa,CAACC,OAAO,CAAC7C,KAAK,IAAI;MAC7B,IAAI,CAACA,KAAK,CAACqC,QAAQ,EAAE;QACnB;QACA,MAAMS,YAAY,GAAG9C,KAAK,CAACE,QAAQ,CAACC,CAAC,GAAGrC,WAAW,CAACsC,UAAU,GAAG,CAAC;QAClE,MAAM2C,YAAY,GAAG/C,KAAK,CAACE,QAAQ,CAACI,CAAC,GAAGxC,WAAW,CAACsC,UAAU,GAAG,CAAC;QAClE,MAAM4C,WAAW,GAAGlF,WAAW,CAACsC,UAAU,GAAG,CAAC;;QAE9C;QACA,MAAM6C,QAAQ,GAAGvC,IAAI,CAACwC,IAAI,CACxBxC,IAAI,CAACyC,GAAG,CAACR,YAAY,CAACxC,CAAC,GAAG2C,YAAY,EAAE,CAAC,CAAC,GAAGpC,IAAI,CAACyC,GAAG,CAACR,YAAY,CAACrC,CAAC,GAAGyC,YAAY,EAAE,CAAC,CACxF,CAAC;QAED,IAAIE,QAAQ,IAAID,WAAW,EAAE;UAC3BhB,gBAAgB,CAAChC,KAAK,CAACa,EAAE,CAAC;QAC5B;MACF;IACF,CAAC,CAAC;EACJ,CAAC;;EAED;EACAvD,SAAS,CAAC,MAAM;IACdsB,MAAM,CAACiE,OAAO,CAAC7C,KAAK,IAAI;MACtB,IAAI,CAACX,eAAe,CAAC+D,GAAG,CAACpD,KAAK,CAACa,EAAE,CAAC,EAAE;QAClCxB,eAAe,CAACgE,UAAU,CAACrD,KAAK,CAACa,EAAE,CAAC;MACtC;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACjC,MAAM,EAAES,eAAe,CAAC,CAAC;EAI7B,oBACEd,IAAA,CAACX,eAAe;IAAC0F,OAAO,EAAE3B,UAAW;IAAA4B,QAAA,eACnC9E,KAAA,CAACjB,IAAI;MAACgG,KAAK,EAAEC,MAAM,CAACC,QAAS;MAAAH,QAAA,GAK1B3E,MAAM,CAAC+E,GAAG,CAAC3D,KAAK,IAAI;QACnB,MAAM4D,SAAS,GAAGvE,eAAe,CAACwE,GAAG,CAAC7D,KAAK,CAACa,EAAE,CAAC;QAE/C,oBAAOtC,IAAA,CAACF,cAAc;UAAgB2B,KAAK,EAAEA,KAAM;UAAC4D,SAAS,EAAEA,SAAU;UAACE,OAAO,EAAE9B;QAAiB,GAAxEhC,KAAK,CAACa,EAAoE,CAAC;MACzG,CAAC,CAAC,EAIDvB,YAAY,CAACqE,GAAG,CAAC3C,KAAK,iBACrBzC,IAAA,CAACJ,aAAa;QAEZgC,CAAC,EAAEa,KAAK,CAACb,CAAE;QACXG,CAAC,EAAEU,KAAK,CAACV,CAAE;QACXyD,aAAa,EAAE,CAAE;QACjBC,QAAQ,EAAE,IAAK;QACfC,UAAU,EAAEA,CAAA,KAAMnD,mBAAmB,CAACE,KAAK,CAACH,EAAE;MAAE,GAL3CG,KAAK,CAACH,EAMZ,CACF,CAAC;IAAA,CACE;EAAC,CACQ,CAAC;AAEtB,CAAC,CAAC;AAEF,MAAM4C,MAAM,GAAGhG,UAAU,CAACyG,MAAM,CAAC;EAC/BR,QAAQ,EAAE;IACRS,IAAI,EAAE,CAAC;IACPjE,QAAQ,EAAE,UAAU;IACpBkE,QAAQ,EAAE;EACZ,CAAC;EACDC,kBAAkB,EAAE;IAClBnE,QAAQ,EAAE,UAAU;IACpBoE,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACV;AACF,CAAC,CAAC","ignoreList":[]}