@nayan-ui/games 1.19.0 → 1.20.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 (1808) hide show
  1. package/README.md +53 -191
  2. package/lib/module/assets/fonts/Inter-SemiBold.ttf +0 -0
  3. package/lib/module/assets/models/explorer/explorer.glb +0 -0
  4. package/lib/module/assets/models/explorer/params.json +51 -0
  5. package/lib/module/assets/models/explorer/source.json +222 -0
  6. package/lib/module/assets/models/play-with-tua/play-with-tua.glb +0 -0
  7. package/lib/module/assets/models/play-with-tua/sources.json +141 -0
  8. package/lib/module/assets/sfx/balloon_pop.wav +0 -0
  9. package/lib/module/assets/sfx/blocked.wav +0 -0
  10. package/lib/module/assets/sfx/boing.wav +0 -0
  11. package/lib/module/assets/sfx/bonus.wav +0 -0
  12. package/lib/module/assets/sfx/boom.wav +0 -0
  13. package/lib/module/assets/sfx/bump.wav +0 -0
  14. package/lib/module/assets/sfx/cannon.wav +0 -0
  15. package/lib/module/assets/sfx/capture.wav +0 -0
  16. package/lib/module/assets/sfx/card_flip.wav +0 -0
  17. package/lib/module/assets/sfx/card_place.wav +0 -0
  18. package/lib/module/assets/sfx/catch.wav +0 -0
  19. package/lib/module/assets/sfx/chime.wav +0 -0
  20. package/lib/module/assets/sfx/chomp.wav +0 -0
  21. package/lib/module/assets/sfx/chomp_alt.wav +0 -0
  22. package/lib/module/assets/sfx/clack.wav +0 -0
  23. package/lib/module/assets/sfx/clang.wav +0 -0
  24. package/lib/module/assets/sfx/clash.wav +0 -0
  25. package/lib/module/assets/sfx/click.wav +0 -0
  26. package/lib/module/assets/sfx/coin.wav +0 -0
  27. package/lib/module/assets/sfx/combo.wav +0 -0
  28. package/lib/module/assets/sfx/crash.wav +0 -0
  29. package/lib/module/assets/sfx/crunch.wav +0 -0
  30. package/lib/module/assets/sfx/dance.wav +0 -0
  31. package/lib/module/assets/sfx/deselect.wav +0 -0
  32. package/lib/module/assets/sfx/dice_roll.wav +0 -0
  33. package/lib/module/assets/sfx/die.wav +0 -0
  34. package/lib/module/assets/sfx/draw.wav +0 -0
  35. package/lib/module/assets/sfx/drop.wav +0 -0
  36. package/lib/module/assets/sfx/eat.wav +0 -0
  37. package/lib/module/assets/sfx/engine.wav +0 -0
  38. package/lib/module/assets/sfx/error.wav +0 -0
  39. package/lib/module/assets/sfx/flag.wav +0 -0
  40. package/lib/module/assets/sfx/flap.wav +0 -0
  41. package/lib/module/assets/sfx/flip_disc.wav +0 -0
  42. package/lib/module/assets/sfx/footstep_run.wav +0 -0
  43. package/lib/module/assets/sfx/footstep_walk.wav +0 -0
  44. package/lib/module/assets/sfx/game_over.wav +0 -0
  45. package/lib/module/assets/sfx/gate.wav +0 -0
  46. package/lib/module/assets/sfx/hit.wav +0 -0
  47. package/lib/module/assets/sfx/hop.wav +0 -0
  48. package/lib/module/assets/sfx/hurt.wav +0 -0
  49. package/lib/module/assets/sfx/invalid.wav +0 -0
  50. package/lib/module/assets/sfx/jump.wav +0 -0
  51. package/lib/module/assets/sfx/ladder.wav +0 -0
  52. package/lib/module/assets/sfx/land.wav +0 -0
  53. package/lib/module/assets/sfx/laugh.wav +0 -0
  54. package/lib/module/assets/sfx/lose.wav +0 -0
  55. package/lib/module/assets/sfx/merge.wav +0 -0
  56. package/lib/module/assets/sfx/miss.wav +0 -0
  57. package/lib/module/assets/sfx/nitro.wav +0 -0
  58. package/lib/module/assets/sfx/pew.wav +0 -0
  59. package/lib/module/assets/sfx/place.wav +0 -0
  60. package/lib/module/assets/sfx/pling.wav +0 -0
  61. package/lib/module/assets/sfx/point.wav +0 -0
  62. package/lib/module/assets/sfx/pop.wav +0 -0
  63. package/lib/module/assets/sfx/pop_soft.wav +0 -0
  64. package/lib/module/assets/sfx/power_up.wav +0 -0
  65. package/lib/module/assets/sfx/reveal.wav +0 -0
  66. package/lib/module/assets/sfx/robot.wav +0 -0
  67. package/lib/module/assets/sfx/rotate.wav +0 -0
  68. package/lib/module/assets/sfx/run_steps.wav +0 -0
  69. package/lib/module/assets/sfx/select.wav +0 -0
  70. package/lib/module/assets/sfx/shuffle.wav +0 -0
  71. package/lib/module/assets/sfx/six.wav +0 -0
  72. package/lib/module/assets/sfx/slice.wav +0 -0
  73. package/lib/module/assets/sfx/slide.wav +0 -0
  74. package/lib/module/assets/sfx/snake.wav +0 -0
  75. package/lib/module/assets/sfx/snap.wav +0 -0
  76. package/lib/module/assets/sfx/splash.wav +0 -0
  77. package/lib/module/assets/sfx/star.wav +0 -0
  78. package/lib/module/assets/sfx/start.wav +0 -0
  79. package/lib/module/assets/sfx/swoosh.wav +0 -0
  80. package/lib/module/assets/sfx/tap.wav +0 -0
  81. package/lib/module/assets/sfx/thud.wav +0 -0
  82. package/lib/module/assets/sfx/thunk.wav +0 -0
  83. package/lib/module/assets/sfx/tick.wav +0 -0
  84. package/lib/module/assets/sfx/time_up.wav +0 -0
  85. package/lib/module/assets/sfx/tock.wav +0 -0
  86. package/lib/module/assets/sfx/walk_steps.wav +0 -0
  87. package/lib/module/assets/sfx/warning.wav +0 -0
  88. package/lib/module/assets/sfx/whack.wav +0 -0
  89. package/lib/module/assets/sfx/whoosh.wav +0 -0
  90. package/lib/module/assets/sfx/win.wav +0 -0
  91. package/lib/module/assets/sfx/zap.wav +0 -0
  92. package/lib/module/assets/textures/ad_bolt.png +0 -0
  93. package/lib/module/assets/textures/ad_bubbles.png +0 -0
  94. package/lib/module/assets/textures/ad_chevrons.png +0 -0
  95. package/lib/module/assets/textures/asphalt.png +0 -0
  96. package/lib/module/assets/textures/bark.jpg +0 -0
  97. package/lib/module/assets/textures/explorer-atlas.png +0 -0
  98. package/lib/module/assets/textures/facade.png +0 -0
  99. package/lib/module/assets/textures/grass.png +0 -0
  100. package/lib/module/assets/textures/leaves.png +0 -0
  101. package/lib/module/assets/textures/limestone.jpg +0 -0
  102. package/lib/module/assets/textures/meadow.jpg +0 -0
  103. package/lib/module/assets/textures/nature-sources.json +87 -0
  104. package/lib/module/assets/textures/pine.png +0 -0
  105. package/lib/module/assets/textures/river.jpg +0 -0
  106. package/lib/module/assets/textures/soft_glow.png +0 -0
  107. package/lib/module/games/arrows/Arrows.js +1 -1
  108. package/lib/module/games/arrows/ArrowsConstants.js +1 -1
  109. package/lib/module/games/arrows/ArrowsGame.js +1 -0
  110. package/lib/module/games/arrows/ArrowsScene.js +1 -0
  111. package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -1
  112. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -1
  113. package/lib/module/games/balloon-blaster/BalloonBlasterGame.js +1 -0
  114. package/lib/module/games/balloon-blaster/BalloonBlasterPhysics.js +1 -0
  115. package/lib/module/games/balloon-blaster/BalloonBlasterScene.js +1 -0
  116. package/lib/module/games/bike-racing/BikeMeshes.js +1 -0
  117. package/lib/module/games/bike-racing/BikeRacing.js +1 -1
  118. package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -1
  119. package/lib/module/games/bike-racing/BikeRacingGame.js +1 -0
  120. package/lib/module/games/bike-racing/BikeRacingScene.js +1 -0
  121. package/lib/module/games/block-blast/BlockBlast.js +1 -1
  122. package/lib/module/games/block-blast/BlockBlastConstants.js +1 -1
  123. package/lib/module/games/block-blast/BlockBlastGame.js +1 -0
  124. package/lib/module/games/block-blast/BlockBlastScene.js +1 -0
  125. package/lib/module/games/block-breaker/BlockBreaker.js +1 -1
  126. package/lib/module/games/block-breaker/BlockBreakerConstants.js +1 -1
  127. package/lib/module/games/block-breaker/BlockBreakerGame.js +1 -0
  128. package/lib/module/games/block-breaker/BlockBreakerScene.js +1 -0
  129. package/lib/module/games/bluk/Bluk.js +1 -1
  130. package/lib/module/games/bluk/BlukConstants.js +1 -1
  131. package/lib/module/games/bluk/BlukGame.js +1 -0
  132. package/lib/module/games/bluk/BlukRules.js +1 -0
  133. package/lib/module/games/bluk/BlukScene.js +1 -0
  134. package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -1
  135. package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -1
  136. package/lib/module/games/bubble-shooter/BubbleShooterGame.js +1 -0
  137. package/lib/module/games/bubble-shooter/BubbleShooterScene.js +1 -0
  138. package/lib/module/games/candy-crush/CandyCrush.js +1 -1
  139. package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -1
  140. package/lib/module/games/candy-crush/CandyCrushGame.js +1 -0
  141. package/lib/module/games/candy-crush/CandyCrushScene.js +1 -0
  142. package/lib/module/games/car-racing/CarMeshes.js +1 -0
  143. package/lib/module/games/car-racing/CarRacing.js +1 -1
  144. package/lib/module/games/car-racing/CarRacingConstants.js +1 -1
  145. package/lib/module/games/car-racing/CarRacingFacade.js +1 -0
  146. package/lib/module/games/car-racing/CarRacingGame.js +1 -0
  147. package/lib/module/games/car-racing/CarRacingScene.js +1 -0
  148. package/lib/module/games/car-racing/CarRacingScenery.js +1 -0
  149. package/lib/module/games/chameleon-run/ChameleonRun.js +1 -1
  150. package/lib/module/games/chameleon-run/ChameleonRunBackdrop.js +1 -0
  151. package/lib/module/games/chameleon-run/ChameleonRunConstants.js +1 -1
  152. package/lib/module/games/chameleon-run/ChameleonRunGame.js +1 -0
  153. package/lib/module/games/chameleon-run/ChameleonRunMeshes.js +1 -0
  154. package/lib/module/games/chameleon-run/ChameleonRunRules.js +1 -0
  155. package/lib/module/games/chameleon-run/ChameleonRunScene.js +1 -0
  156. package/lib/module/games/checkers/Checkers.js +1 -1
  157. package/lib/module/games/checkers/CheckersAI.js +1 -0
  158. package/lib/module/games/checkers/CheckersConstants.js +1 -1
  159. package/lib/module/games/checkers/CheckersGame.js +1 -0
  160. package/lib/module/games/checkers/CheckersRules.js +1 -0
  161. package/lib/module/games/checkers/CheckersScene.js +1 -0
  162. package/lib/module/games/color-switch/ColorSwitch.js +1 -1
  163. package/lib/module/games/color-switch/ColorSwitchConstants.js +1 -1
  164. package/lib/module/games/color-switch/ColorSwitchGame.js +1 -0
  165. package/lib/module/games/color-switch/ColorSwitchScene.js +1 -0
  166. package/lib/module/games/colors-sort/ColorsSort.js +1 -1
  167. package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -1
  168. package/lib/module/games/colors-sort/ColorsSortGame.js +1 -0
  169. package/lib/module/games/colors-sort/ColorsSortScene.js +1 -0
  170. package/lib/module/games/connect-em-all/ConnectEmAll.js +1 -1
  171. package/lib/module/games/connect-em-all/ConnectEmAllConstants.js +1 -1
  172. package/lib/module/games/connect-em-all/ConnectEmAllGame.js +1 -0
  173. package/lib/module/games/connect-em-all/ConnectEmAllScene.js +1 -0
  174. package/lib/module/games/crossy-road/CrossyRoad.js +1 -1
  175. package/lib/module/games/crossy-road/CrossyRoadCamera.js +1 -0
  176. package/lib/module/games/crossy-road/CrossyRoadConstants.js +1 -1
  177. package/lib/module/games/crossy-road/CrossyRoadGame.js +1 -0
  178. package/lib/module/games/crossy-road/CrossyRoadMeshes.js +1 -0
  179. package/lib/module/games/crossy-road/CrossyRoadPerson.js +1 -0
  180. package/lib/module/games/crossy-road/CrossyRoadRules.js +1 -0
  181. package/lib/module/games/crossy-road/CrossyRoadScene.js +1 -0
  182. package/lib/module/games/dino-jump/DinoJump.js +1 -1
  183. package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -1
  184. package/lib/module/games/dino-jump/DinoJumpGame.js +1 -0
  185. package/lib/module/games/dino-jump/DinoJumpScene.js +1 -0
  186. package/lib/module/games/dots-and-boxes/DotsAndBoxes.js +1 -1
  187. package/lib/module/games/dots-and-boxes/DotsAndBoxesConstants.js +1 -1
  188. package/lib/module/games/dots-and-boxes/DotsAndBoxesGame.js +1 -0
  189. package/lib/module/games/dots-and-boxes/DotsAndBoxesScene.js +1 -0
  190. package/lib/module/games/falling-sticks/FallingSticks.js +1 -1
  191. package/lib/module/games/falling-sticks/FallingSticksConstants.js +1 -1
  192. package/lib/module/games/falling-sticks/FallingSticksGame.js +1 -0
  193. package/lib/module/games/falling-sticks/FallingSticksRules.js +1 -0
  194. package/lib/module/games/falling-sticks/FallingSticksScene.js +1 -0
  195. package/lib/module/games/find-different-number/FindDifferentNumber.js +1 -1
  196. package/lib/module/games/find-different-number/FindDifferentNumberConstants.js +1 -1
  197. package/lib/module/games/find-different-number/FindDifferentNumberGame.js +1 -0
  198. package/lib/module/games/find-different-number/FindDifferentNumberRules.js +1 -0
  199. package/lib/module/games/find-different-number/FindDifferentNumberScene.js +1 -0
  200. package/lib/module/games/flappy-bird/FlappyBird.js +1 -1
  201. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -1
  202. package/lib/module/games/flappy-bird/FlappyBirdGame.js +1 -0
  203. package/lib/module/games/flappy-bird/FlappyBirdScene.js +1 -0
  204. package/lib/module/games/fruit-merger/FruitMerger.js +1 -1
  205. package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -1
  206. package/lib/module/games/fruit-merger/FruitMergerGame.js +1 -0
  207. package/lib/module/games/fruit-merger/FruitMergerRules.js +1 -0
  208. package/lib/module/games/fruit-merger/FruitMergerScene.js +1 -0
  209. package/lib/module/games/fruit-ninja/FruitNinja.js +1 -1
  210. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -1
  211. package/lib/module/games/fruit-ninja/FruitNinjaGame.js +1 -0
  212. package/lib/module/games/fruit-ninja/FruitNinjaScene.js +1 -0
  213. package/lib/module/games/fruit-ninja/FruitNinjaWorld.js +1 -0
  214. package/lib/module/games/game-2048/Game2048.js +1 -1
  215. package/lib/module/games/game-2048/Game2048Constants.js +1 -1
  216. package/lib/module/games/game-2048/Game2048Game.js +1 -0
  217. package/lib/module/games/game-2048/Game2048Rules.js +1 -0
  218. package/lib/module/games/game-2048/Game2048Scene.js +1 -0
  219. package/lib/module/games/knife-hit/KnifeHit.js +1 -1
  220. package/lib/module/games/knife-hit/KnifeHitConstants.js +1 -1
  221. package/lib/module/games/knife-hit/KnifeHitGame.js +1 -0
  222. package/lib/module/games/knife-hit/KnifeHitScene.js +1 -0
  223. package/lib/module/games/ludo-king/LudoKing.js +1 -1
  224. package/lib/module/games/ludo-king/LudoKingConstants.js +1 -1
  225. package/lib/module/games/ludo-king/LudoKingGame.js +1 -0
  226. package/lib/module/games/ludo-king/LudoKingRules.js +1 -0
  227. package/lib/module/games/ludo-king/LudoKingScene.js +1 -0
  228. package/lib/module/games/maze-runner/MazeRunner.js +1 -1
  229. package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -1
  230. package/lib/module/games/maze-runner/MazeRunnerGame.js +1 -0
  231. package/lib/module/games/maze-runner/MazeRunnerRules.js +1 -0
  232. package/lib/module/games/maze-runner/MazeRunnerScene.js +1 -0
  233. package/lib/module/games/memory-match/MemoryMatch.js +1 -1
  234. package/lib/module/games/memory-match/MemoryMatchConstants.js +1 -1
  235. package/lib/module/games/memory-match/MemoryMatchGame.js +1 -0
  236. package/lib/module/games/memory-match/MemoryMatchRules.js +1 -0
  237. package/lib/module/games/memory-match/MemoryMatchScene.js +1 -0
  238. package/lib/module/games/mine-sweeper/MineSweeper.js +1 -1
  239. package/lib/module/games/mine-sweeper/MineSweeperConstants.js +1 -1
  240. package/lib/module/games/mine-sweeper/MineSweeperGame.js +1 -0
  241. package/lib/module/games/mine-sweeper/MineSweeperRules.js +1 -0
  242. package/lib/module/games/mine-sweeper/MineSweeperScene.js +1 -0
  243. package/lib/module/games/mob-control/MobControl.js +1 -1
  244. package/lib/module/games/mob-control/MobControlConstants.js +1 -1
  245. package/lib/module/games/mob-control/MobControlGame.js +1 -0
  246. package/lib/module/games/mob-control/MobControlMeshes.js +1 -0
  247. package/lib/module/games/mob-control/MobControlRenderer.js +1 -0
  248. package/lib/module/games/mob-control/MobControlRules.js +1 -0
  249. package/lib/module/games/mob-control/MobControlScene.js +1 -0
  250. package/lib/module/games/number-search/NumberSearch.js +1 -1
  251. package/lib/module/games/number-search/NumberSearchNumbers.js +1 -0
  252. package/lib/module/games/nuts-and-bolts/NutsAndBolts.js +1 -1
  253. package/lib/module/games/nuts-and-bolts/NutsAndBoltsConstants.js +1 -1
  254. package/lib/module/games/nuts-and-bolts/NutsAndBoltsGame.js +1 -0
  255. package/lib/module/games/nuts-and-bolts/NutsAndBoltsRules.js +1 -0
  256. package/lib/module/games/nuts-and-bolts/NutsAndBoltsScene.js +1 -0
  257. package/lib/module/games/pac-man/PacMan.js +1 -1
  258. package/lib/module/games/pac-man/PacManConstants.js +1 -1
  259. package/lib/module/games/pac-man/PacManGame.js +1 -0
  260. package/lib/module/games/pac-man/PacManRules.js +1 -0
  261. package/lib/module/games/pac-man/PacManScene.js +1 -0
  262. package/lib/module/games/paper-io/PaperIo.js +1 -1
  263. package/lib/module/games/paper-io/PaperIoConstants.js +1 -1
  264. package/lib/module/games/paper-io/PaperIoGame.js +1 -0
  265. package/lib/module/games/paper-io/PaperIoMeshes.js +1 -0
  266. package/lib/module/games/paper-io/PaperIoRules.js +1 -0
  267. package/lib/module/games/paper-io/PaperIoScene.js +1 -0
  268. package/lib/module/games/penguin-run/PenguinMeshes.js +1 -0
  269. package/lib/module/games/penguin-run/PenguinModel.js +1 -0
  270. package/lib/module/games/penguin-run/PenguinRun.js +1 -0
  271. package/lib/module/games/penguin-run/PenguinRunConstants.js +1 -0
  272. package/lib/module/games/penguin-run/PenguinRunGame.js +1 -0
  273. package/lib/module/games/penguin-run/PenguinRunScene.js +1 -0
  274. package/lib/module/games/perfect-circle/PerfectCircle.js +1 -1
  275. package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -1
  276. package/lib/module/games/perfect-circle/PerfectCircleGame.js +1 -0
  277. package/lib/module/games/perfect-circle/PerfectCircleRules.js +1 -0
  278. package/lib/module/games/perfect-circle/PerfectCircleScene.js +1 -0
  279. package/lib/module/games/pipe-connect/PipeConnect.js +1 -1
  280. package/lib/module/games/pipe-connect/PipeConnectConstants.js +1 -1
  281. package/lib/module/games/pipe-connect/PipeConnectGame.js +1 -0
  282. package/lib/module/games/pipe-connect/PipeConnectRules.js +1 -0
  283. package/lib/module/games/pipe-connect/PipeConnectScene.js +1 -0
  284. package/lib/module/games/play-with-tua/PlayWithTua.js +1 -0
  285. package/lib/module/games/play-with-tua/PlayWithTuaConstants.js +1 -0
  286. package/lib/module/games/play-with-tua/PlayWithTuaGame.js +1 -0
  287. package/lib/module/games/play-with-tua/PlayWithTuaModel.js +1 -0
  288. package/lib/module/games/play-with-tua/PlayWithTuaScene.js +1 -0
  289. package/lib/module/games/popit-fidget/PopitFidget.js +1 -1
  290. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -1
  291. package/lib/module/games/popit-fidget/PopitFidgetGame.js +1 -0
  292. package/lib/module/games/popit-fidget/PopitFidgetScene.js +1 -0
  293. package/lib/module/games/reversi/Reversi.js +1 -1
  294. package/lib/module/games/reversi/ReversiConstants.js +1 -1
  295. package/lib/module/games/reversi/ReversiGame.js +1 -0
  296. package/lib/module/games/reversi/ReversiRules.js +1 -0
  297. package/lib/module/games/reversi/ReversiScene.js +1 -0
  298. package/lib/module/games/search-grid/SearchGrid.js +1 -0
  299. package/lib/module/games/search-grid/SearchGridConstants.js +1 -0
  300. package/lib/module/games/search-grid/SearchGridGame.js +1 -0
  301. package/lib/module/games/search-grid/SearchGridScene.js +1 -0
  302. package/lib/module/games/shared/BackdropCard.js +1 -0
  303. package/lib/module/games/shared/EngineBackdrop.js +1 -0
  304. package/lib/module/games/shared/EngineBlasts.js +1 -0
  305. package/lib/module/games/shared/EngineBlocks.js +1 -0
  306. package/lib/module/games/shared/EngineControlText.js +1 -0
  307. package/lib/module/games/shared/EngineDice.js +1 -0
  308. package/lib/module/games/shared/EngineFootprint.js +1 -0
  309. package/lib/module/games/shared/EngineFruits.js +1 -0
  310. package/lib/module/games/shared/EngineGameLoader.js +1 -0
  311. package/lib/module/games/shared/EngineGameScreen.js +1 -0
  312. package/lib/module/games/shared/EngineGameWidth.js +1 -0
  313. package/lib/module/games/shared/EngineGameWidth.web.js +1 -0
  314. package/lib/module/games/shared/EngineGlyphs.js +1 -0
  315. package/lib/module/games/shared/EngineHud.js +1 -0
  316. package/lib/module/games/shared/EngineLoading.js +1 -0
  317. package/lib/module/games/shared/EngineMeadow.js +1 -0
  318. package/lib/module/games/shared/EngineMeshCache.js +1 -0
  319. package/lib/module/games/shared/EngineMeshes.js +1 -0
  320. package/lib/module/games/shared/EngineRacingChase.js +1 -0
  321. package/lib/module/games/shared/EngineRacingHandling.js +1 -0
  322. package/lib/module/games/shared/EngineReadyContext.js +1 -0
  323. package/lib/module/games/shared/EngineTilt.js +1 -0
  324. package/lib/module/games/shared/EngineTouchSurface.js +1 -0
  325. package/lib/module/games/shared/EngineUtils.js +1 -0
  326. package/lib/module/games/shared/GameActivity.js +1 -0
  327. package/lib/module/games/shared/GameLoading.js +1 -0
  328. package/lib/module/games/shared/GameLoadingTransition.js +1 -0
  329. package/lib/module/games/shared/ProceduralCacheVersion.js +1 -0
  330. package/lib/module/games/shared/useEngineGame.js +1 -0
  331. package/lib/module/games/shared/useGameResource.js +1 -0
  332. package/lib/module/games/shared/useLiveState.js +1 -0
  333. package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -1
  334. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -1
  335. package/lib/module/games/sliding-numbers/SlidingNumbersGame.js +1 -0
  336. package/lib/module/games/sliding-numbers/SlidingNumbersRules.js +1 -0
  337. package/lib/module/games/sliding-numbers/SlidingNumbersScene.js +1 -0
  338. package/lib/module/games/snake-3d/Snake3D.js +1 -1
  339. package/lib/module/games/snake-3d/Snake3DConstants.js +1 -1
  340. package/lib/module/games/snake-3d/Snake3DGame.js +1 -0
  341. package/lib/module/games/snake-3d/Snake3DMotion.js +1 -0
  342. package/lib/module/games/snake-3d/Snake3DRules.js +1 -0
  343. package/lib/module/games/snake-3d/Snake3DScene.js +1 -0
  344. package/lib/module/games/snakes-and-ladders/SnakesAndLadders.js +1 -1
  345. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersConstants.js +1 -1
  346. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersGame.js +1 -0
  347. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersScene.js +1 -0
  348. package/lib/module/games/space-fighter/SpaceFighter.js +1 -1
  349. package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -1
  350. package/lib/module/games/space-fighter/SpaceFighterGame.js +1 -0
  351. package/lib/module/games/space-fighter/SpaceFighterScene.js +1 -0
  352. package/lib/module/games/spider-solitaire/SpiderSolitaire.js +1 -1
  353. package/lib/module/games/spider-solitaire/SpiderSolitaireConstants.js +1 -1
  354. package/lib/module/games/spider-solitaire/SpiderSolitaireGame.js +1 -0
  355. package/lib/module/games/spider-solitaire/SpiderSolitaireRules.js +1 -0
  356. package/lib/module/games/spider-solitaire/SpiderSolitaireScene.js +1 -0
  357. package/lib/module/games/stack-tower/StackTower.js +1 -1
  358. package/lib/module/games/stack-tower/StackTowerConstants.js +1 -1
  359. package/lib/module/games/stack-tower/StackTowerGame.js +1 -0
  360. package/lib/module/games/stack-tower/StackTowerScene.js +1 -0
  361. package/lib/module/games/sudoku/Sudoku.js +1 -1
  362. package/lib/module/games/sudoku/SudokuConstants.js +1 -1
  363. package/lib/module/games/sudoku/SudokuGame.js +1 -0
  364. package/lib/module/games/sudoku/SudokuRules.js +1 -0
  365. package/lib/module/games/sudoku/SudokuScene.js +1 -0
  366. package/lib/module/games/tangram/Tangram.js +1 -1
  367. package/lib/module/games/tangram/TangramConstants.js +1 -1
  368. package/lib/module/games/tangram/TangramGame.js +1 -0
  369. package/lib/module/games/tangram/TangramRules.js +1 -0
  370. package/lib/module/games/tangram/TangramScene.js +1 -0
  371. package/lib/module/games/tank-1990/Tank1990.js +1 -1
  372. package/lib/module/games/tank-1990/Tank1990Constants.js +1 -1
  373. package/lib/module/games/tank-1990/Tank1990Game.js +1 -0
  374. package/lib/module/games/tank-1990/Tank1990Rules.js +1 -0
  375. package/lib/module/games/tank-1990/Tank1990Scene.js +1 -0
  376. package/lib/module/games/tic-tac-toe/TicTacToe.js +1 -1
  377. package/lib/module/games/tic-tac-toe/TicTacToeConstants.js +1 -1
  378. package/lib/module/games/tic-tac-toe/TicTacToeGame.js +1 -0
  379. package/lib/module/games/tic-tac-toe/TicTacToeRules.js +1 -0
  380. package/lib/module/games/tic-tac-toe/TicTacToeScene.js +1 -0
  381. package/lib/module/games/tile-home/TileHome.js +1 -1
  382. package/lib/module/games/tile-home/TileHomeConstants.js +1 -1
  383. package/lib/module/games/tile-home/TileHomeGame.js +1 -0
  384. package/lib/module/games/tile-home/TileHomeScene.js +1 -0
  385. package/lib/module/games/treasure-hunt/TreasureHunt.js +1 -0
  386. package/lib/module/games/treasure-hunt/TreasureHuntConstants.js +1 -0
  387. package/lib/module/games/treasure-hunt/TreasureHuntControls.js +1 -0
  388. package/lib/module/games/treasure-hunt/TreasureHuntGame.js +1 -0
  389. package/lib/module/games/treasure-hunt/TreasureHuntMeshes.js +1 -0
  390. package/lib/module/games/treasure-hunt/TreasureHuntModel.js +1 -0
  391. package/lib/module/games/treasure-hunt/TreasureHuntRules.js +1 -0
  392. package/lib/module/games/treasure-hunt/TreasureHuntScene.js +1 -0
  393. package/lib/module/games/whack-a-mole/WhackAMole.js +1 -1
  394. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -1
  395. package/lib/module/games/whack-a-mole/WhackAMoleGame.js +1 -0
  396. package/lib/module/games/whack-a-mole/WhackAMoleScene.js +1 -0
  397. package/lib/module/games/word-search/WordSearch.js +1 -1
  398. package/lib/module/games/word-search/WordSearchWords.js +1 -0
  399. package/lib/module/helpers/GamePatternData.js +1 -0
  400. package/lib/module/helpers/GameSettingsModal.js +1 -1
  401. package/lib/module/helpers/GameTheme.js +1 -0
  402. package/lib/module/helpers/IconPaths.js +1 -0
  403. package/lib/module/helpers/index.js +1 -1
  404. package/lib/module/index.js +1 -1
  405. package/lib/module/services/GameAssetLoader.js +1 -0
  406. package/lib/module/services/GameAssets.js +1 -0
  407. package/lib/module/services/GameLoaders.js +1 -0
  408. package/lib/module/services/GamesConstants.js +1 -1
  409. package/lib/module/services/GamesMetadata.js +1 -1
  410. package/lib/module/services/GamesService.js +1 -1
  411. package/lib/module/services/HapticsService.js +1 -1
  412. package/lib/module/services/ScoringService.js +1 -1
  413. package/lib/module/services/SfxSources.js +1 -0
  414. package/lib/module/services/SoundsService.js +1 -1
  415. package/lib/module/services/ThemeService.js +1 -0
  416. package/lib/module/services/UtilsService.js +1 -1
  417. package/lib/module/services/index.js +1 -1
  418. package/lib/typescript/src/games/arrows/Arrows.d.ts +1 -3
  419. package/lib/typescript/src/games/arrows/ArrowsConstants.d.ts +48 -32
  420. package/lib/typescript/src/games/arrows/ArrowsGame.d.ts +60 -0
  421. package/lib/typescript/src/games/arrows/ArrowsScene.d.ts +67 -0
  422. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +1 -3
  423. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +39 -131
  424. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterGame.d.ts +57 -0
  425. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterPhysics.d.ts +16 -0
  426. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterScene.d.ts +31 -0
  427. package/lib/typescript/src/games/bike-racing/BikeMeshes.d.ts +14 -0
  428. package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +2 -1
  429. package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +38 -29
  430. package/lib/typescript/src/games/bike-racing/BikeRacingGame.d.ts +104 -0
  431. package/lib/typescript/src/games/bike-racing/BikeRacingScene.d.ts +25 -0
  432. package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +1 -3
  433. package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +48 -30
  434. package/lib/typescript/src/games/block-blast/BlockBlastGame.d.ts +77 -0
  435. package/lib/typescript/src/games/block-blast/BlockBlastScene.d.ts +36 -0
  436. package/lib/typescript/src/games/block-breaker/BlockBreaker.d.ts +1 -3
  437. package/lib/typescript/src/games/block-breaker/BlockBreakerConstants.d.ts +88 -35
  438. package/lib/typescript/src/games/block-breaker/BlockBreakerGame.d.ts +82 -0
  439. package/lib/typescript/src/games/block-breaker/BlockBreakerScene.d.ts +48 -0
  440. package/lib/typescript/src/games/bluk/Bluk.d.ts +1 -3
  441. package/lib/typescript/src/games/bluk/BlukConstants.d.ts +65 -54
  442. package/lib/typescript/src/games/bluk/BlukGame.d.ts +65 -0
  443. package/lib/typescript/src/games/bluk/BlukRules.d.ts +51 -0
  444. package/lib/typescript/src/games/bluk/BlukScene.d.ts +54 -0
  445. package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +1 -3
  446. package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +56 -24
  447. package/lib/typescript/src/games/bubble-shooter/BubbleShooterGame.d.ts +70 -0
  448. package/lib/typescript/src/games/bubble-shooter/BubbleShooterScene.d.ts +26 -0
  449. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +1 -3
  450. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +63 -32
  451. package/lib/typescript/src/games/candy-crush/CandyCrushGame.d.ts +65 -0
  452. package/lib/typescript/src/games/candy-crush/CandyCrushScene.d.ts +28 -0
  453. package/lib/typescript/src/games/car-racing/CarMeshes.d.ts +44 -0
  454. package/lib/typescript/src/games/car-racing/CarRacing.d.ts +2 -1
  455. package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +60 -29
  456. package/lib/typescript/src/games/car-racing/CarRacingFacade.d.ts +5 -0
  457. package/lib/typescript/src/games/car-racing/CarRacingGame.d.ts +96 -0
  458. package/lib/typescript/src/games/car-racing/CarRacingScene.d.ts +97 -0
  459. package/lib/typescript/src/games/car-racing/CarRacingScenery.d.ts +22 -0
  460. package/lib/typescript/src/games/chameleon-run/ChameleonRun.d.ts +1 -3
  461. package/lib/typescript/src/games/chameleon-run/ChameleonRunBackdrop.d.ts +14 -0
  462. package/lib/typescript/src/games/chameleon-run/ChameleonRunConstants.d.ts +44 -42
  463. package/lib/typescript/src/games/chameleon-run/ChameleonRunGame.d.ts +60 -0
  464. package/lib/typescript/src/games/chameleon-run/ChameleonRunMeshes.d.ts +20 -0
  465. package/lib/typescript/src/games/chameleon-run/ChameleonRunRules.d.ts +52 -0
  466. package/lib/typescript/src/games/chameleon-run/ChameleonRunScene.d.ts +44 -0
  467. package/lib/typescript/src/games/checkers/Checkers.d.ts +1 -3
  468. package/lib/typescript/src/games/checkers/CheckersAI.d.ts +11 -0
  469. package/lib/typescript/src/games/checkers/CheckersConstants.d.ts +32 -72
  470. package/lib/typescript/src/games/checkers/CheckersGame.d.ts +56 -0
  471. package/lib/typescript/src/games/checkers/CheckersRules.d.ts +48 -0
  472. package/lib/typescript/src/games/checkers/CheckersScene.d.ts +41 -0
  473. package/lib/typescript/src/games/color-switch/ColorSwitch.d.ts +1 -3
  474. package/lib/typescript/src/games/color-switch/ColorSwitchConstants.d.ts +27 -31
  475. package/lib/typescript/src/games/color-switch/ColorSwitchGame.d.ts +61 -0
  476. package/lib/typescript/src/games/color-switch/ColorSwitchScene.d.ts +43 -0
  477. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts +1 -3
  478. package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts +37 -44
  479. package/lib/typescript/src/games/colors-sort/ColorsSortGame.d.ts +41 -0
  480. package/lib/typescript/src/games/colors-sort/ColorsSortScene.d.ts +33 -0
  481. package/lib/typescript/src/games/connect-em-all/ConnectEmAll.d.ts +1 -3
  482. package/lib/typescript/src/games/connect-em-all/ConnectEmAllConstants.d.ts +43 -17
  483. package/lib/typescript/src/games/connect-em-all/ConnectEmAllGame.d.ts +54 -0
  484. package/lib/typescript/src/games/connect-em-all/ConnectEmAllScene.d.ts +49 -0
  485. package/lib/typescript/src/games/crossy-road/CrossyRoad.d.ts +1 -3
  486. package/lib/typescript/src/games/crossy-road/CrossyRoadCamera.d.ts +14 -0
  487. package/lib/typescript/src/games/crossy-road/CrossyRoadConstants.d.ts +82 -50
  488. package/lib/typescript/src/games/crossy-road/CrossyRoadGame.d.ts +64 -0
  489. package/lib/typescript/src/games/crossy-road/CrossyRoadMeshes.d.ts +16 -0
  490. package/lib/typescript/src/games/crossy-road/CrossyRoadPerson.d.ts +10 -0
  491. package/lib/typescript/src/games/crossy-road/CrossyRoadRules.d.ts +36 -0
  492. package/lib/typescript/src/games/crossy-road/CrossyRoadScene.d.ts +38 -0
  493. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +1 -3
  494. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +48 -72
  495. package/lib/typescript/src/games/dino-jump/DinoJumpGame.d.ts +60 -0
  496. package/lib/typescript/src/games/dino-jump/DinoJumpScene.d.ts +35 -0
  497. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxes.d.ts +1 -3
  498. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesConstants.d.ts +31 -36
  499. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesGame.d.ts +44 -0
  500. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesScene.d.ts +31 -0
  501. package/lib/typescript/src/games/falling-sticks/FallingSticks.d.ts +1 -3
  502. package/lib/typescript/src/games/falling-sticks/FallingSticksConstants.d.ts +31 -43
  503. package/lib/typescript/src/games/falling-sticks/FallingSticksGame.d.ts +42 -0
  504. package/lib/typescript/src/games/falling-sticks/FallingSticksRules.d.ts +36 -0
  505. package/lib/typescript/src/games/falling-sticks/FallingSticksScene.d.ts +26 -0
  506. package/lib/typescript/src/games/find-different-number/FindDifferentNumber.d.ts +1 -3
  507. package/lib/typescript/src/games/find-different-number/FindDifferentNumberConstants.d.ts +33 -29
  508. package/lib/typescript/src/games/find-different-number/FindDifferentNumberGame.d.ts +43 -0
  509. package/lib/typescript/src/games/find-different-number/FindDifferentNumberRules.d.ts +8 -0
  510. package/lib/typescript/src/games/find-different-number/FindDifferentNumberScene.d.ts +31 -0
  511. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +1 -3
  512. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +39 -35
  513. package/lib/typescript/src/games/flappy-bird/FlappyBirdGame.d.ts +66 -0
  514. package/lib/typescript/src/games/flappy-bird/FlappyBirdScene.d.ts +41 -0
  515. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +1 -3
  516. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +71 -44
  517. package/lib/typescript/src/games/fruit-merger/FruitMergerGame.d.ts +63 -0
  518. package/lib/typescript/src/games/fruit-merger/FruitMergerRules.d.ts +39 -0
  519. package/lib/typescript/src/games/fruit-merger/FruitMergerScene.d.ts +49 -0
  520. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +1 -3
  521. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +51 -76
  522. package/lib/typescript/src/games/fruit-ninja/FruitNinjaGame.d.ts +76 -0
  523. package/lib/typescript/src/games/fruit-ninja/FruitNinjaScene.d.ts +52 -0
  524. package/lib/typescript/src/games/fruit-ninja/FruitNinjaWorld.d.ts +8 -0
  525. package/lib/typescript/src/games/game-2048/Game2048.d.ts +1 -3
  526. package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +25 -120
  527. package/lib/typescript/src/games/game-2048/Game2048Game.d.ts +45 -0
  528. package/lib/typescript/src/games/game-2048/Game2048Rules.d.ts +32 -0
  529. package/lib/typescript/src/games/game-2048/Game2048Scene.d.ts +34 -0
  530. package/lib/typescript/src/games/knife-hit/KnifeHit.d.ts +1 -3
  531. package/lib/typescript/src/games/knife-hit/KnifeHitConstants.d.ts +41 -49
  532. package/lib/typescript/src/games/knife-hit/KnifeHitGame.d.ts +49 -0
  533. package/lib/typescript/src/games/knife-hit/KnifeHitScene.d.ts +37 -0
  534. package/lib/typescript/src/games/ludo-king/LudoKing.d.ts +1 -3
  535. package/lib/typescript/src/games/ludo-king/LudoKingConstants.d.ts +50 -28
  536. package/lib/typescript/src/games/ludo-king/LudoKingGame.d.ts +40 -0
  537. package/lib/typescript/src/games/ludo-king/LudoKingRules.d.ts +42 -0
  538. package/lib/typescript/src/games/ludo-king/LudoKingScene.d.ts +53 -0
  539. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +1 -3
  540. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +34 -10
  541. package/lib/typescript/src/games/maze-runner/MazeRunnerGame.d.ts +44 -0
  542. package/lib/typescript/src/games/maze-runner/MazeRunnerRules.d.ts +34 -0
  543. package/lib/typescript/src/games/maze-runner/MazeRunnerScene.d.ts +29 -0
  544. package/lib/typescript/src/games/memory-match/MemoryMatch.d.ts +1 -3
  545. package/lib/typescript/src/games/memory-match/MemoryMatchConstants.d.ts +42 -42
  546. package/lib/typescript/src/games/memory-match/MemoryMatchGame.d.ts +53 -0
  547. package/lib/typescript/src/games/memory-match/MemoryMatchRules.d.ts +14 -0
  548. package/lib/typescript/src/games/memory-match/MemoryMatchScene.d.ts +35 -0
  549. package/lib/typescript/src/games/mine-sweeper/MineSweeper.d.ts +1 -3
  550. package/lib/typescript/src/games/mine-sweeper/MineSweeperConstants.d.ts +43 -82
  551. package/lib/typescript/src/games/mine-sweeper/MineSweeperGame.d.ts +59 -0
  552. package/lib/typescript/src/games/mine-sweeper/MineSweeperRules.d.ts +18 -0
  553. package/lib/typescript/src/games/mine-sweeper/MineSweeperScene.d.ts +23 -0
  554. package/lib/typescript/src/games/mob-control/MobControl.d.ts +1 -3
  555. package/lib/typescript/src/games/mob-control/MobControlConstants.d.ts +99 -85
  556. package/lib/typescript/src/games/mob-control/MobControlGame.d.ts +45 -0
  557. package/lib/typescript/src/games/mob-control/MobControlMeshes.d.ts +2 -0
  558. package/lib/typescript/src/games/mob-control/MobControlRenderer.d.ts +20 -0
  559. package/lib/typescript/src/games/mob-control/MobControlRules.d.ts +68 -0
  560. package/lib/typescript/src/games/mob-control/MobControlScene.d.ts +58 -0
  561. package/lib/typescript/src/games/number-search/NumberSearch.d.ts +1 -3
  562. package/lib/typescript/src/games/number-search/NumberSearchNumbers.d.ts +1 -0
  563. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBolts.d.ts +1 -3
  564. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsConstants.d.ts +27 -79
  565. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsGame.d.ts +56 -0
  566. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsRules.d.ts +65 -0
  567. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsScene.d.ts +48 -0
  568. package/lib/typescript/src/games/pac-man/PacMan.d.ts +1 -3
  569. package/lib/typescript/src/games/pac-man/PacManConstants.d.ts +66 -106
  570. package/lib/typescript/src/games/pac-man/PacManGame.d.ts +48 -0
  571. package/lib/typescript/src/games/pac-man/PacManRules.d.ts +52 -0
  572. package/lib/typescript/src/games/pac-man/PacManScene.d.ts +44 -0
  573. package/lib/typescript/src/games/paper-io/PaperIo.d.ts +1 -3
  574. package/lib/typescript/src/games/paper-io/PaperIoConstants.d.ts +60 -40
  575. package/lib/typescript/src/games/paper-io/PaperIoGame.d.ts +49 -0
  576. package/lib/typescript/src/games/paper-io/PaperIoMeshes.d.ts +13 -0
  577. package/lib/typescript/src/games/paper-io/PaperIoRules.d.ts +71 -0
  578. package/lib/typescript/src/games/paper-io/PaperIoScene.d.ts +39 -0
  579. package/lib/typescript/src/games/penguin-run/PenguinMeshes.d.ts +9 -0
  580. package/lib/typescript/src/games/penguin-run/PenguinModel.d.ts +42 -0
  581. package/lib/typescript/src/games/penguin-run/PenguinRun.d.ts +1 -0
  582. package/lib/typescript/src/games/penguin-run/PenguinRunConstants.d.ts +58 -0
  583. package/lib/typescript/src/games/penguin-run/PenguinRunGame.d.ts +64 -0
  584. package/lib/typescript/src/games/penguin-run/PenguinRunScene.d.ts +65 -0
  585. package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +1 -3
  586. package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +23 -45
  587. package/lib/typescript/src/games/perfect-circle/PerfectCircleGame.d.ts +40 -0
  588. package/lib/typescript/src/games/perfect-circle/PerfectCircleRules.d.ts +55 -0
  589. package/lib/typescript/src/games/perfect-circle/PerfectCircleScene.d.ts +32 -0
  590. package/lib/typescript/src/games/pipe-connect/PipeConnect.d.ts +1 -3
  591. package/lib/typescript/src/games/pipe-connect/PipeConnectConstants.d.ts +36 -32
  592. package/lib/typescript/src/games/pipe-connect/PipeConnectGame.d.ts +40 -0
  593. package/lib/typescript/src/games/pipe-connect/PipeConnectRules.d.ts +16 -0
  594. package/lib/typescript/src/games/pipe-connect/PipeConnectScene.d.ts +28 -0
  595. package/lib/typescript/src/games/play-with-tua/PlayWithTua.d.ts +2 -0
  596. package/lib/typescript/src/games/play-with-tua/PlayWithTuaConstants.d.ts +64 -0
  597. package/lib/typescript/src/games/play-with-tua/PlayWithTuaGame.d.ts +34 -0
  598. package/lib/typescript/src/games/play-with-tua/PlayWithTuaModel.d.ts +9 -0
  599. package/lib/typescript/src/games/play-with-tua/PlayWithTuaScene.d.ts +13 -0
  600. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +1 -4
  601. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +25 -36
  602. package/lib/typescript/src/games/popit-fidget/PopitFidgetGame.d.ts +37 -0
  603. package/lib/typescript/src/games/popit-fidget/PopitFidgetScene.d.ts +19 -0
  604. package/lib/typescript/src/games/reversi/Reversi.d.ts +1 -3
  605. package/lib/typescript/src/games/reversi/ReversiConstants.d.ts +31 -62
  606. package/lib/typescript/src/games/reversi/ReversiGame.d.ts +54 -0
  607. package/lib/typescript/src/games/reversi/ReversiRules.d.ts +22 -0
  608. package/lib/typescript/src/games/reversi/ReversiScene.d.ts +27 -0
  609. package/lib/typescript/src/games/search-grid/SearchGrid.d.ts +20 -0
  610. package/lib/typescript/src/games/search-grid/SearchGridConstants.d.ts +60 -0
  611. package/lib/typescript/src/games/search-grid/SearchGridGame.d.ts +52 -0
  612. package/lib/typescript/src/games/search-grid/SearchGridScene.d.ts +43 -0
  613. package/lib/typescript/src/games/shared/BackdropCard.d.ts +2 -0
  614. package/lib/typescript/src/games/shared/EngineBackdrop.d.ts +19 -0
  615. package/lib/typescript/src/games/shared/EngineBlasts.d.ts +26 -0
  616. package/lib/typescript/src/games/shared/EngineBlocks.d.ts +19 -0
  617. package/lib/typescript/src/games/shared/EngineControlText.d.ts +2 -0
  618. package/lib/typescript/src/games/shared/EngineDice.d.ts +24 -0
  619. package/lib/typescript/src/games/shared/EngineFootprint.d.ts +17 -0
  620. package/lib/typescript/src/games/shared/EngineFruits.d.ts +27 -0
  621. package/lib/typescript/src/games/shared/EngineGameLoader.d.ts +4 -0
  622. package/lib/typescript/src/games/shared/EngineGameScreen.d.ts +48 -0
  623. package/lib/typescript/src/games/shared/EngineGameWidth.d.ts +3 -0
  624. package/lib/typescript/src/games/shared/EngineGameWidth.web.d.ts +3 -0
  625. package/lib/typescript/src/games/shared/EngineGlyphs.d.ts +15 -0
  626. package/lib/typescript/src/games/shared/EngineHud.d.ts +138 -0
  627. package/lib/typescript/src/games/shared/EngineLoading.d.ts +77 -0
  628. package/lib/typescript/src/games/shared/EngineMeadow.d.ts +90 -0
  629. package/lib/typescript/src/games/shared/EngineMeshCache.d.ts +3 -0
  630. package/lib/typescript/src/games/shared/EngineMeshes.d.ts +3 -0
  631. package/lib/typescript/src/games/shared/EngineRacingChase.d.ts +11 -0
  632. package/lib/typescript/src/games/shared/EngineRacingHandling.d.ts +15 -0
  633. package/lib/typescript/src/games/shared/EngineReadyContext.d.ts +2 -0
  634. package/lib/typescript/src/games/shared/EngineTilt.d.ts +19 -0
  635. package/lib/typescript/src/games/shared/EngineTouchSurface.d.ts +20 -0
  636. package/lib/typescript/src/games/shared/EngineUtils.d.ts +18 -0
  637. package/lib/typescript/src/games/shared/GameActivity.d.ts +3 -0
  638. package/lib/typescript/src/games/shared/GameLoading.d.ts +14 -0
  639. package/lib/typescript/src/games/shared/GameLoadingTransition.d.ts +9 -0
  640. package/lib/typescript/src/games/shared/ProceduralCacheVersion.d.ts +1 -0
  641. package/lib/typescript/src/games/shared/useEngineGame.d.ts +69 -0
  642. package/lib/typescript/src/games/shared/useGameResource.d.ts +2 -0
  643. package/lib/typescript/src/games/shared/useLiveState.d.ts +4 -0
  644. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +1 -3
  645. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +32 -40
  646. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersGame.d.ts +48 -0
  647. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersRules.d.ts +22 -0
  648. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersScene.d.ts +30 -0
  649. package/lib/typescript/src/games/snake-3d/Snake3D.d.ts +1 -3
  650. package/lib/typescript/src/games/snake-3d/Snake3DConstants.d.ts +31 -68
  651. package/lib/typescript/src/games/snake-3d/Snake3DGame.d.ts +42 -0
  652. package/lib/typescript/src/games/snake-3d/Snake3DMotion.d.ts +3 -0
  653. package/lib/typescript/src/games/snake-3d/Snake3DRules.d.ts +42 -0
  654. package/lib/typescript/src/games/snake-3d/Snake3DScene.d.ts +35 -0
  655. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLadders.d.ts +1 -3
  656. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersConstants.d.ts +58 -50
  657. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersGame.d.ts +45 -0
  658. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersScene.d.ts +50 -0
  659. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +1 -3
  660. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +33 -23
  661. package/lib/typescript/src/games/space-fighter/SpaceFighterGame.d.ts +58 -0
  662. package/lib/typescript/src/games/space-fighter/SpaceFighterScene.d.ts +51 -0
  663. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaire.d.ts +1 -3
  664. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireConstants.d.ts +52 -35
  665. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireGame.d.ts +67 -0
  666. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireRules.d.ts +39 -0
  667. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireScene.d.ts +60 -0
  668. package/lib/typescript/src/games/stack-tower/StackTower.d.ts +1 -3
  669. package/lib/typescript/src/games/stack-tower/StackTowerConstants.d.ts +31 -23
  670. package/lib/typescript/src/games/stack-tower/StackTowerGame.d.ts +58 -0
  671. package/lib/typescript/src/games/stack-tower/StackTowerScene.d.ts +27 -0
  672. package/lib/typescript/src/games/sudoku/Sudoku.d.ts +1 -3
  673. package/lib/typescript/src/games/sudoku/SudokuConstants.d.ts +50 -55
  674. package/lib/typescript/src/games/sudoku/SudokuGame.d.ts +56 -0
  675. package/lib/typescript/src/games/sudoku/SudokuRules.d.ts +23 -0
  676. package/lib/typescript/src/games/sudoku/SudokuScene.d.ts +44 -0
  677. package/lib/typescript/src/games/tangram/Tangram.d.ts +1 -3
  678. package/lib/typescript/src/games/tangram/TangramConstants.d.ts +33 -52
  679. package/lib/typescript/src/games/tangram/TangramGame.d.ts +68 -0
  680. package/lib/typescript/src/games/tangram/TangramRules.d.ts +61 -0
  681. package/lib/typescript/src/games/tangram/TangramScene.d.ts +42 -0
  682. package/lib/typescript/src/games/tank-1990/Tank1990.d.ts +1 -3
  683. package/lib/typescript/src/games/tank-1990/Tank1990Constants.d.ts +44 -127
  684. package/lib/typescript/src/games/tank-1990/Tank1990Game.d.ts +50 -0
  685. package/lib/typescript/src/games/tank-1990/Tank1990Rules.d.ts +67 -0
  686. package/lib/typescript/src/games/tank-1990/Tank1990Scene.d.ts +38 -0
  687. package/lib/typescript/src/games/tic-tac-toe/TicTacToe.d.ts +1 -3
  688. package/lib/typescript/src/games/tic-tac-toe/TicTacToeConstants.d.ts +35 -72
  689. package/lib/typescript/src/games/tic-tac-toe/TicTacToeGame.d.ts +54 -0
  690. package/lib/typescript/src/games/tic-tac-toe/TicTacToeRules.d.ts +10 -0
  691. package/lib/typescript/src/games/tic-tac-toe/TicTacToeScene.d.ts +26 -0
  692. package/lib/typescript/src/games/tile-home/TileHome.d.ts +1 -3
  693. package/lib/typescript/src/games/tile-home/TileHomeConstants.d.ts +72 -70
  694. package/lib/typescript/src/games/tile-home/TileHomeGame.d.ts +72 -0
  695. package/lib/typescript/src/games/tile-home/TileHomeScene.d.ts +28 -0
  696. package/lib/typescript/src/games/treasure-hunt/TreasureHunt.d.ts +3 -0
  697. package/lib/typescript/src/games/treasure-hunt/TreasureHuntConstants.d.ts +144 -0
  698. package/lib/typescript/src/games/treasure-hunt/TreasureHuntControls.d.ts +75 -0
  699. package/lib/typescript/src/games/treasure-hunt/TreasureHuntGame.d.ts +41 -0
  700. package/lib/typescript/src/games/treasure-hunt/TreasureHuntMeshes.d.ts +26 -0
  701. package/lib/typescript/src/games/treasure-hunt/TreasureHuntModel.d.ts +57 -0
  702. package/lib/typescript/src/games/treasure-hunt/TreasureHuntRules.d.ts +198 -0
  703. package/lib/typescript/src/games/treasure-hunt/TreasureHuntScene.d.ts +40 -0
  704. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +1 -3
  705. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +35 -45
  706. package/lib/typescript/src/games/whack-a-mole/WhackAMoleGame.d.ts +51 -0
  707. package/lib/typescript/src/games/whack-a-mole/WhackAMoleScene.d.ts +31 -0
  708. package/lib/typescript/src/games/word-search/WordSearch.d.ts +1 -3
  709. package/lib/typescript/src/games/word-search/WordSearchWords.d.ts +1 -0
  710. package/lib/typescript/src/helpers/GamePatternData.d.ts +46 -0
  711. package/lib/typescript/src/helpers/GameSettingsModal.d.ts +1 -1
  712. package/lib/typescript/src/helpers/GameTheme.d.ts +18 -0
  713. package/lib/typescript/src/helpers/IconPaths.d.ts +4 -0
  714. package/lib/typescript/src/helpers/index.d.ts +1 -19
  715. package/lib/typescript/src/index.d.ts +3 -0
  716. package/lib/typescript/src/services/GameAssetLoader.d.ts +32 -0
  717. package/lib/typescript/src/services/GameAssets.d.ts +11 -0
  718. package/lib/typescript/src/services/GameLoaders.d.ts +18 -0
  719. package/lib/typescript/src/services/GamesConstants.d.ts +11 -0
  720. package/lib/typescript/src/services/GamesMetadata.d.ts +2 -0
  721. package/lib/typescript/src/services/HapticsService.d.ts +1 -1
  722. package/lib/typescript/src/services/SfxSources.d.ts +79 -0
  723. package/lib/typescript/src/services/SoundsService.d.ts +487 -1566
  724. package/lib/typescript/src/services/ThemeService.d.ts +117 -0
  725. package/lib/typescript/src/services/UtilsService.d.ts +20 -2
  726. package/lib/typescript/src/services/index.d.ts +3 -0
  727. package/lib/web/assets/005ea2045b17-explorer.glb +0 -0
  728. package/lib/web/assets/01e2f0a0bbf6-hurt.wav +0 -0
  729. package/lib/web/assets/01fc0ecf658c-explorer-atlas.png +0 -0
  730. package/lib/web/assets/029329b2c7c0-asphalt.png +0 -0
  731. package/lib/web/assets/0376bda32be3-robot.wav +0 -0
  732. package/lib/web/assets/0719fb0bb38e-soft_glow.png +0 -0
  733. package/lib/web/assets/0b21278bffba-boing.wav +0 -0
  734. package/lib/web/assets/1333c9d1273c-flip_disc.wav +0 -0
  735. package/lib/web/assets/15785f62ee5f-time_up.wav +0 -0
  736. package/lib/web/assets/177f00502e08-bonus.wav +0 -0
  737. package/lib/web/assets/19e47dcfda1f-pling.wav +0 -0
  738. package/lib/web/assets/1a677e0f7f6c-laugh.wav +0 -0
  739. package/lib/web/assets/1ad2914478b1-eat.wav +0 -0
  740. package/lib/web/assets/1b0d703ddd1a-dance.wav +0 -0
  741. package/lib/web/assets/1e4330fddd74-chime.wav +0 -0
  742. package/lib/web/assets/2432a97b0af1-cannon.wav +0 -0
  743. package/lib/web/assets/2574370d6aa0-blocked.wav +0 -0
  744. package/lib/web/assets/2699065037ad-select.wav +0 -0
  745. package/lib/web/assets/28d30f53ad73-ladder.wav +0 -0
  746. package/lib/web/assets/2c1ec05270b2-point.wav +0 -0
  747. package/lib/web/assets/2e1dd99a0213-tick.wav +0 -0
  748. package/lib/web/assets/3084575cecdb-card_flip.wav +0 -0
  749. package/lib/web/assets/308bc31b6af5-engine.wav +0 -0
  750. package/lib/web/assets/336d63b739b5-combo.wav +0 -0
  751. package/lib/web/assets/3a369e2596e4-clash.wav +0 -0
  752. package/lib/web/assets/3a816e20212f-capture.wav +0 -0
  753. package/lib/web/assets/40240217810a-nitro.wav +0 -0
  754. package/lib/web/assets/46edaa54d1ea-crunch.wav +0 -0
  755. package/lib/web/assets/501994226995-coin.wav +0 -0
  756. package/lib/web/assets/5525d7f6a4b8-rotate.wav +0 -0
  757. package/lib/web/assets/5e816e1f0929-dice_roll.wav +0 -0
  758. package/lib/web/assets/60e2dec3cf41-deselect.wav +0 -0
  759. package/lib/web/assets/6ab86ea29e5c-six.wav +0 -0
  760. package/lib/web/assets/6da3b101926d-merge.wav +0 -0
  761. package/lib/web/assets/6e686dea513c-bark.jpg +0 -0
  762. package/lib/web/assets/6ff9a6a13714-limestone.jpg +0 -0
  763. package/lib/web/assets/735c4a1cd22e-invalid.wav +0 -0
  764. package/lib/web/assets/73f75c35ff5d-snake.wav +0 -0
  765. package/lib/web/assets/7506e3efe264-catch.wav +0 -0
  766. package/lib/web/assets/76493a2ada2d-ad_bolt.png +0 -0
  767. package/lib/web/assets/793abe620201-card_place.wav +0 -0
  768. package/lib/web/assets/7da09c57f52d-facade.png +0 -0
  769. package/lib/web/assets/7e1a902176f6-pine.png +0 -0
  770. package/lib/web/assets/7eb943b85c21-play-with-tua.glb +0 -0
  771. package/lib/web/assets/837d43c06dba-ad_bubbles.png +0 -0
  772. package/lib/web/assets/84f1a7dfa368-game_over.wav +0 -0
  773. package/lib/web/assets/850e26ce3b0a-flap.wav +0 -0
  774. package/lib/web/assets/854b31683cb2-draw.wav +0 -0
  775. package/lib/web/assets/8616150393b7-error.wav +0 -0
  776. package/lib/web/assets/87cc6d503ec6-river.jpg +0 -0
  777. package/lib/web/assets/88755845922c-hop.wav +0 -0
  778. package/lib/web/assets/8ec8f469492d-chomp_alt.wav +0 -0
  779. package/lib/web/assets/8f17f89b138c-pew.wav +0 -0
  780. package/lib/web/assets/9210a24472d1-place.wav +0 -0
  781. package/lib/web/assets/930d833ebf89-splash.wav +0 -0
  782. package/lib/web/assets/970f7c59265d-swoosh.wav +0 -0
  783. package/lib/web/assets/9900b8d1b6ad-flag.wav +0 -0
  784. package/lib/web/assets/9ab04403898b-clang.wav +0 -0
  785. package/lib/web/assets/9d8b97a10d45-drop.wav +0 -0
  786. package/lib/web/assets/9d9c02ddc7ed-boom.wav +0 -0
  787. package/lib/web/assets/9e1b5114d56d-pop_soft.wav +0 -0
  788. package/lib/web/assets/a01f22d6dbb3-thud.wav +0 -0
  789. package/lib/web/assets/a44a1cf1a1a8-bump.wav +0 -0
  790. package/lib/web/assets/a76940a48c68-hit.wav +0 -0
  791. package/lib/web/assets/a98ddb724460-leaves.png +0 -0
  792. package/lib/web/assets/aa0960e8bee6-footstep_run.wav +0 -0
  793. package/lib/web/assets/aa570c9d3e15-star.wav +0 -0
  794. package/lib/web/assets/aacb999f3c49-tock.wav +0 -0
  795. package/lib/web/assets/aae0c16c5e89-reveal.wav +0 -0
  796. package/lib/web/assets/ab37cd128509-click.wav +0 -0
  797. package/lib/web/assets/b0bc66f49005-warning.wav +0 -0
  798. package/lib/web/assets/b1edd756ac43-zap.wav +0 -0
  799. package/lib/web/assets/b3894545cf71-slice.wav +0 -0
  800. package/lib/web/assets/b3c6225d055a-meadow.jpg +0 -0
  801. package/lib/web/assets/b60ca65cdfcb-gate.wav +0 -0
  802. package/lib/web/assets/b8900bb2c5c7-win.wav +0 -0
  803. package/lib/web/assets/baff6feda846-lose.wav +0 -0
  804. package/lib/web/assets/bed31305d60d-ad_chevrons.png +0 -0
  805. package/lib/web/assets/c26f4a624e7d-shuffle.wav +0 -0
  806. package/lib/web/assets/c3a9edfad195-die.wav +0 -0
  807. package/lib/web/assets/c4aa9d773f2a-footstep_walk.wav +0 -0
  808. package/lib/web/assets/c5ab3ff0003f-crash.wav +0 -0
  809. package/lib/web/assets/c5eb07deddd4-start.wav +0 -0
  810. package/lib/web/assets/c6c58d9ae452-pop.wav +0 -0
  811. package/lib/web/assets/cea48c3cd9c7-balloon_pop.wav +0 -0
  812. package/lib/web/assets/d15591767778-tap.wav +0 -0
  813. package/lib/web/assets/d1781a52234f-slide.wav +0 -0
  814. package/lib/web/assets/d3bf2d9f793b-snap.wav +0 -0
  815. package/lib/web/assets/d8f59ebd3537-jump.wav +0 -0
  816. package/lib/web/assets/dafea2f28854-power_up.wav +0 -0
  817. package/lib/web/assets/e2e7f5ae2d1b-whoosh.wav +0 -0
  818. package/lib/web/assets/e2f90a23e1bd-chomp.wav +0 -0
  819. package/lib/web/assets/e454e56df89a-clack.wav +0 -0
  820. package/lib/web/assets/e8cbc2b88bc4-Inter-SemiBold.ttf +0 -0
  821. package/lib/web/assets/ed6496b891fc-land.wav +0 -0
  822. package/lib/web/assets/f21920200a81-thunk.wav +0 -0
  823. package/lib/web/assets/f753b43be89d-whack.wav +0 -0
  824. package/lib/web/assets/f798c4b5cf4d-miss.wav +0 -0
  825. package/lib/web/assets/fbe299716916-grass.png +0 -0
  826. package/lib/web/chunk-52ez2s9z.js +15 -0
  827. package/lib/web/chunk-8675t224.js +1 -0
  828. package/lib/web/index.js +2 -0
  829. package/lib/web/package.json +1 -0
  830. package/lib/web/services.js +2 -0
  831. package/package.json +94 -73
  832. package/src/assets/fonts/Inter-SemiBold.ttf +0 -0
  833. package/src/assets/models/explorer/explorer.glb +0 -0
  834. package/src/assets/models/explorer/params.json +51 -0
  835. package/src/assets/models/explorer/source.json +222 -0
  836. package/src/assets/models/play-with-tua/play-with-tua.glb +0 -0
  837. package/src/assets/models/play-with-tua/sources.json +141 -0
  838. package/src/assets/sfx/balloon_pop.wav +0 -0
  839. package/src/assets/sfx/blocked.wav +0 -0
  840. package/src/assets/sfx/boing.wav +0 -0
  841. package/src/assets/sfx/bonus.wav +0 -0
  842. package/src/assets/sfx/boom.wav +0 -0
  843. package/src/assets/sfx/bump.wav +0 -0
  844. package/src/assets/sfx/cannon.wav +0 -0
  845. package/src/assets/sfx/capture.wav +0 -0
  846. package/src/assets/sfx/card_flip.wav +0 -0
  847. package/src/assets/sfx/card_place.wav +0 -0
  848. package/src/assets/sfx/catch.wav +0 -0
  849. package/src/assets/sfx/chime.wav +0 -0
  850. package/src/assets/sfx/chomp.wav +0 -0
  851. package/src/assets/sfx/chomp_alt.wav +0 -0
  852. package/src/assets/sfx/clack.wav +0 -0
  853. package/src/assets/sfx/clang.wav +0 -0
  854. package/src/assets/sfx/clash.wav +0 -0
  855. package/src/assets/sfx/click.wav +0 -0
  856. package/src/assets/sfx/coin.wav +0 -0
  857. package/src/assets/sfx/combo.wav +0 -0
  858. package/src/assets/sfx/crash.wav +0 -0
  859. package/src/assets/sfx/crunch.wav +0 -0
  860. package/src/assets/sfx/dance.wav +0 -0
  861. package/src/assets/sfx/deselect.wav +0 -0
  862. package/src/assets/sfx/dice_roll.wav +0 -0
  863. package/src/assets/sfx/die.wav +0 -0
  864. package/src/assets/sfx/draw.wav +0 -0
  865. package/src/assets/sfx/drop.wav +0 -0
  866. package/src/assets/sfx/eat.wav +0 -0
  867. package/src/assets/sfx/engine.wav +0 -0
  868. package/src/assets/sfx/error.wav +0 -0
  869. package/src/assets/sfx/flag.wav +0 -0
  870. package/src/assets/sfx/flap.wav +0 -0
  871. package/src/assets/sfx/flip_disc.wav +0 -0
  872. package/src/assets/sfx/footstep_run.wav +0 -0
  873. package/src/assets/sfx/footstep_walk.wav +0 -0
  874. package/src/assets/sfx/game_over.wav +0 -0
  875. package/src/assets/sfx/gate.wav +0 -0
  876. package/src/assets/sfx/hit.wav +0 -0
  877. package/src/assets/sfx/hop.wav +0 -0
  878. package/src/assets/sfx/hurt.wav +0 -0
  879. package/src/assets/sfx/invalid.wav +0 -0
  880. package/src/assets/sfx/jump.wav +0 -0
  881. package/src/assets/sfx/ladder.wav +0 -0
  882. package/src/assets/sfx/land.wav +0 -0
  883. package/src/assets/sfx/laugh.wav +0 -0
  884. package/src/assets/sfx/lose.wav +0 -0
  885. package/src/assets/sfx/merge.wav +0 -0
  886. package/src/assets/sfx/miss.wav +0 -0
  887. package/src/assets/sfx/nitro.wav +0 -0
  888. package/src/assets/sfx/pew.wav +0 -0
  889. package/src/assets/sfx/place.wav +0 -0
  890. package/src/assets/sfx/pling.wav +0 -0
  891. package/src/assets/sfx/point.wav +0 -0
  892. package/src/assets/sfx/pop.wav +0 -0
  893. package/src/assets/sfx/pop_soft.wav +0 -0
  894. package/src/assets/sfx/power_up.wav +0 -0
  895. package/src/assets/sfx/reveal.wav +0 -0
  896. package/src/assets/sfx/robot.wav +0 -0
  897. package/src/assets/sfx/rotate.wav +0 -0
  898. package/src/assets/sfx/run_steps.wav +0 -0
  899. package/src/assets/sfx/select.wav +0 -0
  900. package/src/assets/sfx/shuffle.wav +0 -0
  901. package/src/assets/sfx/six.wav +0 -0
  902. package/src/assets/sfx/slice.wav +0 -0
  903. package/src/assets/sfx/slide.wav +0 -0
  904. package/src/assets/sfx/snake.wav +0 -0
  905. package/src/assets/sfx/snap.wav +0 -0
  906. package/src/assets/sfx/splash.wav +0 -0
  907. package/src/assets/sfx/star.wav +0 -0
  908. package/src/assets/sfx/start.wav +0 -0
  909. package/src/assets/sfx/swoosh.wav +0 -0
  910. package/src/assets/sfx/tap.wav +0 -0
  911. package/src/assets/sfx/thud.wav +0 -0
  912. package/src/assets/sfx/thunk.wav +0 -0
  913. package/src/assets/sfx/tick.wav +0 -0
  914. package/src/assets/sfx/time_up.wav +0 -0
  915. package/src/assets/sfx/tock.wav +0 -0
  916. package/src/assets/sfx/walk_steps.wav +0 -0
  917. package/src/assets/sfx/warning.wav +0 -0
  918. package/src/assets/sfx/whack.wav +0 -0
  919. package/src/assets/sfx/whoosh.wav +0 -0
  920. package/src/assets/sfx/win.wav +0 -0
  921. package/src/assets/sfx/zap.wav +0 -0
  922. package/src/assets/textures/ad_bolt.png +0 -0
  923. package/src/assets/textures/ad_bubbles.png +0 -0
  924. package/src/assets/textures/ad_chevrons.png +0 -0
  925. package/src/assets/textures/asphalt.png +0 -0
  926. package/src/assets/textures/bark.jpg +0 -0
  927. package/src/assets/textures/explorer-atlas.png +0 -0
  928. package/src/assets/textures/facade.png +0 -0
  929. package/src/assets/textures/grass.png +0 -0
  930. package/src/assets/textures/leaves.png +0 -0
  931. package/src/assets/textures/limestone.jpg +0 -0
  932. package/src/assets/textures/meadow.jpg +0 -0
  933. package/src/assets/textures/nature-sources.json +87 -0
  934. package/src/assets/textures/pine.png +0 -0
  935. package/src/assets/textures/river.jpg +0 -0
  936. package/src/assets/textures/soft_glow.png +0 -0
  937. package/src/games/arrows/Arrows.tsx +69 -0
  938. package/src/games/arrows/ArrowsConstants.ts +107 -0
  939. package/src/games/arrows/ArrowsGame.ts +735 -0
  940. package/src/games/arrows/ArrowsScene.ts +395 -0
  941. package/src/games/balloon-blaster/BalloonBlaster.tsx +75 -0
  942. package/src/games/balloon-blaster/BalloonBlasterConstants.ts +79 -0
  943. package/src/games/balloon-blaster/BalloonBlasterGame.ts +287 -0
  944. package/src/games/balloon-blaster/BalloonBlasterPhysics.ts +95 -0
  945. package/src/games/balloon-blaster/BalloonBlasterScene.ts +225 -0
  946. package/src/games/bike-racing/BikeMeshes.ts +273 -0
  947. package/src/games/bike-racing/BikeRacing.tsx +211 -0
  948. package/src/games/bike-racing/BikeRacingConstants.ts +103 -0
  949. package/src/games/bike-racing/BikeRacingGame.ts +557 -0
  950. package/src/games/bike-racing/BikeRacingScene.ts +119 -0
  951. package/src/games/block-blast/BlockBlast.tsx +73 -0
  952. package/src/games/block-blast/BlockBlastConstants.ts +179 -0
  953. package/src/games/block-blast/BlockBlastGame.ts +471 -0
  954. package/src/games/block-blast/BlockBlastScene.ts +156 -0
  955. package/src/games/block-breaker/BlockBreaker.tsx +79 -0
  956. package/src/games/block-breaker/BlockBreakerConstants.ts +139 -0
  957. package/src/games/block-breaker/BlockBreakerGame.ts +459 -0
  958. package/src/games/block-breaker/BlockBreakerScene.ts +257 -0
  959. package/src/games/bluk/Bluk.tsx +82 -0
  960. package/src/games/bluk/BlukConstants.ts +121 -0
  961. package/src/games/bluk/BlukGame.ts +323 -0
  962. package/src/games/bluk/BlukRules.ts +154 -0
  963. package/src/games/bluk/BlukScene.ts +514 -0
  964. package/src/games/bubble-shooter/BubbleShooter.tsx +76 -0
  965. package/src/games/bubble-shooter/BubbleShooterConstants.ts +103 -0
  966. package/src/games/bubble-shooter/BubbleShooterGame.ts +459 -0
  967. package/src/games/bubble-shooter/BubbleShooterScene.ts +158 -0
  968. package/src/games/candy-crush/CandyCrush.tsx +77 -0
  969. package/src/games/candy-crush/CandyCrushConstants.ts +94 -0
  970. package/src/games/candy-crush/CandyCrushGame.ts +477 -0
  971. package/src/games/candy-crush/CandyCrushScene.ts +209 -0
  972. package/src/games/car-racing/CarMeshes.ts +440 -0
  973. package/src/games/car-racing/CarRacing.tsx +211 -0
  974. package/src/games/car-racing/CarRacingConstants.ts +167 -0
  975. package/src/games/car-racing/CarRacingFacade.ts +40 -0
  976. package/src/games/car-racing/CarRacingGame.ts +539 -0
  977. package/src/games/car-racing/CarRacingScene.ts +1026 -0
  978. package/src/games/car-racing/CarRacingScenery.ts +265 -0
  979. package/src/games/chameleon-run/ChameleonRun.tsx +96 -0
  980. package/src/games/chameleon-run/ChameleonRunBackdrop.ts +186 -0
  981. package/src/games/chameleon-run/ChameleonRunConstants.ts +47 -0
  982. package/src/games/chameleon-run/ChameleonRunGame.ts +309 -0
  983. package/src/games/chameleon-run/ChameleonRunMeshes.ts +305 -0
  984. package/src/games/chameleon-run/ChameleonRunRules.ts +252 -0
  985. package/src/games/chameleon-run/ChameleonRunScene.ts +310 -0
  986. package/src/games/checkers/Checkers.tsx +83 -0
  987. package/src/games/checkers/CheckersAI.ts +255 -0
  988. package/src/games/checkers/CheckersConstants.ts +68 -0
  989. package/src/games/checkers/CheckersGame.ts +322 -0
  990. package/src/games/checkers/CheckersRules.ts +167 -0
  991. package/src/games/checkers/CheckersScene.ts +308 -0
  992. package/src/games/color-switch/ColorSwitch.tsx +75 -0
  993. package/src/games/color-switch/ColorSwitchConstants.ts +61 -0
  994. package/src/games/color-switch/ColorSwitchGame.ts +329 -0
  995. package/src/games/color-switch/ColorSwitchScene.ts +220 -0
  996. package/src/games/colors-sort/ColorsSort.tsx +82 -0
  997. package/src/games/colors-sort/ColorsSortConstants.ts +119 -0
  998. package/src/games/colors-sort/ColorsSortGame.ts +246 -0
  999. package/src/games/colors-sort/ColorsSortScene.ts +315 -0
  1000. package/src/games/connect-em-all/ConnectEmAll.tsx +70 -0
  1001. package/src/games/connect-em-all/ConnectEmAllConstants.ts +77 -0
  1002. package/src/games/connect-em-all/ConnectEmAllGame.ts +401 -0
  1003. package/src/games/connect-em-all/ConnectEmAllScene.ts +235 -0
  1004. package/src/games/crossy-road/CrossyRoad.tsx +74 -0
  1005. package/src/games/crossy-road/CrossyRoadCamera.ts +59 -0
  1006. package/src/games/crossy-road/CrossyRoadConstants.ts +132 -0
  1007. package/src/games/crossy-road/CrossyRoadGame.ts +293 -0
  1008. package/src/games/crossy-road/CrossyRoadMeshes.ts +195 -0
  1009. package/src/games/crossy-road/CrossyRoadPerson.ts +198 -0
  1010. package/src/games/crossy-road/CrossyRoadRules.ts +99 -0
  1011. package/src/games/crossy-road/CrossyRoadScene.ts +355 -0
  1012. package/src/games/dino-jump/DinoJump.tsx +77 -0
  1013. package/src/games/dino-jump/DinoJumpConstants.ts +80 -0
  1014. package/src/games/dino-jump/DinoJumpGame.ts +344 -0
  1015. package/src/games/dino-jump/DinoJumpScene.ts +686 -0
  1016. package/src/games/dots-and-boxes/DotsAndBoxes.tsx +83 -0
  1017. package/src/games/dots-and-boxes/DotsAndBoxesConstants.ts +77 -0
  1018. package/src/games/dots-and-boxes/DotsAndBoxesGame.ts +271 -0
  1019. package/src/games/dots-and-boxes/DotsAndBoxesScene.ts +249 -0
  1020. package/src/games/falling-sticks/FallingSticks.tsx +72 -0
  1021. package/src/games/falling-sticks/FallingSticksConstants.ts +62 -0
  1022. package/src/games/falling-sticks/FallingSticksGame.ts +220 -0
  1023. package/src/games/falling-sticks/FallingSticksRules.ts +145 -0
  1024. package/src/games/falling-sticks/FallingSticksScene.ts +245 -0
  1025. package/src/games/find-different-number/FindDifferentNumber.tsx +74 -0
  1026. package/src/games/find-different-number/FindDifferentNumberConstants.ts +74 -0
  1027. package/src/games/find-different-number/FindDifferentNumberGame.ts +174 -0
  1028. package/src/games/find-different-number/FindDifferentNumberRules.ts +43 -0
  1029. package/src/games/find-different-number/FindDifferentNumberScene.ts +193 -0
  1030. package/src/games/flappy-bird/FlappyBird.tsx +73 -0
  1031. package/src/games/flappy-bird/FlappyBirdConstants.ts +95 -0
  1032. package/src/games/flappy-bird/FlappyBirdGame.ts +375 -0
  1033. package/src/games/flappy-bird/FlappyBirdScene.ts +630 -0
  1034. package/src/games/fruit-merger/FruitMerger.tsx +73 -0
  1035. package/src/games/fruit-merger/FruitMergerConstants.ts +102 -0
  1036. package/src/games/fruit-merger/FruitMergerGame.ts +285 -0
  1037. package/src/games/fruit-merger/FruitMergerRules.ts +286 -0
  1038. package/src/games/fruit-merger/FruitMergerScene.ts +498 -0
  1039. package/src/games/fruit-ninja/FruitNinja.tsx +129 -0
  1040. package/src/games/fruit-ninja/FruitNinjaConstants.ts +107 -0
  1041. package/src/games/fruit-ninja/FruitNinjaGame.ts +391 -0
  1042. package/src/games/fruit-ninja/FruitNinjaScene.ts +319 -0
  1043. package/src/games/fruit-ninja/FruitNinjaWorld.ts +17 -0
  1044. package/src/games/game-2048/Game2048.tsx +84 -0
  1045. package/src/games/game-2048/Game2048Constants.ts +68 -0
  1046. package/src/games/game-2048/Game2048Game.ts +181 -0
  1047. package/src/games/game-2048/Game2048Rules.ts +101 -0
  1048. package/src/games/game-2048/Game2048Scene.ts +206 -0
  1049. package/src/games/knife-hit/KnifeHit.tsx +78 -0
  1050. package/src/games/knife-hit/KnifeHitConstants.ts +89 -0
  1051. package/src/games/knife-hit/KnifeHitGame.ts +264 -0
  1052. package/src/games/knife-hit/KnifeHitScene.ts +360 -0
  1053. package/src/games/ludo-king/LudoKing.tsx +86 -0
  1054. package/src/games/ludo-king/LudoKingConstants.ts +212 -0
  1055. package/src/games/ludo-king/LudoKingGame.ts +326 -0
  1056. package/src/games/ludo-king/LudoKingRules.ts +143 -0
  1057. package/src/games/ludo-king/LudoKingScene.ts +397 -0
  1058. package/src/games/maze-runner/MazeRunner.tsx +88 -0
  1059. package/src/games/maze-runner/MazeRunnerConstants.ts +65 -0
  1060. package/src/games/maze-runner/MazeRunnerGame.ts +176 -0
  1061. package/src/games/maze-runner/MazeRunnerRules.ts +161 -0
  1062. package/src/games/maze-runner/MazeRunnerScene.ts +245 -0
  1063. package/src/games/memory-match/MemoryMatch.tsx +77 -0
  1064. package/src/games/memory-match/MemoryMatchConstants.ts +105 -0
  1065. package/src/games/memory-match/MemoryMatchGame.ts +222 -0
  1066. package/src/games/memory-match/MemoryMatchRules.ts +38 -0
  1067. package/src/games/memory-match/MemoryMatchScene.ts +268 -0
  1068. package/src/games/mine-sweeper/MineSweeper.tsx +77 -0
  1069. package/src/games/mine-sweeper/MineSweeperConstants.ts +94 -0
  1070. package/src/games/mine-sweeper/MineSweeperGame.ts +234 -0
  1071. package/src/games/mine-sweeper/MineSweeperRules.ts +67 -0
  1072. package/src/games/mine-sweeper/MineSweeperScene.ts +262 -0
  1073. package/src/games/mob-control/MobControl.tsx +73 -0
  1074. package/src/games/mob-control/MobControlConstants.ts +106 -0
  1075. package/src/games/mob-control/MobControlGame.ts +176 -0
  1076. package/src/games/mob-control/MobControlMeshes.ts +85 -0
  1077. package/src/games/mob-control/MobControlRenderer.ts +108 -0
  1078. package/src/games/mob-control/MobControlRules.ts +522 -0
  1079. package/src/games/mob-control/MobControlScene.ts +399 -0
  1080. package/src/games/number-search/NumberSearch.tsx +18 -0
  1081. package/src/games/number-search/NumberSearchNumbers.ts +623 -0
  1082. package/src/games/nuts-and-bolts/NutsAndBolts.tsx +85 -0
  1083. package/src/games/nuts-and-bolts/NutsAndBoltsConstants.ts +75 -0
  1084. package/src/games/nuts-and-bolts/NutsAndBoltsGame.ts +298 -0
  1085. package/src/games/nuts-and-bolts/NutsAndBoltsRules.ts +474 -0
  1086. package/src/games/nuts-and-bolts/NutsAndBoltsScene.ts +498 -0
  1087. package/src/games/pac-man/PacMan.tsx +86 -0
  1088. package/src/games/pac-man/PacManConstants.ts +169 -0
  1089. package/src/games/pac-man/PacManGame.ts +406 -0
  1090. package/src/games/pac-man/PacManRules.ts +255 -0
  1091. package/src/games/pac-man/PacManScene.ts +387 -0
  1092. package/src/games/paper-io/PaperIo.tsx +91 -0
  1093. package/src/games/paper-io/PaperIoConstants.ts +86 -0
  1094. package/src/games/paper-io/PaperIoGame.ts +193 -0
  1095. package/src/games/paper-io/PaperIoMeshes.ts +233 -0
  1096. package/src/games/paper-io/PaperIoRules.ts +315 -0
  1097. package/src/games/paper-io/PaperIoScene.ts +310 -0
  1098. package/src/games/penguin-run/PenguinMeshes.ts +269 -0
  1099. package/src/games/penguin-run/PenguinModel.ts +712 -0
  1100. package/src/games/penguin-run/PenguinRun.tsx +77 -0
  1101. package/src/games/penguin-run/PenguinRunConstants.ts +69 -0
  1102. package/src/games/penguin-run/PenguinRunGame.ts +406 -0
  1103. package/src/games/penguin-run/PenguinRunScene.ts +949 -0
  1104. package/src/games/perfect-circle/PerfectCircle.tsx +74 -0
  1105. package/src/games/perfect-circle/PerfectCircleConstants.ts +52 -0
  1106. package/src/games/perfect-circle/PerfectCircleGame.ts +153 -0
  1107. package/src/games/perfect-circle/PerfectCircleRules.ts +111 -0
  1108. package/src/games/perfect-circle/PerfectCircleScene.ts +176 -0
  1109. package/src/games/pipe-connect/PipeConnect.tsx +69 -0
  1110. package/src/games/pipe-connect/PipeConnectConstants.ts +101 -0
  1111. package/src/games/pipe-connect/PipeConnectGame.ts +179 -0
  1112. package/src/games/pipe-connect/PipeConnectRules.ts +326 -0
  1113. package/src/games/pipe-connect/PipeConnectScene.ts +271 -0
  1114. package/src/games/play-with-tua/PlayWithTua.tsx +123 -0
  1115. package/src/games/play-with-tua/PlayWithTuaConstants.ts +70 -0
  1116. package/src/games/play-with-tua/PlayWithTuaGame.ts +167 -0
  1117. package/src/games/play-with-tua/PlayWithTuaModel.ts +42 -0
  1118. package/src/games/play-with-tua/PlayWithTuaScene.ts +36 -0
  1119. package/src/games/popit-fidget/PopitFidget.tsx +72 -0
  1120. package/src/games/popit-fidget/PopitFidgetConstants.ts +71 -0
  1121. package/src/games/popit-fidget/PopitFidgetGame.ts +148 -0
  1122. package/src/games/popit-fidget/PopitFidgetScene.ts +242 -0
  1123. package/src/games/reversi/Reversi.tsx +94 -0
  1124. package/src/games/reversi/ReversiConstants.ts +67 -0
  1125. package/src/games/reversi/ReversiGame.ts +266 -0
  1126. package/src/games/reversi/ReversiRules.ts +176 -0
  1127. package/src/games/reversi/ReversiScene.ts +240 -0
  1128. package/src/games/search-grid/SearchGrid.tsx +92 -0
  1129. package/src/games/search-grid/SearchGridConstants.ts +178 -0
  1130. package/src/games/search-grid/SearchGridGame.ts +209 -0
  1131. package/src/games/search-grid/SearchGridScene.ts +301 -0
  1132. package/src/games/shared/BackdropCard.tsx +54 -0
  1133. package/src/games/shared/EngineBackdrop.ts +300 -0
  1134. package/src/games/shared/EngineBlasts.ts +136 -0
  1135. package/src/games/shared/EngineBlocks.ts +91 -0
  1136. package/src/games/shared/EngineControlText.ts +17 -0
  1137. package/src/games/shared/EngineDice.ts +250 -0
  1138. package/src/games/shared/EngineFootprint.ts +35 -0
  1139. package/src/games/shared/EngineFruits.ts +1435 -0
  1140. package/src/games/shared/EngineGameLoader.tsx +88 -0
  1141. package/src/games/shared/EngineGameScreen.tsx +325 -0
  1142. package/src/games/shared/EngineGameWidth.ts +3 -0
  1143. package/src/games/shared/EngineGameWidth.web.ts +3 -0
  1144. package/src/games/shared/EngineGlyphs.ts +178 -0
  1145. package/src/games/shared/EngineHud.ts +815 -0
  1146. package/src/games/shared/EngineLoading.ts +477 -0
  1147. package/src/games/shared/EngineMeadow.ts +725 -0
  1148. package/src/games/shared/EngineMeshCache.ts +15 -0
  1149. package/src/games/shared/EngineMeshes.ts +10 -0
  1150. package/src/games/shared/EngineRacingChase.ts +21 -0
  1151. package/src/games/shared/EngineRacingHandling.ts +48 -0
  1152. package/src/games/shared/EngineReadyContext.ts +4 -0
  1153. package/src/games/shared/EngineTilt.ts +44 -0
  1154. package/src/games/shared/EngineTouchSurface.tsx +103 -0
  1155. package/src/games/shared/EngineUtils.ts +52 -0
  1156. package/src/games/shared/GameActivity.ts +13 -0
  1157. package/src/games/shared/GameLoading.tsx +202 -0
  1158. package/src/games/shared/GameLoadingTransition.tsx +61 -0
  1159. package/src/games/shared/ProceduralCacheVersion.ts +2 -0
  1160. package/src/games/shared/useEngineGame.ts +240 -0
  1161. package/src/games/shared/useGameResource.ts +21 -0
  1162. package/src/games/shared/useLiveState.ts +58 -0
  1163. package/src/games/sliding-numbers/SlidingNumbers.tsx +71 -0
  1164. package/src/games/sliding-numbers/SlidingNumbersConstants.ts +65 -0
  1165. package/src/games/sliding-numbers/SlidingNumbersGame.ts +192 -0
  1166. package/src/games/sliding-numbers/SlidingNumbersRules.ts +79 -0
  1167. package/src/games/sliding-numbers/SlidingNumbersScene.ts +193 -0
  1168. package/src/games/snake-3d/Snake3D.tsx +76 -0
  1169. package/src/games/snake-3d/Snake3DConstants.ts +61 -0
  1170. package/src/games/snake-3d/Snake3DGame.ts +192 -0
  1171. package/src/games/snake-3d/Snake3DMotion.ts +22 -0
  1172. package/src/games/snake-3d/Snake3DRules.ts +116 -0
  1173. package/src/games/snake-3d/Snake3DScene.ts +322 -0
  1174. package/src/games/snakes-and-ladders/SnakesAndLadders.tsx +87 -0
  1175. package/src/games/snakes-and-ladders/SnakesAndLaddersConstants.ts +136 -0
  1176. package/src/games/snakes-and-ladders/SnakesAndLaddersGame.ts +310 -0
  1177. package/src/games/snakes-and-ladders/SnakesAndLaddersScene.ts +515 -0
  1178. package/src/games/space-fighter/SpaceFighter.tsx +74 -0
  1179. package/src/games/space-fighter/SpaceFighterConstants.ts +86 -0
  1180. package/src/games/space-fighter/SpaceFighterGame.ts +292 -0
  1181. package/src/games/space-fighter/SpaceFighterScene.ts +550 -0
  1182. package/src/games/spider-solitaire/SpiderSolitaire.tsx +80 -0
  1183. package/src/games/spider-solitaire/SpiderSolitaireConstants.ts +107 -0
  1184. package/src/games/spider-solitaire/SpiderSolitaireGame.ts +387 -0
  1185. package/src/games/spider-solitaire/SpiderSolitaireRules.ts +123 -0
  1186. package/src/games/spider-solitaire/SpiderSolitaireScene.ts +352 -0
  1187. package/src/games/stack-tower/StackTower.tsx +76 -0
  1188. package/src/games/stack-tower/StackTowerConstants.ts +74 -0
  1189. package/src/games/stack-tower/StackTowerGame.ts +236 -0
  1190. package/src/games/stack-tower/StackTowerScene.ts +186 -0
  1191. package/src/games/sudoku/Sudoku.tsx +73 -0
  1192. package/src/games/sudoku/SudokuConstants.ts +127 -0
  1193. package/src/games/sudoku/SudokuGame.ts +250 -0
  1194. package/src/games/sudoku/SudokuRules.ts +125 -0
  1195. package/src/games/sudoku/SudokuScene.ts +304 -0
  1196. package/src/games/tangram/Tangram.tsx +79 -0
  1197. package/src/games/tangram/TangramConstants.ts +64 -0
  1198. package/src/games/tangram/TangramGame.ts +356 -0
  1199. package/src/games/tangram/TangramRules.ts +409 -0
  1200. package/src/games/tangram/TangramScene.ts +203 -0
  1201. package/src/games/tank-1990/Tank1990.tsx +78 -0
  1202. package/src/games/tank-1990/Tank1990Constants.ts +81 -0
  1203. package/src/games/tank-1990/Tank1990Game.ts +331 -0
  1204. package/src/games/tank-1990/Tank1990Rules.ts +390 -0
  1205. package/src/games/tank-1990/Tank1990Scene.ts +434 -0
  1206. package/src/games/tic-tac-toe/TicTacToe.tsx +98 -0
  1207. package/src/games/tic-tac-toe/TicTacToeConstants.ts +69 -0
  1208. package/src/games/tic-tac-toe/TicTacToeGame.ts +200 -0
  1209. package/src/games/tic-tac-toe/TicTacToeRules.ts +103 -0
  1210. package/src/games/tic-tac-toe/TicTacToeScene.ts +245 -0
  1211. package/src/games/tile-home/TileHome.tsx +92 -0
  1212. package/src/games/tile-home/TileHomeConstants.ts +139 -0
  1213. package/src/games/tile-home/TileHomeGame.ts +435 -0
  1214. package/src/games/tile-home/TileHomeScene.ts +154 -0
  1215. package/src/games/treasure-hunt/TreasureHunt.tsx +206 -0
  1216. package/src/games/treasure-hunt/TreasureHuntConstants.ts +266 -0
  1217. package/src/games/treasure-hunt/TreasureHuntControls.ts +280 -0
  1218. package/src/games/treasure-hunt/TreasureHuntGame.ts +402 -0
  1219. package/src/games/treasure-hunt/TreasureHuntMeshes.ts +422 -0
  1220. package/src/games/treasure-hunt/TreasureHuntModel.ts +506 -0
  1221. package/src/games/treasure-hunt/TreasureHuntRules.ts +1210 -0
  1222. package/src/games/treasure-hunt/TreasureHuntScene.ts +586 -0
  1223. package/src/games/whack-a-mole/WhackAMole.tsx +79 -0
  1224. package/src/games/whack-a-mole/WhackAMoleConstants.ts +94 -0
  1225. package/src/games/whack-a-mole/WhackAMoleGame.ts +233 -0
  1226. package/src/games/whack-a-mole/WhackAMoleScene.ts +349 -0
  1227. package/src/games/word-search/WordSearch.tsx +18 -0
  1228. package/src/games/word-search/WordSearchWords.ts +1642 -0
  1229. package/src/helpers/GamePatternData.ts +120 -0
  1230. package/src/helpers/GameSettingsModal.tsx +384 -0
  1231. package/src/helpers/GameTheme.tsx +37 -0
  1232. package/src/helpers/IconPaths.ts +6 -0
  1233. package/src/helpers/index.ts +2 -0
  1234. package/src/index.tsx +60 -0
  1235. package/src/services/GameAssetLoader.ts +111 -0
  1236. package/src/services/GameAssets.ts +149 -0
  1237. package/src/services/GameLoaders.ts +93 -0
  1238. package/src/services/GamesConstants.ts +193 -0
  1239. package/src/services/GamesMetadata.ts +711 -0
  1240. package/src/services/GamesService.ts +116 -0
  1241. package/src/services/HapticsService.ts +48 -0
  1242. package/src/services/ScoringService.ts +19 -0
  1243. package/src/services/SfxSources.ts +81 -0
  1244. package/src/services/SoundsService.ts +582 -0
  1245. package/src/services/ThemeService.ts +281 -0
  1246. package/src/services/UtilsService.ts +134 -0
  1247. package/src/services/index.ts +6 -0
  1248. package/lib/module/games/arrows/ArrowsService.js +0 -1
  1249. package/lib/module/games/arrows/ArrowsStore.js +0 -1
  1250. package/lib/module/games/arrows/components/ArrowsGrid.js +0 -1
  1251. package/lib/module/games/arrows/components/ScoreBoard.js +0 -1
  1252. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +0 -1
  1253. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +0 -1
  1254. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +0 -1
  1255. package/lib/module/games/balloon-blaster/components/GameArea.js +0 -1
  1256. package/lib/module/games/balloon-blaster/components/GameBackground.js +0 -1
  1257. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +0 -1
  1258. package/lib/module/games/bike-racing/BikeRacingService.js +0 -1
  1259. package/lib/module/games/bike-racing/BikeRacingStore.js +0 -1
  1260. package/lib/module/games/bike-racing/components/BikeComponent.js +0 -1
  1261. package/lib/module/games/bike-racing/components/GameBackground.js +0 -1
  1262. package/lib/module/games/bike-racing/components/ScoreBoard.js +0 -1
  1263. package/lib/module/games/block-blast/BlockBlastService.js +0 -1
  1264. package/lib/module/games/block-blast/BlockBlastStore.js +0 -1
  1265. package/lib/module/games/block-blast/components/BlockPieceComponent.js +0 -1
  1266. package/lib/module/games/block-blast/components/GameArea.js +0 -1
  1267. package/lib/module/games/block-blast/components/GridComponent.js +0 -1
  1268. package/lib/module/games/block-blast/components/ScoreBoard.js +0 -1
  1269. package/lib/module/games/block-breaker/BlockBreakerService.js +0 -1
  1270. package/lib/module/games/block-breaker/BlockBreakerStore.js +0 -1
  1271. package/lib/module/games/block-breaker/components/BlastAnimation.js +0 -1
  1272. package/lib/module/games/block-breaker/components/GameArea.js +0 -1
  1273. package/lib/module/games/block-breaker/components/ScoreBoard.js +0 -1
  1274. package/lib/module/games/bluk/BlukService.js +0 -1
  1275. package/lib/module/games/bluk/BlukStore.js +0 -1
  1276. package/lib/module/games/bluk/components/GameArea.js +0 -1
  1277. package/lib/module/games/bluk/components/GameBackground.js +0 -1
  1278. package/lib/module/games/bluk/components/ScoreBoard.js +0 -1
  1279. package/lib/module/games/bubble-shooter/BubbleShooterService.js +0 -1
  1280. package/lib/module/games/bubble-shooter/BubbleShooterStore.js +0 -1
  1281. package/lib/module/games/bubble-shooter/components/GameArea.js +0 -1
  1282. package/lib/module/games/bubble-shooter/components/ScoreBoard.js +0 -1
  1283. package/lib/module/games/candy-crush/CandyCrushService.js +0 -1
  1284. package/lib/module/games/candy-crush/CandyCrushStore.js +0 -1
  1285. package/lib/module/games/candy-crush/components/CandyItem.js +0 -1
  1286. package/lib/module/games/candy-crush/components/GameGrid.js +0 -1
  1287. package/lib/module/games/candy-crush/components/ScoreBoard.js +0 -1
  1288. package/lib/module/games/car-racing/CarRacingService.js +0 -1
  1289. package/lib/module/games/car-racing/CarRacingStore.js +0 -1
  1290. package/lib/module/games/car-racing/components/CarComponent.js +0 -1
  1291. package/lib/module/games/car-racing/components/GameBackground.js +0 -1
  1292. package/lib/module/games/car-racing/components/ScoreBoard.js +0 -1
  1293. package/lib/module/games/chameleon-run/ChameleonRunService.js +0 -1
  1294. package/lib/module/games/chameleon-run/ChameleonRunStore.js +0 -1
  1295. package/lib/module/games/chameleon-run/components/GameArea.js +0 -1
  1296. package/lib/module/games/chameleon-run/components/GameBackground.js +0 -1
  1297. package/lib/module/games/chameleon-run/components/ScoreBoard.js +0 -1
  1298. package/lib/module/games/checkers/CheckersService.js +0 -1
  1299. package/lib/module/games/checkers/CheckersStore.js +0 -1
  1300. package/lib/module/games/checkers/components/GameBoard.js +0 -1
  1301. package/lib/module/games/checkers/components/ScoreBoard.js +0 -1
  1302. package/lib/module/games/color-switch/ColorSwitchService.js +0 -1
  1303. package/lib/module/games/color-switch/ColorSwitchStore.js +0 -1
  1304. package/lib/module/games/color-switch/components/GameArea.js +0 -1
  1305. package/lib/module/games/color-switch/components/ScoreBoard.js +0 -1
  1306. package/lib/module/games/colors-sort/ColorsSortService.js +0 -1
  1307. package/lib/module/games/colors-sort/ColorsSortStore.js +0 -1
  1308. package/lib/module/games/colors-sort/components/ColorContainer.js +0 -1
  1309. package/lib/module/games/colors-sort/components/ScoreBoard.js +0 -1
  1310. package/lib/module/games/connect-em-all/ConnectEmAllService.js +0 -1
  1311. package/lib/module/games/connect-em-all/ConnectEmAllStore.js +0 -1
  1312. package/lib/module/games/connect-em-all/components/GameBoard.js +0 -1
  1313. package/lib/module/games/connect-em-all/components/ScoreBoard.js +0 -1
  1314. package/lib/module/games/crossy-road/CrossyRoadService.js +0 -1
  1315. package/lib/module/games/crossy-road/CrossyRoadStore.js +0 -1
  1316. package/lib/module/games/crossy-road/components/GameArea.js +0 -1
  1317. package/lib/module/games/crossy-road/components/ScoreBoard.js +0 -1
  1318. package/lib/module/games/dino-jump/DinoJumpService.js +0 -1
  1319. package/lib/module/games/dino-jump/DinoJumpStore.js +0 -1
  1320. package/lib/module/games/dino-jump/components/DinoSprite.js +0 -1
  1321. package/lib/module/games/dino-jump/components/GameArea.js +0 -1
  1322. package/lib/module/games/dino-jump/components/GameBackground.js +0 -1
  1323. package/lib/module/games/dino-jump/components/ObstacleSprite.js +0 -1
  1324. package/lib/module/games/dino-jump/components/ScoreBoard.js +0 -1
  1325. package/lib/module/games/dino-jump/components/StarSprite.js +0 -1
  1326. package/lib/module/games/dots-and-boxes/DotsAndBoxesService.js +0 -1
  1327. package/lib/module/games/dots-and-boxes/DotsAndBoxesStore.js +0 -1
  1328. package/lib/module/games/dots-and-boxes/components/GameBoard.js +0 -1
  1329. package/lib/module/games/dots-and-boxes/components/ScoreBoard.js +0 -1
  1330. package/lib/module/games/falling-sticks/FallingSticksService.js +0 -1
  1331. package/lib/module/games/falling-sticks/FallingSticksStore.js +0 -1
  1332. package/lib/module/games/falling-sticks/components/GameArea.js +0 -1
  1333. package/lib/module/games/falling-sticks/components/GameBackground.js +0 -1
  1334. package/lib/module/games/falling-sticks/components/ScoreBoard.js +0 -1
  1335. package/lib/module/games/find-different-number/FindDifferentNumberService.js +0 -1
  1336. package/lib/module/games/find-different-number/FindDifferentNumberStore.js +0 -1
  1337. package/lib/module/games/find-different-number/components/GameGrid.js +0 -1
  1338. package/lib/module/games/find-different-number/components/ScoreBoard.js +0 -1
  1339. package/lib/module/games/flappy-bird/FlappyBirdStore.js +0 -1
  1340. package/lib/module/games/flappy-bird/components/Bird.js +0 -1
  1341. package/lib/module/games/flappy-bird/components/GameArea.js +0 -1
  1342. package/lib/module/games/flappy-bird/components/GameBackground.js +0 -1
  1343. package/lib/module/games/flappy-bird/components/Pipes.js +0 -1
  1344. package/lib/module/games/flappy-bird/components/ScoreBoard.js +0 -1
  1345. package/lib/module/games/fruit-merger/FruitMergerService.js +0 -1
  1346. package/lib/module/games/fruit-merger/FruitMergerStore.js +0 -1
  1347. package/lib/module/games/fruit-merger/components/FruitItem.js +0 -1
  1348. package/lib/module/games/fruit-merger/components/GameArea.js +0 -1
  1349. package/lib/module/games/fruit-merger/components/ScoreBoard.js +0 -1
  1350. package/lib/module/games/fruit-ninja/FruitNinjaService.js +0 -1
  1351. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +0 -1
  1352. package/lib/module/games/fruit-ninja/components/FruitComponent.js +0 -1
  1353. package/lib/module/games/fruit-ninja/components/GameArea.js +0 -1
  1354. package/lib/module/games/fruit-ninja/components/GameBackground.js +0 -1
  1355. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +0 -1
  1356. package/lib/module/games/game-2048/Game2048Service.js +0 -1
  1357. package/lib/module/games/game-2048/Game2048Store.js +0 -1
  1358. package/lib/module/games/game-2048/components/GameGrid.js +0 -1
  1359. package/lib/module/games/game-2048/components/ScoreBoard.js +0 -1
  1360. package/lib/module/games/knife-hit/KnifeHitService.js +0 -1
  1361. package/lib/module/games/knife-hit/KnifeHitStore.js +0 -1
  1362. package/lib/module/games/knife-hit/components/GameArea.js +0 -1
  1363. package/lib/module/games/knife-hit/components/ScoreBoard.js +0 -1
  1364. package/lib/module/games/ludo-king/LudoKingService.js +0 -1
  1365. package/lib/module/games/ludo-king/LudoKingStore.js +0 -1
  1366. package/lib/module/games/ludo-king/components/Dice.js +0 -1
  1367. package/lib/module/games/ludo-king/components/GameBoard.js +0 -1
  1368. package/lib/module/games/ludo-king/components/ScoreBoard.js +0 -1
  1369. package/lib/module/games/maze-runner/MazeRunnerStore.js +0 -1
  1370. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +0 -1
  1371. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +0 -1
  1372. package/lib/module/games/maze-runner/components/ScoreBoard.js +0 -1
  1373. package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +0 -1
  1374. package/lib/module/games/maze-runner/components/WallComponent.js +0 -1
  1375. package/lib/module/games/memory-match/MemoryMatchService.js +0 -1
  1376. package/lib/module/games/memory-match/MemoryMatchStore.js +0 -1
  1377. package/lib/module/games/memory-match/components/Card.js +0 -1
  1378. package/lib/module/games/memory-match/components/GameBoard.js +0 -1
  1379. package/lib/module/games/memory-match/components/ScoreBoard.js +0 -1
  1380. package/lib/module/games/mine-sweeper/MineSweeperService.js +0 -1
  1381. package/lib/module/games/mine-sweeper/MineSweeperStore.js +0 -1
  1382. package/lib/module/games/mine-sweeper/components/GameArea.js +0 -1
  1383. package/lib/module/games/mine-sweeper/components/ScoreBoard.js +0 -1
  1384. package/lib/module/games/mob-control/MobControlService.js +0 -1
  1385. package/lib/module/games/mob-control/MobControlStore.js +0 -1
  1386. package/lib/module/games/mob-control/components/GameArea.js +0 -1
  1387. package/lib/module/games/mob-control/components/ScoreBoard.js +0 -1
  1388. package/lib/module/games/number-search/NumberSearchConstants.js +0 -1
  1389. package/lib/module/games/number-search/NumberSearchService.js +0 -1
  1390. package/lib/module/games/number-search/NumberSearchStore.js +0 -1
  1391. package/lib/module/games/number-search/components/GameBoard.js +0 -1
  1392. package/lib/module/games/number-search/components/NumberList.js +0 -1
  1393. package/lib/module/games/number-search/components/ScoreBoard.js +0 -1
  1394. package/lib/module/games/nuts-and-bolts/NutsAndBoltsService.js +0 -1
  1395. package/lib/module/games/nuts-and-bolts/NutsAndBoltsStore.js +0 -1
  1396. package/lib/module/games/nuts-and-bolts/components/GameBoard.js +0 -1
  1397. package/lib/module/games/nuts-and-bolts/components/ScoreBoard.js +0 -1
  1398. package/lib/module/games/pac-man/PacManService.js +0 -1
  1399. package/lib/module/games/pac-man/PacManStore.js +0 -1
  1400. package/lib/module/games/pac-man/components/GameCanvas.js +0 -1
  1401. package/lib/module/games/pac-man/components/ScoreBoard.js +0 -1
  1402. package/lib/module/games/paper-io/PaperIoService.js +0 -1
  1403. package/lib/module/games/paper-io/PaperIoStore.js +0 -1
  1404. package/lib/module/games/paper-io/components/GameArea.js +0 -1
  1405. package/lib/module/games/paper-io/components/ScoreBoard.js +0 -1
  1406. package/lib/module/games/perfect-circle/PerfectCircleService.js +0 -1
  1407. package/lib/module/games/perfect-circle/PerfectCircleStore.js +0 -1
  1408. package/lib/module/games/perfect-circle/components/DrawingCanvas.js +0 -1
  1409. package/lib/module/games/perfect-circle/components/ScoreBoard.js +0 -1
  1410. package/lib/module/games/pipe-connect/PipeConnectService.js +0 -1
  1411. package/lib/module/games/pipe-connect/PipeConnectStore.js +0 -1
  1412. package/lib/module/games/pipe-connect/components/GameArea.js +0 -1
  1413. package/lib/module/games/pipe-connect/components/ScoreBoard.js +0 -1
  1414. package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -1
  1415. package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -1
  1416. package/lib/module/games/popit-fidget/components/BubbleComponent.js +0 -1
  1417. package/lib/module/games/popit-fidget/components/FidgetGrid.js +0 -1
  1418. package/lib/module/games/popit-fidget/components/ScoreBoard.js +0 -1
  1419. package/lib/module/games/reversi/ReversiStore.js +0 -1
  1420. package/lib/module/games/reversi/components/GameBoard.js +0 -1
  1421. package/lib/module/games/reversi/components/ScoreBoard.js +0 -1
  1422. package/lib/module/games/sliding-numbers/SlidingNumbersService.js +0 -1
  1423. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +0 -1
  1424. package/lib/module/games/sliding-numbers/components/NumbersGrid.js +0 -1
  1425. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +0 -1
  1426. package/lib/module/games/snake-3d/Snake3DService.js +0 -1
  1427. package/lib/module/games/snake-3d/Snake3DStore.js +0 -1
  1428. package/lib/module/games/snake-3d/components/GameGrid.js +0 -1
  1429. package/lib/module/games/snake-3d/components/ScoreBoard.js +0 -1
  1430. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersService.js +0 -1
  1431. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersStore.js +0 -1
  1432. package/lib/module/games/snakes-and-ladders/components/Dice.js +0 -1
  1433. package/lib/module/games/snakes-and-ladders/components/GameBoard.js +0 -1
  1434. package/lib/module/games/snakes-and-ladders/components/ScoreBoard.js +0 -1
  1435. package/lib/module/games/space-fighter/SpaceFighterService.js +0 -1
  1436. package/lib/module/games/space-fighter/SpaceFighterStore.js +0 -1
  1437. package/lib/module/games/space-fighter/components/AsteroidComponent.js +0 -1
  1438. package/lib/module/games/space-fighter/components/GameArea.js +0 -1
  1439. package/lib/module/games/space-fighter/components/GameBackground.js +0 -1
  1440. package/lib/module/games/space-fighter/components/ScoreBoard.js +0 -1
  1441. package/lib/module/games/space-fighter/components/Spacecraft3D.js +0 -1
  1442. package/lib/module/games/space-fighter/components/SpacecraftPath.js +0 -1
  1443. package/lib/module/games/spider-solitaire/SpiderSolitaireService.js +0 -1
  1444. package/lib/module/games/spider-solitaire/SpiderSolitaireStore.js +0 -1
  1445. package/lib/module/games/spider-solitaire/components/Card.js +0 -1
  1446. package/lib/module/games/spider-solitaire/components/CardPile.js +0 -1
  1447. package/lib/module/games/spider-solitaire/components/ScoreBoard.js +0 -1
  1448. package/lib/module/games/stack-tower/StackTowerService.js +0 -1
  1449. package/lib/module/games/stack-tower/StackTowerStore.js +0 -1
  1450. package/lib/module/games/stack-tower/components/GameArea.js +0 -1
  1451. package/lib/module/games/stack-tower/components/ScoreBoard.js +0 -1
  1452. package/lib/module/games/sudoku/SudokuService.js +0 -1
  1453. package/lib/module/games/sudoku/SudokuStore.js +0 -1
  1454. package/lib/module/games/sudoku/components/GameArea.js +0 -1
  1455. package/lib/module/games/sudoku/components/ScoreBoard.js +0 -1
  1456. package/lib/module/games/tangram/TangramService.js +0 -1
  1457. package/lib/module/games/tangram/TangramStore.js +0 -1
  1458. package/lib/module/games/tangram/components/GameBoard.js +0 -1
  1459. package/lib/module/games/tangram/components/ScoreBoard.js +0 -1
  1460. package/lib/module/games/tank-1990/Tank1990Service.js +0 -1
  1461. package/lib/module/games/tank-1990/Tank1990Store.js +0 -1
  1462. package/lib/module/games/tank-1990/components/Controls.js +0 -1
  1463. package/lib/module/games/tank-1990/components/GameBoard.js +0 -1
  1464. package/lib/module/games/tank-1990/components/ScoreBoard.js +0 -1
  1465. package/lib/module/games/tic-tac-toe/TicTacToeService.js +0 -1
  1466. package/lib/module/games/tic-tac-toe/TicTacToeStore.js +0 -1
  1467. package/lib/module/games/tic-tac-toe/components/GameBoard.js +0 -1
  1468. package/lib/module/games/tic-tac-toe/components/ScoreBoard.js +0 -1
  1469. package/lib/module/games/tile-home/TileHomeService.js +0 -1
  1470. package/lib/module/games/tile-home/TileHomeStore.js +0 -1
  1471. package/lib/module/games/tile-home/components/AnimatingTile.js +0 -1
  1472. package/lib/module/games/tile-home/components/FlyingTile.js +0 -1
  1473. package/lib/module/games/tile-home/components/GameBoard.js +0 -1
  1474. package/lib/module/games/tile-home/components/ScoreBoard.js +0 -1
  1475. package/lib/module/games/tile-home/components/TileItem.js +0 -1
  1476. package/lib/module/games/tile-home/components/TileSlot.js +0 -1
  1477. package/lib/module/games/whack-a-mole/WhackAMoleService.js +0 -1
  1478. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +0 -1
  1479. package/lib/module/games/whack-a-mole/components/GameBackground.js +0 -1
  1480. package/lib/module/games/whack-a-mole/components/GameGrid.js +0 -1
  1481. package/lib/module/games/whack-a-mole/components/GameHole.js +0 -1
  1482. package/lib/module/games/whack-a-mole/components/MoleCharacter.js +0 -1
  1483. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +0 -1
  1484. package/lib/module/games/word-search/WordSearchConstants.js +0 -1
  1485. package/lib/module/games/word-search/WordSearchService.js +0 -1
  1486. package/lib/module/games/word-search/WordSearchStore.js +0 -1
  1487. package/lib/module/games/word-search/components/GameBoard.js +0 -1
  1488. package/lib/module/games/word-search/components/ScoreBoard.js +0 -1
  1489. package/lib/module/games/word-search/components/WordList.js +0 -1
  1490. package/lib/module/helpers/AnimatedScore.js +0 -1
  1491. package/lib/module/helpers/AnimationFrame.js +0 -1
  1492. package/lib/module/helpers/AnimationTracker.js +0 -1
  1493. package/lib/module/helpers/BlastAnimation.js +0 -1
  1494. package/lib/module/helpers/ErrorHandler.js +0 -1
  1495. package/lib/module/helpers/GameBackgroundPattern.js +0 -1
  1496. package/lib/module/helpers/GameControlButton.js +0 -1
  1497. package/lib/module/helpers/GameOverModal.js +0 -1
  1498. package/lib/module/helpers/GameTimer.js +0 -1
  1499. package/lib/module/helpers/Icons.js +0 -1
  1500. package/lib/module/helpers/ParticleBlast.js +0 -1
  1501. package/lib/module/helpers/ScoreBoardContainer.js +0 -1
  1502. package/lib/module/helpers/assets/apple-fruit.js +0 -1
  1503. package/lib/module/helpers/assets/avocado-item.js +0 -1
  1504. package/lib/module/helpers/assets/banana-fruit.js +0 -1
  1505. package/lib/module/helpers/assets/bomb-item.js +0 -1
  1506. package/lib/module/helpers/assets/broccoli-item.js +0 -1
  1507. package/lib/module/helpers/assets/cherries-fruit.js +0 -1
  1508. package/lib/module/helpers/assets/donut-item.js +0 -1
  1509. package/lib/module/helpers/assets/dragonfruit-item.js +0 -1
  1510. package/lib/module/helpers/assets/fries-item.js +0 -1
  1511. package/lib/module/helpers/assets/fruit-helpers.js +0 -1
  1512. package/lib/module/helpers/assets/grapes-fruit.js +0 -1
  1513. package/lib/module/helpers/assets/icecream-item.js +0 -1
  1514. package/lib/module/helpers/assets/index.js +0 -1
  1515. package/lib/module/helpers/assets/kiwi-fruit.js +0 -1
  1516. package/lib/module/helpers/assets/mango-fruit.js +0 -1
  1517. package/lib/module/helpers/assets/orange-fruit.js +0 -1
  1518. package/lib/module/helpers/assets/papaya-fruit.js +0 -1
  1519. package/lib/module/helpers/assets/papaya-full-fruit.js +0 -1
  1520. package/lib/module/helpers/assets/peach-fruit.js +0 -1
  1521. package/lib/module/helpers/assets/pineapple-fruit.js +0 -1
  1522. package/lib/module/helpers/assets/pomegranate-fruit.js +0 -1
  1523. package/lib/module/helpers/assets/pumpkin-fruit.js +0 -1
  1524. package/lib/module/helpers/assets/raspberry-item.js +0 -1
  1525. package/lib/module/helpers/assets/star-item.js +0 -1
  1526. package/lib/module/helpers/assets/strawberry-fruit.js +0 -1
  1527. package/lib/module/helpers/assets/watermelon-fruit.js +0 -1
  1528. package/lib/module/types.d.js +0 -1
  1529. package/lib/typescript/src/games/arrows/ArrowsService.d.ts +0 -6
  1530. package/lib/typescript/src/games/arrows/ArrowsStore.d.ts +0 -51
  1531. package/lib/typescript/src/games/arrows/components/ArrowsGrid.d.ts +0 -13
  1532. package/lib/typescript/src/games/arrows/components/ScoreBoard.d.ts +0 -6
  1533. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -80
  1534. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +0 -30
  1535. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts +0 -9
  1536. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +0 -9
  1537. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +0 -7
  1538. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +0 -6
  1539. package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +0 -44
  1540. package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +0 -68
  1541. package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +0 -12
  1542. package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +0 -7
  1543. package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +0 -6
  1544. package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +0 -16
  1545. package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +0 -70
  1546. package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +0 -11
  1547. package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +0 -11
  1548. package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +0 -8
  1549. package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +0 -6
  1550. package/lib/typescript/src/games/block-breaker/BlockBreakerService.d.ts +0 -88
  1551. package/lib/typescript/src/games/block-breaker/BlockBreakerStore.d.ts +0 -47
  1552. package/lib/typescript/src/games/block-breaker/components/BlastAnimation.d.ts +0 -15
  1553. package/lib/typescript/src/games/block-breaker/components/GameArea.d.ts +0 -8
  1554. package/lib/typescript/src/games/block-breaker/components/ScoreBoard.d.ts +0 -6
  1555. package/lib/typescript/src/games/bluk/BlukService.d.ts +0 -71
  1556. package/lib/typescript/src/games/bluk/BlukStore.d.ts +0 -52
  1557. package/lib/typescript/src/games/bluk/components/GameArea.d.ts +0 -17
  1558. package/lib/typescript/src/games/bluk/components/GameBackground.d.ts +0 -9
  1559. package/lib/typescript/src/games/bluk/components/ScoreBoard.d.ts +0 -6
  1560. package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +0 -35
  1561. package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +0 -63
  1562. package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +0 -8
  1563. package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +0 -6
  1564. package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +0 -37
  1565. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +0 -53
  1566. package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +0 -11
  1567. package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +0 -2
  1568. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +0 -5
  1569. package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +0 -44
  1570. package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +0 -68
  1571. package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +0 -12
  1572. package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +0 -7
  1573. package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +0 -6
  1574. package/lib/typescript/src/games/chameleon-run/ChameleonRunService.d.ts +0 -76
  1575. package/lib/typescript/src/games/chameleon-run/ChameleonRunStore.d.ts +0 -48
  1576. package/lib/typescript/src/games/chameleon-run/components/GameArea.d.ts +0 -8
  1577. package/lib/typescript/src/games/chameleon-run/components/GameBackground.d.ts +0 -7
  1578. package/lib/typescript/src/games/chameleon-run/components/ScoreBoard.d.ts +0 -6
  1579. package/lib/typescript/src/games/checkers/CheckersService.d.ts +0 -6
  1580. package/lib/typescript/src/games/checkers/CheckersStore.d.ts +0 -48
  1581. package/lib/typescript/src/games/checkers/components/GameBoard.d.ts +0 -6
  1582. package/lib/typescript/src/games/checkers/components/ScoreBoard.d.ts +0 -6
  1583. package/lib/typescript/src/games/color-switch/ColorSwitchService.d.ts +0 -63
  1584. package/lib/typescript/src/games/color-switch/ColorSwitchStore.d.ts +0 -43
  1585. package/lib/typescript/src/games/color-switch/components/GameArea.d.ts +0 -8
  1586. package/lib/typescript/src/games/color-switch/components/ScoreBoard.d.ts +0 -6
  1587. package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts +0 -61
  1588. package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts +0 -56
  1589. package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts +0 -7
  1590. package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +0 -6
  1591. package/lib/typescript/src/games/connect-em-all/ConnectEmAllService.d.ts +0 -20
  1592. package/lib/typescript/src/games/connect-em-all/ConnectEmAllStore.d.ts +0 -48
  1593. package/lib/typescript/src/games/connect-em-all/components/GameBoard.d.ts +0 -7
  1594. package/lib/typescript/src/games/connect-em-all/components/ScoreBoard.d.ts +0 -6
  1595. package/lib/typescript/src/games/crossy-road/CrossyRoadService.d.ts +0 -89
  1596. package/lib/typescript/src/games/crossy-road/CrossyRoadStore.d.ts +0 -39
  1597. package/lib/typescript/src/games/crossy-road/components/GameArea.d.ts +0 -8
  1598. package/lib/typescript/src/games/crossy-road/components/ScoreBoard.d.ts +0 -6
  1599. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +0 -39
  1600. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +0 -97
  1601. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +0 -2
  1602. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +0 -7
  1603. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +0 -7
  1604. package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +0 -8
  1605. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +0 -6
  1606. package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +0 -2
  1607. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesService.d.ts +0 -45
  1608. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesStore.d.ts +0 -37
  1609. package/lib/typescript/src/games/dots-and-boxes/components/GameBoard.d.ts +0 -7
  1610. package/lib/typescript/src/games/dots-and-boxes/components/ScoreBoard.d.ts +0 -6
  1611. package/lib/typescript/src/games/falling-sticks/FallingSticksService.d.ts +0 -40
  1612. package/lib/typescript/src/games/falling-sticks/FallingSticksStore.d.ts +0 -31
  1613. package/lib/typescript/src/games/falling-sticks/components/GameArea.d.ts +0 -7
  1614. package/lib/typescript/src/games/falling-sticks/components/GameBackground.d.ts +0 -6
  1615. package/lib/typescript/src/games/falling-sticks/components/ScoreBoard.d.ts +0 -6
  1616. package/lib/typescript/src/games/find-different-number/FindDifferentNumberService.d.ts +0 -6
  1617. package/lib/typescript/src/games/find-different-number/FindDifferentNumberStore.d.ts +0 -36
  1618. package/lib/typescript/src/games/find-different-number/components/GameGrid.d.ts +0 -7
  1619. package/lib/typescript/src/games/find-different-number/components/ScoreBoard.d.ts +0 -6
  1620. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +0 -68
  1621. package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +0 -2
  1622. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +0 -7
  1623. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +0 -7
  1624. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +0 -8
  1625. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +0 -6
  1626. package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +0 -3
  1627. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +0 -66
  1628. package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +0 -8
  1629. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +0 -8
  1630. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +0 -6
  1631. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +0 -73
  1632. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +0 -38
  1633. package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts +0 -8
  1634. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +0 -7
  1635. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +0 -7
  1636. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +0 -6
  1637. package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +0 -102
  1638. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +0 -44
  1639. package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +0 -2
  1640. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +0 -6
  1641. package/lib/typescript/src/games/knife-hit/KnifeHitService.d.ts +0 -48
  1642. package/lib/typescript/src/games/knife-hit/KnifeHitStore.d.ts +0 -41
  1643. package/lib/typescript/src/games/knife-hit/components/GameArea.d.ts +0 -8
  1644. package/lib/typescript/src/games/knife-hit/components/ScoreBoard.d.ts +0 -6
  1645. package/lib/typescript/src/games/ludo-king/LudoKingService.d.ts +0 -33
  1646. package/lib/typescript/src/games/ludo-king/LudoKingStore.d.ts +0 -34
  1647. package/lib/typescript/src/games/ludo-king/components/Dice.d.ts +0 -7
  1648. package/lib/typescript/src/games/ludo-king/components/GameBoard.d.ts +0 -7
  1649. package/lib/typescript/src/games/ludo-king/components/ScoreBoard.d.ts +0 -6
  1650. package/lib/typescript/src/games/maze-runner/MazeRunnerStore.d.ts +0 -62
  1651. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts +0 -10
  1652. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts +0 -33
  1653. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +0 -24
  1654. package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts +0 -24
  1655. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts +0 -9
  1656. package/lib/typescript/src/games/memory-match/MemoryMatchService.d.ts +0 -6
  1657. package/lib/typescript/src/games/memory-match/MemoryMatchStore.d.ts +0 -42
  1658. package/lib/typescript/src/games/memory-match/components/Card.d.ts +0 -6
  1659. package/lib/typescript/src/games/memory-match/components/GameBoard.d.ts +0 -6
  1660. package/lib/typescript/src/games/memory-match/components/ScoreBoard.d.ts +0 -6
  1661. package/lib/typescript/src/games/mine-sweeper/MineSweeperService.d.ts +0 -22
  1662. package/lib/typescript/src/games/mine-sweeper/MineSweeperStore.d.ts +0 -73
  1663. package/lib/typescript/src/games/mine-sweeper/components/GameArea.d.ts +0 -8
  1664. package/lib/typescript/src/games/mine-sweeper/components/ScoreBoard.d.ts +0 -6
  1665. package/lib/typescript/src/games/mob-control/MobControlService.d.ts +0 -74
  1666. package/lib/typescript/src/games/mob-control/MobControlStore.d.ts +0 -66
  1667. package/lib/typescript/src/games/mob-control/components/GameArea.d.ts +0 -11
  1668. package/lib/typescript/src/games/mob-control/components/ScoreBoard.d.ts +0 -6
  1669. package/lib/typescript/src/games/number-search/NumberSearchConstants.d.ts +0 -63
  1670. package/lib/typescript/src/games/number-search/NumberSearchService.d.ts +0 -34
  1671. package/lib/typescript/src/games/number-search/NumberSearchStore.d.ts +0 -70
  1672. package/lib/typescript/src/games/number-search/components/GameBoard.d.ts +0 -7
  1673. package/lib/typescript/src/games/number-search/components/NumberList.d.ts +0 -2
  1674. package/lib/typescript/src/games/number-search/components/ScoreBoard.d.ts +0 -6
  1675. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsService.d.ts +0 -67
  1676. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsStore.d.ts +0 -45
  1677. package/lib/typescript/src/games/nuts-and-bolts/components/GameBoard.d.ts +0 -7
  1678. package/lib/typescript/src/games/nuts-and-bolts/components/ScoreBoard.d.ts +0 -6
  1679. package/lib/typescript/src/games/pac-man/PacManService.d.ts +0 -73
  1680. package/lib/typescript/src/games/pac-man/PacManStore.d.ts +0 -89
  1681. package/lib/typescript/src/games/pac-man/components/GameCanvas.d.ts +0 -2
  1682. package/lib/typescript/src/games/pac-man/components/ScoreBoard.d.ts +0 -6
  1683. package/lib/typescript/src/games/paper-io/PaperIoService.d.ts +0 -70
  1684. package/lib/typescript/src/games/paper-io/PaperIoStore.d.ts +0 -51
  1685. package/lib/typescript/src/games/paper-io/components/GameArea.d.ts +0 -8
  1686. package/lib/typescript/src/games/paper-io/components/ScoreBoard.d.ts +0 -6
  1687. package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +0 -15
  1688. package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +0 -55
  1689. package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +0 -8
  1690. package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +0 -6
  1691. package/lib/typescript/src/games/pipe-connect/PipeConnectService.d.ts +0 -17
  1692. package/lib/typescript/src/games/pipe-connect/PipeConnectStore.d.ts +0 -31
  1693. package/lib/typescript/src/games/pipe-connect/components/GameArea.d.ts +0 -7
  1694. package/lib/typescript/src/games/pipe-connect/components/ScoreBoard.d.ts +0 -6
  1695. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -30
  1696. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +0 -33
  1697. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +0 -10
  1698. package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +0 -10
  1699. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +0 -6
  1700. package/lib/typescript/src/games/reversi/ReversiStore.d.ts +0 -46
  1701. package/lib/typescript/src/games/reversi/components/GameBoard.d.ts +0 -6
  1702. package/lib/typescript/src/games/reversi/components/ScoreBoard.d.ts +0 -6
  1703. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +0 -6
  1704. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +0 -38
  1705. package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +0 -7
  1706. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +0 -6
  1707. package/lib/typescript/src/games/snake-3d/Snake3DService.d.ts +0 -29
  1708. package/lib/typescript/src/games/snake-3d/Snake3DStore.d.ts +0 -49
  1709. package/lib/typescript/src/games/snake-3d/components/GameGrid.d.ts +0 -2
  1710. package/lib/typescript/src/games/snake-3d/components/ScoreBoard.d.ts +0 -6
  1711. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersService.d.ts +0 -22
  1712. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersStore.d.ts +0 -40
  1713. package/lib/typescript/src/games/snakes-and-ladders/components/Dice.d.ts +0 -7
  1714. package/lib/typescript/src/games/snakes-and-ladders/components/GameBoard.d.ts +0 -2
  1715. package/lib/typescript/src/games/snakes-and-ladders/components/ScoreBoard.d.ts +0 -6
  1716. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts +0 -117
  1717. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts +0 -54
  1718. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -9
  1719. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +0 -9
  1720. package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts +0 -6
  1721. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +0 -6
  1722. package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts +0 -11
  1723. package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts +0 -9
  1724. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireService.d.ts +0 -23
  1725. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireStore.d.ts +0 -71
  1726. package/lib/typescript/src/games/spider-solitaire/components/Card.d.ts +0 -10
  1727. package/lib/typescript/src/games/spider-solitaire/components/CardPile.d.ts +0 -12
  1728. package/lib/typescript/src/games/spider-solitaire/components/ScoreBoard.d.ts +0 -6
  1729. package/lib/typescript/src/games/stack-tower/StackTowerService.d.ts +0 -51
  1730. package/lib/typescript/src/games/stack-tower/StackTowerStore.d.ts +0 -52
  1731. package/lib/typescript/src/games/stack-tower/components/GameArea.d.ts +0 -8
  1732. package/lib/typescript/src/games/stack-tower/components/ScoreBoard.d.ts +0 -6
  1733. package/lib/typescript/src/games/sudoku/SudokuService.d.ts +0 -24
  1734. package/lib/typescript/src/games/sudoku/SudokuStore.d.ts +0 -65
  1735. package/lib/typescript/src/games/sudoku/components/GameArea.d.ts +0 -8
  1736. package/lib/typescript/src/games/sudoku/components/ScoreBoard.d.ts +0 -6
  1737. package/lib/typescript/src/games/tangram/TangramService.d.ts +0 -6
  1738. package/lib/typescript/src/games/tangram/TangramStore.d.ts +0 -34
  1739. package/lib/typescript/src/games/tangram/components/GameBoard.d.ts +0 -7
  1740. package/lib/typescript/src/games/tangram/components/ScoreBoard.d.ts +0 -6
  1741. package/lib/typescript/src/games/tank-1990/Tank1990Service.d.ts +0 -80
  1742. package/lib/typescript/src/games/tank-1990/Tank1990Store.d.ts +0 -48
  1743. package/lib/typescript/src/games/tank-1990/components/Controls.d.ts +0 -2
  1744. package/lib/typescript/src/games/tank-1990/components/GameBoard.d.ts +0 -2
  1745. package/lib/typescript/src/games/tank-1990/components/ScoreBoard.d.ts +0 -6
  1746. package/lib/typescript/src/games/tic-tac-toe/TicTacToeService.d.ts +0 -0
  1747. package/lib/typescript/src/games/tic-tac-toe/TicTacToeStore.d.ts +0 -51
  1748. package/lib/typescript/src/games/tic-tac-toe/components/GameBoard.d.ts +0 -6
  1749. package/lib/typescript/src/games/tic-tac-toe/components/ScoreBoard.d.ts +0 -6
  1750. package/lib/typescript/src/games/tile-home/TileHomeService.d.ts +0 -1
  1751. package/lib/typescript/src/games/tile-home/TileHomeStore.d.ts +0 -57
  1752. package/lib/typescript/src/games/tile-home/components/AnimatingTile.d.ts +0 -9
  1753. package/lib/typescript/src/games/tile-home/components/FlyingTile.d.ts +0 -16
  1754. package/lib/typescript/src/games/tile-home/components/GameBoard.d.ts +0 -7
  1755. package/lib/typescript/src/games/tile-home/components/ScoreBoard.d.ts +0 -6
  1756. package/lib/typescript/src/games/tile-home/components/TileItem.d.ts +0 -11
  1757. package/lib/typescript/src/games/tile-home/components/TileSlot.d.ts +0 -7
  1758. package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +0 -32
  1759. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +0 -39
  1760. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +0 -7
  1761. package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts +0 -10
  1762. package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts +0 -11
  1763. package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +0 -6
  1764. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +0 -6
  1765. package/lib/typescript/src/games/word-search/WordSearchConstants.d.ts +0 -63
  1766. package/lib/typescript/src/games/word-search/WordSearchService.d.ts +0 -34
  1767. package/lib/typescript/src/games/word-search/WordSearchStore.d.ts +0 -70
  1768. package/lib/typescript/src/games/word-search/components/GameBoard.d.ts +0 -7
  1769. package/lib/typescript/src/games/word-search/components/ScoreBoard.d.ts +0 -6
  1770. package/lib/typescript/src/games/word-search/components/WordList.d.ts +0 -2
  1771. package/lib/typescript/src/helpers/AnimatedScore.d.ts +0 -36
  1772. package/lib/typescript/src/helpers/AnimationFrame.d.ts +0 -40
  1773. package/lib/typescript/src/helpers/AnimationTracker.d.ts +0 -44
  1774. package/lib/typescript/src/helpers/BlastAnimation.d.ts +0 -16
  1775. package/lib/typescript/src/helpers/ErrorHandler.d.ts +0 -123
  1776. package/lib/typescript/src/helpers/GameBackgroundPattern.d.ts +0 -7
  1777. package/lib/typescript/src/helpers/GameControlButton.d.ts +0 -11
  1778. package/lib/typescript/src/helpers/GameOverModal.d.ts +0 -15
  1779. package/lib/typescript/src/helpers/GameTimer.d.ts +0 -26
  1780. package/lib/typescript/src/helpers/Icons.d.ts +0 -12
  1781. package/lib/typescript/src/helpers/ParticleBlast.d.ts +0 -11
  1782. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +0 -85
  1783. package/lib/typescript/src/helpers/assets/apple-fruit.d.ts +0 -4
  1784. package/lib/typescript/src/helpers/assets/avocado-item.d.ts +0 -4
  1785. package/lib/typescript/src/helpers/assets/banana-fruit.d.ts +0 -4
  1786. package/lib/typescript/src/helpers/assets/bomb-item.d.ts +0 -4
  1787. package/lib/typescript/src/helpers/assets/broccoli-item.d.ts +0 -4
  1788. package/lib/typescript/src/helpers/assets/cherries-fruit.d.ts +0 -4
  1789. package/lib/typescript/src/helpers/assets/donut-item.d.ts +0 -4
  1790. package/lib/typescript/src/helpers/assets/dragonfruit-item.d.ts +0 -4
  1791. package/lib/typescript/src/helpers/assets/fries-item.d.ts +0 -4
  1792. package/lib/typescript/src/helpers/assets/fruit-helpers.d.ts +0 -154
  1793. package/lib/typescript/src/helpers/assets/grapes-fruit.d.ts +0 -4
  1794. package/lib/typescript/src/helpers/assets/icecream-item.d.ts +0 -4
  1795. package/lib/typescript/src/helpers/assets/index.d.ts +0 -31
  1796. package/lib/typescript/src/helpers/assets/kiwi-fruit.d.ts +0 -4
  1797. package/lib/typescript/src/helpers/assets/mango-fruit.d.ts +0 -4
  1798. package/lib/typescript/src/helpers/assets/orange-fruit.d.ts +0 -4
  1799. package/lib/typescript/src/helpers/assets/papaya-fruit.d.ts +0 -4
  1800. package/lib/typescript/src/helpers/assets/papaya-full-fruit.d.ts +0 -4
  1801. package/lib/typescript/src/helpers/assets/peach-fruit.d.ts +0 -4
  1802. package/lib/typescript/src/helpers/assets/pineapple-fruit.d.ts +0 -4
  1803. package/lib/typescript/src/helpers/assets/pomegranate-fruit.d.ts +0 -4
  1804. package/lib/typescript/src/helpers/assets/pumpkin-fruit.d.ts +0 -4
  1805. package/lib/typescript/src/helpers/assets/raspberry-item.d.ts +0 -4
  1806. package/lib/typescript/src/helpers/assets/star-item.d.ts +0 -4
  1807. package/lib/typescript/src/helpers/assets/strawberry-fruit.d.ts +0 -4
  1808. package/lib/typescript/src/helpers/assets/watermelon-fruit.d.ts +0 -4
@@ -1 +1 @@
1
- "use strict";const _0xdb595a=_0xafb3;function _0x358a(){const e=["W4H8W4qrbGe+W6JcRW","dSkjlWBdQMNdVa","rCkcWRjqqW","tCkAAmkIW6mtFa","W5qjBmo5W4VdUWy","W5RcMCo6W4BcMLBdPa","jqTCW4r9p8ohjCoLW5BdQ8k7W5i","W48Rv8o4W58","qxCOWRWts8k8amot","WO8IWOyQoG","WOxcMSkZWRtcUCkGxum","tqtcTqhdNtbYwLi","iwazWRpdUmkWW4DLW7/cGXHpWQyeW7j7W4NdLa","sH7dMvjUAL4gW70","w8ksCCo8W7jIWOzaW6yotvi","t8odW5BcJ8oNWP8zgxmaWOHtW4JdTYXhWQdcJ1hcV8oX","zfCxWPu4smksi8oZ","WOzkkmk4WPJcOKhcRgzpWQGRWOC","CvCqWQm4BSkhkW","A8kRW6hdQmoVWReIW4FdRe7cQZ8WW65fy8oj","dSodW7xdPL5QW4ldKW","aSouW65uuCoUW4pcI8oi","WQnNcY7dR8kDWOW","EcdcIYhdTJngzxydWQHdW70","FsdcIIJdPJHDAhuBWQbFW6CNFa","WRqXWOLlFenxWP/cLgafW4e","W4jNWQPWWPfcWPtcJ8oDWQnqBd4","cebXW7JcHmk1whzuW5ddSCkVccyL","WPKNWPyfhq8PW4pcImkUCra","W5hdMwv2e8oQWRdcJCkcW5VdHwaE","lCoIW5BdSZ8RCCon","AL8YsmoTDSkHpSooyerfW7hcMGS","WOtcK8kIWP8","W4rBW5a","mNqzWRxdTmk9W58","AtRdT2uRsg0TW5SZWPVdISka","W5tdICo3W5xdV8oZgwKDW7ToWPddVW","sSoam8o7z0RdNmoS","wNSnyCowEmkbcmoHtxf/W4RcSsO","qt5VaJG","WPtdIH3cUZLxW40G","cmkjWPVcT1ddOCkBWOJcMq","zCoyW4ldNCoHWRKwvhK","W5JcImk6r20","W4ZcISkryNldLWvCBmoeyq","ycddUeJdV0pdUW","WOrllSk/W6ldKYFcUhTr","W6jTEIVcOCkoW6NcLW","WPW3W7OWW4ib","txaFzSooxmkNamo8wgX1W5y","nWJdJWtcV8kOW7ddUCoZW5/dGmov","W4D2xSohtwD1ha","W6zNyaZcTmkgW7pcL1W","WO1hWQ4couVdPSkgofTRWQi","WPVcMJBdLNuxa8kdW5jIuNTY","W5zCtYRcGq","WOW8WOy0pG","WPOLWPiF","es5jmmkwc8kdcmo1B1vB","WQCyW5egWOCGW7FdMa","WRr7lCo+lmom","WRFcR8k2WPxdNCkrsG","vxVcK8o0W68","WOdcNSkKWOZcQSkZrLmNW41vWO7dLmomBq","kCkzlmkQDfVdKCo6bSoJWOpcHW0OW5ZcS17cJSk8W4rPBG","c0LVpmkLW68rimo4W5TsW6WQ","W7zRyqRcSa","W4JcJSkmDwldIq","cIuXA8oXWQ5+","sx7cSNBdLmorW4hdRSoz","cvFdTLBcM0uJEgmfWRL9W7q","ruTiWRySWOhdNCkW","W4ecW5CbW68VW7q","vCknWRHdsmoWW7C","mH/dP3ZdPLVdMta","aCoVjmkDWQ8","WPhcNSoQW49UjrhcPa","sCktECkqW7KhEfK","uHbGucrvgW","WRrRl8oBcW","jw9UW5ZcQSkiCW","Dv4bWPeIESkd","WRDCWOddL8ogWQVdJW","zfCxWPu4tSkDj8o7W6pdQmkxW7PejG","rGzapqC"];return(_0x358a=function(){return e})()}!function(){const e=_0xafb3,o=_0x358a();for(;;)try{if(657887==parseInt(e(490,"76Yh"))/1*(-parseInt(e(504,"H3s("))/2)+-parseInt(e(538,"KSpD"))/3*(parseInt(e(478,"F&tX"))/4)+-parseInt(e(477,"[BZe"))/5*(parseInt(e(482,"GH^V"))/6)+parseInt(e(486,"R(&t"))/7+-parseInt(e(523,"]yu4"))/8*(-parseInt(e(503,"oFpD"))/9)+parseInt(e(502,"]Whu"))/10+-parseInt(e(534,"F&tX"))/11*(parseInt(e(469,"uwuB"))/12))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x37a106,{useEffect,useRef,useMemo,useCallback}from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useBalloonBlasterStore,useIsPlaying,useGameOver}from"./BalloonBlasterStore.js";import{BalloonBlasterService}from"./BalloonBlasterService.js";import{BALLOON_BLASTER_GAME_CONFIG}from"./BalloonBlasterConstants.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{GameBackground}from"./components/GameBackground.js";import{GameControlButton,GameOverModal,useAnimationTrackers}from"../../helpers/index.js";import{GameSettingsModal}from"../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{setGameInterval,clearGameInterval}from"../../helpers/GameTimer.js";import{jsx as _0x576b6d,jsxs as _0x53e5d6}from"react/jsx-runtime";function _0xafb3(e,o){e-=462;const t=_0x358a();let a=t[e];if(void 0===_0xafb3.ztFftR){const e=function(e,o){let t,a,r=[],n=0,s="";for(e=function(e){let o="",t="";for(let t,a,r=0,n=0;a=e.charAt(n++);~a&&(t=r%4?64*t+a:a,r++%4)?o+=String.fromCharCode(255&t>>(-2*r&6)):0)a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(a);for(let e=0,a=o.length;e<a;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),a=0;a<256;a++)r[a]=a;for(a=0;a<256;a++)n=(n+r[a]+o.charCodeAt(a%o.length))%256,t=r[a],r[a]=r[n],r[n]=t;a=0,n=0;for(let o=0;o<e.length;o++)a=(a+1)%256,n=(n+r[a])%256,t=r[a],r[a]=r[n],r[n]=t,s+=String.fromCharCode(e.charCodeAt(o)^r[(r[a]+r[n])%256]);return s};_0xafb3.xNUcKi=e,_0xafb3.BxmhFe={},_0xafb3.ztFftR=!0}const r=t[0];_0xafb3.EdIzOn!==r&&(_0xafb3.BxmhFe={},_0xafb3.EdIzOn=r);const n=_0xafb3.BxmhFe[e];return void 0===n?(void 0===_0xafb3.pHnQQJ&&(_0xafb3.pHnQQJ=!0),a=_0xafb3.xNUcKi(a,o),_0xafb3.BxmhFe[e]=a):a=n,a}export const BalloonBlaster=({settings:e,onSettingsChange:o,onEndGame:t,onReplayGame:a,onShare:r,onShareScreenshot:n,onShowLeaderboard:s,bannerAd:W})=>{const d="KY]B",m=_0xafb3,l={skqMK:function(e,o,t){return e(o,t)},Tlnmk:function(e,o,t){return e(o,t)},xWIsq:function(e,o){return e(o)},cqlFB:function(e,o){return e>o},puqSO:function(e,o,t){return e(o,t)},BkdFz:function(e,o,t){return e(o,t)},cJeVi:function(e,o,t){return e(o,t)}},u=useIsPlaying(),i=useGameOver(),S=useRef(!1),f=useRef(t);f.current=t;const x=useRef(e);x[m(539,"7Lm7")]=e;const B=e?.enableSounds??!0,k=useCallback(e=>{const o=m;if(f[o(493,"VMS8")]&&!S[o(466,"aVmP")]){const t=useBalloonBlasterStore[o(509,"8L7Q")]()[o(519,"KSpD")];f[o(539,"7Lm7")]({status:e,score:t.toString()}),S[o(521,"F&tX")]=!0}},[]),{balloonAnimations:_,particleAnimations:C}=useAnimationTrackers([m(536,"E6cS"),m(529,"aVmP")]),p=useMemo(()=>new BalloonBlasterService(_,C),[_,C]);useEffect(()=>()=>{const e=_0xafb3;useBalloonBlasterStore[e(462,"Qk)d")]().isPlaying&&!S.current&&k(e(492,")S4j"));try{p.cleanup()}catch{}try{useBalloonBlasterStore[e(479,"[Bjs")]()[e(533,"]yu4")]()}catch{}},[]),useEffect(()=>{const e=m;if(i&&!u&&!S[e(522,"39*c")]){const{lives:o}=useBalloonBlasterStore[e(508,"jYoz")]();o<=0?(playSound(GAME_SOUNDS[e(541,"]Whu")][e(501,"GH^V")],B),k("lose")):(l.skqMK(playSound,GAME_SOUNDS[e(525,"]yu4")],B),k(e(465,"yjTm")))}!i&&(S.current=!1)},[i,u,B]),l[m(526,d)](useEffect,()=>{const e=m;if(!u)return;const o=l[e(471,"ey@U")](setGameInterval,()=>{const o=e;useBalloonBlasterStore[o(527,"18km")]()[o(467,"n1Tq")]()},1e3);return()=>clearGameInterval(o)},[u]),l[m(488,d)](useEffect,()=>{const e=m;i&&("sgXQj"===e(475,"30Zs")?p[e(505,"KSpD")]():(_0x106468.current=!1,_0x5e4879.cleanup(),_0x54d2f8[e(470,"76Yh")](),_0x210498[e(535,"]yu4")]().startGame(_0x3111b4.GAME_DURATION),_0xc8c126(_0x188180[e(463,"76Yh")][e(516,"ey@U")],_0xd6f9d4.current?.[e(542,"CIOo")]??!0)))},[i,p]);const h=useCallback(()=>{const e=m;S[e(518,"amgt")]=!1,p[e(520,"8L7Q")](),p.resetAnimations(),useBalloonBlasterStore.getState()[e(474,"mJ7x")](BALLOON_BLASTER_GAME_CONFIG[e(540,"]Whu")]),playSound(GAME_SOUNDS[e(544,"D$3U")][e(487,"[Bjs")],x[e(514,"b$ST")]?.[e(545,"KY]B")]??!0)},[p]),G=useCallback(()=>{const e=m;l[e(524,"F&tX")](k,e(499,"30Zs")),p[e(510,"xc4O")](),useBalloonBlasterStore[e(506,"[BZe")]().resetGame()},[p]),b=useCallback(()=>{const e=m;a?.(),p[e(513,"]yu4")](),p[e(515,"]yu4")](),useBalloonBlasterStore[e(535,"]yu4")]()[e(528,"]Whu")]()},[p,a]),O=l.BkdFz(useMemo,()=>({isPlaying:u,gameOver:i,onStartGame:h,onStopGame:G,onShare:r,onShowLeaderboard:s,startButtonSubtext:m(496,"uwuB")}),[u,i,h,G,r,s]),R=useMemo(()=>{const e=m,o={};o[e(498,"[Bjs")]=0,o[e(494,"$[y@")]=3;const{score:t,lives:a}=i?useBalloonBlasterStore.getState():o;return{isVisible:i,score:t,onPlayAgain:b,buttonText:"Pop Again!",title:a>0?e(491,"H3s("):e(530,"n1Tq"),message:l[e(511,")S4j")](a,0)?"Great popping!":e(532,"mJ7x")}},[i,b]),I=useMemo(()=>({gameId:GAME_IDS.BALLOON_BLASTER,settings:e||DEFAULT_GAME_SETTINGS,onSettingsChange:o}),[e,o]),y=e?.[m(480,"H3s(")]??0,g={};g.service=p,g.enableSounds=e?.enableSounds,g[m(546,"VCHX")]=e?.[m(481,"76Yh")];const A={...O},L={...R};L[m(512,"D$3U")]=n,L[m(483,"Iysf")]=W;const j={...I};return _0x576b6d(GestureHandlerRootView,{style:styles[m(473,"A8Hq")],children:_0x53e5d6(GameBackground,{offset:y,children:[l[m(507,"h(05")](_0x576b6d,GameArea,g),_0x576b6d(ScoreBoard,{offset:y}),_0x576b6d(GameControlButton,A),_0x576b6d(GameOverModal,L),_0x576b6d(GameSettingsModal,j)]})})};const _0x560a2f={};_0x560a2f[_0xdb595a(464,"18km")]=1,_0x560a2f[_0xdb595a(495,"18km")]=BACKGROUND_COLOR;const _0x2a16e4={};_0x2a16e4[_0xdb595a(489,"KY]B")]=1;const _0x1b73d4={};_0x1b73d4[_0xdb595a(484,"[Bjs")]=_0x560a2f,_0x1b73d4[_0xdb595a(476,"30Zs")]=_0x2a16e4;const styles=StyleSheet.create(_0x1b73d4);
1
+ "use strict";import{useMemo}from"react";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{livesColumn,scoreColumn,timerColumn}from"../shared/EngineHud.js";import{backgroundFor,lightFor}from"../shared/EngineMeadow.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,MAX_LIVES,TIME_LIMIT}from"./BalloonBlasterConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,tick,touch}from"./BalloonBlasterGame.js";import{jsx as _0x52bd7c}from"react/jsx-runtime";const SFX=GAME_SOUNDS.BALLOON_BLASTER;export const BalloonBlaster=engineGame(GAME_IDS.BALLOON_BLASTER,e=>{const[o,t]=useLiveState(0),[s,r]=useLiveState(MAX_LIVES),[i,a]=useLiveState(TIME_LIMIT),{theme:n,status:m,screen:u,gameOver:S}=useEngineGame(e,{gameId:GAME_IDS.BALLOON_BLASTER,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,o,t)=>setLayout(e,getLayout(o,t)),drag:(e,{phase:o,x:t,y:s})=>{"start"===o&&touch(e,t,s)},sounds:SFX,onStart:e=>e(SFX.START),wire:(e,o)=>{e.onScore=t,e.onLives=r,e.onTime=a,e.onPop=()=>o(SFX.POP,HapticType.LIGHT),e.onBomb=()=>o(SFX.BOMB,HapticType.HEAVY),e.onWin=()=>o(GAME_SOUNDS.WELL_DONE),e.onLose=()=>o(SFX.GAME_OVER)}}),p=useMemo(()=>lightFor(n),[n]),E=useMemo(()=>backgroundFor(n),[n]);return _0x52bd7c(EngineGameScreen,{...u,light:p,background:E,columns:[scoreColumn(o),livesColumn(s,MAX_LIVES),timerColumn(i,n)],subtext:"Pop balloons to score!",gameOver:S({title:"win"===m?"TIME UP!":"GAME OVER",message:"win"===m?"Great popping!":"You ran out of lives!",scoreLabel:"Final Score",score:o,buttonText:"Pop Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x21499e=_0x57c2;!function(){const x=_0x57c2,_=_0x317a();for(;;)try{if(633671==parseInt(x(450,"2M%t"))/1+-parseInt(x(466,"w@r3"))/2*(-parseInt(x(567,"WAx0"))/3)+-parseInt(x(422,"CORj"))/4*(-parseInt(x(429,"qLMt"))/5)+-parseInt(x(515,"D$*D"))/6*(parseInt(x(559,"c6Bh"))/7)+parseInt(x(424,"J&i]"))/8*(parseInt(x(481,"#]0e"))/9)+parseInt(x(467,"ZTT)"))/10+-parseInt(x(480,"&I0)"))/11)break;_.push(_.shift())}catch(x){_.push(_.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{isTablet}from"../../services/UtilsService.js";const _0xaf4e55={};_0xaf4e55[_0x21499e(570,"&I0)")]=120,_0xaf4e55[_0x21499e(449,"O*cg")]=3,_0xaf4e55.BALLOON_SPAWN_INTERVAL=800,_0xaf4e55[_0x21499e(438,"pwO8")]=2.5,_0xaf4e55[_0x21499e(556,"[G&m")]=-.005,_0xaf4e55[_0x21499e(531,"O*cg")]=-1.2,_0xaf4e55.INITIAL_VELOCITY_X_RANGE=.5,_0xaf4e55[_0x21499e(431,"pTEF")]=.02,_0xaf4e55[_0x21499e(478,"WLyS")]=isTablet?92:60,_0xaf4e55[_0x21499e(488,"6pAz")]=10,_0xaf4e55[_0x21499e(545,"Kqps")]=2e3,_0xaf4e55[_0x21499e(426,"Ey(^")]=4,_0xaf4e55[_0x21499e(535,"#]0e")]=600;export const BALLOON_BLASTER_GAME_CONFIG=_0xaf4e55;const _0x4347c8={};_0x4347c8[_0x21499e(500,"p9CI")]=30,_0x4347c8[_0x21499e(558,"8@QR")]=50;const _0x3b443e={damping:20,stiffness:300},_0x5a5add={};_0x5a5add[_0x21499e(497,"om#P")]=25,_0x5a5add[_0x21499e(430,"Kqps")]=400;const _0x39af07={};_0x39af07[_0x21499e(534,"FN16")]=200;const _0xece87b={};_0xece87b[_0x21499e(525,"8@QR")]=_0x4347c8,_0xece87b[_0x21499e(510,"@DIh")]=_0x3b443e,_0xece87b.PARTICLE_SPRING=_0x5a5add,_0xece87b.SLICE_TIMING=_0x39af07;export const BALLOON_BLASTER_ANIMATION_CONFIG=_0xece87b;const _0x2fe819={};function _0x57c2(x,_){x-=417;const e=_0x317a();let W=e[x];if(void 0===_0x57c2.JvILUV){const x=function(x,_){let e,W,o=[],d=0,t="";for(x=function(x){let _="",e="";for(let e,W,o=0,d=0;W=x.charAt(d++);~W&&(e=o%4?64*e+W:W,o++%4)?_+=String.fromCharCode(255&e>>(-2*o&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let x=0,W=_.length;x<W;x++)e+="%"+("00"+_.charCodeAt(x).toString(16)).slice(-2);return decodeURIComponent(e)}(x),W=0;W<256;W++)o[W]=W;for(W=0;W<256;W++)d=(d+o[W]+_.charCodeAt(W%_.length))%256,e=o[W],o[W]=o[d],o[d]=e;W=0,d=0;for(let _=0;_<x.length;_++)W=(W+1)%256,d=(d+o[W])%256,e=o[W],o[W]=o[d],o[d]=e,t+=String.fromCharCode(x.charCodeAt(_)^o[(o[W]+o[d])%256]);return t};_0x57c2.NKARbH=x,_0x57c2.hOqHlo={},_0x57c2.JvILUV=!0}const o=e[0];_0x57c2.BQCxPt!==o&&(_0x57c2.hOqHlo={},_0x57c2.BQCxPt=o);const d=_0x57c2.hOqHlo[x];return void 0===d?(void 0===_0x57c2.WKiTBX&&(_0x57c2.WKiTBX=!0),W=_0x57c2.NKARbH(W,_),_0x57c2.hOqHlo[x]=W):W=d,W}_0x2fe819[_0x21499e(452,"fL3Q")]=BACKGROUND_COLOR,_0x2fe819[_0x21499e(474,"Kqps")]=PRIMARY_COLOR,_0x2fe819[_0x21499e(433,"[])b")]=_0x21499e(555,"O*cg"),_0x2fe819[_0x21499e(436,"Dzd0")]=_0x21499e(482,"NrIr"),_0x2fe819[_0x21499e(522,"c6Bh")]=[_0x21499e(437,"RF!R"),_0x21499e(462,"D$*D"),_0x21499e(494,"@DIh"),_0x21499e(543,"bs2O"),_0x21499e(562,"[G&m"),_0x21499e(446,"Dzd0")],_0x2fe819[_0x21499e(568,"Ey(^")]=_0x21499e(518,"@DIh"),_0x2fe819[_0x21499e(527,"Kqps")]=_0x21499e(530,"8#OC"),_0x2fe819[_0x21499e(434,"wsWh")]="rgba(255,255,255,0.9)",_0x2fe819.UI=PRIMARY_COLOR,_0x2fe819[_0x21499e(473,"EBN2")]="#FFFFFF",_0x2fe819[_0x21499e(475,"J&i]")]=_0x21499e(444,"RF!R"),_0x2fe819[_0x21499e(516,"pTEF")]=_0x21499e(463,"O*cg");export const BALLOON_BLASTER_COLORS=_0x2fe819;const _0x512e22={};_0x512e22[_0x21499e(483,"sU47")]="\ud83c\udf88",_0x512e22[_0x21499e(419,"V(hv")]=50,_0x512e22[_0x21499e(538,"&I0)")]=_0x21499e(547,"V(hv"),_0x512e22[_0x21499e(425,"Xddk")]=_0x21499e(464,"[kd1"),_0x512e22[_0x21499e(553,"om#P")]=["#FF0040",_0x21499e(470,"fL3Q")];const _0x6de9c={};_0x6de9c[_0x21499e(459,"cw9X")]="\ud83c\udf88",_0x6de9c[_0x21499e(468,"CORj")]=50,_0x6de9c.name=_0x21499e(533,"[G&m"),_0x6de9c.color=_0x21499e(552,"2M%t"),_0x6de9c[_0x21499e(551,"QqUO")]=[_0x21499e(493,"RF!R"),_0x21499e(435,"FN16")];const _0x199a56={};_0x199a56[_0x21499e(520,"bs2O")]="\ud83c\udf88",_0x199a56[_0x21499e(457,"tY]#")]=75,_0x199a56[_0x21499e(476,"6A3x")]=_0x21499e(523,"1@vM"),_0x199a56[_0x21499e(477,"tY]#")]=_0x21499e(532,"cw9X"),_0x199a56[_0x21499e(505,"Kqps")]=[_0x21499e(451,"FN16"),_0x21499e(503,"1)o6")];const _0xf916e5={};_0xf916e5[_0x21499e(539,"ZTT)")]="\ud83c\udf88",_0xf916e5[_0x21499e(487,"2ls9")]=100,_0xf916e5[_0x21499e(484,"1)o6")]=_0x21499e(511,"8#OC"),_0xf916e5[_0x21499e(495,"J&i]")]=_0x21499e(526,"CORj"),_0xf916e5[_0x21499e(492,"[kd1")]=[_0x21499e(496,"2M%t"),_0x21499e(537,"@DIh")];const _0x27b6fc={};_0x27b6fc[_0x21499e(423,"FN16")]="\ud83c\udf88",_0x27b6fc[_0x21499e(418,"om#P")]=125,_0x27b6fc[_0x21499e(448,"p6]&")]=_0x21499e(443,"6pAz"),_0x27b6fc[_0x21499e(540,"RF!R")]="#8000FF",_0x27b6fc[_0x21499e(456,"WLyS")]=["#8000FF","#A040FF"];const _0x4eab67={emoji:"\ud83c\udf88",points:75};_0x4eab67[_0x21499e(420,"tY]#")]=_0x21499e(501,"[])b"),_0x4eab67[_0x21499e(445,"sU47")]=_0x21499e(560,"SNdS"),_0x4eab67[_0x21499e(548,"CORj")]=[_0x21499e(563,"CORj"),_0x21499e(439,"6A3x")];const _0x4488b4={};function _0x317a(){const x=["WRRdQCk6WRtdNSkeWPDnWRTfWRO","W7JcG3hdG0baW79CWQ/cMvybFJe","xZDaW6PkW63dNmo3","gqddG8kbc1NdMW","WOdcSGVcTmos","W6ukDCoX","tt8+W4rUWRBcHq","xSk7WPNcGSkI","FqBcNXvMW7i","W7NcKsldIdPiwxJcVdhcGmo8W4tdKmkeW4HiWQO","iXJdH8o0j0S","W6PmW45wgSoKyW","CCoHlrqwrmki","W47cOJ9CW7vUWQay","W6tcTmkqW63cGWCb","ae0kW7eLtYm","dWpdJmkGW54","W7eqW6JdImoPW4/dLW","sq3dR8kdkf9N","WONdRvVdJtLrsW","WR3dQ8k9WRBdMCoqW6TkWRLTWQ/dKmob","hSoRWQtcQSkqWRL5","uCkFumkoW5ZcNCkue8k8FHxdPq","W4ilg8oK","WQGTxSordCkpW7K","t1JcKmkjW6RcH8kO","W4Syf8oLWOymWRmB","W4W1W5vx","CMpcINJcJ8kJW5q","s8kxD8o8W7y","E2PHWOy","C0qCW6Pbl0hdJCkwxa","uGBcQMnPWRtcSXpcLdxcMIL9","idJdJw1qW6D/","W53cNM4gWQm5","nZqdWPLEzw43W7nVgCkVxY4","gConlCoXW5hdNCoTWQKW","BmkEWR/cVmko","W6GeDmo7pq","ae0kWOeLsIq","W4VcHM/cKq","BxVcMq9q","mt91wmofaa","WPLlW5O6y8kth1pdJCoImhfGW5r6","k8ocb0Xnb8kCtqSSW4ldGSosWQe","WQ7dOmk2W7f/cW","WRRcV8krWRGMBw0hWONcUaLGfSkN","nJS8WQurdCkI","W6aJimoeWRW2WP4GW5BdGSkW","WR/cGtldQaSO","nCoib0qceSoDqWyVW4hdGW","fJlcItbfWQlcKW","WOBcObldKJyAW6ldSdxcKXHSWQZcQqyBBdW","s8oTySo1cSkYDa","mHWNWQNdUCo6d0JcMcNdKmk6","nWldNmo7j1eRW5K","pK5CW5zHW43dUCoGfmogbmogW43dQSorEmk4","WP3cK8kYWP4a","ad98W7nupIm","WQtdMYRcKG","W57cVCk4m8ka","WQtdQ8omWRRdGq","hMbNW6XCW70","WQRdQ8k/W6JcTq","kYlcSIqpqSkg","W7JcTCoMW4lcJmoDW4xdHqi","W68Lo8odWQa2WOKMW5FdImkTWQuE","cX7dGCkRW4xcPmkaAa","W4JcKqWiWOxdPmk5WOJdKKKE","CNLTWOC+umo8uW","W4uznmoUWOeCWQ4","rmkBuCkpWPu","W4RcG2ymWR4VW5NcRG","W7eqW6JcTSkFWRhcOq","sH7dO8kxkfrUoW","W7fMWP7cUSkFW4FdLW","W6ZdNX7cV08DW6G","fYitWPRcKmomnW","prBdG8o/","WOVcISk0WPipteyRWQK","W78+WRTFhmk3gvNdLmocoG","W7HXdu9qlxy","scFdRmkRxGBcNgyAW7BdUGKPWR4e","CZiuW7NcMmoExa","nK1kW5nNdCkI","WQNdPConWRa","WQGTxSoqEmkmWOS","AHVcLX97W6qrFq","nKBcSZ4dW7rOWOK0","W7aaW7GEqSkpdSoOWOL2","jKTZWP1Ezw0","WO3dUWRcSI88WPK/WPRcH3Kwya","WOBcOutcSfr0fW","xqpdQ8kDnui","W4RcMWfgWPpdTG","yfBcHYO","WORdQmkzmCklrSkJaW","ld87W5DVB8o1CI/dImo9","nHRdGCoWoG","xvRcLmo8WP3dSSoyvmoUWQDulJe","mKRcOcpdJq","W6moW6CirmktfSoOWO5HW7CdsHy","qCkGDCoQW4FdLti","WORdOg4aWQXnWOG","WOhdGuydCmkGW6T3WRS","W58Eh8oNWOKhWRGCW6K","ACkzWQlcQCkFxI9jn8oTWQnuESoUWQWTnhyICa","BfJcHY0","CSk1CCk3WRNcOmk3mmkrqZ4","mSkNyCkoWR7cRK4NWQC3dWvx","CepcNSoBy34c","W4Oir28FW7XkWP3cSSo5cG","W6tdGSoMW6BdSxif","W4P+W7hdQcNcRSkwsu5Qj8ojB2SWW7qmW4G","W6RdGSkvWRpdT8oUWQu","WPpcTJuaFCoIWOS","WPJdHd5AWQ0ZW4tcR8osWR0","rrVcPMHZW6C","W5RcQbNdUXnYluJcNbtcOmomW6FdUW","W6tdGSkqWPpcIWCb","WOBcSaJcSCoj","WROcsbvVWPmU","gmkqWRddNmo7usy","A2XyW4G","WOlcRWpdMtmsW7JdQJa","W6OyW67cVmkBW4pcLSo8W67dVdaP","CdhdQmoEzaH0","Bv9zbLjtjJ0cCq","CgzJWOK+","W5i7W5fCWP06","c8k+xCkJWRtdNmop","dYXgq8oOW77dV0C","FLJcGYhcNce","qSkzuSkkWO4","dCogs8oBva","nr09WQBcSa","WPpdGemaFCoIWOS","c8olkCoqW4dcQCk7","W6ZcQb3dGdKDW6G","WORcLHGiWQW/W74","W4RcVZjxW64","BxKobCosgZVcLbVcJq","WORdOCoGBSoAfSo/ysmPW48DW67cQa","zwrLWO0JrG","bJ9kqG","dfHCEsu5wq","neJcOYBdLG","z8kFu0nbjCoTycG","W5JcMmorW5hcT8kZWO9lWRbNWQ3dHW","W7W4p8omWQ47WOq","ocNdUmkBW7pcKSkRx8oLWQjaittcIW","WQFdPCk+W6i","BvJcHIdcMG","kH9RA8ooW5tdN2ZcIuldKSo1"];return(_0x317a=function(){return x})()}_0x4488b4[_0x21499e(471,"Xddk")]="\ud83c\udf88",_0x4488b4[_0x21499e(524,"h3M8")]=150,_0x4488b4[_0x21499e(502,"Kqps")]="orange balloon",_0x4488b4.color=_0x21499e(554,"2M%t"),_0x4488b4.gradient=[_0x21499e(507,"Xddk"),_0x21499e(490,"c6Bh")];const _0x41595e={};_0x41595e[_0x21499e(536,"8@QR")]="\ud83c\udf88",_0x41595e[_0x21499e(489,"FN16")]=125,_0x41595e[_0x21499e(519,"Y^%o")]="cyan balloon",_0x41595e[_0x21499e(458,"[])b")]="#00FFFF",_0x41595e[_0x21499e(566,"2ls9")]=[_0x21499e(498,"6pAz"),_0x21499e(504,"J&i]")];const _0x16ddd5={};_0x16ddd5[_0x21499e(460,"[G&m")]="\ud83c\udf88",_0x16ddd5[_0x21499e(528,"O*cg")]=175,_0x16ddd5[_0x21499e(557,"FN16")]="magenta balloon",_0x16ddd5[_0x21499e(465,"[kd1")]=_0x21499e(512,"WAx0"),_0x16ddd5.gradient=[_0x21499e(455,"D$*D"),_0x21499e(447,"pTEF")];const _0x2ab658={emoji:"\ud83c\udf88",points:200};_0x2ab658[_0x21499e(564,"RF!R")]=_0x21499e(529,"1@vM"),_0x2ab658.color="#FFB000",_0x2ab658[_0x21499e(546,"J&i]")]=["#FFB000",_0x21499e(565,"1)o6")];const _0x65fd12={};_0x65fd12[_0x21499e(453,"CORj")]="\ud83c\udf88",_0x65fd12[_0x21499e(454,"[$GS")]=225,_0x65fd12[_0x21499e(469,"WLyS")]=_0x21499e(561,"NrIr"),_0x65fd12[_0x21499e(517,"1)o6")]=_0x21499e(569,"p6]&"),_0x65fd12.gradient=[_0x21499e(427,"wsWh"),"#8000FF",_0x21499e(428,"[kd1"),_0x21499e(485,"#]0e")];const _0x4984c0={};_0x4984c0[_0x21499e(550,"[])b")]="\ud83c\udf88",_0x4984c0[_0x21499e(442,"8#OC")]=250,_0x4984c0[_0x21499e(509,"CORj")]="neon balloon",_0x4984c0[_0x21499e(542,"6A3x")]=_0x21499e(461,"qLMt"),_0x4984c0.gradient=["#00FF00",_0x21499e(440,"qLMt")];export const BALLOON_TYPES=[_0x512e22,_0x6de9c,_0x199a56,_0xf916e5,_0x27b6fc,_0x4eab67,_0x4488b4,_0x41595e,_0x16ddd5,_0x2ab658,_0x65fd12,_0x4984c0];const _0x5a8f1e={emoji:"\ud83d\udca3"};_0x5a8f1e[_0x21499e(541,"#]0e")]=-250,_0x5a8f1e.name=_0x21499e(432,"tY]#"),_0x5a8f1e[_0x21499e(521,"w@r3")]=!0,_0x5a8f1e.color=_0x21499e(491,"1@vM");const _0x5bba66={};_0x5bba66[_0x21499e(486,"pTEF")]="\u2b50",_0x5bba66[_0x21499e(513,"QqUO")]=250,_0x5bba66[_0x21499e(506,"[$GS")]="star",_0x5bba66[_0x21499e(549,"Kqps")]=!0,_0x5bba66[_0x21499e(508,"D$*D")]=_0x21499e(417,"Y^%o");export const BALLOON_SPECIAL_ITEMS=[_0x5a8f1e,_0x5bba66];
1
+ "use strict";import{isTablet}from"../../services/UtilsService.js";export const TIME_LIMIT=120;export const MAX_LIVES=3;export const POINTS_PER_BALLOON=100;export const SPECIAL_CHANCE=.2;export const BALLOON_COLORS=["#FF0040","#0080FF","#FFD700","#00FF80","#8000FF","#FF0080","#FF4000","#00FFFF","#FF00FF","#FFB000","#00FF00"];export const RAINBOW=["#FF0080","#8000FF","#0080FF","#00FF80","#FFD700","#FF4000"];export const FIRST_BALLOONS=3;export const FIRST_STAGGER=.1;export const SPAWN_INTERVAL=.8;export const FRAME_TIME=1/60;export const MAX_FRAMES=3;export const BALLOON_SIZE=isTablet?92:60;export const RISE_SPEED=-1.2;export const LIFT=-.005;export const DRIFT_RANGE=.5;export const SPIN_RANGE=.02;export const WALL_BOUNCE=.8;export const BALLOON_BOUNCE=.5;export const BALLOON_HIT=1.6;export const BALLOON_GAP=6;export const TOUCH_PAD=10;export const POP_TIME=.2;export const POP_SWELL=1.22;export const RIG={eyeHeight:1.6,horizon:.8,playDepth:5};export const MEADOW={sun:[.8,.18],clouds:[.14,.62],framingTrees:!1,foreground:!1,hotAirBalloons:3};export function getLayout(t,o){const e=BALLOON_SIZE,F=1.25*e;return{width:t,height:o,size:e,bodyHeight:F,totalHeight:F+Math.round(e/60*30)}}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{cameraFor,makeView,spawnWorld}from"../shared/EngineMeadow.js";import{BALLOON_COLORS,DRIFT_RANGE,FIRST_BALLOONS,FIRST_STAGGER,FRAME_TIME,LIFT,MAX_FRAMES,MAX_LIVES,MEADOW,POINTS_PER_BALLOON,RIG,RISE_SPEED,SPAWN_INTERVAL,SPECIAL_CHANCE,SPIN_RANGE,TIME_LIMIT,TOUCH_PAD,WALL_BOUNCE}from"./BalloonBlasterConstants.js";import{balloonBounds,findBalloonSpawn,separateBalloons}from"./BalloonBlasterPhysics.js";import{balloonMeshes,placeBalloon,popBalloon,spawnBalloon}from"./BalloonBlasterScene.js";const WORLD_CAPACITY=1100;export function createGame(o){const e=new World(1100),n={world:e,camera:{eye:[0,1.6,0],target:[0,1.6,-1],fov:.9},theme:o,layout:null,view:null,scenery:[],phase:"ready",get score(){return e.scoreboard.score},get lives(){return e.scoreboard.lives},won:!1,time:0,pending:0,balloons:[],onPhase:o=>{},onScore:o=>{},onLives:o=>{},onTime:o=>{},onPop:()=>{},onBomb:()=>{},onWin:()=>{},onLose:()=>{}};return e.scoreboard.reset(MAX_LIVES),e.scoreboard.handlers={onScore:o=>n.onScore(o),onLives:o=>n.onLives(o),onSecond:o=>"playing"===n.phase&&n.onTime(o),onTimeUp:()=>"playing"===n.phase&&end(n,!0),onLivesOut:()=>"playing"===n.phase&&end(n,!1)},n}const after=(o,e,n)=>o.world.after(e,n);export function setLayout(o,e){const n=o.world;clearBalloons(o);for(const e of o.scenery)n.despawn(e);o.pending=0,o.layout=e;const a=makeView(e.width,e.height,RIG);o.view=a;const r=cameraFor(a);o.camera.eye=r.eye,o.camera.target=r.target,o.camera.fov=r.fov,o.scenery=spawnWorld(n,a,o.theme,MEADOW),balloonMeshes()}export function setTheme(o,e){if(e===o.theme&&o.scenery.length)return;o.theme=e;const n=o.view;if(n&&!o.world.isDisposed){for(const e of o.scenery)o.world.despawn(e);o.scenery=spawnWorld(o.world,n,e,MEADOW)}}function clearBalloons(o){for(const e of o.balloons)o.world.despawn(e.root);o.balloons=[]}export function start(o){if("ready"===o.phase){o.phase="playing",o.world.scoreboard.startCountdown(TIME_LIMIT),o.onPhase("playing");for(let e=0;e<FIRST_BALLOONS;e++)after(o,e*FIRST_STAGGER,()=>release(o));after(o,SPAWN_INTERVAL,()=>spawnLoop(o))}}function spawnLoop(o){"playing"===o.phase&&(release(o),after(o,SPAWN_INTERVAL,()=>spawnLoop(o)))}function release(o){const e=o.layout,n=o.view;if(!e||!n||"playing"!==o.phase)return;const a=Math.random()<SPECIAL_CHANCE?Math.random()<.5?{kind:"bomb"}:{kind:"life"}:{kind:"balloon",color:BALLOON_COLORS[Math.floor(Math.random()*BALLOON_COLORS.length)]},r=e.height+e.size,s=findBalloonSpawn(o.balloons,e,r);if(null===s)return;const t=(Math.random()-.5)*SPIN_RANGE;o.balloons.push({what:a,x:s,y:r,vx:(Math.random()-.5)*DRIFT_RANGE,vy:RISE_SPEED,root:spawnBalloon(o.world,n,e,a,s+e.size/2,r+e.bodyHeight/2,t)})}export function reset(o){o.world.cancelTimers(),clearBalloons(o),o.world.scoreboard.reset(MAX_LIVES),o.won=!1,o.time=0,o.pending=0,o.phase="ready",o.onScore(0),o.onLives(MAX_LIVES),o.onTime(TIME_LIMIT),o.onPhase("ready")}export function dispose(o){o.world.cancelTimers(),o.world.dispose()}function end(o,e){o.world.cancelTimers(),o.world.scoreboard.stop(),clearBalloons(o),o.won=e,o.phase="over",e?o.onWin():o.onLose(),o.onPhase("over")}export function tick(o,e){if(o.world.isDisposed)return;const n=Math.max(0,Math.min(e,FRAME_TIME*MAX_FRAMES));o.time+=n;let a=!1;if("playing"===o.phase)for(o.pending=Math.min(o.pending+n,FRAME_TIME*MAX_FRAMES);o.pending+1e-9>=FRAME_TIME;)o.balloons.length&&(step(o,1),a=!0),o.pending=Math.max(0,o.pending-FRAME_TIME);if(a&&o.view&&o.layout){const e=o.world.transforms;for(const n of o.balloons)placeBalloon(o.world,o.view,n.root,n.what,n.x+o.layout.size/2,n.y+o.layout.bodyHeight/2,e);e.flush()}o.world.update(n)}function step(o,e){const n=o.layout,{left:a,right:r}=balloonBounds(n),s=o.balloons;let t=0;for(const l of o.balloons){l.vy+=LIFT*e;let i=l.x+l.vx*e;const d=l.y+l.vy*e;d<2*-n.size?o.world.despawn(l.root):(i<=a?(i=a,l.vx=Math.abs(l.vx)*WALL_BOUNCE):i>=r&&(i=r,l.vx=-Math.abs(l.vx)*WALL_BOUNCE),l.x=i,l.y=d,s[t++]=l)}s.length=t,separateBalloons(o.balloons,n)}export function touch(o,e,n){const a=o.layout,r=o.view;if(!a||!r||"playing"!==o.phase)return;let s=null,t=1/0;for(const r of o.balloons){if(e<r.x-TOUCH_PAD||e>r.x+a.size+TOUCH_PAD||n<r.y-TOUCH_PAD||n>r.y+a.totalHeight+TOUCH_PAD)continue;const o=(e-(r.x+a.size/2))**2+(n-(r.y+.625*a.size))**2,l="bomb"===r.what.kind,i="bomb"===s?.what.kind;(l&&!i||l===i&&o<t)&&(s=r,t=o)}if(!s)return;const l=s;if(o.balloons=o.balloons.filter(o=>o!==l),popBalloon(o.world,r,a,l.root,l.what,l.x+a.size/2,l.y+a.bodyHeight/2),"bomb"===l.what.kind)return o.onBomb(),void o.world.scoreboard.addLives(-1);o.onPop(),"life"===l.what.kind?o.world.scoreboard.lives<MAX_LIVES&&o.world.scoreboard.addLives(1):o.world.scoreboard.add(POINTS_PER_BALLOON)}
@@ -0,0 +1 @@
1
+ "use strict";import{BALLOON_BOUNCE,BALLOON_GAP,BALLOON_HIT}from"./BalloonBlasterConstants.js";export const balloonDistance=t=>t.size*BALLOON_HIT+BALLOON_GAP;export const balloonBounds=t=>{const o=(balloonDistance(t)-t.size)/2;return{left:o,right:Math.max(o,t.width-t.size-o)}};export function findBalloonSpawn(t,o,n,s=Math.random){const{left:a,right:e}=balloonBounds(o),l=balloonDistance(o)+.1;let r=[[a,e]];for(const o of t){const t=Math.abs(o.y-n);if(t>=l)continue;const s=Math.sqrt(l*l-t*t),a=o.x-s,e=o.x+s,i=[];for(const[t,o]of r)e<=t||a>=o?i.push([t,o]):(a>t&&i.push([t,a]),e<o&&i.push([e,o]));r=i}const i=r.reduce((t,[o,n])=>t+Math.max(0,n-o),0);if(i<.001)return null;let f=Math.max(0,Math.min(.999999,s()))*i;for(const[t,o]of r){if(f<=o-t)return t+f;f-=o-t}return null}export function separateBalloons(t,o){const{left:n,right:s}=balloonBounds(o),a=t=>Math.max(n,Math.min(s,t)),e=balloonDistance(o);for(const o of t)o.x=a(o.x);for(let o=0;o<12;o++){let o=0;for(let n=0;n<t.length;n++)for(let s=n+1;s<t.length;s++){const l=t[n],r=t[s],i=r.x-l.x,f=r.y-l.y;if(Math.abs(i)>=e||Math.abs(f)>=e)continue;const h=Math.hypot(i,f);if(h>=e)continue;o=Math.max(o,e-h);const x=h>.001?i/h:0,u=h>.001?f/h:1,M=(e-h+.01)/2;l.x=a(l.x-x*M),r.x=a(r.x+x*M),l.y-=u*M,r.y+=u*M;const y=(r.vx-l.vx)*x+(r.vy-l.vy)*u;if(y<0){const t=y*(1+BALLOON_BOUNCE)/2;l.vx+=t*x,r.vx-=t*x,l.vy+=t*u,r.vy-=t*u}}if(o<.01)return}const l=[...t].sort((t,o)=>t.y-o.y);for(let t=1;t<l.length;t++){const o=l[t];for(let n=0;n<t;n++){const t=l[n],s=o.x-t.x;Math.abs(s)>=e||(o.y=Math.max(o.y,t.y+Math.sqrt(e*e-s*s)+.01))}}}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,lathe,merge,Path,quat,tube}from"@nayan-ui/engine";import{lighten}from"../../services/GamesConstants.js";import{at,facing,pointSize}from"../shared/EngineMeadow.js";import{createGameMesh as _0x1a71e2}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{BALLOON_COLORS,FRAME_TIME,POP_SWELL,POP_TIME,RAINBOW}from"./BalloonBlasterConstants.js";const PER_SECOND=1/FRAME_TIME,PROFILE=[[.001,-.6],[.07,-.57],[.17,-.5],[.3,-.36],[.42,-.17],[.49,.03],[.5,.18],[.47,.34],[.39,.48],[.26,.58],[.12,.622],[.001,.625]],KNOT=[[.001,-.68],[.06,-.66],[.045,-.62],[.02,-.59],[.001,-.585]];let meshes;export function balloonMeshes(){return meshes??={body:_0x1a71e2(merge([{geometry:lathe(PROFILE,{segments:28})},{geometry:lathe(KNOT,{segments:10})}]),{center:!1,shine:.75}),rainbow:_0x1a71e2(merge([{geometry:lathe(PROFILE,{segments:28,color:({v:e})=>{const o=toColor(RAINBOW[Math.min(RAINBOW.length-1,Math.floor(e*RAINBOW.length))]);return[o[0],o[1],o[2]]}})},{geometry:lathe(KNOT,{segments:10}),color:toColor(RAINBOW[0])}]),{center:!1,shine:.75}),string:_0x1a71e2(tube([[0,-.66,0],[.035,-.8,.01],[-.03,-.95,-.01],[.02,-1.08,0],[0,-1.16,0]],{radius:.008,sides:5,smoothness:4,color:[.92,.92,.9]}),{center:!1}),danger:_0x1a71e2(merge([{geometry:extrude((new Path).addCircle(0,0,.5),{depth:.04,color:[.95,.08,.08]})},{geometry:extrude((new Path).addRoundedRect(-.07,-.3,.14,.38,.06),{depth:.02,color:[1,1,1]}),position:[0,0,.03]},{geometry:extrude((new Path).addCircle(0,.24,.075),{depth:.02,color:[1,1,1]}),position:[0,0,.03]}]),{center:!1,shine:.3})},meshes}const colorOf=e=>toColor(e),BOMB=[.07,.07,.08,1],sparkOf=e=>{const[o,t,n]=e;return[Math.min(1,o+.35),Math.min(1,t+.35),Math.min(1,n+.35)]},BALLOON_SPARKS=new Map(BALLOON_COLORS.map(e=>[e,sparkOf(toColor(e))])),LIFE_SPARKS=[...RAINBOW,"#FFFFFF"].map(e=>toColor(e)),BOMB_BURST=["#1f2937","#374151","#f97316","#fde047"].map(e=>toColor(e)),ORANGE=toColor(lighten("#f97316",.2)),depthOf=(e,o)=>e.playDepth-("bomb"===o.kind?.08:0);export function spawnBalloon(e,o,t,n,s,a,i){const r=balloonMeshes(),l=t.size*pointSize(o,depthOf(o,n)),p=e.spawn({mesh:"none",position:at(o,s,a,depthOf(o,n)),rotation:facing(o,-.1),pickable:!1});e.animate(p,{rotation:facing(o,.1)},{duration:1.6+30*Math.abs(i),easing:"easeInOut",repeat:"forever",yoyo:!0});const m=(o,t,n=[0,0,0],s=l)=>e.spawn({mesh:o,parent:p,position:n,scale:s,color:t,pickable:!1});"life"===n.kind?m(r.rainbow,[1,1,1,1]):m(r.body,"balloon"===n.kind?colorOf(n.color):BOMB);const h=e.spawn({mesh:r.string,parent:p,scale:l,color:[1,1,1,1],rotation:quat.z(-.12),pickable:!1});return e.animate(h,{rotation:quat.z(.12)},{duration:1.1+.6*Math.random(),easing:"easeInOut",repeat:"forever",yoyo:!0}),"bomb"===n.kind&&m(r.danger,[1,1,1,1],[0,.05*l,.47*l],.34*l),p}export function placeBalloon(e,o,t,n,s,a,i){const r=at(o,s,a,depthOf(o,n));i?i.position(t,r[0],r[1],r[2]):e.set(t,{position:r})}export function popBalloon(e,o,t,n,s,a,i){const r=pointSize(o),l=t.size*r,p=at(o,a,i,depthOf(o,s)-.6*l);e.stopAnimation(n),e.set(n,{spin:[0,0,0]}),e.animate(n,[{scale:POP_SWELL,at:.3},{scale:0}],{duration:POP_TIME,easing:"linear"}).then(()=>e.despawn(n));const m=.12*PER_SECOND*PER_SECOND*r;if("bomb"===s.kind){effects.explosion(e,{position:p,count:16,size:.7*l,speed:2.6*l,lifetime:.6,gravity:.5*-m,debris:BOMB_BURST,smoke:[.35,.35,.38,.7],flash:!1});const o=e.spawn({mesh:"puff",position:p,scale:1.2*l,color:[2*ORANGE[0],2*ORANGE[1],2*ORANGE[2],.9],pickable:!1});return void e.animate(o,{scale:3.6*l,color:[2,.9,.2,0]},{duration:.35}).then(()=>e.despawn(o))}const h="life"===s.kind?LIFE_SPARKS:[colorOf(s.color),BALLOON_SPARKS.get(s.color)];"life"===s.kind?effects.sparkle(e,{position:p,count:18,size:.08*l,speed:5.5*l,lifetime:.6,gravity:.5*-m,colors:h}):effects.shatter(e,{position:p,count:10,mesh:"cube",size:.11*l,speed:5.5*l,lifetime:.6,gravity:-m,colors:h,dust:!1})}
@@ -0,0 +1 @@
1
+ "use strict";import{block,ellipsoid,lathe,loft,merge,quat,smoothCurve,tube}from"@nayan-ui/engine";import{AXLE_X,wheel}from"../car-racing/CarMeshes.js";import{cacheGameAsset,createGameMesh as _0xc488}from"../shared/EngineMeshes.js";const TAU=2*Math.PI,SMOKED=[.05,.065,.09],BLACK=[.02,.02,.022],SATIN=[.07,.07,.08],CARBON=[.055,.055,.065],ALUMINIUM=[.68,.7,.73],CHROME=[.82,.83,.86],GOLD=[.86,.62,.16],STEEL=[.55,.56,.58],TITANIUM=[.52,.54,.58],HEADLIGHT=[.95,.97,1],DRL=[1.4,1.4,1.45],TAIL_LIGHT=[.85,.04,.04],AMBER=[1,.55,.08],PLATE=[.9,.9,.88],SPRING=[.95,.75,.1],BURNT=[.3,.26,.3],WHEEL_R=.3,FRONT=-.72,REAR=.72,FAIRING=[{z:-.99,bottom:.64,top:.72,width:.04,square:2.4},{z:-.92,bottom:.6,top:.8,width:.15,square:2.8},{z:-.8,bottom:.63,top:.87,width:.22,square:3},{z:-.68,bottom:.66,top:.9,width:.26,square:3},{z:-.56,bottom:.6,top:.88,width:.27,square:3},{z:-.46,bottom:.47,top:.8,width:.26,square:3.2},{z:-.38,bottom:.26,top:.74,width:.25,square:3.4},{z:-.15,bottom:.21,top:.66,width:.22,square:3.4},{z:.04,bottom:.23,top:.62,width:.18,square:3.2},{z:.16,bottom:.32,top:.58,width:.12,square:3}],TANK=[{z:-.54,bottom:.78,top:.86,width:.1,square:3.4},{z:-.42,bottom:.72,top:.915,width:.16,square:3.6},{z:-.22,bottom:.68,top:.915,width:.17,square:3.6},{z:-.04,bottom:.68,top:.87,width:.13,square:3.4},{z:.1,bottom:.72,top:.83,width:.1,square:3}],TAIL=[{z:.02,bottom:.5,top:.79,width:.15,square:3.4},{z:.2,bottom:.56,top:.82,width:.145,square:3.4},{z:.4,bottom:.68,top:.85,width:.125,square:3.2},{z:.6,bottom:.77,top:.89,width:.1,square:3.2},{z:.85,bottom:.84,top:.925,width:.06,square:3},{z:.985,bottom:.875,top:.92,width:.02,square:2.6}],rod=(o,t,e,s,r=10)=>({geometry:tube([o,t],{radius:e,sides:r,smoothness:1}),color:s}),arc=(o,t,e,s,r,i,a=8)=>Array.from({length:a+1},(n,m)=>{const h=r+(i-r)*m/a;return[o,t+Math.sin(h)*s,e-Math.cos(h)*s]}),disc=(o,t=GOLD)=>lathe([[.001,.004],[o,.004],[o,-.004],[.001,-.004]],{segments:36,color:({u:e,position:[s,,r]})=>{const i=Math.hypot(s,r);return i<.55*o?Math.cos(e*TAU*6)>.3?t:BLACK:Math.cos(e*TAU*20)>.85&&i>.66*o&&i<.92*o?BLACK:STEEL}});export const BIKE_FOOTPRINT={length:2.04,halfWidth:smoothCurve([[-1.02,.06],[-.9,.15],[-.7,.26],[-.47,.34],[-.3,.28],[-.06,.3],[.13,.28],[.4,.17],[.7,.12],[1.02,.08]])};let bike=null;export function bikeMeshes(){return cacheGameAsset("bike-racing/BikeMeshes:bikeMeshes",()=>bikeMeshesUncached())}function bikeMeshesUncached(){if(bike)return bike;const o=_0xc488(merge([{geometry:loft(FAIRING,{around:40,smoothness:5})},{geometry:loft(TANK,{around:32,smoothness:4})},{geometry:loft(TAIL,{around:28,smoothness:4})}]),{center:!1,shine:.9}),t=_0xc488(merge([{geometry:ellipsoid([.17,.2,.016],SMOKED,24),position:[0,.93,-.66],rotation:quat.x(.95)}]),{center:!1,shine:.95}),e={rim:.74,spokes:5,rimColor:SATIN,spokeColor:SATIN,gapColor:BLACK},s=[{geometry:wheel(.3,.12,e),position:[0,.3,-.72],rotation:AXLE_X},{geometry:wheel(.3,.19,e),position:[0,.3,.72],rotation:AXLE_X},{geometry:disc(.15,STEEL),position:[.105,.3,.72],rotation:AXLE_X},{geometry:disc(.1,BLACK),position:[-.11,.3,.72],rotation:AXLE_X},{geometry:block(.07,.05,.04,6,BLACK),position:[0,.665,-.965]},{geometry:block(.18,.03,.12,6,ALUMINIUM),position:[0,.885,-.5]},{geometry:block(.26,.06,.4,5,BLACK),position:[0,.83,.25]},{geometry:block(.016,.26,.016,4,CARBON),position:[0,.7,.95]},{geometry:block(.16,.1,.012,6,PLATE),position:[0,.57,.96]},{geometry:block(.08,.025,.02,6,TAIL_LIGHT),position:[0,.895,.975]},{geometry:tube([[0,.42,.2],[0,.68,.12]],{radius:.038,sides:12,smoothness:1,color:({v:o})=>Math.sin(o*TAU*9)>0?SPRING:BLACK})},{geometry:tube(arc(0,.3,-.72,.335,.55,2.3,8),{radius:.06,shape:o=>.25+.75*Math.abs(Math.cos(o*TAU)),sides:12,smoothness:3}),color:CARBON},{geometry:tube(arc(0,.3,.72,.33,.6,1.6,6),{radius:.09,shape:o=>.22+.78*Math.abs(Math.cos(o*TAU)),sides:12,smoothness:3}),color:CARBON},rod([-.11,.37,.06],[-.11,.39,.72],.008,BLACK,6),rod([-.11,.25,.08],[-.11,.21,.72],.008,BLACK,6),{geometry:tube([[.05,.26,-.3],[.08,.25,0],[.12,.26,.2],[.16,.3,.34]],{radius:.025,sides:10,smoothness:4,color:BURNT})},{geometry:tube([[.16,.3,.34],[.185,.4,.52],[.2,.47,.66]],{radius:o=>.048+.008*o,sides:16,smoothness:3,color:TITANIUM,capColor:CARBON})}];for(const o of[-1,1])s.push({geometry:ellipsoid([.075,.016,.05],HEADLIGHT),position:[.07*o,.705,-.925],rotation:quat.y(.45*-o)},{geometry:block(.08,.008,.012,6,DRL),position:[.075*o,.726,-.915],rotation:quat.y(.45*-o)},rod([.085*o,.3,-.72],[.085*o,.56,-.62],.02,CHROME),rod([.085*o,.54,-.63],[.085*o,.9,-.48],.03,GOLD),{geometry:disc(.2),position:[.075*o,.3,-.72],rotation:AXLE_X},{geometry:block(.04,.13,.07,6,GOLD),position:[.11*o,.42,-.64],rotation:quat.x(.5)},...[.46,.52,.58].map(t=>({geometry:block(.012,.018,.16,6,BLACK),position:[.247*o,t,.5*(.52-t)-.33]})),{geometry:block(.03,.26,.24,5,ALUMINIUM),position:[.135*o,.5,.1],rotation:quat.x(-.25)},{geometry:tube([[.12*o,.42,.1],[.12*o,.37,.4],[.115*o,.3,.72]],{radius:.035,shape:o=>.6+.4*Math.abs(Math.sin(o*TAU)),sides:12,smoothness:3,color:ALUMINIUM})},rod([.08*o,.86,-.5],[.28*o,.79,-.47],.016,ALUMINIUM),rod([.27*o,.79,-.47],[.345*o,.785,-.465],.025,BLACK),rod([.14*o,.38,.12],[.27*o,.38,.12],.014,ALUMINIUM),{geometry:block(.01,.12,.09,6,ALUMINIUM),position:[.19*o,.42,.16]},rod([.2*o,.38,.1],[.21*o,.35,-.04],.008,ALUMINIUM,6),rod([.2*o,.84,-.7],[.26*o,.9,-.68],.01,BLACK),{geometry:ellipsoid([.055,.03,.03],BLACK),position:[.28*o,.91,-.68]},{geometry:ellipsoid([.02,.008,.01],AMBER),position:[.3*o,.905,-.7]},rod([0,.64,.95],[.1*o,.64,.95],.008,BLACK),{geometry:ellipsoid([.025,.012,.012],AMBER),position:[.11*o,.64,.95]});const r=_0xc488(merge(s),{center:!1,shine:.5});return bike={body:o,trim:r,glass:t},bike}
@@ -1 +1 @@
1
- "use strict";const _0x566726=_0x4a59;!function(){const e=_0x4a59,t=_0x2f9f();for(;;)try{if(754885==parseInt(e(322,"f5I("))/1*(parseInt(e(210,"TNde"))/2)+parseInt(e(263,"o1Th"))/3+parseInt(e(281,"EV@N"))/4+-parseInt(e(320,"DWOq"))/5*(-parseInt(e(201,"3YKo"))/6)+-parseInt(e(304,"&s]!"))/7*(parseInt(e(231,"3YKo"))/8)+parseInt(e(277,"*i(p"))/9*(parseInt(e(239,"vFpS"))/10)+parseInt(e(259,"EV@N"))/11*(-parseInt(e(209,"[Qh)"))/12))break;t.push(t.shift())}catch(e){t.push(t.shift())}}();import _0x517fe3,{useRef,useCallback,useMemo}from"react";import{View,StyleSheet}from"react-native";import{GestureDetector,Gesture,GestureHandlerRootView}from"react-native-gesture-handler";import{useBikeRacingStore,useScore,useIsPlaying,useGameOver,useObstacles,usePlayerBike,useParticleEffects,useLives}from"./BikeRacingStore.js";import{BikeRacingService}from"./BikeRacingService.js";import{GameBackground}from"./components/GameBackground.js";import{BikeComponent}from"./components/BikeComponent.js";import{ScoreBoard}from"./components/ScoreBoard.js";function _0x4a59(e,t){e-=192;const o=_0x2f9f();let n=o[e];if(void 0===_0x4a59.PzvfiE){const e=function(e,t){let o,n,a=[],r=0,s="";for(e=function(e){let t="",o="";for(let o,n,a=0,r=0;n=e.charAt(r++);~n&&(o=a%4?64*o+n:n,a++%4)?t+=String.fromCharCode(255&o>>(-2*a&6)):0)n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(n);for(let e=0,n=t.length;e<n;e++)o+="%"+("00"+t.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(o)}(e),n=0;n<256;n++)a[n]=n;for(n=0;n<256;n++)r=(r+a[n]+t.charCodeAt(n%t.length))%256,o=a[n],a[n]=a[r],a[r]=o;n=0,r=0;for(let t=0;t<e.length;t++)n=(n+1)%256,r=(r+a[n])%256,o=a[n],a[n]=a[r],a[r]=o,s+=String.fromCharCode(e.charCodeAt(t)^a[(a[n]+a[r])%256]);return s};_0x4a59.XFewJq=e,_0x4a59.QasfGS={},_0x4a59.PzvfiE=!0}const a=o[0];_0x4a59.WWmDkH!==a&&(_0x4a59.QasfGS={},_0x4a59.WWmDkH=a);const r=_0x4a59.QasfGS[e];return void 0===r?(void 0===_0x4a59.kzflRB&&(_0x4a59.kzflRB=!0),n=_0x4a59.XFewJq(n,t),_0x4a59.QasfGS[e]=n):n=r,n}import{GameControlButton,GameOverModal,GameSettingsModal,ParticleBlast}from"../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS,getGameDimensions}from"../../services/UtilsService.js";import{BIKE_RACING_COLORS,BIKE_RACING_GAME_CONFIG}from"./BikeRacingConstants.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";function _0x2f9f(){const e=["hCowDLpcOW","W7GgW6JcTmoSW4BcTW","WO/dRcSHprhcGG","W4JcJ8o+W7xdIG","WR/dLr0XWQ0XWOe","W4/cVbldIcJdOXyNFSoiqa","celdNaTqWQvr","emogcetcKfZdH8k0xMBcSCk9W6G","ELFdHLBcRmk6W6vsWR/cOx5d","WPVdSd0Nma","ggRcVcBdJNyQdaG","rX7cTWS8WPdcSxe","BuZcLIFdP1y+FCoxz8k2W4FcLa","WQRcT8kiWQXHrCo3W5fK","mYldLv7cTG","zGJdSZ5pWRW1BxiT","WQhdOM0WqeJcHW","W6jWobJcM8oCjZnRW5JdPZVcMG","ctZdTsPXWRz2WPK","W5jvgCkaiCknrWK","dYnRWQ/cMaxcUmkR","W4zeaSkJeSknxGK","nmojwxdcQG","pmk9d3iXW4mB","irbA","pSo9WPD7a8odWPRcHhVdQKH8W5/cSM3cU8k4W4jmWOm","jWVcGqC","W7TRsMD6W5rAua7dK0aUwa","W73cMtJdTbldGW","W6THWPldRCoAW5NdOW","WQ3dSxKXqfi","W7pcR8oDW4NdTG","e1pcHCkzxrtdGa","kmknxW3dM3fDW6BcSW","pWvfWOZcLYhcKCoV","W5TsgwLHCNRcQ8kqv1Xz","a8ovW6FdNSkxWQVcLq","WO3dLuWwzgxcV8oIdSoZW4vplGzqW75fWONdK1FdPupdLG","W5LQg8kspa","W5FcKIVdL8kBmGi","FmkCEvpcP0zj","WQ3dUuOYquFcH8oc","amoDW4dcJrdcISoP","W6vXpSka","WQxdSMSruuFcH8oc","DCoNa8k0W73cSa","qmooW5tcNbBdLmkT","CSoRASkpW6ZdIe9tW4hdKCocWQe","lMRcTCo7W5LthW","adbKWRNcJXFcTCooi8o/","i8kcWOxcKby","W6XFgmoZj8knxuZcRmoHWPNcOmk5A2GTWQaeCSkJW7S","D8kxCmolx8kZCq","WOCfuq","qSowlSkdW50","ECoBbZxdKMPlW5G","FedcKmogW7zhcCor","W7LRtqGJWOu/zrm","emonW4BcRXNcHCoKFNVdQa","hCouWQjHj8o9WQNcPfxdNxDa","WPinlq","jbrdWPVcUdq","WRddOmoCEcZcOmkd","FmoBbd7dOgPRW4ZcHL/dOa","W4LwWOZdVSo5","jSo2W47dNJr3W4VdP8kgBIFdGM0","W4pdISo7gvhdGCoVWOffzSoQ","mM/cVmkUzYJdTv7dM8kUaG","WRbLiYm7W5pdPI7cUa","WO3dLCkUWRhcKWL9WQ3cS8kRWRX9WOK","WQVdPe8Urf/cMSojnG","ob3dL0ZcQWfYFq","WPKammoX","cCouWQjXmSoWWRhcOW","uXRcRG","bmonW4BcRahcHCoPFG","imk2wSoJW4tcHHH4omkV","tMZdObXyWQvrWROL","W7VdO8otj3ZdPW","W7ldSSoGW7q1cSouW7XLihCl","iSo3sNRcQx0","nmoMk2lcQNq","khBcHJFdRW","W4XmWR/cIKzSW6S/","DWJdVc59WQe6ENq","WRKGW5xcRCoYW6tdNmo0W4vI","W4TxWO3cJebcW6q1W4q","nSk0vSoGx8kHDCo7nq","iSkRWPxcNc7cTGS","kCkZvSoJWRhdPWPJkSkBb3q","WP8xrbGYiLxcI8kc","W5vcWPtcSLvRW6a","fmkVWOxcJxZcMbxcKCkeWRFdKa","wZJdVNRcJWL5dJuMuGRdGG","W6dcLchdMH7dLsmm","aLpcMCkKvJddPW","W7hcTqVdQSkS","jmk6og44","sCo1kb/dQfrlW7lcS2K","WQy9ftSyWOumsZ4","WPWzj8o7WPO0kW","WR3cRvivf1m","umoGW5ddO8kfWR7cGmkd","WOddKJJdNmkXksldHG","WObvhrqDW6NdMW","WQS5jmkWvI/cNb7dQgldNXJdT8kdBG","kSo0wfRcUgJcU8o8","WROGW5xcP8khWOhcR8o8W7zUW5FdTwy","y8kSWPq","WOddGY8smq","WOjchaKuW7ldMWtcRG","DSk4W5ddRgHtW6q","W55pWOpcKuy","W7VdTSoUWPbRvSoOW69k","lqJcLXO","swNcQxxcJaf7","fmkbWQFcRapcIIlcTCkOWP0","WQdcSCkQWRjLuSoQ","kbhcGbddVSoJW5a","WQVdIXGacYdcSCkAW4TXDq","mSoljNNcHq","WQC1fq","EM/dKWv9","vZxdKWLu","WO03i8k8vh3cHXNdP2ddUH7dUmomAb7cG2FdM8kYWP9KWQ8","kaVcNbBdUSoKW4PsWPO","WPK5kq","W6JcUtRdTt0","isbXrKu","CSo3hCkJW6ZcUYC","i8kixWVdNhj8W6ZcVW","WOuzcCkEBGRcUI/dKK4","u8oXpXJdUa","W6DlfJZcSmkUfbLgW7/dJG","eCkAf18pW6m/W6BdTtNdOq","xNZdPIfBWQ1w","ASk0W4VcN1u","jCk7WPtcMJNcTWy","mmoVF8kgW6BdM10","WPldNey2AG"];return(_0x2f9f=function(){return e})()}import{setGameInterval,clearGameInterval}from"../../helpers/GameTimer.js";import{jsx as _0x302630,jsxs as _0x91883c}from"react/jsx-runtime";const{width:width,height:height}=getGameDimensions(),PARTICLE_COLORS=[_0x566726(289,"r5t^"),_0x566726(236,"McIp"),"#ffaa66",_0x566726(220,"PlPd"),_0x566726(285,"8ZzM"),_0x566726(312,"7lPv")];export const BikeRacing=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:t,onEndGame:o,onReplayGame:n,onShare:a,onShareScreenshot:r,onShowLeaderboard:s,bannerAd:W})=>{const i="iClS",d="mGaY",u=_0x566726,l={lZvAi:function(e,t,o){return e(t,o)},dDgYb:u(282,"vFpS"),eLcxJ:function(e,t,o){return e(t,o)},ABlaF:"cancel",ByItU:function(e){return e()},PKYtO:function(e,t){return e*t},yXuyf:function(e,t){return e-t},PjvHC:function(e,t){return e-t},PGZZo:function(e,t){return e/t},APmbL:function(e,t){return e!==t},bPPIy:function(e){return e()},wVcWy:function(e,t,o){return e(t,o)},HKVCO:function(e,t,o){return e(t,o)},JsfZo:function(e,t,o){return e(t,o)},GfGVC:function(e,t,o){return e(t,o)}},S=e?.enableSounds??!0,m=e?.enableHaptics??!0,G=e?.[u(254,"QZ67")]??0,f=l.ByItU(useScore),k=useIsPlaying(),x=useGameOver(),_=l.bPPIy(useLives),C=useObstacles(),R=usePlayerBike(),p=useParticleEffects(),I=useRef(!1),h=useRef(o);h.current=o;const O=useRef(S);O[u(213,"*i(p")]=S;const g=useRef(m);g[u(206,"n&lY")]=m;const P=l[u(301,i)](useCallback,e=>{const t=u;if(h[t(330,"huts")]&&!I[t(303,"o1Th")]){const o=useBikeRacingStore[t(193,"v%4Q")]().score;h[t(274,"5aF2")]({status:e,score:o[t(257,"mGaY")]()}),I.current=!0}},[]),N=useCallback((e,t)=>useBikeRacingStore[u(247,"Obwp")]().startGame(e,t),[]),b=useCallback(()=>useBikeRacingStore[u(249,"PlPd")]()[u(208,"]$Vb")](),[]),B=useCallback(()=>useBikeRacingStore[u(276,"TNde")]()[u(324,"r5t^")](),[]),M=useCallback(e=>{useBikeRacingStore[u(245,"#mOV")]().removeParticleEffect(e)},[]),E=_0x517fe3.useMemo(()=>new BikeRacingService(BIKE_RACING_GAME_CONFIG[u(290,"RFgg")],BIKE_RACING_GAME_CONFIG[u(211,"huts")]),[]);_0x517fe3[u(264,"[Qh)")](()=>{const e=u;useBikeRacingStore[e(218,"huts")]()[e(251,"DWOq")](G);const t=height-BIKE_RACING_GAME_CONFIG[e(199,"Obwp")]-BIKE_RACING_GAME_CONFIG.BIKE_HEIGHT;E[e(232,"PlPd")](t)},[G,E]),_0x517fe3.useEffect(()=>{E[u(233,"Obwp")](()=>{const e=_0x4a59;l[e(328,"#mOV")](playSound,GAME_SOUNDS[e(319,"iClS")][e(297,"CNH1")],O[e(206,"n&lY")]),l[e(283,"@ul*")](playHaptic,HapticType[e(270,"*i(p")],g[e(203,"EV@N")])},()=>{const e=_0x4a59;playSound(GAME_SOUNDS[e(241,"n&lY")][e(217,"v%4Q")],O.current),playHaptic(HapticType[e(205,"D1!r")],g[e(291,"9gln")])})},[E]),_0x517fe3.useEffect(()=>{if(!k)return;const e=setGameInterval(()=>{useBikeRacingStore.getState().decrementTime()},1e3);return()=>clearGameInterval(e)},[k]),_0x517fe3[u(261,"6b3&")](()=>{const e=u;if(x&&!I[e(292,"f5I(")]){const t=_>0?l.dDgYb:e(200,"f5I(");P(t)}!x&&(I.current=!1)},[x,_,P]),_0x517fe3.useEffect(()=>()=>{const e=_0x4a59;useBikeRacingStore[e(280,"QZ67")]()[e(244,"huts")]&&!I[e(316,"@ul*")]&&P(e(255,"t*6z")),E[e(262,"RFgg")](),B()},[E]);const v=useCallback(()=>{const e=u;I[e(309,"DWOq")]=!1,l.eLcxJ(N,BIKE_RACING_GAME_CONFIG[e(321,"t*6z")],G),E[e(260,"mGaY")](),playSound(GAME_SOUNDS[e(307,"Ouru")][e(228,"o1Th")],O.current),l[e(294,"t*6z")](playHaptic,HapticType[e(315,"H2h^")],g[e(214,"I(fE")])},[N,G,E]),K=useCallback(()=>{const e=u;P(l[e(238,"EV@N")]),b(),E[e(195,"v%4Q")]()},[P,b,E]),y=l[u(212,"v%4Q")](useCallback,()=>{const e=u;n?.(),l[e(256,"r5t^")](B),E.cleanup()},[B,E,n]),A=useRef(new Map),L=l[u(328,"#mOV")](useCallback,e=>{const t=u;let o=A[t(318,"%en1")].get(e);return!o&&(o=()=>{const o=t;M(e),A.current[o(219,"o1Th")](e)},A[t(311,"RFgg")][t(248,"CVU8")](e,o)),o},[M]),Q=useRef(1),T=useMemo(()=>{const e=u,t=l[e(313,"huts")](BIKE_RACING_GAME_CONFIG[e(223,"]$Vb")],BIKE_RACING_GAME_CONFIG[e(272,"&s]!")]);return{roadStartX:l[e(196,"QZ67")](width,t)/2,laneWidth:BIKE_RACING_GAME_CONFIG[e(305,"94bP")],maxLane:l.PjvHC(BIKE_RACING_GAME_CONFIG.ROAD_LANES,1)}},[]),V=useMemo(()=>Gesture[u(300,"94bP")]()[u(215,"huts")](e=>{const t=u;if(!useBikeRacingStore.getState()[t(327,"9gln")])return;const o=e[t(284,"KKkJ")]-T[t(329,"CNH1")],n=Math[t(286,d)](l[t(314,"QZ67")](o,T[t(273,"3YKo")])),a=Math[t(234,"5aF2")](0,Math[t(295,"3YKo")](T[t(265,d)],n));l.APmbL(a,Q[t(278,"KKkJ")])&&(Q.current=a,playSound(GAME_SOUNDS[t(308,"o!Xk")].LANE_SWITCH,O[t(216,"PlPd")]),l[t(224,"RFgg")](playHaptic,HapticType[t(242,"KKkJ")],g[t(214,"I(fE")])),E.movePlayerToLane(a)})[u(269,"n&lY")](!0),[T,E]),H=l.wVcWy(useMemo,()=>({isPlaying:k,gameOver:x,onStartGame:v,onStopGame:K,onShare:a,onShowLeaderboard:s,startButtonSubtext:u(298,"94bP")}),[k,x,v,K,a,s]),F=l[u(306,"&s]!")](useMemo,()=>({isVisible:x,score:f,onPlayAgain:y,buttonText:u(266,"RFgg"),title:_>0?"TIME UP!":u(194,"]$Vb"),message:_>0?u(331,"Ouru"):u(225,"v%4Q")}),[x,f,y,_]),J={};J.width=width,J[u(268,i)]=width;const q=useMemo(()=>[styles[u(237,"&s]!")],J],[]),j=useMemo(()=>({gameId:GAME_IDS.BIKE_RACING,settings:e||DEFAULT_GAME_SETTINGS,onSettingsChange:t}),[e,t]),D={};D[u(323,"@ul*")]=width,D.height=height;const w={};w[u(204,"huts")]=G;const X={};X.id=u(202,"iClS"),X.x=R.x,X.y=R.y,X.width=R[u(317,"D1!r")],X[u(235,"]$Vb")]=R[u(275,"o)4^")],X[u(302,"MX(!")]=BIKE_RACING_COLORS[u(240,"McIp")],X.isPlayer=!0;const U={...H},Z={...F};Z[u(197,"o!Xk")]=r,Z[u(229,"&s]!")]=W;const Y={...j};return _0x302630(GestureHandlerRootView,{style:styles[u(258,"CNH1")],children:_0x91883c(View,{style:q,children:[_0x302630(View,{style:StyleSheet[u(221,"7lPv")],children:l[u(310,"jXoK")](_0x302630,GameBackground,D)}),_0x302630(ScoreBoard,w),_0x302630(GestureDetector,{gesture:V,children:l[u(296,"DWOq")](_0x91883c,View,{style:styles[u(325,"CVU8")],children:[C[u(227,"[Qh)")](e=>_0x302630(BikeComponent,{id:e.id,x:e.x,y:e.y,width:e[u(271,"o!Xk")],height:e[u(252,"McIp")],color:e.color,isPlayer:!1},e.id)),l.eLcxJ(_0x302630,BikeComponent,X)]})}),p[u(198,"]$Vb")](e=>_0x302630(ParticleBlast,{x:e.x,y:e.y,particleCount:5,colors:PARTICLE_COLORS,duration:600,onComplete:L(e.id)},e.id)),_0x302630(GameControlButton,U),_0x302630(GameOverModal,Z),_0x302630(GameSettingsModal,Y)]})})};const _0x4cb4b6={};_0x4cb4b6[_0x566726(246,"5aF2")]=1,_0x4cb4b6[_0x566726(279,"94bP")]=BIKE_RACING_COLORS[_0x566726(293,"@ul*")],_0x4cb4b6.alignItems="center";const _0x42a512={};_0x42a512[_0x566726(288,"f5I(")]=1,_0x42a512.alignSelf="center";const _0x4484b9={flex:1},_0x5c4c59={};_0x5c4c59[_0x566726(299,"f5I(")]=_0x4cb4b6,_0x5c4c59.gameWrapper=_0x42a512,_0x5c4c59[_0x566726(230,"haoL")]=_0x4484b9;const styles=StyleSheet.create(_0x5c4c59);
1
+ "use strict";import _0x346788,{useCallback,useEffect,useRef,useState}from"react";import{haptics}from"@nayan-ui/engine";import{resolveGameTheme}from"../../services/ThemeService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{livesColumn,scoreColumn,textColumn}from"../shared/EngineHud.js";import{GameLoading}from"../shared/GameLoading.js";import{GameLoadingTransition}from"../shared/GameLoadingTransition.js";import{useGameResource}from"../shared/useGameResource.js";import{AUTOPLAY,DAY_LIGHT,EDGE,getCachedAssets,LIVES,loadAssets,NIGHT_LIGHT,NIGHT_SKY,SKY,STEER_WIDTH,TRACK_LENGTH}from"./BikeRacingConstants.js";import{createGame,dispose,setAudible,setNight,start,steer,tick}from"./BikeRacingGame.js";import{jsx as _0x1b3441}from"react/jsx-runtime";export{preloadBikeRacing}from"./BikeRacingConstants.js";const RESULTS_DELAY=1200,Run=_0x346788.memo(({assets:e,night:t,onRestart:s,settings:a,onSettingsChange:n,onEndGame:r,onReplayGame:o,onShare:i,onShareScreenshot:u,onShowLeaderboard:m,bannerAd:l})=>{const g=useRef(t),d=useGameResource(()=>createGame(e,g.current),e=>()=>{"playing"===e.phase&&L("cancel"),dispose(e)});useEffect(()=>{setNight(d,t)},[d,t]);const f=useRef(1),[S,G]=useState("ready"),[h,E]=useState(!1),[R,T]=useState(0),[p,A]=useState(LIVES),[C,b]=useState(TRACK_LENGTH),I=useRef(!1),_=useRef(r);_.current=r;const L=useCallback(e=>{_.current&&!I.current&&(I.current=!0,_.current({status:e,score:d.score.toString()}))},[d]);useEffect(()=>{haptics.enabled=a.enableHaptics},[a.enableHaptics]),useEffect(()=>{d.onPhase=G,d.onLives=A,d.onDistance=b,d.onScore=T},[d]),useEffect(()=>{if("over"!==S)return;L(d.lives>0?"win":"lose");const e=setTimeout(()=>E(!0),1200);return()=>clearTimeout(e)},[S,d,L]),useEffect(()=>{if(!AUTOPLAY||"playing"===S)return;const e=setTimeout("ready"===S?()=>start(d):s,"ready"===S?1500:3e3);return()=>clearTimeout(e)},[S,d,s]);const k=useCallback(e=>setAudible(d,e),[d]),H=useCallback(e=>tick(d,e),[d]),D=useCallback(({phase:e,dx:t})=>steer(d,e,t,2*EDGE/(STEER_WIDTH*f.current)),[d]),x=useCallback(()=>{I.current=!1,start(d)},[d]),N=useCallback(()=>{L("cancel"),s()},[L,s]),v=useCallback(()=>{o?.(),s()},[o,s]),j=p>0;return _0x1b3441(EngineGameScreen,{onAudioChange:k,gameId:GAME_IDS.BIKE_RACING,settings:a,onSettingsChange:n,onShare:u??i,onShowLeaderboard:m,bannerAd:l,source:d.world,feedback:d.hudFeedback,camera:d.camera,light:t?NIGHT_LIGHT:DAY_LIGHT,background:t?NIGHT_SKY:SKY,fog:.0075,onUpdate:H,onDrag:D,onResize:e=>{f.current=e},columns:[scoreColumn(R),livesColumn(p,LIVES),textColumn("TRACK",C+" m")],playing:"playing"===S,subtext:"Dodge traffic to score!",onStart:x,onStop:N,gameOver:h?{title:j?"FINISHED!":"CRASHED!",message:j?"You crossed the finish line! Great riding!":"Out of lives "+(TRACK_LENGTH-C)+" m into the "+TRACK_LENGTH+" m race.",scoreLabel:"Final Score",score:R,buttonText:"Race Again!",onPlayAgain:v,onShare:u}:null})});Run.displayName="BikeRacingRun";export const BikeRacing=engineGame(GAME_IDS.BIKE_RACING,e=>{const t=e.settings,s=resolveGameTheme(t.theme),[a,n]=useState(0),[r,o]=useState(getCachedAssets),[i,u]=useState(null);useEffect(()=>{if(r)return;let e=!0;return loadAssets().then(t=>e&&o(t)).catch(t=>e&&u(t.message)),()=>{e=!1}},[r]);const m=useCallback(()=>n(e=>e+1),[]),l=s.isDark;return _0x1b3441(GameLoadingTransition,{ready:!!r,loader:_0x1b3441(GameLoading,{gameId:GAME_IDS.BIKE_RACING,theme:t.theme,offset:t.offset,error:!!i,message:i??void 0}),children:r&&_0x1b3441(Run,{...e,settings:t,assets:r,night:l,onRestart:m},a)})});
@@ -1 +1 @@
1
- "use strict";const _0x3b3649=_0x2088;function _0x1727(){const t=["BSovWRxcH1C","Amk3WRrDWR0","WOCOW5XFW7S","W6mjt05sA8kyAmkDWOvQWRRdKW","WPHJCapcVSkEtge/lISc","WPVdLCkMW7JdSa","dGjRlmkieCkqgaxcOa","j8oxjZPhWPTmpSke","g0GLWR7cPq","wu9bmbFcUZisW7ejDWSY","dqaMWR3dPq","CCoZWROTWO3dJSkOWQZcNLW","WPZcG8kSx2RcOMe","e8o2axNdRmoguSoEW77dQmkyq8omhCkk","wXzHW6JdT8kye8kNW4PvtmoE","hmkzW6HPW67dUWRcMbhdUW","W63dVmoDFvpdKbBdHSkb","W5bVW6BcMWTtW7a","W6qkt0bBACoGtCkxWQz1WPO","WPxdRvVcLY8bWPLPWRG","W7apWOxdH8oOW7HVn04mumkf","WRf2WPBcUtS","lSo6mZTv","FtmArI4","W6JdO0lcL8oxpsZdLvVcOCojW5ek","W7ddSCopBu3dLXVdKCkvyCkpWQ0WW7uV","WRGIW5uflbXcW6awEf/dNq","WP8ve8o5EG","DhbCe8kCiSkFmq","WOXHcf4lDHxdJ3dcHbu","W63dOKRcNSouovhdK1VcMCoSW7C","C3CrwmoHmSkJnJJcGSkU","fCkwo8k+W6jgAq","W6iDWQfYymogW4S","CxZcSeLmdcRdVG","xshcLJZdGq","oudcQmo6bSo8W6W","kSohWPtcTKDzAq","wdVcH8kkACkAWPpcNf1q","WOZdU8kUW6OrW5ZdHdO","W59lv8kVkcf4WRZcSW5tW5y","oZqGwwZdHvCI","pgWOBYNcK3hdIG","WQzbwKioWQhcTW","W7CjWOFdJSoJW7Sna1W8rSksW4m","fqdcIhDyjcxdLe4n","g8ohbWzIW5e/bSk0FG","p8oOD2JcML94wf4q","rCoGWRZcLx4+eeVdSay","j8oIdSklWRddTwXJW7dcMJq","fbJcOKL2"];return(_0x1727=function(){return t})()}!function(){const t=_0x2088,_=_0x1727();for(;;)try{if(383060==-parseInt(t(149,"uCwi"))/1+parseInt(t(174,"pz!r"))/2*(-parseInt(t(152,"UOb4"))/3)+-parseInt(t(148,"2Ux&"))/4+parseInt(t(185,"PySf"))/5+-parseInt(t(171,"a*Dh"))/6*(-parseInt(t(179,"C*Bo"))/7)+parseInt(t(175,"AZ^5"))/8+-parseInt(t(169,"AZ^5"))/9*(-parseInt(t(187,"@%J7"))/10))break;_.push(_.shift())}catch(t){_.push(_.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions}from"../../services/UtilsService.js";const SCALE=getGameDimensions()[_0x3b3649(166,"L7g*")]/360;export const BIKE_RACING_GAME_CONFIG={GAME_DURATION:120,BIKE_WIDTH:Math[_0x3b3649(168,"@%J7")](40*SCALE),BIKE_HEIGHT:Math[_0x3b3649(198,"A]ZL")](70*SCALE),OBSTACLE_WIDTH:Math[_0x3b3649(167,"a)yg")](40*SCALE),OBSTACLE_HEIGHT:Math[_0x3b3649(153,"KzLQ")](70*SCALE),ROAD_LANES:3,LANE_WIDTH:Math[_0x3b3649(172,"PySf")](90*SCALE),ROAD_SPEED:5,OBSTACLE_SPAWN_INTERVAL:2e3,COLLISION_TOLERANCE:Math.round(5*SCALE),POINTS_PER_OBSTACLE_PASSED:500,LANE_SWITCH_DURATION:150,PLAYER_BOTTOM_MARGIN:150};const _0x198bde={};function _0x2088(t,_){t-=148;const W=_0x1727();let o=W[t];if(void 0===_0x2088.twfOkx){const t=function(t,_){let W,o,e=[],C=0,d="";for(t=function(t){let _="",W="";for(let W,o,e=0,C=0;o=t.charAt(C++);~o&&(W=e%4?64*W+o:o,e++%4)?_+=String.fromCharCode(255&W>>(-2*e&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let t=0,o=_.length;t<o;t++)W+="%"+("00"+_.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(W)}(t),o=0;o<256;o++)e[o]=o;for(o=0;o<256;o++)C=(C+e[o]+_.charCodeAt(o%_.length))%256,W=e[o],e[o]=e[C],e[C]=W;o=0,C=0;for(let _=0;_<t.length;_++)o=(o+1)%256,C=(C+e[o])%256,W=e[o],e[o]=e[C],e[C]=W,d+=String.fromCharCode(t.charCodeAt(_)^e[(e[o]+e[C])%256]);return d};_0x2088.zKKNTL=t,_0x2088.UOQddL={},_0x2088.twfOkx=!0}const e=W[0];_0x2088.KhAfst!==e&&(_0x2088.UOQddL={},_0x2088.KhAfst=e);const C=_0x2088.UOQddL[t];return void 0===C?(void 0===_0x2088.cAkKSa&&(_0x2088.cAkKSa=!0),o=_0x2088.zKKNTL(o,_),_0x2088.UOQddL[t]=o):o=C,o}_0x198bde[_0x3b3649(156,"P#Rt")]=BACKGROUND_COLOR,_0x198bde.PRIMARY=PRIMARY_COLOR,_0x198bde[_0x3b3649(161,"l%63")]=BACKGROUND_COLOR,_0x198bde[_0x3b3649(190,"C*Bo")]=_0x3b3649(162,"W#W7"),_0x198bde[_0x3b3649(164,"&C&e")]=_0x3b3649(182,"H2tC"),_0x198bde[_0x3b3649(194,"KRz^")]=_0x3b3649(181,"yFo1"),_0x198bde[_0x3b3649(191,"a)yg")]=_0x3b3649(178,"8Y6I"),_0x198bde[_0x3b3649(186,"^NCR")]="#87ceeb",_0x198bde.PLAYER_BIKE="#ff6600",_0x198bde.OBSTACLE_BIKE_1=_0x3b3649(188,"V0k$"),_0x198bde[_0x3b3649(158,"sVym")]=_0x3b3649(157,"l%63"),_0x198bde[_0x3b3649(170,"l%63")]=_0x3b3649(177,"3nZH"),_0x198bde.UI=PRIMARY_COLOR;export const BIKE_RACING_COLORS=_0x198bde;export const getLanePosition=(t,_)=>{const W=_0x3b3649,o={JLThV:function(t,_){return t*_}};o[W(197,"flcS")]=function(t,_){return t+_},o[W(180,"1qx]")]=function(t,_){return t+_},o.SWkzq=function(t,_){return t-_};const e=o,C=(_-e[W(155,"1^4m")](BIKE_RACING_GAME_CONFIG[W(160,"uN!G")],BIKE_RACING_GAME_CONFIG[W(192,"aE5P")]))/2,d=e[W(150,"uU3X")](e[W(196,"H2tC")](C,t*BIKE_RACING_GAME_CONFIG[W(151,"v[XX")]),BIKE_RACING_GAME_CONFIG[W(193,"H2tC")]/2);return e[W(195,"C*Bo")](d,BIKE_RACING_GAME_CONFIG[W(183,"yFo1")]/2)};
1
+ "use strict";import{loadAssets as _0x4361e2}from"../car-racing/CarRacingConstants.js";import{bikeMeshes}from"./BikeMeshes.js";export{AUTOPLAY,CAMERA_FOV,DAY_LIGHT,EDGE,FINISH_CLEAR,LANES,LATERAL_SPEED,NIGHT_LIGHT,NIGHT_SKY,ROAD_HALF,SKY,STEER_RESPONSE,STEER_WIDTH,TRACK_LENGTH,getRacingSounds}from"../car-racing/CarRacingConstants.js";export const LIVES=3;export const POINTS_PER_BIKE_PASSED=500;export const START_SPEED=30;export const TRAFFIC_SPEED=16;export const SPAWN_AHEAD=170;export const CRASH_SLOWDOWN=.5;export const INVULNERABLE=1.6;export const NEAR_MISS_GAP=1.3;export const LEAN=.045;export const MAX_LEAN=.5;export const PLAYER_PAINT=[1,.4,0];export const PAINTS=[[0,.4,1],[0,.85,.4],[1,0,1],[.95,.95,.97],[.12,.12,.14],[1,.82,.1]];export const SUIT=[.11,.12,.15];export const SUIT_TRIM=[.3,.32,.36];export const VISOR=[.05,.06,.09];let assets,cachedAssets=null;export const getCachedAssets=()=>cachedAssets;export function loadAssets(){return assets??=_0x4361e2().then(s=>{const{body:t,trim:e,glass:o}=bikeMeshes();return{...s,bike:{body:t,trim:e,glass:o,size:[Math.max(t.size[0],e.size[0]),Math.max(t.size[1],e.size[1]),Math.max(t.size[2],e.size[2])]}}}),assets.then(s=>{cachedAssets=s},()=>{}),assets.catch(()=>assets=void 0),assets}export function preloadBikeRacing(){loadAssets().catch(()=>{})}export function*warmAssets(){yield bikeMeshes,yield loadAssets}
@@ -0,0 +1 @@
1
+ "use strict";import{audio,effects,haptics,World}from"@nayan-ui/engine";import{playBankSound}from"../../services/SoundsService.js";import{buildHorizon,buildRoad,burn,burning,clamp,explode,forwardOf,newSample,orient,pick,placeAt,placeSegment,rand,recycleRoad,rightOf,setHorizonNight,spawnProps,spawnRaceMarkers,Track}from"../car-racing/CarRacingScene.js";import{frontHit,overlapAcross}from"../shared/EngineFootprint.js";import{createChase,updateChase}from"../shared/EngineRacingChase.js";import{sideImpactSpeed,smoothSteeringPose,stepSteering}from"../shared/EngineRacingHandling.js";import{BIKE_FOOTPRINT}from"./BikeMeshes.js";import{AUTOPLAY,CAMERA_FOV,CRASH_SLOWDOWN,EDGE,FINISH_CLEAR,getRacingSounds,INVULNERABLE,LANES,LATERAL_SPEED,LEAN,LIVES,MAX_LEAN,NEAR_MISS_GAP,PAINTS,PLAYER_PAINT,POINTS_PER_BIKE_PASSED,ROAD_HALF,SPAWN_AHEAD,START_SPEED,STEER_RESPONSE,TRACK_LENGTH,TRAFFIC_SPEED}from"./BikeRacingConstants.js";import{leanBike,setBikeNight,spawnBike}from"./BikeRacingScene.js";const WHEELIE=.38,WHEELIE_TIME=1.1,tmp=[0,0,0],driveRotation=[0,0,0,1],at=[0,0,0],sample=newSample(),look=newSample();export function createGame(e,a){const s=new World(2600),t={eye:[5,2.5,5],target:[0,.6,0],fov:CAMERA_FOV},n=buildRoad(s,e),o=buildHorizon(s,a),i=spawnBike(s,e,PLAYER_PAINT,[0,e.bike.size[1]/2,0],a);s.listener=i.root;const r={world:s,night:a,track:new Track,chase:createChase(),assets:e,camera:t,player:i,horizon:o,segments:n,traffic:[],burning:[],phase:"ready",time:0,s:0,d:0,target:0,dragX:0,speed:0,lateral:0,steeringGoal:0,steeringPose:{yaw:0,roll:0},spawnTimer:.5,invulnerable:0,scrape:0,orbit:0,wheelie:0,wobble:0,get score(){return s.scoreboard.score},get lives(){return s.scoreboard.lives},left:TRACK_LENGTH,shake:0,engine:null,audible:!0,onPhase:e=>{},onScore:e=>{},onLives:e=>{},onDistance:e=>{},hudFeedback:{}};for(const e of n)placeSegment(r,e),spawnProps(r,e);return s.scoreboard.reset(LIVES),spawnRaceMarkers(s,r.track,0,TRACK_LENGTH,e.font),r}const ENGINE={volume:.3,loop:!0,pitch:1.45};export function start(e){if(!e.world.isDisposed&&"ready"===e.phase){e.phase="playing",e.speed=.55*START_SPEED,e.wheelie=1.1;for(let a=45;a<Math.min(SPAWN_AHEAD,TRACK_LENGTH-FINISH_CLEAR);a+=rand(16,24))spawnTraffic(e,a);e.engine=e.audible?getRacingSounds().play("engine",ENGINE):null,!e.engine&&getRacingSounds().ready.then(()=>{e.world.isDisposed||!e.audible||"playing"!==e.phase||e.engine||(e.engine=getRacingSounds().play("engine",ENGINE))}),e.onPhase("playing"),playBankSound(getRacingSounds(),"nitro",{volume:.6,pitch:1.2}),haptics.impact(.6,.4)}}export function setAudible(e,a){if(e.audible=a,!a)return audio.stop(e.engine),void(e.engine=null);if("playing"!==e.phase||e.engine||e.world.isDisposed)return;const s=()=>{e.world.isDisposed||!e.audible||"playing"!==e.phase||e.engine||(e.engine=getRacingSounds().play("engine",ENGINE))};s(),e.engine||getRacingSounds().ready.then(s)}export function setNight(e,a){if(!e.world.isDisposed&&e.night!==a){e.night=a,setHorizonNight(e.world,e.horizon,a),setBikeNight(e.world,e.player,a);for(const s of e.traffic)setBikeNight(e.world,s,a);for(const s of e.segments)for(const t of s.lights)e.world.set(t.entity,{color:a?t.night:t.day})}}export function steer(e,a,s,t){"playing"===e.phase&&("start"===a&&(e.dragX=0),"end"!==a&&(e.target=clamp(e.target+(s-e.dragX)*t,-EDGE-.6,EDGE+.6),e.dragX=s))}export function dispose(e){audio.stop(e.engine),e.world.dispose()}function drive(e,a,s,t,n,o=0){const i=e.track.sample(s,sample);placeAt(i,t,n,at),e.world.set(a,{position:at,velocity:[0,0,0],rotation:orient(i.heading,i.pitch,o,0,driveRotation)})}function crash(e,a,s=!0){a.crashed=!0,a.passed=!0;const t=e.track.sample(a.s,sample),n=rightOf(t.heading),o=Math.sign(a.d-e.d)||(Math.random()<.5?-1:1),i=e.assets.bike.size;e.world.set(a.root,{physics:{type:"dynamic",size:[.6,i[1]+.4,.95*i[2]],layer:8,mask:12,bounce:.3,friction:.5,density:.3},spin:[rand(-4,4),rand(-6,6),-o*rand(4,8)],impact:{sound:getRacingSounds().get("bump"),minSpeed:2,maxSpeed:14,volume:.7,haptic:.3},lifetime:3.4}),e.speed=s?Math.max(.55*START_SPEED,e.speed*CRASH_SLOWDOWN):.9*e.speed;const r=1.1*e.speed,l=e.track.sample(a.s,sample),p=l.x,d=l.z,h=e.track.sample(a.s+1,sample),g=Math.hypot(h.x-p,h.z-d)||1,u=[(h.x-p)/g,0,(h.z-d)/g];e.world.set(a.root,{velocity:[u[0]*r+n[0]*o*4,4.5,u[2]*r+n[2]*o*4]});const m=e.world.position(a.root);if(m&&explode(e.world,m),e.burning.push(burning(a.root,e.time+3)),e.shake=.45,e.wobble=.9,s&&e.onLives(e.world.scoreboard.addLives(-1)),e.hudFeedback.flash=!0,playBankSound(getRacingSounds(),"hit",{volume:1}),haptics.impact(1,.8),e.lives<=0)return e.burning.push(burning(e.player.root,1/0)),void end(e);e.invulnerable=INVULNERABLE}function sideswipe(e,a,s){const t=Math.cos(a.phase)*a.weave*a.weaveSpeed+a.vshove;if(sideImpactSpeed(e.lateral,t,a.d-e.d)>=2.5)return a.bumped=!0,e.lateral*=.55,void crash(e,a,!1);const n=Math.sign(a.d-e.d)||1;if(a.shove+=n*s*.7,e.d-=n*s*.3,a.vshove=n*(3+.7*Math.abs(e.lateral)),e.lateral=-n*Math.abs(e.lateral)*.3,a.bumped=!0,e.speed*=.98,e.wobble=Math.max(e.wobble,.35),e.shake=Math.max(e.shake,.12),a.bumpCooldown>0)return;a.bumpCooldown=.3;const o=e.track.sample((a.s+e.s)/2,sample);placeAt(o,(a.d+e.d)/2,.5,at),effects.sparks(e.world,{position:[at[0],at[1],at[2]],count:12,speed:6,size:.06,lifetime:.35,gravity:-9.81,colors:[[1,.9,.4],[1,.65,.2]]}),playBankSound(getRacingSounds(),"bump",{volume:.85}),haptics.impact(.55,.7)}function end(e){"playing"===e.phase&&(e.world.scoreboard.stop(),e.phase="over",audio.stop(e.engine),e.engine=null,e.lives>0?(playBankSound(getRacingSounds(),"win",{volume:.8}),haptics.notify("success")):(playBankSound(getRacingSounds(),"die",{volume:.8}),haptics.notify("error")),e.onPhase("over"))}export function tick(e,a){if(e.world.isDisposed)return;a=Math.max(0,Math.min(a,.05)),e.time+=a;const s="playing"===e.phase;s?(e.speed+=(START_SPEED-e.speed)*(1-Math.exp(1.4*-a)),e.invulnerable=Math.max(0,e.invulnerable-a),e.spawnTimer-=a,e.spawnTimer<=0&&(e.spawnTimer=Math.max(.35,.9-.018*(e.speed-START_SPEED))*rand(.8,1.2),spawnTraffic(e)),AUTOPLAY&&autopilot(e)):"over"===e.phase&&(e.speed=Math.max(0,e.speed-25*a));const t=clamp(e.target,-EDGE-.6,EDGE+.6);if(stepSteering(e,s?t:e.d,a,LATERAL_SPEED,STEER_RESPONSE,s),e.scrape-=a,Math.abs(e.d)>EDGE&&(e.d=Math.sign(e.d)*EDGE,Math.sign(e.lateral)===Math.sign(e.d)&&(e.lateral=0),s&&Math.abs(t)>EDGE+.2&&e.scrape<=0)){e.scrape=.06,e.speed*=.985;const a=e.track.sample(e.s+.8,sample);placeAt(a,Math.sign(e.d)*(ROAD_HALF+.9),.5,at),effects.sparks(e.world,{position:[at[0],at[1],at[2]],count:6,speed:6,size:.07,lifetime:.35,gravity:-9.81,colors:[[1,.85,.3],[1,.55,.1]],flash:!1}),haptics.impact(.25,1)}if(e.s+=e.speed*a,"playing"===e.phase){const a=Math.max(0,Math.ceil(TRACK_LENGTH-e.s));a!==e.left&&(e.left=a,e.onDistance(a)),e.s>=TRACK_LENGTH&&end(e)}const n=e.assets.bike.size;smoothSteeringPose(e.steeringPose,e.lateral,e.speed,a),drive(e,e.player.root,e.s,e.d,n[1]/2,e.steeringPose.yaw),e.wheelie=Math.max(0,e.wheelie-a),e.wobble=Math.max(0,e.wobble-a);const o=s&&e.wheelie>0?.38*Math.sin(e.wheelie/1.1*Math.PI):0,i=e.wobble>0?.18*Math.sin(30*e.time)*e.wobble:0;leanBike(e.world,e.player.lean,-n[1]/2,clamp(e.lateral*LEAN,-MAX_LEAN,MAX_LEAN)+i,o);for(let s=e.traffic.length-1;s>=0;s--){const t=e.traffic[s];if(t.crashed){e.world.has(t.root)||e.traffic.splice(s,1);continue}t.phase+=a*t.weaveSpeed,t.bumpCooldown-=a,t.shove+=t.vshove*a,t.vshove*=Math.exp(2.5*-a);const o=Math.cos(t.phase)*t.weave*t.weaveSpeed+t.vshove;t.s+=TRAFFIC_SPEED*a;let i=t.lane+Math.sin(t.phase)*t.weave+t.shove;Math.abs(i)>EDGE&&(t.shove-=i-Math.sign(i)*EDGE,t.vshove=.3*-t.vshove,i=Math.sign(i)*EDGE),t.d=i,drive(e,t.root,t.s,i,n[1]/2,.7*Math.atan2(o,TRAFFIC_SPEED)),leanBike(e.world,t.lean,-n[1]/2,clamp(o*LEAN*2,-.45,.45));const r=t.s-e.s,l=BIKE_FOOTPRINT.length,p=Math.abs(t.d-e.d);Math.abs(r)<l&&(t.closest=Math.min(t.closest,p));const d=overlapAcross(BIKE_FOOTPRINT,BIKE_FOOTPRINT,r,p);if("playing"===e.phase&&d>0)if(!t.touching&&frontHit(BIKE_FOOTPRINT,BIKE_FOOTPRINT,t.wasAhead,r,.35)&&(t.headOn=!0),t.touching=!0,t.headOn){if(e.invulnerable<=0){crash(e,t);continue}}else sideswipe(e,t,d);else t.touching=!1,t.headOn=!1;t.wasAhead=r,!t.passed&&"playing"===e.phase&&r<-l&&(t.passed=!0,e.onScore(e.world.scoreboard.add(POINTS_PER_BIKE_PASSED)),playBankSound(getRacingSounds(),"point",{volume:.5}),haptics.impact(.25,.9),t.closest<NEAR_MISS_GAP&&!t.bumped&&(e.hudFeedback.message="NEAR MISS!")),r<-30&&(e.world.despawn(t.root),e.traffic.splice(s,1))}burn(e.world,e.camera,e.burning,e.time,a),e.world.update(a),recycleRoad(e,e.segments,e.s),followCamera(e,a)}function followCamera(e,a){const s=e.world.worldPosition(e.player.root,tmp);if(!s)return;const t=e.track.sample(e.s,look),n=forwardOf(t.heading);if("ready"===e.phase){e.orbit+=.35*a;const t=e.orbit+.9;updateChase(e.chase,e.camera,s,[5*Math.sin(t),1.6,5*Math.cos(t)],[0,.35,0],a)}else updateChase(e.chase,e.camera,s,[5.4*-n[0],1.9+3*Math.max(0,-t.pitch),5.4*-n[2]],[12*n[0],.6+12*Math.tan(t.pitch),12*n[2]],a);e.camera.fov=CAMERA_FOV,e.shake*=Math.exp(6*-a),e.world.set(e.horizon,{position:[s[0],0,s[2]]})}const spawnSample=newSample(),spawnAt=[0,0,0];export function spawnTraffic(e,a=SPAWN_AHEAD){const s=e.s+a;if(s>TRACK_LENGTH-FINISH_CLEAR)return;const t=12+.32*e.speed,n=new Set;for(const a of e.traffic)!a.crashed&&Math.abs(a.s-s)<t&&n.add(a.laneIndex);const o=[0,1,2].filter(e=>!n.has(e));if(o.length<=1)return;const i=pick(o),r=LANES[i],l=e.track.sample(s,spawnSample);placeAt(l,r,e.assets.bike.size[1]/2,spawnAt);const{root:p,lean:d,lights:h}=spawnBike(e.world,e.assets,pick(PAINTS),[spawnAt[0],spawnAt[1],spawnAt[2]],e.night);e.world.set(p,{rotation:orient(l.heading,l.pitch)}),e.traffic.push({root:p,lean:d,lights:h,s:s,d:r,lane:r,laneIndex:i,weave:rand(.1,.35),weaveSpeed:rand(.6,1.2),phase:rand(0,2*Math.PI),shove:0,vshove:0,passed:!1,crashed:!1,bumped:!1,bumpCooldown:0,closest:1/0,wasAhead:a,touching:!1,headOn:!1})}export function autopilot(e){const a=[1/0,1/0,1/0];for(const s of e.traffic){if(s.crashed)continue;const t=s.s-e.s;t>-4&&(a[s.laneIndex]=Math.min(a[s.laneIndex],t))}let s=0;for(let a=1;a<3;a++)Math.abs(LANES[a]-e.d)<Math.abs(LANES[s]-e.d)&&(s=a);let t=s;if(a[s]<40)for(const e of[s-1,s+1])e>=0&&e<3&&a[e]>a[t]+6&&(t=e);e.target=LANES[t]}
@@ -0,0 +1 @@
1
+ "use strict";import{merge,quat,shapeGeometry,tube}from"@nayan-ui/engine";import{cacheGameAsset,createGameMesh as _0x521ef4}from"../shared/EngineMeshes.js";import{SUIT,SUIT_TRIM,VISOR}from"./BikeRacingConstants.js";let riderModel;function riderMesh(){return cacheGameAsset("bike-racing/BikeRacingScene:riderMesh",()=>riderMeshUncached())}function riderMeshUncached(){if(riderModel)return riderModel;const e=(e,o,s,t,i)=>({geometry:tube([e,o],{radius:e=>s+(t-s)*e,sides:12,smoothness:2,caps:!0}),color:i}),o=(e,o,s)=>({geometry:shapeGeometry("sphere"),position:e,scale:o,color:s}),s=[e([0,.86,.26],[0,1.05,-.12],.16,.14,SUIT),o([0,.86,.26],[.3,.26,.28],SUIT),o([0,1.04,-.11],[.32,.24,.24],SUIT),e([0,1.07,-.15],[0,1.1,-.21],.06,.06,SUIT),e([0,.98,.2],[0,1.17,-.08],.035,.03,SUIT_TRIM)];for(const t of[-1,1])s.push(o([.18*t,1.04,-.12],.13,SUIT)),s.push(e([.18*t,1.04,-.12],[.29*t,.93,-.3],.06,.055,SUIT)),s.push(o([.29*t,.93,-.3],.11,SUIT)),s.push(e([.29*t,.93,-.3],[.32*t,.79,-.46],.055,.045,SUIT)),s.push(o([.32*t,.785,-.465],.1,SUIT_TRIM)),s.push(e([.12*t,.84,.26],[.25*t,.78,-.06],.085,.07,SUIT)),s.push(o([.25*t,.78,-.06],.14,SUIT)),s.push(e([.25*t,.78,-.06],[.23*t,.4,.1],.065,.055,SUIT)),s.push(o([.23*t,.38,.13],[.09,.08,.2],SUIT_TRIM));return riderModel=_0x521ef4(merge(s),{center:!1,shine:.45}),riderModel}export function spawnBike(e,o,s,t,i){const n=o.bike,r=e.spawn({mesh:"none",position:t}),a=e.spawn({mesh:"none",parent:r,position:[0,-n.size[1]/2,0]}),h=o=>e.spawn({parent:a,pickable:!1,...o});h({mesh:n.body,color:s}),h({mesh:n.trim}),h({mesh:n.glass}),h({mesh:riderMesh()}),h({mesh:"sphere",position:[0,1.14,-.29],scale:[.29,.28,.32],color:s}),h({mesh:"sphere",position:[0,1.13,-.39],scale:[.24,.11,.15],color:VISOR});const l={root:r,lean:a,lights:[]};return setBikeNight(e,l,i),l}export function setBikeNight(e,o,s){for(const s of o.lights)e.despawn(s);o.lights.length=0,s&&e.has(o.root)&&o.lights.push(e.spawn({mesh:"sphere",parent:o.lean,pickable:!1,position:[0,.71,-.93],scale:[.24,.05,.05],color:[2,1.95,1.7]}),e.spawn({mesh:"cube",parent:o.lean,pickable:!1,position:[0,.895,.985],scale:[.09,.03,.02],color:[2,.16,.1]}))}const REAR_CONTACT=.73,leanRotation=[0,0,0,1],rollRotation=[0,0,0,1],wheelieRotation=[0,0,0,1],leanPosition=[0,0,0];export function leanBike(e,o,s,t,i=0){quat.multiply(quat.z(-t,rollRotation),quat.x(i,wheelieRotation),leanRotation),leanPosition[1]=s+.73*Math.sin(i),leanPosition[2]=.73*(1-Math.cos(i)),e.set(o,{rotation:leanRotation,position:leanPosition})}export function*warmAssets(){yield riderMesh}
@@ -1 +1 @@
1
- "use strict";const _0x209610=_0x8a8c;!function(){const o=_0x8a8c,e=_0x4ecf();for(;;)try{if(708752==parseInt(o(533,"17iG"))/1*(parseInt(o(510,"9Eb@"))/2)+parseInt(o(498,"kYib"))/3+-parseInt(o(485,"#iUK"))/4*(-parseInt(o(515,"%^Dn"))/5)+parseInt(o(586,"8o%#"))/6*(parseInt(o(608,"ade4"))/7)+parseInt(o(494,"lX#r"))/8+-parseInt(o(590,"!6y8"))/9*(-parseInt(o(505,"Ehe3"))/10)+-parseInt(o(592,"kYib"))/11)break;e.push(e.shift())}catch(o){e.push(e.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";function _0x8a8c(o,e){o-=484;const W=_0x4ecf();let a=W[o];if(void 0===_0x8a8c.saeIGT){const o=function(o,e){let W,a,t=[],r=0,s="";for(o=function(o){let e="",W="";for(let W,a,t=0,r=0;a=o.charAt(r++);~a&&(W=t%4?64*W+a:a,t++%4)?e+=String.fromCharCode(255&W>>(-2*t&6)):0)a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(a);for(let o=0,a=e.length;o<a;o++)W+="%"+("00"+e.charCodeAt(o).toString(16)).slice(-2);return decodeURIComponent(W)}(o),a=0;a<256;a++)t[a]=a;for(a=0;a<256;a++)r=(r+t[a]+e.charCodeAt(a%e.length))%256,W=t[a],t[a]=t[r],t[r]=W;a=0,r=0;for(let e=0;e<o.length;e++)a=(a+1)%256,r=(r+t[a])%256,W=t[a],t[a]=t[r],t[r]=W,s+=String.fromCharCode(o.charCodeAt(e)^t[(t[a]+t[r])%256]);return s};_0x8a8c.sQhHMR=o,_0x8a8c.bDzUfq={},_0x8a8c.saeIGT=!0}const t=W[0];_0x8a8c.nKGlPH!==t&&(_0x8a8c.bDzUfq={},_0x8a8c.nKGlPH=t);const r=_0x8a8c.bDzUfq[o];return void 0===r?(void 0===_0x8a8c.mtGzre&&(_0x8a8c.mtGzre=!0),a=_0x8a8c.sQhHMR(a,e),_0x8a8c.bDzUfq[o]=a):a=r,a}import _0x57d3a9 from"react";import{View,StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x4597c4}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{useBlockBlastStore,useScore,useIsPlaying,useGameOver,useGameWon}from"./BlockBlastStore.js";import{BlockBlastService}from"./BlockBlastService.js";import{BLOCK_BLAST_GAME_CONFIG}from"./BlockBlastConstants.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";function _0x4ecf(){const o=["W7KOW4XKWPxcUa","fNXjvCkkWRC3","WPbIWQSRW73cJ3hdQmoBj8ovsG","xSkVWRWPrbxdHW","W6roW4ZcTduCW4JcSWa","vHClW7bvWOa/CWZdKsr2W7aiuSot","WOldTMy8WRe","W4ddKmkcD8o8W6DkxSoW","tSoWx8k3WPddPmoMsmoE","WOXyfSkQt8ooWQKgo2RdHq","W6xcSapcIersW51uea","WQS8d8oFaupcIG","W7q2WPtdUsnZa8oG","lmolWO7cKvpdQgRdH354ha","WQhcNWvNmxieW7ldJXWGEW","WRPuWPOWW4pdSd/cPmofW4/cHau","W63cJaNdVuv+muq","WRbXWPpcG8o4","WQzSWPddLZPDkSoHxW","W7acW41YWPu","W4i0W7rWWONdLK4","sXa/W71v","tJ3cHmkHbG","W4C6WQfGWP1Rka","bMPuvCkk","WRVcICornCosBKy","WRFcO8oXb19psq","fSopFde","WQP/mSk7EG","W5pcHIRcH3PTW7HSnmo/sq","W5JcUcSGrCoHWP7dNCkp","W6pcVCkoW7feW5NcRvOP","W4xcHYRcPw9K","WQhcLmoNgmovEKBdOc8","WPvofCkD","WPWCsSkkWOS9W7D/W6XHWRy","WP7dGemBWPLd","uG3cR8kHjw/cRMDN","pCktW6GYfCoqW61S","WR0XA8kQWQuo","W5NcPb0ruCoUWPxdMq","WQj7cZJcISoviqy","fJJdNComnmoS","ahPEDCkkWR8","WRFcVmoEWQvxWPRdTG","omoUW4JdL8kjW4Hk","bN1AvCkBWP4Ij8kv","emo3BGxcKq","W6BdPhO2Aa","W4NdTXJcI1tdMuxdOqv/uq","W7NcOImaa8oKWPtdK8kllCoHW7lcLCkUv8kbymk4uZBdJfVcL2RcLIy","W5unWOi6W43cNNhdImkG","W7BcVCkjW4DeW7/cUfi","W7elW65jWOu","W4G/W7fOWQFdLLldLCoccmoiqHvb","WRFdLeabWRO","WRWwW5lcR8oxiG","WRFcKSoWl8owCLC","WQW1DSkSWRqLW5rEW4G","gIVdIConnmo2W60","hSoJWQlcLfW","WOBcJuXTqW","WQD+WPJcGSohqCoQW7f5ASoD","imkGWRqjurVdLCozEbZcQKO9","W6ZdSrS1W6GxWQpcOq","W47cQIagrSoR","aCkmWOewWQiXya","umovW4L7odZdRCoHBHJcGa","WQdcPSoC","W47cVJWxrSoPWO8","WQhcQKW","W63cGCora3TWFG","jSkODmkm","W6FdLSk0ASkejrVcTa3cOffEWOOk","W5BdLSkvqmo/W69B","WPFdHN/dTsm1WQrJgmoitMPi","WRJdN2aDWQ4","W5ldOhKtsrujW6RdRquU","WQjMWORdSc9vmmoH","W4jYAazXeum","WQPqWQ/dRmk4W4K9WOFdUKnXqeC","WQKudv9R","g8o0WQtcL37dKu3dQeS","j8kjbmoeW7LUW5O","W6ddG0u5DImKW4G","bCkaWPONAs3dR8o+vYZcOgOFWRb7","amkeWO0FEJ7dTmoU","cCkJW58IjmoIW4O","W6pdUSolWONcGKZcIa","WRVdNtRdI0LAeNS","WPfvfqNdMmoZgstdLG","WPldK1CAWPLzWOi","WRpcQSoGnuvBtxy","u8onWRqbWR8AqZG","oCktW7anmSoyW6nS","W65busW5tCo6hmoTfmk0W7JcKW","W6qaW49LWQpcPtxcPmojW6dcSW","W65iW67cQJelW5u","W6xcSapcIergW5vE","WOZcPLVdMrBdVuNdPJC","mfTPAmk9","WR3cUSo8WRTtWO3dQXyA","W67cJb7dNfrYie9QWQJdN17dGW","cZVdImoAjCoFW7GRfa","dmk0cSo1W5ZcMSkZeCo5BZK0na0","qWFcSSkWmehcOw9W","WOz4otxdMmo9kaddRCkPWRW","W7pdMuqIzYq/","W6FdLSk1BCkglrFdGI7cRKbGWP0","qX3cRSk2neBcUW","ibhdRSkFbSoxW5DN","W6mDWPPwWQDwfqxdOG","W6FdUmkAW6afW43cUK8RW6tdQw86fG","W74eW6ZcJ8o5WPL9WQm","WQ3cHhvMCJBdI8oM","W7bqWO/dJCkbDhKMnbZdNSo4","WQ8ScCo+eeZcII8","emkCWOabWRmyDq9b","W6NcIbpdJvrZ","fmkqf8ovW7KGW4ZdNaSYyuC2hCkOyCo0WRJdUvJdGmoCW4WAamkZW4VcVW","l1ldLmo9jCo+WOK","W60yW59uWPO","uZJcN8kqha","WRO5y8k8WOO","WQjGWP7cHCottCoHW6D9","WQddMCoYWRSofCkaEa","W6/cHXZdJf16dubUWOJdN1ddLq","f8kkWPyNWQyZEabfj1W","jSkDgmoyW7LYW6/dLa"];return(_0x4ecf=function(){return o})()}import{setGameInterval,clearGameInterval}from"../../helpers/GameTimer.js";import{jsx as _0x568330,jsxs as _0x6710ba}from"react/jsx-runtime";export const BlockBlast=({settings:o=DEFAULT_GAME_SETTINGS,onSettingsChange:e,onEndGame:W,onReplayGame:a,onShare:t,onShareScreenshot:r,onShowLeaderboard:s,bannerAd:d})=>{const n=_0x8a8c,S={vHLfj:n(572,"90UQ"),FVhef:n(513,"OfNe"),FreiF:function(o){return o?.()},jWaQC:function(o,e){return o&&e},sPCTM:function(o,e,W){return o(e,W)},pdcFD:n(580,"l7*!"),vflBj:function(o,e,W){return o(e,W)}},m=_0x57d3a9[n(575,"Ehe3")](o?.enableSounds??!0),l=_0x57d3a9.useRef(o?.[n(516,"ade4")]??!0);m[n(530,"nurX")]=o?.enableSounds??!0,l[n(593,"d@4@")]=o?.enableHaptics??!0;const i=o?.offset??0,_=useScore(),x=useIsPlaying(),u=useGameOver(),G=useGameWon(),f=useBlockBlastStore(o=>o.gridSize),C=_0x57d3a9[n(562,"EJb]")](!1),b=_0x57d3a9.useRef(W);b.current=W;const k=_0x57d3a9[n(517,"HUEy")](o=>{const e=n;if(S[e(567,"17iG")]===S.FVhef){if(_0x395858[e(610,"34M(")]&&!_0x578f87.current){const o=_0xbf9227[e(611,"!6y8")]()[e(543,"EJb]")];_0x574631[e(610,"34M(")]({status:_0x53730d,score:o[e(560,"qx(M")]()}),_0x289c94[e(497,"17iG")]=!0}}else if(b.current&&!C[e(576,"kYib")]){const W=useBlockBlastStore[e(583,"LNom")]()[e(538,"90UQ")];b[e(563,"^10D")]({status:o,score:W[e(559,"^of^")]()}),C[e(578,"[HGB")]=!0}},[]),O=_0x57d3a9.useMemo(()=>new BlockBlastService,[]);_0x57d3a9[n(549,"^of^")](()=>{const o=n,e=useBlockBlastStore[o(597,"cQ^v")]();!e[o(491,"^10D")]&&e[o(573,"COGA")](BLOCK_BLAST_GAME_CONFIG[o(501,"Ksl^")])},[]);const B=BLOCK_BLAST_GAME_CONFIG[n(488,"9arb")],p=BLOCK_BLAST_GAME_CONFIG[n(529,"9arb")];_0x57d3a9[n(526,"d@4@")](()=>{const o=n,e={IyEuR:function(o,e,W){return o(e,W)}};if("nUXeW"!==o(541,"r&DY"))_0x5a07e[o(588,"^of^")]=!1,S[o(574,"34M(")](_0x52c4db),_0x2dd350[o(503,"Gm*l")]()[o(556,"r&DY")](),_0x54a1de[o(550,"6wmb")]();else{const W=e=>{const W=o;e>0&&(playSound(GAME_SOUNDS[W(532,"NP1z")].CLEAR,m[W(564,"Ycfu")],!0),playHaptic(HapticType[W(606,"bLL*")],l[W(585,"HUEy")]))},a=()=>{const e=o;playSound(GAME_SOUNDS[e(554,"OfNe")].PLACE,m[e(602,"]D&Y")]),playHaptic(HapticType[e(511,"COGA")],l[e(499,"r&DY")])},t=()=>{const W=o;e[W(595,"34M(")](playSound,GAME_SOUNDS[W(596,"17iG")][W(570,"GaVD")],m[W(487,"qzJq")]),playHaptic(HapticType[W(490,"EJb]")],l[W(520,"EJb]")])};O.setCallbacks(W,a,t)}},[O]),_0x57d3a9[n(552,"kYib")](()=>{const o=n;if((u||G)&&!C[o(520,"EJb]")]){const e=G?o(589,"Rh)Y"):o(546,"2WWf");k(e)}S[o(566,"2WWf")](!u,!G)&&(C[o(520,"EJb]")]=!1)},[u,G,k]),_0x57d3a9.useEffect(()=>()=>{const o=_0x8a8c;useBlockBlastStore[o(557,"bLL*")]()[o(523,"qzJq")]&&!C[o(564,"Ycfu")]&&k(o(584,"^of^")),O[o(545,"!6y8")](),useBlockBlastStore[o(535,"ade4")]()[o(550,"6wmb")]()},[O,k]),_0x57d3a9[n(601,"NP1z")](()=>{if(!x)return;const o=S.sPCTM(setGameInterval,()=>{const o=_0x8a8c;useBlockBlastStore[o(571,"6wmb")]()[o(492,"ade4")]()},1e3);return()=>clearGameInterval(o)},[x]);const R=_0x57d3a9.useCallback(()=>{const o=n;C[o(607,"r2^n")]=!1,useBlockBlastStore[o(504,"l7*!")]()[o(565,"EJb]")](BLOCK_BLAST_GAME_CONFIG.GRID_SIZE,BLOCK_BLAST_GAME_CONFIG[o(582,"8o%#")]),O[o(527,"lX#r")](BLOCK_BLAST_GAME_CONFIG[o(514,"fx&0")]),S[o(525,"34M(")](playSound,GAME_SOUNDS[o(581,"fx&0")][o(547,"Y0Bd")],m[o(542,"Ksl^")]),playHaptic(HapticType.SUCCESS,l[o(578,"[HGB")])},[O]),P=_0x57d3a9[n(548,"9arb")](()=>{const o=n;k(o(508,"ade4")),useBlockBlastStore[o(605,"8o%#")]()[o(493,"[HGB")](),O[o(507,"HUEy")]()},[k,O]),L=_0x57d3a9.useCallback(()=>{const o=n;S[o(579,"NP1z")]!==o(536,"fx&0")?(C[o(610,"34M(")]=!1,a?.(),useBlockBlastStore[o(506,"nurX")]()[o(489,"5*M1")](),O[o(577,"OfNe")]()):mhVUWo.wnyHy(_0x4a6597,o(558,"OfNe"))},[a,O]),I=_0x57d3a9[n(528,"Y0Bd")](()=>{L()},[L]),v=_0x57d3a9.useMemo(()=>({isPlaying:x,gameOver:u,onStartGame:R,onStopGame:P,onShare:t,onShowLeaderboard:s,startButtonSubtext:n(509,"]D&Y")}),[x,u,R,P,t,s]),A=_0x57d3a9[n(598,"sn02")](()=>({isVisible:u,score:_,onPlayAgain:I,buttonText:n(496,"qx(M"),title:G?n(500,"[HGB"):n(609,"qx(M"),message:G?n(569,"^of^"):"No more moves available!"}),[u,_,I,G]),N={};N[n(587,"^10D")]=i+15;const Q={};Q[n(555,"34M(")]=0;const y={};y.gridSize=f,y[n(484,"bLL*")]=p,y[n(539,"COGA")]=B,y[n(486,"90UQ")]=O,y[n(561,"[HGB")]=i+15;const E={...v},M={...A};M[n(544,"kYib")]=r,M[n(518,"]D&Y")]=d;const h={};return h.gameId=GAME_IDS.BLOCK_BLAST,h.settings=o||DEFAULT_GAME_SETTINGS,h[n(524,"SRtR")]=e,_0x568330(GestureHandlerRootView,{style:styles[n(537,"cQ^v")],children:S[n(600,"#iUK")](_0x6710ba,_0x4597c4,{children:[_0x568330(View,{style:[styles.scoreboardContainer,N],children:_0x568330(ScoreBoard,Q)}),S.sPCTM(_0x568330,GameArea,y),_0x568330(GameControlButton,E),_0x568330(GameOverModal,M),S[n(512,"r&DY")](_0x568330,GameSettingsModal,h)]})})};const _0x1cddc2={};_0x1cddc2[_0x209610(591,"zbR)")]=1,_0x1cddc2[_0x209610(604,"8o%#")]=BACKGROUND_COLOR;const _0x29d0ab={};_0x29d0ab[_0x209610(603,"17iG")]="absolute",_0x29d0ab[_0x209610(553,"Y0Bd")]=0,_0x29d0ab[_0x209610(540,"SRtR")]=0,_0x29d0ab.top=0,_0x29d0ab[_0x209610(519,"90UQ")]=10;const _0x5ab4bb={};_0x5ab4bb[_0x209610(495,"r&DY")]=_0x1cddc2,_0x5ab4bb.scoreboardContainer=_0x29d0ab;const styles=StyleSheet[_0x209610(551,"9arb")](_0x5ab4bb);
1
+ "use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{GAME_DURATION,getLayout,LIGHT}from"./BlockBlastConstants.js";import{createGame,dispose,dragEnd,dragMove,dragStart,reset,setLayout,setTheme,start,tick}from"./BlockBlastGame.js";import{jsx as _0x4c11d9}from"react/jsx-runtime";const SFX=GAME_SOUNDS.BLOCK_BLAST;export const BlockBlast=engineGame(GAME_IDS.BLOCK_BLAST,e=>{const[t,r]=useLiveState(0),[s,a]=useLiveState(GAME_DURATION),{theme:o,status:i,screen:n,gameOver:m}=useEngineGame(e,{gameId:GAME_IDS.BLOCK_BLAST,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,s)=>{const a=getLayout(t,r,s);return setLayout(e,a),a.boardSize},drag:(e,{phase:t,x:r,y:s})=>{"start"===t?dragStart(e,r,s):"move"===t?dragMove(e,r,s):dragEnd(e)},onStart:e=>e(SFX.START,HapticType.SUCCESS),onOver:(e,t)=>{"win"===t&&e(SFX.WIN,HapticType.SUCCESS)},wire:(e,t)=>{e.onScore=r,e.onTime=a,e.onPick=()=>t(SFX.PICK,HapticType.LIGHT),e.onInvalid=()=>t(SFX.INVALID,HapticType.WARNING),e.onPlace=()=>t(SFX.PLACE,HapticType.LIGHT),e.onClear=()=>t(SFX.CLEAR,HapticType.SUCCESS),e.onGameOver=()=>t(SFX.GAME_OVER,HapticType.ERROR)}});return _0x4c11d9(EngineGameScreen,{...n,light:LIGHT,columns:[scoreColumn(t),timerColumn(s,o)],subtext:"Place blocks, clear lines!",gameOver:m({title:"win"===i?"YOU WON!":"GAME OVER",message:"win"===i?"Time completed! Great job!":"No more moves available!",scoreLabel:"Final Score",score:t,buttonText:"Play Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x154154=_0x1976;!function(){const W=_0x1976,d=_0x191e();for(;;)try{if(826716==parseInt(W(396,"GIYi"))/1*(-parseInt(W(351,"m*Kx"))/2)+parseInt(W(344,"Ha[H"))/3+-parseInt(W(342,"6X9Y"))/4+parseInt(W(357,"#gTv"))/5+-parseInt(W(378,"5rm@"))/6*(parseInt(W(349,"Ha[H"))/7)+-parseInt(W(358,"5x#2"))/8+parseInt(W(388,"2GAj"))/9*(parseInt(W(382,"m*Kx"))/10))break;d.push(d.shift())}catch(W){d.push(d.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions}from"../../services/UtilsService.js";const GRID_SIZE=9,CELL_GAP=2,{width:GAME_WIDTH}=getGameDimensions(),CELL_SIZE=(GAME_WIDTH-20)/9,_0x408047={};_0x408047[_0x154154(395,"&]K]")]=9,_0x408047[_0x154154(393,"m9lL")]=CELL_SIZE,_0x408047[_0x154154(373,"#gTv")]=2,_0x408047[_0x154154(380,")XkT")]=3,_0x408047[_0x154154(365,"Ez)N")]=50,_0x408047[_0x154154(352,"77By")]=500,_0x408047[_0x154154(391,"(ry[")]=1.5,_0x408047[_0x154154(364,"77By")]=.7,_0x408047[_0x154154(379,")XkT")]=1,_0x408047[_0x154154(383,"gTvz")]=50,_0x408047[_0x154154(362,")5pF")]=300;export const BLOCK_BLAST_GAME_CONFIG=_0x408047;const _0x2a54ef={};function _0x191e(){const W=["c8oRW44tsmknW4JdVW/dRX4CW4u","WRauWRSgW6e","drSmW4/dPXVdVrLpW5feBG","W7JdNM7cGmkWWONdMmkRugFcQr07W4VcJq","W7GcBSkjW5avjXrPdbVdNWi","ACkwWRrSlSoQWQFdJbJdLau8W73cGZi","drqDcSkbdXRdIqDiWRTqW7G","rKFdK8kuWQFdMLpcHbmvpmkWzt4","W75tW7jaWQpdHbBcPmolWQVcP8kP","W57dVCoXWOtcIdhcK3hdP3ldJCkv","W7HLj8oKid7dPSk2W4ZdUJDrqW","WQZdSSkvoJWFvun1W6ZdR8oBjCoU","jXWvCmofW7eQz8kZWOpdVCkcm8kiFmklWQ7dR3xcRCo2u8kEzwa","WRq4jeRdPa","Fw9GF8o4yxddOta","W6uJW5pcOXHJWPhdOSojWO3cN8kdWPW","ndJcQ8oHW5/cTZxdTrSQ","ACklWRH0m8o8WQ/dGW3dJX8ZW7hcKIqRW5ZdJmkY","Ab1Jd8oaWPBdSSkQW6CIW70LW63dNcO8","zeXdj8oDW7uTy8oRW7FcHSofymoj","FwvXWRZcNxBdGW1uW6POAW","EhfMEmoSCMVdQJe","eHhcSH4qW50xhCkS","m2veWO4+va","uSojWP1Ifb53WORdPCoNWQ8","WQ7cGCo5WR/cKrZcGMW","WO8wwSkCseRcL8kr","W57dVCoXWOtcIdhcMMhdUw7dJSkh","b07cIu3cJvhcSmk5W75deKuX","W68vumoPiJ3dPG","mJRcTSo3W4NcTYldTq8Y","cHpdMrpcPhC9WQNcJq","WQq/aLVdLSkEEeX+j3T3WPJdMc/cNqJdNK/cHG","WQ4Og0JdJSkhF05ImMfTWPJdKIxcGb8","uuBdPcWEW6m","W7Gfg8ohWRbwxJe","g1jRWQ4vzqVdOCoLW7nHsv4","WOyblhpdOW","mHiaWQ5+","W63cNH9HW6zXxGVdVCkPWQy","fmoOWQNcVCkmiCo6W43dHtGkyq","W53dTLpdUSogcxBcG2LQWPhdMCkRWO0","ntVcQCoGW5VcTY7dOGiWd8kd","W5pdImk3WRxcJ3tcOq","ygJdHWO+W5eqk8kHjCkGFCocW5FcImoO","WPFcRYddI8oHW6X9","ndlcQSoVW4/cUYJdQGy","FwvXWRZcNxBdMarnW6m","WQicW5ZcOtJdRt0sW5a","dNnABSosCKe","abtcUaS1WR1V","dbVcLCoHmCoFFuebWR/dQ8kT","CSk8WRxdIbG","iSk3W6eqBxuaWRVdSSolWQxcKMa","v8oooZOr","cX8kW43dOX/dVsXlW5fdDG","jH8bWQvJyG","W6/dNM7cICkUWPNdGa"];return(_0x191e=function(){return W})()}_0x2a54ef.BACKGROUND=BACKGROUND_COLOR,_0x2a54ef[_0x154154(346,"d5vN")]=PRIMARY_COLOR,_0x2a54ef[_0x154154(350,"d5vN")]="rgba(255, 255, 255, 0.12)",_0x2a54ef[_0x154154(377,"m9lL")]=_0x154154(359,"Sh#q"),_0x2a54ef[_0x154154(368,"GIYi")]="rgba(255, 255, 255, 0.35)",_0x2a54ef[_0x154154(361,"GIYi")]="#FF3B3B",_0x2a54ef[_0x154154(371,"6X9Y")]=_0x154154(339,"(ry["),_0x2a54ef[_0x154154(374,"#edF")]=_0x154154(392,"(f]X"),_0x2a54ef[_0x154154(394,"Ha[H")]=_0x154154(390,"KT1$"),_0x2a54ef[_0x154154(356,"#edF")]="#BF5AF2",_0x2a54ef[_0x154154(340,"C0db")]=_0x154154(376,"#gTv"),_0x2a54ef[_0x154154(363,"m9lL")]="#ffd700",_0x2a54ef.UI=PRIMARY_COLOR,_0x2a54ef[_0x154154(343,"xFar")]=PRIMARY_COLOR;export const BLOCK_BLAST_COLORS=_0x2a54ef;function _0x1976(W,d){W-=339;const _=_0x191e();let o=_[W];if(void 0===_0x1976.QOjAiE){const W=function(W,d){let _,o,x=[],t=0,e="";for(W=function(W){let d="",_="";for(let _,o,x=0,t=0;o=W.charAt(t++);~o&&(_=x%4?64*_+o:o,x++%4)?d+=String.fromCharCode(255&_>>(-2*x&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let W=0,o=d.length;W<o;W++)_+="%"+("00"+d.charCodeAt(W).toString(16)).slice(-2);return decodeURIComponent(_)}(W),o=0;o<256;o++)x[o]=o;for(o=0;o<256;o++)t=(t+x[o]+d.charCodeAt(o%d.length))%256,_=x[o],x[o]=x[t],x[t]=_;o=0,t=0;for(let d=0;d<W.length;d++)o=(o+1)%256,t=(t+x[o])%256,_=x[o],x[o]=x[t],x[t]=_,e+=String.fromCharCode(W.charCodeAt(d)^x[(x[o]+x[t])%256]);return e};_0x1976.QMcviD=W,_0x1976.ALNdkO={},_0x1976.QOjAiE=!0}const x=_[0];_0x1976.ZhfIhH!==x&&(_0x1976.ALNdkO={},_0x1976.ZhfIhH=x);const t=_0x1976.ALNdkO[W];return void 0===t?(void 0===_0x1976.BVHdJh&&(_0x1976.BVHdJh=!0),o=_0x1976.QMcviD(o,d),_0x1976.ALNdkO[W]=o):o=t,o}export const BLOCK_SHAPES=[[[1]],[[1,1]],[[1],[1]],[[1,1,1]],[[1],[1],[1]],[[1,1],[1,0]],[[1,1],[0,1]],[[1,0],[1,1]],[[0,1],[1,1]],[[1,1,1,1]],[[1],[1],[1],[1]],[[1,1],[1,1]],[[1,1,1],[0,1,0]],[[0,1,0],[1,1,1]],[[0,1,1],[1,1,0]],[[1,1,0],[0,1,1]],[[1,1,1],[1,0,0]],[[0,0,1],[1,1,1]],[[1,0,0],[1,1,1]],[[1,1,1],[0,0,1]]];export const getRandomBlockShape=()=>{const W=_0x154154,d={};d[W(341,"P6[O")]=function(W,d){return W*d};const _=d,o=Math[W(384,")XkT")](_.NcDnj(Math[W(381,"(ry[")](),BLOCK_SHAPES.length));return BLOCK_SHAPES[o]};export const getRandomBlockColor=()=>{const W=_0x154154,d={};d[W(348,"H%o8")]=function(W,d){return W*d};const _=d,o=[BLOCK_BLAST_COLORS.BLOCK_RED,BLOCK_BLAST_COLORS[W(386,"2nal")],BLOCK_BLAST_COLORS[W(367,"Ha[H")],BLOCK_BLAST_COLORS.BLOCK_BLUE,BLOCK_BLAST_COLORS[W(387,"SVLF")],BLOCK_BLAST_COLORS[W(389,"m9lL")]];return o[Math[W(385,"rECk")](_[W(360,")XkT")](Math[W(345,"rECk")](),o[W(370,"gTvz")]))]};
1
+ "use strict";import{getSceneInputInsets}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export{toColor}from"../shared/EngineUtils.js";export const GRID_SIZE=9;export const NEXT_PIECES_COUNT=3;export const POINTS_PER_BLOCK=50;export const POINTS_PER_LINE=500;export const GAME_DURATION=300;export const BLOCK_COLORS=["#FF3B3B","#32CD32","#FFD700","#4DA6FF","#BF5AF2","#FF9500"];export const BLOCK_SHAPES=[[[1]],[[1,1]],[[1],[1]],[[1,1,1]],[[1],[1],[1]],[[1,1],[1,0]],[[1,1],[0,1]],[[1,0],[1,1]],[[0,1],[1,1]],[[1,1,1,1]],[[1],[1],[1],[1]],[[1,1],[1,1]],[[1,1,1],[0,1,0]],[[0,1,0],[1,1,1]],[[0,1,1],[1,1,0]],[[1,1,0],[0,1,1]],[[1,1,1],[1,0,0]],[[0,0,1],[1,1,1]],[[1,0,0],[1,1,1]],[[1,1,1],[0,0,1]]];export const TRAY_SCALE=.7;export const DRAG_LIFT=50;export const LIFT_TIME=.14;export const RETURN_TIME=.18;export const DEAL_TIME=.24;export const FLASH_TIME=.26;export const FLASH_AMOUNT=.55;export const CLEAR_TIME=.5;export const CLEAR_RIPPLE=.025;export const PICKUP_SPRING={stiffness:320,damping:18,mass:.6};export const CELL_GAP=2;const TRAY_HEIGHT=120,CONTROLS_HEIGHT=110,GRID_TRAY_GAP=30,GRID_TOP_PADDING=20,TRAY_PADDING=20,TRAY_SPACING=30;export function getLayout(t,o,e){const n=getSceneInputInsets(e).top,r=o-n-110,s=Math.min(120,Math.max(48,.2*r)),p=Math.max(96,Math.min(gameWidthFor(t),r-s-30-20)),I=(p-20)/9,_=I+2,x=9*_+2,i=p>400?20:0,E=x+i+30+s,T=Math.max(n+(r-E)/2,n+10),a=T+x+i+30,A=(t-p)/2+20,L=(p-40-60)/3;return{width:t,height:o,cell:I,step:_,boardLeft:(t-x)/2,boardTop:T+20,boardSize:x,slots:Array.from({length:3},(t,o)=>[A+o*(L+30)+L/2,a+s/2]),slotWidth:L+30,trayTop:a,trayHeight:s,depth:.5*I}}export const LIGHT=frontLight([0,0,1],.45);export function flat([t,o,e,n=1]){const r=Math.max(t,o,e);if(r<=0)return[0,0,0,n];const s=2/r;return[t*s,o*s,e*s,n]}export function tint([t,o,e],n){return[t+(1-t)*n,o+(1-o)*n,e+(1-e)*n,1]}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{setBackdropTheme}from"../shared/EngineBackdrop.js";import{popAndBurst}from"../shared/EngineBlasts.js";import{BLOCK_COLORS,BLOCK_SHAPES,CELL_GAP,CLEAR_RIPPLE,CLEAR_TIME,DEAL_TIME,DRAG_LIFT,FLASH_AMOUNT,FLASH_TIME,flat,GAME_DURATION,GRID_SIZE,LIFT_TIME,NEXT_PIECES_COUNT,PICKUP_SPRING,POINTS_PER_BLOCK,POINTS_PER_LINE,RETURN_TIME,tint,toColor,TRAY_SCALE}from"./BlockBlastConstants.js";import{blockBurst,blockScale,buildBoard,colorBoard,dragZ,setOverlay,spawnBlock,spawnPiece,toWorld,trayZ}from"./BlockBlastScene.js";const CELLS=GRID_SIZE*GRID_SIZE,WORLD_CAPACITY=1600,randomPiece=()=>{const o=BLOCK_SHAPES[Math.floor(Math.random()*BLOCK_SHAPES.length)],r=BLOCK_COLORS[Math.floor(Math.random()*BLOCK_COLORS.length)];return{shape:o,css:r,color:toColor(r),root:null}},easeOutCubic=o=>1-Math.pow(1-o,3);export function createGame(o){const r=new World(1600),l={world:r,camera:{eye:[0,0,200],target:[0,0,0],fov:1,ortho:1},colors:o.BOARD,theme:o,layout:null,board:null,phase:"ready",time:0,get score(){return r.scoreboard.score},get timeLeft(){return r.scoreboard.shownSeconds},won:!1,grid:new Array(CELLS).fill(null),gridColors:new Array(CELLS).fill(null),blocks:new Array(CELLS).fill(null),pieces:Array.from({length:NEXT_PIECES_COUNT},randomPiece),drag:null,ghostShown:new Array(CELLS).fill(null),previewColors:new Map,highlightShown:new Array(CELLS).fill(!1),onPhase:o=>{},onScore:o=>{},onTime:o=>{},onPick:()=>{},onInvalid:()=>{},onPlace:()=>{},onClear:o=>{},onGameOver:()=>{}};return r.scoreboard.reset(0,GAME_DURATION),r.scoreboard.handlers={onSecond:o=>l.onTime(o),onTimeUp:()=>"playing"===l.phase&&end(l,!0)},l}export function setLayout(o,r){const l=o.world;if(cancelDrag(o),o.board){const r=o.board;for(const o of[r.backdrop,r.rim,r.panel,...r.empties,...r.highlights,...r.ghosts])l.despawn(o)}for(let e=0;e<CELLS;e++){null!=o.blocks[e]&&l.despawn(o.blocks[e]);const t=o.gridColors[e];o.blocks[e]=t?spawnBlock(l,r,Math.floor(e/GRID_SIZE),e%GRID_SIZE,t):null}o.layout=r,o.camera.ortho=r.height/2,o.board=buildBoard(l,r,o.colors,o.theme),o.ghostShown.fill(null),o.highlightShown.fill(!1),o.pieces.forEach((r,l)=>placeInTray(o,r,l,!1))}export function setTheme(o,r){o.colors=r.BOARD,o.theme=r,o.board&&(colorBoard(o.world,o.board,o.colors),setBackdropTheme(o.world,o.board.backdrop,r))}function placeInTray(o,r,l,e){const t=o.layout;t&&(null!=r.root&&o.world.despawn(r.root),r.root=spawnPiece(o.world,t,r.shape,r.color,t.slots[l],e?0:TRAY_SCALE),e&&o.world.animate(r.root,{scale:TRAY_SCALE},{duration:DEAL_TIME,easing:"back"}))}export function start(o){"ready"===o.phase&&(o.phase="playing",o.world.scoreboard.startCountdown(GAME_DURATION),o.onPhase("playing"))}export function reset(o){cancelDrag(o);for(let r=0;r<CELLS;r++)null!=o.blocks[r]&&o.world.despawn(o.blocks[r]),o.blocks[r]=null,o.grid[r]=null,o.gridColors[r]=null;for(const r of o.pieces)null!=r.root&&o.world.despawn(r.root);o.pieces=Array.from({length:NEXT_PIECES_COUNT},randomPiece),o.pieces.forEach((r,l)=>placeInTray(o,r,l,!0)),o.world.scoreboard.reset(0,GAME_DURATION),o.won=!1,o.phase="ready",o.onScore(0),o.onTime(GAME_DURATION),o.onPhase("ready")}export function dispose(o){o.world.dispose()}function end(o,r){o.world.scoreboard.stop(),cancelDrag(o),o.won=r,o.phase="over",r||o.onGameOver(),o.onPhase("over")}export function tick(o,r){if(o.world.isDisposed)return;o.time+=r;const l=o.drag,e=o.layout,t=l?o.pieces[l.slot]?.root:null;if(l&&e&&null!=t&&!l.returning){const r=DRAG_LIFT*easeOutCubic(Math.min(1,(o.time-l.liftedAt)/LIFT_TIME)),n=l.x-l.offsetX,s=l.y-l.offsetY-r;(n!==l.drawnX||s!==l.drawnY)&&(l.drawnX=n,l.drawnY=s,o.world.set(t,{position:toWorld(e,n,s,dragZ)}))}o.world.update(r)}function fits(o,r,l,e){for(let t=0;t<r.length;t++){const n=r[t];for(let r=0;r<n.length;r++){if(1!==n[r])continue;const s=l+t,a=e+r;if(s<0||s>=GRID_SIZE||a<0||a>=GRID_SIZE||null!==o.grid[s*GRID_SIZE+a])return!1}}return!0}function anyMoveLeft(o){for(const r of o.pieces)for(let l=0;l<GRID_SIZE;l++)for(let e=0;e<GRID_SIZE;e++)if(fits(o,r.shape,l,e))return!0;return!1}function fullLines(o,r){const l=l=>null!==o.grid[l]||!!r?.has(l),e=[],t=[];for(let o=0;o<GRID_SIZE;o++){let r=!0,n=!0;for(let e=0;e<GRID_SIZE&&(r||n);e++)r&&!l(o*GRID_SIZE+e)&&(r=!1),n&&!l(e*GRID_SIZE+o)&&(n=!1);r&&e.push(o),n&&t.push(o)}return{rows:e,cols:t}}function cellsOf(o,r,l){const e=[];return o.forEach((o,t)=>o.forEach((o,n)=>1===o&&e.push((r+t)*GRID_SIZE+l+n))),e}function place(o,r,l,e){const t=o.layout,n=o.world,s=o.pieces[r],a=cellsOf(s.shape,l,e),i=[];for(const r of a){o.grid[r]=s.css,o.gridColors[r]=s.color;const l=spawnBlock(n,t,Math.floor(r/GRID_SIZE),r%GRID_SIZE,tint(s.color,FLASH_AMOUNT));o.blocks[r]=l,i.push(l)}n.animate(i,{color:s.color},{duration:FLASH_TIME}),o.world.scoreboard.add(a.length*POINTS_PER_BLOCK),null!=s.root&&n.despawn(s.root),o.pieces[r]=randomPiece(),placeInTray(o,o.pieces[r],r,!0),o.onPlace();const{rows:d,cols:h}=fullLines(o),u=d.length+h.length;if(u>0){const r=new Set;for(const o of d)for(let l=0;l<GRID_SIZE;l++)r.add(o*GRID_SIZE+l);for(const o of h)for(let l=0;l<GRID_SIZE;l++)r.add(l*GRID_SIZE+o);const l=a.reduce((o,r)=>o+Math.floor(r/GRID_SIZE),0)/a.length,e=a.reduce((o,r)=>o+r%GRID_SIZE,0)/a.length;for(const s of r){const r=Math.floor(s/GRID_SIZE),a=s%GRID_SIZE,i=Math.hypot(r-l,a-e)*CLEAR_RIPPLE,d=o.gridColors[s],h=o.blocks[s];null!=h&&d&&popAndBurst(n,h,{scale:blockScale(t),color:d,delay:i,duration:CLEAR_TIME},blockBurst(t,r,a,d)).then(()=>n.despawn(h)),o.blocks[s]=null,o.grid[s]=null,o.gridColors[s]=null}o.world.scoreboard.add(u*POINTS_PER_LINE),o.onClear(u)}o.onScore(o.score),anyMoveLeft(o)||end(o,!1)}export function dragStart(o,r,l){const e=o.layout;if(!e||"playing"!==o.phase||o.drag)return;if(l<e.trayTop-20||l>e.trayTop+e.trayHeight+20)return;const t=e.slots.findIndex(([o])=>Math.abs(r-o)<=e.slotWidth/2),n=t>=0?o.pieces[t]?.root:null;if(null==n)return;const[s,a]=e.slots[t];o.onPick(),o.drag={slot:t,offsetX:r-s,offsetY:l-a,x:r,y:l,liftedAt:o.time,row:null,col:null,valid:!1,returning:!1},o.world.stopAnimation(n),o.world.animate(n,{scale:1},{spring:PICKUP_SPRING})}export function dragMove(o,r,l){const e=o.drag,t=o.layout;if(!e||!t||e.returning)return;e.x=r,e.y=l;const n=o.pieces[e.slot].shape,s=n.length,a=n[0]?.length??0,i=r-e.offsetX,d=l-e.offsetY-DRAG_LIFT,h=t.step/2,u=i>t.boardLeft-h&&i<t.boardLeft+t.boardSize+h&&d>t.boardTop-h&&d<t.boardTop+t.boardSize+h,f=u?Math.round((i-a*t.step/2-CELL_GAP/2-t.boardLeft)/t.step):null,p=u?Math.round((d-s*t.step/2-CELL_GAP/2-t.boardTop)/t.step):null;p===e.row&&f===e.col||(e.row=p,e.col=f,e.valid=null!==p&&null!==f&&fits(o,n,p,f),showPreview(o))}export function dragEnd(o){const r=o.drag,l=o.layout;if(!r||!l||r.returning)return;if(r.valid&&null!==r.row&&null!==r.col&&"playing"===o.phase)return o.drag=null,clearPreview(o),void place(o,r.slot,r.row,r.col);"playing"===o.phase&&null!==r.row&&null!==r.col&&o.onInvalid(),r.returning=!0,clearPreview(o);const e=o.pieces[r.slot]?.root;if(null==e)return void(o.drag=null);const[t,n]=l.slots[r.slot];o.world.animate(e,{position:toWorld(l,t,n,trayZ(l)),scale:TRAY_SCALE},{duration:RETURN_TIME}).then(()=>{o.drag===r&&(o.drag=null)})}function cancelDrag(o){const r=o.drag;if(!r)return;o.drag=null,clearPreview(o);const l=o.layout,e=o.pieces[r.slot]?.root;if(!l||null==e)return;const[t,n]=l.slots[r.slot];o.world.stopAnimation(e),o.world.set(e,{position:toWorld(l,t,n,trayZ(l)),scale:TRAY_SCALE})}const ghosts=new Array(CELLS),highlights=new Array(CELLS);function showPreview(o){const r=o.drag;if(ghosts.fill(null),highlights.fill(!1),r&&null!==r.row&&null!==r.col){const l=o.pieces[r.slot],e=r.valid?l.css:o.colors.CELL_INVALID,t=e+":"+r.valid;let n=o.previewColors.get(t);!n&&(n=flat(toColor(e,r.valid?.5:.3)),o.previewColors.set(t,n));const s=new Set;if(l.shape.forEach((o,l)=>o.forEach((o,e)=>{const t=r.row+l,a=r.col+e;1!==o||t<0||t>=GRID_SIZE||a<0||a>=GRID_SIZE||(ghosts[t*GRID_SIZE+a]=n,s.add(t*GRID_SIZE+a))})),r.valid){const{rows:r,cols:l}=fullLines(o,s);for(const o of r)for(let r=0;r<GRID_SIZE;r++)highlights[o*GRID_SIZE+r]=!0;for(const o of l)for(let r=0;r<GRID_SIZE;r++)highlights[r*GRID_SIZE+o]=!0}}applyPreview(o)}function clearPreview(o){ghosts.fill(null),highlights.fill(!1),applyPreview(o)}function applyPreview(o){const r=o.board;if(!r)return;const l=flat(toColor(o.colors.CELL_HIGHLIGHT));for(let e=0;e<CELLS;e++)ghosts[e]!==o.ghostShown[e]&&(o.ghostShown[e]=ghosts[e],setOverlay(o.world,r.ghosts[e],ghosts[e])),highlights[e]!==o.highlightShown[e]&&(o.highlightShown[e]=highlights[e],setOverlay(o.world,r.highlights[e],highlights[e]?l:null))}
@@ -0,0 +1 @@
1
+ "use strict";import{extrude,Path}from"@nayan-ui/engine";import{spawnBackdrop}from"../shared/EngineBackdrop.js";import{raisedBlockScale,spawnRaisedBlock}from"../shared/EngineBlocks.js";import{createGameMesh as _0x354555}from"../shared/EngineMeshes.js";import{CELL_GAP,flat,GRID_SIZE,toColor}from"./BlockBlastConstants.js";const Z_BACKDROP=-20,Z_BOARD=0,Z_EMPTY=1.2,Z_TRAY=2,Z_DRAG=80;export const toWorld=(o,e,t,l=0)=>[e-o.width/2,o.height/2-t,l];export const cellCenter=(o,e,t)=>[o.boardLeft+CELL_GAP+t*o.step+o.cell/2,o.boardTop+CELL_GAP+e*o.step+o.cell/2];const blockZ=o=>1.2+o.depth/2+.4,highlightZ=o=>1.2+o.depth+2,ghostZ=o=>1.2+o.depth+3;export const trayZ=o=>2+o.depth/2;export const dragZ=80;const HIDDEN=0,SHOWN=1,BOARD_RADIUS=8,CELL_RADIUS=4,RIM_WIDTH=1,panels=new Map;function roundedPanel(o,e,t=0){const l=o+":"+e+":"+t;let r=panels.get(l);if(!r){const n=(new Path).addRoundedRect(0,0,o,o,e);t>0&&n.addRoundedRect(t,t,o-2*t,o-2*t,e-t),r=_0x354555(extrude(n,{depth:0,fillRule:"evenodd"})),panels.set(l,r)}return r}export function buildBoard(o,e,t,l){const r=toWorld(e,e.boardLeft+e.boardSize/2,e.boardTop+e.boardSize/2),n=roundedPanel(e.cell,4),s=(e,t)=>o.spawn({mesh:n,position:e,scale:t,color:[1,1,1,0],pickable:!1}),a=o.spawn({mesh:roundedPanel(e.boardSize,8),position:[r[0],r[1],0],pickable:!1}),p=o.spawn({mesh:roundedPanel(e.boardSize,8,1),position:[r[0],r[1],.5],pickable:!1}),i=[],d=[],h=[];for(let o=0;o<GRID_SIZE;o++)for(let t=0;t<GRID_SIZE;t++){const[l,r]=cellCenter(e,o,t);i.push(s(toWorld(e,l,r,1.2),1)),d.push(s(toWorld(e,l,r,highlightZ(e)),0)),h.push(s(toWorld(e,l,r,ghostZ(e)),0))}const u={backdrop:spawnBackdrop(o,e.width,e.height,-20,l),rim:p,panel:a,empties:i,highlights:d,ghosts:h};return colorBoard(o,u,t),u}export function colorBoard(o,e,t){o.set(e.rim,{color:flat(toColor(t.BORDER))}),o.set(e.panel,{color:flat(toColor(t.SURFACE))});const l=flat(toColor(t.CELL_EMPTY));for(const t of e.empties)o.set(t,{color:l})}export function setOverlay(o,e,t){o.set(e,t?{scale:1,color:t}:{scale:0})}const blockSize=o=>[o.cell,o.cell,o.depth],spawnBlockAt=(o,e,t,l,r)=>spawnRaisedBlock(o,{position:t,size:blockSize(e),color:l,parent:r,shadow:!1});export function spawnBlock(o,e,t,l,r){const[n,s]=cellCenter(e,t,l);return spawnBlockAt(o,e,toWorld(e,n,s,blockZ(e)),r)}export function spawnPiece(o,e,t,l,r,n){const s=t.length,a=t[0]?.length??0,p=o.spawn({mesh:"none",position:toWorld(e,r[0],r[1],trayZ(e)),scale:n,pickable:!1});for(let r=0;r<s;r++)for(let n=0;n<a;n++)1===t[r]?.[n]&&spawnBlockAt(o,e,[(n-(a-1)/2)*e.step,-(r-(s-1)/2)*e.step,0],l,p);return p}export const blockScale=o=>raisedBlockScale(blockSize(o));export function blockBurst(o,e,t,l){const[r,n]=cellCenter(o,e,t),s=toWorld(o,r,n,blockZ(o));return{position:[s[0],s[1],s[2]+2*o.depth],size:o.cell,color:l,glowZ:1.5}}
@@ -1 +1 @@
1
- "use strict";const _0x4f6c74=_0x3216;function _0x3216(e,o){e-=255;const W=_0x2487();let t=W[e];if(void 0===_0x3216.arHToG){const e=function(e,o){let W,t,r=[],a=0,n="";for(e=function(e){let o="",W="";for(let W,t,r=0,a=0;t=e.charAt(a++);~t&&(W=r%4?64*W+t:t,r++%4)?o+=String.fromCharCode(255&W>>(-2*r&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let e=0,t=o.length;e<t;e++)W+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(W)}(e),t=0;t<256;t++)r[t]=t;for(t=0;t<256;t++)a=(a+r[t]+o.charCodeAt(t%o.length))%256,W=r[t],r[t]=r[a],r[a]=W;t=0,a=0;for(let o=0;o<e.length;o++)t=(t+1)%256,a=(a+r[t])%256,W=r[t],r[t]=r[a],r[a]=W,n+=String.fromCharCode(e.charCodeAt(o)^r[(r[t]+r[a])%256]);return n};_0x3216.FqtCTO=e,_0x3216.SUhcTn={},_0x3216.arHToG=!0}const r=W[0];_0x3216.uFKHMA!==r&&(_0x3216.SUhcTn={},_0x3216.uFKHMA=r);const a=_0x3216.SUhcTn[e];return void 0===a?(void 0===_0x3216.UrcqRa&&(_0x3216.UrcqRa=!0),t=_0x3216.FqtCTO(t,o),_0x3216.SUhcTn[e]=t):t=a,t}!function(){const e=_0x3216,o=_0x2487();for(;;)try{if(664982==-parseInt(e(385,"o#ui"))/1*(parseInt(e(380,"d5&P"))/2)+parseInt(e(398,"RsEv"))/3+-parseInt(e(374,"]9Q3"))/4*(-parseInt(e(370,"4bup"))/5)+parseInt(e(416,"88(u"))/6*(parseInt(e(400,"Q]S5"))/7)+-parseInt(e(413,"cDW]"))/8*(-parseInt(e(326,"oWEk"))/9)+parseInt(e(410,"B5Q]"))/10*(parseInt(e(260,"jWKR"))/11)+-parseInt(e(362,"7*e)"))/12)break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x3f608e from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x3c2cfb}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{useBlockBreakerStore,useScore,useIsPlaying,useGameOver,useGameWon}from"./BlockBreakerStore.js";import{BlockBreakerService}from"./BlockBreakerService.js";import{BLOCK_BREAKER_TIME_LIMIT}from"./BlockBreakerConstants.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{setGameInterval,clearGameInterval}from"../../helpers/GameTimer.js";function _0x2487(){const e=["Amklr8oqpqLP","gxG3eSogWRxcT09fzmkaWP/dK0BcMdKjWPjG","CNtcLX3dQq","WRKVsuZdL8kfcW","WRZdT8knWPBdVX7cIc1ZW4dcH8kTW6e","aG1DhNpcJa","xSoJW6/dMmoLW4vPf8oQ","gbHElNFcLmozWP3cQSkwWPu","n8oPW6pcH8oF","aSowq8kGE8o0ka","AWpdVrKJDcFcK8k5W6DrfbO","WQNdLSoVW47dPa","uSkyDCo5W4D8geNcVSks","jbmWWQvqW5RcTW","ymk/xmkbWQW+aM/dQSo7WPJdKSoP","dH5jh3pcLSob","WO3dG8kIWPJdVmoQbq","W4/dOXWlugJdV2vSW7JdVwhdSq","ySkmWOCSW4ylWQyLW5fwyW0","fSokxW","pIyzWO7cH8oWW7G","WQldV8kxWQldJq","WRZdICkNWRtdN2hcQXnAWQhcRSkAW5RcSvVdO8op","hhaNa8o8","kCkGW4VdMCkYW7FcSmkBDZxcPXxdKq","kmovW5xdTSoec8oGBa","dGrvgxFcKCoBWPRcUq","W6FdOvDRW7VcJmo2WQ7cS8orcG","wJXRrSklW6JdM3XYzmkCWQ3dPW","bsOnWPr+W6VcGCk+ECosW7ddU3q","dmoordtcL8kFW4b7WPyYisuQ","rSopW6ZdUmoL","DmkrDCokkdXTFmoM","tdL5wqBdRmkh","bmovnCk9W4fhpa","dMKWgmovWQlcJfngzCkrWPxdKKJcGW","BgTEW4xdKSoTW7KaWQX+WPe","W7GzW6G6WRtcMmkEWRbH","vCktWO0kW4SVWReJW4q","xxpcLXFdPx0","gmoaDCkwqdJdS8oosa","oSoZa8kBW5O","pJ54lLpcQ8oM","q8o4W71wAmk8WO0","W4hdPHqatW","yCodW5JdTmoeW48","wfWKuGissmk8","WRO7tKVdNSkt","W7iYW5jWW6ddJ8ofWR8zW69N","uCkwz8kbWOynlf/dJSozWRJdPa","W7WvW5uer8kJW5W","xSkzCCo4WPngpetcGSkbWQS","WOXhCq/cHG9zWRNcGW","b8o1xmoxiCkYxW","gxS2nSouWRBcHKvC","oJyFWQ/cLSo/W7Gq","sSkqlCkFDcy","WPRcQ8k+jmowuIm","WP3dJSkWWQFdKs/cVG","xI9OrXFdOmkCWPy","WOfEWRxcTCorWOOyWQniW4RdOYGi","DNVdHsG1DCkiymk9","WPVdHCk1WQ/dV8oIfmoBW5e","tIRdHGKCsHhcPa","WOzzWRVcUmoqWOmtWP91W5BdLrOf","F8kMW4/cTe3dKCoiWOG","tqyVALVcHSoaWOdcPmke","eSoVW7lcPmo2kSoA","WPvhWOOTWRW","W77dMZi6B3ddNfPm","WPVcIJmtWP4","W49prCoRiSoZWQW","WP3dGSk/WPRdNSoLhmoD","WRpdKCkPB8oaWPBdNmonDbqHWPlcKG","lCo3EqxcUCkUW7y","herVk1VcG8om","qdBdTCoLW6LbWQqzCSoYj8oS","k8o4W7pcUG","u8kfWPWiW4WKWRepW4zyDa","cN8LifFdGSkKWRKnC8kU","pSk8W5tdJSkfW7ZcQq","WQ/cUmoqcmko","W4ZdPSo+ymoqAqCGW79x","WOBdTSkekSkDxmkKtCknWRxdMmoMgmoxAa","WR51wqFcVc1G","v8kaDSkbWOynlf/dJSozWRG","WPffpWP2WRBdKbJdVmoMwW","jCoScmkmW692cK7cOSkzWOBdNbu","k1lcTmoikhDQWONcM2VcHG","s8kqlCksDdJdQ8og","WRfVWPqSWQtdU8orWQCi","yqBdPG","W59Fq8ojk8o8WQeXu8oa","vCkuaSk8tSo9hWBcGW","W4vUtIJcVW","W4izW6JdG8kjW55mWPTZW4ZdHG","eri+WRlcOCow","puVcGCoYga","WQHZtJJcVc57","W7KFW7qTWQu","yCkmWOrVW487WR0JW5TojHVcP8ocw8oYx8oiwxBcOa","sSkElCkiCcpdHmohva","gColrq","yhRcKdZdNa","dmoaWOX0W4HYfq","EvJcUIRdMvflW4ujDhiKp8ohdH4","WOfgWQGkWPVdO8oYWPGOW79pW6GP","WQ07r0RdJCkzdSoaWOO","omoNW7pcGu/dLmo9WRVdI0tcJG","cSovW5VcH3hdT8ohWPZdUa","WQZdUSkFWQNdKSoBm8oQW6aSfCkWuG","cCorW4xcLNZdT8oi","W7GfW5mLvSkSW5Xk","ySklDCoAmb5FFSo2W7TaW7y","uNRcNb3dU29LW742uhStba","rCkwz8krWPmanfG","ySobW4bNrSknWRTuB8okWQ3dJ8k2","g8ozW7VcPKi","WPVdHCk1WQNdUmoOhCoAW4qonq","tGiRyqBdNmklWOtcMCkxe8k5sq","hX0yDGqD","bwVcRCk5WOiuWOaDsSo6jmobiG","WOFdHCkaWOBdUmo9gmowW4i","vsHnW7lcLMX8","reNdRsbWv8kX","z8oSEuZdV3xdKaFdTW","qCkaCCknWPu","fmoxW5SHW70UWPCHW7u","WPldQmkuxSoUWQFdQG","hX8KWR/cQCobW44NWP1UWRK4rW","ymkeECoDfr8","gbHEkhdcNSoqWPZcVW","iYm3vIi","wJ9UzGBdR8kC","xtLLgCoJWQlcUKPg","WQb/WPu7WRxdKSoe","WOfyoYT7WR/dTbVdRCoXws7cSW","WOuitMpdVW","uYHvxIi","wa5yW4tcUG","W7OWW5G9WQW","W4vizdBcVJldKSkE","kmo0WRndW7jtn8kJWP0","WP/cMCoJkmk/rgK","a8ohtZ7cICkn","FG7dVHy","fmoqvmkrF8o2maxcP2FdTa","eM7cPCk9WR4eWP0","W5ddPSo6WOr+vSkGW43cKmoZ","WO3dHmk1WOVdRCoH","WQZdRg/cPCobW7HvlCkfW4HJ","W5jsrtdcQtxdIa","WR7dUN7cTCouW7vnkG","WQBdNSktWPJdHa","dfrPhL/cGmoDWQ3cImklgq","jmoNW4BcRK/dGCo4WRFdJq","hM0GfSogWPFcGKTn","uK/dUH9WvmkQ","kCoNFYtcQmkHW7zm","W5TopdJdHmkWl8o/WPyM","c8k7aSo6mmkBE00kkNFdGYxdPSo2FG","rmknDSoGW6VcQCkcsZfY","WQ3cRqmVWQ/cKCoRWPtcSW","WPZcLc4FWOFcVmoaWQtcK8ojj8ozWPq","pvtcO8o5lhvY","a8oFbCkzW4S","WONcN8o0cmk/ta"];return(_0x2487=function(){return e})()}import{jsx as _0x45c5a0,jsxs as _0x30a30b}from"react/jsx-runtime";const BlockBreakerComponent=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:W,onReplayGame:t,onShare:r,onShareScreenshot:a,onShowLeaderboard:n,bannerAd:d})=>{const S="&u(&",s="Hbsb",k=_0x3216,i={bBDCY:function(e,o,W){return e(o,W)},VMmdl:function(e,o,W){return e(o,W)},orDlm:function(e,o,W){return e(o,W)},XeQMp:k(342,"rEgm"),cjPyQ:"VsiIL",csbOr:"lose",jbIJA:function(e,o){return e(o)},SwqOM:function(e,o){return e(o)},pxtpN:function(e,o,W){return e(o,W)},ueAJE:function(e,o){return e(o)},IMJrC:function(e,o,W){return e(o,W)},nSgDI:function(e,o){return e<=o},pLCbl:function(e){return e()},CjNnf:function(e,o,W){return e(o,W)},tIyjs:function(e,o,W){return e(o,W)}},m=e?.[k(280,"Hbsb")]??!0,u=e?.[k(303,"XcJ1")]??!0,x=e?.[k(339,"&u(&")]??0,f=_0x3f608e.useRef(m);f.current=m;const p=_0x3f608e[k(333,"gk2x")](u);p[k(290,"CR!D")]=u;const l=_0x3f608e.useRef(W);l[k(377,"j%Mk")]=W;const _=useScore(),C=i[k(307,"mye7")](useIsPlaying),G=useGameOver(),B=i[k(270,"8WUE")](useGameWon),P=_0x3f608e[k(287,"d5&P")](!1),R=_0x3f608e.useRef(!0),O=_0x3f608e[k(275,"J$Xh")](e=>{const o=k;if(l[o(310,"gk2x")]&&!P.current){const W=useBlockBreakerStore[o(325,"h@TF")]()[o(266,"mye7")];l.current({status:e,score:W[o(308,"hvDj")]()}),P[o(409,"Q]S5")]=!0}},[]),y=_0x3f608e[k(418,"S$So")](()=>new BlockBreakerService,[]),h=_0x3f608e.useCallback(()=>{const e=k;i[e(336,"8WUE")](playSound,GAME_SOUNDS[e(364,"h@TF")][e(258,"rD5m")],f.current),playHaptic(HapticType[e(375,"p8zX")],p[e(271,"fx9@")])},[]),b=_0x3f608e[k(420,"XcJ1")](()=>{const e=k;playSound(GAME_SOUNDS[e(277,"9iBI")][e(278,"J$Xh")],f[e(343,"jWKR")]),playHaptic(HapticType[e(311,"h@TF")],p[e(401,"rEgm")])},[]),T=_0x3f608e[k(341,"&u(&")](()=>{const e=k;playSound(GAME_SOUNDS[e(283,"j%Mk")][e(381,"oWEk")],f[e(324,"%1FA")]),playHaptic(HapticType[e(355,"9iBI")],p.current)},[]),H=_0x3f608e[k(419,"LmPz")](()=>{const e=k;i[e(402,"6Zip")](playSound,GAME_SOUNDS[e(363,"iThf")].LOSE_LIFE,f[e(265,"S$So")]),playHaptic(HapticType[e(404,"8hZi")],p.current)},[]),E=_0x3f608e[k(313,"jWKR")](()=>{const e=k;playSound(GAME_SOUNDS[e(351,"ePs[")][e(269,"h@TF")],f[e(349,"&u(&")]),playHaptic(HapticType.SUCCESS,p[e(300,"cDW]")])},[]),Q=_0x3f608e.useCallback(()=>{const e=k;playSound(GAME_SOUNDS[e(273,"6Zip")].POWER_UP,f[e(318,"hvDj")]),playHaptic(HapticType[e(376,"&u(&")],p[e(405,"02)V")])},[]),v=_0x3f608e[k(255,"P8ba")](()=>{const e=k;i.bBDCY(playSound,GAME_SOUNDS[e(344,"rD5m")][e(312,"rD5m")],f[e(387,"G@lA")]),playHaptic(HapticType[e(378,"ePs[")],p[e(295,"vwrL")])},[]),D=_0x3f608e[k(285,"9iBI")](()=>{const e=k;playSound(GAME_SOUNDS[e(421,"o#ui")][e(386,"S$So")],f[e(295,"vwrL")]),playHaptic(HapticType.ERROR,p[e(368,"o#ui")])},[]),I=_0x3f608e.useCallback(()=>{const e=k;playSound(GAME_SOUNDS[e(338,"@6sx")][e(263,"4bup")],f[e(347,"iThf")]),i[e(304,"oWEk")](playHaptic,HapticType[e(378,"ePs[")],p[e(271,"fx9@")])},[]),g=_0x3f608e[k(317,"S1o#")](()=>{const e=k;playSound(GAME_SOUNDS.BLOCK_BREAKER.COMBO,f[e(408,"h@TF")]),playHaptic(HapticType[e(373,"8WUE")],p.current)},[]);_0x3f608e.useEffect(()=>{const e=k;i[e(320,"@6sx")]!==i[e(264,"P8ba")]?y[e(383,"LmPz")](h,b,T,v,H,D,E,Q,I,g):(_0x16d7c0(_0x40375d[e(296,"4bup")].COMBO,_0x5b3496[e(377,"j%Mk")]),_0x44c85e(_0x17d0dd[e(379,"dgt9")],_0x1bb0bf[e(384,"TSZX")]))},[y,h,b,T,v,H,D,E,Q,I,g]),_0x3f608e[k(388,"7*e)")](()=>{const e=k;return useBlockBreakerStore[e(329,"8hZi")](o=>o[e(322,"J$Xh")],o=>{y[e(259,"02)V")](o)})},[y]),_0x3f608e[k(396,"9iBI")](()=>{const e=k;if((G||B)&&!P[e(300,"cDW]")]){const o=B?e(353,"jWKR"):i[e(293,"LmPz")];O(o)}!G&&!B&&(P[e(331,"P8ba")]=!1)},[G,B,O]),_0x3f608e[k(372,"l7fI")](()=>{y.initializeBricks()},[y]),_0x3f608e.useEffect(()=>(R.current=!0,()=>{const e=_0x3216;R[e(295,"vwrL")]=!1,useBlockBreakerStore[e(282,"LmPz")]()[e(289,"9iBI")]&&!P[e(354,"4bup")]&&O("cancel"),useBlockBreakerStore[e(325,"h@TF")]()[e(406,"9iBI")](),y[e(314,"B5Q]")](),useBlockBreakerStore[e(319,"S1o#")]()[e(340,"dgt9")]()}),[y]),_0x3f608e[k(298,S)](()=>{if(!C)return;const e=setGameInterval(()=>{const o=_0x3216;R[o(392,"@6sx")]?useBlockBreakerStore[o(282,"LmPz")]()[o(358,"b9zK")]<=0?(useBlockBreakerStore[o(393,"cDW]")]()[o(321,"Q]S5")](),playSound(GAME_SOUNDS[o(363,"iThf")][o(274,"oWEk")],f[o(343,"jWKR")]),playHaptic(HapticType.ERROR,p.current),i[o(345,")%Wr")](clearGameInterval,e)):useBlockBreakerStore[o(397,"rD5m")]()[o(335,"7*e)")](-1):i[o(305,"cDW]")](clearGameInterval,e)},1e3);return()=>clearGameInterval(e)},[C]);const K=_0x3f608e.useCallback(()=>{const e=k;P.current=!1,useBlockBreakerStore[e(389,"4bup")]()[e(403,"ePs[")](BLOCK_BREAKER_TIME_LIMIT),y.setPlaying(!0),y[e(366,"Hbsb")](),i[e(357,"7*e)")](playSound,GAME_SOUNDS[e(330,"8hZi")][e(415,"gk2x")],f.current),playHaptic(HapticType[e(337,"oWEk")],p.current)},[y]),M=_0x3f608e.useCallback(()=>{const e=k;i[e(332,"p8zX")](O,e(390,"]9Q3")),i[e(299,"d5&P")](playSound,GAME_SOUNDS[e(407,"vwrL")][e(309,"fx9@")],f[e(350,"9iBI")]),playHaptic(HapticType.MEDIUM,p[e(414,"b9zK")]),y[e(292,"m)Kd")](),useBlockBreakerStore[e(279,"TSZX")]()[e(257,"6Zip")](),y[e(272,"8WUE")]()},[y,O]),N=_0x3f608e[k(341,S)](()=>{const e=k;if("lYjdP"!==e(365,"dgt9"))t?.(),y[e(323,"7*e)")](),useBlockBreakerStore.getState()[e(371,"mye7")](),y[e(327,"k!qJ")]();else{if(!_0x36f523[e(391,"88(u")])return void _0x289214(_0xc03dc6);const o=_0xa5e6b3.getState()[e(288,"B5Q]")];i[e(306,"CR!D")](o,0)?(_0x4e9cd3.getState()[e(412,"l7fI")](),_0x115ad3(_0x47d7c6[e(281,"8WUE")][e(276,"J$Xh")],_0x185c63[e(302,"6Zip")]),_0x510e0d(_0x3f17b4.ERROR,_0xaad8f8[e(265,"S$So")]),_0x36b642(_0x350783)):_0x4caeb8[e(393,"cDW]")]().updateTimeRemaining(-1)}},[y,t]),U=_0x3f608e[k(262,"RsEv")](()=>{N()},[N]),J={..._0x3f608e[k(367,"cDW]")](()=>({isPlaying:C,gameOver:G,onStartGame:K,onStopGame:M,onShare:r,onShowLeaderboard:n,startButtonSubtext:k(356,"@6sx")}),[C,G,K,M,r,n])},V={..._0x3f608e[k(291,"%1FA")](()=>({isVisible:G,score:_,onPlayAgain:U,buttonText:"Break Again!",title:B?k(359,"rEgm"):k(395,"%1FA"),message:B?k(267,"l7fI"):k(417,"K$(Y")}),[G,_,U,B])};V[k(334,s)]=a,V[k(256,"]9Q3")]=d;const A={};return A[k(297,s)]=GAME_IDS[k(348,"LmPz")],A.settings=e||DEFAULT_GAME_SETTINGS,A.onSettingsChange=o,_0x45c5a0(GestureHandlerRootView,{style:styles[k(360,"&u(&")],children:_0x30a30b(_0x3c2cfb,{offset:x,children:[_0x45c5a0(GameArea,{gameService:y,offset:x}),i[k(284,"J$Xh")](_0x45c5a0,ScoreBoard,{offset:x}),i.CjNnf(_0x45c5a0,GameControlButton,J),i[k(261,"hvDj")](_0x45c5a0,GameOverModal,V),_0x45c5a0(GameSettingsModal,A)]})})},_0x3324c2={flex:1};_0x3324c2[_0x4f6c74(369,"7*e)")]=BACKGROUND_COLOR;const _0x40bd63={};_0x40bd63[_0x4f6c74(411,"J$Xh")]=1;const _0x417310={};_0x417310[_0x4f6c74(268,"]9Q3")]=_0x3324c2,_0x417310.gestureRoot=_0x40bd63;const styles=StyleSheet[_0x4f6c74(316,"9iBI")](_0x417310);export const BlockBreaker=BlockBreakerComponent;BlockBreaker.displayName=_0x4f6c74(352,"l7fI");
1
+ "use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{livesColumn,scoreColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,LIGHT,LIVES,TIME_LIMIT}from"./BlockBreakerConstants.js";import{createGame,dispose,dragMove,dragStart,reset,setLayout,setTheme,start,tick}from"./BlockBreakerGame.js";import{jsx as _0x5156cb}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.BLOCK_BREAKER;export const BlockBreaker=engineGame(GAME_IDS.BLOCK_BREAKER,e=>{const[t,r]=useLiveState(0),[s,a]=useLiveState(LIVES),[o,i]=useLiveState(TIME_LIMIT),{theme:S,status:n,screen:m,gameOver:p}=useEngineGame(e,{gameId:GAME_IDS.BLOCK_BREAKER,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,s)=>{const a=getLayout(t,r,s);return setLayout(e,a),a.boardWidth},drag:(e,{phase:t,dx:r})=>{"start"===t?dragStart(e):"move"===t&&dragMove(e,r)},sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),wire:(e,t)=>{e.onScore=r,e.onLives=a,e.onTime=i,e.onWall=()=>t(SOUNDS.WALL,HapticType.LIGHT),e.onPaddle=()=>t(SOUNDS.PADDLE,HapticType.LIGHT),e.onBrickHit=()=>t(SOUNDS.HIT,HapticType.LIGHT),e.onBrickBreak=()=>t(SOUNDS.DESTROY,HapticType.MEDIUM),e.onCombo=()=>t(SOUNDS.COMBO,HapticType.MEDIUM),e.onPowerUp=()=>t(SOUNDS.POWER_UP,HapticType.SUCCESS),e.onLaunch=()=>t(SOUNDS.LAUNCH,HapticType.LIGHT),e.onLoseLife=()=>t(SOUNDS.LOSE_LIFE,HapticType.ERROR),e.onWin=()=>t(SOUNDS.WIN,HapticType.SUCCESS),e.onLose=()=>t(SOUNDS.GAME_OVER,HapticType.ERROR)}});return _0x5156cb(EngineGameScreen,{...m,light:LIGHT,columns:[scoreColumn(t),livesColumn(s,LIVES),timerColumn(o,S)],subtext:"Break all bricks!",gameOver:p({title:"win"===n?"YOU WON!":"GAME OVER",message:"win"===n?"All bricks destroyed!":"Great breaking!",scoreLabel:"Final Score",score:t,buttonText:"Break Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x381025=_0x3b54;!function(){const W=_0x3b54,_=_0x1c2f();for(;;)try{if(617571==-parseInt(W(268,"p5Ql"))/1+-parseInt(W(298,"!0iq"))/2+-parseInt(W(295,"38tx"))/3*(-parseInt(W(288,"DQTR"))/4)+parseInt(W(272,"oY1U"))/5+parseInt(W(274,"l!@E"))/6*(-parseInt(W(253,"3&XG"))/7)+-parseInt(W(263,"oY1U"))/8+-parseInt(W(302,"Vp1h"))/9*(-parseInt(W(296,"gG^&"))/10))break;_.push(_.shift())}catch(W){_.push(_.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions,isTablet}from"../../services/UtilsService.js";const GAME_WIDTH=getGameDimensions()[_0x381025(255,"QP8Y")],BRICK_COLS=8,BRICK_ROWS=5,BRICK_PADDING=3,BRICK_WIDTH=Math.floor((GAME_WIDTH-27)/8),BRICK_HEIGHT=isTablet?22:18,GRID_TOP=5,PADDLE_WIDTH=isTablet?100:80,PADDLE_HEIGHT=isTablet?14:12,BALL_RADIUS=isTablet?8:7,BALL_SPEED=isTablet?5:4;function _0x3b54(W,_){W-=246;const x=_0x1c2f();let t=x[W];if(void 0===_0x3b54.OCPCvn){const W=function(W,_){let x,t,o=[],e=0,n="";for(W=function(W){let _="",x="";for(let x,t,o=0,e=0;t=W.charAt(e++);~t&&(x=o%4?64*x+t:t,o++%4)?_+=String.fromCharCode(255&x>>(-2*o&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let W=0,t=_.length;W<t;W++)x+="%"+("00"+_.charCodeAt(W).toString(16)).slice(-2);return decodeURIComponent(x)}(W),t=0;t<256;t++)o[t]=t;for(t=0;t<256;t++)e=(e+o[t]+_.charCodeAt(t%_.length))%256,x=o[t],o[t]=o[e],o[e]=x;t=0,e=0;for(let _=0;_<W.length;_++)t=(t+1)%256,e=(e+o[t])%256,x=o[t],o[t]=o[e],o[e]=x,n+=String.fromCharCode(W.charCodeAt(_)^o[(o[t]+o[e])%256]);return n};_0x3b54.ZPOTDY=W,_0x3b54.nTxlyn={},_0x3b54.OCPCvn=!0}const o=x[0];_0x3b54.ZKcezi!==o&&(_0x3b54.nTxlyn={},_0x3b54.ZKcezi=o);const e=_0x3b54.nTxlyn[W];return void 0===e?(void 0===_0x3b54.gHMdMN&&(_0x3b54.gHMdMN=!0),t=_0x3b54.ZPOTDY(t,_),_0x3b54.nTxlyn[W]=t):t=e,t}export const GRID_HEIGHT=isTablet?650:500;const _0x383f72={BRICK_COLS:8,BRICK_ROWS:5};_0x383f72[_0x381025(290,"j*95")]=3,_0x383f72[_0x381025(286,"YJKM")]=BRICK_WIDTH,_0x383f72[_0x381025(291,"M*iq")]=BRICK_HEIGHT,_0x383f72[_0x381025(252,"p5Ql")]=5,_0x383f72[_0x381025(293,"1jFR")]=PADDLE_WIDTH,_0x383f72.PADDLE_HEIGHT=PADDLE_HEIGHT,_0x383f72[_0x381025(247,"p5Ql")]=isTablet?30:20,_0x383f72[_0x381025(261,"M)xG")]=BALL_RADIUS,_0x383f72[_0x381025(279,"qyp4")]=BALL_SPEED,_0x383f72[_0x381025(289,"zqb7")]=200,_0x383f72[_0x381025(259,"M)xG")]=150,_0x383f72[_0x381025(281,"QP8Y")]=3,_0x383f72[_0x381025(254,"DQTR")]=.15,_0x383f72[_0x381025(269,"j@V9")]=2,_0x383f72[_0x381025(297,"latR")]=isTablet?18:14;export const BLOCK_BREAKER_GAME_CONFIG=_0x383f72;function _0x1c2f(){const W=["WQCIW5LzW5BdJSkIWOS3WQBcSCkiFmoRamkbjCo3bmkZcHNcG8kv","WPNdS8kaAqpdJbW","W53cTSkdW7FcJ0/cOYpcQXqpW5hcOG","A0ZcU3pcNbC7jmkKxG","cmkuBCo0kX8dW4S","W4jcFSkvWPfCcq4","hg3cVmklW7zMWOOwW74FWOlcNbuKiG","f8oTrcFcGq","WQ7dISoMW7hcMspdHa","W6a+bG3cPG","vmohs0bCCbbv","v0NcOIOhEveJWPf+WOPpo0ldK3xcHWPteW","W5FcJSkQWOLpmMPHW6JdNv4","ruFcPYGmEe83WP15WOy","B2tcRCo3WPejW68","W5GNWOBcL2PYW5VcMCoXW53cQXfo","emkmWPddO0/dLSk5","W4OuWORdNKhcLmov","it0wW5pdMG","W63dUCkfEWxdHXRcQJTIWOelnG","D8o/e8kcrxmQW41UWO4Gnq","cmksWPm4DNeAW4nUCCoAzmogWOG","kSk6WQyCdbX6WQyDaSk4fmk2W6ddH8oEW6eckthcNJFcMCkN","WORcQZ3cImoBgmkQtCkOWPSfW7y","W5qSWO/cNw10WR7cRmoFW4dcTJC","W5X7tSkFA8oBBaixWOpcRv4","C3PSWRdcS8oTWQ8MW4zfvrC","mIFdI8k1FIxcQG","WRGWW5DmWPFcO8o1W593W6O","wdxcQrDdW59gp2tdPaHIWRK","WRqeiCoQamk8BZ0fWPJcR3vX","WPCeW7D0WQhcR8ohW7TEW4i","W7hdMuhdTG","lmonDHBcUG","yu3cMSk7WRn+W6G","W7lcOmkmWQ04ub4qWOdcSsLNdd3cMSk6W4PTW7VcR8oQWRyufxa","W79XoSkPW6dcOdNdQq","WOhcQttcGSozg8ojrmk1WO08W4K6","s23dRmkkfmknW7xdKuZcSKu","W77cGCkzjtpcQ3dcPSoogW","FHpdKSo2WPqkW6KJW6SeWP3cRH8","W53cTSkDW7ZcIupcQspcSqOzW5xcTCoFW7KI","aJRdRblcU8kkW7rMi3bVcw0","WRSSWPX2d8kAe8oDW4TmdmoO","ruFcPYGmFLWYWP1G","FLxcQ2xcKq0OoSkRxZJcPa","E8oTW7q7yHz3","W6lcKIpcN33dI8ox","WQJdICkbasRcUMVcRG","WPWoaCk6W4RcSrVdMfLKWQtdKmoS","jCkCr8kGuMpcOLxcTCkPmmkn","dhtcJr9IgCo/vmoaDvzgya","fCkiWOGPBxenW5j9BG","W4tcIbrzW6aPWRBcVmkSWONcOSkPetRdNLr1lNLCWO8JWO7dSq","WQBcKCksFYtdJbhdK1CQDSk9pq","q0pdLMfhW5Th","h8khymo0oa4tW5LcWRiIlSkVWPfcASkWW7uOFW"];return(_0x1c2f=function(){return W})()}export const BRICK_COLORS=["#FF3B3B",_0x381025(246,"MEu6"),_0x381025(256,"zqb7"),_0x381025(265,"0!b0"),"#BF5AF2",_0x381025(262,"DQTR")];export let PowerUpType=function(W){const _=_0x381025,x={};x[_(266,"l!@E")]=_(287,"gG^&");const t=x;return W[_(260,"HQFq")]="wide_paddle",W[_(300,"j@V9")]=_(276,"qyp4"),W[_(251,"1jFR")]=t[_(257,"9%k#")],W}({});export const BLOCK_BREAKER_TIME_LIMIT=300;const _0x31c8e9={};_0x31c8e9.BACKGROUND=BACKGROUND_COLOR,_0x31c8e9[_0x381025(282,"11$S")]=PRIMARY_COLOR,_0x31c8e9.PADDLE="#ffffff",_0x31c8e9.PADDLE_GLOW=_0x381025(301,"2uW!"),_0x31c8e9[_0x381025(280,"h$OG")]=_0x381025(275,"oI[d"),_0x31c8e9[_0x381025(292,"M)xG")]=_0x381025(270,"j@V9"),_0x31c8e9.UI=PRIMARY_COLOR,_0x31c8e9[_0x381025(267,"pcl@")]=_0x381025(283,"HQFq"),_0x31c8e9.GRID_BOX_BORDER=_0x381025(248,"qyp4"),_0x31c8e9[_0x381025(278,"4bCe")]=_0x381025(294,"j@V9"),_0x31c8e9.POWER_UP_MULTI=_0x381025(264,"y!xY"),_0x31c8e9[_0x381025(250,"zqb7")]="#FFD700";export const BLOCK_BREAKER_COLORS=_0x31c8e9;
1
+ "use strict";import{isTablet}from"../../services/UtilsService.js";import{getSceneInputInsets}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const BRICK_COLS=8;export const BRICK_ROWS=5;export const LIVES=3;export const TIME_LIMIT=300;export const POINTS_PER_BRICK=200;export const POINTS_PER_COMBO=150;export const COMBO_CALLOUT=3;export let PowerUpType=function(t){return t.WIDE_PADDLE="wide_paddle",t.MULTI_BALL="multi_ball",t.EXTRA_LIFE="extra_life",t}({});export const POWER_UP_TYPES=[PowerUpType.WIDE_PADDLE,PowerUpType.MULTI_BALL,PowerUpType.EXTRA_LIFE];export const POWER_UP_CHANCE=.15;export const MAX_BALLS=5;export const WIDE_FACTOR=1.3;export const WIDE_MAX=1.5;export const WIDE_TIME=10;export const FRAME_TIME=1/60;export const MAX_FRAMES=2;export const BALL_SPEED=isTablet?5:4;export const BALL_RADIUS=isTablet?8:7;export const LAUNCH_SPREAD=Math.PI/3;export const PADDLE_BOUNCE=Math.PI/3;export const POWER_UP_SPEED=2;export const POWER_UP_SIZE=isTablet?18:14;export const RELAUNCH_DELAY=.5;export const PADDLE_WIDTH_TIME=.22;export const BUMP_TIME=.06;export const BUMP_SPRING={damping:8,stiffness:320};export const BALL_SPAWN_SPRING={damping:10,stiffness:300};export const BRICK_DROP=18;export const BRICK_INTRO_SPRING={damping:11,stiffness:190};export const BRICK_ROW_STAGGER=.07;export const BRICK_COL_STAGGER=.018;export const PULSE_TIME=.52;export const TRAIL=[{k:1.6,r:.8,o:.32},{k:3.2,r:.62,o:.18},{k:4.8,r:.45,o:.08}];export const LIGHT=frontLight([-.3,.7,1],.5);export const BRICK_COLORS=["#FF3B3B","#FFD700","#32CD32","#4DA6FF","#BF5AF2","#FF9500"];export const POWER_UP_COLORS={[PowerUpType.WIDE_PADDLE]:"#00FF88",[PowerUpType.MULTI_BALL]:"#FF6B9D",[PowerUpType.EXTRA_LIFE]:"#FFD700"};export const PADDLE_COLOR="#ffffff";export const BALL_COLOR="#e0e0e0";export const TRAIL_COLOR="#ffffff";export const CLASSIC_BOARD="rgba(255, 255, 255, 0.25)";export const CLASSIC_BORDER="rgba(255, 255, 255, 0.5)";export const CLASSIC_RADIUS=16;export const THEMED_RADIUS=8;const BRICK_PADDING=3,GRID_TOP=5;export function getLayout(t,o,e){const r=gameWidthFor(t),s=getSceneInputInsets(e),p=s.top+4,n=Math.max(1,o-p-s.bottom-10),_=Math.min(isTablet?650:500,n),L=Math.floor((r-27)/8),I=isTablet?22:18,E=isTablet?14:12;return{width:t,height:o,boardLeft:(t-r)/2,boardTop:p+(n-_)/2,boardWidth:r,boardHeight:_,brickWidth:L,brickHeight:I,bricksLeft:(r-(8*L+21))/2,bricksTop:5,brickStepX:L+3,brickStepY:I+3,paddleWidth:isTablet?100:80,paddleHeight:E,paddleTop:_-(isTablet?30:20)-E/2,minX:BALL_RADIUS,maxX:r-BALL_RADIUS,lostY:_-BALL_RADIUS}}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{introPlayed}from"../shared/EngineUtils.js";import{BALL_RADIUS,BALL_SPEED,BRICK_COL_STAGGER,BRICK_COLS,BRICK_ROW_STAGGER,BRICK_ROWS,COMBO_CALLOUT,FRAME_TIME,LAUNCH_SPREAD,LIVES,MAX_BALLS,MAX_FRAMES,PADDLE_BOUNCE,POINTS_PER_BRICK,POINTS_PER_COMBO,POWER_UP_CHANCE,POWER_UP_SPEED,POWER_UP_TYPES,PowerUpType,RELAUNCH_DELAY,TIME_LIMIT,WIDE_FACTOR,WIDE_MAX,WIDE_TIME}from"./BlockBreakerConstants.js";import{breakBrick,buildScenery,bumpPaddle,colorBall,hitBrick,pieceColors,placeBall,placePaddle,placePowerUp,removeBall,removeScenery,setPaddleWidth,setSceneryTheme,spawnBall,spawnBrick,spawnPaddle,spawnPowerUp}from"./BlockBreakerScene.js";const WORLD_CAPACITY=500,newBricks=()=>Array.from({length:BRICK_ROWS*BRICK_COLS},(e,o)=>({row:Math.floor(o/BRICK_COLS),col:o%BRICK_COLS,hits:1,entity:null}));export function createGame(e){const o=new World(500),l={world:o,camera:{eye:[0,0,400],target:[0,0,0],fov:1,ortho:1},theme:e,colors:pieceColors(e),layout:null,scenery:null,phase:"ready",get score(){return o.scoreboard.score},get lives(){return o.scoreboard.lives},get timeLeft(){return o.scoreboard.shownSeconds},won:!1,time:0,bricks:newBricks(),balls:[],powerUps:[],combo:0,paddle:null,paddleX:0,paddleWidth:0,dragFrom:0,intro:!0,introAge:-1,onPhase:e=>{},onScore:e=>{},onLives:e=>{},onTime:e=>{},onWall:()=>{},onPaddle:()=>{},onBrickHit:()=>{},onBrickBreak:()=>{},onCombo:()=>{},onPowerUp:()=>{},onLaunch:()=>{},onLoseLife:()=>{},onWin:()=>{},onLose:()=>{}};return o.scoreboard.reset(LIVES,TIME_LIMIT),o.scoreboard.handlers={onSecond:e=>l.onTime(e),onTimeUp:()=>"playing"===l.phase&&end(l,!1)},l}const after=(e,o,l)=>e.world.after(o,l),brickX=(e,o)=>e.bricksLeft+o.col*e.brickStepX,brickY=(e,o)=>e.bricksTop+o.row*e.brickStepY;export function setLayout(e,o){const l=e.world,d=e.layout;e.scenery&&removeScenery(l,e.scenery),e.paddle&&l.despawn(e.paddle.root),clearPieces(e);for(const o of e.bricks)null!=o.entity&&l.despawn(o.entity);e.layout=o,e.camera.ortho=o.height/2,e.scenery=buildScenery(l,o,e.theme),e.paddleX=d?e.paddleX/d.boardWidth*o.boardWidth:o.boardWidth/2,d&&0!==e.paddleWidth||(e.paddleWidth=o.paddleWidth),e.paddle=spawnPaddle(l,o,e.paddleX,e.paddleWidth,e.colors.paddle),spawnBricks(e),d&&"playing"===e.phase&&after(e,RELAUNCH_DELAY,()=>relaunch(e))}export function setTheme(e,o){if(e.theme=o,e.colors=pieceColors(o),e.layout&&e.scenery&&!e.world.isDisposed){setSceneryTheme(e.world,e.layout,e.scenery,o),e.paddle&&e.world.set(e.paddle.body,{color:e.colors.paddle});for(const o of e.balls)o.view&&colorBall(e.world,o.view,e.colors)}}function spawnBricks(e){const o=e.layout;if(!o)return;const l=e.intro;l&&(e.introAge=0);for(const d of e.bricks)d.hits<=0||(d.entity=spawnBrick(e.world,o,brickX(o,d),brickY(o,d),d.row,l?d.row*BRICK_ROW_STAGGER+d.col*BRICK_COL_STAGGER:null))}function clearPieces(e){for(const o of e.balls)o.view&&removeBall(e.world,o.view);for(const o of e.powerUps)null!=o.entity&&e.world.despawn(o.entity);e.balls=[],e.powerUps=[]}function launch(e,o){const l=e.layout;if(!l)return;const d=(Math.random()-.5)*LAUNCH_SPREAD,t=l.paddleTop-BALL_RADIUS-2;e.balls.push({x:o,y:t,vx:Math.sin(d)*BALL_SPEED,vy:-Math.abs(Math.cos(d)*BALL_SPEED),view:spawnBall(e.world,l,o,t,e.colors)}),e.combo=0,e.onLaunch()}function relaunch(e){"playing"!==e.phase||e.balls.length||launch(e,e.paddleX)}export function start(e){const o=e.layout;"ready"===e.phase&&o&&(e.bricks.some(e=>e.hits>0)||newWall(e),e.paddleX=o.boardWidth/2,e.paddleWidth=o.paddleWidth,e.paddle&&(placePaddle(e.world,o,e.paddle,e.paddleX),setPaddleWidth(e.world,o,e.paddle,e.paddleWidth,!1)),e.phase="playing",e.world.scoreboard.startCountdown(TIME_LIMIT),e.onPhase("playing"),launch(e,e.paddleX))}function newWall(e){for(const o of e.bricks)null!=o.entity&&e.world.despawn(o.entity);e.bricks=newBricks(),e.intro=!0,spawnBricks(e)}export function reset(e){e.world.cancelTimers(),clearPieces(e),newWall(e);const o=e.layout;o&&e.paddle&&(e.paddleX=o.boardWidth/2,e.paddleWidth=o.paddleWidth,placePaddle(e.world,o,e.paddle,e.paddleX),setPaddleWidth(e.world,o,e.paddle,e.paddleWidth,!1)),e.combo=0,e.world.scoreboard.reset(LIVES,TIME_LIMIT),e.won=!1,e.phase="ready",e.onScore(0),e.onLives(LIVES),e.onTime(TIME_LIMIT),e.onPhase("ready")}export function dispose(e){e.world.cancelTimers(),e.world.dispose()}function end(e,o){e.world.scoreboard.stop(),e.world.cancelTimers(),e.won=o,e.phase="over",o?e.onWin():e.onLose(),e.onPhase("over")}export function tick(e,o){e.world.isDisposed||(introPlayed(e,o),e.time+=o,"playing"===e.phase&&e.balls.length&&step(e,Math.min(o/FRAME_TIME,MAX_FRAMES)),e.world.update(o))}export function dragStart(e){e.dragFrom=e.paddleX}export function dragMove(e,o){const l=e.layout;if(!l||!e.paddle||"playing"!==e.phase)return;const d=e.paddleWidth/2;e.paddleX=Math.max(d,Math.min(l.boardWidth-d,e.dragFrom+o)),placePaddle(e.world,l,e.paddle,e.paddleX)}function step(e,o){const l=e.layout,d=e.world,t=e.paddleWidth/2,a=e.paddleX;let r=0,n=0,i=0,s=!1,p=!1,h=0,L=!1;const w=e.balls;let y=0;for(const _ of e.balls){let A=_.x+_.vx*o,b=_.y+_.vy*o,{vx:u,vy:f}=_,B=!1;if(A<=l.minX?(A=l.minX,u=Math.abs(u),B=!0):A>=l.maxX&&(A=l.maxX,u=-Math.abs(u),B=!0),b-BALL_RADIUS<=0&&(b=BALL_RADIUS,f=Math.abs(f),B=!0),B&&r++,b+BALL_RADIUS>l.lostY)L=!0,_.view&&removeBall(d,_.view);else{if(f>0&&b+BALL_RADIUS>=l.paddleTop&&b+BALL_RADIUS<=l.paddleTop+l.paddleHeight+5&&A>=a-t-BALL_RADIUS&&A<=a+t+BALL_RADIUS){const o=(A-a)/t*PADDLE_BOUNCE,r=Math.hypot(u,f);u=Math.sin(o)*r,f=-Math.abs(Math.cos(o)*r),b=l.paddleTop-BALL_RADIUS-1,n++,e.paddle&&bumpPaddle(d,e.paddle,1),e.combo=0}for(const o of e.bricks){if(o.hits<=0)continue;const t=brickX(l,o),a=brickY(l,o);if(!(A+BALL_RADIUS<=t||A-BALL_RADIUS>=t+l.brickWidth||b+BALL_RADIUS<=a||b-BALL_RADIUS>=a+l.brickHeight)){if(Math.min(A+BALL_RADIUS-t,t+l.brickWidth-(A-BALL_RADIUS))<Math.min(b+BALL_RADIUS-a,a+l.brickHeight-(b-BALL_RADIUS))?u=-u:f=-f,o.hits-=1,o.hits<=0){if(null!=o.entity&&breakBrick(d,l,o.entity,t,a,o.row),o.entity=null,s=!0,e.combo++,e.combo>=COMBO_CALLOUT&&i++,Math.random()<POWER_UP_CHANCE){const o=POWER_UP_TYPES[Math.floor(Math.random()*POWER_UP_TYPES.length)],r=t+l.brickWidth/2,n=a+l.brickHeight/2;e.powerUps.push({type:o,x:r,y:n,entity:spawnPowerUp(d,l,o,r,n)})}}else null!=o.entity&&hitBrick(d,o.entity),p=!0;h+=POINTS_PER_BRICK+e.combo*POINTS_PER_COMBO;break}}_.x=A,_.y=b,_.vx=u,_.vy=f,_.view&&placeBall(d,l,_.view,A,b,u,f),w[y++]=_}}w.length=y;const _=[];e.powerUps=e.powerUps.filter(e=>{e.y+=POWER_UP_SPEED*o;const r=e.y>=l.paddleTop&&e.y<=l.paddleTop+l.paddleHeight+10&&e.x>=a-t-10&&e.x<=a+t+10;return r&&_.push(e.type),r||e.y>l.boardHeight?(null!=e.entity&&d.despawn(e.entity),!1):(null!=e.entity&&placePowerUp(d,l,e.entity,e.x,e.y),!0)});for(const o of _)collect(e,o);for(let o=0;o<r;o++)e.onWall();for(let o=0;o<n;o++)e.onPaddle();for(let o=0;o<i;o++)e.onCombo();h>0&&e.onScore(e.world.scoreboard.add(h)),s?e.onBrickBreak():p&&e.onBrickHit();for(let o=0;o<_.length;o++)e.onPowerUp();if(L&&!e.balls.length){if(e.onLives(e.world.scoreboard.addLives(-1)),e.onLoseLife(),e.lives<=0)return void end(e,!1);after(e,RELAUNCH_DELAY,()=>relaunch(e))}e.bricks.some(e=>e.hits>0)||end(e,!0)}function collect(e,o){const l=e.layout;if(o===PowerUpType.WIDE_PADDLE)e.paddleWidth=Math.min(l.paddleWidth*WIDE_MAX,e.paddleWidth*WIDE_FACTOR),e.paddle&&setPaddleWidth(e.world,l,e.paddle,e.paddleWidth,!0),after(e,WIDE_TIME,()=>{e.paddleWidth=l.paddleWidth,e.paddle&&e.layout===l&&setPaddleWidth(e.world,l,e.paddle,e.paddleWidth,!0)});else if(o===PowerUpType.MULTI_BALL){const o=e.balls[0];if(o&&e.balls.length<MAX_BALLS){const d=.7*Math.hypot(o.vx,o.vy);for(const t of[-d,d])e.balls.push({x:o.x,y:o.y,vx:t,vy:-d,view:spawnBall(e.world,l,o.x,o.y,e.colors)})}}else e.world.scoreboard.setLives(Math.min(e.lives+1,LIVES)),e.onLives(e.lives);e.paddle&&bumpPaddle(e.world,e.paddle,1.4)}
@@ -0,0 +1 @@
1
+ "use strict";import{extrude,Path}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{popAndBurst}from"../shared/EngineBlasts.js";import{raisedBlockScale,spawnRaisedBlock}from"../shared/EngineBlocks.js";import{cacheGameAsset,createGameMesh as _0x29fada}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{BALL_COLOR,BALL_RADIUS,BALL_SPAWN_SPRING,BRICK_COLORS,BRICK_DROP,BRICK_INTRO_SPRING,BUMP_SPRING,BUMP_TIME,CLASSIC_BOARD,CLASSIC_BORDER,CLASSIC_RADIUS,PADDLE_COLOR,PADDLE_WIDTH_TIME,POWER_UP_COLORS,POWER_UP_SIZE,PULSE_TIME,THEMED_RADIUS,TRAIL,TRAIL_COLOR}from"./BlockBreakerConstants.js";const Z_BACKDROP=-20,Z_BOARD=0,Z_RIM=.2,Z_TRAIL=1,HIDDEN=0;export const toWorld=(e,o,t,r=0)=>[e.boardLeft+o-e.width/2,e.height/2-(e.boardTop+t),r];const brickDepth=e=>.7*e.brickHeight,brickZ=e=>.2+brickDepth(e)/2+1,brickSize=e=>[e.brickWidth,e.brickHeight,brickDepth(e)],brickScale=e=>raisedBlockScale(brickSize(e)),paddleDepth=e=>.9*e.paddleHeight,paddleZ=e=>.2+paddleDepth(e)/2+1,powerUpZ=()=>POWER_UP_SIZE+2,ballZ=()=>BALL_RADIUS+POWER_UP_SIZE+4,meshes=new Map,mesh=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("block-breaker/BlockBreakerScene:"+e,o),meshes.set(e,t)),t},discMesh=()=>mesh("disc",()=>_0x29fada(extrude((new Path).addCircle(0,0,.5),{depth:0}))),panelMesh=(e,o,t,r=0)=>mesh("panel:"+e+":"+o+":"+t+":"+r,()=>{const a=(new Path).addRoundedRect(0,0,e,o,t);return r>0&&a.addRoundedRect(r,r,e-2*r,o-2*r,t-r),_0x29fada(extrude(a,{depth:0,fillRule:"evenodd"}),{center:!1})}),BRICKS=BRICK_COLORS.map(e=>toColor(e));export const brickColor=e=>BRICKS[e%BRICKS.length];export function pieceColors(e){if("light"===e.mode){const o=toColor(e.TEXT);return{ball:o,trail:o,paddle:o}}return{ball:toColor(BALL_COLOR),trail:toColor(TRAIL_COLOR),paddle:toColor(PADDLE_COLOR)}}function spawnBoard(e,o,t){const r="classic"===t.mode,a=r?CLASSIC_RADIUS:THEMED_RADIUS;return[e.spawn({mesh:panelMesh(o.boardWidth,o.boardHeight,a),position:toWorld(o,0,0,0),color:toColor(r?CLASSIC_BOARD:t.BOARD.SURFACE),pickable:!1}),e.spawn({mesh:panelMesh(o.boardWidth,o.boardHeight,a,1.5),position:toWorld(o,0,0,.2),color:toColor(r?CLASSIC_BORDER:t.BOARD.BORDER),pickable:!1})]}export function buildScenery(e,o,t){return{backdrop:spawnBackdrop(e,o.width,o.height,-20,t),parts:spawnBoard(e,o,t)}}export function removeScenery(e,o){e.despawn(o.backdrop);for(const t of o.parts)e.despawn(t)}export function setSceneryTheme(e,o,t,r){setBackdropTheme(e,t.backdrop,r);for(const o of t.parts)e.despawn(o);t.parts=spawnBoard(e,o,r)}export function spawnBrick(e,o,t,r,a,i){const n=t+o.brickWidth/2,l=r+o.brickHeight/2,s=brickScale(o),p=spawnRaisedBlock(e,{position:toWorld(o,n,null===i?l:l-BRICK_DROP,brickZ(o)),size:brickSize(o),color:brickColor(a),grow:null===i?1:0});return null!==i&&(e.animate(p,{position:toWorld(o,n,l,brickZ(o))},{spring:BRICK_INTRO_SPRING,delay:i}),e.animate(p,{scale:s},{duration:.15,delay:i})),p}export function breakBrick(e,o,t,r,a,i){const n=toWorld(o,r+o.brickWidth/2,a+o.brickHeight/2,brickZ(o));popAndBurst(e,t,{scale:brickScale(o),color:brickColor(i),duration:.45},{position:[n[0],n[1],n[2]+brickDepth(o)],size:1.6*o.brickHeight,color:brickColor(i),glowZ:.5}).then(()=>{e.despawn(t)})}export function hitBrick(e,o){e.animate(o,{shake:2},{duration:.15})}export function spawnPaddle(e,o,t,r,a){const i=e.spawn({mesh:"none",position:toWorld(o,t,o.paddleTop+o.paddleHeight/2,paddleZ(o)),pickable:!1});return{root:i,body:e.spawn({mesh:"roundedBox",parent:i,scale:[r,o.paddleHeight,paddleDepth(o)],color:a,pickable:!1})}}export function placePaddle(e,o,t,r){e.set(t.root,{position:toWorld(o,r,o.paddleTop+o.paddleHeight/2,paddleZ(o))})}export function setPaddleWidth(e,o,t,r,a){const i=[r,o.paddleHeight,paddleDepth(o)];a?e.animate(t.body,{scale:i},{duration:PADDLE_WIDTH_TIME}):(e.stopAnimation(t.body),e.set(t.body,{scale:i}))}export function bumpPaddle(e,o,t){e.animate(o.root,{scale:[1+.06*t,1-.22*t,1]},{duration:BUMP_TIME,easing:"linear"}).then(()=>{e.animate(o.root,{scale:1},{spring:BUMP_SPRING})})}export function spawnBall(e,o,t,r,a){const i=e.spawn({mesh:"sphere",position:toWorld(o,t,r,ballZ()),scale:0,color:a.ball,pickable:!1});return e.animate(i,{scale:2*BALL_RADIUS},{spring:BALL_SPAWN_SPRING}),{ball:i,trail:TRAIL.map(i=>e.spawn({mesh:discMesh(),position:toWorld(o,t,r,1),scale:2*BALL_RADIUS*i.r,color:withAlpha(a.trail,i.o),pickable:!1}))}}const withAlpha=(e,o)=>[e[0],e[1],e[2],o];export function placeBall(e,o,t,r,a,i,n){e.set(t.ball,{position:toWorld(o,r,a,ballZ())}),t.trail.forEach((t,l)=>e.set(t,{position:toWorld(o,r-i*TRAIL[l].k,a-n*TRAIL[l].k,1)}))}export function colorBall(e,o,t){e.set(o.ball,{color:t.ball}),o.trail.forEach((o,r)=>e.set(o,{color:withAlpha(t.trail,TRAIL[r].o)}))}export function removeBall(e,o){e.despawn(o.ball);for(const t of o.trail)e.despawn(t)}export function spawnPowerUp(e,o,t,r,a){const i=toColor(POWER_UP_COLORS[t]),n=e.spawn({mesh:"none",position:toWorld(o,r,a,powerUpZ()),scale:0,pickable:!1});e.animate(n,{scale:1},{spring:BALL_SPAWN_SPRING}),e.spawn({mesh:"sphere",parent:n,scale:1.4*POWER_UP_SIZE,color:i,pickable:!1});const l=e.spawn({mesh:discMesh(),parent:n,position:[0,0,-POWER_UP_SIZE],scale:1.8*POWER_UP_SIZE,color:[i[0],i[1],i[2],.25],pickable:!1});return e.animate(l,{scale:2.3*POWER_UP_SIZE},{duration:PULSE_TIME,easing:"easeInOut",repeat:"forever",yoyo:!0}),n}export function placePowerUp(e,o,t,r,a){e.set(t,{position:toWorld(o,r,a,powerUpZ())})}
@@ -1 +1 @@
1
- "use strict";function _0x5275(e,o){e-=168;const t=_0x1ee1();let W=t[e];if(void 0===_0x5275.JDsJmf){const e=function(e,o){let t,W,n=[],r=0,a="";for(e=function(e){let o="",t="";for(let t,W,n=0,r=0;W=e.charAt(r++);~W&&(t=n%4?64*t+W:W,n++%4)?o+=String.fromCharCode(255&t>>(-2*n&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let e=0,W=o.length;e<W;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),W=0;W<256;W++)n[W]=W;for(W=0;W<256;W++)r=(r+n[W]+o.charCodeAt(W%o.length))%256,t=n[W],n[W]=n[r],n[r]=t;W=0,r=0;for(let o=0;o<e.length;o++)W=(W+1)%256,r=(r+n[W])%256,t=n[W],n[W]=n[r],n[r]=t,a+=String.fromCharCode(e.charCodeAt(o)^n[(n[W]+n[r])%256]);return a};_0x5275.uhjMNb=e,_0x5275.tsDPAg={},_0x5275.JDsJmf=!0}const n=t[0];_0x5275.pmGciX!==n&&(_0x5275.tsDPAg={},_0x5275.pmGciX=n);const r=_0x5275.tsDPAg[e];return void 0===r?(void 0===_0x5275.bCbIlH&&(_0x5275.bCbIlH=!0),W=_0x5275.uhjMNb(W,o),_0x5275.tsDPAg[e]=W):W=r,W}const _0x30e697=_0x5275;!function(){const e="gGp5",o=_0x5275,t=_0x1ee1();for(;;)try{if(147507==parseInt(o(189,"Q0UE"))/1*(parseInt(o(297,"fq2d"))/2)+-parseInt(o(308,"57gN"))/3+parseInt(o(219,"7ocA"))/4*(-parseInt(o(303,"g1#)"))/5)+-parseInt(o(243,"g1#)"))/6*(parseInt(o(185,")dfM"))/7)+-parseInt(o(281,e))/8*(-parseInt(o(180,e))/9)+parseInt(o(319,"[*fH"))/10*(parseInt(o(276,"PwNe"))/11)+parseInt(o(188,"g@S9"))/12)break;t.push(t.shift())}catch(e){t.push(t.shift())}}();import _0xd12b90 from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";function _0x1ee1(){const e=["WRbuWQW6Ax0WrmoEW6jm","WQqEmCo5oYBdPKe","WOdcQctdPcZcImkwFmowW55I","W45FBmk9zCowl8kjW6WYW5pdRIC","W40kaJ7dTX9N","ecm9sCkqWRmMmeSblHW","WOfPwgmoWQnniW","W5DkW67cS8kE","W4JdT35aa8k/ya","WQ7cM8o0W609WQWceCov","W5RdKmoNChTxwa","kwvBlmoJWPC","WQfoWROjzhaLAmoEW6Xc","W47dRZpdIrO","p2nmdmoJWP/cUW","WRijWQ/dTmoP","W4RdGmoHvNDustDVi8kJW4pcNuVdKry","W5jwW7xcLmkvr8oa","W4ngW7tcG8keBSovlCke","WPlcM1tdTSoOWOpcQbDPFmoL","CCkqWRRcO8k7fwfKF8omDgm","W6mKW5jNl8oIW7tdUG","W4xdNHhcVCk1WQlcSG","kSoiW6ldTmoMtq","WQtcMSoZW601WQqahCoDfG","WQRcKCoUW4OOWQqyeq","WRtcSMPVWPZcPCoDWPdcJW","W5y4rKSIWOi","zmoAW5LcAmou","kbLXW7NdQSkEnCkuiCkHWR1Y","yXbUn8kSumo2","g8okhGpdR0jWW4iQca","W7hdPcXWWRNcSSoRWP/cGa","lSoNW5nEiHRdOSoaWRTkomko","WQJcMSo7W7SWWQa/g8oshuHA","WQf9W4r8dq","zCo8csNdMSojyxC","WQVcQeaccq","rqnrW68AWR/dObtcRmo4WOVcVGpdRSkMBbdcU8o0WP0JW64zFCktW4NcKraP","Amk6W7ddQbjCpLa","p8ojWQyh","jgtdNmopAaJdJq","yGSgW7BcTSkhnWj4","W4RdLCo5A2O","WR7cGCo4W6O/WRCffSoc","WQj0WPy4ra","W4hdJHFcNmkKWQ3cSIG","W4XuECkmFCose8kn","v3z9pmogW6OUkNaw","WRDiWQ04yhi9","C23cNSobpbRcISkPzW","gSokgtBdT2rOW4yH","WQVdUSo5W63cGrVcOG","lNnng8oYWRBcRSkDrq","FCkEW4NcU8kO","WOtcUcxdOJZcLmkh","bXFcHqWPW7FcGKldOa","emo9WPOXW6Coya","W4ZdLSoWr3HFsqz+","W7T0x8kztmoWmW","WRHjWRCjWO9FW4JdQmozW7zz","WQj2W4bRgmoOW5FdLSopsLSY","zSkrnCoPW5K","nab0p8kiC8oY","WPTFWRRdIrRdICoEWO1V","pmoAW6NdKSoLr11/rG","WQNcLmobWPKmWPFdKa","jKXwW5FcOSkzgJLVWQNcMG","v1NcN1mJW5KB","W6tdPZBcHa","kwvBpCoNWP3cO8ksqConFW","W4HeF8kTBmoDeW","WPxcRmo3WPZcHr7dGmo+","WQu7WRhdRmoL","W7upWQJdVmonwmkB","W7/cVCo8W4aQka","W4HdAmk+FCow","dCkCcgVcGW","WQvausXPoSoi","W446W4j6W6HMW5/dL8oj","yCoSdWJdI8ogyq","W7jDW7dcSCk7i8kaW4RcH8o8W71n","d8kkfMlcTG","yGrcW7PFWQxdUW","W7VdJCkTWQSKWOCpmmoUmG","WOrzvJu","WPOWcCk8jqS","pCkMa3VcSCojeG","W4hdOW3dLsnKn8kV","c8oAgchdPK19","l8oXw38BafT7","WRlcSXuzWPH0WRK","oSkJWRBdH1jbFeLzgriTiq","WQRcKva7e8oPWOO/tmkloq","k8kGfeRcTColcSk8Etbt","W5OwhsNdGbr+WRBdUCkTh8onWQO","WO/cNmkImgz7tYfddW","W4xdUCk2W5JdMeddOq","EmkBWRtcOCk7v3LMCmoYAW","WQzcWRJdNK7dPmokWO16WO90W4SE","W7TwW6RcLSoqAmotiCkiW5/cKW","W7/dHbBdR8kJWRNcTdTLwSoypCkxbHLWDIq/hcb+tG","mCk9iMhcTCovaW","WOf0BHTtg8oQkCoQ","W6RdSG95WQZcJmoJWPZcGG","W4VcUmowECoQ","yKu0WQJcPSoTdCkbcq","uIvXW5PU","CmkngmoyW4KCc8kka8oSW7i","W4ZdLSoWuhTF","hmoUWO4WW6Cu","W4RdGmoHrx9ustjLia","WQtcHCowWQm","g8obBg8QmNW","W5ncW6tcJCkxw8oBnCkpW5xdSCoIwSkBWRu","WP3cJYaJWQK","kSoJpXG","W6eiW6L7ncOTECoNW71RWR8","W6tdIIZdJq","g8kbi0BcHG","DSkBcCopW4eDaSk6b8oIW7JdHCobzmoWWRS","W5HuECklymoEaSk6W7KRW5VdPdRdImoVW7e","W6iKWOqFtSkYW5ddP8onFvmN","WRBcOXm4WOL7WRNdTa","WQbzrIy","W7NcTCoIBSoSqG3cGG","ut7dUSoZrmoIWQC","C1u1WR/cT8oega","mbbYhSkzFmoYW4W","W51mW7tcGW","W4ZdLSoWqx9vqaDRlCkP","W5pdMaBcJmkXWQdcQI9Tt8ow","W6ddKSo0BMO","xv/cVu0NW44gW6NdQG","zb9rW6PwWQ7dH1xcVCoLWO/dSva","W4KAbb/dPHbNWRi","WRZcL0Ckf8oRWPi","kSoCW77dPCoMt0W","W4LHu8oGvcddHJPZW6tdVG","WPTFWRtdIYNdR8osWOu","WQJcI1S","WQRcKva9fmoJWOm+wq","BmkQW7BdIqntpG","WOGIaCklcqK","W7ZdGmkVW7SPWRCTlCor","W6BdRZ53WQhcKmozWP3cKc3cMSkM","WRvftZD4","WOpcV0KDkW","zSkld8oPW40EeW","AcyktmkXW4xcOSk9DmoxqSkA","WQ/cJeuSbG","WRHGW7bbc8oWW4i","sK3cQSkqxSo0Awq","W7vAWRddJCofwmkfW6K"];return(_0x1ee1=function(){return e})()}import{useSharedValue}from"react-native-reanimated";import{GameControlButton,GameOverModal,GameSettingsModal}from"../../helpers/index.js";import{GameBackground}from"./components/GameBackground.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{useBlukStore,useGameOver,useGameWon,useIsPlaying}from"./BlukStore.js";import{BlukService}from"./BlukService.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{jsx as _0x8a0127,jsxs as _0x25d7d2}from"react/jsx-runtime";const BlukComponent=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:W,onShare:n,onShareScreenshot:r,onShowLeaderboard:a,bannerAd:d})=>{const s="K4h#",S="!Uhh",u="r*Xb",m=_0x5275,i={vIIrA:function(e,o,t){return e(o,t)},Ywalt:function(e,o){return e(o)},vWfuI:function(e,o){return e===o},pnpTt:function(e,o){return e(o)},Fbgct:"QxOzN",QYgkb:function(e,o){return e(o)},fiiUn:m(251,"cH(K"),hiJOM:function(e){return e()},jbPsu:function(e,o,t){return e(o,t)}},k=_0xd12b90[m(234,"0JJA")](e?.[m(193,"g1#)")]??!0);k[m(296,"^TLF")]=e?.[m(304,")dfM")]??!0;const l=_0xd12b90[m(302,"fq2d")](e?.[m(293,"0Vs[")]??!0);l[m(317,"ZRsS")]=e?.[m(316,"&UQ*")]??!0;const p=e?.[m(269,"NV4B")]??0,x=_0xd12b90.useRef(t);x[m(230,"&UQ*")]=t;const C=_0xd12b90[m(170,"57gN")](W);C.current=W;const f=useGameOver(),_=useGameWon(),b=useIsPlaying(),R=f||_,G=_0xd12b90[m(268,s)](!1),g=_0xd12b90[m(252,S)](e=>{const o=m;if(x[o(173,"57gN")]&&!G[o(208,"PwNe")]){const t=useBlukStore.getState()[o(174,"]RSM")];x[o(227,"Z8j#")]({status:e,score:t[o(284,"6mMn")]()}),G.current=!0}},[]),B=i[m(309,S)](useSharedValue,0),O=_0xd12b90.useMemo(()=>new BlukService,[]),h=_0xd12b90.useCallback(()=>{const e=m;playSound(GAME_SOUNDS[e(228,"fXTy")].JUMP,k.current),i[e(204,"PwNe")](playHaptic,HapticType[e(274,"Wn7c")],l[e(222,"Q0UE")])},[]),Q=_0xd12b90[m(253,u)](()=>{const e=m;playSound(GAME_SOUNDS.BLUK[e(199,"NV4B")],k[e(216,"NV4B")]),playHaptic(HapticType[e(187,"%i]j")],l[e(242,"0Vs[")])},[]),P=_0xd12b90[m(171,"PwNe")](()=>{const e=m;playSound(GAME_SOUNDS[e(271,"$5y@")][e(218,"&UQ*")],k[e(307,"x$pe")]),playHaptic(HapticType.SUCCESS,l[e(286,"g@S9")])},[]),H=_0xd12b90[m(289,s)](()=>{const e=m;playSound(GAME_SOUNDS.BLUK.FALL,k[e(230,"&UQ*")]),playHaptic(HapticType[e(278,"r*Xb")],l[e(246,"r*Xb")])},[]),y=_0xd12b90[m(226,"*]1&")](()=>{const e=m;playSound(GAME_SOUNDS.BLUK[e(238,"7ocA")],k[e(225,"YVFv")]),playHaptic(HapticType.ERROR,l[e(242,"0Vs[")])},[]);_0xd12b90.useEffect(()=>{O[m(220,"gGp5")](h,Q,P,H,y)},[O,h,Q,P,H,y]);const N=_0xd12b90.useRef(null);_0xd12b90[m(215,"7kT0")](()=>{const e=m,o={TcCoh:function(e,o){return i[_0x5275(194,"gGp5")](e,o)}},t=useBlukStore[e(203,"g1#)")](o=>o[e(292,"Z8j#")],o=>{const t=e,W={BuYlW:function(e,o){return i.Ywalt(e,o)}};O.setPlaying(o),o?(N[t(176,"]XVU")]&&clearInterval(N[t(237,"%BH^")]),N.current=setInterval(()=>{const e=t,o=useBlukStore[e(294,"ZRsS")]()[e(254,"ZRsS")];o<=1?(useBlukStore[e(247,"v!zH")]().setTimeRemaining(0),useBlukStore[e(206,"&UQ*")]()[e(207,"wj1@")]()):useBlukStore[e(282,"Wn7c")]()[e(175,"K4h#")](o-1)},1e3)):N[t(181,"fXTy")]&&(i.vWfuI(t(221,"x$pe"),t(232,"]RSM"))?_0x4d409a[t(239,"fOk7")]&&(W[t(196,"m%Cm")](_0x3f4f46,_0x5b9cf2[t(285,"1@%D")]),_0x198676.current=null):(i[t(291,"K4h#")](clearInterval,N[t(239,"fOk7")]),N[t(250,"Wn7c")]=null))});return()=>{const W=e;t(),N.current&&o[W(213,"k1MC")](clearInterval,N[W(317,"ZRsS")])}},[O]),_0xd12b90.useEffect(()=>{const e=m;i[e(264,"6mMn")]!==e(236,"r*Xb")?_&&!G[e(248,"&)@$")]&&i[e(241,"r*Xb")](g,e(299,"!Uhh")):(_0x447c25[e(295,"!Uhh")]&&_0x5404b6(_0x44023d[e(307,"x$pe")]),_0x322d40[e(250,"Wn7c")]=_0x5663c9(()=>{const o=e,t=_0x4b2fe6[o(198,"cH(K")]().timeRemaining;t<=1?(_0x1f1a8c[o(184,"g1#)")]()[o(279,"x$pe")](0),_0x1fed47[o(205,"fXTy")]()[o(270,"K4h#")]()):_0x584bd0.getState()[o(280,"&UQ*")](t-1)},1e3))},[_,g]),_0xd12b90[m(217,"K4h#")](()=>{const e=m;f&&!G[e(246,"r*Xb")]&&g(e(288,"]XVU")),!f&&(G.current=!1)},[f,_,R,g]),_0xd12b90[m(224,"^TLF")](()=>{O[m(183,"g1#)")]()},[O]),_0xd12b90[m(300,"!Uhh")](()=>()=>{const e=_0x5275;useBlukStore[e(195,"fOk7")]()[e(263,")dfM")]&&!G[e(211,"!^b%")]&&g(e(186,"[*fH")),useBlukStore.getState()[e(298,"PYCp")](),O.cleanup(),useBlukStore[e(282,"Wn7c")]()[e(265,"g@S9")]()},[O,g]);const T=_0xd12b90[m(229,"57gN")](()=>{const e=m,o=i[e(320,"]XVU")][e(305,"%BH^")]("|");let t=0;for(;;){switch(o[t++]){case"0":playSound(GAME_SOUNDS[e(277,"v!zH")][e(266,"0Vs[")],k[e(214,"Cv!R")]);continue;case"1":O.startGame();continue;case"2":O[e(310,"gGp5")]()&&(useBlukStore.getState()[e(177,"]XVU")](),O.resetGame());continue;case"3":playHaptic(HapticType[e(272,"f&85")],l.current);continue;case"4":useBlukStore[e(287,"Q0UE")]()[e(223,"PYCp")]();continue;case"5":G[e(200,"Y(@*")]=!1;continue;case"6":O[e(190,"&)@$")](!0);continue}break}},[O]),I=_0xd12b90[m(290,"fXTy")](()=>{const e=m,o=e(209,"Y(@*")[e(202,"K4h#")]("|");let t=0;for(;;){switch(o[t++]){case"0":playSound(GAME_SOUNDS.BLUK[e(262,"%BH^")],k[e(301,"cH(K")]);continue;case"1":playHaptic(HapticType.MEDIUM,l.current);continue;case"2":O[e(191,")dfM")]();continue;case"3":useBlukStore.getState()[e(210,"&)@$")]();continue;case"4":g(e(182,"^TLF"));continue}break}},[O,g]),U=_0xd12b90.useCallback(()=>{const e=m;C[e(169,"K4h#")]?.(),G[e(208,"PwNe")]=!1,useBlukStore[e(249,"f&85")]()[e(212,"57gN")](),O[e(212,"57gN")]()},[O]),v=_0xd12b90[m(267,"x$pe")](()=>{i[m(172,"v!zH")](U)},[U]),M={..._0xd12b90.useMemo(()=>({isPlaying:!R&&b,gameOver:f,onStartGame:T,onStopGame:I,onShare:n,onShowLeaderboard:a,startButtonSubtext:m(197,"0Vs[")}),[R,b,f,T,I,n,a])},A={..._0xd12b90[m(321,"*gpD")](()=>({isVisible:R,score:R?useBlukStore.getState()[m(174,"]RSM")]:0,onPlayAgain:v,buttonText:m(259,"]XVU"),title:_?m(314,"fq2d"):"GAME OVER",message:_?m(260,"fXTy"):m(258,"PYCp")}),[R,_,v])};A[m(261,u)]=r,A.bannerAd=d;const K={};return K[m(245,"fq2d")]=GAME_IDS[m(275,"&)@$")],K[m(231,"$5y@")]=e||DEFAULT_GAME_SETTINGS,K.onSettingsChange=o,_0x8a0127(GestureHandlerRootView,{style:styles[m(168,"g1#)")],children:i.vIIrA(_0x25d7d2,GameBackground,{offset:p,cameraX:B,children:[_0x8a0127(GameArea,{gameService:O,offset:p,cameraX:B}),i[m(306,"m%Cm")](_0x8a0127,ScoreBoard,{offset:p}),_0x8a0127(GameControlButton,M),_0x8a0127(GameOverModal,A),_0x8a0127(GameSettingsModal,K)]})})},_0x44337d={};_0x44337d[_0x30e697(283,"%BH^")]=1,_0x44337d[_0x30e697(273,"]XVU")]=_0x30e697(256,"$5y@");const _0x49a136={flex:1},_0x561a3a={};_0x561a3a.container=_0x44337d,_0x561a3a[_0x30e697(315,"Cv!R")]=_0x49a136;const styles=StyleSheet[_0x30e697(235,"&UQ*")](_0x561a3a);export const Bluk=BlukComponent;Bluk[_0x30e697(313,"PwNe")]=_0x30e697(244,"%BH^");
1
+ "use strict";import{useMemo}from"react";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS,isTablet}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,timerColumn}from"../shared/EngineHud.js";import{toRgb}from"../shared/EngineUtils.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{GAME_DURATION,getConfig,LIGHT}from"./BlukConstants.js";import{createGame,dispose,drag,reset,setLayout,setTheme,start,tick}from"./BlukGame.js";import{skyFor}from"./BlukScene.js";import{jsx as _0x1a46e8}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.BLUK,FEEDBACK={jump:{sound:SOUNDS.JUMP,haptic:HapticType.LIGHT},land:{sound:SOUNDS.LAND,haptic:HapticType.MEDIUM},perfect:{sound:SOUNDS.PERFECT,haptic:HapticType.SUCCESS},fall:{sound:SOUNDS.FALL,haptic:HapticType.ERROR},gameOver:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}};export const Bluk=engineGame(GAME_IDS.BLUK,e=>{const[t,s]=useLiveState(0),[r,i]=useLiveState(GAME_DURATION),{theme:o,status:a,screen:n,gameOver:m}=useEngineGame(e,{gameId:GAME_IDS.BLUK,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s)=>setLayout(e,getConfig(t,s,isTablet)),drag:drag,sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),onOver:(e,t)=>{"win"===t&&e(SOUNDS.WIN,HapticType.SUCCESS)},wire:(e,t)=>{e.onScore=s,e.onTime=i,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}}),S=skyFor(o).stops[0],p=useMemo(()=>toRgb(S),[S]);return _0x1a46e8(EngineGameScreen,{...n,light:LIGHT,background:p,columns:[scoreColumn(t),timerColumn(r,o)],subtext:"Drag, release and jump!",gameOver:m({title:"win"===a?"YOU WIN!":"GAME OVER",message:"win"===a?"You survived 2 minutes!":"Nice jumping!",scoreLabel:"Final Score",score:t,buttonText:"Jump Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x1f8944=_0xffee;!function(){const _=_0xffee,W=_0x44d7();for(;;)try{if(253962==parseInt(_(553,"abGG"))/1*(-parseInt(_(525,"AJDX"))/2)+-parseInt(_(543,"r^Vo"))/3*(parseInt(_(493,"9HCw"))/4)+parseInt(_(497,"j#R^"))/5+-parseInt(_(503,"V&50"))/6*(parseInt(_(560,"]2iW"))/7)+-parseInt(_(495,"4Z*g"))/8*(-parseInt(_(512,"ZHim"))/9)+parseInt(_(563,"abGG"))/10+-parseInt(_(531,"V*2L"))/11*(-parseInt(_(556,"A]4#"))/12))break;W.push(W.shift())}catch(_){W.push(W.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR,lighten as _0xcaaa42,darken as _0x3689fc}from"../../services/GamesConstants.js";import{getGameDimensions,isTablet}from"../../services/UtilsService.js";function _0xffee(_,W){_-=491;const d=_0x44d7();let x=d[_];if(void 0===_0xffee.hEFlNs){const _=function(_,W){let d,x,f=[],o=0,e="";for(_=function(_){let W="",d="";for(let d,x,f=0,o=0;x=_.charAt(o++);~x&&(d=f%4?64*d+x:x,f++%4)?W+=String.fromCharCode(255&d>>(-2*f&6)):0)x="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(x);for(let _=0,x=W.length;_<x;_++)d+="%"+("00"+W.charCodeAt(_).toString(16)).slice(-2);return decodeURIComponent(d)}(_),x=0;x<256;x++)f[x]=x;for(x=0;x<256;x++)o=(o+f[x]+W.charCodeAt(x%W.length))%256,d=f[x],f[x]=f[o],f[o]=d;x=0,o=0;for(let W=0;W<_.length;W++)x=(x+1)%256,o=(o+f[x])%256,d=f[x],f[x]=f[o],f[o]=d,e+=String.fromCharCode(_.charCodeAt(W)^f[(f[x]+f[o])%256]);return e};_0xffee.NlmkTs=_,_0xffee.rkYsKK={},_0xffee.hEFlNs=!0}const f=d[0];_0xffee.pyzTWF!==f&&(_0xffee.rkYsKK={},_0xffee.pyzTWF=f);const o=_0xffee.rkYsKK[_];return void 0===o?(void 0===_0xffee.NSBfbT&&(_0xffee.NSBfbT=!0),x=_0xffee.NlmkTs(x,W),_0xffee.rkYsKK[_]=x):x=o,x}function _0x44d7(){const _=["W43cQb4RWORdGSk1CCkvWP8EW5dcSSoOWQddRJNdJ8kbdW","e8oCWO/dICoDWQ12WOBcJSoUmGFcMLBcL8kQW4CJWQWLWRy","W7XNehJdVKLf","f3qfhCoNW5CWWPBdMutdU8kIW4FcN0ddTa","WR/dJKjyl8k5W4xcNmoYWPBcMevnW7Os","bXddLHhdJ8kZt8k7W6ZcPJmjz8o7d0fuiCk/ea","s8knWRRcQJ43WRDqW7i","iSoOk0XJWR0Ui0/dSWm0vSkXBCkPWOq","smk+ac7cM8k6nt4TFdi9jrdcKmox","zSoSB8kzlGVdPG","x8o0wrZcSSkbW4iqley","rmoIyCkUW6VcMhXctIaSimo/WO/dTxq","D8k1yxpdNuXLW6ZdOGvX","wCkXlY7cHmobWOH1CCkdW55xW6dcRwVdKHe","kCoVW4JcUJueWQvOW7ddMmkHW7rAwG","WPD3WQ4ZbJqxWPNdJmk/W5j+nSo0pLG","iSkapwCxvCkx","oSoMtKCYfeuhidtcTmkc","WR5mW4VcG8knW6xcTCogW4uQW4ldVMyCzq","CSk3nIhcP31jW54","W70FW4aHW4hcMq","W5FdKSkahmobiCkSfLKvWOazBGO","WQivWPfVEIuT","wSkVjIFcKComWOrJBmkyW49mW6RcVw/dKGvvuhuK","oSk7vaHzB8klWOOLW4K","WRPHlmo9W6uiWQL8WRddKGX3","uCo9nrjGqCkoW7ZdGW5Fmq","f8ovfqRcRMP8W4ldPG97W6NdPfHB","crVcTCkTiSoRWRehWRBcMSosgcpcOq","zSokvmkkWPhdTX03mLHfqmkFW6BcGaGGkCoB","qbG7WP/cJmoYWRnonhZdGW","e8oogaZcQNT3W5NdUWy","WPZdU8k2oKtcGWi","W6/dNJrzW4CcWR4","aWVdMXFdI8kIrmkGW7hcRZmfyCoOfa","W4JcMWvpz3ajWPRdIN3dV8k0bG","WRzpWPPXW6JdLCko","xSkvkdzhz1GVeqhcJCkA","t8k+cdBcKSk3otaTEJiIjq3cNmobe8kSWQj0WONcOW","W7WzyN3cGtKX","W5ivWODVFs1hcHWMW78QWPC","W5VcTt9QfCk7W5pcMmoy","WQJdIurhmmkKW4JcKa","sCkvxKi1ycy","CCo3ySkdjG3dOmoSju0/","CCo3ySkdjG3dOmo7kvKUWPi","FSoVaLSIoSowW79OWQdcOLjVAwWPWQzVW4tdKMZcLmkhv1m","l8o/wmk2gaSsdSo6k8k+","WQNdRcrHwKihWO8","uCkDDw1oECku","pSkrjdZcJmktW5uqfG","WOWiyxZdRfuMBgSCWPfUWRZdSSoB","DgNdNMZcTSoqvq","WPeRW57cKt0gWOiuWRRcMSoFaG","lSoeEfdcICkmbZ0EEG","W43dKSkfBwy","W5D6WOJdHYuhW7jBW7pdISkmELjkb8oCEYGNAxJcVSk5xSkW","lCo2xCk4fhDGmSoEoSkYhGG","p8o9xSk1fhnJ","W5eFWPLMEtfheraRW709WOC4W6xdQG","W49PquNcTN7dSvioCMC","BeG2WPFcHmkfW7a","iwmeWRVcTCorWRzg","W4RdImo8Eq0","pCoiWQS7aehdJ3NcMSoVhW","tSk7W45xE23dJa","WPqSW5/cNJGdWQ8pWQRcMmokfG","W4RcS0jmo8k1WQm","W5FdKSkahmobiCkSfLKvWOazzHW","WPVdVxKaW6ddMsuvbu0","CSoYW4BcM3iMi8otWRddGmoyubK/WPOF","wCkAjdfhzxW2iatcISk5","zwZcQMxdQCkMqSk+W4dcLq","Db/dNgVdImkJjq","WOVcMSopWRrUW4zlW6/dUCk9"];return(_0x44d7=function(){return _})()}const{screenWidth:screenWidth}=getGameDimensions(),SCREEN_HEIGHT=getGameDimensions()[_0x1f8944(526,"I(hs")],BLOCK_SIZE=isTablet?56:44,PILLAR_MIN_WIDTH=isTablet?68:50,PILLAR_MAX_WIDTH=isTablet?96:68,PILLAR_TOP_MIN=Math.round(.44*SCREEN_HEIGHT),PILLAR_TOP_MAX=Math[_0x1f8944(494,"saLk")](.68*SCREEN_HEIGHT),PILLAR_DEPTH=isTablet?16:12,BLOCK_DEPTH=isTablet?10:7,VIEWPORT_MARGIN=isTablet?16:12,ANCHOR_X=Math.round(.18*screenWidth),GAP_ROOM=screenWidth-VIEWPORT_MARGIN-PILLAR_DEPTH-1.5*PILLAR_MAX_WIDTH-ANCHOR_X,GAP_MIN=Math[_0x1f8944(561,"$SiQ")](Math.min(.3*screenWidth,.9*GAP_ROOM)),GAP_MAX=Math.round(GAP_ROOM),GAP_GROWTH_PER_SCORE=isTablet?1:.8,GAP_GROWTH_MAX=isTablet?60:36,WIDTH_SHRINK_PER_SCORE=isTablet?.7:.5,WIDTH_SHRINK_MAX=isTablet?28:18,GRAVITY=.62,POWER_MULTIPLIER=.16,MIN_LAUNCH_SPEED=6,MAX_LAUNCH_SPEED=isTablet?26:22,SWEET_SPOT_WIDTH=BLOCK_SIZE,POINTS_PER_LAND=1e3,PERFECT_BONUS=500,FALL_THRESHOLD_Y=SCREEN_HEIGHT+120,TRAJECTORY_DOTS=16,TRAJECTORY_STEP=3,_0xb0d6d3={};_0xb0d6d3[_0x1f8944(500,"T3aD")]=BLOCK_SIZE,_0xb0d6d3.PILLAR_MIN_WIDTH=PILLAR_MIN_WIDTH,_0xb0d6d3[_0x1f8944(521,"j%%4")]=PILLAR_MAX_WIDTH,_0xb0d6d3[_0x1f8944(527,"y8I6")]=PILLAR_TOP_MIN,_0xb0d6d3[_0x1f8944(499,"y8I6")]=PILLAR_TOP_MAX,_0xb0d6d3[_0x1f8944(551,"g!xa")]=PILLAR_DEPTH,_0xb0d6d3.BLOCK_DEPTH=BLOCK_DEPTH,_0xb0d6d3[_0x1f8944(496,"4Z*g")]=GAP_MIN,_0xb0d6d3[_0x1f8944(492,"@Jy8")]=GAP_MAX,_0xb0d6d3[_0x1f8944(506,"Kr*1")]=GAP_GROWTH_PER_SCORE,_0xb0d6d3[_0x1f8944(534,"wcCu")]=GAP_GROWTH_MAX,_0xb0d6d3[_0x1f8944(544,"]2iW")]=WIDTH_SHRINK_PER_SCORE,_0xb0d6d3.WIDTH_SHRINK_MAX=WIDTH_SHRINK_MAX,_0xb0d6d3[_0x1f8944(510,"M1GV")]=VIEWPORT_MARGIN,_0xb0d6d3[_0x1f8944(548,"M1GV")]=ANCHOR_X,_0xb0d6d3[_0x1f8944(515,"g!xa")]=.62,_0xb0d6d3[_0x1f8944(517,"M(zc")]=.16,_0xb0d6d3[_0x1f8944(509,"@y&X")]=6,_0xb0d6d3.MAX_LAUNCH_SPEED=MAX_LAUNCH_SPEED,_0xb0d6d3[_0x1f8944(501,"sNFS")]=SWEET_SPOT_WIDTH,_0xb0d6d3[_0x1f8944(524,"W3Gl")]=1e3,_0xb0d6d3[_0x1f8944(541,"b3iu")]=500,_0xb0d6d3.FALL_THRESHOLD_Y=FALL_THRESHOLD_Y,_0xb0d6d3[_0x1f8944(540,"V&50")]=16,_0xb0d6d3[_0x1f8944(533,"AJDX")]=3,_0xb0d6d3[_0x1f8944(546,"Z*r3")]=SCREEN_HEIGHT,_0xb0d6d3.SCREEN_WIDTH=screenWidth;export const BLUK_GAME_CONFIG=_0xb0d6d3;export const BLOCK_COLORS=["#FF6B6B",_0x1f8944(498,"M1GV"),_0x1f8944(545,"BdA!"),_0x1f8944(549,"r^Vo"),_0x1f8944(522,"]Pbw"),_0x1f8944(504,"V&50"),_0x1f8944(539,"Uall"),_0x1f8944(538,"$SiQ")];export const BLOCK_3D_CACHE=BLOCK_COLORS.map(_=>({frontTop:_0xcaaa42(_,.42),front:_,frontBottom:_0x3689fc(_,.28),topLight:_0xcaaa42(_,.65),top:_0xcaaa42(_,.38),right:_0x3689fc(_,.48)}));const _0x1250b4={};_0x1250b4[_0x1f8944(505,"k8bz")]=BACKGROUND_COLOR,_0x1250b4.PRIMARY=PRIMARY_COLOR,_0x1250b4.UI=PRIMARY_COLOR,_0x1250b4[_0x1f8944(537,"AJDX")]=_0x1f8944(508,"BdA!"),_0x1250b4[_0x1f8944(511,"V&50")]=_0x1f8944(528,"Z*r3"),_0x1250b4[_0x1f8944(532,"]Pbw")]=_0x1f8944(542,"I(hs"),_0x1250b4[_0x1f8944(514,"]2iW")]=_0x1f8944(564,"abGG"),_0x1250b4[_0x1f8944(519,"1S7g")]="#16242D",_0x1250b4[_0x1f8944(550,"g!xa")]="#264552",_0x1250b4[_0x1f8944(565,"Z*r3")]=_0x1f8944(558,"V&50"),_0x1250b4[_0x1f8944(513,"oGO^")]=_0x1f8944(562,"j#R^"),_0x1250b4[_0x1f8944(536,"9HCw")]=_0x1f8944(535,"M(zc"),_0x1250b4.SWEET_SPOT_RECESS=_0x1f8944(507,"lO4N"),_0x1250b4[_0x1f8944(516,"A]4#")]="#FFDD22",_0x1250b4[_0x1f8944(557,"BdA!")]="rgba(255, 210, 30, 0.6)",_0x1250b4[_0x1f8944(529,"1S7g")]="rgba(255, 200, 0, 0.22)",_0x1250b4[_0x1f8944(520,"ZHim")]=_0x1f8944(552,"k!pL"),_0x1250b4[_0x1f8944(523,"r^Vo")]=_0x1f8944(555,"n&sC");export const BLUK_COLORS=_0x1250b4;
1
+ "use strict";import{frontLight}from"../shared/EngineUtils.js";export const GAME_DURATION=120;export const POINTS_PER_LAND=1e3;export const PERFECT_BONUS=500;export const LOOKAHEAD=4;export const PERFECT_SHOW=.6;export const FALL_DELAY=.25;export const GRAVITY=.62;export const POWER_MULTIPLIER=.16;export const MIN_LAUNCH_SPEED=6;export const STEP_MS=1e3/60;export const STEP_TOLERANCE_MS=2;export const MAX_PENDING_MS=34;export const TRAJECTORY_DOTS=16;export const TRAJECTORY_STEP=3;export function getConfig(t,o,r){const e=r?56:44,E=r?68:50,n=r?96:68,s=r?16:12,p=r?16:12,A=Math.round(.18*t),S=t-p-s-1.5*n-A;return{width:t,height:o,blockSize:e,pillarMinWidth:E,pillarMaxWidth:n,pillarTopMin:Math.round(.44*o),pillarTopMax:Math.round(.68*o),pillarDepth:s,gapMin:Math.round(Math.min(.3*t,.9*S)),gapMax:Math.round(S),gapGrowthPerScore:r?1:.8,gapGrowthMax:r?60:36,widthShrinkPerScore:r?.7:.5,widthShrinkMax:r?28:18,viewportMargin:p,anchorX:A,maxLaunchSpeed:r?26:22,sweetSpotWidth:e,fallThresholdY:o+120}}export const BLOCK_COLORS=["#FF6B6B","#4ECDC4","#FFD93D","#6BCB77","#4D96FF","#FF6FB5","#A66CFF","#FF9F45"];export const START_COLOR=2;export const COLORS={PILLAR:"#537A8D",PILLAR_TOP:"#84AFC0",PILLAR_EDGE:"#CDEBF5",PILLAR_BAND:"#365463",ROCK:"#7C8A93",GRASS:"#5DAE4A",GRASS_DARK:"#3E8A35",MOSS:"#4A7A3A",SWEET_RECESS:"#0C1B22",SWEET_SPOT:"#FFDD22",TRAJECTORY:"#64D2FF",SKIN:"#F5C99A",PUPIL:"#2C2C2C",SMILE:"#C0785A",PERFECT:"#FFD700"};export const SKIES={classic:{stops:["#05040F","#0C0A22","#150F35","#1E1548","#140D31","#070413"],stars:!0,tower:"#2A2150"},dark:{stops:["#17122B","#1C1634","#241D40","#3D3659","#2A2442","#17122B"],stars:!0,tower:"#3A3062"},light:{stops:["#C0B9DB","#C8C2E0","#E2DFF0","#EEECF7","#E2DFF0","#C8C2E0"],stars:!1,tower:"#A99FCB"}};export const SKY_POSITIONS=[0,.16,.36,.55,.78,1];export const PITCH=.3;export const YAW=.42;export const LIGHT=frontLight([-.45,.7,.6],.5);
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{FALL_DELAY,GAME_DURATION,MAX_PENDING_MS,START_COLOR,STEP_MS,STEP_TOLERANCE_MS}from"./BlukConstants.js";import{landingPoints,landOn,launchVelocity,newCourse,stepFlight,targetsAhead,tiltFor,trajectory}from"./BlukRules.js";import{buildScene,fall,frame,hideArc,land,placeBlock,relax,removeScene,resetBlock,showArc,squash,stretch,syncPillars}from"./BlukScene.js";const WORLD_CAPACITY=600,CAMERA_TIME=.3;export function createGame(e){const o=new World(600),n={world:o,camera:{eye:[0,0,300],target:[0,0,0],fov:1,ortho:1},theme:e,config:null,scene:null,phase:"ready",course:null,block:"resting",flight:{x:0,y:0,vx:0,vy:0},targets:[],tilt:0,dirty:!1,get score(){return o.scoreboard.score},combo:0,colorIndex:START_COLOR,won:!1,get timeLeft(){return o.scoreboard.shownSeconds},camX:0,camMove:null,aiming:!1,pending:0,clock:0,onPhase:e=>{},onScore:e=>{},onCombo:e=>{},onTime:e=>{},hudFeedback:{},onEvent:e=>{}};return o.scoreboard.reset(0,GAME_DURATION),o.scoreboard.handlers={onSecond:e=>n.onTime(e),onTimeUp:()=>"playing"===n.phase&&"dead"!==n.block&&end(n,!0)},n}export function setLayout(e,o){const n=!e.config||e.config.width!==o.width||e.config.height!==o.height;e.config=o,!e.course||n&&!e.dirty&&"ready"===e.phase?deal(e):rebuild(e)}export function setTheme(e,o){e.theme=o,e.config&&e.scene&&rebuild(e)}function rebuild(e){const{config:o,course:n}=e;o&&n&&(e.scene&&removeScene(e.world,e.scene),e.scene=buildScene(e.world,o,e.theme,n.pillars,[e.flight.x,e.flight.y],e.colorIndex),placeBlock(e.world,e.scene,e.flight.x,e.flight.y,e.tilt),frame(e.world,o,e.scene,e.camera,e.camX))}function deal(e){const o=e.config;if(!o)return;e.course=newCourse(o);const n=e.course.pillars[0];e.flight={x:n.worldX,y:n.topY-o.blockSize/2,vx:0,vy:0},e.block="resting",e.tilt=0,e.dirty=!1,e.colorIndex=START_COLOR,e.camX=0,e.camMove=null,e.pending=0,e.world.cancelTimers(),rebuild(e),e.scene&&resetBlock(e.world,o,e.scene,e.colorIndex)}export function start(e){"playing"!==e.phase&&e.config&&((e.dirty||"over"===e.phase)&&deal(e),e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(GAME_DURATION),e.combo=0,e.won=!1,e.colorIndex=START_COLOR,e.phase="playing",e.onScore(0),e.onCombo(0),e.onTime(GAME_DURATION),e.hudFeedback.message=void 0,e.onPhase("playing"))}export function reset(e){e.world.scoreboard.reset(0,GAME_DURATION),e.combo=0,e.won=!1,e.phase="ready",deal(e),e.onScore(0),e.onCombo(0),e.onTime(GAME_DURATION),e.hudFeedback.message=void 0,e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,o){if(e.world.isDisposed)return;if(e.clock+=Math.min(o,.25),"playing"===e.phase&&"flying"===e.block){let n=Math.min(e.pending+1e3*o,MAX_PENDING_MS);for(;"flying"===e.block&&n>=STEP_MS-STEP_TOLERANCE_MS;)n-=STEP_MS,step(e);e.pending=n,"flying"===e.block&&e.scene&&placeBlock(e.world,e.scene,e.flight.x,e.flight.y,e.tilt)}const n=e.camMove;if(n){const o=Math.min(1,(e.clock-n.at)/.3);e.camX=n.from+(n.to-n.from)*(1-(1-o)**3),o>=1&&(e.camMove=null)}e.config&&e.scene&&frame(e.world,e.config,e.scene,e.camera,e.camX),e.world.update(o)}function end(e,o){e.world.scoreboard.stop(),e.won=o,e.phase="over",e.config&&e.scene&&hideArc(e.world,e.config,e.scene),e.onPhase("over")}function step(e){const o=e.config,n=e.course,{landed:r,fell:t}=stepFlight(o,e.flight,e.targets);if(e.tilt=tiltFor(e.flight.vy),r>=0)return arrive(e,n.current+1+r);t&&(e.block="dead",e.world.scoreboard.stop(),e.scene&&fall(e.world,e.scene,e.tilt,e.colorIndex),e.onEvent("fall"),e.world.after(FALL_DELAY,()=>{"playing"===e.phase&&(e.onEvent("gameOver"),end(e,!1))}))}function arrive(e,o){const n=e.config,r=e.course,t=r.pillars[o],l=e.flight.x,{perfect:i,points:a,combo:s}=landingPoints(n,t,l,e.combo),d=e.tilt;e.block="resting",e.flight.vx=0,e.flight.vy=0,e.tilt=0,e.world.scoreboard.add(a),e.combo=s,e.colorIndex=t.colorIndex,landOn(n,r,o);const{scene:f}=e;f&&(placeBlock(e.world,f,l,e.flight.y,d),land(e.world,n,f,l,t.topY,i,e.colorIndex),syncPillars(e.world,n,f,r.pillars)),e.camMove={from:e.camX,to:t.worldX-n.anchorX,at:e.clock},e.onScore(e.score),e.onCombo(e.combo),i?(e.hudFeedback.message="PERFECT!",e.onEvent("perfect")):e.onEvent("land")}const PAN_SLOP=10,aimable=e=>"playing"===e.phase&&"resting"===e.block&&!!e.config&&!!e.course;export function drag(e,{phase:o,dx:n,dy:r,cancelled:t}){const{config:l,scene:i}=e;if(!l||!i)return;if("start"===o)return void(e.aiming=!1);if(!e.aiming&&Math.hypot(n,r)>=10&&(e.aiming=!0),!e.aiming)return;if("end"===o&&(e.aiming=!1),!aimable(e))return void hideArc(e.world,l,i);const a=launchVelocity(l,n,r);if("move"===o)return a?(showArc(e.world,l,i,trajectory(l,a,e.flight.x,e.flight.y,targetsAhead(e.course))),void squash(e.world,l,i,-.16*Math.hypot(a.vx,a.vy)/l.maxLaunchSpeed)):(hideArc(e.world,l,i),void squash(e.world,l,i,0));hideArc(e.world,l,i),a&&!t?launch(e,a.vx,a.vy):relax(e.world,l,i)}export function launch(e,o,n){const r=e.config;r&&aimable(e)&&(e.flight.vx=o,e.flight.vy=n,e.targets=targetsAhead(e.course),e.block="flying",e.dirty=!0,e.pending=0,e.scene&&stretch(e.world,r,e.scene),e.onEvent("jump"))}
@@ -0,0 +1 @@
1
+ "use strict";import{GRAVITY,LOOKAHEAD,MIN_LAUNCH_SPEED,PERFECT_BONUS,POINTS_PER_LAND,POWER_MULTIPLIER,TRAJECTORY_DOTS,TRAJECTORY_STEP}from"./BlukConstants.js";export function launchVelocity(t,n,r){let a=Math.max(n*POWER_MULTIPLIER,0),e=Math.min(r*POWER_MULTIPLIER,-3),i=Math.sqrt(a*a+e*e);if(i<1)return null;if(i<MIN_LAUNCH_SPEED){const t=MIN_LAUNCH_SPEED/i;a*=t,e*=t,i=MIN_LAUNCH_SPEED}if(i>t.maxLaunchSpeed){const n=t.maxLaunchSpeed/i;a*=n,e*=n}return{vx:a,vy:e}}export function landingOn(t,n,r,a,e){const i=t.blockSize/2;for(let t=0;t<n.length;t++){const l=n[t];if(a+i<=l.topY&&e+i>=l.topY&&Math.abs(r-l.worldX)<=l.width/2+.4*i)return t}return-1}export function stepFlight(t,n,r){const a=n.y;if(n.vy+=GRAVITY,n.x+=n.vx,n.y+=n.vy,n.vy>0){const e=landingOn(t,r,n.x,a,n.y);if(e>=0)return n.y=r[e].topY-t.blockSize/2,{landed:e,fell:!1}}return{landed:-1,fell:n.y>t.fallThresholdY}}export const tiltFor=t=>Math.max(-.35,Math.min(.35,.025*t));export function trajectory(t,n,r,a,e){const i=[];let l=r,o=a,p=n.vy;for(let r=0;r<TRAJECTORY_DOTS*TRAJECTORY_STEP;r++){const a=o;if(p+=GRAVITY,l+=n.vx,o+=p,p>0){const n=landingOn(t,e,l,a,o);if(n>=0){i.push(l,e[n].topY-t.blockSize/2);break}}if(r%TRAJECTORY_STEP===0&&i.push(l,o),o>t.fallThresholdY)break}return i}function makePillar(t,n,r,a){const e=t.pillarTopMin+Math.random()*(t.pillarTopMax-t.pillarTopMin),i={id:"pillar-"+n.seq,worldX:r,topY:Math.round(e),width:Math.round(a),colorIndex:n.seq%8};return n.seq++,i}function appendPillar(t,n){const r=n.pillars[n.pillars.length-1],a=Math.min(n.landed*t.widthShrinkPerScore,t.widthShrinkMax),e=Math.max(t.pillarMinWidth,t.pillarMaxWidth-a),i=t.pillarMinWidth+Math.random()*(e-t.pillarMinWidth),l=Math.min(n.landed*t.gapGrowthPerScore,t.gapGrowthMax),o=t.gapMin+l+Math.random()*(t.gapMax-t.gapMin),p=t.width-t.viewportMargin-t.pillarDepth-i-(t.anchorX+r.width/2),h=Math.max(t.gapMin,Math.min(o,p));n.pillars.push(makePillar(t,n,r.worldX+r.width/2+h+i/2,i))}function ensureAhead(t,n){for(;n.pillars.length-1-n.current<LOOKAHEAD;)appendPillar(t,n)}export function newCourse(t){const n={pillars:[],current:0,landed:0,seq:0};return n.pillars.push(makePillar(t,n,t.anchorX,t.pillarMaxWidth)),ensureAhead(t,n),n}export const targetsAhead=t=>t.pillars.slice(t.current+1);export function landOn(t,n,r){n.current=r,n.landed++,ensureAhead(t,n);const a=Math.max(0,n.current-1);a>0&&(n.pillars.splice(0,a),n.current-=a)}export function landingPoints(t,n,r,a){const e=Math.abs(r-n.worldX)<=t.sweetSpotWidth/2;if(!e)return{perfect:e,points:POINTS_PER_LAND,combo:0};const i=a+1;return{perfect:e,points:POINTS_PER_LAND+PERFECT_BONUS+5*(i-1),combo:i}}