@nayan-ui/games 1.18.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 -38
  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 _0x2ace5b=_0xbf05;!function(){const e="8Gqu",o=_0xbf05,t=_0x2b87();for(;;)try{if(923501==parseInt(o(413,e))/1*(-parseInt(o(324,"D7uz"))/2)+parseInt(o(381,"^v2i"))/3+parseInt(o(365,"sm6p"))/4+parseInt(o(341,"coVP"))/5*(parseInt(o(395,"T35h"))/6)+parseInt(o(357,"ru@T"))/7+-parseInt(o(398,"pOBS"))/8+-parseInt(o(415,e))/9)break;t.push(t.shift())}catch(e){t.push(t.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x4214cc,{useCallback,useEffect,useMemo,useRef}from"react";import{View,StyleSheet}from"react-native";import{useFruitMergerStore,useIsPlaying,useIsGameOver,useIsGameWon,setPlayingCached,stopPhysicsLoop}from"./FruitMergerStore.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{GameBackgroundPattern as _0x3074ee}from"../../helpers/index.js";import{GameControlButton,GameOverModal,GameSettingsModal}from"../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{formatTime}from"../../services/UtilsService.js";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{FRUIT_MERGER_GAME_TIME}from"./FruitMergerConstants.js";import{jsx as _0x47a34c,jsxs as _0x2bdfc3}from"react/jsx-runtime";export const FruitMerger=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:r,onShare:W,onShareScreenshot:s,onShowLeaderboard:a,bannerAd:n})=>{const i="coVP",d="akIz",S=_0xbf05,m={ZNozm:function(e,o){return e(o)},OuzdH:function(e,o){return e(o)},lcQuh:S(342,"1f@w"),Tfcpm:function(e,o){return e-o},krUzt:S(328,"1f@w"),fZBEH:function(e,o,t){return e(o,t)},uXUcT:function(e,o){return e===o},QmyXo:S(356,"(#6y"),OtGjh:function(e){return e()},peeJL:function(e,o,t){return e(o,t)},Efaew:function(e,o,t){return e(o,t)}},u=useIsPlaying(),f=useIsGameOver(),x=m.OtGjh(useIsGameWon),k=useMemo(()=>f?useFruitMergerStore[S(322,"fjpq")]()[S(338,"]3C@")]:0,[f]),C=useRef(!1),l=m[S(354,"VHx0")](useRef,t);l[S(411,"7CZl")]=t;const p=m.peeJL(useCallback,e=>{const o=S;if(l[o(325,i)]&&!C[o(404,d)]){const t=useFruitMergerStore[o(410,"dEvV")](),r=FRUIT_MERGER_GAME_TIME-t[o(397,d)],W=120,s=e===o(416,"E@SY")?calculateTimeBasedScore(r,W,100):0;l[o(321,"sm6p")]({status:e,score:s[o(366,i)]()}),C.current=!0}},[]);useEffect(()=>{const e=S;return useFruitMergerStore[e(364,"^v2i")](o=>o[e(412,"iZ(f")],o=>{m[e(370,"D7uz")](setPlayingCached,o)})},[]),useEffect(()=>{const e=S,o={zVoke:function(e,o){return m[_0xbf05(418,"qjoh")](e,o)},LLxmG:m[e(351,"B@y]")]};return useFruitMergerStore[e(332,"B@y]")]()[e(387,"T35h")](),()=>{const t=e;useFruitMergerStore[t(405,"jtRo")]().isPlaying&&!C.current&&o[t(389,"coVP")](p,o[t(372,"1f@w")]),useFruitMergerStore[t(400,"qBxT")]()[t(367,"9C8C")](),stopPhysicsLoop()}},[]);const _=useRef(!1);useEffect(()=>{const o=S;if(f&&!_.current)if(x)playSound(GAME_SOUNDS.WELL_DONE,e[o(329,"&azj")]),playHaptic(HapticType[o(396,"BdWz")],e[o(360,"akIz")]),m.OuzdH(p,o(378,"hb&x"));else if(o(320,"0QBV")===o(394,"hb&x")){const e=_0x525178.getState(),t=m[o(375,"90%d")](_0x49333c,e.time),r=120,W=_0xea946===m[o(382,"#vvg")]?_0x57cdd1(t,r,100):0;_0x293b5c[o(373,"qBxT")]({status:_0xca3c54,score:W[o(337,"E@SY")]()}),_0x59b53b[o(399,"ysB1")]=!0}else m.fZBEH(playSound,GAME_SOUNDS.FRUIT_MERGER[o(349,"&azj")],e[o(361,"ysB1")]),m[o(369,"CxzI")](playHaptic,HapticType[o(326,"9C8C")],e.enableHaptics),m.ZNozm(p,"lose");_[o(417,"VHx0")]=f,!f&&(C.current=!1)},[f,x,e[S(318,"E^8x")],e.enableHaptics,p]);const b=useRef(e);b[S(380,"JWH#")]=e;const G=useCallback(()=>{const e=S;C.current=!1,setPlayingCached(!0),useFruitMergerStore[e(330,"JWH#")]()[e(419,"ti2%")](),playSound(GAME_SOUNDS[e(347,"^v2i")][e(384,"^v2i")],b[e(388,"ti2%")][e(401,"H4!5")]),playHaptic(HapticType[e(359,"ti2%")],b[e(379,"*3bI")][e(393,"H4!5")])},[]),R=useCallback(()=>{const e=S;p(e(402,"iZ(f")),useFruitMergerStore[e(345,"1f@w")]().stopGame()},[p]),h=useCallback(()=>{const e=S;if({}[e(344,"QFR6")]=e(421,"VHx0"),m[e(386,"^v2i")](e(390,"D7uz"),m[e(406,"90%d")])){if(_0x3584b4[e(388,"ti2%")]&&!_0x1264ac[e(409,"9NmE")]){const o=_0x8fc441[e(334,"sm6p")](),t=_0x1e1235-o[e(392,"sm6p")],r=120,W=_0x1da6b4===EJbUAS[e(376,"M!pU")]?_0x1cd7d5(t,r,100):0;_0xd6d546[e(350,"tOJm")]({status:_0x173c57,score:W[e(363,"B@y]")]()}),_0x13699f[e(355,"ITN)")]=!0}}else r?.(),C.current=!1,useFruitMergerStore[e(345,"1f@w")]()[e(323,"8Gqu")](),useFruitMergerStore[e(368,"8Gqu")]()[e(423,"0QBV")]()},[r]),O=e?.[S(377,"qjoh")]??0,g=useMemo(()=>({isVisible:f,score:k,onPlayAgain:h,buttonText:"Merge Again!",scoreLabel:S(407,"8Gqu"),scoreFormatter:formatTime,title:x?S(353,"wRw!"):S(362,"1f@w"),message:x?S(391,"wRw!"):k<=0?S(348,"QFR6"):S(319,"9tyM")}),[f,x,k,h]),E=m[S(339,"fjpq")](useMemo,()=>({gameId:GAME_IDS[S(414,"jw8x")],settings:e,onSettingsChange:o}),[e,o]),M={...useMemo(()=>({isPlaying:u,gameOver:f,onStartGame:G,onStopGame:R,onShare:W,onShowLeaderboard:a,startButtonSubtext:S(358,"E@SY")}),[u,f,G,R,W,a])},y={...g};y.onShare=s,y[S(383,"H4!5")]=n;const I={...E};return _0x47a34c(View,{style:styles[S(346,"tOJm")],children:_0x2bdfc3(_0x3074ee,{offset:O,children:[m[S(336,"wRw!")](_0x47a34c,ScoreBoard,{offset:O}),_0x47a34c(GameArea,{settings:e,offset:O}),_0x47a34c(GameControlButton,M),_0x47a34c(GameOverModal,y),m[S(385,"ITN)")](_0x47a34c,GameSettingsModal,I)]})})};function _0xbf05(e,o){e-=318;const t=_0x2b87();let r=t[e];if(void 0===_0xbf05.EYaXVY){const e=function(e,o){let t,r,W=[],s=0,a="";for(e=function(e){let o="",t="";for(let t,r,W=0,s=0;r=e.charAt(s++);~r&&(t=W%4?64*t+r:r,W++%4)?o+=String.fromCharCode(255&t>>(-2*W&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let e=0,r=o.length;e<r;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),r=0;r<256;r++)W[r]=r;for(r=0;r<256;r++)s=(s+W[r]+o.charCodeAt(r%o.length))%256,t=W[r],W[r]=W[s],W[s]=t;r=0,s=0;for(let o=0;o<e.length;o++)r=(r+1)%256,s=(s+W[r])%256,t=W[r],W[r]=W[s],W[s]=t,a+=String.fromCharCode(e.charCodeAt(o)^W[(W[r]+W[s])%256]);return a};_0xbf05.HhETaI=e,_0xbf05.jENSCE={},_0xbf05.EYaXVY=!0}const W=t[0];_0xbf05.qAgyGJ!==W&&(_0xbf05.jENSCE={},_0xbf05.qAgyGJ=W);const s=_0xbf05.jENSCE[e];return void 0===s?(void 0===_0xbf05.TQlSQx&&(_0xbf05.TQlSQx=!0),r=_0xbf05.HhETaI(r,o),_0xbf05.jENSCE[e]=r):r=s,r}function _0x2b87(){const e=["W7pcOgtcRCk/","WO8eq0ngWRDljCoq","W4TSW7m","krSCgCoLW7HZW5bmESk1nW","W4hdMCkWWRTfW5VdGSol","WQPaASkBt8oywhH0vmoN","gmkAoCoeWRDOW7NdKa","WQBcHmkBW4BcJCoL","x1hdSSk2dwL5W54","WPFcJSo1W50fWOlcHmkFgSocWR56c8kM","W7RdO3pdTSoR","WQj2W6RdNHJcI3RdQq","W7VdGrdcIq","W7X0WQJcGMu","W4ddMmofaSozlCkcWQNcKG","WO7dSSoyWQnrhmk7W4ZdPG","W59KW7pcH8oHW6y","De1lsCk5W4PxW41EECks","W4yheveR","W5TGW6NcT8oWW6SwzW","tqSnma","WOpcPmkRW67cRCoFWQWRvsC1W5W","W5aKpca9WQPTWQFdSxnDW5JdJdKkgmkCW7mhWOa","cZqWpSowW5j2W7PR","xbeqnSoDnmkB","e8kChmoIWQS","WOSxyNRcISkCt0buDmox","W6BdIKFcS8olySkrvq","zetdOSoxW5G","WOFdO8kobufkWR4","WP7cMXlcKNS","cZyBWQPvmSowWRqOW7uCsvRcVq","WPT8W4VdJq/dGNldVmk9Ab0FWOe","uWCck8okwG","jSoamCo2tNNcNMCBCrVcOZG","WQL7e8o2W4/cN8kiWPhdS1tcUCoP","W7TeW5dcOCkKW4u0r3e","c8kqhSoJWRfGW6pdKG","WRBcG8kCW5tcMSoYWOGmyG","daBcSCossta9W4mtW6uZW5fW","W4JcPCk+WR5IeSkdW70","W4JcKuRcI8kHtCkbBW","hCkYWOVdUCkJyIXA","WQHZw8kUAW","cSkyeCk1gq","lSoEWQBcQehdJSkBWPSFqmkNW6OQ","W7bjW6xcICod","W60ObmoMFsbH","W6CSWO/cM1NdLstcUSklAH8kW4BcUW","smkaW7xdRbS","W7jWlNTJ","WOFdV8oxiguo","W6tcPf4","W5DclKZcUers","W4xdICk2WPPuW5tdGG","W7FdJSooWPpdJSk0W5m4yIiEW7ZcOW","FCkaWQTKWRW","WQBcKXtcUNybW59d","WPBcOSk/W7xcRq","WOldJmk+mMW","WRdcRSkRW4tcRq","WOlcPmodqCk5W6JdN2KGW6VcNmoJbmom","FtC0emo6Erm","W4BcNmkcWQf1","amk5gmkveq","W6BdQMFcS8oUsmk+f8okWPnJW7GIzSoeW67cHSkAw8omDsxcKCkI","tf3dQ8ka","WQhcNbVcTN8wW5zgF8opimkJW5O","W4VcP3RdTmo1","W5pdSSkCb8oGW57dHhi9W6pcMa","hr5XWRv1w28","n8ohpCoX","j8kcB0FdMmorW5FcQSo9WOxcOmkVWQD8","WQ9GamoMW4BcLmkV","W6K4aSohBc9HW4q","WQhcNbVcTN8wW41iESovlCkZ","sCk1W4DjWPNdGW","WONcGdNcPq","imoBiSoMr3lcOG","fuZdQCo+rSk2WPhcRq","tCklW6/dHbK","lSk+WPldJ8o3tZ1zWPa","sCkJmCkZ","mxfKdCocWOiU","WQOay0dcISkWxLC","WPRcLq4rW5CKzq","q8kNW7LgWP3dLSkvkmod","tCoUW4JdO8k/rG1xWOG","ACkDaCkcWRiaqSkIW49xd10","s8oIW4NcM8oKngGlWQD2Bw4ejW","WQfWW5C","xx/dV8oFW5bswW","WQFdRmoln0G","BtyNemoRuaBdJZe","W6W8fCo/FZX6W5tdR09oW68ie8kn","swpdOW","W5RdVSkydCoPWRdcGJiIW6RcICo0aCoD","W6KhBSoErCoblmkcBSoSWRS0p8kZ","W4SDW5nhtepdPx40sY7dQW","q8oYrCopWOxcJ8opWO/cRKddVx3dN8k1W7WKkSks","W4uCCSo4zq","w0hdTmkxhgz5","W71lWP7cLfNdLCkuDa","cmkYWOZdJ8kJrdLsWOe","y8oIsmk3iv0kWR8+","W5/cV8kFWRH1fCkz"];return(_0x2b87=function(){return e})()}const _0x40b46d={};_0x40b46d[_0x2ace5b(408,"jw8x")]=1,_0x40b46d[_0x2ace5b(420,"qBxT")]=BACKGROUND_COLOR;const _0x527d49={};_0x527d49[_0x2ace5b(403,"(#6y")]=_0x40b46d;const styles=StyleSheet[_0x2ace5b(333,"^v2i")](_0x527d49);FruitMerger[_0x2ace5b(331,"CxzI")]=_0x2ace5b(352,"dEvV");
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_TIME,getLayout,LIGHT}from"./FruitMergerConstants.js";import{createGame,dispose,drag,finalScore,reset,setLayout,setTheme,start,tick}from"./FruitMergerGame.js";import{jsx as _0x27bccb}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.FRUIT_MERGER,FEEDBACK={drop:{sound:SOUNDS.DROP,haptic:HapticType.LIGHT},merge:{sound:SOUNDS.MERGE,haptic:HapticType.MEDIUM},win:{sound:SOUNDS.COMPLETE,haptic:HapticType.SUCCESS}},MESSAGES={win:"You reached the Pumpkin!",time:"You ran out of time!",overflow:"Fruits overflowed!"};export const FruitMerger=engineGame(GAME_IDS.FRUIT_MERGER,e=>{const[t,r]=useLiveState(GAME_TIME),[o,s]=useLiveState(0),{game:i,theme:a,status:n,screen:m,gameOver:S}=useEngineGame(e,{gameId:GAME_IDS.FRUIT_MERGER,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,o)=>setLayout(e,getLayout(t,r,o)),drag:drag,outcome:e=>"win"===e.outcome?"win":"lose",reportScore:e=>finalScore(e),sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),onOver:(e,t)=>{"win"!==t&&e(SOUNDS.GAME_OVER,HapticType.HEAVY)},wire:(e,t)=>{e.onTime=r,e.onScore=s,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0x27bccb(EngineGameScreen,{...m,light:LIGHT,columns:[scoreColumn(o),timerColumn(t,a,0)],subtext:"Merge fruits!",gameOver:S({title:"win"===n?"YOU WON!":"GAME OVER",message:MESSAGES[i.outcome??"overflow"],scoreLabel:"Score",score:finalScore(i),buttonText:"Merge Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x4b119c=_0xc283;!function(){const o=_0xc283,W=_0x20d1();for(;;)try{if(546471==-parseInt(o(523,"Knc["))/1*(-parseInt(o(493,"TOjP"))/2)+parseInt(o(509,"jMi&"))/3+-parseInt(o(513,"Z!kb"))/4*(-parseInt(o(518,"Knc["))/5)+-parseInt(o(520,"dId1"))/6+parseInt(o(495,")(Mu"))/7+-parseInt(o(487,"G9Vp"))/8+-parseInt(o(501,"HCoT"))/9*(parseInt(o(510,"P5Zp"))/10))break;W.push(W.shift())}catch(o){W.push(W.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions}from"../../services/UtilsService.js";const{width:GAME_WIDTH}=getGameDimensions(),SCALE=GAME_WIDTH/360,_0x2147d9={};_0x2147d9[_0x4b119c(503,"G9Vp")]=BACKGROUND_COLOR,_0x2147d9.PRIMARY=PRIMARY_COLOR,_0x2147d9.GAME_AREA_BACKGROUND="rgba(255, 255, 255, 0.12)",_0x2147d9.GAME_AREA_BORDER=_0x4b119c(531,"kJJg"),_0x2147d9[_0x4b119c(529,"Z!kb")]=_0x4b119c(511,"zkwQ"),_0x2147d9[_0x4b119c(502,"TOjP")]="rgba(255, 255, 255, 0.35)",_0x2147d9[_0x4b119c(519,"08&f")]=_0x4b119c(516,"g[Vy");export const FRUIT_MERGER_COLORS=_0x2147d9;export const FRUIT_TYPES=[{id:0,name:_0x4b119c(492,")(Mu"),emoji:"\ud83c\udf52",size:Math.round(40*SCALE),color:_0x4b119c(496,"trCg"),score:10},{id:1,name:"strawberry",emoji:"\ud83c\udf53",size:Math[_0x4b119c(524,"TOjP")](52*SCALE),color:_0x4b119c(522,"MrSz"),score:20},{id:2,name:_0x4b119c(491,"TOjP"),emoji:"\ud83c\udf47",size:Math[_0x4b119c(494,"yldX")](64*SCALE),color:"#E1BEE7",score:40},{id:3,name:_0x4b119c(530,"8eWu"),emoji:"\ud83e\udd6d",size:Math.round(76*SCALE),color:_0x4b119c(517,"08&f"),score:80},{id:4,name:_0x4b119c(500,"6yXv"),emoji:"\ud83c\udf4a",size:Math.round(88*SCALE),color:_0x4b119c(498,"x7H&"),score:160},{id:5,name:"apple",emoji:"\ud83c\udf4e",size:Math[_0x4b119c(505,"MrSz")](100*SCALE),color:_0x4b119c(488,"Z!kb"),score:320},{id:6,name:"peach",emoji:"\ud83c\udf51",size:Math[_0x4b119c(490,"zkwQ")](112*SCALE),color:_0x4b119c(526,"DPXR"),score:640},{id:7,name:_0x4b119c(508,"TOjP"),emoji:"\ud83e\udd6d",size:Math.round(124*SCALE),color:_0x4b119c(515,"Xd83"),score:1280},{id:8,name:"watermelon",emoji:"\ud83c\udf48",size:Math[_0x4b119c(527,"8eWu")](136*SCALE),color:_0x4b119c(486,"6yXv"),score:2560},{id:9,name:_0x4b119c(506,"imdD"),emoji:"\ud83c\udf83",size:Math[_0x4b119c(497,"KOFD")](148*SCALE),color:_0x4b119c(489,"D8#P"),score:5120}];export const FRUIT_MERGER_GAME_TIME=1200;function _0x20d1(){const o=["W6NcNd1cW4xcI8oDaSkfbW/cIq","iCo9pu3cGvy4AmoYWQ7dGSkmWPG","WQBdNSowzwb9zq","g2iiW4zIC1FcG8kJWQNdNYFcHqNcNwOrW6ms","pCkSq3j+vmkU","W4XQaWHyW69YFa","wCkMrgCusmojW7HjBCoPWRW","W6W2WQtdKbtdTCkZBq/cJ8kUW5bO","ACo5l8oDsCkDE3/cHf8+BW0","kmkbWRpcK8oFxNu","W4DQE3O5W5vat8kHi8oP","WOK0W6yLWRu","cutdNMhcIG","eCoSsCoYkmkSCG","b8oUW77dOSor","wJnyWPD+D0pdOSodW6pcUv/dVG","WPZdOe0IWQpdPSoImSkHbbVcICoqWP5E","gmoGW6xdQ8oA","o0GxW4igBSkfW53cVmkiWQ4pBSoUWOtcSLZdUu3cGwyeCCkW","bSoMx8owW5ftca","h8kkuSobWO0qvSowWOhcMCoiyqG","W7JdQKOYWRtdVCky","W5FcHZXKW7xdQ8k5","wxOuf8k7","WPWPW7i7WRrS","CmkHAqJdHW9UxG","W4HRW7apWQL4WOBcSq","fSk0ge3cVG","imo+pKNcHfm4vmoDWO7dU8kYWPe","WRuaWPFdUmkUWQxcTa","WR10jmo8ja","wbX0o8olW4uL","WRZcQmoEzan8dCkp","sSoxbSo9WOb1","W4X2CdztzYL8bG","WRWxW5iyWOjaWQJcL8k1WP5FW7pdIhtcICkwW4tdMKtcOG","BSo6kCk7W7HWlCo0WOBcTG","hmoEW5JcTMi","ECkOWOdcVSo/","WOO3W402WPpdRmoI","wZvCWPf4oHpdP8okW6ZcVa","WOS6W6mQWQH+","kIVdGMfgW47dJSoxsNzbWPiS","W4m6W6JcHxb3ACkwCXKuoq","wxidgmo3WO4sWO3dLdhdJSkzW6/cNSo1W4ZcT8oVuSkupWOHW4/dRq","W4H7WPv/W4VcTCowdwxcOZS5"];return(_0x20d1=function(){return o})()}function _0xc283(o,W){o-=486;const e=_0x20d1();let t=e[o];if(void 0===_0xc283.oNqXQP){const o=function(o,W){let e,t,r=[],_=0,d="";for(o=function(o){let W="",e="";for(let e,t,r=0,_=0;t=o.charAt(_++);~t&&(e=r%4?64*e+t:t,r++%4)?W+=String.fromCharCode(255&e>>(-2*r&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let o=0,t=W.length;o<t;o++)e+="%"+("00"+W.charCodeAt(o).toString(16)).slice(-2);return decodeURIComponent(e)}(o),t=0;t<256;t++)r[t]=t;for(t=0;t<256;t++)_=(_+r[t]+W.charCodeAt(t%W.length))%256,e=r[t],r[t]=r[_],r[_]=e;t=0,_=0;for(let W=0;W<o.length;W++)t=(t+1)%256,_=(_+r[t])%256,e=r[t],r[t]=r[_],r[_]=e,d+=String.fromCharCode(o.charCodeAt(W)^r[(r[t]+r[_])%256]);return d};_0xc283.rWBQPq=o,_0xc283.RsNhRr={},_0xc283.oNqXQP=!0}const r=e[0];_0xc283.OzSQtq!==r&&(_0xc283.RsNhRr={},_0xc283.OzSQtq=r);const _=_0xc283.RsNhRr[o];return void 0===_?(void 0===_0xc283.IDrPAe&&(_0xc283.IDrPAe=!0),t=_0xc283.rWBQPq(t,W),_0xc283.RsNhRr[o]=t):t=_,t}export const FRUIT_MERGER_GAME_CONFIG={CONTAINER_WIDTH:GAME_WIDTH,CONTAINER_HEIGHT:Math[_0x4b119c(504,"u@dT")](480*SCALE),PLAY_AREA_WIDTH:GAME_WIDTH-8,PLAY_AREA_HEIGHT:Math.round(480*SCALE)-4,GRAVITY:.5*SCALE,BOUNCE:.3,FRICTION:.99,SPAWN_Y:-50,MERGE_DISTANCE:Math[_0x4b119c(525,"opLX")](10*SCALE),FALL_SPEED:2.5*SCALE,MAX_FRUIT_TYPE:4,SPAWN_DELAY:1500,COLLISION_SCALE:.8};
1
+ "use strict";import{getGameDimensions}from"../../services/UtilsService.js";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight}from"../shared/EngineUtils.js";const{width:GAME_WIDTH}=getGameDimensions(),SCALE=GAME_WIDTH/360;export const FRUIT_TYPES=[{id:0,name:"strawberry",size:Math.round(40*SCALE),color:"#FFCDD2",score:10},{id:1,name:"kiwi",size:Math.round(52*SCALE),color:"#DCEDC8",score:20},{id:2,name:"lemon",size:Math.round(64*SCALE),color:"#FFF9C4",score:40},{id:3,name:"peach",size:Math.round(76*SCALE),color:"#FFE4E1",score:80},{id:4,name:"orange",size:Math.round(88*SCALE),color:"#FFE0B2",score:160},{id:5,name:"apple",size:Math.round(100*SCALE),color:"#FFCDD2",score:320},{id:6,name:"pomegranate",size:Math.round(112*SCALE),color:"#F8BBD0",score:640},{id:7,name:"papaya",size:Math.round(124*SCALE),color:"#FFE0B2",score:1280},{id:8,name:"watermelon",size:Math.round(136*SCALE),color:"#C8E6C9",score:2560},{id:9,name:"pumpkin",size:Math.round(148*SCALE),color:"#FFCC80",score:5120}];export const LAST_TYPE=FRUIT_TYPES.length-1;export const GAME_TIME=900;export const EXPECTED_TIME=120;export const BASE_SCORE=100;export const MAX_DROP_TYPE=4;export const CONTAINER_WIDTH=GAME_WIDTH;export const CONTAINER_HEIGHT=Math.round(480*SCALE);export const PLAY_WIDTH=GAME_WIDTH-8;export const PLAY_HEIGHT=CONTAINER_HEIGHT-4;export const GRAVITY=.5*SCALE;export const BOUNCE=.3;export const FRICTION=.99;export const MERGE_DISTANCE=Math.round(10*SCALE);export const COLLISION_SCALE=.96;export const SOLVER_PASSES=24;export const OVERFLOW_Y=.05*PLAY_HEIGHT;export const OVERFLOW_STEPS=60;export const DANGER_START_Y=.28*PLAY_HEIGHT;export const DANGER_SETTLE_MS=1e3;export const SPAWN_DELAY_MS=300;export const STEP_MS=1e3/60;export const STEP_TOLERANCE_MS=2;export const MAX_PENDING_MS=50;export const TILT=0;export const LIGHT=frontLight([-.4,.55,1],.5);export const JAR_DEPTH=FRUIT_TYPES[9].size+12;export const WALL=4;export const CORNER=Math.round(44*SCALE);export const COLORS={DANGER_SAFE:"rgba(255, 255, 255, 0.28)",DANGER_HOT:"rgba(255, 77, 77, 0.95)"};const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110;export function getLayout(o,t,e){const r=getScoreBoardTop(e)+82,n=t-r-110,E=Math.min(1,o/CONTAINER_WIDTH);return n>=CONTAINER_HEIGHT*E?{width:o,height:t,k:E,centerX:o/2,centerY:e+(t-e)/2,tilt:0}:{width:o,height:t,k:Math.max(.4,n/CONTAINER_HEIGHT),centerX:o/2,centerY:r+n/2,tilt:0}}export const toWorld=(o,t,e=0)=>[o-PLAY_WIDTH/2,PLAY_HEIGHT/2-t,e];export const playX=(o,t)=>(t-o.centerX)/o.k+PLAY_WIDTH/2;
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{BASE_SCORE,EXPECTED_TIME,FRUIT_TYPES,GAME_TIME,MAX_DROP_TYPE,MAX_PENDING_MS,PLAY_WIDTH,SPAWN_DELAY_MS,STEP_MS,STEP_TOLERANCE_MS}from"./FruitMergerConstants.js";import{makeBody,radiusOf,step}from"./FruitMergerRules.js";import{aim,buildScene,celebrate,clearFruits,drawFruits,drawPreview,jolt,mergeFx,removeScene,setDanger,setSceneTheme}from"./FruitMergerScene.js";const WORLD_CAPACITY=500,randomType=()=>Math.floor(Math.random()*MAX_DROP_TYPE),newId=e=>"fruit-"+Math.round(e)+"-"+Math.random(),aimedFruit=(e,n)=>({id:newId(n),typeId:e,x:PLAY_WIDTH/2,y:radiusOf(e)+10});export function createGame(e){const n=new World(500),o={world:n,camera:{eye:[0,0,260],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",bodies:[],current:null,nextType:0,bestType:-1,get time(){return n.scoreboard.shownSeconds},get score(){return n.scoreboard.score},outcome:null,st:{overflowSteps:0,danger:0,merges:0,generation:0},pending:0,spawnAt:0,dragFrom:PLAY_WIDTH/2,clock:0,onPhase:e=>{},onTime:e=>{},onScore:e=>{},onNext:e=>{},onBest:e=>{},onEvent:e=>{}};return n.scoreboard.handlers={onSecond:e=>o.onTime(e),onTimeUp:()=>"playing"===o.phase&&end(o,"time")},initialize(o),o}const nowMs=e=>1e3*e.clock;export function setLayout(e,n){e.scene&&removeScene(e.world,e.scene),e.layout=n,aim(e.camera,n),e.scene=buildScene(e.world,n,e.theme),setDanger(e.world,e.scene,e.theme,e.st.danger),draw(e)}export function setTheme(e,n){e.theme=n,e.scene&&setSceneTheme(e.world,e.scene,n)}function draw(e){const n=e.scene;n&&(drawFruits(e.world,n,e.bodies),drawPreview(e.world,n,"over"===e.phase?null:e.current,e.nextType))}function initialize(e){e.st.generation+=1,e.bodies=[],e.pending=0,e.spawnAt=0,e.st.overflowSteps=0,e.bestType=-1;const n=randomType();e.current=aimedFruit(n,nowMs(e)),e.nextType=randomType(),e.world.scoreboard.reset(0,GAME_TIME),e.outcome=null,e.phase="ready",e.scene&&clearFruits(e.world,e.scene),draw(e),e.onTime(GAME_TIME),e.onScore(0),e.onNext(e.nextType),e.onBest(-1)}export function start(e){"ready"===e.phase&&(e.st.generation+=1,e.bodies=[],e.pending=0,e.spawnAt=0,e.st.overflowSteps=0,e.st.danger=0,e.bestType=-1,e.phase="playing",e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(GAME_TIME),e.onScore(0),e.scene&&(clearFruits(e.world,e.scene),setDanger(e.world,e.scene,e.theme,0)),e.current||spawnAimed(e),draw(e),e.onTime(GAME_TIME),e.onBest(-1),e.onPhase("playing"))}export function reset(e){initialize(e),e.onPhase("ready")}export function dispose(e){e.world.dispose()}function spawnAimed(e){e.current=aimedFruit(e.nextType,nowMs(e)),e.nextType=randomType(),e.onNext(e.nextType)}function end(e,n){e.world.scoreboard.stop(),e.outcome=n,e.phase="over","win"===n?celebrate(e.world):jolt(e.camera),draw(e),e.onPhase("over")}export const finalScore=e=>e.score+("win"===e.outcome?calculateTimeBasedScore(GAME_TIME-e.time,EXPECTED_TIME,BASE_SCORE):0);export function tick(e,n){e.world.isDisposed||(e.clock+=Math.min(n,.25),"playing"===e.phase&&physics(e,1e3*n),draw(e),e.world.update(n))}function physics(e,n){let o=Math.min(e.pending+n,MAX_PENDING_MS);if(o<STEP_MS-STEP_TOLERANCE_MS)return void(e.pending=o);const r=nowMs(e),t={outcome:null};let s=!1;for(;o>=STEP_MS-STEP_TOLERANCE_MS;){if(o-=STEP_MS,0===e.bodies.length)continue;const n=step(e.bodies,r,e.st,t);if(n&&(e.scene&&mergeFx(e.world,e.scene,n.a,n.b,n.made),e.onScore(e.world.scoreboard.add(FRUIT_TYPES[n.made.typeId].score)),n.made.typeId>e.bestType&&(e.bestType=n.made.typeId,e.onBest(e.bestType)),e.onEvent("merge")),t.outcome)break;e.spawnAt>0&&r>=e.spawnAt&&(e.spawnAt=0,s=!0)}if(e.pending=o,e.scene&&setDanger(e.world,e.scene,e.theme,e.st.danger),"win"===t.outcome)return e.onEvent("win"),void end(e,"win");"lose"!==t.outcome?s&&!e.current&&spawnAimed(e):end(e,"overflow")}export function drag(e,{phase:n,dx:o,cancelled:r}){const t=e.layout,s=e.current;if(!t||!s)return;if("start"===n)return void(e.dragFrom=s.x);const a=radiusOf(s.typeId);s.x=Math.max(a,Math.min(PLAY_WIDTH-a,e.dragFrom+o/t.k)),"end"!==n||r||drop(e)}export function drop(e){const n=e.current;if("playing"!==e.phase||!n)return;const o=nowMs(e);e.bodies.push(makeBody(n.id,n.typeId,n.x,n.y,0,o)),n.typeId>e.bestType&&(e.bestType=n.typeId,e.onBest(e.bestType)),e.current=null,e.spawnAt=o+SPAWN_DELAY_MS,e.onEvent("drop")}
@@ -0,0 +1 @@
1
+ "use strict";import{BOUNCE,COLLISION_SCALE,CORNER,DANGER_SETTLE_MS,DANGER_START_Y,FRICTION,FRUIT_TYPES,GRAVITY,LAST_TYPE,MERGE_DISTANCE,OVERFLOW_STEPS,OVERFLOW_Y,PLAY_HEIGHT,PLAY_WIDTH,SOLVER_PASSES}from"./FruitMergerConstants.js";function slide(t,e,n,o){const r=t.cr,s=.5;if(e<0&&t.x-r<=s&&(e=0),e>0&&t.x+r>=PLAY_WIDTH-s&&(e=0),n>0&&t.y+r>=PLAY_HEIGHT-s&&(n=0),r<CORNER&&t.y>=PLAY_HEIGHT-CORNER){const o=t.x<CORNER?CORNER:t.x>PLAY_WIDTH-CORNER?PLAY_WIDTH-CORNER:-1;if(o>=0){const E=t.x-o,y=t.y-(PLAY_HEIGHT-CORNER),R=Math.hypot(E,y)||1,x=(e*E+n*y)/R;R>=CORNER-r-s&&x>0&&(e-=E/R*x,n-=y/R*x)}}return o[0]=e,o[1]=n,o}function keepInside(t){const e=t.cr;if(t.x=Math.max(e,Math.min(PLAY_WIDTH-e,t.x)),t.y+e>PLAY_HEIGHT&&(t.y=PLAY_HEIGHT-e),e>=CORNER||t.y<PLAY_HEIGHT-CORNER)return;const n=t.x<CORNER?CORNER:t.x>PLAY_WIDTH-CORNER?PLAY_WIDTH-CORNER:-1;if(n<0)return;const o=PLAY_HEIGHT-CORNER,r=t.x-n,s=t.y-o,E=Math.hypot(r,s),y=CORNER-e;if(E<=y||0===E)return;const R=r/E,x=s/E;t.x=n+R*y,t.y=o+x*y;const a=t.vx*R+t.vy*x;a>0&&(t.vx-=R*a*(1+BOUNCE),t.vy-=x*a*(1+BOUNCE))}export const radiusOf=t=>(FRUIT_TYPES[t]?.size??40)/2;export function makeBody(t,e,n,o,r,s){const E=radiusOf(e);return{id:t,typeId:e,r:E,cr:E*COLLISION_SCALE,x:n,y:o,vx:0,vy:r,angle:0,px:n,born:s}}const MAX_SPEED=18;function move(t){const e=t.length;let n=0,o=1/0;for(let r=0;r<e;r++){const e=t[r];n=Math.max(n,Math.abs(e.vx),Math.abs(e.vy)),o=Math.min(o,e.cr)}const r=Math.max(1,Math.min(6,Math.ceil(n/(.4*o))));for(let n=0;n<r;n++){for(let n=0;n<e;n++){const e=t[n];e.x+=e.vx/r,e.y+=e.vy/r}solve(t,Math.ceil(SOLVER_PASSES/r)+2)}}const slideA=[0,0],slideB=[0,0];function solve(t,e){const n=t.length;for(let o=0;o<e;o++){for(let e=0;e<n;e++){const o=t[e];for(let r=e+1;r<n;r++){const e=t[r],n=e.x-o.x,s=e.y-o.y,E=n*n+s*s,y=o.cr+e.cr;if(E>=y*y||0===E)continue;const R=Math.sqrt(E),x=n/R,a=s/R,i=o.cr*o.cr,T=e.cr*e.cr,_=T/(i+T),l=i/(i+T),O=y-R,[v,I]=slide(o,-x*O*_,-a*O*_,slideA),[A,f]=slide(e,x*O*l,a*O*l,slideB),L=-x*O*_-v,S=-a*O*_-I,N=x*O*l-A,C=a*O*l-f;o.x+=v-N,o.y+=I-C,e.x+=A-L,e.y+=f-S}}for(let e=0;e<n;e++)keepInside(t[e])}}export function step(t,e,n,o){const r=t.length;for(let e=0;e<r;e++){const n=t[e];n.px=n.x,n.vy+=GRAVITY,n.vx*=FRICTION,n.vy*=FRICTION;const o=Math.hypot(n.vx,n.vy);o>18&&(n.vx*=18/o,n.vy*=18/o),n.x-n.cr<0&&(n.x=n.cr,n.vx*=-BOUNCE),n.x+n.cr>PLAY_WIDTH&&(n.x=PLAY_WIDTH-n.cr,n.vx*=-BOUNCE),n.y+n.cr>=PLAY_HEIGHT&&(n.y=PLAY_HEIGHT-n.cr,n.vy*=-BOUNCE,n.vx*=FRICTION,Math.abs(n.vy)<.5&&(n.vy=0)),n.y-n.r<0&&(n.y=n.r,n.vy=.5*Math.abs(n.vy)),keepInside(n)}const s=t.map(t=>t.x),E=t.map(t=>t.y);move(t);for(let e=0;e<r;e++){const n=t[e];n.vx=n.x-s[e],n.vy=n.y-E[e]}let y=1/0;for(let n=0;n<r;n++){const o=t[n];o.angle+=(o.x-o.px)/o.r,Math.abs(o.vy)<1.5&&e-o.born>DANGER_SETTLE_MS&&o.y-o.r<y&&(y=o.y-o.r)}const R=y===1/0?0:Math.max(0,Math.min(1,(DANGER_START_Y-y)/(DANGER_START_Y-OVERFLOW_Y)));(Math.abs(R-n.danger)>.02||0===R!=(0===n.danger))&&(n.danger=R);for(let o=0;o<r;o++){const s=t[o];if(!(s.y<0))for(let E=o+1;E<r;E++){const r=t[E];if(r.y<0||s.typeId!==r.typeId)continue;const y=r.x-s.x,R=r.y-s.y;if(Math.sqrt(y*y+R*R)>s.cr+r.cr+MERGE_DISTANCE)continue;const x=Math.sqrt(s.vx*s.vx+s.vy*s.vy),a=Math.sqrt(r.vx*r.vx+r.vy*r.vy);if(x>=5&&a>=5)continue;const i=s.typeId+1;if(i>LAST_TYPE)return null;n.merges+=1;const T=makeBody("fruit-m"+n.generation+"-"+n.merges,i,(s.x+r.x)/2,(s.y+r.y)/2,-2,e);return t.splice(E,1),t.splice(o,1),t.push(T),solve(t,SOLVER_PASSES),{a:s,b:r,made:T}}}for(let e=0;e<r;e++)if(t[e].typeId===LAST_TYPE)return o.outcome="win",null;let x=!1;for(let e=0;e<r;e++){const n=t[e];if(n.y-n.r<OVERFLOW_Y&&Math.abs(n.vy)<1.5){x=!0;break}}return x?(n.overflowSteps+=1,n.overflowSteps>=OVERFLOW_STEPS&&(o.outcome="lose")):n.overflowSteps=0,null}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,lathe,merge,Path,quat,tube}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{getFruits}from"../shared/EngineFruits.js";import{noise}from"../shared/EngineMeadow.js";import{cacheGameAsset,createGameMesh as _0x1a6b2e}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{COLLISION_SCALE,COLORS,CORNER,FRUIT_TYPES,JAR_DEPTH,OVERFLOW_Y,PLAY_HEIGHT,PLAY_WIDTH,toWorld,WALL}from"./FruitMergerConstants.js";const EYE_DISTANCE=260,BACKDROP_DEPTH=220,DASHES=24,DOTS=12,WHITE=[1,1,1,1];let pumpkin,lemon;function pumpkinModel(){return cacheGameAsset("fruit-merger/FruitMergerScene:pumpkinModel",()=>pumpkinModelUncached())}function pumpkinModelUncached(){if(pumpkin)return pumpkin;const e=Array.from({length:41},(e,t)=>{const o=Math.PI*t/40,n=.5*Math.sin(o),r=.4*Math.cos(o)-.06*Math.exp(-Math.pow(o/.45,2))+.04*Math.exp(-Math.pow((Math.PI-o)/.45,2));return[Math.max(5e-4,n),r]}),t=e=>1-Math.pow(Math.abs(Math.sin(e*Math.PI*8)),.4),o=lathe(e,{segments:64,displace:(e,o)=>-.045*t(e)*Math.sin(Math.PI*o),color:({u:e,v:o})=>{const n=t(e),r=1-.35*n-.12*Math.pow(2*Math.abs(o-.5),3);return[.98*r,(.52-.08*n)*r,.08*r,1]}}),n=tube([[0,.3,0],[.01,.4,0],[.05,.48,0],[.09,.5,0]],{radius:e=>.05*(1-.45*e),sides:10,color:[.36,.42,.16,1]}),r=merge([{geometry:o},{geometry:n}]);return pumpkin={model:_0x1a6b2e(r,{center:!1,shine:.55}),center:[0,.04,0]},pumpkin}function lemonModel(){return cacheGameAsset("fruit-merger/FruitMergerScene:lemonModel",()=>lemonModelUncached())}function lemonModelUncached(){if(lemon)return lemon;const e=Array.from({length:49},(e,t)=>{const o=Math.PI*t/48,n=.07*(Math.exp(-Math.pow(o/.22,2))+Math.exp(-Math.pow((Math.PI-o)/.22,2)));return[Math.max(5e-4,.47*Math.sin(o)),(.45+n)*Math.cos(o)]}),t=lathe(e,{segments:56,displace:(e,t)=>.006*noise(40*e,30*t)*Math.sin(Math.PI*t),color:({v:e,position:t})=>{const o=Math.pow(2*Math.abs(e-.5),3),n=1-.18*o+.05*noise(30*t[0],30*t[1]);return[.99*n,(.84-.1*o)*n,.18*n,1]}}),o=tube([[0,.5,0],[.02,.56,0]],{radius:.025,sides:8,color:[.38,.45,.16,1]}),n=lathe([[5e-4,0],[.05,.03],[.06,.1],[.03,.17],[5e-4,.2]],{segments:10,color:[.25,.55,.2,1]}),r=merge([{geometry:t},{geometry:o},{geometry:n,position:[.03,.53,0],rotation:quat.z(-1.1),scale:[1,1,.35]}]);return lemon={model:_0x1a6b2e(r,{center:!1,shine:.6}),center:[0,.02,0]},lemon}function fruitModel(e){const t=FRUIT_TYPES[e].name;if("pumpkin"===t)return pumpkinModel();if("lemon"===t)return lemonModel();const o=getFruits()[t];return{model:o.whole,center:o.center}}const ROUNDER=new Set(["papaya"]);function spawnFruit(e,t,o,n=1){const r=FRUIT_TYPES[t].size,{model:s,center:a}=fruitModel(t),[i,l]=s.size,p=(i+l)/2,d=r*COLLISION_SCALE*.97/p,u=ROUNDER.has(FRUIT_TYPES[t].name)?[d*(i+p)/2/i,d*(l+p)/2/l,d]:[d,d,d],h=e.spawn({mesh:"none",position:o,scale:n,pickable:!1});return e.spawn({mesh:s,parent:h,position:[-a[0]*u[0],-a[1]*u[1],-a[2]*u[2]],scale:u,color:WHITE,pickable:!1}),h}const guideColor=e=>"light"===e.mode?toColor(e.TEXT):[1,1,1,1];export function aim(e,t){const o=Math.cos(t.tilt),n=Math.sin(t.tilt),r=(t.centerY-2*t.k-t.height/2)/(t.k*o);e.target=[-(t.centerX-t.width/2)/t.k,r,0],e.eye=[e.target[0],r+260*n,260*o],e.ortho=t.height/(2*t.k)}const meshes=new Map,cached=(e,t)=>{let o=meshes.get(e);return!o&&(o=cacheGameAsset("fruit-merger/FruitMergerScene:"+e,t),meshes.set(e,o)),o};function outline(e){const t=PLAY_WIDTH,o=PLAY_HEIGHT,n=CORNER+e,r=[[-e,0]],s=(e,t,s)=>{for(let a=0;a<=12;a++){const i=t+(s-t)*a/12;r.push([e+Math.cos(i)*n,o-CORNER+Math.sin(i)*n])}};return s(CORNER,Math.PI,Math.PI/2),s(t-CORNER,Math.PI/2,0),r.push([t+e,0]),r.map(([e,n])=>[e-t/2,n-o/2])}const bandMesh=(e,t,o,n)=>cached("fm-band:"+e+":"+t+":"+o.toFixed(1)+":"+n,()=>{const r=[...outline(t),...outline(e).reverse()];return _0x1a6b2e(extrude((new Path).addPolygon(r),{depth:o}),{center:!1,shine:n})}),backMesh=()=>cached("fm-back",()=>_0x1a6b2e(extrude((new Path).addPolygon(outline(WALL)),{depth:1.5}),{center:!1,shine:.1})),CLASSIC_BACK=[1,1,1,.3],CLASSIC_WALL=[1,1,1,.35],backColor=e=>"classic"===e.mode?CLASSIC_BACK:toColor(e.BOARD.SURFACE),wallColor=e=>"classic"===e.mode?CLASSIC_WALL:toColor(e.BOARD.BORDER);function spawnJar(e,t){const o=JAR_DEPTH/2,n=backColor(t),r=wallColor(t);return[e.spawn({mesh:backMesh(),position:[0,0,-o-1],color:n,pickable:!1}),e.spawn({mesh:bandMesh(0,WALL,JAR_DEPTH,0),position:[0,0,0],color:n,pickable:!1}),e.spawn({mesh:bandMesh(0,1.6,.6,0),position:[0,0,o+.3],color:r,pickable:!1})]}export function buildScene(e,t,o){const n=spawnBackdrop(e,t.width,t.height,-220,o);placeBackdrop(e,n,t);const r=(PLAY_WIDTH-8)/42,s=Array.from({length:24},(t,n)=>e.spawn({mesh:"cube",position:toWorld(4+r/2+n*r*1.75,OVERFLOW_Y,-JAR_DEPTH/2+1.2),scale:[r,1.5,.6],color:dangerColor(o,0),pickable:!1})),a=guideColor(o),i=Array.from({length:12},(t,o)=>e.spawn({mesh:"sphere",scale:0,color:[a[0],a[1],a[2],Math.max(.6-.04*o,.15)],pickable:!1}));return{backdrop:n,jar:spawnJar(e,o),dashes:s,dots:i,preview:null,previewId:null,previewX:NaN,previewY:NaN,next:null,nextType:-1,fruits:new Map,danger:0,hot:!1}}function placeBackdrop(e,t,o){const n=Math.cos(o.tilt),r=(o.centerY-2*o.k-o.height/2)/(o.k*n);e.set(t,{position:[-(o.centerX-o.width/2)/o.k-o.width/(2*o.k),r+(o.height/(2*o.k)-220*Math.sin(o.tilt))/n,-220],scale:[1/o.k,1/(o.k*n),1]})}export function removeScene(e,t){for(const o of[t.backdrop,...t.jar,...t.dashes,...t.dots,t.preview,t.next,...t.fruits.values()])null!=o&&e.despawn(o)}export function setSceneTheme(e,t,o){setBackdropTheme(e,t.backdrop,o);for(const o of t.jar)e.despawn(o);t.jar=spawnJar(e,o);for(const n of t.dashes)e.set(n,{color:dangerColor(o,t.danger)});const n=guideColor(o);t.dots.forEach((t,o)=>e.set(t,{color:[n[0],n[1],n[2],Math.max(.6-.04*o,.15)]}))}function dangerColor(e,t){const o=guideColor(e),n="light"===e.mode?[o[0],o[1],o[2],.28]:toColor(COLORS.DANGER_SAFE),r=toColor(COLORS.DANGER_HOT),s=e=>(n[e]??1)+((r[e]??1)-(n[e]??1))*t;return[s(0),s(1),s(2),s(3)]}export function setDanger(e,t,o,n){if(n===t.danger)return;t.danger=n;const r=dangerColor(o,n),s=n>.35;for(const o of t.dashes)e.stopAnimation(o),e.set(o,{color:r,scale:[(PLAY_WIDTH-8)/42,1.5+1.5*n,.6]}),s&&e.animate(o,{color:[r[0],r[1],r[2],.35*(r[3]??1)]},{duration:.38,easing:"easeInOut",repeat:"forever",yoyo:!0});t.hot=s}const SPIN=[0,0,0,1];export function drawFruits(e,t,o){const n=e.transforms;for(const r of o){let o=t.fruits.get(r.id);null==o&&(o=spawnFruit(e,r.typeId,toWorld(r.x,r.y)),t.fruits.set(r.id,o)),quat.z(-r.angle,SPIN),n.transform(o,r.x-PLAY_WIDTH/2,PLAY_HEIGHT/2-r.y,0,SPIN[0],SPIN[1],SPIN[2],SPIN[3])}n.flush()}export function mergeFx(e,t,o,n,r){const s=toWorld(r.x,r.y);for(const r of[o,n]){const o=t.fruits.get(r.id);null!=o&&(t.fruits.delete(r.id),e.animate(o,{position:s,scale:.2},{duration:.12,easing:"easeIn"}).then(()=>{e.has(o)&&e.despawn(o)}))}const a=spawnFruit(e,r.typeId,s,.5);e.animate(a,{scale:1},{spring:"bouncy"}),t.fruits.set(r.id,a);const i=FRUIT_TYPES[r.typeId],l=toColor(i.color),p=e.spawn({mesh:"torus",position:[s[0],s[1],JAR_DEPTH/2-2],rotation:quat.x(Math.PI/2),scale:.6*i.size,color:[l[0],l[1],l[2],.9],pickable:!1});e.animate(p,{scale:1.5*i.size,color:[l[0],l[1],l[2],0]},{duration:.42,easing:"easeOut"}).then(()=>{e.has(p)&&e.despawn(p)}),effects.sparkle(e,{position:[s[0],s[1],10],count:18,size:.08*i.size,speed:2.2*i.size,lifetime:.5,gravity:3*-i.size,colors:[l,[1,1,1,1]],flash:!1})}export function clearFruits(e,t){for(const o of t.fruits.values())e.despawn(o);t.fruits.clear()}const NEXT_SCALE=.4;export function drawPreview(e,t,o,n=-1){if(!o&&null===t.previewId&&-1===t.nextType)return;if(o&&t.previewId===o.id&&t.previewX===o.x&&t.previewY===o.y&&t.nextType===n)return;if(o&&(t.previewX=o.x,t.previewY=o.y),!o){null!=t.preview&&e.despawn(t.preview),t.preview=null,t.previewId=null,null!=t.next&&e.despawn(t.next),t.next=null,t.nextType=-1;for(const o of t.dots)e.set(o,{scale:0});return}if(t.previewId!==o.id&&(null!=t.preview&&e.despawn(t.preview),t.preview=spawnFruit(e,o.typeId,toWorld(o.x,o.y,4),.3),e.animate(t.preview,{scale:1},{spring:{stiffness:240,damping:11}}),t.previewId=o.id),e.set(t.preview,{position:toWorld(o.x,o.y,4)}),n!==t.nextType&&(null!=t.next&&e.despawn(t.next),t.next=n>=0?spawnFruit(e,n,[0,0,4],.4*.4):null,null!=t.next&&e.animate(t.next,{scale:.4},{spring:{stiffness:240,damping:12}}),t.nextType=n),null!=t.next){const r=o.y-FRUIT_TYPES[o.typeId].size/2-.4*FRUIT_TYPES[n].size/2-4;e.set(t.next,{position:toWorld(PLAY_WIDTH/2,r,4)})}const r=o.y+FRUIT_TYPES[o.typeId].size/2+15,s=(PLAY_HEIGHT-10-r)/12;t.dots.forEach((t,n)=>e.set(t,{position:toWorld(o.x,r+n*s,2),scale:2*Math.max(4-.2*n,1.5)}))}export function celebrate(e){effects.confetti(e,{position:toWorld(PLAY_WIDTH/2,.35*PLAY_HEIGHT,20),count:70,size:7,speed:1.3*PLAY_WIDTH,lifetime:1.4,gravity:2*-PLAY_WIDTH,colors:["#FFD700","#FF9800","#4CAF50","#E91E63"].map(e=>toColor(e))})}export function jolt(e){e.shake=6}export function*warmAssets(){yield backMesh;for(let e=0;e<FRUIT_TYPES.length;e++)yield()=>fruitModel(e);yield()=>bandMesh(0,WALL,JAR_DEPTH,0),yield()=>bandMesh(0,1.6,.6,0)}
@@ -1 +1 @@
1
- "use strict";const _0x5cb5d8=_0x1e6d;!function(){const e=_0x1e6d,W=_0xc003();for(;;)try{if(741862==-parseInt(e(452,"@&Dd"))/1+-parseInt(e(510,"sQ15"))/2+parseInt(e(526,"i!JT"))/3*(-parseInt(e(436,"k(DV"))/4)+parseInt(e(534,"8i(f"))/5+-parseInt(e(536,"$NNd"))/6*(parseInt(e(434,"@K#$"))/7)+-parseInt(e(440,"NsJb"))/8*(-parseInt(e(494,")Y0d"))/9)+parseInt(e(502,"xW*1"))/10)break;W.push(W.shift())}catch(e){W.push(W.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x2c9f52,{useCallback,useEffect,useMemo,useRef}from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useFruitNinjaStore,registerGameService}from"./FruitNinjaStore.js";import{createFruitNinjaService,getSpawnInterval,getFruitsPerSpawn,getGameDuration}from"./FruitNinjaService.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{GameBackground}from"./components/GameBackground.js";import{GameControlButton,GameOverModal,useAnimationTrackers,useGameErrorHandler,GameErrorType}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{jsx as _0x4ae2b,jsxs as _0xf4c7fb}from"react/jsx-runtime";export const FruitNinja=({settings:e,onSettingsChange:W,onEndGame:t,onReplayGame:r,onShare:o,onShareScreenshot:n,onShowLeaderboard:a,bannerAd:d})=>{const s=")@ZI",i=_0x1e6d,u={tDkrt:function(e,W){return e(W)},qUXua:i(469,"aBUj"),HlNRc:function(e,W){return e===W},Jskdx:function(e,W,t){return e(W,t)},OpDfE:function(e,W,t){return e(W,t)},xpImB:function(e){return e()},ulTGZ:i(504,"$NNd"),uLhGR:function(e,W){return e<=W},gYLJe:function(e,W){return e===W},VFAMN:i(512,"D@nm"),HQlyB:function(e,W,t,r){return e(W,t,r)},WiOPP:function(e,W,t){return e(W,t)},edHuE:function(e,W,t){return e(W,t)},ZOZEH:function(e,W,t){return e(W,t)},XuPRp:function(e,W,t){return e(W,t)},FjiSJ:i(483,")Y0d")},S=useFruitNinjaStore(e=>e[i(489,"QuHh")]),m=useFruitNinjaStore(e=>e[i(479,"^EtX")]),k=u[i(531,"qsac")](useMemo,()=>m?useFruitNinjaStore[i(541,"@K#$")]().score:0,[m]),f=useRef(!1),G=u.tDkrt(useRef,t);G[i(547,"ZvPY")]=t;const R=useCallback(e=>{const W=i;if(G[W(467,"PI9A")]&&!f[W(444,"y66e")]){const t=useFruitNinjaStore[W(468,"GnJb")]();G[W(473,"Tm&3")]({status:e,score:t[W(476,"XyMp")][W(511,")Y0d")]()}),f[W(530,"IKPJ")]=!0}},[]),{fruitAnimations:x}=u[i(456,"k(vu")](useAnimationTrackers,[i(463,"Z0%$")]),{wrapFunction:l,safeExecute:C}=useGameErrorHandler(GAME_IDS[i(523,"RmTQ")]),p=useRef(u[i(470,"@&Dd")](C,()=>createFruitNinjaService(x),u[i(456,"k(vu")](createFruitNinjaService,x),GameErrorType[i(492,"Jfl^")])).current;useEffect(()=>{const e=i;registerGameService(p);const W=useFruitNinjaStore[e(441,"zScW")](W=>W[e(524,"rKzm")],e=>{p.setPlaying?.(e)});return()=>{const t=e;W(),useFruitNinjaStore.getState()[t(464,"RmTQ")]&&!f[t(438,"Xi9F")]&&u[t(500,"*MNy")](R,t(516,"IKPJ")),P()}},[p]);const O=useRef(e);O[i(462,"zScW")]=e,useEffect(()=>{const e=i;if(m&&!f[e(459,"#zc9")]){const W=useFruitNinjaStore[e(539,"xW*1")]()[e(449,"*(SL")]<=0?u[e(515,"@K#$")]:"win";u[e(488,"XyMp")](W,u[e(451,"7J2X")])?playSound(GAME_SOUNDS[e(508,"$NNd")].GAME_OVER,O[e(546,"1S7F")]?.[e(435,"GnJb")]??!0):u[e(544,"3wt9")](playSound,GAME_SOUNDS[e(442,"XyMp")],O[e(521,"GnJb")]?.[e(471,"8i(f")]??!0),R(W)}!m&&(f.current=!1)},[m]);const N=useCallback(e=>{const W=i;useFruitNinjaStore[W(509,"y66e")]()[W(487,"(s*M")](e)},[]),h=u[i(518,"q6r1")](useCallback,()=>{const e=i;useFruitNinjaStore[e(445,"rKzm")]()[e(538,"k(DV")]()},[]),_=useCallback(e=>{const W=i;useFruitNinjaStore[W(543,"N(x@")]()[W(443,"j)G5")](e)},[]),j=l(()=>{const e=i;if(f[e(455,"rKzm")]=!1,useFruitNinjaStore[e(529,"8i(f")]()[e(507,"Z0%$")](getGameDuration()),u[e(503,"WuRM")](playSound,GAME_SOUNDS[e(506,"y66e")][e(475,"(!^z")],O.current?.enableSounds??!0),p){const W="3|1|0|2|4"[e(528,")Y0d")]("|");let t=0;for(;;){switch(W[t++]){case"0":p[e(533,"q6r1")](h);continue;case"1":p[e(439,"&uFB")]?.(!0);continue;case"2":p[e(430,"k(vu")](N,u[e(493,"@&Dd")](getSpawnInterval),getFruitsPerSpawn());continue;case"3":p[e(465,"QuHh")]();continue;case"4":p[e(542,"@hRH")](_,()=>useFruitNinjaStore[e(529,"8i(f")]().fruits);continue}break}}},GameErrorType[i(522,")Y0d")]),b=u.OpDfE(l,()=>{const e=i;u[e(457,"i!JT")]===e(496,"Tm&3")?(R(e(505,"#zc9")),useFruitNinjaStore[e(433,")Y0d")]().stopGame(),p&&(p.cleanup(),p[e(474,"NsJb")]())):_0x2b2142[e(453,"ZvPY")]()},GameErrorType.UNKNOWN_ERROR),P=u[i(545,"8i(f")](l,()=>{const e=i;if(r?.(),p&&p.cleanup(),useFruitNinjaStore.getState()[e(486,"qsac")](),p)if("MhZFM"===u.VFAMN){const W=_0x41811f[e(529,"8i(f")](),t=u.uLhGR(W.lives,0)?e(447,"(s*M"):"win";u[e(458,"sQ15")](t,e(466,"sQ15"))?u[e(499,"rKzm")](_0x3f0fa6,_0x397953[e(532,"q6r1")][e(446,"zVnk")],_0x3a6c28[e(530,"IKPJ")]?.enableSounds??!0):_0x255193(_0x5b8795[e(450,"IKPJ")],_0x9c3a75[e(485,"D@nm")]?.[e(437,"#zc9")]??!0),_0x20c709(t)}else p[e(537,"PI9A")]()},GameErrorType[i(520,"XyMp")]),I=e?.[i(513,"(!^z")]??0,F={};F[i(501,")@ZI")]=p;const L={};L[i(480,s)]=S,L[i(477,"*(SL")]=m,L[i(517,"@&Dd")]=j,L[i(429,"&uFB")]=b,L.onShare=o,L[i(498,"qsac")]=a,L[i(482,s)]=i(495,"@&Dd");const v={};return v[i(460,"q6r1")]=GAME_IDS[i(461,"Z0%$")],v.settings=e||DEFAULT_GAME_SETTINGS,v[i(527,"*MNy")]=W,_0x4ae2b(GestureHandlerRootView,{style:styles[i(431,"WuRM")],children:_0xf4c7fb(GameBackground,{offset:I,children:[u[i(484,"j)G5")](_0x4ae2b,GameArea,F),u[i(454,"QuHh")](_0x4ae2b,ScoreBoard,{offset:I}),_0x4ae2b(GameControlButton,L),_0x4ae2b(GameOverModal,{isVisible:m,score:k,onPlayAgain:P,onShare:n,buttonText:i(491,s),title:i(448,"Z0%$"),message:u[i(472,"&AH3")],bannerAd:d}),_0x4ae2b(GameSettingsModal,v)]})})};const _0x23221a={};function _0xc003(){const e=["dmkbWRtdH8kRW51dWQtcKG","qxyrW4xdRHz0DhS","zCkQWQtcG8kEWRzkDZGwW7a","ECkOW4zeWQWgWRa","fCkLW4VdKmo1eSoNWRa","bcWzbSkEjrTHAG","eehdJKa","BmkMW5nBW7OSWO8oW5W","W5ycW6RcJqW","W6pdGSoodmk0WQ5fySob","W7m4zqFcQW","WRXxWR5rW5m/WPBdRha0xmkf","WQbNWQeHWPFdI8olnSkrE8oDWRC/WQi/","hv/cVHK2","eCk1W43dSCoKhCoN","jSoNWR0JiG","W6ZcIYBdPuG","Bmketsvo","W6bRWRrTuhXX","ECkQjgvRW5u","BCk1W4TxWO48WPCcW4aJW4e","hmkbWQtdHSkTW4fE","tCkvW6T3WQ4IWRCIW6miW7q3W7ddTGe","bG4Vrf7dGH0ceq","n0/cNs4YW73cKrL+WRddLCoGW77dISoN","z8kYCGO","afuDWOTUWRldGq","sWhdVmoXWQPhW558","WO/cVhjL","W4u2W6qzWQq","WOdcUXb+b8kKW6fLW5iGkaO","W6ZdUSoeW63dLW","nNxdG8oZddVcRq","mgldTe3cIINcTKqLCq7cP2KcWRG","W7WHwtr3","zvaYW7VdLa","W50kW7hcJtddMIJdVG","jWnRWRJcHgvouNBdVwhcKW","W5dcIMRdSmkbsc3cHq","WONdHCkai8oWW7/dOLpcIq","dbirxf7dKHOjba","WPpdGSkXpCoLW4tdVKNcML1XW5OHlSkuuKHb","W69YW49FW7COrSoSW6LrWRRdIchdQJGCWQ8HC8klcq","tCkaWPpcQCkG","rY7dLuWrWR/dGa","W5/dUCkjvmkDxmkNWP57","huRdMwnleXqz","xL8tW5VdKG","lfNcVICNW4xcLH50","ebxdRLuXWPddTW","WRpdMSk5lmo0WQBdILRcJ1TXWQG","W7VdMGdcQLldNmkJW4ddMmkdkg0AWOD9WO/cOHldKmkf","W7uxW4enWQq","WOqOWOnmWR0WuCkQW7jnWOC","W54lW6edWOmOWOxdTK04uSksWOtdSbCgWQGPxui+W4a","dfpdLSoUaa","W5e1WRCzWQdcICo7WOP2zW","W4ldSSkPwCkgBmkkWPz/WR8grJ1UWOPdW50","omkZW5tdP8o5","W7asySo1jG","WOFdL8k9kSocW6pdUuVcH1f6","aCkhW5jPeJxcMSkgys1tWR9JW5S","W5ldPSoXWPhcHG","sda+WPVdKa","W6b/WQH8uh4","xmkpW6f/WP03WORcJ8kPWRuq","wmktW79SWQ4KWRGMW6S","vZemWR3dRCogW6FdU8k9Bda","FCk4W4bLWR0jWRdcOW","oCoLn14FW6ZdM8oBAdXYi8ol","W4jYW6KlW7CGrSkR","uIhdKN05","W4atFHvgWOq","jCo7W7NdNmoEW6bksXuTW6xcLq","W5mfWPS8WQ0","W5FdPSoSi8koWOy","W6ijW5SuWOD6WPFdG1K8qW","sCkIbLbY","WRrUWRC8","q30wW4FdVGv1zxVdIKNcUfy","tXhdUSoqWRTiW54","W79tW7mRW4WizmkfW5XLWPRcOqhdGKC1WPqfwCkQ","ks8QywVdPdOLomoxCW","g8kZW6/dR8oGcSo6WRVcOa","W5tdRuGOwCkGW5r9W4i3bq","WQVdK0lcKIqcW6Waf8knW7dcLG","W6S4wSoIjSkdW6/cVCkGW7HLWOXcFaBdOG","W4vTW5ywW7e","WOlcSavph8kGW4zV","W5FdSSoWmSkoWOr+","W6ldRmk+v8kS","wmkzheL2W67cGtBcK8kmka","BCk/khjwW7BcRHlcUmksamkvW412","W5tdRuqRxSoZWODKW44EkI99","CdlcVHVdHHhcOuS8Etm","ifTGW4dcI8o4W4/dHCkwxZG","euuCWPX/WP3dM2BdUMvcxe7dMeK","gmo+W5jAmSoLqv5mBd0Sza","vmosWP8kv2ZdMCot","WR/dIbiuACkN","W4u1WRCAWRJcICo2WOy","WOCFWPBcRvrVkCkrW4RdRGzTWR9LiSoU","qCkLhCokW6/dJKiD","lt96euO","WOdcStLPlG","WOv8W53dMN9SW4G","WRf3WQa2WOBdPmor","ACkoWR3cP3pcG2ldOSkEb8oitSo0W4/cGq","WRpdLcqbCSkYleNcPIC","iCoxWRCJiSkXo8oqW5jLheZdI8kixITHWRa","W77dUCoBWOpcOHy1n8om","jWTOWR7cHgaovfFdIh3cOuK","W5f4W44SW7eOxmkP","WPbNW7ayWRBcGCoAWPPx","sqRdQCoaWRjdW7L2W6pdUGRdRG","smovW7HdeSojzW","W6zWWQD9wxDwkd/cL8kDja","W4WkW7RdRYBcVeW","WQ/dNWmLCCkJeKhcPsu","DZhdPfRcIGpcIMa"];return(_0xc003=function(){return e})()}function _0x1e6d(e,W){e-=428;const t=_0xc003();let r=t[e];if(void 0===_0x1e6d.VqGLeE){const e=function(e,W){let t,r,o=[],n=0,a="";for(e=function(e){let W="",t="";for(let t,r,o=0,n=0;r=e.charAt(n++);~r&&(t=o%4?64*t+r:r,o++%4)?W+=String.fromCharCode(255&t>>(-2*o&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let e=0,r=W.length;e<r;e++)t+="%"+("00"+W.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),r=0;r<256;r++)o[r]=r;for(r=0;r<256;r++)n=(n+o[r]+W.charCodeAt(r%W.length))%256,t=o[r],o[r]=o[n],o[n]=t;r=0,n=0;for(let W=0;W<e.length;W++)r=(r+1)%256,n=(n+o[r])%256,t=o[r],o[r]=o[n],o[n]=t,a+=String.fromCharCode(e.charCodeAt(W)^o[(o[r]+o[n])%256]);return a};_0x1e6d.OMgwga=e,_0x1e6d.jaDUpw={},_0x1e6d.VqGLeE=!0}const o=t[0];_0x1e6d.QLiPWT!==o&&(_0x1e6d.jaDUpw={},_0x1e6d.QLiPWT=o);const n=_0x1e6d.jaDUpw[e];return void 0===n?(void 0===_0x1e6d.FyZysb&&(_0x1e6d.FyZysb=!0),r=_0x1e6d.OMgwga(r,W),_0x1e6d.jaDUpw[e]=r):r=n,r}_0x23221a[_0x5cb5d8(519,"ZvPY")]=1,_0x23221a[_0x5cb5d8(428,"FC&$")]=BACKGROUND_COLOR;const _0x382812={};_0x382812[_0x5cb5d8(481,"RmTQ")]=_0x23221a;const styles=StyleSheet[_0x5cb5d8(540,"&uFB")](_0x382812);
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{getFruit,isFruitBuilt}from"../shared/EngineFruits.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{FIRST_FRUITS,FRUIT_BUILD_GAP,FRUIT_DETAIL,FRUIT_KINDS,getLayout,MAX_LIVES,TIME_LIMIT}from"./FruitNinjaConstants.js";import{addFruit,createGame,dispose,reset,setLayout,setModels,setTheme,start,tick,touchEnd,touchMove,touchStart}from"./FruitNinjaGame.js";import{backgroundFor,lightFor}from"./FruitNinjaWorld.js";import{jsx as _0x2a4928}from"react/jsx-runtime";const SFX=GAME_SOUNDS.FRUIT_NINJA;export const FruitNinja=engineGame(GAME_IDS.FRUIT_NINJA,e=>{const[t,r]=useLiveState(0),[i,o]=useLiveState(MAX_LIVES),[s,n]=useLiveState(TIME_LIMIT),{theme:a,screen:u,gameOver:m}=useEngineGame(e,{gameId:GAME_IDS.FRUIT_NINJA,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,i)=>{const o=getLayout(t,r,i);return setLayout(e,o),o.fieldWidth},drag:(e,{phase:t,x:r,y:i})=>{"start"===t?touchStart(e,r,i):"move"===t?touchMove(e,r,i):touchEnd(e)},tap:(e,t,r)=>{touchStart(e,t,r),touchEnd(e)},sounds:SFX,onStart:e=>e(SFX.START),wire:(e,t)=>{e.onScore=r,e.onLives=o,e.onTime=n,e.onTouch=()=>t(null,HapticType.LIGHT),e.onSlice=()=>t(SFX.SLICE,HapticType.LIGHT),e.onBomb=()=>t(SFX.BOMB,HapticType.HEAVY),e.onWin=()=>t(GAME_SOUNDS.WELL_DONE),e.onLose=()=>t(SFX.GAME_OVER);const i={};for(const t of FRUIT_KINDS)isFruitBuilt(t,FRUIT_DETAIL,!0)&&(i[t]=getFruit(t,FRUIT_DETAIL),addFruit(e,t));e.kinds.length&&setModels(e,i);const s=FRUIT_KINDS.filter(e=>!isFruitBuilt(e,FRUIT_DETAIL,!0));let a,u=0,m=s.length>0&&isFruitBuilt(s[0],FRUIT_DETAIL),F=0;const I=()=>{if(e.world.isDisposed)return;const t=s[u],r=getFruit(t,FRUIT_DETAIL);m?(r.pieces,i[t]=r,e.models||setModels(e,i),addFruit(e,t),u++):r.whole,m=!m,u>=s.length||(m||(m=isFruitBuilt(s[u],FRUIT_DETAIL)),m||u<FIRST_FRUITS?F=requestAnimationFrame(I):a=setTimeout(()=>F=requestAnimationFrame(I),FRUIT_BUILD_GAP))};return s.length&&(F=requestAnimationFrame(I)),()=>{cancelAnimationFrame(F),clearTimeout(a)}}}),F=useMemo(()=>lightFor(a),[a]),I=useMemo(()=>backgroundFor(a),[a]);return _0x2a4928(EngineGameScreen,{...u,light:F,background:I,columns:[scoreColumn(t),livesColumn(i,MAX_LIVES),timerColumn(s,a)],subtext:"Slice fruits to score!",gameOver:m({title:"GAME OVER",message:"You ran out of lives!",scoreLabel:"Final Score",score:t,buttonText:"Slice Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x2ad666=_0x11fb;!function(){const x=_0x11fb,_=_0x4672();for(;;)try{if(806580==parseInt(x(455,"1%5C"))/1+parseInt(x(459,"2E7N"))/2*(-parseInt(x(440,"CDmO"))/3)+parseInt(x(468,"am]a"))/4+parseInt(x(466,"YZe8"))/5*(-parseInt(x(432,"d$4q"))/6)+parseInt(x(438,"6vXG"))/7*(-parseInt(x(493,"o)@D"))/8)+parseInt(x(472,"q[OU"))/9*(parseInt(x(435,"#XvZ"))/10)+-parseInt(x(480,"6vXG"))/11*(-parseInt(x(439,"NG2B"))/12))break;_.push(_.shift())}catch(x){_.push(_.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{isTablet,getGameDimensions}from"../../services/UtilsService.js";const{height:screenHeight}=getGameDimensions(),GRAVITY=isTablet?.15:.12,SPAWN_Y_OFFSET=50,TARGET_PEAK_RATIO=.15,riseDistance=.85*screenHeight-50,COMPUTED_VELOCITY_Y=-Math.sqrt(2*GRAVITY*riseDistance),_0x3cb2db={};_0x3cb2db[_0x2ad666(482,"!u8Z")]=120,_0x3cb2db[_0x2ad666(431,"l3(^")]=3,_0x3cb2db[_0x2ad666(487,"HP1&")]=1500,_0x3cb2db[_0x2ad666(484,"7io$")]=2,_0x3cb2db[_0x2ad666(475,"B[iV")]=GRAVITY,_0x3cb2db[_0x2ad666(462,"d$4q")]=COMPUTED_VELOCITY_Y,_0x3cb2db[_0x2ad666(450,"HP1&")]=isTablet?1.5:1,_0x3cb2db[_0x2ad666(478,"#XvZ")]=isTablet?90:60;export const FRUIT_NINJA_GAME_CONFIG=_0x3cb2db;const _0xf8ffc8={};_0xf8ffc8[_0x2ad666(471,"rt7L")]="\ud83c\udf4e",_0xf8ffc8[_0x2ad666(491,"l3(^")]=200,_0xf8ffc8[_0x2ad666(461,"l3(^")]=_0x2ad666(456,"uCDw");const _0x3b44c7={};_0x3b44c7[_0x2ad666(481,"eaBW")]="\ud83c\udf4a",_0x3b44c7[_0x2ad666(464,"d$4q")]=200,_0x3b44c7[_0x2ad666(492,"e$bs")]="orange";const _0xd6ca42={emoji:"\ud83c\udf4c"};_0xd6ca42[_0x2ad666(444,"VHwk")]=200,_0xd6ca42[_0x2ad666(460,"2E7N")]=_0x2ad666(429,"VHwk");const _0x3b6152={};_0x3b6152[_0x2ad666(497,"YHVL")]="\ud83c\udf47",_0x3b6152.points=200,_0x3b6152[_0x2ad666(457,"$CdW")]=_0x2ad666(467,"9W2r");const _0x439447={};_0x439447[_0x2ad666(442,"6vXG")]="\ud83e\udd5d",_0x439447[_0x2ad666(473,"XCuu")]=200,_0x439447[_0x2ad666(489,"IyRM")]="kiwi";const _0x16c0d7={};_0x16c0d7[_0x2ad666(497,"YHVL")]="\ud83c\udf53",_0x16c0d7[_0x2ad666(437,"CDmO")]=200,_0x16c0d7.name=_0x2ad666(486,"BfOM");const _0x454114={emoji:"\ud83e\udd6d"};_0x454114[_0x2ad666(463,"BfOM")]=200,_0x454114[_0x2ad666(441,"CEo5")]="mango";const _0x14b4d4={};_0x14b4d4[_0x2ad666(496,"tTll")]="\ud83c\udf51",_0x14b4d4[_0x2ad666(453,"[^Nz")]=200,_0x14b4d4[_0x2ad666(485,"ZbS@")]="peach";const _0x858106={};_0x858106[_0x2ad666(498,"am]a")]="\ud83c\udf52",_0x858106.points=200,_0x858106[_0x2ad666(449,"mD$L")]=_0x2ad666(434,"B41H");const _0x345828={};function _0x4672(){const x=["m8kmxmkP","axTsgahdMSkiWQvQp8kAACkSWQijmgVdL8kndaNdJ2j6","WPtdKCkMfSoLxvxcOCkFWQ55WPON","wSkLsmkcmGi","WOO7FGX0WPW","rwlcQSkBiWy","W5FdRmoqqhDIW7TBW4LIW4VcVui","zCoMbZXo","rmkRtmkj","D8oIfIi","WP4dW41cjCkEWQxdGSoDWQqCWR8","W4frWPeF","rSo1WOlcGG","hmoXW7utWO90WRCtdCovbuZcV8kvqCkNW5Ks","yCoFg8kZWRVcMq","jCoqW5uPWRjg","b8kmDZblpem","atRdRSoiAfxcPSoRE8onW4BcHH8","W7ZcGCofW4ddRv8","W6enmSoEBCogtstcJ8ozWPBdP8oY","WOJcV8kkeq","DmoDhCk3WQy","xYPec8ou","W7/cHK3cL3HfW7FcGCoC","p0hdQCo0DCoq","WRLZWOVcQ8ka","WOxdJmonASkEwuO","cfLDlSkeqG","EYGmFCoEWQPtW6pcVSo8W6i","WRlcMwLyWPVdVCotW6BdLLC","gSkNW5RdN8oIWPFcHCoMEtLyW7a","obqvE07dJwCJgqxcOHi","a8o4WOFcINq","p3D5bCkVDu3cRHRdRX42EG","rwZcS8kulHq","W6dcU8obAmkdoIpcKCk2WPjtWOqAfXbH","WPhdH8kkaG","ySoeamk8WRJcImomCmocWPe","dMDobrZdHmkxWQP9lCkyECkMWQujlgBdMCkteG","W4PDWPmqFW","WR0YW4FdOW","pCkVqqD/aezOW5i","wmo7WOBcICkUW5q","zYWZW48","WPyPW50ormoJWQ9r","WPFdMmkSe8oVvHZcKCkOWRzyWRa","yCo7gdPc","W6S0W4L1W5e","uh7cHCodW7m","WRzyB8kdnG","zsymFq","W6agvmkpk8kXlYu","WOySt8oAWONcGdxdICk2DSkSodm","W7RcH0/dVsGfW5ZcOCoTjWG5","W4ODW5CVwCkh","athdQCkOorxdT8oGvG","zCovWRFcUmkwW67cSSoBFG","y8oxW7KlWQTmWPC","oehdG8kZW5Xl","zfhcR3HNW7JdJmos","W4BdUaKPW7FcKSoHW5FdMhVcLhu","W7lcGmoMW5/dPLLF","EYGiDSonWQS","pbqCFKFdJISRirJcKt7dUa","tJBdRu4ZjCkkDmki","ohq1FSonWPDGW70","WOT6W5jn","BeHciX8","W6iyWRacxfPNBbm","W5GtW5aGq8kv","jmouWQVcQ1RdOZlcGdLx","bchdNCkDWQVcUSofW5uDeM1pW5a","W4zdWR4vE8oo","mmkyyHaZtW"];return(_0x4672=function(){return x})()}_0x345828[_0x2ad666(495,"uCDw")]="\ud83c\udf4d",_0x345828[_0x2ad666(476,"!u8Z")]=200,_0x345828.name=_0x2ad666(443,"&WzD");const _0x2018e0={};_0x2018e0[_0x2ad666(488,"2E7N")]="\ud83c\udf49",_0x2018e0[_0x2ad666(452,"$CdW")]=200,_0x2018e0[_0x2ad666(469,"1%5C")]="watermelon";const _0x3ad414={};_0x3ad414[_0x2ad666(470,"BfOM")]="\ud83e\uded2",_0x3ad414.points=200,_0x3ad414[_0x2ad666(499,"CDmO")]=_0x2ad666(477,"CDmO");const _0x4a53ac={emoji:"\ud83e\udd6d"};_0x4a53ac[_0x2ad666(448,"3d[Y")]=200,_0x4a53ac.name=_0x2ad666(454,"YZe8");export const FRUIT_TYPES=[_0xf8ffc8,_0x3b44c7,_0xd6ca42,_0x3b6152,_0x439447,_0x16c0d7,_0x454114,_0x14b4d4,_0x858106,_0x345828,_0x2018e0,_0x3ad414,_0x4a53ac];const _0x241679={};function _0x11fb(x,_){x-=428;const d=_0x4672();let o=d[x];if(void 0===_0x11fb.ZmscfN){const x=function(x,_){let d,o,a=[],t=0,W="";for(x=function(x){let _="",d="";for(let d,o,a=0,t=0;o=x.charAt(t++);~o&&(d=a%4?64*d+o:o,a++%4)?_+=String.fromCharCode(255&d>>(-2*a&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let x=0,o=_.length;x<o;x++)d+="%"+("00"+_.charCodeAt(x).toString(16)).slice(-2);return decodeURIComponent(d)}(x),o=0;o<256;o++)a[o]=o;for(o=0;o<256;o++)t=(t+a[o]+_.charCodeAt(o%_.length))%256,d=a[o],a[o]=a[t],a[t]=d;o=0,t=0;for(let _=0;_<x.length;_++)o=(o+1)%256,t=(t+a[o])%256,d=a[o],a[o]=a[t],a[t]=d,W+=String.fromCharCode(x.charCodeAt(_)^a[(a[o]+a[t])%256]);return W};_0x11fb.XJSSDO=x,_0x11fb.tIeqmI={},_0x11fb.ZmscfN=!0}const a=d[0];_0x11fb.ReeHcK!==a&&(_0x11fb.tIeqmI={},_0x11fb.ReeHcK=a);const t=_0x11fb.tIeqmI[x];return void 0===t?(void 0===_0x11fb.xgrnvE&&(_0x11fb.xgrnvE=!0),o=_0x11fb.XJSSDO(o,_),_0x11fb.tIeqmI[x]=o):o=t,o}_0x241679[_0x2ad666(474,"jaf^")]="\ud83d\udca3",_0x241679[_0x2ad666(483,"YZe8")]=-1e3,_0x241679.name="bomb",_0x241679[_0x2ad666(447,"2E7N")]=!0;const _0x148f67={emoji:"\u2b50"};_0x148f67[_0x2ad666(433,"1FgU")]=1e3,_0x148f67.name=_0x2ad666(458,"uCDw"),_0x148f67[_0x2ad666(436,"9W2r")]=!0;export const FRUIT_SPECIAL_ITEMS=[_0x241679,_0x148f67];const _0x302d9d={};_0x302d9d[_0x2ad666(445,"eaBW")]=BACKGROUND_COLOR,_0x302d9d.PRIMARY=PRIMARY_COLOR;export const FRUIT_NINJA_COLORS=_0x302d9d;
1
+ "use strict";import{isTablet}from"../../services/UtilsService.js";import{gameWidthFor}from"../shared/EngineUtils.js";export const TIME_LIMIT=120;export const MAX_LIVES=3;export const POINTS_PER_FRUIT=100;export const POINTS_PER_STAR=500;export const BOMB_CHANCE=.18;export const STAR_CHANCE=.07;export const FRUIT_KINDS=["apple","orange","banana","grapes","kiwi","strawberry","mango","peach","cherries","pineapple","watermelon","pomegranate","papaya"];export const FIRST_WAVE=1;export const WAVE_SIZE=2;export const WAVE_STAGGER=.7;export const WAVE_INTERVAL=1.8;export const WAVE_JITTER=.4;export const WAVE_MIN=.5;export const FRAME_TIME=1/60;export const MAX_FRAMES=2;export const FRUIT_SIZE=isTablet?90:60;export const FRUIT_DETAIL=isTablet?.7:.5;export const FIRST_FRUITS=3;export const FRUIT_BUILD_GAP=300;const GRAVITY=isTablet?.15:.12,VX_RANGE=isTablet?1.5:1,SPAWN_ABOVE_BOTTOM=50,PEAK=.15;export const WALL_BOUNCE=.8;export const SPIN_RANGE=.2;export const BLADE_WINDOW=.07;export const BLADE_POINTS=10;export const SPAWN_FROM=.55;export const SPAWN_SPRING={damping:11,stiffness:220};export const TRAIL_FADE=.22;export const PIECE_LIFETIME=1.1;export const PIECE_SPREAD=2.5;export const BOMB_COLORS=["#1f2937","#374151","#f97316","#fde047"];export const STAR_COLORS=["#fbbf24","#f59e0b","#fef3c7","#ffffff"];export function getLayout(t,o,e){const s=gameWidthFor(t),r=.85*o-50;return{width:t,height:o,offset:e,fieldLeft:(t-s)/2,fieldWidth:s,size:FRUIT_SIZE,gravity:GRAVITY,launchVy:-Math.sqrt(2*GRAVITY*r),launchVxRange:VX_RANGE,spawnY:o-50}}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{BLADE_POINTS,BLADE_WINDOW,BOMB_CHANCE,FIRST_WAVE,FRAME_TIME,MAX_FRAMES,MAX_LIVES,POINTS_PER_FRUIT,POINTS_PER_STAR,SPIN_RANGE,STAR_CHANCE,TIME_LIMIT,WALL_BOUNCE,WAVE_INTERVAL,WAVE_JITTER,WAVE_MIN,WAVE_SIZE,WAVE_STAGGER}from"./FruitNinjaConstants.js";import{buildModels,drawTrail,fadeTrail,hideTrail,placeItem,removeTrail,sliceItem,spawnItem,spawnTrail}from"./FruitNinjaScene.js";import{cameraFor,makeView,spawnWorld}from"./FruitNinjaWorld.js";const WORLD_CAPACITY=1400;export function createGame(e){const o=new World(1400),t={world:o,camera:{eye:[0,1.6,0],target:[0,1.6,-1],fov:.9},theme:e,layout:null,view:null,scenery:[],models:null,trail: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,items:[],kinds:[],bladeX:new Float64Array(BLADE_POINTS),bladeY:new Float64Array(BLADE_POINTS),bladeT:new Float64Array(BLADE_POINTS),bladeLen:0,touching:!1,trailDirty:!1,onPhase:e=>{},onScore:e=>{},onLives:e=>{},onTime:e=>{},onTouch:()=>{},onSlice:()=>{},onBomb:()=>{},onWin:()=>{},onLose:()=>{}};return o.scoreboard.reset(MAX_LIVES,TIME_LIMIT),o.scoreboard.handlers={onSecond:e=>t.onTime(e),onTimeUp:()=>"playing"===t.phase&&end(t,!0)},t}const after=(e,o,t)=>e.world.after(o,t);export function setModels(e,o){e.models=buildModels(o),e.layout&&!e.trail&&(e.trail=spawnTrail(e.world))}export function addFruit(e,o){e.kinds.includes(o)||e.kinds.push(o)}export function setLayout(e,o){const t=e.world;clearItems(e);for(const o of e.scenery)t.despawn(o);e.trail&&removeTrail(t,e.trail),e.layout=o;const r=makeView(o.width,o.height);e.view=r;const a=cameraFor(r);e.camera.eye=a.eye,e.camera.target=a.target,e.camera.fov=a.fov,e.scenery=spawnWorld(t,r,e.theme),e.trail=e.models?spawnTrail(t):null}export function setTheme(e,o){if(o===e.theme&&e.scenery.length)return;e.theme=o;const t=e.view;if(t&&!e.world.isDisposed){for(const o of e.scenery)e.world.despawn(o);e.scenery=spawnWorld(e.world,t,o)}}function clearItems(e){for(const o of e.items)e.world.despawn(o.root);e.items=[]}export function start(e){"ready"===e.phase&&(e.phase="playing",e.world.scoreboard.startCountdown(TIME_LIMIT),e.onPhase("playing"),after(e,FIRST_WAVE,()=>wave(e)))}function wave(e){if("playing"===e.phase){for(let o=0;o<WAVE_SIZE;o++)after(e,o*WAVE_STAGGER,()=>throwItem(e));after(e,Math.max(WAVE_MIN,WAVE_INTERVAL+(Math.random()-.5)*WAVE_JITTER),()=>wave(e))}}function throwItem(e){const o=e.layout,t=e.view,r=e.models;if(!o||!t||!r||"playing"!==e.phase)return;const a=Math.random(),n=a<BOMB_CHANCE?{kind:"bomb"}:a<BOMB_CHANCE+STAR_CHANCE?{kind:"star"}:e.kinds.length?{kind:"fruit",fruit:e.kinds[Math.floor(Math.random()*e.kinds.length)]}:{kind:"star"},i=Math.random()*(o.fieldWidth-o.size),l=o.spawnY,d=o.size/2;e.items.push({what:n,x:i,y:l,vx:(Math.random()-.5)*o.launchVxRange,vy:o.launchVy+(Math.random()-.5),root:spawnItem(e.world,t,o,r,n,o.fieldLeft+i+d,l+d,(Math.random()-.5)*SPIN_RANGE)})}export function reset(e){e.world.cancelTimers(),clearItems(e),endStroke(e),e.bladeLen=0,e.world.scoreboard.reset(MAX_LIVES,TIME_LIMIT),e.won=!1,e.phase="ready",e.onScore(0),e.onLives(MAX_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(),clearItems(e),e.bladeLen=0,e.touching=!1,e.trailDirty=!1,e.trail&&hideTrail(e.world,e.trail),e.won=o,e.phase="over",o?e.onWin():e.onLose(),e.onPhase("over")}export function tick(e,o){e.world.isDisposed||(e.time+=o,"playing"===e.phase&&e.items.length&&step(e,Math.min(o/FRAME_TIME,MAX_FRAMES)),e.trailDirty&&(e.trailDirty=!1,e.view&&e.trail&&drawTrail(e.world,e.view,e.trail,e.bladeX,e.bladeY,e.bladeLen)),e.world.update(o))}export function touchStart(e,o,t){"playing"===e.phase&&(e.bladeLen=0,e.touching=!0,addPoint(e,o,t),e.onTouch())}export function touchMove(e,o,t){if("playing"!==e.phase||!e.touching)return;const r=e.bladeLen-1;r>=0&&e.bladeX[r]===o&&e.bladeY[r]===t||addPoint(e,o,t)}function addPoint(e,o,t){e.bladeLen===BLADE_POINTS&&(e.bladeX.copyWithin(0,1),e.bladeY.copyWithin(0,1),e.bladeT.copyWithin(0,1),e.bladeLen--),e.bladeX[e.bladeLen]=o,e.bladeY[e.bladeLen]=t,e.bladeT[e.bladeLen]=e.time,e.bladeLen++,e.trailDirty=!0}export function touchEnd(e){endStroke(e)}function endStroke(e){e.touching=!1,e.trail&&(e.trailDirty&&e.view&&drawTrail(e.world,e.view,e.trail,e.bladeX,e.bladeY,e.bladeLen),e.trailDirty=!1,e.bladeLen>1?fadeTrail(e.world,e.trail):hideTrail(e.world,e.trail))}const segmentDistSq=(e,o,t,r,a,n)=>{const i=a-t,l=n-r,d=i*i+l*l,s=d>0?Math.max(0,Math.min(1,((e-t)*i+(o-r)*l)/d)):0;return(t+i*s-e)**2+(r+l*s-o)**2};function cutBy(e,o,t,r){const{bladeX:a,bladeY:n,bladeT:i,bladeLen:l}=e,d=e.time-BLADE_WINDOW,s=r*r;if(1===l)return i[0]>=d&&(a[0]-o)**2+(n[0]-t)**2<=s?[1,0]:null;for(let e=l-2;e>=0&&!(i[e+1]<d);e--)if(segmentDistSq(o,t,a[e],n[e],a[e+1],n[e+1])<=s)return[a[e+1]-a[e],n[e+1]-n[e]];return null}function step(e,o){const t=e.layout,r=t.size/2,a=t.fieldWidth-t.size,n=e.items,i=e.world.transforms;let l=0;for(const d of n){const s=t.fieldLeft+d.x+r,m=d.y+r,u=cutBy(e,s,m,r);if(u){if(slice(e,d,s,m,u),"playing"!==e.phase)return void i.clear();continue}d.vy+=t.gravity*o;let h=d.x+d.vx*o,w=d.y+d.vy*o;w>t.height+100?e.world.despawn(d.root):(w<-50?(d.vy=Math.max(d.vy,.5),w=-50):h<=0?(h=0,d.vx=Math.abs(d.vx)*WALL_BOUNCE):h>=a&&(h=a,d.vx=-Math.abs(d.vx)*WALL_BOUNCE),d.x=h,d.y=w,placeItem(e.world,e.view,d.root,t.fieldLeft+h+r,w+r,i),n[l++]=d)}n.length=l,i.flush()}function slice(e,o,t,r,[a,n]){if(sliceItem(e.world,e.view,e.layout,e.models,o.root,o.what,t,r,o.vx,o.vy,a,n),"bomb"===o.what.kind)return e.onBomb(),e.onLives(e.world.scoreboard.addLives(-1)),void(e.lives<=0&&end(e,!1));e.onSlice(),"star"===o.what.kind?(e.world.scoreboard.setLives(Math.min(e.lives+1,MAX_LIVES)),e.onLives(e.lives),e.world.scoreboard.add(POINTS_PER_STAR)):e.world.scoreboard.add(POINTS_PER_FRUIT),e.onScore(e.score)}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,merge,Path,quat,shapeGeometry,tube}from"@nayan-ui/engine";import{lighten}from"../../services/GamesConstants.js";import{cacheGameAsset,createGameMesh as _0x46809a}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{BLADE_POINTS,BOMB_COLORS,FRAME_TIME,PIECE_LIFETIME,PIECE_SPREAD,SPAWN_FROM,SPAWN_SPRING,STAR_COLORS,TRAIL_FADE}from"./FruitNinjaConstants.js";import{at,facing,planeVector,PLAY_DEPTH,pointSize}from"./FruitNinjaWorld.js";const HIDDEN=0,PER_SECOND=1/FRAME_TIME,TRAIL_DEPTH=PLAY_DEPTH-.35;let extras;export function buildModels(e){return extras??=cacheGameAsset("fruit-ninja/extras",()=>({bomb:_0x46809a(merge([{geometry:shapeGeometry("sphere"),color:[.13,.14,.17]},{geometry:shapeGeometry("cylinder"),position:[0,.5,0],scale:[.26,.14,.26],color:[.35,.37,.42]},{geometry:tube([[0,.55,0],[.04,.7,0],[.14,.78,0],[.22,.76,0]],{radius:.035}),color:[.76,.6,.38]}]),{fit:1,shine:.7}),spark:_0x46809a(shapeGeometry("sphere")),star:_0x46809a(extrude((new Path).addStar(0,0,.5,.22,5),{depth:.22,color:toColor(STAR_COLORS[0])}),{fit:1,shine:.6}),disc:_0x46809a(extrude((new Path).addCircle(0,0,.5),{depth:0}))})),{fruits:e,...extras}}const SPARK=[3,2.1,.6],WHITE=[1,1,1,1];function fitted(e,t,o=[0,0,0]){const i=t/Math.max(e.size[0],e.size[1]);return{scale:i,position:[-o[0]*i,-o[1]*i,-o[2]*i]}}export function spawnItem(e,t,o,i,s,n,a,r){const p=3*(Math.random()-.5),l=o.size*pointSize(t),f=e.spawn({mesh:"none",position:at(t,n,a),scale:SPAWN_FROM,spin:[.4*p,p,-r*PER_SECOND],pickable:!1});e.animate(f,{scale:1},{spring:SPAWN_SPRING});const h=(t,o,i=WHITE)=>e.spawn({mesh:t,parent:f,position:o.position,scale:o.scale,color:i,pickable:!1});if("fruit"===s.kind){const e=i.fruits[s.fruit];h(e.whole,fitted(e.whole,l,e.center))}else if("bomb"===s.kind){h(i.bomb,fitted(i.bomb,.92*l));const t=e.spawn({mesh:i.spark,parent:f,position:[.2*l,.36*l,0],scale:.1*l,color:SPARK,pickable:!1});e.animate(t,{scale:.16*l},{duration:.12,repeat:"forever",yoyo:!0})}else h(i.star,fitted(i.star,.95*l),toColor(STAR_COLORS[0]));return f}const itemPosition=[0,0,0];export function placeItem(e,t,o,i,s,n){const a=pointSize(t),r=(t.height/2-s)*a;itemPosition[0]=t.eye[0]+t.forward[0]*t.playDepth+(i-t.width/2)*a,itemPosition[1]=t.eye[1]+t.forward[1]*t.playDepth+r*t.up[1],itemPosition[2]=t.eye[2]+t.forward[2]*t.playDepth+r*t.up[2],n?n.position(o,itemPosition[0],itemPosition[1],itemPosition[2]):e.set(o,{position:itemPosition})}const SPLASH_FRUIT=e=>[e,[Math.min(1,e[0]+.25),Math.min(1,e[1]+.25),Math.min(1,e[2]+.25)]],BOMB_BURST=BOMB_COLORS.map(e=>toColor(e)),STAR_BURST=STAR_COLORS.map(e=>toColor(e)),STAR_SPARK=toColor(lighten(STAR_COLORS[0],.5));export function sliceItem(e,t,o,i,s,n,a,r,p,l,f,h){e.despawn(s);const m=pointSize(t),d=o.size*m,E=at(t,a,r),A=at(t,a,r,PLAY_DEPTH-.5*d),S=o.gravity*PER_SECOND*PER_SECOND,P=planeVector(t,0,S);if("fruit"===n.kind){const o=i.fruits[n.fruit],s=Math.hypot(f,h)||1,a=h/s,r=-f/s,u=facing(t,Math.atan2(-r,a)),_=fitted(o.whole,d,o.center);return[-1,1].forEach((i,s)=>{const n=e.spawn({mesh:"none",position:E,rotation:quat.multiply(u,quat.y(i<0?Math.PI/2:-Math.PI/2)),velocity:planeVector(t,(p+i*a*PIECE_SPREAD)*PER_SECOND,(l+i*r*PIECE_SPREAD)*PER_SECOND),acceleration:P,spin:[0,0,2.5*i],lifetime:PIECE_LIFETIME,pickable:!1});e.spawn({mesh:o.pieces[s],parent:n,position:_.position,scale:_.scale,color:WHITE,pickable:!1})}),void effects.splash(e,{position:A,count:14,size:.09*d,speed:5*d,lifetime:.55,gravity:-S*m*.6,colors:SPLASH_FRUIT(o.juice)})}const u="bomb"===n.kind;u?effects.explosion(e,{position:A,count:16,size:.7*d,speed:2.6*d,lifetime:.6,gravity:-S*m*.5,debris:BOMB_BURST,flash:!1}):effects.sparkle(e,{position:A,count:16,size:.1*d,speed:6*d,lifetime:.6,gravity:-S*m*.3,colors:STAR_BURST,flash:!1});const _=e.spawn({mesh:i.disc,position:at(t,a,r,PLAY_DEPTH-d),rotation:facing(t),scale:d,color:u?[2,1.1,.3,.85]:[2*STAR_SPARK[0],2*STAR_SPARK[1],2*STAR_SPARK[2],.8],pickable:!1});e.animate(_,{scale:d*(u?3.2:2.2),color:[2,u?.8:1.8,.2,0]},{duration:u?.4:.3}).then(()=>{e.has(_)&&e.despawn(_)})}const BEAD_SIZE=7,BEAD=[1.6,1.6,1.6,.75],FADED=[1.6,1.6,1.6,0];export function spawnTrail(e){return{beads:Array.from({length:BLADE_POINTS},()=>e.spawn({mesh:"sphere",scale:0,color:BEAD,pickable:!1})),shown:0,fading:!1}}export function drawTrail(e,t,o,i,s,n){const a=e.transforms,r=Math.min(n,o.beads.length);if(o.fading){for(let t=0;t<o.shown;t++)e.stopAnimation(o.beads[t]);o.fading=!1}const p=pointSize(t,TRAIL_DEPTH),l=at(t,t.width/2,t.height/2,TRAIL_DEPTH),f=7*p;for(let e=0;e<r;e++){const r=n-1-e,h=(i[r]-t.width/2)*p,m=(t.height/2-s[r])*p,d=o.beads[e];a.position(d,l[0]+h,l[1]+m*t.up[1],l[2]+m*t.up[2]),a.scale(d,f*(1-e/BLADE_POINTS)),a.color(d,BEAD[0],BEAD[1],BEAD[2],BEAD[3]??1)}for(let e=r;e<o.shown;e++)a.scale(o.beads[e],0);o.shown=r,a.flush()}export function fadeTrail(e,t){t.shown&&(e.animate(t.beads.slice(0,t.shown),{color:FADED,scale:0},{duration:TRAIL_FADE}),t.fading=!0)}export function hideTrail(e,t){const o=e.transforms;for(let i=0;i<t.shown;i++)t.fading&&e.stopAnimation(t.beads[i]),o.scale(t.beads[i],0);o.flush(),t.shown=0,t.fading=!1}export function removeTrail(e,t){for(const o of t.beads)e.despawn(o)}export function*warmAssets(){yield()=>buildModels({})}
@@ -0,0 +1 @@
1
+ "use strict";import{makeView as _0x19b3a0,spawnWorld as _0x1faf39}from"../shared/EngineMeadow.js";export{at,backgroundFor,cameraFor,facing,lightFor,planeVector,pointSize}from"../shared/EngineMeadow.js";export const PLAY_DEPTH=3.6;export const makeView=(e,o)=>_0x19b3a0(e,o,{eyeHeight:1.6,horizon:.62,playDepth:3.6});export const spawnWorld=(e,o,a)=>_0x1faf39(e,o,a);
@@ -1 +1 @@
1
- "use strict";const _0x280232=_0x41bd;!function(){const e=_0x41bd,o=_0x38b3();for(;;)try{if(190449==-parseInt(e(313,"ZEn^"))/1+-parseInt(e(326,"o%9J"))/2*(-parseInt(e(338,"Xyu&"))/3)+-parseInt(e(369,"ccn!"))/4+parseInt(e(266,"UeL9"))/5*(-parseInt(e(347,"rpII"))/6)+-parseInt(e(341,"ZN*M"))/7*(-parseInt(e(308,"zGQ^"))/8)+parseInt(e(368,"ZN*M"))/9*(-parseInt(e(312,"gL3h"))/10)+-parseInt(e(302,"rpII"))/11*(-parseInt(e(343,"ST2T"))/12))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import _0x41d21c,{useCallback,useMemo,useEffect,useRef}from"react";import{View,StyleSheet}from"react-native";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x55b56d}from"../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from"../../services/UtilsService.js";import{GameGrid}from"./components/GameGrid.js";function _0x38b3(){const e=["CmoJWQpdL8kCz8oiW7FdNHhcUMm","nfBcL8oQWP/cPCo3W55U","n8odsmkUyX3dGSkH","nmogW7TOW5qBdW","WQz+ustdKa","b8otbSo8W6q","fCoEWRy3W7BdM8k2ChzzmG","WQj8yIRdOq","bL3dK8kxWONcI8kWxq","WPBcGCk4WP3cOW","kIKwW6KbW5u9","W73dS23cUmkVnCobWP7cQq","zhJdICoPW60iW6G","BSkkW6HXW7utkCoC","g8kpdCkXWO7dJt8JWOSgvmoq","m8ottSkpCHldGG","zIWXFCowWO4O","W5NdHefidComqgi","W6mtW5epCuVdQmkE","WQlcU8kvwmkIgYPSfG","wColxmoYW5/cIZ4PWP4","WRa/W7RcIXxcJmo0","kSkLa3XJW71C","rqyZiY0","fmo/WRKxFSk5FerM","BrGgiGq","n8olwSkvra","WROKW6hcJrNcG8oSWQhdVmolW4BcUmo6pq","uutcVCknW7RcPmowFa","ACo6pSoUW7ufWQe","j8kAW6xcLSoQ","W7BcJCoMomkF","W4VdKrNcHmoHW6lcSdVdPu0","bCo3oIicW5VdVZRdNCoeW5xcOg0","sColtmoZW5NcLYm","W4NdL0ZcMmkTe8oTWRa","yfZdLa9JW4ddNa","tmk+W5VcJmoN","CuZdLrHYW6NdICkFFG","WPNdRtn4nmo1gmkIW4j2","xSonj8owWQOBW53cIW","vmo0WQ1oWPVdKHzbFmkSnHC","BmoakmobW68OW7VcJLvJWPa","n8kpASkBW4j9mCoT","xSo7cSkHzhm/","WRfWyHxdSmotWRPw","fmkdW5FcHSon","WOtcHwm8W4FcUqdcJqS","eSkgW5hcTCo6","W43dGLPPha","W5pdGahcOCov","WRXyWO7cJ8oDybW","W4ZdG1xcICkdd8oCWRtcN8o0","cCotWOKPW7i","CCkzDI8","DmkfuYm4W71aWRaC","m8oduSkjCG4","yMJcHmkBWQ7cKmoYoa","DCopeCo8WQC","AxddMCkEW73dKtJdQq","W4ahdZi4t8kVDCkAAgW","kdi8gaJcVbVdPu5RDWZdT3GTW4D2","jfy6yCoO","t8opjSokWQO","W53dLeDPhmodqa","lCoonmo3W7jrW5iPdqRdJty","WPJdPtD9vCkogSkcW5n6eXe","wCkZW67cVSoMW7O","A3VdJmkVW6xdLr/dO8oSdmodW7C","s8oCWPBcRSkfFNK1","WRvfWPjUnbRdQ8kXrYRcHCoT","WOZcLGeRqCkAqN7dSSkfyCkz","vCkGW7RcV8oMW6bO","wMK0drhcIJ7dRW","z8kAW7VcGmos","WPjctNzVtSk9","W6iNl3xcSSo+WODQuSo1ua","gCoSaIat","WPrzxwzMrCkbu8kdDeyAha","yh/cHCk8WRq","jf4OwSopvg7cPq","WONcKqqSt8kvE3FdGmkfqCkL","hmkiWRNcGW","bfBdHSkMWPhcJ8kxv2hdGmkLoa","z8k4gqCvWRNdGGe","utaUASkuWPn8cthcGG","oIGfW6KqW7WOW43cHW","nmobW6X7W4uq","CN3dN8o6W7WdW4/dM8kFW6GvzLC3","kWiavCkWW6aC","WR4VW7VcIHhcHCoL","rIq3kttcVCkI","p8oZaZ4gWOldOJVcMG","ie4UE8oEw24","xSoVfSkWzhe","W4G7W51uW60","W5zibNyJBuiXz0j9","d8k5tmoJosO9bCodt8o8aq","g8kodCk3WO7cLJemWPieCW","zSkhW697W4eTk8ok","EuldTtXI","W6BdPSotd8kbhWzrnIS","W5VdHWtcHmoHW4dcPq","hdq8","W4mxW4G5nXRcQmod","W4ufbtC8BmkaA8kMzuK","Aqasodi5lG","Braugsm2lIq","WOlcHCkEWQ7cOutcMW","WRtcO8klWQVcGq","yePaaSoIW6iQWOJdQG","B8o3a8oSW6u","lXigDmkHW68Cya"];return(_0x38b3=function(){return e})()}import{ScoreBoard}from"./components/ScoreBoard.js";function _0x41bd(e,o){e-=258;const t=_0x38b3();let n=t[e];if(void 0===_0x41bd.iqoqOt){const e=function(e,o){let t,n,r=[],a=0,W="";for(e=function(e){let o="",t="";for(let t,n,r=0,a=0;n=e.charAt(a++);~n&&(t=r%4?64*t+n:n,r++%4)?o+=String.fromCharCode(255&t>>(-2*r&6)):0)n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(n);for(let e=0,n=o.length;e<n;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),n=0;n<256;n++)r[n]=n;for(n=0;n<256;n++)a=(a+r[n]+o.charCodeAt(n%o.length))%256,t=r[n],r[n]=r[a],r[a]=t;n=0,a=0;for(let o=0;o<e.length;o++)n=(n+1)%256,a=(a+r[n])%256,t=r[n],r[n]=r[a],r[a]=t,W+=String.fromCharCode(e.charCodeAt(o)^r[(r[n]+r[a])%256]);return W};_0x41bd.boDORo=e,_0x41bd.RCbsUA={},_0x41bd.iqoqOt=!0}const r=t[0];_0x41bd.mRgiZx!==r&&(_0x41bd.RCbsUA={},_0x41bd.mRgiZx=r);const a=_0x41bd.RCbsUA[e];return void 0===a?(void 0===_0x41bd.mPgSGJ&&(_0x41bd.mPgSGJ=!0),n=_0x41bd.boDORo(n,o),_0x41bd.RCbsUA[e]=n):n=a,n}import{playHaptic,HapticType}from"../../services/HapticsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{useIsGameOver,useIsWon,useIsPlaying,useGame2048Store}from"./Game2048Store.js";import{setGameInterval,clearGameInterval}from"../../helpers/GameTimer.js";import{jsx as _0x1d89ec,jsxs as _0x42fd03}from"react/jsx-runtime";export const Game2048=({settings:e,onSettingsChange:o,onEndGame:t,onReplayGame:n,onShare:r,onShareScreenshot:a,onShowLeaderboard:W,bannerAd:s})=>{const d="utWP",m="L4Fb",u=_0x41bd,i={QOsMQ:function(e){return e()},exOpu:u(336,"LM(!"),zkSAd:function(e,o,t){return e(o,t)},rvgio:function(e,o,t){return e(o,t)},HQaDJ:u(303,"p4zU"),XwfQE:u(270,"2!^0"),erutn:function(e){return e()},IcXDh:function(e,o){return e(o)},UQGac:function(e,o){return e(o)},gmfhS:function(e,o,t){return e(o,t)},OsSiz:function(e,o,t){return e(o,t)},OlQrt:function(e,o,t){return e(o,t)},wqTAg:function(e,o,t){return e(o,t)}},S=useIsGameOver(),f=useIsWon(),k=i[u(321,"2!^0")](useIsPlaying),C=useRef(!1),l=i[u(300,"e0%i")](useRef,null);useEffect(()=>{const e=u,o={hqDda:function(e){return i[_0x41bd(316,"RZ^X")](e)},fHuqD:function(e,o){return e(o)},USgwE:function(e,o,t){return e(o,t)}};C[e(350,"]FUR")]=useGame2048Store[e(287,"8!pm")]().isPlaying;const t=useGame2048Store[e(262,"ccn!")](o=>o[e(334,"o%9J")],t=>{const n=e;"wWMIi"!==n(359,"8!pm")?(C[n(344,"R9(E")]=t,t?(l.current&&clearGameInterval(l[n(278,"(#[#")]),l[n(348,"Yc0F")]=o[n(351,"]FUR")](setGameInterval,()=>{useGame2048Store[n(301,"n9V!")]().decrementTime()},1e3)):l[n(276,"ccn!")]&&(clearGameInterval(l[n(306,"ZEn^")]),l[n(258,"DvQ3")]=null)):(o.hqDda(_0x24f7a9),_0x5c0f16[n(365,"O8eo")]&&(o[n(272,")W8(")](_0x2812fa,_0x21bb68[n(333,"$aKI")]),_0x335897[n(367,"JYnH")]=null))});return()=>{const o=e;t(),l[o(333,"$aKI")]&&(clearGameInterval(l[o(358,"ZN*M")]),l.current=null)}},[]);const G=useRef(!1),x=useRef(t);x[u(370,d)]=t;const p=useRef(n);p.current=n;const I=i[u(288,")W8(")](useRef,0),b=useCallback(e=>{const o=u;if(x[o(286,"LM(!")]&&!G.current){const t=useGame2048Store[o(260,"gL3h")]()[o(305,"e0%i")];x[o(293,"lJi7")]({status:e,score:t.toString()}),G[o(271,"eKm&")]=!0}},[]),h=useRef(e?.[u(307,"4s$t")]??!0);h[u(317,"rpII")]=e?.enableSounds??!0;const R=useRef(e?.[u(320,"rpII")]??!0);R[u(314,"RZ^X")]=e?.enableHaptics??!0,useEffect(()=>{const o=u;useGame2048Store[o(357,"utWP")]()[o(330,"JYnH")](e?.[o(310,"n9V!")]??!0,e?.enableHaptics??!0)},[e?.[u(325,"J&$h")],e?.enableHaptics]),useEffect(()=>{const e=u,o={QXrOX:function(e,o){return e(o)},krwWQ:i.exOpu};return useGame2048Store[e(299,"2!^0")]()[e(269,"Q7u5")](),()=>{const t=e;useGame2048Store[t(363,"J&$h")]().isPlaying&&!G[t(314,"RZ^X")]&&o[t(337,"Wqj1")](b,o[t(292,"R9(E")]),useGame2048Store.getState()[t(261,"ST2T")]()}},[b]),i[u(304,"L4Fb")](useEffect,()=>{const e=u;f&&!G.current&&(I.current=useGame2048Store[e(322,m)]()[e(295,"(3(r")],b(e(345,"p4zU"))),S&&!f&&!G[e(335,m)]&&(I[e(263,"Q7u5")]=0,b(e(296,"cVnA"))),!S&&!f&&(G[e(333,"$aKI")]=!1)},[S,f,b]);const g=i[u(268,d)](useCallback,()=>{const e=u;!C[e(333,"$aKI")]&&(playHaptic(HapticType[e(289,"TV6q")],R[e(358,"ZN*M")]),i[e(342,"(#[#")](playSound,GAME_SOUNDS[e(356,"a7P9")][e(290,")W8(")],h[e(331,"no3n")]),useGame2048Store[e(259,"ZEn^")]()[e(328,"O8eo")]())},[]),_=useCallback(()=>{const e=u;i.rvgio(playHaptic,HapticType[e(366,"Qj0m")],R.current),b(i[e(353,"eKm&")]),useGame2048Store[e(349,"Yc0F")]().resetGame()},[b]),O=i[u(267,"Yc0F")](useCallback,()=>{const e=u;p[e(367,"JYnH")]?.(),useGame2048Store[e(354,"no3n")]()[e(280,"(#[#")]()},[]),P=S||f,q=e?.[u(309,"RZ^X")]??0,H=i[u(265,"Yc0F")](useMemo,()=>({...styles[u(277,"Qj0m")],marginTop:q}),[q]),J=i.rvgio(useMemo,()=>({isPlaying:!P&&k,gameOver:P,onStartGame:g,onStopGame:_,onShare:r,onShowLeaderboard:W,startButtonSubtext:u(275,"o%9J")}),[P,k,g,_,r,W]),Q=useMemo(()=>{const e=u,o=f,t={};return t[e(297,"cVnA")]=P,t[e(291,"ZEn^")]=o?I[e(271,"eKm&")]:0,t[e(274,"R9(E")]=o?e(273,"xjC^"):e(327,"DvQ3"),t[e(361,"(3(r")]=O,t[e(294,"Qj0m")]=o?i.HQaDJ:e(284,"e0%i"),t[e(362,"8!pm")]=o?"YOU WON!":i.XwfQE,t[e(332,"Q7u5")]=o?"You reached 2048!":"You ran out of time!",t},[f,P,O]),v=useMemo(()=>({gameId:GAME_IDS[u(352,"DzYu")],settings:e||DEFAULT_GAME_SETTINGS,onSettingsChange:o}),[e,o]),y={};y.offset=q;const M={...J},A={...Q};A[u(264,"(tAV")]=a,A[u(282,"e0%i")]=s;const E={...v};return _0x42fd03(_0x55b56d,{children:[_0x1d89ec(ScoreBoard,y),_0x1d89ec(View,{style:H,children:i[u(360,"4s$t")](_0x1d89ec,GameGrid,{})}),i[u(319,"o%9J")](_0x1d89ec,GameControlButton,M),i[u(279,"RZ^X")](_0x1d89ec,GameOverModal,A),i[u(364,"]FUR")](_0x1d89ec,GameSettingsModal,E)]})};const _0x287719={};_0x287719[_0x280232(324,"JuFE")]=1,_0x287719.justifyContent=_0x280232(298,"utWP"),_0x287719.alignItems="center";const _0x2d1768={};_0x2d1768.gameArea=_0x287719;const styles=StyleSheet[_0x280232(329,"ZN*M")](_0x2d1768);Game2048.displayName=_0x280232(346,"gL3h");
1
+ "use strict";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{timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{GAME_TIME,getLayout,LIGHT}from"./Game2048Constants.js";import{createGame,dispose,drag,reset,setLayout,setTheme,start,tick}from"./Game2048Game.js";import{jsx as _0x5d103d}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.GAME_2048,FEEDBACK={move:{sound:SOUNDS.TILE_MOVE,haptic:HapticType.LIGHT},merge:{sound:SOUNDS.TILE_MERGE,haptic:HapticType.MEDIUM},invalid:{sound:SOUNDS.INVALID_MOVE,haptic:HapticType.WARNING},win:{sound:SOUNDS.WIN,haptic:HapticType.SUCCESS},stuck:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}},CARDS={win:{title:"YOU WON!",message:"You reached 1024!",label:"Score",button:"Continue Playing!"},timeout:{title:"TIME UP!",message:"You ran out of time!",label:"Time's Up!",button:"Play Again!"},stuck:{title:"NO MOVES LEFT!",message:"The board is full!",label:"Board Full!",button:"Play Again!"}};export const Game2048=engineGame(GAME_IDS.GAME_2048,e=>{const[t,s]=useLiveState(GAME_TIME),{game:i,theme:a,status:o,screen:r,gameOver:n}=useEngineGame(e,{gameId:GAME_IDS.GAME_2048,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,i)=>{const a=getLayout(t,s,i,isTablet);return setLayout(e,a),a.size+2*a.pad},drag:drag,outcome:e=>"win"===e.result?"win":"lose",sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SELECTION),onStop:e=>e(null,HapticType.SELECTION),onOver:(e,t,s)=>{"timeout"===s.result&&e(SOUNDS.TIME_UP,HapticType.ERROR)},wire:(e,t)=>{e.onTime=s,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}}),m=CARDS[i.result??"timeout"];return _0x5d103d(EngineGameScreen,{...r,light:LIGHT,columns:[timerColumn(t,a,0)],subtext:"Swipe to play",gameOver:n({title:m.title,message:m.message,scoreLabel:m.label,score:"win"===o?i.score:0,buttonText:m.button})})});
@@ -1 +1 @@
1
- "use strict";const _0x425de2=_0x57e2;!function(){const e=_0x57e2,_=_0x3155();for(;;)try{if(446579==-parseInt(e(312,"5lMn"))/1+parseInt(e(321,"Sw6("))/2*(parseInt(e(307,"[i8h"))/3)+-parseInt(e(380,"mBSC"))/4+-parseInt(e(334,"eh*Z"))/5+parseInt(e(357,"w($P"))/6*(-parseInt(e(336,"C(kv"))/7)+-parseInt(e(330,"S2DM"))/8+parseInt(e(363,"83NC"))/9)break;_.push(_.shift())}catch(e){_.push(_.shift())}}();import{BACKGROUND_COLOR,lighten,darken}from"../../services/GamesConstants.js";import{isTablet}from"../../services/UtilsService.js";const _0x5a92a3={};_0x5a92a3[_0x425de2(388,"Q&o!")]=_0x425de2(335,"xaht"),_0x5a92a3.text="#776e65";const _0x393091={background:"#ede0c8"};_0x393091[_0x425de2(295,"G^a8")]=_0x425de2(352,"6ZPx");const _0x1e8079={background:"#f2b179"};_0x1e8079[_0x425de2(384,"!Zfv")]="#f9f6f2";const _0x239bec={};_0x239bec[_0x425de2(370,")jhw")]="#f59563",_0x239bec[_0x425de2(293,"6ZPx")]="#f9f6f2";const _0x1366fb={};_0x1366fb.background=_0x425de2(348,"QfB8"),_0x1366fb[_0x425de2(294,"Wi1N")]="#f9f6f2";const _0x36d376={};_0x36d376[_0x425de2(347,"IRD]")]=_0x425de2(350,"eUr3"),_0x36d376[_0x425de2(319,"5lMn")]="#f9f6f2";const _0x2f3344={};_0x2f3344[_0x425de2(373,"QfB8")]="#edcf72",_0x2f3344[_0x425de2(309,"mBSC")]="#f9f6f2";const _0x50032f={};_0x50032f.background=_0x425de2(391,"0Yt4"),_0x50032f[_0x425de2(287,"0Yt4")]="#f9f6f2";const _0x377e9d={};_0x377e9d[_0x425de2(305,"83NC")]=_0x425de2(377,"f88*"),_0x377e9d.text="#f9f6f2";const _0x4b00bc={};_0x4b00bc[_0x425de2(304,"od*t")]="#edc53f",_0x4b00bc.text=_0x425de2(345,")jhw");const _0x423f08={};_0x423f08[_0x425de2(285,"5lMn")]=_0x425de2(392,"geZe"),_0x423f08[_0x425de2(385,"otDJ")]=_0x425de2(376,"s@8a");const _0x5f045a={};_0x5f045a[_0x425de2(305,"83NC")]=_0x425de2(326,"83NC"),_0x5f045a[_0x425de2(367,"S2DM")]=_0x425de2(365,"83NC");const _0x14389b={};_0x14389b.background=_0x425de2(341,"$nQ1"),_0x14389b[_0x425de2(387,"JcMf")]=_0x425de2(386,"@pal");const _0x37eb8a={};function _0x57e2(e,_){e-=281;const x=_0x3155();let W=x[e];if(void 0===_0x57e2.uXNjGe){const e=function(e,_){let x,W,d=[],o=0,t="";for(e=function(e){let _="",x="";for(let x,W,d=0,o=0;W=e.charAt(o++);~W&&(x=d%4?64*x+W:W,d++%4)?_+=String.fromCharCode(255&x>>(-2*d&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let e=0,W=_.length;e<W;e++)x+="%"+("00"+_.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(x)}(e),W=0;W<256;W++)d[W]=W;for(W=0;W<256;W++)o=(o+d[W]+_.charCodeAt(W%_.length))%256,x=d[W],d[W]=d[o],d[o]=x;W=0,o=0;for(let _=0;_<e.length;_++)W=(W+1)%256,o=(o+d[W])%256,x=d[W],d[W]=d[o],d[o]=x,t+=String.fromCharCode(e.charCodeAt(_)^d[(d[W]+d[o])%256]);return t};_0x57e2.mlposn=e,_0x57e2.hXltER={},_0x57e2.uXNjGe=!0}const d=x[0];_0x57e2.dolqUX!==d&&(_0x57e2.hXltER={},_0x57e2.dolqUX=d);const o=_0x57e2.hXltER[e];return void 0===o?(void 0===_0x57e2.pRotfk&&(_0x57e2.pRotfk=!0),W=_0x57e2.mlposn(W,_),_0x57e2.hXltER[e]=W):W=o,W}_0x37eb8a[2]=_0x5a92a3,_0x37eb8a[4]=_0x393091,_0x37eb8a[8]=_0x1e8079,_0x37eb8a[16]=_0x239bec,_0x37eb8a[32]=_0x1366fb,_0x37eb8a[64]=_0x36d376,_0x37eb8a[_0x425de2(351,"6ZPx")]=_0x2f3344,_0x37eb8a[256]=_0x50032f,_0x37eb8a[512]=_0x377e9d,_0x37eb8a[1024]=_0x4b00bc,_0x37eb8a[_0x425de2(362,"geZe")]=_0x423f08,_0x37eb8a[_0x425de2(329,"xaht")]=_0x5f045a,_0x37eb8a[8192]=_0x14389b;const _0x528559={};_0x528559[_0x425de2(364,"wwNH")]=BACKGROUND_COLOR,_0x528559[_0x425de2(369,"geZe")]=_0x425de2(346,"ga&a"),_0x528559[_0x425de2(297,"Sw6(")]=_0x37eb8a,_0x528559[_0x425de2(283,"f88*")]="#5c4033",_0x528559[_0x425de2(394,"ga&a")]="#4a3228",_0x528559[_0x425de2(344,"ITZ4")]=_0x425de2(301,"otDJ"),_0x528559.BOARD_HIGHLIGHT=_0x425de2(310,"otDJ"),_0x528559.CELL_BG=_0x425de2(390,")jhw"),_0x528559.GAME_WIN_OVERLAY=_0x425de2(354,"IRD]");export const GAME_2048_COLORS=_0x528559;const TILE_3D_CACHE=new Map,TILE_VALUES_TO_PRECOMPUTE=[2,4,8,16,32,64,128,256,512,1024,2048,4096,8192];for(const e of TILE_VALUES_TO_PRECOMPUTE){const _=GAME_2048_COLORS[_0x425de2(291,"NQqa")],x=(_[e]||_[8192])[_0x425de2(389,"jAR]")];TILE_3D_CACHE[_0x425de2(355,"Sw6(")](e,{top:x,topHighlight:lighten(x,.3),front:darken(x,.08),frontBottom:darken(x,.2),side:darken(x,.14),text:(_[e]||_[8192])[_0x425de2(374,"9Ju4")]})}export const getTile3DColors=e=>{const _=_0x425de2,x={RSbGK:function(e,_,x){return e(_,x)},DeeNA:function(e,_,x){return e(_,x)}},W=TILE_3D_CACHE[_(302,"w($P")](e);if(W)return W;const d="#3c3a32",o={top:d,topHighlight:x[_(322,"$nQ1")](lighten,d,.3),front:x[_(356,"hH)r")](darken,d,.08),frontBottom:x.DeeNA(darken,d,.2),side:darken(d,.14),text:_(376,"s@8a")};return TILE_3D_CACHE[_(331,"R[5F")](e,o),o};const _0x214c18={};_0x214c18[_0x425de2(327,"ITZ4")]=isTablet?10:8,_0x214c18[_0x425de2(303,"geZe")]=isTablet?10:8,_0x214c18[_0x425de2(320,")jhw")]=isTablet?16:12,_0x214c18[_0x425de2(296,"!Zfv")]=isTablet?5:4;export const BOARD_3D=_0x214c18;const _0xe4280c={};_0xe4280c[_0x425de2(306,"K21R")]=5,_0xe4280c[_0x425de2(332,"jAR]")]=58,_0xe4280c[_0x425de2(372,"ga&a")]=6,_0xe4280c[_0x425de2(337,"lw3u")]=6,_0xe4280c[_0x425de2(323,"Q&o!")]=50,_0xe4280c[_0x425de2(366,"Sw6(")]=30,_0xe4280c[_0x425de2(317,"kROa")]=50,_0xe4280c[_0x425de2(361,"IRD]")]=2,_0xe4280c.NEW_TILE_PROBABILITY_4=.1,_0xe4280c[_0x425de2(292,"MvGb")]=5,_0xe4280c[_0x425de2(308,"$nQ1")]=2048,_0xe4280c[_0x425de2(393,"s@8a")]=1200;export const GAME_2048_SETTINGS=_0xe4280c;const _0x52a6c6={};_0x52a6c6[_0x425de2(371,"lw3u")]=50,_0x52a6c6.MAX_SWIPE_TIME=300,_0x52a6c6.MIN_VELOCITY=.5;export const GAME_2048_GESTURES=_0x52a6c6;const tileColorCache=new Map;export const getTileColor=e=>{const _=_0x425de2,x={};x[_(342,"MvGb")]=function(e,_){return e===_},x[_(313,"5lMn")]="rgba(238, 228, 218, 0.35)";const W=x;if(tileColorCache.has(e))return tileColorCache[_(353,"hH)r")](e);let d;if(W[_(368,"NQqa")](e,0)){const e={};e[_(340,"wwNH")]=W[_(300,"0Yt4")],e[_(379,"hH)r")]=_(288,"9Ju4"),d=e}else{const x=GAME_2048_COLORS[_(375,"CcIi")];d=x[e]||x[8192]}return tileColorCache[_(281,"IRD]")](e,d),d};function _0x3155(){const e=["Dv9JW75ZW5ZdPZHNra","sCkSW5LDANWW","WPaZWPioAG","WO4rWRhdSJBdGq","W57cRIPmCSkqW5ZcShSjoG","WPvqaSkAW7NcHCk1","W6VcO297ktXuW71pW7BdPwaFW4BcPJbyyaRdTCotW53cHCkYpG","WQCCWOlcQKbaW7JdIg3cHG","tNXoW5rgWOtcNW","hKuIWQquWPddLG","W6RcTCkRwshcJfW","W5zqpW","W4rvmmonrYTP","wSoUhq","WRCAWOpcOa8aWQtcII/dGSk+W4hdNq3cSCkIWRv3WRNdOKRdL8kfbq","urVdOq","B8oycY49","W6FdUSobWOX1W63dSmo+Et0","iLFdTZ05sdLoW6y","meZdSJSYuJ9A","W79EF8k2WQu","WOWZWQJcLw5ZW5VdOLFcQ8odWR3cUG","W6S2xsu","l8oJWRS8j8kOr8k3vaGLlKRcNW","vx9dW55tW7ZdHXHhza","pCkXWRnSkCo6rG","BZVdH2VcNK5yW4ifWQech2hcINLSWQTSaZaTW7aoW4C","WOpdOwVdLG","W5JcSqWDAG","WP5uifNcVmoKW6yLhgRcUq8Vemo3","W5rxwmkxWQJcKCoOhezb","W59qndvbWPFdOSkhWOGsA3pdNGVcOmkMeSkN","W43cJufFxKmGWPOKWP/cMq","d3SBWOHcW4pcLKddKmoe","W7xdQCoZW7q","W7vQWRdcK21MW5RcG8o3W49M","W4u/W6hcGSogrum","EmoAxrayW5ZcRW","WQ1VbxJcSmopW50d","sCoUer0","WPtcKKLewSktWO7cICogy8o/W7CN","DJFdMwNcHfXyW54lWQun","W5tcSfddO0NdNCkk","WOBcNmopcSoBW7LrW6VcPciZW547kmoOW6C","wCkOW7ZdJa","WPrWWOCz","W4awW7RdS2NdICop","WP1xW57dMq","WOdcVSkwWQiSFsyIWR16","WOG6k2/dNCo+iIb4W4a","W4rrwCkDW6FdK8kRsrGjW7vmWPddGtPKlNhdMW","WRZdPCo2sCosW5/dPq","W7PJdx7dKCkuW4i","WQeyWPxcOCkVDZGKsq","W5VcI0XirveNWPOSWPJcGW","WRyyWPu","W5vtn8oiAeW6WRO7Ca","gCoWEcfKWRBdI1JcSq","WOiAWR/dPavNWQu","nG53ja0GhN/dQmkM","WOieWQaDE2NcHSoc","W6VdPCoQxG","WQlcU8k8WRyjW5yi","WP5uifNcVmo1W648eG","WPytW4RcRMHFW5lcPSoZ","W6RcOce/vSohiCk4iHVcGG","WQuOWRW7tf/cPCoWW5hcSYNcISoRWPuBWP0","WPmhF8kp","srbQWPi","WRpcT8o+mW","ECkeW4JdVCkEW5W4WOHZaa","DJFdMwNcHfjwW4adWR4q","FLhdTmk5WOndW64","W5TVEtlcGSk4FMXYW63dRs3dS8oj","W47dMSoZECoN","W4mMWP5FzgCk","WRhcRmkf","WOLhlvNcQSoOW6a","lGldPCojW6dcOmo6WO0oW4m","Fmk2W6LHEmoUg8o7xIu","W5RcG8kwdCovxXxdSxG","W5/dJKmUtt/cOSkiW6GZ","pSoEW6GPtHTDW4ddIY/dNa","W5ldGaug","W4mIWP5ymgih","WQ7dLL8Oa8o6WQFcQM8QbZ7dQG","z1WIEvO5efpdJ8kgWR0","btv1hdW","W6O1xYVdK8onW4y/hMNcSW","wGD7WOieWR3cMmok","WRNcTJ9ywd3cJCk0W4e","W6VdVmkiBSkPcxtcTuRdTMXcWR7dLdrQW4uOW7rDWR9mWQpcGG","W6y7WQFdTbaaWQu","iaPSoW","W6r3F8k1WPRcSa","fu7cO1tcGwTEW6uh","omomW5GPqa","WQpcKCk8WOqkwWayWP1bcSoXWOFcONLTiXW","WQVcKCk8WP0ctGuiWODxaSoHWOy","ESo8sSkZkMZdTW","pCoKW6K5FSkVrG","W5JcPdTkFG","WQtdPmoMoSoWzYtdG0W","W57cUxHc","W4tcSIpcLd/dKmkkouytWOnzWP4","WRvGWO4","WR4sbehdPCoFba9t","WRddLLRdPLdcU8oZoxa","WOyTyXL8tfBcRtNcJCo8ma","W4NdRcqrgCktFa","tYVcGGSCCaH8W5i","W4zqnI9nWOldPmkfWOKiFwxdNX7cPCkHbmkX","k3KbWPbx","rsJcI05wi0boW5ddHWLzW4i"];return(_0x3155=function(){return e})()}export const formatScore=e=>{const _=_0x425de2;return e>=1e6?{Fcysr:function(e,_){return e/_}}[_(338,"QfB8")](e,1e6).toFixed(1)+"M":e>=1e3?(e/1e3)[_(325,"2f5@")](1)+"K":e[_(286,"MvGb")]()};export const BACKGROUND_TILE_COLORS=["#E91E63","#F44336",_0x425de2(318,"IRD]"),"#FF9800","#FFC107",_0x425de2(298,"%&$$"),_0x425de2(382,"S2DM"),"#009688",_0x425de2(349,"Wi1N"),"#2196F3","#3F51B5",_0x425de2(284,"CcIi")];const _0x5ea724={TENSION:200};_0x5ea724[_0x425de2(359,"C(kv")]=10;const _0x528c46={};_0x528c46[_0x425de2(289,"geZe")]=5,_0x528c46[_0x425de2(324,"Q&o!")]=2,_0x528c46.NEW_TILE_PROBABILITY_4=.1,_0x528c46[_0x425de2(316,"[i8h")]=58,_0x528c46[_0x425de2(381,"Sw6(")]=6,_0x528c46.GAME_TIME=1200,_0x528c46[_0x425de2(383,"G^a8")]=_0x5ea724;export const GAME_CONFIG=_0x528c46;export const getGridDimensions=()=>{const e=_0x425de2,_={};_[e(360,")jhw")]=function(e,_){return e*_};const x=_,W=GAME_2048_SETTINGS[e(333,"S2DM")],d=GAME_2048_SETTINGS[e(358,"C(kv")],o=GAME_2048_SETTINGS.TILE_MARGIN,t=d*W+x.IhDJj(o,W+1),n={};return n[e(315,"Wi1N")]=W,n[e(378,"geZe")]=d,n[e(343,"@pal")]=o,n.totalSize=t,n};
1
+ "use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GAME_TIME=900;export const MIN_SWIPE=50;export const SLIDE_TIME=.11;export const MERGE_POP=1.18;const TILES={2:["#eee4da","#776e65"],4:["#ede0c8","#776e65"],8:["#f2b179","#f9f6f2"],16:["#f59563","#f9f6f2"],32:["#f67c5f","#f9f6f2"],64:["#f65e3b","#f9f6f2"],128:["#edcf72","#f9f6f2"],256:["#edcc61","#f9f6f2"],512:["#edc850","#f9f6f2"],1024:["#edc53f","#f9f6f2"],2048:["#edc22e","#f9f6f2"],4096:["#3c3a32","#f9f6f2"]};export const tileColors=t=>TILES[t]??TILES[4096];export const COLORS={FRAME:"#5c4033",SLOT:"#3d2a1f"};export const TILT=0;export const LIGHT=frontLight([0,0,1],1);export const TILE_HEIGHT=.4;const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=120;export function getLayout(t,e,o,f){const r=f?10:8,n=getScoreBoardTop(o)+82,s=Math.max(180,e-n-120),i=Math.max(180,Math.min(gameWidthFor(t),s/Math.cos(0)-30)),p=Math.floor((i-2*r-18)/5);return{width:t,height:e,tilt:0,centerY:n+s/2,tile:p,gap:3,pitch:p+3,pad:r,size:5*p+18}}export const cellCentre=(t,e,o)=>[(o-2)*t.pitch,(2-e)*t.pitch];
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{aimTilted}from"../shared/EngineTilt.js";import{GAME_TIME,MIN_SWIPE}from"./Game2048Constants.js";import{addRandomTile,emptyGrid,moveTiles,reached,stuck,tilesOf}from"./Game2048Rules.js";import{buildScene,bump,celebrate,dim,removeScene,resetTiles,setSceneTheme,slideTiles}from"./Game2048Scene.js";const WORLD_CAPACITY=400;function freshGrid(){const e=emptyGrid();return addRandomTile(e,1),addRandomTile(e,2),{grid:e,nextId:3}}export function createGame(e){const r=new World(400),{grid:o,nextId:t}=freshGrid(),n={world:r,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",grid:o,nextId:t,result:null,get score(){return r.scoreboard.score},get timeLeft(){return r.scoreboard.shownSeconds},press:null,onPhase:e=>{},onTime:e=>{},onEvent:e=>{}};return r.scoreboard.reset(0,GAME_TIME),r.scoreboard.handlers={onSecond:e=>n.onTime(e),onTimeUp:()=>"playing"===n.phase&&end(n,"timeout")},n}export function setLayout(e,r){e.scene&&removeScene(e.world,e.scene),e.layout=r,aimTilted(e.camera,r),e.scene=buildScene(e.world,r,e.theme,tilesOf(e.grid)),"over"===e.phase&&"win"!==e.result&&dim(e.world,e.scene)}export function setTheme(e,r){e.theme=r,e.layout&&e.scene&&setSceneTheme(e.world,e.layout,e.scene,r)}export function start(e){"ready"===e.phase&&(e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(GAME_TIME),e.result=null,e.phase="playing",e.onTime(GAME_TIME),e.onPhase("playing"))}export function reset(e){const{grid:r,nextId:o}=freshGrid();e.grid=r,e.nextId=o,e.result=null,e.world.scoreboard.reset(0,GAME_TIME),e.press=null,e.phase="ready",e.layout&&e.scene&&resetTiles(e.world,e.layout,e.scene,tilesOf(r)),e.onTime(GAME_TIME),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,r){e.world.isDisposed||e.world.update(r)}function end(e,r){e.world.scoreboard.stop(),e.result=r,e.phase="over",e.press=null,e.layout&&e.scene&&("win"===r?celebrate(e.world,e.layout,e.scene):dim(e.world,e.scene)),e.onPhase("over")}export function move(e,r){if("playing"!==e.phase)return;const{moved:o,score:t,ghosts:n}=moveTiles(e.grid,r),{layout:s,scene:d}=e;if(!o)return s&&d&&bump(e.world,s,d),void e.onEvent("invalid");addRandomTile(e.grid,e.nextId++);const i=reached(e.grid),l=stuck(e.grid);s&&d&&slideTiles(e.world,s,d,tilesOf(e.grid),n),e.onEvent("move"),t>0&&e.onEvent("merge"),i?(e.world.scoreboard.set(calculateTimeBasedScore(e.timeLeft,GAME_TIME,0)),e.onEvent("win"),end(e,"win")):l&&(e.onEvent("stuck"),end(e,"stuck"))}export function drag(e,{phase:r,dx:o,dy:t}){if("start"===r)return void(e.press={swiped:!1});const n=e.press;if(!n||n.swiped)return;const s=Math.abs(o),d=Math.abs(t);let i=null;s>d&&s>MIN_SWIPE?i=o>0?"right":"left":d>MIN_SWIPE&&(i=t>0?"down":"up"),"end"===r&&(e.press=null),i&&(n.swiped=!0,move(e,i))}
@@ -0,0 +1 @@
1
+ "use strict";export const GRID=5;export const TARGET=1024;const FOUR_CHANCE=.1;export const emptyGrid=()=>Array.from({length:5},()=>Array(5).fill(null));export function addRandomTile(o,t){let e=0;for(const t of o)for(const o of t)o||e++;if(!e)return null;let l=Math.floor(Math.random()*e),r=0,n=0;o:for(let t=0;t<5;t++)for(let e=0;e<5;e++)if(!o[t][e]&&0===l--){r=t,n=e;break o}const u={id:t,value:Math.random()<.1?4:2,row:r,col:n};return o[r][n]=u,u}export function moveTiles(o,t){let e=!1,l=0;const r=[],n="left"===t||"right"===t,u="right"===t||"down"===t,s=emptyGrid();for(let t=0;t<5;t++){const f=[];for(let e=0;e<5;e++){const l=u?4-e:e,r=n?o[t][l]:o[l][t];r&&f.push(r)}const a=[],i=[];for(let o=0;o<f.length;){const t=f[o],e=f[o+1];if(e&&t.value===e.value){const r={...t,value:2*t.value};a.push(r),i.push(e),l+=r.value,o+=2}else a.push(t),i.push(null),o++}for(;a.length<5;)a.push(null);for(let l=0;l<5;l++){const f=a[l],p=u?4-l:l,h=n?t:p,v=n?p:t;(f!==(n?o[t][p]:o[p][t])||f&&(f.row!==h||f.col!==v))&&(e=!0);const d=i[l];d&&r.push({id:d.id,value:d.value,fromRow:d.row,fromCol:d.col,toRow:h,toCol:v}),s[h][v]=f?{...f,row:h,col:v}:null}}for(let t=0;t<5;t++)for(let e=0;e<5;e++)o[t][e]=s[t][e]??null;return{moved:e,score:l,ghosts:r}}export function stuck(o){for(let t=0;t<5;t++)for(let e=0;e<5;e++){const l=o[t][e];if(!l)return!1;if(e<4&&o[t][e+1]?.value===l.value)return!1;if(t<4&&o[t+1][e]?.value===l.value)return!1}return!0}export const reached=(o,t=1024)=>o.some(o=>o.some(o=>null!==o&&o.value>=t));export const tilesOf=o=>o.flatMap(o=>o.filter(o=>null!==o));
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,Path}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{spawnRaisedBlock}from"../shared/EngineBlocks.js";import{flatGlyphMesh,GLYPH_ADVANCE}from"../shared/EngineGlyphs.js";import{cacheGameAsset,createGameMesh as _0x1972ef}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{cellCentre,COLORS,MERGE_POP,SLIDE_TIME,TILE_HEIGHT,tileColors}from"./Game2048Constants.js";import{GRID}from"./Game2048Rules.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("game-2048/Game2048Scene:"+e,o),meshes.set(e,t)),t},BOARD_DEPTH=12,BACKDROP_DEPTH=30,SURFACE=1,SPAWN_FROM=.2,panelMesh=(e,o,t)=>cached("g2048-panel:"+e+":"+o+":"+t,()=>_0x1972ef(extrude((new Path).addRoundedRect(-e/2,-e/2,e,e,o),{depth:t}),{shine:0})),at=(e,o,t)=>{const[s,a]=cellCentre(e,o,t);return[s,a,1]};function spawnBoard(e,o,t){const s=[],a=o=>s.push(e.spawn({pickable:!1,...o})),i="classic"===t.mode;a({mesh:panelMesh(o.size+2*o.pad,i?14:8,12),position:[0,0,-6],color:toColor(i?COLORS.FRAME:t.BOARD.SURFACE)});for(let e=0;e<GRID;e++)for(let s=0;s<GRID;s++){const[n,r]=cellCentre(o,e,s);a({mesh:panelMesh(o.tile,Math.min(8,.12*o.tile),1),position:[n,r,.5],color:toColor(i?COLORS.SLOT:t.BOARD.CELL_EMPTY)})}return s}function spawnDigits(e,o,t,s){const a=String(s),i=a.length,n=o.tile*(i<=2?.29:3===i?.24:4===i?.19:.155),r=n*GLYPH_ADVANCE,l=toColor(tileColors(s)[1]),p=o.tile*TILE_HEIGHT+.6;return[...a].map((o,s)=>e.spawn({mesh:flatGlyphMesh(o),parent:t,position:[(s-(i-1)/2)*r,0,p],scale:n,color:l,pickable:!1}))}function spawnTile(e,o,t){const s=o.tile*TILE_HEIGHT,a=e.spawn({mesh:"none",position:at(o,t.row,t.col),pickable:!1});return{root:a,block:spawnRaisedBlock(e,{parent:a,position:[0,0,s/2],size:[o.tile,o.tile,s],color:toColor(tileColors(t.value)[0]),gloss:!1,shadow:!1}),digits:spawnDigits(e,o,a,t.value),value:t.value,row:t.row,col:t.col}}export function buildScene(e,o,t,s){const a=spawnBackdrop(e,o.width,o.height,-30,t);placeTiltedBackdrop(e,a,o,30);const i={backdrop:a,board:spawnBoard(e,o,t),tiles:new Map};for(const t of s)i.tiles.set(t.id,spawnTile(e,o,t));return i}export function removeScene(e,o){for(const t of[o.backdrop,...o.board,...Array.from(o.tiles.values(),e=>e.root)])e.despawn(t)}export function setSceneTheme(e,o,t,s){setBackdropTheme(e,t.backdrop,s);for(const o of t.board)e.despawn(o);t.board=spawnBoard(e,o,s)}export function resetTiles(e,o,t,s){for(const o of t.tiles.values())e.despawn(o.root);t.tiles.clear();for(const a of s)grow(e,t,a,spawnTile(e,o,a),0)}function grow(e,o,t,s,a){o.tiles.set(t.id,s),e.set(s.root,{scale:.2}),e.animate(s.root,{scale:1},{duration:.18,delay:a,easing:"back"})}export function slideTiles(e,o,t,s,a){for(const s of a){const a=t.tiles.get(s.id);a&&(t.tiles.delete(s.id),e.animate(a.root,{position:at(o,s.toRow,s.toCol)},{duration:SLIDE_TIME,easing:"easeOut"}).then(()=>{e.has(a.root)&&e.despawn(a.root)}).catch(()=>{}))}for(const a of s){const s=t.tiles.get(a.id);if(s){if((s.row!==a.row||s.col!==a.col)&&(e.animate(s.root,{position:at(o,a.row,a.col)},{duration:SLIDE_TIME,easing:"easeOut"}),s.row=a.row,s.col=a.col),s.value!==a.value){for(const o of s.digits)e.despawn(o);s.digits=spawnDigits(e,o,s.root,a.value),s.value=a.value,e.animate(s.block,{color:toColor(tileColors(a.value)[0])},{duration:.08,delay:.6*SLIDE_TIME}),e.animate(s.root,[{scale:MERGE_POP,at:.35},{scale:1}],{duration:.22,delay:SLIDE_TIME,easing:"easeOut"})}}else grow(e,t,a,spawnTile(e,o,a),SLIDE_TIME)}}export function bump(e,o,t){e.animate(Array.from(t.tiles.values(),e=>e.root),{shake:.04*o.tile},{duration:.2})}export function celebrate(e,o,t){for(const s of t.tiles.values()){const[t,a,i]=at(o,s.row,s.col);e.animate(s.root,[{position:[t,a,i+.3*o.tile],scale:1.05,at:.4},{position:[t,a,i],scale:1}],{duration:.45,delay:SLIDE_TIME+.15+.05*(s.row+s.col),easing:"easeOut"})}effects.confetti(e,{position:[0,0,o.tile],count:70,size:.1*o.tile,speed:1.4*o.size,lifetime:1.3,gravity:2.4*-o.size,colors:["#edc22e","#f67c5f","#f2b179","#FFFFFF"].map(e=>toColor(e))})}export function dim(e,o){for(const t of o.tiles.values()){const o=toColor(tileColors(t.value)[0]);e.animate(t.block,{color:[.55*o[0],.55*o[1],.6*o[2],1]},{duration:.4,delay:SLIDE_TIME})}}
@@ -1 +1 @@
1
- "use strict";const _0x76f1b9=_0x316f;!function(){const e=_0x316f,t=_0x36db();for(;;)try{if(505887==parseInt(e(312,"BmUZ"))/1+parseInt(e(347,"%l7@"))/2*(-parseInt(e(302,"1tO1"))/3)+-parseInt(e(352,"!PHv"))/4*(parseInt(e(266,"DS*t"))/5)+-parseInt(e(383,"Kk)r"))/6+-parseInt(e(338,"gQXh"))/7+parseInt(e(313,"6]wc"))/8*(-parseInt(e(389,"3p(]"))/9)+parseInt(e(329,"0@uL"))/10)break;t.push(t.shift())}catch(e){t.push(t.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x2cf311 from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x2c03aa}from"../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from"../../services/UtilsService.js";function _0x316f(e,t){e-=258;const o=_0x36db();let W=o[e];if(void 0===_0x316f.FwFMUs){const e=function(e,t){let o,W,n=[],r=0,a="";for(e=function(e){let t="",o="";for(let o,W,n=0,r=0;W=e.charAt(r++);~W&&(o=n%4?64*o+W:W,n++%4)?t+=String.fromCharCode(255&o>>(-2*n&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let e=0,W=t.length;e<W;e++)o+="%"+("00"+t.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(o)}(e),W=0;W<256;W++)n[W]=W;for(W=0;W<256;W++)r=(r+n[W]+t.charCodeAt(W%t.length))%256,o=n[W],n[W]=n[r],n[r]=o;W=0,r=0;for(let t=0;t<e.length;t++)W=(W+1)%256,r=(r+n[W])%256,o=n[W],n[W]=n[r],n[r]=o,a+=String.fromCharCode(e.charCodeAt(t)^n[(n[W]+n[r])%256]);return a};_0x316f.LsdutS=e,_0x316f.sbIMZz={},_0x316f.FwFMUs=!0}const n=o[0];_0x316f.NoUtlO!==n&&(_0x316f.sbIMZz={},_0x316f.NoUtlO=n);const r=_0x316f.sbIMZz[e];return void 0===r?(void 0===_0x316f.fWCmfD&&(_0x316f.fWCmfD=!0),W=_0x316f.LsdutS(W,t),_0x316f.sbIMZz[e]=W):W=r,W}function _0x36db(){const e=["fSowWQdcKCox","W4HlWPOzWQjCW4xdPWe","zmoJoHZdI8kYbbZcQG","AmkXWQLogSo4W48OCCkPhq","sCoEWRGkkW8pWQv/","kCoXWR/cKSog","W482W5zwWOe2sCk5W63dOMZdUq","WPFcJSoTW4VcIs/cGuLK","WRCjuWddQsi2W47dJ8ktcmo/W5S","tSoXWQ3cRmoyW4xdSW","zmoRWOZdVq","WPdcO8k5W6/cHa","k8k9W4KZjZOS","W5D6WQCQqCk5","WQJdO0y3xa","W4f8WRakqCkXlW","rSo0Cmo1WRNdK3j2oCo7cW","W45+euBcRW","WQRdKSodW6PP","W7rBW4iRW5eznW","wcxdMdFcUa","cCoUWQNcSSo8W4BdNN7dSG","WR5uWOlcIsa","W7nwW4vGuSk+qWO","lSktEebwC8k0W4VdHmkItmkxawtdNmkUW64","tmoUmrNcOW","psGdW69vW4WJWPjYfa","W7pcLXBdTdCvW7dcQCkuidnRWQzJk2O","W7pcLXJdTHmTW6hcO8kokInuWOvJna","pCosW5FcK2KuW6ddJGC","umoYz8oeWR3dKwO","WPFcV8koW7BcTIJdLwvS","xxrZC8o4BW","zmoykGVdGW","WOqVWOjxW7hdL8k7W6y","vmkAW4JdMSkYDSkU","gSkvW5TtW6e","E8kTW43dGCkr","W7FdJmoECCkaCCkSfCkQ","FxrfWODrW6ylWO5giG","ngBcJdpdTYtdMIhdOwNdPmkCyW","AatdRZVcIYtcGWOkWQzc","c8kDW6GdarSwWQLk","yCoYWPVdT8kmW5aK","h8kzW5zAW43dNmocxW","WO7dHgiGBHSFWORcGG","WRuixGtdRvvGW6hdG8kyhW","tmochs7dR8keiJdcJa","W7FdJKfDWOS","WRlcRSosW6lcOIZcR2Pe","W7fDWOS7BW","WQZdJ8otW65nWO3dGmogW7/dI2q","W7pcSrZcNer/W5e5","W7dcUt7cKmkFeCocfSo1","dthdQHG6hY4","W5JdOmkLAvRdIq","W5ZdPmk4FKRdL2ZdO8o8lmo4","AatdRZ3cJc7cIGSF","Fmo4mbNdI8k+hW","W6bPWRy+WOL2W70","smoibWNdUSkmoda","WOXKibaZW6xcPa","W4BdS0bMWQTpf0W","AatdRZxcJYxcGa","W4xdQmoVt8kX","cmottqLyW7lcKgNdP8kwWPa","EbNdQXRcHI3cVaCEWQTnoG","W5ldR8kIFLBdHgxdMmoPjSoCW6e5fxJdVt4","q0RcHsaIWRm9","lSoZW7G+tmkKWPyyqSkRaSoVW7W","tMxdUqP/g2e","x3lcQHawfYPIAq","BtFdKvpcQW","wLFcJI08","r8ovWRVdISk7","W63cSdtcRgW","WOhcO8kfW4hcTI3dL2j/zG4","W4dcRmosW77dPZ3cIhWV","WPpcSCknW6FcMdFdNNi","oGKDWQ1i","WPTiWOBcSqj1qq","p8kPW4C1psyPWO59","ASo0WOddOW","A2JcQqCjWPKfW4xcOW","ihmI","rvjJWR5dE1W","W7z2WRyCWOzVW6hdJdrdW4i","smoPka","zLnEWP5P","p8okW67cT2W","dmoWpq8BsSorFGm","WO3cJZZdNZO","W4hdUwDrWRHkfuNdQXygsW","dCkpW6TJW5i","W5JdTmk5EfRdI30","wSkdWOfiw8oBW7upqG","rCogWQtdGmk2W7egW7VdIW","W4xcNqdcSmk0eSo2kCorWPRdMfddRa","WQVcPNnTWQNdKve","W6DmguFcUxHW","W7rCW5u4W4as","WR4lWRveW50","W4zSWQekqCkYpIJcQ8okbSoMW6S","rmkBW5xdMmkhCmkJWPxdLmkmW540WPNcSSkG","t0dcHJiPWRi","W7hdVSktWRBdPspcMu9gW77dPG","WOzdWQBcVbDaruqQ","WPldSSo/W6TPWR7dPmoTW4O","WQ3dLq7dSSko","W7pcHGpdGsiOW73cN8krlci","W4FdR3zaWRXa","dCkBW681ba8AWQHB","WQpcVSotW7xcSWxcUG","C8ofcbJcNmknW4JdVW","rCoTv8oeWQ0","aSoFWOJcMmoLkCkBWOddUmkBW5S7","sCkQWQJdRL4qW6FdVG/cRW","FSk3WR5/hSo6W5C","WOtdPWBdS8kyW6f+","r8owWQZdNshdN8oIg8oh","nSk2W7fYW63dSColCHa","yvNdJdbo","WPKVWPryW6hdMq","WORcOsdcPW9NWPaCn3lcRCkZD2y+W4qvWRVcRmkv","oX8fWOPHdIXmW5z7","t8oaWO0bWPVcNCkYcZedicGQW5G","WORdHJ3dMCkP","WQ3dUu8Csq","FSoBAtldOba+","jmkiy0zAFmkS","WRmlWR10W73dSa","W4JdOSkKEfO","WPaXW7Dnf8oSANBcQSoRkCoYW4SS","WOhdOcnUW6HAtvFcUa","wSo0rCoAWRNdHND6pW","rmoynb7dJ8k8CSkCAW","W7lcKbVdSqy","WPZcHCkPW6xcMW","y8ovdH7cKmknW5S","xwbVySo4BCoM","W5f5WQ4rua","WQmyWOHHWOrpESkPomkjgConha","WQpcSeX6WP4","gCojwZXsW7xcJetdSG","W45CW5TABG","W47dSSkUt1NdG2ZdKSoN"];return(_0x36db=function(){return e})()}import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{useKnifeHitStore,useScore,useIsPlaying,useGameOver,useGameWon}from"./KnifeHitStore.js";import{KnifeHitService}from"./KnifeHitService.js";import{KNIFE_HIT_GAME_CONFIG}from"./KnifeHitConstants.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{setGameInterval,clearGameInterval}from"../../helpers/GameTimer.js";import{jsx as _0x13c7b1,jsxs as _0x52304d}from"react/jsx-runtime";export const KnifeHit=({settings:e,onSettingsChange:t,onEndGame:o,onReplayGame:W,onShare:n,onShareScreenshot:r,onShowLeaderboard:a,bannerAd:d})=>{const s="a)zC",i="ZA#w",S="g!vE",f="1tO1",u=_0x316f,m={UoAVM:function(e,t,o){return e(t,o)},vCGTZ:"mTIXT",gmcgI:"lose",LBwiF:function(e,t){return e&&t},EuVUC:function(e){return e?.()},mwDhT:function(e){return e()},dsYmS:u(311,s),SOlXA:function(e,t){return e===t},KuYQM:function(e,t){return e(t)},VNHyA:function(e,t,o){return e(t,o)},EYtaZ:u(330,"&iPB"),zqnlp:function(e){return e?.()},hBoIT:function(e){return e()},LNMuV:function(e,t,o){return e(t,o)},JrWPC:function(e,t,o){return e(t,o)}},x=e?.[u(263,i)]??!0,_=e?.enableHaptics??!0,l=e?.[u(301,"o4a)")]??0,k=_0x2cf311[u(307,"&iPB")](x);k.current=x;const p=_0x2cf311[u(356,"0@uL")](_);p[u(291,"s&rl")]=_;const C=_0x2cf311.useRef(o);C[u(326,"dRlM")]=o;const O=useScore(),G=useIsPlaying(),R=useGameOver(),b=m[u(285,"O9[(")](useGameWon),H=_0x2cf311.useRef(!1),P=_0x2cf311[u(346,"DS*t")](e=>{const t=u;if(C[t(315,"8R8R")]&&!H[t(336,"@HYS")]){const o=useKnifeHitStore[t(366,"]dxT")]()[t(328,"s&rl")];C[t(267,"AVlw")]({status:e,score:o[t(259,"&iPB")]()}),H.current=!0}},[]),h=useKnifeHitStore(e=>e[u(381,"bjyj")]),I=useKnifeHitStore(e=>e[u(303,"g!vE")]),y=useKnifeHitStore(e=>e[u(299,"0@uL")]),M=_0x2cf311.useMemo(()=>new KnifeHitService,[]),Q=_0x2cf311[u(384,"ZA#w")](()=>{const e=u;playSound(GAME_SOUNDS[e(287,"3SvU")].THROW,k[e(326,"dRlM")]),playHaptic(HapticType[e(318,"AVlw")],p[e(258,"!EO!")])},[]),T=_0x2cf311[u(394,"OTKJ")](()=>{const e=u;playSound(GAME_SOUNDS[e(344,"7Rva")][e(393,"0@uL")],k[e(314,"DS*t")]),playHaptic(HapticType[e(319,"kM$g")],p.current)},[]),v=_0x2cf311[u(283,"7Rva")](()=>{const e=u;playSound(GAME_SOUNDS[e(280,"o4a)")][e(281,"sOmG")],k.current),playHaptic(HapticType[e(271,"c[iK")],p[e(397,"7h@I")])},[]),A=_0x2cf311.useCallback(()=>{const e=u;playSound(GAME_SOUNDS[e(317,"T388")][e(261,"bjyj")],k.current),playHaptic(HapticType[e(282,"BZ!5")],p[e(386,"c[iK")])},[]),g=_0x2cf311[u(273,"Q&!b")](()=>{const e=u;playSound(GAME_SOUNDS.KNIFE_HIT[e(278,"%l7@")],k.current),playHaptic(HapticType[e(391,"&iPB")],p[e(295,"@o9g")])},[]);_0x2cf311[u(342,"s&rl")](()=>{M[u(289,"&iPB")](Q,T,v,A,g)},[M,Q,T,v,A,g]),_0x2cf311.useEffect(()=>{const e=u,t={pwSWz:function(e){return e()}},o=useKnifeHitStore[e(364,"!PHv")](t=>t[e(332,"L%%L")],t=>{M[e(321,"%]Pe")](t)}),W=useKnifeHitStore[e(385,"%l7@")](t=>t[e(275,"Q&!b")],t=>{M[e(306,"FCRD")](t)});return()=>{const n=e;o(),t[n(290,"T388")](W)}},[M]),_0x2cf311[u(388,"hVlJ")](()=>{const e=setTimeout(()=>{M[_0x316f(367,"dRlM")]()},100);return()=>clearTimeout(e)},[M]),_0x2cf311[u(400,i)](()=>{const e=u,t={};t[e(360,"3p(]")]=function(e,t){return e!==t},t[e(276,"%]Pe")]=m.vCGTZ;const o=t;if("ZojiH"===e(341,"]dxT"))return()=>{const t=e;useKnifeHitStore[t(403,"Qrp7")]()[t(331,"a)zC")]&&!H[t(358,"0@uL")]&&P("cancel");try{o[t(305,"8R8R")]("hUIgL",t(334,"Q&!b"))?(_0x40744e(_0x2a7b4a[t(316,"e[8o")].APPLE,_0x40520f.current),XGnWRx[t(343,"!PHv")](_0x276b40,_0x2e1d2e[t(355,"%l7@")],_0x4b90d5[t(325,"MkK8")])):M[t(265,"o4a)")]()}catch{}try{o[t(333,"FCRD")]===t(323,"8R8R")?I():_0x28f082[t(382,"O9[(")](_0x405742)}catch{}};_0x2145e4(_0x4bdc6a.KNIFE_HIT[e(284,"b4oj")],_0x1ab193.current),m.UoAVM(_0x28abf1,_0x3c8fd0[e(363,"ZA#w")],_0x5304ad[e(296,"3p(]")])},[M,P,I]),_0x2cf311.useEffect(()=>{const e=u;(R||b)&&!H.current&&(b?(playSound(GAME_SOUNDS[e(350,"1tO1")],k[e(362,"gQXh")]),P("win")):(m.UoAVM(playSound,GAME_SOUNDS[e(345,"Qrp7")][e(293,"c[iK")],k.current),P(m[e(379,"T388")]))),m[e(380,"BmUZ")](!R,!b)&&(H.current=!1)},[R,b,P]),_0x2cf311[u(308,"%l7@")](()=>{const e=u;if(G&&!R)return M[e(370,"FCRD")](),()=>{const t=e,o={SjtSY:function(e){return m.EuVUC(e)}};"snuGE"===t(361,"OTKJ")?M[t(300,"BmUZ")]():(o[t(348,"!PHv")](_0x2924b6),_0x438f62[t(373,"a)zC")]=!1,_0x5e97b3[t(396,"QT&e")](),_0x40d9d7(),_0x2df7fb[t(264,"s&rl")]())}},[G,R,M]),_0x2cf311[u(340,"Fjn6")](()=>{if(!G)return;const e=setGameInterval(()=>{m.mwDhT(y)},1e3);return()=>clearGameInterval(e)},[G,y]),_0x2cf311.useEffect(()=>{const e=u;m[e(354,"Q&!b")]===e(339,"@o9g")?FOfcFM.IsgGm(_0x11525d,e(398,"s&rl")):R&&M[e(371,"FCRD")]()},[R,M]);const N=_0x2cf311.useCallback(()=>{const e=u;m[e(288,"yLEV")](e(269,"Kk)r"),e(298,"kM$g"))?(H[e(378,"BmUZ")]=!1,M.resetGame(),m[e(376,"Qrp7")](h,KNIFE_HIT_GAME_CONFIG[e(294,"QT&e")]),M.setPlaying(!0),M.setGameOver(!1),M.initializeRound(),playSound(GAME_SOUNDS[e(316,"e[8o")][e(357,"hVlJ")],k[e(386,"c[iK")]),m[e(272,"6uNM")](playHaptic,HapticType[e(401,"Qrp7")],p[e(335,"b4oj")])):_0x344010[e(402,"7Rva")]()},[M,h]),K=_0x2cf311[u(359,s)](()=>{const e=u,t=e(274,"Q&!b").split("|");let o=0;for(;;){switch(t[o++]){case"0":m[e(324,"hVlJ")](playHaptic,HapticType.MEDIUM,p[e(258,"!EO!")]);continue;case"1":I();continue;case"2":playSound(GAME_SOUNDS[e(304,"OTKJ")][e(372,"6]wc")],k[e(336,"@HYS")]);continue;case"3":M[e(303,"g!vE")]();continue;case"4":P(e(375,"@HYS"));continue}break}},[M,I,P]),E=_0x2cf311.useCallback(()=>{const e=u,t=m[e(286,"6]wc")][e(337,"0@uL")]("|");let o=0;for(;;){switch(t[o++]){case"0":H[e(309,f)]=!1;continue;case"1":M[e(392,f)]();continue;case"2":M[e(367,"dRlM")]();continue;case"3":m[e(270,"o4a)")](W);continue;case"4":I();continue}break}},[M,I,W]),U={..._0x2cf311.useMemo(()=>({isPlaying:G,gameOver:R,onStartGame:N,onStopGame:K,onShare:n,onShowLeaderboard:a,startButtonSubtext:u(320,"yLEV")}),[G,R,N,K,n,a])},B={..._0x2cf311[u(260,"ZA#w")](()=>({isVisible:R,score:O,onPlayAgain:E,buttonText:"Throw Again!",title:b?u(377,"kM$g"):u(292,"DS*t"),message:b?"All knives stuck!":"Hit another knife!"}),[R,O,E,b])};B[u(277,S)]=r,B[u(387,"T388")]=d;const F={};return F[u(327,"kM$g")]=GAME_IDS.KNIFE_HIT,F[u(310,"b4oj")]=e||DEFAULT_GAME_SETTINGS,F.onSettingsChange=t,m.UoAVM(_0x13c7b1,GestureHandlerRootView,{style:styles[u(390,"Qrp7")],children:m[u(368,"b4oj")](_0x52304d,_0x2c03aa,{offset:l,children:[_0x13c7b1(GameArea,{gameService:M,offset:l}),_0x13c7b1(ScoreBoard,{offset:l}),m[u(365,S)](_0x13c7b1,GameControlButton,U),_0x13c7b1(GameOverModal,B),_0x13c7b1(GameSettingsModal,F)]})})};const _0xc8a5ad={};_0xc8a5ad[_0x76f1b9(279,"e[8o")]=1,_0xc8a5ad.backgroundColor=BACKGROUND_COLOR;const _0x105ac7={};_0x105ac7[_0x76f1b9(353,"c[iK")]=1;const _0x32da3c={};_0x32da3c[_0x76f1b9(374,"Q&!b")]=_0xc8a5ad,_0x32da3c[_0x76f1b9(399,"s&rl")]=_0x105ac7;const styles=StyleSheet[_0x76f1b9(297,"gQXh")](_0x32da3c);KnifeHit[_0x76f1b9(262,"Fjn6")]=_0x76f1b9(395,"6uNM");
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,textColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,KNIVES_PER_ROUND,LIGHT,TIME_LIMIT}from"./KnifeHitConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,throwKnife,tick}from"./KnifeHitGame.js";import{jsx as _0x17b129}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.KNIFE_HIT,FEEDBACK={throw:{sound:SOUNDS.THROW,haptic:HapticType.LIGHT},stick:{sound:SOUNDS.STICK,haptic:HapticType.MEDIUM},apple:{sound:SOUNDS.APPLE,haptic:HapticType.SUCCESS},clash:{sound:SOUNDS.HIT,haptic:HapticType.ERROR}};export const KnifeHit=engineGame(GAME_IDS.KNIFE_HIT,e=>{const[t,s]=useLiveState(0),[i,r]=useLiveState(TIME_LIMIT),[n,o]=useLiveState(KNIVES_PER_ROUND),{theme:a,status:S,screen:m,gameOver:E}=useEngineGame(e,{gameId:GAME_IDS.KNIFE_HIT,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,i)=>{const r=getLayout(t,s,i);return setLayout(e,r),r.gameWidth},drag:(e,t)=>{"start"===t.phase&&throwKnife(e)},sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),onOver:(e,t)=>e("win"===t?GAME_SOUNDS.WELL_DONE:SOUNDS.GAME_OVER,"win"===t?HapticType.SUCCESS:HapticType.ERROR),wire:(e,t)=>{e.onScore=s,e.onTime=r,e.onKnives=o,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0x17b129(EngineGameScreen,{...m,light:LIGHT,columns:[scoreColumn(t),textColumn("KNIVES",n),timerColumn(i,a)],subtext:"Tap to throw knives!",gameOver:E({title:"win"===S?"PERFECT!":"GAME OVER",message:"win"===S?"All knives stuck!":"Hit another knife!",scoreLabel:"Final Score",score:t,buttonText:"Throw Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x27fe94=_0x358a;!function(){const W=_0x358a,_=_0x3fb0();for(;;)try{if(609085==-parseInt(W(182,"P%5$"))/1*(parseInt(W(225,"HgBY"))/2)+parseInt(W(172,"Ur%T"))/3*(parseInt(W(222,"GL!u"))/4)+-parseInt(W(209,"Y]ig"))/5*(parseInt(W(220,"Ur%T"))/6)+-parseInt(W(185,"ds(v"))/7+-parseInt(W(240,"B@n^"))/8*(parseInt(W(213,"GL!u"))/9)+-parseInt(W(195,"(8mu"))/10*(parseInt(W(221,"]UOU"))/11)+-parseInt(W(234,"(8mu"))/12*(-parseInt(W(198,"qU]p"))/13))break;_.push(_.shift())}catch(W){_.push(_.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions,isTablet}from"../../services/UtilsService.js";const{width:GAME_WIDTH}=getGameDimensions();export const GRID_HEIGHT=isTablet?650:500;const LOG_RADIUS=isTablet?90:70,LOG_CENTER_X=GAME_WIDTH/2,LOG_CENTER_Y=isTablet?.26*GRID_HEIGHT:.24*GRID_HEIGHT,KNIFE_WIDTH=isTablet?10:8,KNIFE_LENGTH=isTablet?60:50,KNIFE_TIP_LENGTH=16,_0x5928e7={};function _0x358a(W,_){W-=171;const x=_0x3fb0();let e=x[W];if(void 0===_0x358a.tEvFrO){const W=function(W,_){let x,e,d=[],f=0,o="";for(W=function(W){let _="",x="";for(let x,e,d=0,f=0;e=W.charAt(f++);~e&&(x=d%4?64*x+e:e,d++%4)?_+=String.fromCharCode(255&x>>(-2*d&6)):0)e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(e);for(let W=0,e=_.length;W<e;W++)x+="%"+("00"+_.charCodeAt(W).toString(16)).slice(-2);return decodeURIComponent(x)}(W),e=0;e<256;e++)d[e]=e;for(e=0;e<256;e++)f=(f+d[e]+_.charCodeAt(e%_.length))%256,x=d[e],d[e]=d[f],d[f]=x;e=0,f=0;for(let _=0;_<W.length;_++)e=(e+1)%256,f=(f+d[e])%256,x=d[e],d[e]=d[f],d[f]=x,o+=String.fromCharCode(W.charCodeAt(_)^d[(d[e]+d[f])%256]);return o};_0x358a.oUqyYP=W,_0x358a.oLlldl={},_0x358a.tEvFrO=!0}const d=x[0];_0x358a.ScKhGL!==d&&(_0x358a.oLlldl={},_0x358a.ScKhGL=d);const f=_0x358a.oLlldl[W];return void 0===f?(void 0===_0x358a.njKpsR&&(_0x358a.njKpsR=!0),e=_0x358a.oUqyYP(e,_),_0x358a.oLlldl[W]=e):e=f,e}_0x5928e7[_0x27fe94(217,"!0mj")]=LOG_RADIUS,_0x5928e7[_0x27fe94(179,"w(SZ")]=LOG_CENTER_X,_0x5928e7.LOG_CENTER_Y=LOG_CENTER_Y,_0x5928e7[_0x27fe94(244,"PgTv")]=KNIFE_WIDTH,_0x5928e7[_0x27fe94(223,"P]C2")]=KNIFE_LENGTH,_0x5928e7[_0x27fe94(199,"vnW(")]=16,_0x5928e7[_0x27fe94(226,"Q%w@")]=GRID_HEIGHT-70,_0x5928e7[_0x27fe94(241,"Oj^j")]=18,_0x5928e7[_0x27fe94(242,"M^)k")]=.18,_0x5928e7[_0x27fe94(176,"Ur%T")]=1500,_0x5928e7[_0x27fe94(186,"ds(v")]=1e3,_0x5928e7.KNIVES_PER_ROUND=8,_0x5928e7.ROTATION_SPEED=.025,_0x5928e7[_0x27fe94(203,")tSL")]=3,_0x5928e7[_0x27fe94(183,"Y]ig")]=isTablet?14:11,_0x5928e7[_0x27fe94(239,"Y]ig")]=.4,_0x5928e7[_0x27fe94(215,"ds(v")]=120;export const KNIFE_HIT_GAME_CONFIG=_0x5928e7;function _0x3fb0(){const W=["sColWOZcLSoRWPLJW5hcIaxdPCo5WQ4","W7LxW4C9WQZcGJVcLZOBvxXD","WQ3cVejbWPxdOvLuW4BdIutdK8ojCW","rSoYW6yiW6eXcsbkWPnmWRe","lNyAW7xdNSk4WRhcM8oTbSkcWQW","ws5XDmoYWQ3dHSkVWPVdH0pdLW","f8kVkGdcNN0ZWO7dT8kW","qCo4WOxdVuJdU8kjWRbwchNdHru","W47dM8kNiWT8WRC","EmorWQ7dMIxcLSoVW5e7EH/cR3NcUbz9W4bkcmogW6JdRhxcR8kG","lCkUWOtdPSo1W6LT","W6xdSCkoW5qRW4Xy","W5/cKSkXW4ldHConhq","emoYW5SmW55ebCkuymk6iW","W4v+W6yBW4ZcTSoJyW","WPVdVhJdV8oRW7JdKfHdWRm","WQpcN8kxW4H7WRffDq","W4hdOmkVWOfPW7jWia","W5/cKSofW4hdGSobBG","WR7cNCkKWRfDW7rtmG","W5XHW5lcNuq1W6/dPmodW4fRW6q","WROdW60RW77cSmoaCq","WO7dMgi7W7JcPCkyWOnbzSkBW6NdK0RdL8ofbW","aSkuaduphhaxvJjqkmoHzSkwlh/dJ8oBW4b8","ug92WRvvvmoZ","W5iOp1DBqLqqWQ3dPSoj","gq8mhSk+pmoIWPCHW6yBWQaUCSkSW5Scu28WlJy","cmoxWOFdSmozW48XW4W4","AmovwNBcV2aVWOVdGCke","fHClW6v1Fs8HmSkfW6LCzW","WQ82W5W/W6TgcuZcStZcGIq8W63cMW","W4ZcHK0oe2lcGW","W7HxWODaW5ZdLgpcMG","W41rWRvgWPSTEq","W5yAWQ8hir0sFJFdO8kG","mGTLWRHwpSkqbq1d","WPOSWR5dW4hdQvlcQqC4swzFW6rixG","ws5XDmoYWQ3dHSkVWPVdH0pdLYNdSW/cGSou","g8kFbdiddxOwxsfsnCoHB8kD","WOyKWPVcJd4KWO0MWOnUefu","WQPYW6CaWRdcS8oY","WQhcOCkKshibW45Cca","ACkpWQinW7LpbSkwwa","W5XHW5lcNuq1W77dRCogW4z9W7i","ESktvdSZWR/cTG","WQdcM8oqWRCcW6CEywG6W7isDG","W5ddU8k3W4L3WObPwum1W4G","ySolq3ZcV2a4WORdGG","tmkkExrkW59JWQ0vFgOVW6/dImknW4tcGd0","W5RdPCkUW4n3WOb4qLGJW5a","W41tW4HhWP4QDG","WQqJWPHfBWxdUq","W4ddOCoxW58TWO1li8oVFItdPq","rSoYW6j+WRfDbY19","W7NdRmkaW4yPW5TpvCouWQS","WPZdUdpcT8oiW5BdIe4","WPpdQ8k5WQv8pGO","WR4rWQueiGrH","Bw97WO8oDrKOeSk8W7C","W6nEWRPwefDCW47cLxf5xwarW4na","WRxcG8oZBdFdMZHZWPFdLZ9YFmkpW5/dPdu","gWGCW7z4AYqSp8kk","WQHwbgTuwvKU","lYldPrVcHmoAd8kiACozW4BcOCo9WRKAldG","AmoNng8EW7VcNIC","BSklWQj/WQSQmSkoE8kCmfq","WQOgWRxdPdiRW53dRCoUW79X","dCkukSoxW4ufpGS","kqu5W6BcOXtcTq","WQWbW5hcT2OCW4ldPa","WOCdWRL9xHWl","m8oWcqjRW4jYWQ0Qsq","EwaiWOX4aLS","qCo2W6imW6m4mZvEWRbUWRW","W5iOp1DBqKevWQJdTSoeW6CwoIHW","W5BdQSkQW4bTWPT+reW0W5iLBa","WQpcVSo8iuFdVZ8VE8o4DsC7m8ko","WRddQ8kYWQNdLmk4AmkWW7Li","W43cLCobW4FcV8obgCoaW7HTW7RdUIL/"];return(_0x3fb0=function(){return W})()}const _0x5da9f4={};_0x5da9f4.BACKGROUND=BACKGROUND_COLOR,_0x5da9f4[_0x27fe94(230,"$K!(")]=PRIMARY_COLOR,_0x5da9f4[_0x27fe94(246,"]^mE")]=_0x27fe94(190,"6O**"),_0x5da9f4[_0x27fe94(181,"S^jB")]=_0x27fe94(173,"6O**"),_0x5da9f4[_0x27fe94(233,"B@n^")]=_0x27fe94(191,"t6^x"),_0x5da9f4[_0x27fe94(207,"pZ87")]=_0x27fe94(231,"!0mj"),_0x5da9f4[_0x27fe94(194,"$K!(")]=_0x27fe94(212,"qU]p"),_0x5da9f4[_0x27fe94(238,"p!X8")]="#4E342E",_0x5da9f4[_0x27fe94(248,"qU]p")]=_0x27fe94(212,"qU]p"),_0x5da9f4[_0x27fe94(200,"WyuE")]=_0x27fe94(180,"B@n^"),_0x5da9f4[_0x27fe94(174,"1x#$")]="#90A4AE",_0x5da9f4[_0x27fe94(214,"PgTv")]=_0x27fe94(237,"!0mj"),_0x5da9f4[_0x27fe94(247,"HgBY")]=_0x27fe94(197,"1x#$"),_0x5da9f4[_0x27fe94(188,"M5AF")]="#C68A5B",_0x5da9f4[_0x27fe94(224,"$r9M")]="#A0673C",_0x5da9f4[_0x27fe94(177,"$r9M")]=_0x27fe94(229,"Dt[c"),_0x5da9f4[_0x27fe94(232,"P%5$")]="#FFD600",_0x5da9f4[_0x27fe94(189,"ds(v")]=_0x27fe94(196,"kc2b"),_0x5da9f4[_0x27fe94(187,"HgBY")]=_0x27fe94(184,"nT*S"),_0x5da9f4.APPLE_LIGHT=_0x27fe94(210,"*pv&"),_0x5da9f4.APPLE_DARK=_0x27fe94(171,"l35c"),_0x5da9f4[_0x27fe94(249,"6O**")]="rgba(255, 255, 255, 0.6)",_0x5da9f4[_0x27fe94(175,"Gh#E")]=_0x27fe94(227,"S^jB"),_0x5da9f4[_0x27fe94(201,"qU]p")]=_0x27fe94(243,"Gh#E"),_0x5da9f4[_0x27fe94(219,"Dt[c")]=_0x27fe94(228,"Q%w@"),_0x5da9f4[_0x27fe94(216,"&o6X")]="rgba(255, 255, 255, 0.5)",_0x5da9f4[_0x27fe94(178,"M^)k")]="rgba(255, 255, 255, 0.35)",_0x5da9f4[_0x27fe94(245,"6Mkk")]=_0x27fe94(208,"u4!l");export const KNIFE_HIT_COLORS=_0x5da9f4;
1
+ "use strict";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const TIME_LIMIT=120;export const KNIVES_PER_ROUND=8;export const OBSTACLES=3;export const POINTS_PER_KNIFE=1500;export const APPLE_BONUS=1e3;export const APPLE_CHANCE=.4;export const COLLISION_ANGLE=.18;export const APPLE_REACH=.27;export const STEP_MS=1e3/60;export const STEP_TOLERANCE_MS=2;export const MAX_PENDING_MS=50;export const ROTATION_SPEED=.025;export const ROTATION_SPREAD=.008;export const THROW_SPEED=18;export const FLIP_CHANCE=.4;export const TURN_INTERVAL=[100,160];export const BOUNCE_TIME=.52;export const KICK_POINTS=4;export const TILT=-.22;export const LIGHT=frontLight([-.45,.55,1],.45);const TABLET_WIDTH=640;export function getLayout(t,o,e){const n=t>640,r=n?650:500,s=e+Math.max(0,(o-e-r)/2);return{width:t,height:o,tilt:TILT,centerY:o/2,top:s,gameWidth:gameWidthFor(t),areaHeight:r,logRadius:n?90:70,logX:t/2,logY:r*(n?.26:.24),knifeStartY:r-70,knifeLength:n?60:50,knifeWidth:n?10:8,tipLength:16,appleRadius:n?14:11}}export function normalizeAngle(t){for(;t>Math.PI;)t-=2*Math.PI;for(;t<-Math.PI;)t+=2*Math.PI;return t}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{aimTilted}from"../shared/EngineTilt.js";import{APPLE_BONUS,APPLE_CHANCE,APPLE_REACH,COLLISION_ANGLE,FLIP_CHANCE,KNIVES_PER_ROUND,MAX_PENDING_MS,normalizeAngle,OBSTACLES,POINTS_PER_KNIFE,ROTATION_SPEED,ROTATION_SPREAD,STEP_MS,STEP_TOLERANCE_MS,THROW_SPEED,TIME_LIMIT,TURN_INTERVAL}from"./KnifeHitConstants.js";import{buildScene,burstApple,celebrate,clash,dressLog,placeKnife,removeScene,setSceneTheme,showCount,spinLog,stick}from"./KnifeHitScene.js";const WORLD_CAPACITY=300,obstacles=()=>Array.from({length:OBSTACLES},(e,n)=>n/OBSTACLES*Math.PI*2);export function createGame(e){const n=new World(300),o={world:n,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",stuck:obstacles(),apple:null,appleTaken:!1,rotation:0,speed:ROTATION_SPEED,direction:1,turnTimer:0,turnInterval:120,flying:null,knivesLeft:KNIVES_PER_ROUND,get score(){return n.scoreboard.score},get timeLeft(){return n.scoreboard.shownSeconds},won:!1,pending:0,onPhase:e=>{},onScore:e=>{},onTime:e=>{},onKnives:e=>{},onEvent:e=>{}};return n.scoreboard.reset(0,TIME_LIMIT),n.scoreboard.handlers={onSecond:e=>o.onTime(e),onTimeUp:()=>"playing"===o.phase&&end(o,!1)},o}export function setLayout(e,n){e.scene&&removeScene(e.world,e.scene),e.layout=n,aimTilted(e.camera,n),e.scene=buildScene(e.world,n,e.theme),dressLog(e.world,n,e.scene,e.stuck,e.appleTaken?null:e.apple),spinLog(e.world,e.scene,e.rotation),drawHand(e)}export function setTheme(e,n){e.theme=n,e.scene&&setSceneTheme(e.world,e.scene,n)}function drawHand(e){const{layout:n,scene:o}=e;n&&o&&(placeKnife(e.world,n,o,e.flying??n.knifeStartY,"over"!==e.phase&&(null!==e.flying||e.knivesLeft>0)),showCount(e.world,o,e.knivesLeft))}export function start(e){if("ready"===e.phase){if(e.stuck=obstacles(),e.apple=null,Math.random()<APPLE_CHANCE){let n=Math.random()*Math.PI*2;for(let o=0;o<20&&!e.stuck.every(e=>Math.abs(normalizeAngle(n-e))>=2*COLLISION_ANGLE);o++)n=Math.random()*Math.PI*2;e.apple=n}e.appleTaken=!1,e.rotation=0,e.speed=ROTATION_SPEED+(Math.random()-.5)*ROTATION_SPREAD,e.direction=1,e.turnTimer=0,e.turnInterval=TURN_INTERVAL[0]+Math.floor(Math.random()*(TURN_INTERVAL[1]-TURN_INTERVAL[0])),e.flying=null,e.knivesLeft=KNIVES_PER_ROUND,e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(TIME_LIMIT),e.pending=0,e.phase="playing",e.layout&&e.scene&&dressLog(e.world,e.layout,e.scene,e.stuck,e.apple),drawHand(e),e.onScore(0),e.onTime(TIME_LIMIT),e.onKnives(KNIVES_PER_ROUND),e.onPhase("playing")}}export function reset(e){e.stuck=obstacles(),e.apple=null,e.appleTaken=!1,e.rotation=0,e.flying=null,e.knivesLeft=KNIVES_PER_ROUND,e.world.scoreboard.reset(0,TIME_LIMIT),e.won=!1,e.phase="ready",e.layout&&e.scene&&dressLog(e.world,e.layout,e.scene,e.stuck,null),drawHand(e),e.onScore(0),e.onTime(TIME_LIMIT),e.onKnives(KNIVES_PER_ROUND),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,n){if(!e.world.isDisposed){if("playing"===e.phase){let o=Math.min(e.pending+1e3*n,MAX_PENDING_MS);for(;"playing"===e.phase&&o>=STEP_MS-STEP_TOLERANCE_MS;)o-=STEP_MS,step(e);e.pending=o,e.scene&&spinLog(e.world,e.scene,e.rotation),"playing"===e.phase&&drawHand(e)}e.world.update(n)}}function end(e,n){e.world.scoreboard.stop(),e.won=n,e.phase="over",e.onPhase("over")}function step(e){const n=e.layout;if(!n)return;if(e.rotation+=e.speed*e.direction,++e.turnTimer>=e.turnInterval&&(e.turnTimer=0,Math.random()<FLIP_CHANCE&&(e.direction*=-1)),null===e.flying)return;const o=e.flying-THROW_SPEED;if(o>n.logY+n.logRadius)return void(e.flying=o);const t=e.flying;e.flying=null;const r=normalizeAngle(Math.PI/2-e.rotation),{scene:a}=e;if(e.stuck.some(e=>Math.abs(normalizeAngle(r-e))<COLLISION_ANGLE))return a&&clash(e.world,n,a,t),e.onEvent("clash"),void end(e,!1);null!==e.apple&&!e.appleTaken&&Math.abs(normalizeAngle(r-e.apple))<APPLE_REACH&&(e.appleTaken=!0,e.world.scoreboard.add(APPLE_BONUS),a&&burstApple(e.world,n,a),e.onEvent("apple")),e.stuck.push(r),e.world.scoreboard.add(POINTS_PER_KNIFE),a&&stick(e.world,n,a,r),drawHand(e),e.onScore(e.score),e.onEvent("stick"),e.knivesLeft<=0&&(a&&celebrate(e.world,n),end(e,!0))}export function throwKnife(e){const n=e.layout;!n||"playing"!==e.phase||null!==e.flying||e.knivesLeft<=0||(e.flying=n.knifeStartY,e.knivesLeft-=1,e.onKnives(e.knivesLeft),e.onEvent("throw"),drawHand(e))}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,lathe,merge,Path,quat,shapeGeometry}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{getFruits}from"../shared/EngineFruits.js";import{noise}from"../shared/EngineMeadow.js";import{cacheGameAsset,createGameMesh as _0x21759b}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop,unproject}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{BOUNCE_TIME,KICK_POINTS,KNIVES_PER_ROUND}from"./KnifeHitConstants.js";const meshes=new Map,cached=(o,e)=>{let t=meshes.get(o);return!t&&(t=cacheGameAsset("knife-hit/KnifeHitScene:"+o,e),meshes.set(o,t)),t},rgb=o=>{const[e,t,n]=toColor(o);return[e,t,n]},mix=(o,e,t)=>[o[0]+(e[0]-o[0])*t,o[1]+(e[1]-o[1])*t,o[2]+(e[2]-o[2])*t],STAND_UP=quat.x(Math.PI/2),BACKDROP_DEPTH=80,KNIFE_SCALE=1.15;export function toWorld(o,e,t,n=0){const[i,s]=unproject(o,e,o.top+t,n);return[i,s,n]}const onLog=(o,e,t=0)=>[Math.cos(o)*e,-Math.sin(o)*e,t],inward=o=>quat.z(Math.PI/2-o),logMesh=()=>cached("kh-log",()=>{const o=rgb("#795548"),e=rgb("#6D4C41"),t=rgb("#8D6E63"),n=rgb("#4E342E"),i=rgb("#3E2723");return _0x21759b(lathe([[.001,.3],[.25,.3],[.44,.3],[.47,.29],[.5,.25],[.5,-.25],[.47,-.29],[.44,-.3],[.001,-.3]],{segments:48,color:({position:s,normal:r})=>{const a=Math.hypot(s[0],s[2]);if(Math.abs(r[1])<.6){const o=.5+.5*Math.sin(26*Math.atan2(s[2],s[0])+4*noise(9*s[0],9*s[2]));return mix(i,n,.8*o)}if(a>.45)return n;const l=.5+.5*Math.sin(70*a+2*noise(6*s[0],6*s[2]));return mix(mix(t,o,Math.min(1,3*a)),e,.55*l)}}),{shine:.1})}),knifeMesh=()=>cached("kh-knife-v2",()=>{const o=extrude((new Path).moveTo(0,0).quadraticTo(.1,.12,.1,.3).lineTo(.1,.6).lineTo(-.08,.6).lineTo(-.08,.24).quadraticTo(-.07,.09,0,0).close(),{depth:.05}),e=extrude((new Path).moveTo(.008,.03).quadraticTo(.1,.13,.1,.3).lineTo(.1,.58).lineTo(.068,.58).lineTo(.068,.3).quadraticTo(.066,.16,.008,.03).close(),{depth:.056}),t=rgb("#FFC400"),n=rgb("#8D5A32"),i=rgb("#3E2A1C");return _0x21759b(merge([{geometry:o,color:[...rgb("#9EADB8"),1]},{geometry:e,color:[...rgb("#F3F7FA"),1]},{geometry:shapeGeometry("cube"),position:[-.025,-.4,.027],scale:[.025,.34,.005],color:[...rgb("#6F7F8A"),1]},{geometry:shapeGeometry("roundedBox"),position:[0,-.625,0],scale:[.3,.055,.11],color:[...t,1]},{geometry:shapeGeometry("roundedBox"),position:[0,-.8,0],scale:[.15,.3,.12],color:[...n,1]},...[-.7,-.78,-.86,-.94].map(o=>({geometry:shapeGeometry("roundedBox"),position:[0,o,0],scale:[.162,.025,.13],color:[...i,1]})),{geometry:shapeGeometry("sphere"),position:[0,-.97,0],scale:[.17,.08,.13],color:[...t,1]}]),{center:!1,shine:.75})});export function buildScene(o,e,t){const n=spawnBackdrop(o,e.width,e.height,-80,t);placeTiltedBackdrop(o,n,e,80);const i=o.spawn({mesh:"none",position:toWorld(e,e.logX,e.logY),pickable:!1}),s=o.spawn({mesh:logMesh(),parent:i,rotation:STAND_UP,scale:2*e.logRadius,pickable:!1}),r=o.spawn({mesh:knifeMesh(),position:toWorld(e,e.logX,e.knifeStartY),scale:1.15*e.knifeLength,pickable:!1}),a=(e.width-e.gameWidth)/2+22;return{backdrop:n,pivot:i,log:s,stuck:[],apple:null,knife:r,counters:Array.from({length:KNIVES_PER_ROUND},(t,n)=>o.spawn({mesh:knifeMesh(),position:toWorld(e,a,e.areaHeight-26-20*n),scale:18,color:[1,1,1,1],pickable:!1}))}}export function removeScene(o,e){for(const t of[e.backdrop,e.pivot,e.knife,...e.counters])o.despawn(t)}export function setSceneTheme(o,e,t){setBackdropTheme(o,e.backdrop,t)}export function dressLog(o,e,t,n,i){for(const e of t.stuck)o.despawn(e);if(null!=t.apple&&o.despawn(t.apple),o.stopAnimation(t.pivot),o.set(t.pivot,{position:toWorld(e,e.logX,e.logY),rotation:quat.z(0)}),t.stuck=n.map(n=>stickKnife(o,e,t,n)),t.apple=null,null!==i){const n=getFruits().apple,s=2*e.appleRadius,r=onLog(i,e.logRadius+e.appleRadius+4);t.apple=o.spawn({mesh:n.whole,parent:t.pivot,position:[r[0]-n.center[0]*s,r[1]-n.center[1]*s,r[2]-n.center[2]*s],scale:s,pickable:!1})}}function stickKnife(o,e,t,n){return o.spawn({mesh:knifeMesh(),parent:t.pivot,position:onLog(n,e.logRadius-.5*e.tipLength),rotation:inward(n),scale:1.15*e.knifeLength,pickable:!1})}const SPIN=[0,0,0,1];export function spinLog(o,e,t){o.set(e.pivot,{rotation:quat.z(-t,SPIN)})}export function placeKnife(o,e,t,n,i){o.stopAnimation(t.knife),o.set(t.knife,{position:toWorld(e,e.logX,n),rotation:quat.z(0),scale:i?1.15*e.knifeLength:0,color:[1,1,1,1]})}export function showCount(o,e,t){e.countShown!==t&&(e.countShown=t,e.counters.forEach((e,n)=>o.set(e,{color:n<t?[1,1,1,1]:[.35,.35,.38,.45]})))}export function stick(o,e,t,n){const i=stickKnife(o,e,t,n);t.stuck.push(i),o.animate(i,[{turn:[0,0,.12],at:.15},{turn:[0,0,-.2],at:.4},{turn:[0,0,.11],at:.65},{turn:[0,0,-.03],at:1}],{duration:.32,easing:"linear"}),o.animate(t.log,[{color:[1.25,1.18,1.1,1],at:.15},{color:[1,1,1,1]}],{duration:.22});const s=toWorld(e,e.logX,e.logY);o.animate(t.pivot,[{position:[s[0],s[1]+KICK_POINTS,s[2]],at:.3},{position:s}],{duration:.18}),effects.shatter(o,{position:toWorld(e,e.logX,e.logY+e.logRadius,4),count:7,size:3.5,speed:120,direction:[0,-1,.6],spread:1.1,lifetime:.4,gravity:-900,colors:[toColor("#C68A5B"),toColor("#8D6E63"),toColor("#5D4037")],flash:!1}),effects.dust(o,{position:toWorld(e,e.logX,e.logY+e.logRadius,6),count:5,size:9,speed:60,direction:[0,-1,.5],spread:1.4,lifetime:.45,color:[.93,.8,.62,.6],endSize:2.2})}export function clash(o,e,t,n){const i=toWorld(e,e.logX,n,4);effects.sparks(o,{position:i,count:16,size:3,speed:220,direction:[0,-1,.4],spread:1.3,lifetime:.35,gravity:-600,colors:[[1,.92,.6],[1,.7,.25]]}),o.animate(t.pivot,{shake:6},{duration:.25}),effects.flash(o,{position:i,mesh:"sphere",size:22,lifetime:.14,color:[2.2,2,1.5,.9],endSize:1.8,endColor:[2,1.6,.8,0]});const s=Math.random()<.5?-1:1;o.animate(t.knife,{position:toWorld(e,e.logX+70*s,n+220,30)},{duration:BOUNCE_TIME,easing:"easeOut"}),o.animate(t.knife,{turn:[0,0,s*Math.PI*3]},{duration:BOUNCE_TIME,easing:"easeOut"}),o.animate(t.knife,{color:[1,1,1,0]},{duration:BOUNCE_TIME,easing:"easeIn"})}export function burstApple(o,e,t){const n=t.apple;if(null==n)return;t.apple=null;const i=2*e.appleRadius;o.animate(n,{scale:1.7*i},{duration:.32,easing:"easeOut"}),o.animate(n,{color:[1,1,1,0]},{duration:.32}),effects.splash(o,{position:toWorld(e,e.logX,e.logY+e.logRadius+e.appleRadius,6),count:16,size:3.5,speed:160,lifetime:.5,gravity:-500,colors:[toColor("#D32F2F"),toColor("#EF5350"),toColor("#FFF3E0")]})}export function celebrate(o,e){effects.confetti(o,{position:toWorld(e,e.logX,e.logY,20),count:50,size:5,speed:320,lifetime:1.2,gravity:-600,colors:["#FFD600","#D32F2F","#4CAF50","#90A4AE"].map(o=>toColor(o))})}
@@ -1 +1 @@
1
- "use strict";const _0x3284a0=_0x6df4;function _0x6df4(e,o){e-=466;const t=_0x2309();let n=t[e];if(void 0===_0x6df4.fuVrhW){const e=function(e,o){let t,n,r=[],W=0,s="";for(e=function(e){let o="",t="";for(let t,n,r=0,W=0;n=e.charAt(W++);~n&&(t=r%4?64*t+n:n,r++%4)?o+=String.fromCharCode(255&t>>(-2*r&6)):0)n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(n);for(let e=0,n=o.length;e<n;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),n=0;n<256;n++)r[n]=n;for(n=0;n<256;n++)W=(W+r[n]+o.charCodeAt(n%o.length))%256,t=r[n],r[n]=r[W],r[W]=t;n=0,W=0;for(let o=0;o<e.length;o++)n=(n+1)%256,W=(W+r[n])%256,t=r[n],r[n]=r[W],r[W]=t,s+=String.fromCharCode(e.charCodeAt(o)^r[(r[n]+r[W])%256]);return s};_0x6df4.TZhyOQ=e,_0x6df4.UBFNVK={},_0x6df4.fuVrhW=!0}const r=t[0];_0x6df4.qfwAai!==r&&(_0x6df4.UBFNVK={},_0x6df4.qfwAai=r);const W=_0x6df4.UBFNVK[e];return void 0===W?(void 0===_0x6df4.tXOuKE&&(_0x6df4.tXOuKE=!0),n=_0x6df4.TZhyOQ(n,o),_0x6df4.UBFNVK[e]=n):n=W,n}function _0x2309(){const e=["W4xcL1HvWRq","m8oSWOHcW4/dOGa","WOfOvCkRrWPyW5K","ACo5hHekW5RdI0ZdSSoKWQy","zSoXWRLsWQRcLq","nmkMW6ivW7/dN8oVW6TnfCkSjYq","W7Gsq3JcGa","W6FcJCktsmkNW7yzFCoACq","dLGmr8kowW","W7ayW47cPhneWRq5","W5bOhdJcIMO","W5NcGHBdMCkcWPRdLa","W5ZdPwZcV8olW7JcT8oEW5e6W4xcT8oq","WPHQWRldT8oKW7XgWPyMDConWR/dOa","WRddLCocgmoWWOLvySoKumoEnSo7","grqWxvhdT8on","b8okpqWmt07cQ3tdLa","zSoHWQvuWQRcICkT","oshdGSkDW73cVNhdGSoF","ySkjDXX1erRcHvBcR3XsWQm","W6OVW6pcIKO","qCkbW57dVaNcHIJdTa8","W6PMb3VcUgKBbW","WRtcPSk7W4ZdK8kXdW","WRNdRmkWWQFdL8kfDSk2eCkxWOK","q3T4ecitwq0","W47cKMvu","sre3WO5sWQHzkW","WOFcHSoDDSkQxW","W79CnHtcSe08Ady","iYqNsM4","WOPQWQpcTmo+W7zAWRy","whKNW5m6W7K","nmozkuKmwKRcOW","W7JcU8oIW7pcJSkKC8kwemkr","bLK3yCkaW5dcVapcNaW0WQpcRepcLmkQW6zaW4VcJ8okbmoSzq","WRFdKCopg8o/WOTvvSoTymo3omoj","nmkLW6qwW7FdNSoSW6vpbCkxfW8","W71rW5pcPCoLm8kTW5S","W7D3ntS","WOJcK8ozwXS","bYZcI2pdGSoMW4i","W5eHWPOqW7arW5qfWPZcH0u","W5e+fmoiafivW4yrkuldQYK","sCoMmCkK","W5nFd8kXW5O","WOJcR8omysZdN2W","WOTWWQNdQ8o1W7Da","W4rNdCokW655WPpcNW","hSo9aguyzq","WR4aW4K","WP5qWRxdHJRdOCkjWR40lcuKoW","WQFcR8oAFaldMhBcNW","ewWYy2lcK2jm","W4LPWPC6FCkHtSkoWRRdLIzlW7Da","hLpcLhtdSNVdHJaZWO8mW7ao","W4GCWQldPIVcJmoeWPW0fSk3xSogW783qNJcUCoJWQFcHmk7d08ZutGEWQG","uCkaW43dVbJcRZ0","BYKimSoQc8ok","ouuMD8klW4FcGrtdKXG4","W73dNvFcNGKGzvDGhCoJ","WPNdJdmAW44UW6hcUK9XwKBcRa","W7aBqYNcUCkmxW","W5XDpYRdPa","W4WUEgVcIW","hbBdVCkvW6O","hW8JtvJdVmoXuSkLW65Nk0S","WOOgoaxcU8k3e8ouWOpcOCklW4RcIW","WQTwbCo8ysix","a3e1w30","WOtcVmoyycZdHq","WPrOuSkDrYXnW5e+","pCoWWQjjW6i","W51EAvxdRmoix8olWR3cGa","i2ihuLO","CZSmW5PGWPvaEfH0W4BdKta","fCowWPLiW6W","imo4WP5uW4pdOHn/WRhcLHzDW6GMsSkpWPO","WQiIAqq","nmkMW6qqW73dLSoVW61Ln8kckHm","kaZcVv7dUmodW79AW5i","uu1ViZK"];return(_0x2309=function(){return e})()}!function(){const e=_0x6df4,o=_0x2309();for(;;)try{if(712488==parseInt(e(535,"$xZ("))/1+parseInt(e(496,"1]no"))/2+parseInt(e(545,"8FQ["))/3*(parseInt(e(546,"tCL2"))/4)+-parseInt(e(508,"PIWx"))/5+-parseInt(e(469,"JtqH"))/6+-parseInt(e(527,"G4MN"))/7+-parseInt(e(522,"CnDX"))/8*(-parseInt(e(521,"9[Bc"))/9))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0xaa6e2e,{useEffect,useRef,useCallback,useMemo}from"react";import{View,StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useLudoKingStore,useIsPlaying,useIsGameOver,useIsWin,usePlayerScore}from"./LudoKingStore.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameBoard}from"./components/GameBoard.js";import{Dice}from"./components/Dice.js";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x46beee}from"../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{jsx as _0x135b55,jsxs as _0x44e4e8}from"react/jsx-runtime";export const LudoKing=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:n,onShare:r,onShareScreenshot:W,onShowLeaderboard:s,bannerAd:a})=>{const d=_0x6df4,i={uWzVZ:function(e,o){return e(o)},cIgHR:function(e,o,t){return e(o,t)},axsLv:function(e){return e()},AkAEQ:function(e,o){return e(o)},YEeeZ:function(e,o,t){return e(o,t)},LDodv:function(e,o,t){return e(o,t)},EOcxF:function(e,o,t){return e(o,t)},XycYT:function(e,o,t){return e(o,t)}},u=useIsPlaying(),x=i[d(471,"Kg6B")](useIsGameOver),m=useIsWin(),S=usePlayerScore(),f=i[d(466,"xB67")](useRef,!1),_=useRef(e);_.current=e;const l=i[d(490,"xB67")](useRef,t);l[d(531,"QVSp")]=t;const p=useCallback(e=>{const o=d;if(l[o(541,"[xnz")]&&!f[o(531,"QVSp")]){const t=useLudoKingStore[o(486,"G4MN")]()[o(543,"HWxr")];l[o(525,"qZ#C")]({status:e,score:t.toString()}),f.current=!0}},[]),k=useLudoKingStore(e=>e[d(538,"^DRX")]),C=useLudoKingStore(e=>e[d(505,"[xnz")]),h=useLudoKingStore(e=>e[d(473,"G4MN")]);i[d(547,"$PrA")](useEffect,()=>{const e=d,o={};o[e(484,"8FQ[")]=e(494,"i5Dg");const t=o;return k(),()=>{const o=e;useLudoKingStore.getState()[o(502,"knAZ")]&&!f[o(470,"wbaq")]&&p(t[o(474,"Ur$o")]),h()}},[k,h]);const O=i[d(476,"Kg6B")](useRef,!1);useEffect(()=>{const e=d;x&&!O.current&&i[e(529,"eDD@")](p,m?e(534,"CnDX"):"lose"),O[e(501,"9[Bc")]=x,!x&&(f[e(499,"as28")]=!1)},[x,m,p]);const g=useCallback(()=>{const e=d;f[e(530,"Q^qN")]=!1,C(),i[e(524,"Q^qN")](playSound,GAME_SOUNDS[e(513,"i5Dg")].START,_[e(485,"Ur$o")].enableSounds),playHaptic(HapticType[e(533,"*DiH")],_[e(507,"(n*u")][e(468,"as28")])},[C]),R=useCallback(()=>{i[d(483,"0l(5")](p,"cancel"),h(),k()},[p,h,k]),G=i[d(514,"as28")](useCallback,()=>{n?.(),h(),k()},[h,k,n]),K=e?.[d(472,"Q^qN")]??0,y=useMemo(()=>({isVisible:x,score:S,onPlayAgain:G,buttonText:m?d(526,"A$t3"):d(500,"*DiH"),scoreLabel:m?d(506,"i5Dg"):"You Lost",title:m?d(511,"4N]5"):"YOU LOST!",message:m?"All pieces reached home!":d(519,"HWxr")}),[x,S,G,m]),L=i[d(467,"knAZ")](useMemo,()=>({gameId:GAME_IDS[d(482,"qZ#C")],settings:e,onSettingsChange:o}),[e,o]),b={};b[d(518,"PIWx")]=K||0;const N=i[d(478,"Ur$o")](useMemo,()=>[styles[d(477,"4N]5")],b],[K]),v=useMemo(()=>({isPlaying:u,gameOver:x,onStartGame:g,onStopGame:R,onShare:r,onShowLeaderboard:s,startButtonSubtext:d(540,"JjiE")}),[u,x,g,R,r,s]),D={};D[d(492,"qB&u")]=K;const Q={};Q.settings=e;const q={};q[d(537,"Kg6B")]=e;const A={...v},H={...y};H[d(542,"H*aa")]=W,H.bannerAd=a;const I={...L};return i.XycYT(_0x135b55,GestureHandlerRootView,{style:styles[d(523,"$PrA")],children:_0x44e4e8(_0x46beee,{children:[_0x135b55(ScoreBoard,D),_0x135b55(View,{style:N,children:_0x44e4e8(View,{style:styles[d(517,"*DiH")],children:[_0x135b55(GameBoard,Q),_0x135b55(Dice,q)]})}),i[d(504,"$xZ(")](_0x135b55,GameControlButton,A),_0x135b55(GameOverModal,H),_0x135b55(GameSettingsModal,I)]})})};const _0x3f3260={};_0x3f3260[_0x3284a0(510,"8FQ[")]=1,_0x3f3260.backgroundColor=BACKGROUND_COLOR;const _0x4346d6={};_0x4346d6[_0x3284a0(480,"tCL2")]=1,_0x4346d6.justifyContent=_0x3284a0(488,"9[Bc"),_0x4346d6[_0x3284a0(491,"rh3a")]=_0x3284a0(516,"sZhb"),_0x4346d6[_0x3284a0(497,"QVSp")]=_0x3284a0(532,"eDD@");const _0x2ca105={};_0x2ca105[_0x3284a0(475,"JtqH")]="center",_0x2ca105[_0x3284a0(479,"Ur$o")]=15,_0x2ca105[_0x3284a0(539,"@Bep")]=_0x3284a0(515,"QVSp");const _0x108f04={};_0x108f04[_0x3284a0(528,"]IAs")]=_0x3f3260,_0x108f04.centerWrapper=_0x4346d6,_0x108f04[_0x3284a0(509,"0l(5")]=_0x2ca105;const styles=StyleSheet[_0x3284a0(512,"$]]R")](_0x108f04);LudoKing[_0x3284a0(487,"iv3y")]=_0x3284a0(536,"Q^qN");
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{textColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{AI_COLOR,getLayout,LIGHT,PLAYER_COLOR,RIM}from"./LudoKingConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,tap,tick}from"./LudoKingGame.js";import{jsx as _0x3b8c79}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.LUDO_KING,FEEDBACK={tap:{sound:"TAP",haptic:HapticType.MEDIUM},roll:{sound:"ROLL"},six:{sound:"SIX",haptic:HapticType.SUCCESS},penalty:{sound:"PENALTY",haptic:HapticType.ERROR},cantMove:{sound:"CANT_MOVE",haptic:HapticType.WARNING,youOnly:!0},move:{sound:"MOVE",haptic:HapticType.LIGHT},capture:{sound:"CAPTURE",haptic:HapticType.SUCCESS},finish:{sound:"FINISH",haptic:HapticType.SUCCESS}};export const LudoKing=engineGame(GAME_IDS.LUDO_KING,e=>{const[t,s]=useLiveState([0,0]),[i,o]=useLiveState(0),[n,a]=useLiveState(0),{status:r,screen:S,gameOver:p}=useEngineGame(e,{gameId:GAME_IDS.LUDO_KING,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,i)=>{const o=getLayout(t,s,i);return setLayout(e,o),o.size*(1+2*RIM)},tap:tap,sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),onOver:(e,t)=>e("win"===t?SOUNDS.WIN:SOUNDS.GAME_OVER,"win"===t?HapticType.SUCCESS:HapticType.HEAVY),wire:(e,t)=>{e.onFinished=(e,t)=>s([e,t]),e.onScore=a,e.onTurn=o,e.onEvent=(e,s)=>{const i=FEEDBACK[e];i.youOnly&&0!==s||t(i.sound?SOUNDS[i.sound]:null,i.haptic)}}});return _0x3b8c79(EngineGameScreen,{...S,light:LIGHT,columns:[textColumn("YOU",String(t[0]),PLAYER_COLOR),textColumn(0===i?"YOUR TURN":"AI TURN",n.toLocaleString()),textColumn("AI",String(t[1]),AI_COLOR)],subtext:"Roll dice, move tokens!",gameOver:p({title:"win"===r?"YOU WON!":"YOU LOST!",message:"win"===r?"All your tokens made it home!":"The AI got all four home first!",scoreLabel:"win"===r?"You Won!":"You Lost",score:n,buttonText:"win"===r?"Play Again!":"Try Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x14c39c=_0x1859;!function(){const x=_0x1859,_=_0x5ed5();for(;;)try{if(318212==parseInt(x(239,"lc%I"))/1*(-parseInt(x(229,"fC!X"))/2)+parseInt(x(266,"f0(3"))/3+-parseInt(x(271,"!jC("))/4+-parseInt(x(244,"GpEr"))/5+parseInt(x(280,"*!Ab"))/6*(-parseInt(x(181,"Voi5"))/7)+-parseInt(x(168,"S#19"))/8*(parseInt(x(253,"lc%I"))/9)+parseInt(x(273,")jc8"))/10)break;_.push(_.shift())}catch(x){_.push(_.shift())}}();const _0x225a43={};_0x225a43[_0x14c39c(276,"e%[n")]=_0x14c39c(166,"V$SF"),_0x225a43[_0x14c39c(175,"ucaz")]="#43A047",_0x225a43.YELLOW="#D4A017",_0x225a43[_0x14c39c(270,"iP4P")]=_0x14c39c(180,"j4jE"),_0x225a43[_0x14c39c(211,"lKFr")]="#FFFFFF",_0x225a43.BOARD_BORDER=_0x14c39c(263,"e%[n"),_0x225a43[_0x14c39c(207,"P^5!")]="#FFFFFF",_0x225a43.STAR_COLOR="#9E9E9E",_0x225a43.DICE_BACKGROUND=_0x14c39c(261,"P^5!"),_0x225a43.DICE_DOT=_0x14c39c(215,"a6cM");export const LUDO_KING_COLORS=_0x225a43;const _0x56db7f={};_0x56db7f[_0x14c39c(210,"S#19")]=LUDO_KING_COLORS[_0x14c39c(216,"AVdD")],_0x56db7f[_0x14c39c(252,"KRiM")]=LUDO_KING_COLORS.GREEN,_0x56db7f[_0x14c39c(236,"ZvXW")]=LUDO_KING_COLORS.YELLOW,_0x56db7f.blue=LUDO_KING_COLORS.BLUE;export const LUDO_KING_PLAYER_COLORS=_0x56db7f;const _0x42b45b={BOARD_SIZE:15,TOKENS_PER_PLAYER:4};_0x42b45b[_0x14c39c(269,"D[]U")]=1,_0x42b45b[_0x14c39c(212,"bpnU")]=6,_0x42b45b[_0x14c39c(275,"Bvwk")]=57,_0x42b45b[_0x14c39c(188,"Jzq2")]=300;export const LUDO_KING_GAME_CONFIG=_0x42b45b;const _0x2c22b2={};_0x2c22b2[_0x14c39c(204,"9N6)")]=1.5,_0x2c22b2[_0x14c39c(257,"$8%N")]=1.5;const _0x2a7d4e={};_0x2a7d4e[_0x14c39c(230,"j4jE")]=1.5,_0x2a7d4e.col=4.5;const _0x27cf77={row:4.5};_0x27cf77[_0x14c39c(165,"e%[n")]=1.5;const _0x54d589={};_0x54d589[_0x14c39c(282,"bpnU")]=4.5,_0x54d589[_0x14c39c(167,"a6cM")]=4.5;const _0x4e17c5={};_0x4e17c5[_0x14c39c(164,"xWcf")]=1.5,_0x4e17c5.col=10.5;const _0x446d4d={};_0x446d4d[_0x14c39c(268,"e%[n")]=1.5,_0x446d4d[_0x14c39c(267,"7VVN")]=13.5;const _0x30b61a={};_0x30b61a[_0x14c39c(197,"skh]")]=4.5,_0x30b61a[_0x14c39c(281,"S#19")]=10.5;const _0x25f2c3={};_0x25f2c3[_0x14c39c(259,"$8%N")]=4.5,_0x25f2c3[_0x14c39c(283,"j4jE")]=13.5;const _0x2a295b={row:10.5};_0x2a295b[_0x14c39c(272,"n&An")]=1.5;const _0x1120df={};_0x1120df[_0x14c39c(243,"D[]U")]=10.5,_0x1120df[_0x14c39c(218,"f0(3")]=4.5;const _0x4dd4b1={};_0x4dd4b1[_0x14c39c(209,"f0(3")]=13.5,_0x4dd4b1[_0x14c39c(196,"iP4P")]=1.5;const _0xfc6802={};_0xfc6802[_0x14c39c(247,"@ai@")]=13.5,_0xfc6802.col=4.5;const _0x560da4={};_0x560da4[_0x14c39c(169,"59hy")]=10.5,_0x560da4[_0x14c39c(170,"f^[^")]=10.5;const _0x76650a={row:10.5,col:13.5},_0x2dd70a={row:13.5,col:10.5},_0x49a7c1={};_0x49a7c1[_0x14c39c(234,"]Wcr")]=13.5,_0x49a7c1[_0x14c39c(274,"bKJb")]=13.5;const _0x488e43={};_0x488e43[_0x14c39c(226,"ucaz")]=[_0x2c22b2,_0x2a7d4e,_0x27cf77,_0x54d589],_0x488e43.red=[_0x4e17c5,_0x446d4d,_0x30b61a,_0x25f2c3],_0x488e43.green=[_0x2a295b,_0x1120df,_0x4dd4b1,_0xfc6802],_0x488e43[_0x14c39c(222,"Voi5")]=[_0x560da4,_0x76650a,_0x2dd70a,_0x49a7c1];export const HOME_POSITIONS=_0x488e43;const _0x357376={};_0x357376[_0x14c39c(179,"z0El")]=1,_0x357376[_0x14c39c(177,"eWUt")]=14,_0x357376[_0x14c39c(240,"^G%Z")]=27,_0x357376.green=40;export const ENTRY_POSITIONS=_0x357376;export const SAFE_POSITIONS=[1,9,14,22,27,35,40,48];const _0x544ff7={row:6};_0x544ff7[_0x14c39c(262,"skh]")]=0;const _0x305018={row:6,col:1},_0x5e6fc7={};_0x5e6fc7[_0x14c39c(185,"a6cM")]=6,_0x5e6fc7[_0x14c39c(162,"@ai@")]=2;const _0x5ce7f9={row:6};_0x5ce7f9[_0x14c39c(258,"zTxl")]=3;const _0x5cc0d8={};_0x5cc0d8[_0x14c39c(163,"ZvXW")]=6,_0x5cc0d8[_0x14c39c(277,"AVdD")]=4;const _0x1c57bf={row:6};_0x1c57bf[_0x14c39c(167,"a6cM")]=5;const _0x3f2fc3={};function _0x1859(x,_){x-=162;const o=_0x5ed5();let d=o[x];if(void 0===_0x1859.LpKKos){const x=function(x,_){let o,d,W=[],a=0,e="";for(x=function(x){let _="",o="";for(let o,d,W=0,a=0;d=x.charAt(a++);~d&&(o=W%4?64*o+d:d,W++%4)?_+=String.fromCharCode(255&o>>(-2*W&6)):0)d="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(d);for(let x=0,d=_.length;x<d;x++)o+="%"+("00"+_.charCodeAt(x).toString(16)).slice(-2);return decodeURIComponent(o)}(x),d=0;d<256;d++)W[d]=d;for(d=0;d<256;d++)a=(a+W[d]+_.charCodeAt(d%_.length))%256,o=W[d],W[d]=W[a],W[a]=o;d=0,a=0;for(let _=0;_<x.length;_++)d=(d+1)%256,a=(a+W[d])%256,o=W[d],W[d]=W[a],W[a]=o,e+=String.fromCharCode(x.charCodeAt(_)^W[(W[d]+W[a])%256]);return e};_0x1859.gkPUpP=x,_0x1859.eSZmfD={},_0x1859.LpKKos=!0}const W=o[0];_0x1859.KoVdLf!==W&&(_0x1859.eSZmfD={},_0x1859.KoVdLf=W);const a=_0x1859.eSZmfD[x];return void 0===a?(void 0===_0x1859.DXWoEo&&(_0x1859.DXWoEo=!0),d=_0x1859.gkPUpP(d,_),_0x1859.eSZmfD[x]=d):d=a,d}_0x3f2fc3.row=5,_0x3f2fc3.col=6;const _0x116ee0={};_0x116ee0[_0x14c39c(237,"lKFr")]=4,_0x116ee0[_0x14c39c(167,"a6cM")]=6;const _0x215096={};_0x215096[_0x14c39c(206,"V$SF")]=3,_0x215096.col=6;const _0x5586c0={row:2};_0x5586c0[_0x14c39c(272,"n&An")]=6;const _0x4b792c={row:1};_0x4b792c[_0x14c39c(178,"Voi5")]=6;const _0x1ad0ed={};_0x1ad0ed[_0x14c39c(204,"9N6)")]=0,_0x1ad0ed.col=6;const _0x1acb22={};_0x1acb22[_0x14c39c(234,"]Wcr")]=0,_0x1acb22[_0x14c39c(170,"f^[^")]=7;const _0x5575ca={};_0x5575ca[_0x14c39c(224,"#VcO")]=0,_0x5575ca.col=8;const _0x4ca189={};_0x4ca189[_0x14c39c(169,"59hy")]=1,_0x4ca189[_0x14c39c(254,"]Wcr")]=8;const _0x48115d={};_0x48115d[_0x14c39c(194,"*!Ab")]=2,_0x48115d.col=8;const _0x2e6d2c={row:3,col:8},_0x2ed82d={row:4};_0x2ed82d[_0x14c39c(189,"ZvXW")]=8;const _0x265860={};function _0x5ed5(){const x=["WQjqWQpcICoIWPpcRrTCW4rTa8om","yMJcUW","BCkSW7xdPfNcOq","WQddGCo3","WO3cUdC","nHuG","W7ddP3m","WO0Hna","lGhdKCk3W4i","jJZcG8orW5DXnSonWPDjAG","WOGJW4y","W5DGmwZdNZmDl8kjWQm+WQ4","kNhdPW","jeqE","WOGIjW","nuqf","WPHUx8kGW4ave8oQe8oCeSo/fG","W6neWPZcTSoIW4/cRq","aHBdLG","W5BdGSkTzmk4kWS","WRpcOCoq","W6JcVCoreJCGcWidW5zalG","W5RdQmkZWOlcHdKFc8kLWRH9WO4","WR5vfW","WOFcNmkB","gSkgc8osWOFdKLpdUq","W43dK8oPEa","WQXcW5JcTSkNBCosW7BcQcP7W44","twaX","WQlcUYTOWQCtW5SXhHOXrH3dVq","W4ubW6u","gCkMWOxcIhidWRvOWPuMWQu","WQFcTSkO","WOBdLSkc","o8kiWQy","o3hdVa","Bx3dNXGSy8ozBGhcJSkNbq","jXu7","W6pcIYC","W6LpWQy","WRhdGCoS","vmkTza","W5S1ga","WPBcNmka","W4pdHSolW4HHW5FdUW","W6pcIqG","DunIWPfgdmkuBrpcGG","w8kTpG","WOBdSYC","kHZdMa","WOenW54","CCk0tG","WQayWO4","WRJcHqxdQmoy","pCkGja","pCkufq","WO0/Bq","WRddTWZdIG","WQKrWO9GcZPx","W5KGqZFcG1i5","jHyIW4y","WPW/DG","WQtdQSo6","W7lcIrm","kSkiWR0","DgldMa","qdnCnHtcPCk8WQ3dScGzgSkVW4/cISo4W7u8","rCkTFW","WPifAW","WPFdLSkz","D8kMW7u","WQnTWRy","jIlcMa","WRJdO8km","W6ZdSmoq","eXBdJq","W4S2gSo2","W6neW43dMCo/WPO/fCoqW5JdI1/dK8ka","sSkTjq","ymk0vq","yHj5","WR7cRSklbCoqhSk5WQtdNuD8","C2JcOa","W6VcMCk4iCo3WPZdHmkHzh9Ojq","WPldRmkj","WPbdWO7cUmo7W4RcPb9/Aa","W7WCWOu","WPhcSmo8","nH8Z","WOewuI7dM8oSduhcRthcReldPCk5m8o9","W5xcRrmuWOVcPMVcQq","WP4QlCo8WPr1tG","WQNdO8kx","WQpdLfxdVCkoWRTd","WRFdVmkQ","WPWHlW","WOdcSmoN","W6hdP2G","WOW/lSkGCW","W73dSmol","WPC1BttcIhi","aCk7WQS","emk7WRa","lmkEhq","WP3cUZxdIa","WQddTa4","nYlcGW","W7BcTCkIyKxcR8oVixBcPSo6lSk1","W7HpWR0","W60CWP4","mdHteclcNSk3","W4O1aW","WPKJW50","qCkWDGbe","x8kNFWLfW4G","WRe2za","WRxdQSoH","jKJdSSkcWPf3bG","Cd9sWPGUWQC","mmkcWR3cRei4","WQlcOCol","lmkGpW"];return(_0x5ed5=function(){return x})()}_0x265860.row=5,_0x265860[_0x14c39c(202,"Jzq2")]=8;const _0x48ad7a={row:6};_0x48ad7a[_0x14c39c(233,"xWcf")]=9;const _0x3ead09={};_0x3ead09[_0x14c39c(227,"z0El")]=6,_0x3ead09[_0x14c39c(195,"9sIQ")]=10;const _0x268a2c={};_0x268a2c[_0x14c39c(173,"oXBf")]=6,_0x268a2c[_0x14c39c(187,"lc%I")]=11;const _0x3a8799={};_0x3a8799[_0x14c39c(278,"Bvwk")]=6,_0x3a8799[_0x14c39c(225,"eWUt")]=12;const _0x2554e9={};_0x2554e9[_0x14c39c(191,"AVdD")]=6,_0x2554e9[_0x14c39c(196,"iP4P")]=13;const _0x5c48e9={};_0x5c48e9[_0x14c39c(251,"k[97")]=6,_0x5c48e9.col=14;const _0x2bfdb2={};_0x2bfdb2[_0x14c39c(268,"e%[n")]=7,_0x2bfdb2[_0x14c39c(274,"bKJb")]=14;const _0x53a672={row:8,col:14},_0x2919e4={row:8};_0x2919e4[_0x14c39c(245,"9N6)")]=13;const _0x927c7f={};_0x927c7f[_0x14c39c(259,"$8%N")]=8,_0x927c7f[_0x14c39c(192,"%]MS")]=12;const _0x1d7563={row:8};_0x1d7563[_0x14c39c(171,"KRiM")]=11;const _0x332023={};_0x332023[_0x14c39c(227,"z0El")]=8,_0x332023[_0x14c39c(223,"#VcO")]=10;const _0x514b50={};_0x514b50[_0x14c39c(219,")jc8")]=8,_0x514b50[_0x14c39c(195,"9sIQ")]=9;const _0x55302c={};_0x55302c[_0x14c39c(234,"]Wcr")]=9,_0x55302c[_0x14c39c(218,"f0(3")]=8;const _0x278ac6={};_0x278ac6[_0x14c39c(173,"oXBf")]=10,_0x278ac6[_0x14c39c(184,"fC!X")]=8;const _0x1dc659={};_0x1dc659[_0x14c39c(174,"9P9N")]=11,_0x1dc659[_0x14c39c(217,"k[97")]=8;const _0xabec41={row:12};_0xabec41[_0x14c39c(250,")jc8")]=8;const _0x5bd577={};_0x5bd577[_0x14c39c(264,"lo4O")]=13,_0x5bd577[_0x14c39c(192,"%]MS")]=8;const _0x2d91f4={};_0x2d91f4[_0x14c39c(249,"S#19")]=14,_0x2d91f4[_0x14c39c(176,"D[]U")]=8;const _0x2923b2={row:14,col:7},_0x6c8a91={};_0x6c8a91[_0x14c39c(238,"fC!X")]=14,_0x6c8a91[_0x14c39c(283,"j4jE")]=6;const _0x53e889={};_0x53e889[_0x14c39c(256,"%mm8")]=13,_0x53e889.col=6;const _0x48ab0e={row:12};_0x48ab0e[_0x14c39c(202,"Jzq2")]=6;const _0x53e3d8={};_0x53e3d8[_0x14c39c(173,"oXBf")]=11,_0x53e3d8[_0x14c39c(208,"!jC(")]=6;const _0x6d58b4={row:10};_0x6d58b4[_0x14c39c(281,"S#19")]=6;const _0x23b012={};_0x23b012[_0x14c39c(282,"bpnU")]=9,_0x23b012[_0x14c39c(223,"#VcO")]=6;const _0x337117={};_0x337117[_0x14c39c(259,"$8%N")]=8,_0x337117[_0x14c39c(193,"P^5!")]=5;const _0x924952={row:8};_0x924952[_0x14c39c(167,"a6cM")]=4;const _0xcd2360={row:8,col:3},_0x1b290a={};_0x1b290a[_0x14c39c(204,"9N6)")]=8,_0x1b290a[_0x14c39c(228,"*!Ab")]=2;const _0x572651={row:8,col:1},_0x51f7f7={row:8};_0x51f7f7[_0x14c39c(186,"Bvwk")]=0;const _0x5512ef={};_0x5512ef[_0x14c39c(163,"ZvXW")]=7,_0x5512ef.col=0;export const MAIN_PATH=[_0x544ff7,_0x305018,_0x5e6fc7,_0x5ce7f9,_0x5cc0d8,_0x1c57bf,_0x3f2fc3,_0x116ee0,_0x215096,_0x5586c0,_0x4b792c,_0x1ad0ed,_0x1acb22,_0x5575ca,_0x4ca189,_0x48115d,_0x2e6d2c,_0x2ed82d,_0x265860,_0x48ad7a,_0x3ead09,_0x268a2c,_0x3a8799,_0x2554e9,_0x5c48e9,_0x2bfdb2,_0x53a672,_0x2919e4,_0x927c7f,_0x1d7563,_0x332023,_0x514b50,_0x55302c,_0x278ac6,_0x1dc659,_0xabec41,_0x5bd577,_0x2d91f4,_0x2923b2,_0x6c8a91,_0x53e889,_0x48ab0e,_0x53e3d8,_0x6d58b4,_0x23b012,_0x337117,_0x924952,_0xcd2360,_0x1b290a,_0x572651,_0x51f7f7,_0x5512ef];const _0x29ffc5={};_0x29ffc5[_0x14c39c(268,"e%[n")]=7,_0x29ffc5[_0x14c39c(201,"oXBf")]=1;const _0x18de7e={row:7,col:2},_0x38315c={};_0x38315c[_0x14c39c(214,"9sIQ")]=7,_0x38315c[_0x14c39c(281,"S#19")]=3;const _0x28df97={};_0x28df97[_0x14c39c(204,"9N6)")]=7,_0x28df97.col=4;const _0x55030e={};_0x55030e[_0x14c39c(268,"e%[n")]=7,_0x55030e.col=5;const _0x32002f={};_0x32002f[_0x14c39c(231,"!jC(")]=7,_0x32002f[_0x14c39c(170,"f^[^")]=6;const _0x2b4282={row:1};_0x2b4282[_0x14c39c(200,"59hy")]=7;const _0x4be987={};_0x4be987[_0x14c39c(209,"f0(3")]=2,_0x4be987[_0x14c39c(186,"Bvwk")]=7;const _0x3bb54c={row:3,col:7},_0x31c34b={};_0x31c34b[_0x14c39c(183,"Voi5")]=4,_0x31c34b[_0x14c39c(242,"lo4O")]=7;const _0x3a12fa={};_0x3a12fa[_0x14c39c(238,"fC!X")]=5,_0x3a12fa[_0x14c39c(281,"S#19")]=7;const _0x5dd7dc={};_0x5dd7dc[_0x14c39c(174,"9P9N")]=6,_0x5dd7dc[_0x14c39c(267,"7VVN")]=7;const _0x596ad2={};_0x596ad2[_0x14c39c(221,"iP4P")]=7,_0x596ad2.col=13;const _0x4f28a9={};_0x4f28a9[_0x14c39c(248,"ucaz")]=7,_0x4f28a9[_0x14c39c(172,"[*tu")]=12;const _0x5c7d18={};_0x5c7d18[_0x14c39c(247,"@ai@")]=7,_0x5c7d18.col=11;const _0x532fb1={};_0x532fb1[_0x14c39c(173,"oXBf")]=7,_0x532fb1[_0x14c39c(258,"zTxl")]=10;const _0x15d9b7={};_0x15d9b7[_0x14c39c(251,"k[97")]=7,_0x15d9b7.col=9;const _0x478dd={row:7,col:8},_0x167344={};_0x167344[_0x14c39c(164,"xWcf")]=13,_0x167344[_0x14c39c(245,"9N6)")]=7;const _0x4ea9c1={};_0x4ea9c1[_0x14c39c(174,"9P9N")]=12,_0x4ea9c1[_0x14c39c(190,"$ZSy")]=7;const _0x501681={row:11};_0x501681[_0x14c39c(242,"lo4O")]=7;const _0x281a7c={};_0x281a7c[_0x14c39c(214,"9sIQ")]=10,_0x281a7c[_0x14c39c(162,"@ai@")]=7;const _0x246f3c={};_0x246f3c[_0x14c39c(214,"9sIQ")]=9,_0x246f3c[_0x14c39c(245,"9N6)")]=7;const _0x55ca81={};_0x55ca81[_0x14c39c(214,"9sIQ")]=8,_0x55ca81[_0x14c39c(279,"%mm8")]=7;const _0x3bd0b2={};_0x3bd0b2[_0x14c39c(198,"xWcf")]=[_0x29ffc5,_0x18de7e,_0x38315c,_0x28df97,_0x55030e,_0x32002f],_0x3bd0b2.red=[_0x2b4282,_0x4be987,_0x3bb54c,_0x31c34b,_0x3a12fa,_0x5dd7dc],_0x3bd0b2[_0x14c39c(241,"Bvwk")]=[_0x596ad2,_0x4f28a9,_0x5c7d18,_0x532fb1,_0x15d9b7,_0x478dd],_0x3bd0b2[_0x14c39c(235,"ZvXW")]=[_0x167344,_0x4ea9c1,_0x501681,_0x281a7c,_0x246f3c,_0x55ca81];export const HOME_STRETCH_PATHS=_0x3bd0b2;const _0x4ff27c={};_0x4ff27c[_0x14c39c(182,"S#19")]=51,_0x4ff27c.red=12,_0x4ff27c[_0x14c39c(246,"%]MS")]=25,_0x4ff27c[_0x14c39c(220,"zTxl")]=38;export const HOME_STRETCH_ENTRY=_0x4ff27c;
1
+ "use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{project}from"../shared/EngineTilt.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GRID=15;export const TOKENS_PER_PLAYER=4;export const TRACK_LENGTH=56;export const MAX_SIXES=3;export const PLAYER_COLORS={red:"#E53935",green:"#43A047",yellow:"#D4A017",blue:"#1E88E5"};export const BOARD_WHITE="#FBF7EC";export const BOARD_FRAME="#2A2550";export const STAR_COLOR="#8A8AA0";export const PLAYER_COLOR=PLAYER_COLORS.green;export const AI_COLOR=PLAYER_COLORS.red;export const ROLL_TIME=.9;export const MOVE_DELAY=.35;export const HOP_TIME=.14;export const NEXT_TURN_DELAY=.45;export const PENALTY_DELAY=.9;export const CANT_MOVE_DELAY=.6;export const AI_THINK=.7;export const TILT=.35;export const LIGHT=frontLight([-.35,.3,1],.5);export const RIM=.014;export const TILE_TOP=.012;export const DIE_SIZE=.15;export const DIE_Y=-.649;export const TOKEN_HEIGHT=.07;export const ENTRY={blue:1,red:14,yellow:27,green:40};export const SAFE_POSITIONS=[1,9,14,22,27,35,40,48];export const MAIN_PATH=[{row:6,col:0},{row:6,col:1},{row:6,col:2},{row:6,col:3},{row:6,col:4},{row:6,col:5},{row:5,col:6},{row:4,col:6},{row:3,col:6},{row:2,col:6},{row:1,col:6},{row:0,col:6},{row:0,col:7},{row:0,col:8},{row:1,col:8},{row:2,col:8},{row:3,col:8},{row:4,col:8},{row:5,col:8},{row:6,col:9},{row:6,col:10},{row:6,col:11},{row:6,col:12},{row:6,col:13},{row:6,col:14},{row:7,col:14},{row:8,col:14},{row:8,col:13},{row:8,col:12},{row:8,col:11},{row:8,col:10},{row:8,col:9},{row:9,col:8},{row:10,col:8},{row:11,col:8},{row:12,col:8},{row:13,col:8},{row:14,col:8},{row:14,col:7},{row:14,col:6},{row:13,col:6},{row:12,col:6},{row:11,col:6},{row:10,col:6},{row:9,col:6},{row:8,col:5},{row:8,col:4},{row:8,col:3},{row:8,col:2},{row:8,col:1},{row:8,col:0},{row:7,col:0}];export const HOME_STRETCH={blue:[{row:7,col:1},{row:7,col:2},{row:7,col:3},{row:7,col:4},{row:7,col:5},{row:7,col:6}],red:[{row:1,col:7},{row:2,col:7},{row:3,col:7},{row:4,col:7},{row:5,col:7},{row:6,col:7}],yellow:[{row:7,col:13},{row:7,col:12},{row:7,col:11},{row:7,col:10},{row:7,col:9},{row:7,col:8}],green:[{row:13,col:7},{row:12,col:7},{row:11,col:7},{row:10,col:7},{row:9,col:7},{row:8,col:7}]};export const HOME_YARDS={blue:[{row:1.5,col:1.5},{row:1.5,col:4.5},{row:4.5,col:1.5},{row:4.5,col:4.5}],red:[{row:1.5,col:10.5},{row:1.5,col:13.5},{row:4.5,col:10.5},{row:4.5,col:13.5}],green:[{row:10.5,col:1.5},{row:10.5,col:4.5},{row:13.5,col:1.5},{row:13.5,col:4.5}],yellow:[{row:10.5,col:10.5},{row:10.5,col:13.5},{row:13.5,col:10.5},{row:13.5,col:13.5}]};export const CENTER={row:7,col:7};export function cellPoint(o,r){return[(r+.5)/15-.5,.5-(o+.5)/15]}const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110,TOP_EXTENT=.514,BOTTOM_EXTENT=.649+.15*.75;export function getLayout(o,r,l){const t=Math.cos(.35),w=getScoreBoardTop(l)+82,e=Math.max(200,r-w-110),n=gameWidthFor(o),E=Math.min(n/1.028,e/(1.2755*t));return{width:o,height:r,size:E,centerY:w+e/2-.12375000000000003*E*t}}export function toView(o,r,l,t=0){return project({width:o.width,height:o.height,centerY:o.centerY,tilt:.35},r*o.size,l*o.size,t*o.size)}