@nayan-ui/games 1.19.0 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1808) hide show
  1. package/README.md +53 -191
  2. package/lib/module/assets/fonts/Inter-SemiBold.ttf +0 -0
  3. package/lib/module/assets/models/explorer/explorer.glb +0 -0
  4. package/lib/module/assets/models/explorer/params.json +51 -0
  5. package/lib/module/assets/models/explorer/source.json +222 -0
  6. package/lib/module/assets/models/play-with-tua/play-with-tua.glb +0 -0
  7. package/lib/module/assets/models/play-with-tua/sources.json +141 -0
  8. package/lib/module/assets/sfx/balloon_pop.wav +0 -0
  9. package/lib/module/assets/sfx/blocked.wav +0 -0
  10. package/lib/module/assets/sfx/boing.wav +0 -0
  11. package/lib/module/assets/sfx/bonus.wav +0 -0
  12. package/lib/module/assets/sfx/boom.wav +0 -0
  13. package/lib/module/assets/sfx/bump.wav +0 -0
  14. package/lib/module/assets/sfx/cannon.wav +0 -0
  15. package/lib/module/assets/sfx/capture.wav +0 -0
  16. package/lib/module/assets/sfx/card_flip.wav +0 -0
  17. package/lib/module/assets/sfx/card_place.wav +0 -0
  18. package/lib/module/assets/sfx/catch.wav +0 -0
  19. package/lib/module/assets/sfx/chime.wav +0 -0
  20. package/lib/module/assets/sfx/chomp.wav +0 -0
  21. package/lib/module/assets/sfx/chomp_alt.wav +0 -0
  22. package/lib/module/assets/sfx/clack.wav +0 -0
  23. package/lib/module/assets/sfx/clang.wav +0 -0
  24. package/lib/module/assets/sfx/clash.wav +0 -0
  25. package/lib/module/assets/sfx/click.wav +0 -0
  26. package/lib/module/assets/sfx/coin.wav +0 -0
  27. package/lib/module/assets/sfx/combo.wav +0 -0
  28. package/lib/module/assets/sfx/crash.wav +0 -0
  29. package/lib/module/assets/sfx/crunch.wav +0 -0
  30. package/lib/module/assets/sfx/dance.wav +0 -0
  31. package/lib/module/assets/sfx/deselect.wav +0 -0
  32. package/lib/module/assets/sfx/dice_roll.wav +0 -0
  33. package/lib/module/assets/sfx/die.wav +0 -0
  34. package/lib/module/assets/sfx/draw.wav +0 -0
  35. package/lib/module/assets/sfx/drop.wav +0 -0
  36. package/lib/module/assets/sfx/eat.wav +0 -0
  37. package/lib/module/assets/sfx/engine.wav +0 -0
  38. package/lib/module/assets/sfx/error.wav +0 -0
  39. package/lib/module/assets/sfx/flag.wav +0 -0
  40. package/lib/module/assets/sfx/flap.wav +0 -0
  41. package/lib/module/assets/sfx/flip_disc.wav +0 -0
  42. package/lib/module/assets/sfx/footstep_run.wav +0 -0
  43. package/lib/module/assets/sfx/footstep_walk.wav +0 -0
  44. package/lib/module/assets/sfx/game_over.wav +0 -0
  45. package/lib/module/assets/sfx/gate.wav +0 -0
  46. package/lib/module/assets/sfx/hit.wav +0 -0
  47. package/lib/module/assets/sfx/hop.wav +0 -0
  48. package/lib/module/assets/sfx/hurt.wav +0 -0
  49. package/lib/module/assets/sfx/invalid.wav +0 -0
  50. package/lib/module/assets/sfx/jump.wav +0 -0
  51. package/lib/module/assets/sfx/ladder.wav +0 -0
  52. package/lib/module/assets/sfx/land.wav +0 -0
  53. package/lib/module/assets/sfx/laugh.wav +0 -0
  54. package/lib/module/assets/sfx/lose.wav +0 -0
  55. package/lib/module/assets/sfx/merge.wav +0 -0
  56. package/lib/module/assets/sfx/miss.wav +0 -0
  57. package/lib/module/assets/sfx/nitro.wav +0 -0
  58. package/lib/module/assets/sfx/pew.wav +0 -0
  59. package/lib/module/assets/sfx/place.wav +0 -0
  60. package/lib/module/assets/sfx/pling.wav +0 -0
  61. package/lib/module/assets/sfx/point.wav +0 -0
  62. package/lib/module/assets/sfx/pop.wav +0 -0
  63. package/lib/module/assets/sfx/pop_soft.wav +0 -0
  64. package/lib/module/assets/sfx/power_up.wav +0 -0
  65. package/lib/module/assets/sfx/reveal.wav +0 -0
  66. package/lib/module/assets/sfx/robot.wav +0 -0
  67. package/lib/module/assets/sfx/rotate.wav +0 -0
  68. package/lib/module/assets/sfx/run_steps.wav +0 -0
  69. package/lib/module/assets/sfx/select.wav +0 -0
  70. package/lib/module/assets/sfx/shuffle.wav +0 -0
  71. package/lib/module/assets/sfx/six.wav +0 -0
  72. package/lib/module/assets/sfx/slice.wav +0 -0
  73. package/lib/module/assets/sfx/slide.wav +0 -0
  74. package/lib/module/assets/sfx/snake.wav +0 -0
  75. package/lib/module/assets/sfx/snap.wav +0 -0
  76. package/lib/module/assets/sfx/splash.wav +0 -0
  77. package/lib/module/assets/sfx/star.wav +0 -0
  78. package/lib/module/assets/sfx/start.wav +0 -0
  79. package/lib/module/assets/sfx/swoosh.wav +0 -0
  80. package/lib/module/assets/sfx/tap.wav +0 -0
  81. package/lib/module/assets/sfx/thud.wav +0 -0
  82. package/lib/module/assets/sfx/thunk.wav +0 -0
  83. package/lib/module/assets/sfx/tick.wav +0 -0
  84. package/lib/module/assets/sfx/time_up.wav +0 -0
  85. package/lib/module/assets/sfx/tock.wav +0 -0
  86. package/lib/module/assets/sfx/walk_steps.wav +0 -0
  87. package/lib/module/assets/sfx/warning.wav +0 -0
  88. package/lib/module/assets/sfx/whack.wav +0 -0
  89. package/lib/module/assets/sfx/whoosh.wav +0 -0
  90. package/lib/module/assets/sfx/win.wav +0 -0
  91. package/lib/module/assets/sfx/zap.wav +0 -0
  92. package/lib/module/assets/textures/ad_bolt.png +0 -0
  93. package/lib/module/assets/textures/ad_bubbles.png +0 -0
  94. package/lib/module/assets/textures/ad_chevrons.png +0 -0
  95. package/lib/module/assets/textures/asphalt.png +0 -0
  96. package/lib/module/assets/textures/bark.jpg +0 -0
  97. package/lib/module/assets/textures/explorer-atlas.png +0 -0
  98. package/lib/module/assets/textures/facade.png +0 -0
  99. package/lib/module/assets/textures/grass.png +0 -0
  100. package/lib/module/assets/textures/leaves.png +0 -0
  101. package/lib/module/assets/textures/limestone.jpg +0 -0
  102. package/lib/module/assets/textures/meadow.jpg +0 -0
  103. package/lib/module/assets/textures/nature-sources.json +87 -0
  104. package/lib/module/assets/textures/pine.png +0 -0
  105. package/lib/module/assets/textures/river.jpg +0 -0
  106. package/lib/module/assets/textures/soft_glow.png +0 -0
  107. package/lib/module/games/arrows/Arrows.js +1 -1
  108. package/lib/module/games/arrows/ArrowsConstants.js +1 -1
  109. package/lib/module/games/arrows/ArrowsGame.js +1 -0
  110. package/lib/module/games/arrows/ArrowsScene.js +1 -0
  111. package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -1
  112. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -1
  113. package/lib/module/games/balloon-blaster/BalloonBlasterGame.js +1 -0
  114. package/lib/module/games/balloon-blaster/BalloonBlasterPhysics.js +1 -0
  115. package/lib/module/games/balloon-blaster/BalloonBlasterScene.js +1 -0
  116. package/lib/module/games/bike-racing/BikeMeshes.js +1 -0
  117. package/lib/module/games/bike-racing/BikeRacing.js +1 -1
  118. package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -1
  119. package/lib/module/games/bike-racing/BikeRacingGame.js +1 -0
  120. package/lib/module/games/bike-racing/BikeRacingScene.js +1 -0
  121. package/lib/module/games/block-blast/BlockBlast.js +1 -1
  122. package/lib/module/games/block-blast/BlockBlastConstants.js +1 -1
  123. package/lib/module/games/block-blast/BlockBlastGame.js +1 -0
  124. package/lib/module/games/block-blast/BlockBlastScene.js +1 -0
  125. package/lib/module/games/block-breaker/BlockBreaker.js +1 -1
  126. package/lib/module/games/block-breaker/BlockBreakerConstants.js +1 -1
  127. package/lib/module/games/block-breaker/BlockBreakerGame.js +1 -0
  128. package/lib/module/games/block-breaker/BlockBreakerScene.js +1 -0
  129. package/lib/module/games/bluk/Bluk.js +1 -1
  130. package/lib/module/games/bluk/BlukConstants.js +1 -1
  131. package/lib/module/games/bluk/BlukGame.js +1 -0
  132. package/lib/module/games/bluk/BlukRules.js +1 -0
  133. package/lib/module/games/bluk/BlukScene.js +1 -0
  134. package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -1
  135. package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -1
  136. package/lib/module/games/bubble-shooter/BubbleShooterGame.js +1 -0
  137. package/lib/module/games/bubble-shooter/BubbleShooterScene.js +1 -0
  138. package/lib/module/games/candy-crush/CandyCrush.js +1 -1
  139. package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -1
  140. package/lib/module/games/candy-crush/CandyCrushGame.js +1 -0
  141. package/lib/module/games/candy-crush/CandyCrushScene.js +1 -0
  142. package/lib/module/games/car-racing/CarMeshes.js +1 -0
  143. package/lib/module/games/car-racing/CarRacing.js +1 -1
  144. package/lib/module/games/car-racing/CarRacingConstants.js +1 -1
  145. package/lib/module/games/car-racing/CarRacingFacade.js +1 -0
  146. package/lib/module/games/car-racing/CarRacingGame.js +1 -0
  147. package/lib/module/games/car-racing/CarRacingScene.js +1 -0
  148. package/lib/module/games/car-racing/CarRacingScenery.js +1 -0
  149. package/lib/module/games/chameleon-run/ChameleonRun.js +1 -1
  150. package/lib/module/games/chameleon-run/ChameleonRunBackdrop.js +1 -0
  151. package/lib/module/games/chameleon-run/ChameleonRunConstants.js +1 -1
  152. package/lib/module/games/chameleon-run/ChameleonRunGame.js +1 -0
  153. package/lib/module/games/chameleon-run/ChameleonRunMeshes.js +1 -0
  154. package/lib/module/games/chameleon-run/ChameleonRunRules.js +1 -0
  155. package/lib/module/games/chameleon-run/ChameleonRunScene.js +1 -0
  156. package/lib/module/games/checkers/Checkers.js +1 -1
  157. package/lib/module/games/checkers/CheckersAI.js +1 -0
  158. package/lib/module/games/checkers/CheckersConstants.js +1 -1
  159. package/lib/module/games/checkers/CheckersGame.js +1 -0
  160. package/lib/module/games/checkers/CheckersRules.js +1 -0
  161. package/lib/module/games/checkers/CheckersScene.js +1 -0
  162. package/lib/module/games/color-switch/ColorSwitch.js +1 -1
  163. package/lib/module/games/color-switch/ColorSwitchConstants.js +1 -1
  164. package/lib/module/games/color-switch/ColorSwitchGame.js +1 -0
  165. package/lib/module/games/color-switch/ColorSwitchScene.js +1 -0
  166. package/lib/module/games/colors-sort/ColorsSort.js +1 -1
  167. package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -1
  168. package/lib/module/games/colors-sort/ColorsSortGame.js +1 -0
  169. package/lib/module/games/colors-sort/ColorsSortScene.js +1 -0
  170. package/lib/module/games/connect-em-all/ConnectEmAll.js +1 -1
  171. package/lib/module/games/connect-em-all/ConnectEmAllConstants.js +1 -1
  172. package/lib/module/games/connect-em-all/ConnectEmAllGame.js +1 -0
  173. package/lib/module/games/connect-em-all/ConnectEmAllScene.js +1 -0
  174. package/lib/module/games/crossy-road/CrossyRoad.js +1 -1
  175. package/lib/module/games/crossy-road/CrossyRoadCamera.js +1 -0
  176. package/lib/module/games/crossy-road/CrossyRoadConstants.js +1 -1
  177. package/lib/module/games/crossy-road/CrossyRoadGame.js +1 -0
  178. package/lib/module/games/crossy-road/CrossyRoadMeshes.js +1 -0
  179. package/lib/module/games/crossy-road/CrossyRoadPerson.js +1 -0
  180. package/lib/module/games/crossy-road/CrossyRoadRules.js +1 -0
  181. package/lib/module/games/crossy-road/CrossyRoadScene.js +1 -0
  182. package/lib/module/games/dino-jump/DinoJump.js +1 -1
  183. package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -1
  184. package/lib/module/games/dino-jump/DinoJumpGame.js +1 -0
  185. package/lib/module/games/dino-jump/DinoJumpScene.js +1 -0
  186. package/lib/module/games/dots-and-boxes/DotsAndBoxes.js +1 -1
  187. package/lib/module/games/dots-and-boxes/DotsAndBoxesConstants.js +1 -1
  188. package/lib/module/games/dots-and-boxes/DotsAndBoxesGame.js +1 -0
  189. package/lib/module/games/dots-and-boxes/DotsAndBoxesScene.js +1 -0
  190. package/lib/module/games/falling-sticks/FallingSticks.js +1 -1
  191. package/lib/module/games/falling-sticks/FallingSticksConstants.js +1 -1
  192. package/lib/module/games/falling-sticks/FallingSticksGame.js +1 -0
  193. package/lib/module/games/falling-sticks/FallingSticksRules.js +1 -0
  194. package/lib/module/games/falling-sticks/FallingSticksScene.js +1 -0
  195. package/lib/module/games/find-different-number/FindDifferentNumber.js +1 -1
  196. package/lib/module/games/find-different-number/FindDifferentNumberConstants.js +1 -1
  197. package/lib/module/games/find-different-number/FindDifferentNumberGame.js +1 -0
  198. package/lib/module/games/find-different-number/FindDifferentNumberRules.js +1 -0
  199. package/lib/module/games/find-different-number/FindDifferentNumberScene.js +1 -0
  200. package/lib/module/games/flappy-bird/FlappyBird.js +1 -1
  201. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -1
  202. package/lib/module/games/flappy-bird/FlappyBirdGame.js +1 -0
  203. package/lib/module/games/flappy-bird/FlappyBirdScene.js +1 -0
  204. package/lib/module/games/fruit-merger/FruitMerger.js +1 -1
  205. package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -1
  206. package/lib/module/games/fruit-merger/FruitMergerGame.js +1 -0
  207. package/lib/module/games/fruit-merger/FruitMergerRules.js +1 -0
  208. package/lib/module/games/fruit-merger/FruitMergerScene.js +1 -0
  209. package/lib/module/games/fruit-ninja/FruitNinja.js +1 -1
  210. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -1
  211. package/lib/module/games/fruit-ninja/FruitNinjaGame.js +1 -0
  212. package/lib/module/games/fruit-ninja/FruitNinjaScene.js +1 -0
  213. package/lib/module/games/fruit-ninja/FruitNinjaWorld.js +1 -0
  214. package/lib/module/games/game-2048/Game2048.js +1 -1
  215. package/lib/module/games/game-2048/Game2048Constants.js +1 -1
  216. package/lib/module/games/game-2048/Game2048Game.js +1 -0
  217. package/lib/module/games/game-2048/Game2048Rules.js +1 -0
  218. package/lib/module/games/game-2048/Game2048Scene.js +1 -0
  219. package/lib/module/games/knife-hit/KnifeHit.js +1 -1
  220. package/lib/module/games/knife-hit/KnifeHitConstants.js +1 -1
  221. package/lib/module/games/knife-hit/KnifeHitGame.js +1 -0
  222. package/lib/module/games/knife-hit/KnifeHitScene.js +1 -0
  223. package/lib/module/games/ludo-king/LudoKing.js +1 -1
  224. package/lib/module/games/ludo-king/LudoKingConstants.js +1 -1
  225. package/lib/module/games/ludo-king/LudoKingGame.js +1 -0
  226. package/lib/module/games/ludo-king/LudoKingRules.js +1 -0
  227. package/lib/module/games/ludo-king/LudoKingScene.js +1 -0
  228. package/lib/module/games/maze-runner/MazeRunner.js +1 -1
  229. package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -1
  230. package/lib/module/games/maze-runner/MazeRunnerGame.js +1 -0
  231. package/lib/module/games/maze-runner/MazeRunnerRules.js +1 -0
  232. package/lib/module/games/maze-runner/MazeRunnerScene.js +1 -0
  233. package/lib/module/games/memory-match/MemoryMatch.js +1 -1
  234. package/lib/module/games/memory-match/MemoryMatchConstants.js +1 -1
  235. package/lib/module/games/memory-match/MemoryMatchGame.js +1 -0
  236. package/lib/module/games/memory-match/MemoryMatchRules.js +1 -0
  237. package/lib/module/games/memory-match/MemoryMatchScene.js +1 -0
  238. package/lib/module/games/mine-sweeper/MineSweeper.js +1 -1
  239. package/lib/module/games/mine-sweeper/MineSweeperConstants.js +1 -1
  240. package/lib/module/games/mine-sweeper/MineSweeperGame.js +1 -0
  241. package/lib/module/games/mine-sweeper/MineSweeperRules.js +1 -0
  242. package/lib/module/games/mine-sweeper/MineSweeperScene.js +1 -0
  243. package/lib/module/games/mob-control/MobControl.js +1 -1
  244. package/lib/module/games/mob-control/MobControlConstants.js +1 -1
  245. package/lib/module/games/mob-control/MobControlGame.js +1 -0
  246. package/lib/module/games/mob-control/MobControlMeshes.js +1 -0
  247. package/lib/module/games/mob-control/MobControlRenderer.js +1 -0
  248. package/lib/module/games/mob-control/MobControlRules.js +1 -0
  249. package/lib/module/games/mob-control/MobControlScene.js +1 -0
  250. package/lib/module/games/number-search/NumberSearch.js +1 -1
  251. package/lib/module/games/number-search/NumberSearchNumbers.js +1 -0
  252. package/lib/module/games/nuts-and-bolts/NutsAndBolts.js +1 -1
  253. package/lib/module/games/nuts-and-bolts/NutsAndBoltsConstants.js +1 -1
  254. package/lib/module/games/nuts-and-bolts/NutsAndBoltsGame.js +1 -0
  255. package/lib/module/games/nuts-and-bolts/NutsAndBoltsRules.js +1 -0
  256. package/lib/module/games/nuts-and-bolts/NutsAndBoltsScene.js +1 -0
  257. package/lib/module/games/pac-man/PacMan.js +1 -1
  258. package/lib/module/games/pac-man/PacManConstants.js +1 -1
  259. package/lib/module/games/pac-man/PacManGame.js +1 -0
  260. package/lib/module/games/pac-man/PacManRules.js +1 -0
  261. package/lib/module/games/pac-man/PacManScene.js +1 -0
  262. package/lib/module/games/paper-io/PaperIo.js +1 -1
  263. package/lib/module/games/paper-io/PaperIoConstants.js +1 -1
  264. package/lib/module/games/paper-io/PaperIoGame.js +1 -0
  265. package/lib/module/games/paper-io/PaperIoMeshes.js +1 -0
  266. package/lib/module/games/paper-io/PaperIoRules.js +1 -0
  267. package/lib/module/games/paper-io/PaperIoScene.js +1 -0
  268. package/lib/module/games/penguin-run/PenguinMeshes.js +1 -0
  269. package/lib/module/games/penguin-run/PenguinModel.js +1 -0
  270. package/lib/module/games/penguin-run/PenguinRun.js +1 -0
  271. package/lib/module/games/penguin-run/PenguinRunConstants.js +1 -0
  272. package/lib/module/games/penguin-run/PenguinRunGame.js +1 -0
  273. package/lib/module/games/penguin-run/PenguinRunScene.js +1 -0
  274. package/lib/module/games/perfect-circle/PerfectCircle.js +1 -1
  275. package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -1
  276. package/lib/module/games/perfect-circle/PerfectCircleGame.js +1 -0
  277. package/lib/module/games/perfect-circle/PerfectCircleRules.js +1 -0
  278. package/lib/module/games/perfect-circle/PerfectCircleScene.js +1 -0
  279. package/lib/module/games/pipe-connect/PipeConnect.js +1 -1
  280. package/lib/module/games/pipe-connect/PipeConnectConstants.js +1 -1
  281. package/lib/module/games/pipe-connect/PipeConnectGame.js +1 -0
  282. package/lib/module/games/pipe-connect/PipeConnectRules.js +1 -0
  283. package/lib/module/games/pipe-connect/PipeConnectScene.js +1 -0
  284. package/lib/module/games/play-with-tua/PlayWithTua.js +1 -0
  285. package/lib/module/games/play-with-tua/PlayWithTuaConstants.js +1 -0
  286. package/lib/module/games/play-with-tua/PlayWithTuaGame.js +1 -0
  287. package/lib/module/games/play-with-tua/PlayWithTuaModel.js +1 -0
  288. package/lib/module/games/play-with-tua/PlayWithTuaScene.js +1 -0
  289. package/lib/module/games/popit-fidget/PopitFidget.js +1 -1
  290. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -1
  291. package/lib/module/games/popit-fidget/PopitFidgetGame.js +1 -0
  292. package/lib/module/games/popit-fidget/PopitFidgetScene.js +1 -0
  293. package/lib/module/games/reversi/Reversi.js +1 -1
  294. package/lib/module/games/reversi/ReversiConstants.js +1 -1
  295. package/lib/module/games/reversi/ReversiGame.js +1 -0
  296. package/lib/module/games/reversi/ReversiRules.js +1 -0
  297. package/lib/module/games/reversi/ReversiScene.js +1 -0
  298. package/lib/module/games/search-grid/SearchGrid.js +1 -0
  299. package/lib/module/games/search-grid/SearchGridConstants.js +1 -0
  300. package/lib/module/games/search-grid/SearchGridGame.js +1 -0
  301. package/lib/module/games/search-grid/SearchGridScene.js +1 -0
  302. package/lib/module/games/shared/BackdropCard.js +1 -0
  303. package/lib/module/games/shared/EngineBackdrop.js +1 -0
  304. package/lib/module/games/shared/EngineBlasts.js +1 -0
  305. package/lib/module/games/shared/EngineBlocks.js +1 -0
  306. package/lib/module/games/shared/EngineControlText.js +1 -0
  307. package/lib/module/games/shared/EngineDice.js +1 -0
  308. package/lib/module/games/shared/EngineFootprint.js +1 -0
  309. package/lib/module/games/shared/EngineFruits.js +1 -0
  310. package/lib/module/games/shared/EngineGameLoader.js +1 -0
  311. package/lib/module/games/shared/EngineGameScreen.js +1 -0
  312. package/lib/module/games/shared/EngineGameWidth.js +1 -0
  313. package/lib/module/games/shared/EngineGameWidth.web.js +1 -0
  314. package/lib/module/games/shared/EngineGlyphs.js +1 -0
  315. package/lib/module/games/shared/EngineHud.js +1 -0
  316. package/lib/module/games/shared/EngineLoading.js +1 -0
  317. package/lib/module/games/shared/EngineMeadow.js +1 -0
  318. package/lib/module/games/shared/EngineMeshCache.js +1 -0
  319. package/lib/module/games/shared/EngineMeshes.js +1 -0
  320. package/lib/module/games/shared/EngineRacingChase.js +1 -0
  321. package/lib/module/games/shared/EngineRacingHandling.js +1 -0
  322. package/lib/module/games/shared/EngineReadyContext.js +1 -0
  323. package/lib/module/games/shared/EngineTilt.js +1 -0
  324. package/lib/module/games/shared/EngineTouchSurface.js +1 -0
  325. package/lib/module/games/shared/EngineUtils.js +1 -0
  326. package/lib/module/games/shared/GameActivity.js +1 -0
  327. package/lib/module/games/shared/GameLoading.js +1 -0
  328. package/lib/module/games/shared/GameLoadingTransition.js +1 -0
  329. package/lib/module/games/shared/ProceduralCacheVersion.js +1 -0
  330. package/lib/module/games/shared/useEngineGame.js +1 -0
  331. package/lib/module/games/shared/useGameResource.js +1 -0
  332. package/lib/module/games/shared/useLiveState.js +1 -0
  333. package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -1
  334. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -1
  335. package/lib/module/games/sliding-numbers/SlidingNumbersGame.js +1 -0
  336. package/lib/module/games/sliding-numbers/SlidingNumbersRules.js +1 -0
  337. package/lib/module/games/sliding-numbers/SlidingNumbersScene.js +1 -0
  338. package/lib/module/games/snake-3d/Snake3D.js +1 -1
  339. package/lib/module/games/snake-3d/Snake3DConstants.js +1 -1
  340. package/lib/module/games/snake-3d/Snake3DGame.js +1 -0
  341. package/lib/module/games/snake-3d/Snake3DMotion.js +1 -0
  342. package/lib/module/games/snake-3d/Snake3DRules.js +1 -0
  343. package/lib/module/games/snake-3d/Snake3DScene.js +1 -0
  344. package/lib/module/games/snakes-and-ladders/SnakesAndLadders.js +1 -1
  345. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersConstants.js +1 -1
  346. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersGame.js +1 -0
  347. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersScene.js +1 -0
  348. package/lib/module/games/space-fighter/SpaceFighter.js +1 -1
  349. package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -1
  350. package/lib/module/games/space-fighter/SpaceFighterGame.js +1 -0
  351. package/lib/module/games/space-fighter/SpaceFighterScene.js +1 -0
  352. package/lib/module/games/spider-solitaire/SpiderSolitaire.js +1 -1
  353. package/lib/module/games/spider-solitaire/SpiderSolitaireConstants.js +1 -1
  354. package/lib/module/games/spider-solitaire/SpiderSolitaireGame.js +1 -0
  355. package/lib/module/games/spider-solitaire/SpiderSolitaireRules.js +1 -0
  356. package/lib/module/games/spider-solitaire/SpiderSolitaireScene.js +1 -0
  357. package/lib/module/games/stack-tower/StackTower.js +1 -1
  358. package/lib/module/games/stack-tower/StackTowerConstants.js +1 -1
  359. package/lib/module/games/stack-tower/StackTowerGame.js +1 -0
  360. package/lib/module/games/stack-tower/StackTowerScene.js +1 -0
  361. package/lib/module/games/sudoku/Sudoku.js +1 -1
  362. package/lib/module/games/sudoku/SudokuConstants.js +1 -1
  363. package/lib/module/games/sudoku/SudokuGame.js +1 -0
  364. package/lib/module/games/sudoku/SudokuRules.js +1 -0
  365. package/lib/module/games/sudoku/SudokuScene.js +1 -0
  366. package/lib/module/games/tangram/Tangram.js +1 -1
  367. package/lib/module/games/tangram/TangramConstants.js +1 -1
  368. package/lib/module/games/tangram/TangramGame.js +1 -0
  369. package/lib/module/games/tangram/TangramRules.js +1 -0
  370. package/lib/module/games/tangram/TangramScene.js +1 -0
  371. package/lib/module/games/tank-1990/Tank1990.js +1 -1
  372. package/lib/module/games/tank-1990/Tank1990Constants.js +1 -1
  373. package/lib/module/games/tank-1990/Tank1990Game.js +1 -0
  374. package/lib/module/games/tank-1990/Tank1990Rules.js +1 -0
  375. package/lib/module/games/tank-1990/Tank1990Scene.js +1 -0
  376. package/lib/module/games/tic-tac-toe/TicTacToe.js +1 -1
  377. package/lib/module/games/tic-tac-toe/TicTacToeConstants.js +1 -1
  378. package/lib/module/games/tic-tac-toe/TicTacToeGame.js +1 -0
  379. package/lib/module/games/tic-tac-toe/TicTacToeRules.js +1 -0
  380. package/lib/module/games/tic-tac-toe/TicTacToeScene.js +1 -0
  381. package/lib/module/games/tile-home/TileHome.js +1 -1
  382. package/lib/module/games/tile-home/TileHomeConstants.js +1 -1
  383. package/lib/module/games/tile-home/TileHomeGame.js +1 -0
  384. package/lib/module/games/tile-home/TileHomeScene.js +1 -0
  385. package/lib/module/games/treasure-hunt/TreasureHunt.js +1 -0
  386. package/lib/module/games/treasure-hunt/TreasureHuntConstants.js +1 -0
  387. package/lib/module/games/treasure-hunt/TreasureHuntControls.js +1 -0
  388. package/lib/module/games/treasure-hunt/TreasureHuntGame.js +1 -0
  389. package/lib/module/games/treasure-hunt/TreasureHuntMeshes.js +1 -0
  390. package/lib/module/games/treasure-hunt/TreasureHuntModel.js +1 -0
  391. package/lib/module/games/treasure-hunt/TreasureHuntRules.js +1 -0
  392. package/lib/module/games/treasure-hunt/TreasureHuntScene.js +1 -0
  393. package/lib/module/games/whack-a-mole/WhackAMole.js +1 -1
  394. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -1
  395. package/lib/module/games/whack-a-mole/WhackAMoleGame.js +1 -0
  396. package/lib/module/games/whack-a-mole/WhackAMoleScene.js +1 -0
  397. package/lib/module/games/word-search/WordSearch.js +1 -1
  398. package/lib/module/games/word-search/WordSearchWords.js +1 -0
  399. package/lib/module/helpers/GamePatternData.js +1 -0
  400. package/lib/module/helpers/GameSettingsModal.js +1 -1
  401. package/lib/module/helpers/GameTheme.js +1 -0
  402. package/lib/module/helpers/IconPaths.js +1 -0
  403. package/lib/module/helpers/index.js +1 -1
  404. package/lib/module/index.js +1 -1
  405. package/lib/module/services/GameAssetLoader.js +1 -0
  406. package/lib/module/services/GameAssets.js +1 -0
  407. package/lib/module/services/GameLoaders.js +1 -0
  408. package/lib/module/services/GamesConstants.js +1 -1
  409. package/lib/module/services/GamesMetadata.js +1 -1
  410. package/lib/module/services/GamesService.js +1 -1
  411. package/lib/module/services/HapticsService.js +1 -1
  412. package/lib/module/services/ScoringService.js +1 -1
  413. package/lib/module/services/SfxSources.js +1 -0
  414. package/lib/module/services/SoundsService.js +1 -1
  415. package/lib/module/services/ThemeService.js +1 -0
  416. package/lib/module/services/UtilsService.js +1 -1
  417. package/lib/module/services/index.js +1 -1
  418. package/lib/typescript/src/games/arrows/Arrows.d.ts +1 -3
  419. package/lib/typescript/src/games/arrows/ArrowsConstants.d.ts +48 -32
  420. package/lib/typescript/src/games/arrows/ArrowsGame.d.ts +60 -0
  421. package/lib/typescript/src/games/arrows/ArrowsScene.d.ts +67 -0
  422. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +1 -3
  423. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +39 -131
  424. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterGame.d.ts +57 -0
  425. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterPhysics.d.ts +16 -0
  426. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterScene.d.ts +31 -0
  427. package/lib/typescript/src/games/bike-racing/BikeMeshes.d.ts +14 -0
  428. package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +2 -1
  429. package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +38 -29
  430. package/lib/typescript/src/games/bike-racing/BikeRacingGame.d.ts +104 -0
  431. package/lib/typescript/src/games/bike-racing/BikeRacingScene.d.ts +25 -0
  432. package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +1 -3
  433. package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +48 -30
  434. package/lib/typescript/src/games/block-blast/BlockBlastGame.d.ts +77 -0
  435. package/lib/typescript/src/games/block-blast/BlockBlastScene.d.ts +36 -0
  436. package/lib/typescript/src/games/block-breaker/BlockBreaker.d.ts +1 -3
  437. package/lib/typescript/src/games/block-breaker/BlockBreakerConstants.d.ts +88 -35
  438. package/lib/typescript/src/games/block-breaker/BlockBreakerGame.d.ts +82 -0
  439. package/lib/typescript/src/games/block-breaker/BlockBreakerScene.d.ts +48 -0
  440. package/lib/typescript/src/games/bluk/Bluk.d.ts +1 -3
  441. package/lib/typescript/src/games/bluk/BlukConstants.d.ts +65 -54
  442. package/lib/typescript/src/games/bluk/BlukGame.d.ts +65 -0
  443. package/lib/typescript/src/games/bluk/BlukRules.d.ts +51 -0
  444. package/lib/typescript/src/games/bluk/BlukScene.d.ts +54 -0
  445. package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +1 -3
  446. package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +56 -24
  447. package/lib/typescript/src/games/bubble-shooter/BubbleShooterGame.d.ts +70 -0
  448. package/lib/typescript/src/games/bubble-shooter/BubbleShooterScene.d.ts +26 -0
  449. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +1 -3
  450. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +63 -32
  451. package/lib/typescript/src/games/candy-crush/CandyCrushGame.d.ts +65 -0
  452. package/lib/typescript/src/games/candy-crush/CandyCrushScene.d.ts +28 -0
  453. package/lib/typescript/src/games/car-racing/CarMeshes.d.ts +44 -0
  454. package/lib/typescript/src/games/car-racing/CarRacing.d.ts +2 -1
  455. package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +60 -29
  456. package/lib/typescript/src/games/car-racing/CarRacingFacade.d.ts +5 -0
  457. package/lib/typescript/src/games/car-racing/CarRacingGame.d.ts +96 -0
  458. package/lib/typescript/src/games/car-racing/CarRacingScene.d.ts +97 -0
  459. package/lib/typescript/src/games/car-racing/CarRacingScenery.d.ts +22 -0
  460. package/lib/typescript/src/games/chameleon-run/ChameleonRun.d.ts +1 -3
  461. package/lib/typescript/src/games/chameleon-run/ChameleonRunBackdrop.d.ts +14 -0
  462. package/lib/typescript/src/games/chameleon-run/ChameleonRunConstants.d.ts +44 -42
  463. package/lib/typescript/src/games/chameleon-run/ChameleonRunGame.d.ts +60 -0
  464. package/lib/typescript/src/games/chameleon-run/ChameleonRunMeshes.d.ts +20 -0
  465. package/lib/typescript/src/games/chameleon-run/ChameleonRunRules.d.ts +52 -0
  466. package/lib/typescript/src/games/chameleon-run/ChameleonRunScene.d.ts +44 -0
  467. package/lib/typescript/src/games/checkers/Checkers.d.ts +1 -3
  468. package/lib/typescript/src/games/checkers/CheckersAI.d.ts +11 -0
  469. package/lib/typescript/src/games/checkers/CheckersConstants.d.ts +32 -72
  470. package/lib/typescript/src/games/checkers/CheckersGame.d.ts +56 -0
  471. package/lib/typescript/src/games/checkers/CheckersRules.d.ts +48 -0
  472. package/lib/typescript/src/games/checkers/CheckersScene.d.ts +41 -0
  473. package/lib/typescript/src/games/color-switch/ColorSwitch.d.ts +1 -3
  474. package/lib/typescript/src/games/color-switch/ColorSwitchConstants.d.ts +27 -31
  475. package/lib/typescript/src/games/color-switch/ColorSwitchGame.d.ts +61 -0
  476. package/lib/typescript/src/games/color-switch/ColorSwitchScene.d.ts +43 -0
  477. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts +1 -3
  478. package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts +37 -44
  479. package/lib/typescript/src/games/colors-sort/ColorsSortGame.d.ts +41 -0
  480. package/lib/typescript/src/games/colors-sort/ColorsSortScene.d.ts +33 -0
  481. package/lib/typescript/src/games/connect-em-all/ConnectEmAll.d.ts +1 -3
  482. package/lib/typescript/src/games/connect-em-all/ConnectEmAllConstants.d.ts +43 -17
  483. package/lib/typescript/src/games/connect-em-all/ConnectEmAllGame.d.ts +54 -0
  484. package/lib/typescript/src/games/connect-em-all/ConnectEmAllScene.d.ts +49 -0
  485. package/lib/typescript/src/games/crossy-road/CrossyRoad.d.ts +1 -3
  486. package/lib/typescript/src/games/crossy-road/CrossyRoadCamera.d.ts +14 -0
  487. package/lib/typescript/src/games/crossy-road/CrossyRoadConstants.d.ts +82 -50
  488. package/lib/typescript/src/games/crossy-road/CrossyRoadGame.d.ts +64 -0
  489. package/lib/typescript/src/games/crossy-road/CrossyRoadMeshes.d.ts +16 -0
  490. package/lib/typescript/src/games/crossy-road/CrossyRoadPerson.d.ts +10 -0
  491. package/lib/typescript/src/games/crossy-road/CrossyRoadRules.d.ts +36 -0
  492. package/lib/typescript/src/games/crossy-road/CrossyRoadScene.d.ts +38 -0
  493. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +1 -3
  494. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +48 -72
  495. package/lib/typescript/src/games/dino-jump/DinoJumpGame.d.ts +60 -0
  496. package/lib/typescript/src/games/dino-jump/DinoJumpScene.d.ts +35 -0
  497. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxes.d.ts +1 -3
  498. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesConstants.d.ts +31 -36
  499. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesGame.d.ts +44 -0
  500. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesScene.d.ts +31 -0
  501. package/lib/typescript/src/games/falling-sticks/FallingSticks.d.ts +1 -3
  502. package/lib/typescript/src/games/falling-sticks/FallingSticksConstants.d.ts +31 -43
  503. package/lib/typescript/src/games/falling-sticks/FallingSticksGame.d.ts +42 -0
  504. package/lib/typescript/src/games/falling-sticks/FallingSticksRules.d.ts +36 -0
  505. package/lib/typescript/src/games/falling-sticks/FallingSticksScene.d.ts +26 -0
  506. package/lib/typescript/src/games/find-different-number/FindDifferentNumber.d.ts +1 -3
  507. package/lib/typescript/src/games/find-different-number/FindDifferentNumberConstants.d.ts +33 -29
  508. package/lib/typescript/src/games/find-different-number/FindDifferentNumberGame.d.ts +43 -0
  509. package/lib/typescript/src/games/find-different-number/FindDifferentNumberRules.d.ts +8 -0
  510. package/lib/typescript/src/games/find-different-number/FindDifferentNumberScene.d.ts +31 -0
  511. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +1 -3
  512. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +39 -35
  513. package/lib/typescript/src/games/flappy-bird/FlappyBirdGame.d.ts +66 -0
  514. package/lib/typescript/src/games/flappy-bird/FlappyBirdScene.d.ts +41 -0
  515. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +1 -3
  516. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +71 -44
  517. package/lib/typescript/src/games/fruit-merger/FruitMergerGame.d.ts +63 -0
  518. package/lib/typescript/src/games/fruit-merger/FruitMergerRules.d.ts +39 -0
  519. package/lib/typescript/src/games/fruit-merger/FruitMergerScene.d.ts +49 -0
  520. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +1 -3
  521. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +51 -76
  522. package/lib/typescript/src/games/fruit-ninja/FruitNinjaGame.d.ts +76 -0
  523. package/lib/typescript/src/games/fruit-ninja/FruitNinjaScene.d.ts +52 -0
  524. package/lib/typescript/src/games/fruit-ninja/FruitNinjaWorld.d.ts +8 -0
  525. package/lib/typescript/src/games/game-2048/Game2048.d.ts +1 -3
  526. package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +25 -120
  527. package/lib/typescript/src/games/game-2048/Game2048Game.d.ts +45 -0
  528. package/lib/typescript/src/games/game-2048/Game2048Rules.d.ts +32 -0
  529. package/lib/typescript/src/games/game-2048/Game2048Scene.d.ts +34 -0
  530. package/lib/typescript/src/games/knife-hit/KnifeHit.d.ts +1 -3
  531. package/lib/typescript/src/games/knife-hit/KnifeHitConstants.d.ts +41 -49
  532. package/lib/typescript/src/games/knife-hit/KnifeHitGame.d.ts +49 -0
  533. package/lib/typescript/src/games/knife-hit/KnifeHitScene.d.ts +37 -0
  534. package/lib/typescript/src/games/ludo-king/LudoKing.d.ts +1 -3
  535. package/lib/typescript/src/games/ludo-king/LudoKingConstants.d.ts +50 -28
  536. package/lib/typescript/src/games/ludo-king/LudoKingGame.d.ts +40 -0
  537. package/lib/typescript/src/games/ludo-king/LudoKingRules.d.ts +42 -0
  538. package/lib/typescript/src/games/ludo-king/LudoKingScene.d.ts +53 -0
  539. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +1 -3
  540. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +34 -10
  541. package/lib/typescript/src/games/maze-runner/MazeRunnerGame.d.ts +44 -0
  542. package/lib/typescript/src/games/maze-runner/MazeRunnerRules.d.ts +34 -0
  543. package/lib/typescript/src/games/maze-runner/MazeRunnerScene.d.ts +29 -0
  544. package/lib/typescript/src/games/memory-match/MemoryMatch.d.ts +1 -3
  545. package/lib/typescript/src/games/memory-match/MemoryMatchConstants.d.ts +42 -42
  546. package/lib/typescript/src/games/memory-match/MemoryMatchGame.d.ts +53 -0
  547. package/lib/typescript/src/games/memory-match/MemoryMatchRules.d.ts +14 -0
  548. package/lib/typescript/src/games/memory-match/MemoryMatchScene.d.ts +35 -0
  549. package/lib/typescript/src/games/mine-sweeper/MineSweeper.d.ts +1 -3
  550. package/lib/typescript/src/games/mine-sweeper/MineSweeperConstants.d.ts +43 -82
  551. package/lib/typescript/src/games/mine-sweeper/MineSweeperGame.d.ts +59 -0
  552. package/lib/typescript/src/games/mine-sweeper/MineSweeperRules.d.ts +18 -0
  553. package/lib/typescript/src/games/mine-sweeper/MineSweeperScene.d.ts +23 -0
  554. package/lib/typescript/src/games/mob-control/MobControl.d.ts +1 -3
  555. package/lib/typescript/src/games/mob-control/MobControlConstants.d.ts +99 -85
  556. package/lib/typescript/src/games/mob-control/MobControlGame.d.ts +45 -0
  557. package/lib/typescript/src/games/mob-control/MobControlMeshes.d.ts +2 -0
  558. package/lib/typescript/src/games/mob-control/MobControlRenderer.d.ts +20 -0
  559. package/lib/typescript/src/games/mob-control/MobControlRules.d.ts +68 -0
  560. package/lib/typescript/src/games/mob-control/MobControlScene.d.ts +58 -0
  561. package/lib/typescript/src/games/number-search/NumberSearch.d.ts +1 -3
  562. package/lib/typescript/src/games/number-search/NumberSearchNumbers.d.ts +1 -0
  563. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBolts.d.ts +1 -3
  564. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsConstants.d.ts +27 -79
  565. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsGame.d.ts +56 -0
  566. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsRules.d.ts +65 -0
  567. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsScene.d.ts +48 -0
  568. package/lib/typescript/src/games/pac-man/PacMan.d.ts +1 -3
  569. package/lib/typescript/src/games/pac-man/PacManConstants.d.ts +66 -106
  570. package/lib/typescript/src/games/pac-man/PacManGame.d.ts +48 -0
  571. package/lib/typescript/src/games/pac-man/PacManRules.d.ts +52 -0
  572. package/lib/typescript/src/games/pac-man/PacManScene.d.ts +44 -0
  573. package/lib/typescript/src/games/paper-io/PaperIo.d.ts +1 -3
  574. package/lib/typescript/src/games/paper-io/PaperIoConstants.d.ts +60 -40
  575. package/lib/typescript/src/games/paper-io/PaperIoGame.d.ts +49 -0
  576. package/lib/typescript/src/games/paper-io/PaperIoMeshes.d.ts +13 -0
  577. package/lib/typescript/src/games/paper-io/PaperIoRules.d.ts +71 -0
  578. package/lib/typescript/src/games/paper-io/PaperIoScene.d.ts +39 -0
  579. package/lib/typescript/src/games/penguin-run/PenguinMeshes.d.ts +9 -0
  580. package/lib/typescript/src/games/penguin-run/PenguinModel.d.ts +42 -0
  581. package/lib/typescript/src/games/penguin-run/PenguinRun.d.ts +1 -0
  582. package/lib/typescript/src/games/penguin-run/PenguinRunConstants.d.ts +58 -0
  583. package/lib/typescript/src/games/penguin-run/PenguinRunGame.d.ts +64 -0
  584. package/lib/typescript/src/games/penguin-run/PenguinRunScene.d.ts +65 -0
  585. package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +1 -3
  586. package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +23 -45
  587. package/lib/typescript/src/games/perfect-circle/PerfectCircleGame.d.ts +40 -0
  588. package/lib/typescript/src/games/perfect-circle/PerfectCircleRules.d.ts +55 -0
  589. package/lib/typescript/src/games/perfect-circle/PerfectCircleScene.d.ts +32 -0
  590. package/lib/typescript/src/games/pipe-connect/PipeConnect.d.ts +1 -3
  591. package/lib/typescript/src/games/pipe-connect/PipeConnectConstants.d.ts +36 -32
  592. package/lib/typescript/src/games/pipe-connect/PipeConnectGame.d.ts +40 -0
  593. package/lib/typescript/src/games/pipe-connect/PipeConnectRules.d.ts +16 -0
  594. package/lib/typescript/src/games/pipe-connect/PipeConnectScene.d.ts +28 -0
  595. package/lib/typescript/src/games/play-with-tua/PlayWithTua.d.ts +2 -0
  596. package/lib/typescript/src/games/play-with-tua/PlayWithTuaConstants.d.ts +64 -0
  597. package/lib/typescript/src/games/play-with-tua/PlayWithTuaGame.d.ts +34 -0
  598. package/lib/typescript/src/games/play-with-tua/PlayWithTuaModel.d.ts +9 -0
  599. package/lib/typescript/src/games/play-with-tua/PlayWithTuaScene.d.ts +13 -0
  600. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +1 -4
  601. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +25 -36
  602. package/lib/typescript/src/games/popit-fidget/PopitFidgetGame.d.ts +37 -0
  603. package/lib/typescript/src/games/popit-fidget/PopitFidgetScene.d.ts +19 -0
  604. package/lib/typescript/src/games/reversi/Reversi.d.ts +1 -3
  605. package/lib/typescript/src/games/reversi/ReversiConstants.d.ts +31 -62
  606. package/lib/typescript/src/games/reversi/ReversiGame.d.ts +54 -0
  607. package/lib/typescript/src/games/reversi/ReversiRules.d.ts +22 -0
  608. package/lib/typescript/src/games/reversi/ReversiScene.d.ts +27 -0
  609. package/lib/typescript/src/games/search-grid/SearchGrid.d.ts +20 -0
  610. package/lib/typescript/src/games/search-grid/SearchGridConstants.d.ts +60 -0
  611. package/lib/typescript/src/games/search-grid/SearchGridGame.d.ts +52 -0
  612. package/lib/typescript/src/games/search-grid/SearchGridScene.d.ts +43 -0
  613. package/lib/typescript/src/games/shared/BackdropCard.d.ts +2 -0
  614. package/lib/typescript/src/games/shared/EngineBackdrop.d.ts +19 -0
  615. package/lib/typescript/src/games/shared/EngineBlasts.d.ts +26 -0
  616. package/lib/typescript/src/games/shared/EngineBlocks.d.ts +19 -0
  617. package/lib/typescript/src/games/shared/EngineControlText.d.ts +2 -0
  618. package/lib/typescript/src/games/shared/EngineDice.d.ts +24 -0
  619. package/lib/typescript/src/games/shared/EngineFootprint.d.ts +17 -0
  620. package/lib/typescript/src/games/shared/EngineFruits.d.ts +27 -0
  621. package/lib/typescript/src/games/shared/EngineGameLoader.d.ts +4 -0
  622. package/lib/typescript/src/games/shared/EngineGameScreen.d.ts +48 -0
  623. package/lib/typescript/src/games/shared/EngineGameWidth.d.ts +3 -0
  624. package/lib/typescript/src/games/shared/EngineGameWidth.web.d.ts +3 -0
  625. package/lib/typescript/src/games/shared/EngineGlyphs.d.ts +15 -0
  626. package/lib/typescript/src/games/shared/EngineHud.d.ts +138 -0
  627. package/lib/typescript/src/games/shared/EngineLoading.d.ts +77 -0
  628. package/lib/typescript/src/games/shared/EngineMeadow.d.ts +90 -0
  629. package/lib/typescript/src/games/shared/EngineMeshCache.d.ts +3 -0
  630. package/lib/typescript/src/games/shared/EngineMeshes.d.ts +3 -0
  631. package/lib/typescript/src/games/shared/EngineRacingChase.d.ts +11 -0
  632. package/lib/typescript/src/games/shared/EngineRacingHandling.d.ts +15 -0
  633. package/lib/typescript/src/games/shared/EngineReadyContext.d.ts +2 -0
  634. package/lib/typescript/src/games/shared/EngineTilt.d.ts +19 -0
  635. package/lib/typescript/src/games/shared/EngineTouchSurface.d.ts +20 -0
  636. package/lib/typescript/src/games/shared/EngineUtils.d.ts +18 -0
  637. package/lib/typescript/src/games/shared/GameActivity.d.ts +3 -0
  638. package/lib/typescript/src/games/shared/GameLoading.d.ts +14 -0
  639. package/lib/typescript/src/games/shared/GameLoadingTransition.d.ts +9 -0
  640. package/lib/typescript/src/games/shared/ProceduralCacheVersion.d.ts +1 -0
  641. package/lib/typescript/src/games/shared/useEngineGame.d.ts +69 -0
  642. package/lib/typescript/src/games/shared/useGameResource.d.ts +2 -0
  643. package/lib/typescript/src/games/shared/useLiveState.d.ts +4 -0
  644. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +1 -3
  645. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +32 -40
  646. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersGame.d.ts +48 -0
  647. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersRules.d.ts +22 -0
  648. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersScene.d.ts +30 -0
  649. package/lib/typescript/src/games/snake-3d/Snake3D.d.ts +1 -3
  650. package/lib/typescript/src/games/snake-3d/Snake3DConstants.d.ts +31 -68
  651. package/lib/typescript/src/games/snake-3d/Snake3DGame.d.ts +42 -0
  652. package/lib/typescript/src/games/snake-3d/Snake3DMotion.d.ts +3 -0
  653. package/lib/typescript/src/games/snake-3d/Snake3DRules.d.ts +42 -0
  654. package/lib/typescript/src/games/snake-3d/Snake3DScene.d.ts +35 -0
  655. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLadders.d.ts +1 -3
  656. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersConstants.d.ts +58 -50
  657. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersGame.d.ts +45 -0
  658. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersScene.d.ts +50 -0
  659. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +1 -3
  660. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +33 -23
  661. package/lib/typescript/src/games/space-fighter/SpaceFighterGame.d.ts +58 -0
  662. package/lib/typescript/src/games/space-fighter/SpaceFighterScene.d.ts +51 -0
  663. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaire.d.ts +1 -3
  664. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireConstants.d.ts +52 -35
  665. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireGame.d.ts +67 -0
  666. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireRules.d.ts +39 -0
  667. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireScene.d.ts +60 -0
  668. package/lib/typescript/src/games/stack-tower/StackTower.d.ts +1 -3
  669. package/lib/typescript/src/games/stack-tower/StackTowerConstants.d.ts +31 -23
  670. package/lib/typescript/src/games/stack-tower/StackTowerGame.d.ts +58 -0
  671. package/lib/typescript/src/games/stack-tower/StackTowerScene.d.ts +27 -0
  672. package/lib/typescript/src/games/sudoku/Sudoku.d.ts +1 -3
  673. package/lib/typescript/src/games/sudoku/SudokuConstants.d.ts +50 -55
  674. package/lib/typescript/src/games/sudoku/SudokuGame.d.ts +56 -0
  675. package/lib/typescript/src/games/sudoku/SudokuRules.d.ts +23 -0
  676. package/lib/typescript/src/games/sudoku/SudokuScene.d.ts +44 -0
  677. package/lib/typescript/src/games/tangram/Tangram.d.ts +1 -3
  678. package/lib/typescript/src/games/tangram/TangramConstants.d.ts +33 -52
  679. package/lib/typescript/src/games/tangram/TangramGame.d.ts +68 -0
  680. package/lib/typescript/src/games/tangram/TangramRules.d.ts +61 -0
  681. package/lib/typescript/src/games/tangram/TangramScene.d.ts +42 -0
  682. package/lib/typescript/src/games/tank-1990/Tank1990.d.ts +1 -3
  683. package/lib/typescript/src/games/tank-1990/Tank1990Constants.d.ts +44 -127
  684. package/lib/typescript/src/games/tank-1990/Tank1990Game.d.ts +50 -0
  685. package/lib/typescript/src/games/tank-1990/Tank1990Rules.d.ts +67 -0
  686. package/lib/typescript/src/games/tank-1990/Tank1990Scene.d.ts +38 -0
  687. package/lib/typescript/src/games/tic-tac-toe/TicTacToe.d.ts +1 -3
  688. package/lib/typescript/src/games/tic-tac-toe/TicTacToeConstants.d.ts +35 -72
  689. package/lib/typescript/src/games/tic-tac-toe/TicTacToeGame.d.ts +54 -0
  690. package/lib/typescript/src/games/tic-tac-toe/TicTacToeRules.d.ts +10 -0
  691. package/lib/typescript/src/games/tic-tac-toe/TicTacToeScene.d.ts +26 -0
  692. package/lib/typescript/src/games/tile-home/TileHome.d.ts +1 -3
  693. package/lib/typescript/src/games/tile-home/TileHomeConstants.d.ts +72 -70
  694. package/lib/typescript/src/games/tile-home/TileHomeGame.d.ts +72 -0
  695. package/lib/typescript/src/games/tile-home/TileHomeScene.d.ts +28 -0
  696. package/lib/typescript/src/games/treasure-hunt/TreasureHunt.d.ts +3 -0
  697. package/lib/typescript/src/games/treasure-hunt/TreasureHuntConstants.d.ts +144 -0
  698. package/lib/typescript/src/games/treasure-hunt/TreasureHuntControls.d.ts +75 -0
  699. package/lib/typescript/src/games/treasure-hunt/TreasureHuntGame.d.ts +41 -0
  700. package/lib/typescript/src/games/treasure-hunt/TreasureHuntMeshes.d.ts +26 -0
  701. package/lib/typescript/src/games/treasure-hunt/TreasureHuntModel.d.ts +57 -0
  702. package/lib/typescript/src/games/treasure-hunt/TreasureHuntRules.d.ts +198 -0
  703. package/lib/typescript/src/games/treasure-hunt/TreasureHuntScene.d.ts +40 -0
  704. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +1 -3
  705. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +35 -45
  706. package/lib/typescript/src/games/whack-a-mole/WhackAMoleGame.d.ts +51 -0
  707. package/lib/typescript/src/games/whack-a-mole/WhackAMoleScene.d.ts +31 -0
  708. package/lib/typescript/src/games/word-search/WordSearch.d.ts +1 -3
  709. package/lib/typescript/src/games/word-search/WordSearchWords.d.ts +1 -0
  710. package/lib/typescript/src/helpers/GamePatternData.d.ts +46 -0
  711. package/lib/typescript/src/helpers/GameSettingsModal.d.ts +1 -1
  712. package/lib/typescript/src/helpers/GameTheme.d.ts +18 -0
  713. package/lib/typescript/src/helpers/IconPaths.d.ts +4 -0
  714. package/lib/typescript/src/helpers/index.d.ts +1 -19
  715. package/lib/typescript/src/index.d.ts +3 -0
  716. package/lib/typescript/src/services/GameAssetLoader.d.ts +32 -0
  717. package/lib/typescript/src/services/GameAssets.d.ts +11 -0
  718. package/lib/typescript/src/services/GameLoaders.d.ts +18 -0
  719. package/lib/typescript/src/services/GamesConstants.d.ts +11 -0
  720. package/lib/typescript/src/services/GamesMetadata.d.ts +2 -0
  721. package/lib/typescript/src/services/HapticsService.d.ts +1 -1
  722. package/lib/typescript/src/services/SfxSources.d.ts +79 -0
  723. package/lib/typescript/src/services/SoundsService.d.ts +487 -1566
  724. package/lib/typescript/src/services/ThemeService.d.ts +117 -0
  725. package/lib/typescript/src/services/UtilsService.d.ts +20 -2
  726. package/lib/typescript/src/services/index.d.ts +3 -0
  727. package/lib/web/assets/005ea2045b17-explorer.glb +0 -0
  728. package/lib/web/assets/01e2f0a0bbf6-hurt.wav +0 -0
  729. package/lib/web/assets/01fc0ecf658c-explorer-atlas.png +0 -0
  730. package/lib/web/assets/029329b2c7c0-asphalt.png +0 -0
  731. package/lib/web/assets/0376bda32be3-robot.wav +0 -0
  732. package/lib/web/assets/0719fb0bb38e-soft_glow.png +0 -0
  733. package/lib/web/assets/0b21278bffba-boing.wav +0 -0
  734. package/lib/web/assets/1333c9d1273c-flip_disc.wav +0 -0
  735. package/lib/web/assets/15785f62ee5f-time_up.wav +0 -0
  736. package/lib/web/assets/177f00502e08-bonus.wav +0 -0
  737. package/lib/web/assets/19e47dcfda1f-pling.wav +0 -0
  738. package/lib/web/assets/1a677e0f7f6c-laugh.wav +0 -0
  739. package/lib/web/assets/1ad2914478b1-eat.wav +0 -0
  740. package/lib/web/assets/1b0d703ddd1a-dance.wav +0 -0
  741. package/lib/web/assets/1e4330fddd74-chime.wav +0 -0
  742. package/lib/web/assets/2432a97b0af1-cannon.wav +0 -0
  743. package/lib/web/assets/2574370d6aa0-blocked.wav +0 -0
  744. package/lib/web/assets/2699065037ad-select.wav +0 -0
  745. package/lib/web/assets/28d30f53ad73-ladder.wav +0 -0
  746. package/lib/web/assets/2c1ec05270b2-point.wav +0 -0
  747. package/lib/web/assets/2e1dd99a0213-tick.wav +0 -0
  748. package/lib/web/assets/3084575cecdb-card_flip.wav +0 -0
  749. package/lib/web/assets/308bc31b6af5-engine.wav +0 -0
  750. package/lib/web/assets/336d63b739b5-combo.wav +0 -0
  751. package/lib/web/assets/3a369e2596e4-clash.wav +0 -0
  752. package/lib/web/assets/3a816e20212f-capture.wav +0 -0
  753. package/lib/web/assets/40240217810a-nitro.wav +0 -0
  754. package/lib/web/assets/46edaa54d1ea-crunch.wav +0 -0
  755. package/lib/web/assets/501994226995-coin.wav +0 -0
  756. package/lib/web/assets/5525d7f6a4b8-rotate.wav +0 -0
  757. package/lib/web/assets/5e816e1f0929-dice_roll.wav +0 -0
  758. package/lib/web/assets/60e2dec3cf41-deselect.wav +0 -0
  759. package/lib/web/assets/6ab86ea29e5c-six.wav +0 -0
  760. package/lib/web/assets/6da3b101926d-merge.wav +0 -0
  761. package/lib/web/assets/6e686dea513c-bark.jpg +0 -0
  762. package/lib/web/assets/6ff9a6a13714-limestone.jpg +0 -0
  763. package/lib/web/assets/735c4a1cd22e-invalid.wav +0 -0
  764. package/lib/web/assets/73f75c35ff5d-snake.wav +0 -0
  765. package/lib/web/assets/7506e3efe264-catch.wav +0 -0
  766. package/lib/web/assets/76493a2ada2d-ad_bolt.png +0 -0
  767. package/lib/web/assets/793abe620201-card_place.wav +0 -0
  768. package/lib/web/assets/7da09c57f52d-facade.png +0 -0
  769. package/lib/web/assets/7e1a902176f6-pine.png +0 -0
  770. package/lib/web/assets/7eb943b85c21-play-with-tua.glb +0 -0
  771. package/lib/web/assets/837d43c06dba-ad_bubbles.png +0 -0
  772. package/lib/web/assets/84f1a7dfa368-game_over.wav +0 -0
  773. package/lib/web/assets/850e26ce3b0a-flap.wav +0 -0
  774. package/lib/web/assets/854b31683cb2-draw.wav +0 -0
  775. package/lib/web/assets/8616150393b7-error.wav +0 -0
  776. package/lib/web/assets/87cc6d503ec6-river.jpg +0 -0
  777. package/lib/web/assets/88755845922c-hop.wav +0 -0
  778. package/lib/web/assets/8ec8f469492d-chomp_alt.wav +0 -0
  779. package/lib/web/assets/8f17f89b138c-pew.wav +0 -0
  780. package/lib/web/assets/9210a24472d1-place.wav +0 -0
  781. package/lib/web/assets/930d833ebf89-splash.wav +0 -0
  782. package/lib/web/assets/970f7c59265d-swoosh.wav +0 -0
  783. package/lib/web/assets/9900b8d1b6ad-flag.wav +0 -0
  784. package/lib/web/assets/9ab04403898b-clang.wav +0 -0
  785. package/lib/web/assets/9d8b97a10d45-drop.wav +0 -0
  786. package/lib/web/assets/9d9c02ddc7ed-boom.wav +0 -0
  787. package/lib/web/assets/9e1b5114d56d-pop_soft.wav +0 -0
  788. package/lib/web/assets/a01f22d6dbb3-thud.wav +0 -0
  789. package/lib/web/assets/a44a1cf1a1a8-bump.wav +0 -0
  790. package/lib/web/assets/a76940a48c68-hit.wav +0 -0
  791. package/lib/web/assets/a98ddb724460-leaves.png +0 -0
  792. package/lib/web/assets/aa0960e8bee6-footstep_run.wav +0 -0
  793. package/lib/web/assets/aa570c9d3e15-star.wav +0 -0
  794. package/lib/web/assets/aacb999f3c49-tock.wav +0 -0
  795. package/lib/web/assets/aae0c16c5e89-reveal.wav +0 -0
  796. package/lib/web/assets/ab37cd128509-click.wav +0 -0
  797. package/lib/web/assets/b0bc66f49005-warning.wav +0 -0
  798. package/lib/web/assets/b1edd756ac43-zap.wav +0 -0
  799. package/lib/web/assets/b3894545cf71-slice.wav +0 -0
  800. package/lib/web/assets/b3c6225d055a-meadow.jpg +0 -0
  801. package/lib/web/assets/b60ca65cdfcb-gate.wav +0 -0
  802. package/lib/web/assets/b8900bb2c5c7-win.wav +0 -0
  803. package/lib/web/assets/baff6feda846-lose.wav +0 -0
  804. package/lib/web/assets/bed31305d60d-ad_chevrons.png +0 -0
  805. package/lib/web/assets/c26f4a624e7d-shuffle.wav +0 -0
  806. package/lib/web/assets/c3a9edfad195-die.wav +0 -0
  807. package/lib/web/assets/c4aa9d773f2a-footstep_walk.wav +0 -0
  808. package/lib/web/assets/c5ab3ff0003f-crash.wav +0 -0
  809. package/lib/web/assets/c5eb07deddd4-start.wav +0 -0
  810. package/lib/web/assets/c6c58d9ae452-pop.wav +0 -0
  811. package/lib/web/assets/cea48c3cd9c7-balloon_pop.wav +0 -0
  812. package/lib/web/assets/d15591767778-tap.wav +0 -0
  813. package/lib/web/assets/d1781a52234f-slide.wav +0 -0
  814. package/lib/web/assets/d3bf2d9f793b-snap.wav +0 -0
  815. package/lib/web/assets/d8f59ebd3537-jump.wav +0 -0
  816. package/lib/web/assets/dafea2f28854-power_up.wav +0 -0
  817. package/lib/web/assets/e2e7f5ae2d1b-whoosh.wav +0 -0
  818. package/lib/web/assets/e2f90a23e1bd-chomp.wav +0 -0
  819. package/lib/web/assets/e454e56df89a-clack.wav +0 -0
  820. package/lib/web/assets/e8cbc2b88bc4-Inter-SemiBold.ttf +0 -0
  821. package/lib/web/assets/ed6496b891fc-land.wav +0 -0
  822. package/lib/web/assets/f21920200a81-thunk.wav +0 -0
  823. package/lib/web/assets/f753b43be89d-whack.wav +0 -0
  824. package/lib/web/assets/f798c4b5cf4d-miss.wav +0 -0
  825. package/lib/web/assets/fbe299716916-grass.png +0 -0
  826. package/lib/web/chunk-52ez2s9z.js +15 -0
  827. package/lib/web/chunk-8675t224.js +1 -0
  828. package/lib/web/index.js +2 -0
  829. package/lib/web/package.json +1 -0
  830. package/lib/web/services.js +2 -0
  831. package/package.json +94 -73
  832. package/src/assets/fonts/Inter-SemiBold.ttf +0 -0
  833. package/src/assets/models/explorer/explorer.glb +0 -0
  834. package/src/assets/models/explorer/params.json +51 -0
  835. package/src/assets/models/explorer/source.json +222 -0
  836. package/src/assets/models/play-with-tua/play-with-tua.glb +0 -0
  837. package/src/assets/models/play-with-tua/sources.json +141 -0
  838. package/src/assets/sfx/balloon_pop.wav +0 -0
  839. package/src/assets/sfx/blocked.wav +0 -0
  840. package/src/assets/sfx/boing.wav +0 -0
  841. package/src/assets/sfx/bonus.wav +0 -0
  842. package/src/assets/sfx/boom.wav +0 -0
  843. package/src/assets/sfx/bump.wav +0 -0
  844. package/src/assets/sfx/cannon.wav +0 -0
  845. package/src/assets/sfx/capture.wav +0 -0
  846. package/src/assets/sfx/card_flip.wav +0 -0
  847. package/src/assets/sfx/card_place.wav +0 -0
  848. package/src/assets/sfx/catch.wav +0 -0
  849. package/src/assets/sfx/chime.wav +0 -0
  850. package/src/assets/sfx/chomp.wav +0 -0
  851. package/src/assets/sfx/chomp_alt.wav +0 -0
  852. package/src/assets/sfx/clack.wav +0 -0
  853. package/src/assets/sfx/clang.wav +0 -0
  854. package/src/assets/sfx/clash.wav +0 -0
  855. package/src/assets/sfx/click.wav +0 -0
  856. package/src/assets/sfx/coin.wav +0 -0
  857. package/src/assets/sfx/combo.wav +0 -0
  858. package/src/assets/sfx/crash.wav +0 -0
  859. package/src/assets/sfx/crunch.wav +0 -0
  860. package/src/assets/sfx/dance.wav +0 -0
  861. package/src/assets/sfx/deselect.wav +0 -0
  862. package/src/assets/sfx/dice_roll.wav +0 -0
  863. package/src/assets/sfx/die.wav +0 -0
  864. package/src/assets/sfx/draw.wav +0 -0
  865. package/src/assets/sfx/drop.wav +0 -0
  866. package/src/assets/sfx/eat.wav +0 -0
  867. package/src/assets/sfx/engine.wav +0 -0
  868. package/src/assets/sfx/error.wav +0 -0
  869. package/src/assets/sfx/flag.wav +0 -0
  870. package/src/assets/sfx/flap.wav +0 -0
  871. package/src/assets/sfx/flip_disc.wav +0 -0
  872. package/src/assets/sfx/footstep_run.wav +0 -0
  873. package/src/assets/sfx/footstep_walk.wav +0 -0
  874. package/src/assets/sfx/game_over.wav +0 -0
  875. package/src/assets/sfx/gate.wav +0 -0
  876. package/src/assets/sfx/hit.wav +0 -0
  877. package/src/assets/sfx/hop.wav +0 -0
  878. package/src/assets/sfx/hurt.wav +0 -0
  879. package/src/assets/sfx/invalid.wav +0 -0
  880. package/src/assets/sfx/jump.wav +0 -0
  881. package/src/assets/sfx/ladder.wav +0 -0
  882. package/src/assets/sfx/land.wav +0 -0
  883. package/src/assets/sfx/laugh.wav +0 -0
  884. package/src/assets/sfx/lose.wav +0 -0
  885. package/src/assets/sfx/merge.wav +0 -0
  886. package/src/assets/sfx/miss.wav +0 -0
  887. package/src/assets/sfx/nitro.wav +0 -0
  888. package/src/assets/sfx/pew.wav +0 -0
  889. package/src/assets/sfx/place.wav +0 -0
  890. package/src/assets/sfx/pling.wav +0 -0
  891. package/src/assets/sfx/point.wav +0 -0
  892. package/src/assets/sfx/pop.wav +0 -0
  893. package/src/assets/sfx/pop_soft.wav +0 -0
  894. package/src/assets/sfx/power_up.wav +0 -0
  895. package/src/assets/sfx/reveal.wav +0 -0
  896. package/src/assets/sfx/robot.wav +0 -0
  897. package/src/assets/sfx/rotate.wav +0 -0
  898. package/src/assets/sfx/run_steps.wav +0 -0
  899. package/src/assets/sfx/select.wav +0 -0
  900. package/src/assets/sfx/shuffle.wav +0 -0
  901. package/src/assets/sfx/six.wav +0 -0
  902. package/src/assets/sfx/slice.wav +0 -0
  903. package/src/assets/sfx/slide.wav +0 -0
  904. package/src/assets/sfx/snake.wav +0 -0
  905. package/src/assets/sfx/snap.wav +0 -0
  906. package/src/assets/sfx/splash.wav +0 -0
  907. package/src/assets/sfx/star.wav +0 -0
  908. package/src/assets/sfx/start.wav +0 -0
  909. package/src/assets/sfx/swoosh.wav +0 -0
  910. package/src/assets/sfx/tap.wav +0 -0
  911. package/src/assets/sfx/thud.wav +0 -0
  912. package/src/assets/sfx/thunk.wav +0 -0
  913. package/src/assets/sfx/tick.wav +0 -0
  914. package/src/assets/sfx/time_up.wav +0 -0
  915. package/src/assets/sfx/tock.wav +0 -0
  916. package/src/assets/sfx/walk_steps.wav +0 -0
  917. package/src/assets/sfx/warning.wav +0 -0
  918. package/src/assets/sfx/whack.wav +0 -0
  919. package/src/assets/sfx/whoosh.wav +0 -0
  920. package/src/assets/sfx/win.wav +0 -0
  921. package/src/assets/sfx/zap.wav +0 -0
  922. package/src/assets/textures/ad_bolt.png +0 -0
  923. package/src/assets/textures/ad_bubbles.png +0 -0
  924. package/src/assets/textures/ad_chevrons.png +0 -0
  925. package/src/assets/textures/asphalt.png +0 -0
  926. package/src/assets/textures/bark.jpg +0 -0
  927. package/src/assets/textures/explorer-atlas.png +0 -0
  928. package/src/assets/textures/facade.png +0 -0
  929. package/src/assets/textures/grass.png +0 -0
  930. package/src/assets/textures/leaves.png +0 -0
  931. package/src/assets/textures/limestone.jpg +0 -0
  932. package/src/assets/textures/meadow.jpg +0 -0
  933. package/src/assets/textures/nature-sources.json +87 -0
  934. package/src/assets/textures/pine.png +0 -0
  935. package/src/assets/textures/river.jpg +0 -0
  936. package/src/assets/textures/soft_glow.png +0 -0
  937. package/src/games/arrows/Arrows.tsx +69 -0
  938. package/src/games/arrows/ArrowsConstants.ts +107 -0
  939. package/src/games/arrows/ArrowsGame.ts +735 -0
  940. package/src/games/arrows/ArrowsScene.ts +395 -0
  941. package/src/games/balloon-blaster/BalloonBlaster.tsx +75 -0
  942. package/src/games/balloon-blaster/BalloonBlasterConstants.ts +79 -0
  943. package/src/games/balloon-blaster/BalloonBlasterGame.ts +287 -0
  944. package/src/games/balloon-blaster/BalloonBlasterPhysics.ts +95 -0
  945. package/src/games/balloon-blaster/BalloonBlasterScene.ts +225 -0
  946. package/src/games/bike-racing/BikeMeshes.ts +273 -0
  947. package/src/games/bike-racing/BikeRacing.tsx +211 -0
  948. package/src/games/bike-racing/BikeRacingConstants.ts +103 -0
  949. package/src/games/bike-racing/BikeRacingGame.ts +557 -0
  950. package/src/games/bike-racing/BikeRacingScene.ts +119 -0
  951. package/src/games/block-blast/BlockBlast.tsx +73 -0
  952. package/src/games/block-blast/BlockBlastConstants.ts +179 -0
  953. package/src/games/block-blast/BlockBlastGame.ts +471 -0
  954. package/src/games/block-blast/BlockBlastScene.ts +156 -0
  955. package/src/games/block-breaker/BlockBreaker.tsx +79 -0
  956. package/src/games/block-breaker/BlockBreakerConstants.ts +139 -0
  957. package/src/games/block-breaker/BlockBreakerGame.ts +459 -0
  958. package/src/games/block-breaker/BlockBreakerScene.ts +257 -0
  959. package/src/games/bluk/Bluk.tsx +82 -0
  960. package/src/games/bluk/BlukConstants.ts +121 -0
  961. package/src/games/bluk/BlukGame.ts +323 -0
  962. package/src/games/bluk/BlukRules.ts +154 -0
  963. package/src/games/bluk/BlukScene.ts +514 -0
  964. package/src/games/bubble-shooter/BubbleShooter.tsx +76 -0
  965. package/src/games/bubble-shooter/BubbleShooterConstants.ts +103 -0
  966. package/src/games/bubble-shooter/BubbleShooterGame.ts +459 -0
  967. package/src/games/bubble-shooter/BubbleShooterScene.ts +158 -0
  968. package/src/games/candy-crush/CandyCrush.tsx +77 -0
  969. package/src/games/candy-crush/CandyCrushConstants.ts +94 -0
  970. package/src/games/candy-crush/CandyCrushGame.ts +477 -0
  971. package/src/games/candy-crush/CandyCrushScene.ts +209 -0
  972. package/src/games/car-racing/CarMeshes.ts +440 -0
  973. package/src/games/car-racing/CarRacing.tsx +211 -0
  974. package/src/games/car-racing/CarRacingConstants.ts +167 -0
  975. package/src/games/car-racing/CarRacingFacade.ts +40 -0
  976. package/src/games/car-racing/CarRacingGame.ts +539 -0
  977. package/src/games/car-racing/CarRacingScene.ts +1026 -0
  978. package/src/games/car-racing/CarRacingScenery.ts +265 -0
  979. package/src/games/chameleon-run/ChameleonRun.tsx +96 -0
  980. package/src/games/chameleon-run/ChameleonRunBackdrop.ts +186 -0
  981. package/src/games/chameleon-run/ChameleonRunConstants.ts +47 -0
  982. package/src/games/chameleon-run/ChameleonRunGame.ts +309 -0
  983. package/src/games/chameleon-run/ChameleonRunMeshes.ts +305 -0
  984. package/src/games/chameleon-run/ChameleonRunRules.ts +252 -0
  985. package/src/games/chameleon-run/ChameleonRunScene.ts +310 -0
  986. package/src/games/checkers/Checkers.tsx +83 -0
  987. package/src/games/checkers/CheckersAI.ts +255 -0
  988. package/src/games/checkers/CheckersConstants.ts +68 -0
  989. package/src/games/checkers/CheckersGame.ts +322 -0
  990. package/src/games/checkers/CheckersRules.ts +167 -0
  991. package/src/games/checkers/CheckersScene.ts +308 -0
  992. package/src/games/color-switch/ColorSwitch.tsx +75 -0
  993. package/src/games/color-switch/ColorSwitchConstants.ts +61 -0
  994. package/src/games/color-switch/ColorSwitchGame.ts +329 -0
  995. package/src/games/color-switch/ColorSwitchScene.ts +220 -0
  996. package/src/games/colors-sort/ColorsSort.tsx +82 -0
  997. package/src/games/colors-sort/ColorsSortConstants.ts +119 -0
  998. package/src/games/colors-sort/ColorsSortGame.ts +246 -0
  999. package/src/games/colors-sort/ColorsSortScene.ts +315 -0
  1000. package/src/games/connect-em-all/ConnectEmAll.tsx +70 -0
  1001. package/src/games/connect-em-all/ConnectEmAllConstants.ts +77 -0
  1002. package/src/games/connect-em-all/ConnectEmAllGame.ts +401 -0
  1003. package/src/games/connect-em-all/ConnectEmAllScene.ts +235 -0
  1004. package/src/games/crossy-road/CrossyRoad.tsx +74 -0
  1005. package/src/games/crossy-road/CrossyRoadCamera.ts +59 -0
  1006. package/src/games/crossy-road/CrossyRoadConstants.ts +132 -0
  1007. package/src/games/crossy-road/CrossyRoadGame.ts +293 -0
  1008. package/src/games/crossy-road/CrossyRoadMeshes.ts +195 -0
  1009. package/src/games/crossy-road/CrossyRoadPerson.ts +198 -0
  1010. package/src/games/crossy-road/CrossyRoadRules.ts +99 -0
  1011. package/src/games/crossy-road/CrossyRoadScene.ts +355 -0
  1012. package/src/games/dino-jump/DinoJump.tsx +77 -0
  1013. package/src/games/dino-jump/DinoJumpConstants.ts +80 -0
  1014. package/src/games/dino-jump/DinoJumpGame.ts +344 -0
  1015. package/src/games/dino-jump/DinoJumpScene.ts +686 -0
  1016. package/src/games/dots-and-boxes/DotsAndBoxes.tsx +83 -0
  1017. package/src/games/dots-and-boxes/DotsAndBoxesConstants.ts +77 -0
  1018. package/src/games/dots-and-boxes/DotsAndBoxesGame.ts +271 -0
  1019. package/src/games/dots-and-boxes/DotsAndBoxesScene.ts +249 -0
  1020. package/src/games/falling-sticks/FallingSticks.tsx +72 -0
  1021. package/src/games/falling-sticks/FallingSticksConstants.ts +62 -0
  1022. package/src/games/falling-sticks/FallingSticksGame.ts +220 -0
  1023. package/src/games/falling-sticks/FallingSticksRules.ts +145 -0
  1024. package/src/games/falling-sticks/FallingSticksScene.ts +245 -0
  1025. package/src/games/find-different-number/FindDifferentNumber.tsx +74 -0
  1026. package/src/games/find-different-number/FindDifferentNumberConstants.ts +74 -0
  1027. package/src/games/find-different-number/FindDifferentNumberGame.ts +174 -0
  1028. package/src/games/find-different-number/FindDifferentNumberRules.ts +43 -0
  1029. package/src/games/find-different-number/FindDifferentNumberScene.ts +193 -0
  1030. package/src/games/flappy-bird/FlappyBird.tsx +73 -0
  1031. package/src/games/flappy-bird/FlappyBirdConstants.ts +95 -0
  1032. package/src/games/flappy-bird/FlappyBirdGame.ts +375 -0
  1033. package/src/games/flappy-bird/FlappyBirdScene.ts +630 -0
  1034. package/src/games/fruit-merger/FruitMerger.tsx +73 -0
  1035. package/src/games/fruit-merger/FruitMergerConstants.ts +102 -0
  1036. package/src/games/fruit-merger/FruitMergerGame.ts +285 -0
  1037. package/src/games/fruit-merger/FruitMergerRules.ts +286 -0
  1038. package/src/games/fruit-merger/FruitMergerScene.ts +498 -0
  1039. package/src/games/fruit-ninja/FruitNinja.tsx +129 -0
  1040. package/src/games/fruit-ninja/FruitNinjaConstants.ts +107 -0
  1041. package/src/games/fruit-ninja/FruitNinjaGame.ts +391 -0
  1042. package/src/games/fruit-ninja/FruitNinjaScene.ts +319 -0
  1043. package/src/games/fruit-ninja/FruitNinjaWorld.ts +17 -0
  1044. package/src/games/game-2048/Game2048.tsx +84 -0
  1045. package/src/games/game-2048/Game2048Constants.ts +68 -0
  1046. package/src/games/game-2048/Game2048Game.ts +181 -0
  1047. package/src/games/game-2048/Game2048Rules.ts +101 -0
  1048. package/src/games/game-2048/Game2048Scene.ts +206 -0
  1049. package/src/games/knife-hit/KnifeHit.tsx +78 -0
  1050. package/src/games/knife-hit/KnifeHitConstants.ts +89 -0
  1051. package/src/games/knife-hit/KnifeHitGame.ts +264 -0
  1052. package/src/games/knife-hit/KnifeHitScene.ts +360 -0
  1053. package/src/games/ludo-king/LudoKing.tsx +86 -0
  1054. package/src/games/ludo-king/LudoKingConstants.ts +212 -0
  1055. package/src/games/ludo-king/LudoKingGame.ts +326 -0
  1056. package/src/games/ludo-king/LudoKingRules.ts +143 -0
  1057. package/src/games/ludo-king/LudoKingScene.ts +397 -0
  1058. package/src/games/maze-runner/MazeRunner.tsx +88 -0
  1059. package/src/games/maze-runner/MazeRunnerConstants.ts +65 -0
  1060. package/src/games/maze-runner/MazeRunnerGame.ts +176 -0
  1061. package/src/games/maze-runner/MazeRunnerRules.ts +161 -0
  1062. package/src/games/maze-runner/MazeRunnerScene.ts +245 -0
  1063. package/src/games/memory-match/MemoryMatch.tsx +77 -0
  1064. package/src/games/memory-match/MemoryMatchConstants.ts +105 -0
  1065. package/src/games/memory-match/MemoryMatchGame.ts +222 -0
  1066. package/src/games/memory-match/MemoryMatchRules.ts +38 -0
  1067. package/src/games/memory-match/MemoryMatchScene.ts +268 -0
  1068. package/src/games/mine-sweeper/MineSweeper.tsx +77 -0
  1069. package/src/games/mine-sweeper/MineSweeperConstants.ts +94 -0
  1070. package/src/games/mine-sweeper/MineSweeperGame.ts +234 -0
  1071. package/src/games/mine-sweeper/MineSweeperRules.ts +67 -0
  1072. package/src/games/mine-sweeper/MineSweeperScene.ts +262 -0
  1073. package/src/games/mob-control/MobControl.tsx +73 -0
  1074. package/src/games/mob-control/MobControlConstants.ts +106 -0
  1075. package/src/games/mob-control/MobControlGame.ts +176 -0
  1076. package/src/games/mob-control/MobControlMeshes.ts +85 -0
  1077. package/src/games/mob-control/MobControlRenderer.ts +108 -0
  1078. package/src/games/mob-control/MobControlRules.ts +522 -0
  1079. package/src/games/mob-control/MobControlScene.ts +399 -0
  1080. package/src/games/number-search/NumberSearch.tsx +18 -0
  1081. package/src/games/number-search/NumberSearchNumbers.ts +623 -0
  1082. package/src/games/nuts-and-bolts/NutsAndBolts.tsx +85 -0
  1083. package/src/games/nuts-and-bolts/NutsAndBoltsConstants.ts +75 -0
  1084. package/src/games/nuts-and-bolts/NutsAndBoltsGame.ts +298 -0
  1085. package/src/games/nuts-and-bolts/NutsAndBoltsRules.ts +474 -0
  1086. package/src/games/nuts-and-bolts/NutsAndBoltsScene.ts +498 -0
  1087. package/src/games/pac-man/PacMan.tsx +86 -0
  1088. package/src/games/pac-man/PacManConstants.ts +169 -0
  1089. package/src/games/pac-man/PacManGame.ts +406 -0
  1090. package/src/games/pac-man/PacManRules.ts +255 -0
  1091. package/src/games/pac-man/PacManScene.ts +387 -0
  1092. package/src/games/paper-io/PaperIo.tsx +91 -0
  1093. package/src/games/paper-io/PaperIoConstants.ts +86 -0
  1094. package/src/games/paper-io/PaperIoGame.ts +193 -0
  1095. package/src/games/paper-io/PaperIoMeshes.ts +233 -0
  1096. package/src/games/paper-io/PaperIoRules.ts +315 -0
  1097. package/src/games/paper-io/PaperIoScene.ts +310 -0
  1098. package/src/games/penguin-run/PenguinMeshes.ts +269 -0
  1099. package/src/games/penguin-run/PenguinModel.ts +712 -0
  1100. package/src/games/penguin-run/PenguinRun.tsx +77 -0
  1101. package/src/games/penguin-run/PenguinRunConstants.ts +69 -0
  1102. package/src/games/penguin-run/PenguinRunGame.ts +406 -0
  1103. package/src/games/penguin-run/PenguinRunScene.ts +949 -0
  1104. package/src/games/perfect-circle/PerfectCircle.tsx +74 -0
  1105. package/src/games/perfect-circle/PerfectCircleConstants.ts +52 -0
  1106. package/src/games/perfect-circle/PerfectCircleGame.ts +153 -0
  1107. package/src/games/perfect-circle/PerfectCircleRules.ts +111 -0
  1108. package/src/games/perfect-circle/PerfectCircleScene.ts +176 -0
  1109. package/src/games/pipe-connect/PipeConnect.tsx +69 -0
  1110. package/src/games/pipe-connect/PipeConnectConstants.ts +101 -0
  1111. package/src/games/pipe-connect/PipeConnectGame.ts +179 -0
  1112. package/src/games/pipe-connect/PipeConnectRules.ts +326 -0
  1113. package/src/games/pipe-connect/PipeConnectScene.ts +271 -0
  1114. package/src/games/play-with-tua/PlayWithTua.tsx +123 -0
  1115. package/src/games/play-with-tua/PlayWithTuaConstants.ts +70 -0
  1116. package/src/games/play-with-tua/PlayWithTuaGame.ts +167 -0
  1117. package/src/games/play-with-tua/PlayWithTuaModel.ts +42 -0
  1118. package/src/games/play-with-tua/PlayWithTuaScene.ts +36 -0
  1119. package/src/games/popit-fidget/PopitFidget.tsx +72 -0
  1120. package/src/games/popit-fidget/PopitFidgetConstants.ts +71 -0
  1121. package/src/games/popit-fidget/PopitFidgetGame.ts +148 -0
  1122. package/src/games/popit-fidget/PopitFidgetScene.ts +242 -0
  1123. package/src/games/reversi/Reversi.tsx +94 -0
  1124. package/src/games/reversi/ReversiConstants.ts +67 -0
  1125. package/src/games/reversi/ReversiGame.ts +266 -0
  1126. package/src/games/reversi/ReversiRules.ts +176 -0
  1127. package/src/games/reversi/ReversiScene.ts +240 -0
  1128. package/src/games/search-grid/SearchGrid.tsx +92 -0
  1129. package/src/games/search-grid/SearchGridConstants.ts +178 -0
  1130. package/src/games/search-grid/SearchGridGame.ts +209 -0
  1131. package/src/games/search-grid/SearchGridScene.ts +301 -0
  1132. package/src/games/shared/BackdropCard.tsx +54 -0
  1133. package/src/games/shared/EngineBackdrop.ts +300 -0
  1134. package/src/games/shared/EngineBlasts.ts +136 -0
  1135. package/src/games/shared/EngineBlocks.ts +91 -0
  1136. package/src/games/shared/EngineControlText.ts +17 -0
  1137. package/src/games/shared/EngineDice.ts +250 -0
  1138. package/src/games/shared/EngineFootprint.ts +35 -0
  1139. package/src/games/shared/EngineFruits.ts +1435 -0
  1140. package/src/games/shared/EngineGameLoader.tsx +88 -0
  1141. package/src/games/shared/EngineGameScreen.tsx +325 -0
  1142. package/src/games/shared/EngineGameWidth.ts +3 -0
  1143. package/src/games/shared/EngineGameWidth.web.ts +3 -0
  1144. package/src/games/shared/EngineGlyphs.ts +178 -0
  1145. package/src/games/shared/EngineHud.ts +815 -0
  1146. package/src/games/shared/EngineLoading.ts +477 -0
  1147. package/src/games/shared/EngineMeadow.ts +725 -0
  1148. package/src/games/shared/EngineMeshCache.ts +15 -0
  1149. package/src/games/shared/EngineMeshes.ts +10 -0
  1150. package/src/games/shared/EngineRacingChase.ts +21 -0
  1151. package/src/games/shared/EngineRacingHandling.ts +48 -0
  1152. package/src/games/shared/EngineReadyContext.ts +4 -0
  1153. package/src/games/shared/EngineTilt.ts +44 -0
  1154. package/src/games/shared/EngineTouchSurface.tsx +103 -0
  1155. package/src/games/shared/EngineUtils.ts +52 -0
  1156. package/src/games/shared/GameActivity.ts +13 -0
  1157. package/src/games/shared/GameLoading.tsx +202 -0
  1158. package/src/games/shared/GameLoadingTransition.tsx +61 -0
  1159. package/src/games/shared/ProceduralCacheVersion.ts +2 -0
  1160. package/src/games/shared/useEngineGame.ts +240 -0
  1161. package/src/games/shared/useGameResource.ts +21 -0
  1162. package/src/games/shared/useLiveState.ts +58 -0
  1163. package/src/games/sliding-numbers/SlidingNumbers.tsx +71 -0
  1164. package/src/games/sliding-numbers/SlidingNumbersConstants.ts +65 -0
  1165. package/src/games/sliding-numbers/SlidingNumbersGame.ts +192 -0
  1166. package/src/games/sliding-numbers/SlidingNumbersRules.ts +79 -0
  1167. package/src/games/sliding-numbers/SlidingNumbersScene.ts +193 -0
  1168. package/src/games/snake-3d/Snake3D.tsx +76 -0
  1169. package/src/games/snake-3d/Snake3DConstants.ts +61 -0
  1170. package/src/games/snake-3d/Snake3DGame.ts +192 -0
  1171. package/src/games/snake-3d/Snake3DMotion.ts +22 -0
  1172. package/src/games/snake-3d/Snake3DRules.ts +116 -0
  1173. package/src/games/snake-3d/Snake3DScene.ts +322 -0
  1174. package/src/games/snakes-and-ladders/SnakesAndLadders.tsx +87 -0
  1175. package/src/games/snakes-and-ladders/SnakesAndLaddersConstants.ts +136 -0
  1176. package/src/games/snakes-and-ladders/SnakesAndLaddersGame.ts +310 -0
  1177. package/src/games/snakes-and-ladders/SnakesAndLaddersScene.ts +515 -0
  1178. package/src/games/space-fighter/SpaceFighter.tsx +74 -0
  1179. package/src/games/space-fighter/SpaceFighterConstants.ts +86 -0
  1180. package/src/games/space-fighter/SpaceFighterGame.ts +292 -0
  1181. package/src/games/space-fighter/SpaceFighterScene.ts +550 -0
  1182. package/src/games/spider-solitaire/SpiderSolitaire.tsx +80 -0
  1183. package/src/games/spider-solitaire/SpiderSolitaireConstants.ts +107 -0
  1184. package/src/games/spider-solitaire/SpiderSolitaireGame.ts +387 -0
  1185. package/src/games/spider-solitaire/SpiderSolitaireRules.ts +123 -0
  1186. package/src/games/spider-solitaire/SpiderSolitaireScene.ts +352 -0
  1187. package/src/games/stack-tower/StackTower.tsx +76 -0
  1188. package/src/games/stack-tower/StackTowerConstants.ts +74 -0
  1189. package/src/games/stack-tower/StackTowerGame.ts +236 -0
  1190. package/src/games/stack-tower/StackTowerScene.ts +186 -0
  1191. package/src/games/sudoku/Sudoku.tsx +73 -0
  1192. package/src/games/sudoku/SudokuConstants.ts +127 -0
  1193. package/src/games/sudoku/SudokuGame.ts +250 -0
  1194. package/src/games/sudoku/SudokuRules.ts +125 -0
  1195. package/src/games/sudoku/SudokuScene.ts +304 -0
  1196. package/src/games/tangram/Tangram.tsx +79 -0
  1197. package/src/games/tangram/TangramConstants.ts +64 -0
  1198. package/src/games/tangram/TangramGame.ts +356 -0
  1199. package/src/games/tangram/TangramRules.ts +409 -0
  1200. package/src/games/tangram/TangramScene.ts +203 -0
  1201. package/src/games/tank-1990/Tank1990.tsx +78 -0
  1202. package/src/games/tank-1990/Tank1990Constants.ts +81 -0
  1203. package/src/games/tank-1990/Tank1990Game.ts +331 -0
  1204. package/src/games/tank-1990/Tank1990Rules.ts +390 -0
  1205. package/src/games/tank-1990/Tank1990Scene.ts +434 -0
  1206. package/src/games/tic-tac-toe/TicTacToe.tsx +98 -0
  1207. package/src/games/tic-tac-toe/TicTacToeConstants.ts +69 -0
  1208. package/src/games/tic-tac-toe/TicTacToeGame.ts +200 -0
  1209. package/src/games/tic-tac-toe/TicTacToeRules.ts +103 -0
  1210. package/src/games/tic-tac-toe/TicTacToeScene.ts +245 -0
  1211. package/src/games/tile-home/TileHome.tsx +92 -0
  1212. package/src/games/tile-home/TileHomeConstants.ts +139 -0
  1213. package/src/games/tile-home/TileHomeGame.ts +435 -0
  1214. package/src/games/tile-home/TileHomeScene.ts +154 -0
  1215. package/src/games/treasure-hunt/TreasureHunt.tsx +206 -0
  1216. package/src/games/treasure-hunt/TreasureHuntConstants.ts +266 -0
  1217. package/src/games/treasure-hunt/TreasureHuntControls.ts +280 -0
  1218. package/src/games/treasure-hunt/TreasureHuntGame.ts +402 -0
  1219. package/src/games/treasure-hunt/TreasureHuntMeshes.ts +422 -0
  1220. package/src/games/treasure-hunt/TreasureHuntModel.ts +506 -0
  1221. package/src/games/treasure-hunt/TreasureHuntRules.ts +1210 -0
  1222. package/src/games/treasure-hunt/TreasureHuntScene.ts +586 -0
  1223. package/src/games/whack-a-mole/WhackAMole.tsx +79 -0
  1224. package/src/games/whack-a-mole/WhackAMoleConstants.ts +94 -0
  1225. package/src/games/whack-a-mole/WhackAMoleGame.ts +233 -0
  1226. package/src/games/whack-a-mole/WhackAMoleScene.ts +349 -0
  1227. package/src/games/word-search/WordSearch.tsx +18 -0
  1228. package/src/games/word-search/WordSearchWords.ts +1642 -0
  1229. package/src/helpers/GamePatternData.ts +120 -0
  1230. package/src/helpers/GameSettingsModal.tsx +384 -0
  1231. package/src/helpers/GameTheme.tsx +37 -0
  1232. package/src/helpers/IconPaths.ts +6 -0
  1233. package/src/helpers/index.ts +2 -0
  1234. package/src/index.tsx +60 -0
  1235. package/src/services/GameAssetLoader.ts +111 -0
  1236. package/src/services/GameAssets.ts +149 -0
  1237. package/src/services/GameLoaders.ts +93 -0
  1238. package/src/services/GamesConstants.ts +193 -0
  1239. package/src/services/GamesMetadata.ts +711 -0
  1240. package/src/services/GamesService.ts +116 -0
  1241. package/src/services/HapticsService.ts +48 -0
  1242. package/src/services/ScoringService.ts +19 -0
  1243. package/src/services/SfxSources.ts +81 -0
  1244. package/src/services/SoundsService.ts +582 -0
  1245. package/src/services/ThemeService.ts +281 -0
  1246. package/src/services/UtilsService.ts +134 -0
  1247. package/src/services/index.ts +6 -0
  1248. package/lib/module/games/arrows/ArrowsService.js +0 -1
  1249. package/lib/module/games/arrows/ArrowsStore.js +0 -1
  1250. package/lib/module/games/arrows/components/ArrowsGrid.js +0 -1
  1251. package/lib/module/games/arrows/components/ScoreBoard.js +0 -1
  1252. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +0 -1
  1253. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +0 -1
  1254. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +0 -1
  1255. package/lib/module/games/balloon-blaster/components/GameArea.js +0 -1
  1256. package/lib/module/games/balloon-blaster/components/GameBackground.js +0 -1
  1257. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +0 -1
  1258. package/lib/module/games/bike-racing/BikeRacingService.js +0 -1
  1259. package/lib/module/games/bike-racing/BikeRacingStore.js +0 -1
  1260. package/lib/module/games/bike-racing/components/BikeComponent.js +0 -1
  1261. package/lib/module/games/bike-racing/components/GameBackground.js +0 -1
  1262. package/lib/module/games/bike-racing/components/ScoreBoard.js +0 -1
  1263. package/lib/module/games/block-blast/BlockBlastService.js +0 -1
  1264. package/lib/module/games/block-blast/BlockBlastStore.js +0 -1
  1265. package/lib/module/games/block-blast/components/BlockPieceComponent.js +0 -1
  1266. package/lib/module/games/block-blast/components/GameArea.js +0 -1
  1267. package/lib/module/games/block-blast/components/GridComponent.js +0 -1
  1268. package/lib/module/games/block-blast/components/ScoreBoard.js +0 -1
  1269. package/lib/module/games/block-breaker/BlockBreakerService.js +0 -1
  1270. package/lib/module/games/block-breaker/BlockBreakerStore.js +0 -1
  1271. package/lib/module/games/block-breaker/components/BlastAnimation.js +0 -1
  1272. package/lib/module/games/block-breaker/components/GameArea.js +0 -1
  1273. package/lib/module/games/block-breaker/components/ScoreBoard.js +0 -1
  1274. package/lib/module/games/bluk/BlukService.js +0 -1
  1275. package/lib/module/games/bluk/BlukStore.js +0 -1
  1276. package/lib/module/games/bluk/components/GameArea.js +0 -1
  1277. package/lib/module/games/bluk/components/GameBackground.js +0 -1
  1278. package/lib/module/games/bluk/components/ScoreBoard.js +0 -1
  1279. package/lib/module/games/bubble-shooter/BubbleShooterService.js +0 -1
  1280. package/lib/module/games/bubble-shooter/BubbleShooterStore.js +0 -1
  1281. package/lib/module/games/bubble-shooter/components/GameArea.js +0 -1
  1282. package/lib/module/games/bubble-shooter/components/ScoreBoard.js +0 -1
  1283. package/lib/module/games/candy-crush/CandyCrushService.js +0 -1
  1284. package/lib/module/games/candy-crush/CandyCrushStore.js +0 -1
  1285. package/lib/module/games/candy-crush/components/CandyItem.js +0 -1
  1286. package/lib/module/games/candy-crush/components/GameGrid.js +0 -1
  1287. package/lib/module/games/candy-crush/components/ScoreBoard.js +0 -1
  1288. package/lib/module/games/car-racing/CarRacingService.js +0 -1
  1289. package/lib/module/games/car-racing/CarRacingStore.js +0 -1
  1290. package/lib/module/games/car-racing/components/CarComponent.js +0 -1
  1291. package/lib/module/games/car-racing/components/GameBackground.js +0 -1
  1292. package/lib/module/games/car-racing/components/ScoreBoard.js +0 -1
  1293. package/lib/module/games/chameleon-run/ChameleonRunService.js +0 -1
  1294. package/lib/module/games/chameleon-run/ChameleonRunStore.js +0 -1
  1295. package/lib/module/games/chameleon-run/components/GameArea.js +0 -1
  1296. package/lib/module/games/chameleon-run/components/GameBackground.js +0 -1
  1297. package/lib/module/games/chameleon-run/components/ScoreBoard.js +0 -1
  1298. package/lib/module/games/checkers/CheckersService.js +0 -1
  1299. package/lib/module/games/checkers/CheckersStore.js +0 -1
  1300. package/lib/module/games/checkers/components/GameBoard.js +0 -1
  1301. package/lib/module/games/checkers/components/ScoreBoard.js +0 -1
  1302. package/lib/module/games/color-switch/ColorSwitchService.js +0 -1
  1303. package/lib/module/games/color-switch/ColorSwitchStore.js +0 -1
  1304. package/lib/module/games/color-switch/components/GameArea.js +0 -1
  1305. package/lib/module/games/color-switch/components/ScoreBoard.js +0 -1
  1306. package/lib/module/games/colors-sort/ColorsSortService.js +0 -1
  1307. package/lib/module/games/colors-sort/ColorsSortStore.js +0 -1
  1308. package/lib/module/games/colors-sort/components/ColorContainer.js +0 -1
  1309. package/lib/module/games/colors-sort/components/ScoreBoard.js +0 -1
  1310. package/lib/module/games/connect-em-all/ConnectEmAllService.js +0 -1
  1311. package/lib/module/games/connect-em-all/ConnectEmAllStore.js +0 -1
  1312. package/lib/module/games/connect-em-all/components/GameBoard.js +0 -1
  1313. package/lib/module/games/connect-em-all/components/ScoreBoard.js +0 -1
  1314. package/lib/module/games/crossy-road/CrossyRoadService.js +0 -1
  1315. package/lib/module/games/crossy-road/CrossyRoadStore.js +0 -1
  1316. package/lib/module/games/crossy-road/components/GameArea.js +0 -1
  1317. package/lib/module/games/crossy-road/components/ScoreBoard.js +0 -1
  1318. package/lib/module/games/dino-jump/DinoJumpService.js +0 -1
  1319. package/lib/module/games/dino-jump/DinoJumpStore.js +0 -1
  1320. package/lib/module/games/dino-jump/components/DinoSprite.js +0 -1
  1321. package/lib/module/games/dino-jump/components/GameArea.js +0 -1
  1322. package/lib/module/games/dino-jump/components/GameBackground.js +0 -1
  1323. package/lib/module/games/dino-jump/components/ObstacleSprite.js +0 -1
  1324. package/lib/module/games/dino-jump/components/ScoreBoard.js +0 -1
  1325. package/lib/module/games/dino-jump/components/StarSprite.js +0 -1
  1326. package/lib/module/games/dots-and-boxes/DotsAndBoxesService.js +0 -1
  1327. package/lib/module/games/dots-and-boxes/DotsAndBoxesStore.js +0 -1
  1328. package/lib/module/games/dots-and-boxes/components/GameBoard.js +0 -1
  1329. package/lib/module/games/dots-and-boxes/components/ScoreBoard.js +0 -1
  1330. package/lib/module/games/falling-sticks/FallingSticksService.js +0 -1
  1331. package/lib/module/games/falling-sticks/FallingSticksStore.js +0 -1
  1332. package/lib/module/games/falling-sticks/components/GameArea.js +0 -1
  1333. package/lib/module/games/falling-sticks/components/GameBackground.js +0 -1
  1334. package/lib/module/games/falling-sticks/components/ScoreBoard.js +0 -1
  1335. package/lib/module/games/find-different-number/FindDifferentNumberService.js +0 -1
  1336. package/lib/module/games/find-different-number/FindDifferentNumberStore.js +0 -1
  1337. package/lib/module/games/find-different-number/components/GameGrid.js +0 -1
  1338. package/lib/module/games/find-different-number/components/ScoreBoard.js +0 -1
  1339. package/lib/module/games/flappy-bird/FlappyBirdStore.js +0 -1
  1340. package/lib/module/games/flappy-bird/components/Bird.js +0 -1
  1341. package/lib/module/games/flappy-bird/components/GameArea.js +0 -1
  1342. package/lib/module/games/flappy-bird/components/GameBackground.js +0 -1
  1343. package/lib/module/games/flappy-bird/components/Pipes.js +0 -1
  1344. package/lib/module/games/flappy-bird/components/ScoreBoard.js +0 -1
  1345. package/lib/module/games/fruit-merger/FruitMergerService.js +0 -1
  1346. package/lib/module/games/fruit-merger/FruitMergerStore.js +0 -1
  1347. package/lib/module/games/fruit-merger/components/FruitItem.js +0 -1
  1348. package/lib/module/games/fruit-merger/components/GameArea.js +0 -1
  1349. package/lib/module/games/fruit-merger/components/ScoreBoard.js +0 -1
  1350. package/lib/module/games/fruit-ninja/FruitNinjaService.js +0 -1
  1351. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +0 -1
  1352. package/lib/module/games/fruit-ninja/components/FruitComponent.js +0 -1
  1353. package/lib/module/games/fruit-ninja/components/GameArea.js +0 -1
  1354. package/lib/module/games/fruit-ninja/components/GameBackground.js +0 -1
  1355. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +0 -1
  1356. package/lib/module/games/game-2048/Game2048Service.js +0 -1
  1357. package/lib/module/games/game-2048/Game2048Store.js +0 -1
  1358. package/lib/module/games/game-2048/components/GameGrid.js +0 -1
  1359. package/lib/module/games/game-2048/components/ScoreBoard.js +0 -1
  1360. package/lib/module/games/knife-hit/KnifeHitService.js +0 -1
  1361. package/lib/module/games/knife-hit/KnifeHitStore.js +0 -1
  1362. package/lib/module/games/knife-hit/components/GameArea.js +0 -1
  1363. package/lib/module/games/knife-hit/components/ScoreBoard.js +0 -1
  1364. package/lib/module/games/ludo-king/LudoKingService.js +0 -1
  1365. package/lib/module/games/ludo-king/LudoKingStore.js +0 -1
  1366. package/lib/module/games/ludo-king/components/Dice.js +0 -1
  1367. package/lib/module/games/ludo-king/components/GameBoard.js +0 -1
  1368. package/lib/module/games/ludo-king/components/ScoreBoard.js +0 -1
  1369. package/lib/module/games/maze-runner/MazeRunnerStore.js +0 -1
  1370. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +0 -1
  1371. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +0 -1
  1372. package/lib/module/games/maze-runner/components/ScoreBoard.js +0 -1
  1373. package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +0 -1
  1374. package/lib/module/games/maze-runner/components/WallComponent.js +0 -1
  1375. package/lib/module/games/memory-match/MemoryMatchService.js +0 -1
  1376. package/lib/module/games/memory-match/MemoryMatchStore.js +0 -1
  1377. package/lib/module/games/memory-match/components/Card.js +0 -1
  1378. package/lib/module/games/memory-match/components/GameBoard.js +0 -1
  1379. package/lib/module/games/memory-match/components/ScoreBoard.js +0 -1
  1380. package/lib/module/games/mine-sweeper/MineSweeperService.js +0 -1
  1381. package/lib/module/games/mine-sweeper/MineSweeperStore.js +0 -1
  1382. package/lib/module/games/mine-sweeper/components/GameArea.js +0 -1
  1383. package/lib/module/games/mine-sweeper/components/ScoreBoard.js +0 -1
  1384. package/lib/module/games/mob-control/MobControlService.js +0 -1
  1385. package/lib/module/games/mob-control/MobControlStore.js +0 -1
  1386. package/lib/module/games/mob-control/components/GameArea.js +0 -1
  1387. package/lib/module/games/mob-control/components/ScoreBoard.js +0 -1
  1388. package/lib/module/games/number-search/NumberSearchConstants.js +0 -1
  1389. package/lib/module/games/number-search/NumberSearchService.js +0 -1
  1390. package/lib/module/games/number-search/NumberSearchStore.js +0 -1
  1391. package/lib/module/games/number-search/components/GameBoard.js +0 -1
  1392. package/lib/module/games/number-search/components/NumberList.js +0 -1
  1393. package/lib/module/games/number-search/components/ScoreBoard.js +0 -1
  1394. package/lib/module/games/nuts-and-bolts/NutsAndBoltsService.js +0 -1
  1395. package/lib/module/games/nuts-and-bolts/NutsAndBoltsStore.js +0 -1
  1396. package/lib/module/games/nuts-and-bolts/components/GameBoard.js +0 -1
  1397. package/lib/module/games/nuts-and-bolts/components/ScoreBoard.js +0 -1
  1398. package/lib/module/games/pac-man/PacManService.js +0 -1
  1399. package/lib/module/games/pac-man/PacManStore.js +0 -1
  1400. package/lib/module/games/pac-man/components/GameCanvas.js +0 -1
  1401. package/lib/module/games/pac-man/components/ScoreBoard.js +0 -1
  1402. package/lib/module/games/paper-io/PaperIoService.js +0 -1
  1403. package/lib/module/games/paper-io/PaperIoStore.js +0 -1
  1404. package/lib/module/games/paper-io/components/GameArea.js +0 -1
  1405. package/lib/module/games/paper-io/components/ScoreBoard.js +0 -1
  1406. package/lib/module/games/perfect-circle/PerfectCircleService.js +0 -1
  1407. package/lib/module/games/perfect-circle/PerfectCircleStore.js +0 -1
  1408. package/lib/module/games/perfect-circle/components/DrawingCanvas.js +0 -1
  1409. package/lib/module/games/perfect-circle/components/ScoreBoard.js +0 -1
  1410. package/lib/module/games/pipe-connect/PipeConnectService.js +0 -1
  1411. package/lib/module/games/pipe-connect/PipeConnectStore.js +0 -1
  1412. package/lib/module/games/pipe-connect/components/GameArea.js +0 -1
  1413. package/lib/module/games/pipe-connect/components/ScoreBoard.js +0 -1
  1414. package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -1
  1415. package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -1
  1416. package/lib/module/games/popit-fidget/components/BubbleComponent.js +0 -1
  1417. package/lib/module/games/popit-fidget/components/FidgetGrid.js +0 -1
  1418. package/lib/module/games/popit-fidget/components/ScoreBoard.js +0 -1
  1419. package/lib/module/games/reversi/ReversiStore.js +0 -1
  1420. package/lib/module/games/reversi/components/GameBoard.js +0 -1
  1421. package/lib/module/games/reversi/components/ScoreBoard.js +0 -1
  1422. package/lib/module/games/sliding-numbers/SlidingNumbersService.js +0 -1
  1423. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +0 -1
  1424. package/lib/module/games/sliding-numbers/components/NumbersGrid.js +0 -1
  1425. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +0 -1
  1426. package/lib/module/games/snake-3d/Snake3DService.js +0 -1
  1427. package/lib/module/games/snake-3d/Snake3DStore.js +0 -1
  1428. package/lib/module/games/snake-3d/components/GameGrid.js +0 -1
  1429. package/lib/module/games/snake-3d/components/ScoreBoard.js +0 -1
  1430. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersService.js +0 -1
  1431. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersStore.js +0 -1
  1432. package/lib/module/games/snakes-and-ladders/components/Dice.js +0 -1
  1433. package/lib/module/games/snakes-and-ladders/components/GameBoard.js +0 -1
  1434. package/lib/module/games/snakes-and-ladders/components/ScoreBoard.js +0 -1
  1435. package/lib/module/games/space-fighter/SpaceFighterService.js +0 -1
  1436. package/lib/module/games/space-fighter/SpaceFighterStore.js +0 -1
  1437. package/lib/module/games/space-fighter/components/AsteroidComponent.js +0 -1
  1438. package/lib/module/games/space-fighter/components/GameArea.js +0 -1
  1439. package/lib/module/games/space-fighter/components/GameBackground.js +0 -1
  1440. package/lib/module/games/space-fighter/components/ScoreBoard.js +0 -1
  1441. package/lib/module/games/space-fighter/components/Spacecraft3D.js +0 -1
  1442. package/lib/module/games/space-fighter/components/SpacecraftPath.js +0 -1
  1443. package/lib/module/games/spider-solitaire/SpiderSolitaireService.js +0 -1
  1444. package/lib/module/games/spider-solitaire/SpiderSolitaireStore.js +0 -1
  1445. package/lib/module/games/spider-solitaire/components/Card.js +0 -1
  1446. package/lib/module/games/spider-solitaire/components/CardPile.js +0 -1
  1447. package/lib/module/games/spider-solitaire/components/ScoreBoard.js +0 -1
  1448. package/lib/module/games/stack-tower/StackTowerService.js +0 -1
  1449. package/lib/module/games/stack-tower/StackTowerStore.js +0 -1
  1450. package/lib/module/games/stack-tower/components/GameArea.js +0 -1
  1451. package/lib/module/games/stack-tower/components/ScoreBoard.js +0 -1
  1452. package/lib/module/games/sudoku/SudokuService.js +0 -1
  1453. package/lib/module/games/sudoku/SudokuStore.js +0 -1
  1454. package/lib/module/games/sudoku/components/GameArea.js +0 -1
  1455. package/lib/module/games/sudoku/components/ScoreBoard.js +0 -1
  1456. package/lib/module/games/tangram/TangramService.js +0 -1
  1457. package/lib/module/games/tangram/TangramStore.js +0 -1
  1458. package/lib/module/games/tangram/components/GameBoard.js +0 -1
  1459. package/lib/module/games/tangram/components/ScoreBoard.js +0 -1
  1460. package/lib/module/games/tank-1990/Tank1990Service.js +0 -1
  1461. package/lib/module/games/tank-1990/Tank1990Store.js +0 -1
  1462. package/lib/module/games/tank-1990/components/Controls.js +0 -1
  1463. package/lib/module/games/tank-1990/components/GameBoard.js +0 -1
  1464. package/lib/module/games/tank-1990/components/ScoreBoard.js +0 -1
  1465. package/lib/module/games/tic-tac-toe/TicTacToeService.js +0 -1
  1466. package/lib/module/games/tic-tac-toe/TicTacToeStore.js +0 -1
  1467. package/lib/module/games/tic-tac-toe/components/GameBoard.js +0 -1
  1468. package/lib/module/games/tic-tac-toe/components/ScoreBoard.js +0 -1
  1469. package/lib/module/games/tile-home/TileHomeService.js +0 -1
  1470. package/lib/module/games/tile-home/TileHomeStore.js +0 -1
  1471. package/lib/module/games/tile-home/components/AnimatingTile.js +0 -1
  1472. package/lib/module/games/tile-home/components/FlyingTile.js +0 -1
  1473. package/lib/module/games/tile-home/components/GameBoard.js +0 -1
  1474. package/lib/module/games/tile-home/components/ScoreBoard.js +0 -1
  1475. package/lib/module/games/tile-home/components/TileItem.js +0 -1
  1476. package/lib/module/games/tile-home/components/TileSlot.js +0 -1
  1477. package/lib/module/games/whack-a-mole/WhackAMoleService.js +0 -1
  1478. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +0 -1
  1479. package/lib/module/games/whack-a-mole/components/GameBackground.js +0 -1
  1480. package/lib/module/games/whack-a-mole/components/GameGrid.js +0 -1
  1481. package/lib/module/games/whack-a-mole/components/GameHole.js +0 -1
  1482. package/lib/module/games/whack-a-mole/components/MoleCharacter.js +0 -1
  1483. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +0 -1
  1484. package/lib/module/games/word-search/WordSearchConstants.js +0 -1
  1485. package/lib/module/games/word-search/WordSearchService.js +0 -1
  1486. package/lib/module/games/word-search/WordSearchStore.js +0 -1
  1487. package/lib/module/games/word-search/components/GameBoard.js +0 -1
  1488. package/lib/module/games/word-search/components/ScoreBoard.js +0 -1
  1489. package/lib/module/games/word-search/components/WordList.js +0 -1
  1490. package/lib/module/helpers/AnimatedScore.js +0 -1
  1491. package/lib/module/helpers/AnimationFrame.js +0 -1
  1492. package/lib/module/helpers/AnimationTracker.js +0 -1
  1493. package/lib/module/helpers/BlastAnimation.js +0 -1
  1494. package/lib/module/helpers/ErrorHandler.js +0 -1
  1495. package/lib/module/helpers/GameBackgroundPattern.js +0 -1
  1496. package/lib/module/helpers/GameControlButton.js +0 -1
  1497. package/lib/module/helpers/GameOverModal.js +0 -1
  1498. package/lib/module/helpers/GameTimer.js +0 -1
  1499. package/lib/module/helpers/Icons.js +0 -1
  1500. package/lib/module/helpers/ParticleBlast.js +0 -1
  1501. package/lib/module/helpers/ScoreBoardContainer.js +0 -1
  1502. package/lib/module/helpers/assets/apple-fruit.js +0 -1
  1503. package/lib/module/helpers/assets/avocado-item.js +0 -1
  1504. package/lib/module/helpers/assets/banana-fruit.js +0 -1
  1505. package/lib/module/helpers/assets/bomb-item.js +0 -1
  1506. package/lib/module/helpers/assets/broccoli-item.js +0 -1
  1507. package/lib/module/helpers/assets/cherries-fruit.js +0 -1
  1508. package/lib/module/helpers/assets/donut-item.js +0 -1
  1509. package/lib/module/helpers/assets/dragonfruit-item.js +0 -1
  1510. package/lib/module/helpers/assets/fries-item.js +0 -1
  1511. package/lib/module/helpers/assets/fruit-helpers.js +0 -1
  1512. package/lib/module/helpers/assets/grapes-fruit.js +0 -1
  1513. package/lib/module/helpers/assets/icecream-item.js +0 -1
  1514. package/lib/module/helpers/assets/index.js +0 -1
  1515. package/lib/module/helpers/assets/kiwi-fruit.js +0 -1
  1516. package/lib/module/helpers/assets/mango-fruit.js +0 -1
  1517. package/lib/module/helpers/assets/orange-fruit.js +0 -1
  1518. package/lib/module/helpers/assets/papaya-fruit.js +0 -1
  1519. package/lib/module/helpers/assets/papaya-full-fruit.js +0 -1
  1520. package/lib/module/helpers/assets/peach-fruit.js +0 -1
  1521. package/lib/module/helpers/assets/pineapple-fruit.js +0 -1
  1522. package/lib/module/helpers/assets/pomegranate-fruit.js +0 -1
  1523. package/lib/module/helpers/assets/pumpkin-fruit.js +0 -1
  1524. package/lib/module/helpers/assets/raspberry-item.js +0 -1
  1525. package/lib/module/helpers/assets/star-item.js +0 -1
  1526. package/lib/module/helpers/assets/strawberry-fruit.js +0 -1
  1527. package/lib/module/helpers/assets/watermelon-fruit.js +0 -1
  1528. package/lib/module/types.d.js +0 -1
  1529. package/lib/typescript/src/games/arrows/ArrowsService.d.ts +0 -6
  1530. package/lib/typescript/src/games/arrows/ArrowsStore.d.ts +0 -51
  1531. package/lib/typescript/src/games/arrows/components/ArrowsGrid.d.ts +0 -13
  1532. package/lib/typescript/src/games/arrows/components/ScoreBoard.d.ts +0 -6
  1533. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -80
  1534. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +0 -30
  1535. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts +0 -9
  1536. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +0 -9
  1537. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +0 -7
  1538. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +0 -6
  1539. package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +0 -44
  1540. package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +0 -68
  1541. package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +0 -12
  1542. package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +0 -7
  1543. package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +0 -6
  1544. package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +0 -16
  1545. package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +0 -70
  1546. package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +0 -11
  1547. package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +0 -11
  1548. package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +0 -8
  1549. package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +0 -6
  1550. package/lib/typescript/src/games/block-breaker/BlockBreakerService.d.ts +0 -88
  1551. package/lib/typescript/src/games/block-breaker/BlockBreakerStore.d.ts +0 -47
  1552. package/lib/typescript/src/games/block-breaker/components/BlastAnimation.d.ts +0 -15
  1553. package/lib/typescript/src/games/block-breaker/components/GameArea.d.ts +0 -8
  1554. package/lib/typescript/src/games/block-breaker/components/ScoreBoard.d.ts +0 -6
  1555. package/lib/typescript/src/games/bluk/BlukService.d.ts +0 -71
  1556. package/lib/typescript/src/games/bluk/BlukStore.d.ts +0 -52
  1557. package/lib/typescript/src/games/bluk/components/GameArea.d.ts +0 -17
  1558. package/lib/typescript/src/games/bluk/components/GameBackground.d.ts +0 -9
  1559. package/lib/typescript/src/games/bluk/components/ScoreBoard.d.ts +0 -6
  1560. package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +0 -35
  1561. package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +0 -63
  1562. package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +0 -8
  1563. package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +0 -6
  1564. package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +0 -37
  1565. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +0 -53
  1566. package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +0 -11
  1567. package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +0 -2
  1568. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +0 -5
  1569. package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +0 -44
  1570. package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +0 -68
  1571. package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +0 -12
  1572. package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +0 -7
  1573. package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +0 -6
  1574. package/lib/typescript/src/games/chameleon-run/ChameleonRunService.d.ts +0 -76
  1575. package/lib/typescript/src/games/chameleon-run/ChameleonRunStore.d.ts +0 -48
  1576. package/lib/typescript/src/games/chameleon-run/components/GameArea.d.ts +0 -8
  1577. package/lib/typescript/src/games/chameleon-run/components/GameBackground.d.ts +0 -7
  1578. package/lib/typescript/src/games/chameleon-run/components/ScoreBoard.d.ts +0 -6
  1579. package/lib/typescript/src/games/checkers/CheckersService.d.ts +0 -6
  1580. package/lib/typescript/src/games/checkers/CheckersStore.d.ts +0 -48
  1581. package/lib/typescript/src/games/checkers/components/GameBoard.d.ts +0 -6
  1582. package/lib/typescript/src/games/checkers/components/ScoreBoard.d.ts +0 -6
  1583. package/lib/typescript/src/games/color-switch/ColorSwitchService.d.ts +0 -63
  1584. package/lib/typescript/src/games/color-switch/ColorSwitchStore.d.ts +0 -43
  1585. package/lib/typescript/src/games/color-switch/components/GameArea.d.ts +0 -8
  1586. package/lib/typescript/src/games/color-switch/components/ScoreBoard.d.ts +0 -6
  1587. package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts +0 -61
  1588. package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts +0 -56
  1589. package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts +0 -7
  1590. package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +0 -6
  1591. package/lib/typescript/src/games/connect-em-all/ConnectEmAllService.d.ts +0 -20
  1592. package/lib/typescript/src/games/connect-em-all/ConnectEmAllStore.d.ts +0 -48
  1593. package/lib/typescript/src/games/connect-em-all/components/GameBoard.d.ts +0 -7
  1594. package/lib/typescript/src/games/connect-em-all/components/ScoreBoard.d.ts +0 -6
  1595. package/lib/typescript/src/games/crossy-road/CrossyRoadService.d.ts +0 -89
  1596. package/lib/typescript/src/games/crossy-road/CrossyRoadStore.d.ts +0 -39
  1597. package/lib/typescript/src/games/crossy-road/components/GameArea.d.ts +0 -8
  1598. package/lib/typescript/src/games/crossy-road/components/ScoreBoard.d.ts +0 -6
  1599. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +0 -39
  1600. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +0 -97
  1601. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +0 -2
  1602. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +0 -7
  1603. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +0 -7
  1604. package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +0 -8
  1605. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +0 -6
  1606. package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +0 -2
  1607. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesService.d.ts +0 -45
  1608. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesStore.d.ts +0 -37
  1609. package/lib/typescript/src/games/dots-and-boxes/components/GameBoard.d.ts +0 -7
  1610. package/lib/typescript/src/games/dots-and-boxes/components/ScoreBoard.d.ts +0 -6
  1611. package/lib/typescript/src/games/falling-sticks/FallingSticksService.d.ts +0 -40
  1612. package/lib/typescript/src/games/falling-sticks/FallingSticksStore.d.ts +0 -31
  1613. package/lib/typescript/src/games/falling-sticks/components/GameArea.d.ts +0 -7
  1614. package/lib/typescript/src/games/falling-sticks/components/GameBackground.d.ts +0 -6
  1615. package/lib/typescript/src/games/falling-sticks/components/ScoreBoard.d.ts +0 -6
  1616. package/lib/typescript/src/games/find-different-number/FindDifferentNumberService.d.ts +0 -6
  1617. package/lib/typescript/src/games/find-different-number/FindDifferentNumberStore.d.ts +0 -36
  1618. package/lib/typescript/src/games/find-different-number/components/GameGrid.d.ts +0 -7
  1619. package/lib/typescript/src/games/find-different-number/components/ScoreBoard.d.ts +0 -6
  1620. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +0 -68
  1621. package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +0 -2
  1622. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +0 -7
  1623. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +0 -7
  1624. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +0 -8
  1625. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +0 -6
  1626. package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +0 -3
  1627. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +0 -66
  1628. package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +0 -8
  1629. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +0 -8
  1630. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +0 -6
  1631. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +0 -73
  1632. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +0 -38
  1633. package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts +0 -8
  1634. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +0 -7
  1635. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +0 -7
  1636. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +0 -6
  1637. package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +0 -102
  1638. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +0 -44
  1639. package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +0 -2
  1640. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +0 -6
  1641. package/lib/typescript/src/games/knife-hit/KnifeHitService.d.ts +0 -48
  1642. package/lib/typescript/src/games/knife-hit/KnifeHitStore.d.ts +0 -41
  1643. package/lib/typescript/src/games/knife-hit/components/GameArea.d.ts +0 -8
  1644. package/lib/typescript/src/games/knife-hit/components/ScoreBoard.d.ts +0 -6
  1645. package/lib/typescript/src/games/ludo-king/LudoKingService.d.ts +0 -33
  1646. package/lib/typescript/src/games/ludo-king/LudoKingStore.d.ts +0 -34
  1647. package/lib/typescript/src/games/ludo-king/components/Dice.d.ts +0 -7
  1648. package/lib/typescript/src/games/ludo-king/components/GameBoard.d.ts +0 -7
  1649. package/lib/typescript/src/games/ludo-king/components/ScoreBoard.d.ts +0 -6
  1650. package/lib/typescript/src/games/maze-runner/MazeRunnerStore.d.ts +0 -62
  1651. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts +0 -10
  1652. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts +0 -33
  1653. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +0 -24
  1654. package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts +0 -24
  1655. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts +0 -9
  1656. package/lib/typescript/src/games/memory-match/MemoryMatchService.d.ts +0 -6
  1657. package/lib/typescript/src/games/memory-match/MemoryMatchStore.d.ts +0 -42
  1658. package/lib/typescript/src/games/memory-match/components/Card.d.ts +0 -6
  1659. package/lib/typescript/src/games/memory-match/components/GameBoard.d.ts +0 -6
  1660. package/lib/typescript/src/games/memory-match/components/ScoreBoard.d.ts +0 -6
  1661. package/lib/typescript/src/games/mine-sweeper/MineSweeperService.d.ts +0 -22
  1662. package/lib/typescript/src/games/mine-sweeper/MineSweeperStore.d.ts +0 -73
  1663. package/lib/typescript/src/games/mine-sweeper/components/GameArea.d.ts +0 -8
  1664. package/lib/typescript/src/games/mine-sweeper/components/ScoreBoard.d.ts +0 -6
  1665. package/lib/typescript/src/games/mob-control/MobControlService.d.ts +0 -74
  1666. package/lib/typescript/src/games/mob-control/MobControlStore.d.ts +0 -66
  1667. package/lib/typescript/src/games/mob-control/components/GameArea.d.ts +0 -11
  1668. package/lib/typescript/src/games/mob-control/components/ScoreBoard.d.ts +0 -6
  1669. package/lib/typescript/src/games/number-search/NumberSearchConstants.d.ts +0 -63
  1670. package/lib/typescript/src/games/number-search/NumberSearchService.d.ts +0 -34
  1671. package/lib/typescript/src/games/number-search/NumberSearchStore.d.ts +0 -70
  1672. package/lib/typescript/src/games/number-search/components/GameBoard.d.ts +0 -7
  1673. package/lib/typescript/src/games/number-search/components/NumberList.d.ts +0 -2
  1674. package/lib/typescript/src/games/number-search/components/ScoreBoard.d.ts +0 -6
  1675. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsService.d.ts +0 -67
  1676. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsStore.d.ts +0 -45
  1677. package/lib/typescript/src/games/nuts-and-bolts/components/GameBoard.d.ts +0 -7
  1678. package/lib/typescript/src/games/nuts-and-bolts/components/ScoreBoard.d.ts +0 -6
  1679. package/lib/typescript/src/games/pac-man/PacManService.d.ts +0 -73
  1680. package/lib/typescript/src/games/pac-man/PacManStore.d.ts +0 -89
  1681. package/lib/typescript/src/games/pac-man/components/GameCanvas.d.ts +0 -2
  1682. package/lib/typescript/src/games/pac-man/components/ScoreBoard.d.ts +0 -6
  1683. package/lib/typescript/src/games/paper-io/PaperIoService.d.ts +0 -70
  1684. package/lib/typescript/src/games/paper-io/PaperIoStore.d.ts +0 -51
  1685. package/lib/typescript/src/games/paper-io/components/GameArea.d.ts +0 -8
  1686. package/lib/typescript/src/games/paper-io/components/ScoreBoard.d.ts +0 -6
  1687. package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +0 -15
  1688. package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +0 -55
  1689. package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +0 -8
  1690. package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +0 -6
  1691. package/lib/typescript/src/games/pipe-connect/PipeConnectService.d.ts +0 -17
  1692. package/lib/typescript/src/games/pipe-connect/PipeConnectStore.d.ts +0 -31
  1693. package/lib/typescript/src/games/pipe-connect/components/GameArea.d.ts +0 -7
  1694. package/lib/typescript/src/games/pipe-connect/components/ScoreBoard.d.ts +0 -6
  1695. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -30
  1696. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +0 -33
  1697. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +0 -10
  1698. package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +0 -10
  1699. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +0 -6
  1700. package/lib/typescript/src/games/reversi/ReversiStore.d.ts +0 -46
  1701. package/lib/typescript/src/games/reversi/components/GameBoard.d.ts +0 -6
  1702. package/lib/typescript/src/games/reversi/components/ScoreBoard.d.ts +0 -6
  1703. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +0 -6
  1704. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +0 -38
  1705. package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +0 -7
  1706. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +0 -6
  1707. package/lib/typescript/src/games/snake-3d/Snake3DService.d.ts +0 -29
  1708. package/lib/typescript/src/games/snake-3d/Snake3DStore.d.ts +0 -49
  1709. package/lib/typescript/src/games/snake-3d/components/GameGrid.d.ts +0 -2
  1710. package/lib/typescript/src/games/snake-3d/components/ScoreBoard.d.ts +0 -6
  1711. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersService.d.ts +0 -22
  1712. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersStore.d.ts +0 -40
  1713. package/lib/typescript/src/games/snakes-and-ladders/components/Dice.d.ts +0 -7
  1714. package/lib/typescript/src/games/snakes-and-ladders/components/GameBoard.d.ts +0 -2
  1715. package/lib/typescript/src/games/snakes-and-ladders/components/ScoreBoard.d.ts +0 -6
  1716. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts +0 -117
  1717. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts +0 -54
  1718. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -9
  1719. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +0 -9
  1720. package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts +0 -6
  1721. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +0 -6
  1722. package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts +0 -11
  1723. package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts +0 -9
  1724. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireService.d.ts +0 -23
  1725. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireStore.d.ts +0 -71
  1726. package/lib/typescript/src/games/spider-solitaire/components/Card.d.ts +0 -10
  1727. package/lib/typescript/src/games/spider-solitaire/components/CardPile.d.ts +0 -12
  1728. package/lib/typescript/src/games/spider-solitaire/components/ScoreBoard.d.ts +0 -6
  1729. package/lib/typescript/src/games/stack-tower/StackTowerService.d.ts +0 -51
  1730. package/lib/typescript/src/games/stack-tower/StackTowerStore.d.ts +0 -52
  1731. package/lib/typescript/src/games/stack-tower/components/GameArea.d.ts +0 -8
  1732. package/lib/typescript/src/games/stack-tower/components/ScoreBoard.d.ts +0 -6
  1733. package/lib/typescript/src/games/sudoku/SudokuService.d.ts +0 -24
  1734. package/lib/typescript/src/games/sudoku/SudokuStore.d.ts +0 -65
  1735. package/lib/typescript/src/games/sudoku/components/GameArea.d.ts +0 -8
  1736. package/lib/typescript/src/games/sudoku/components/ScoreBoard.d.ts +0 -6
  1737. package/lib/typescript/src/games/tangram/TangramService.d.ts +0 -6
  1738. package/lib/typescript/src/games/tangram/TangramStore.d.ts +0 -34
  1739. package/lib/typescript/src/games/tangram/components/GameBoard.d.ts +0 -7
  1740. package/lib/typescript/src/games/tangram/components/ScoreBoard.d.ts +0 -6
  1741. package/lib/typescript/src/games/tank-1990/Tank1990Service.d.ts +0 -80
  1742. package/lib/typescript/src/games/tank-1990/Tank1990Store.d.ts +0 -48
  1743. package/lib/typescript/src/games/tank-1990/components/Controls.d.ts +0 -2
  1744. package/lib/typescript/src/games/tank-1990/components/GameBoard.d.ts +0 -2
  1745. package/lib/typescript/src/games/tank-1990/components/ScoreBoard.d.ts +0 -6
  1746. package/lib/typescript/src/games/tic-tac-toe/TicTacToeService.d.ts +0 -0
  1747. package/lib/typescript/src/games/tic-tac-toe/TicTacToeStore.d.ts +0 -51
  1748. package/lib/typescript/src/games/tic-tac-toe/components/GameBoard.d.ts +0 -6
  1749. package/lib/typescript/src/games/tic-tac-toe/components/ScoreBoard.d.ts +0 -6
  1750. package/lib/typescript/src/games/tile-home/TileHomeService.d.ts +0 -1
  1751. package/lib/typescript/src/games/tile-home/TileHomeStore.d.ts +0 -57
  1752. package/lib/typescript/src/games/tile-home/components/AnimatingTile.d.ts +0 -9
  1753. package/lib/typescript/src/games/tile-home/components/FlyingTile.d.ts +0 -16
  1754. package/lib/typescript/src/games/tile-home/components/GameBoard.d.ts +0 -7
  1755. package/lib/typescript/src/games/tile-home/components/ScoreBoard.d.ts +0 -6
  1756. package/lib/typescript/src/games/tile-home/components/TileItem.d.ts +0 -11
  1757. package/lib/typescript/src/games/tile-home/components/TileSlot.d.ts +0 -7
  1758. package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +0 -32
  1759. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +0 -39
  1760. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +0 -7
  1761. package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts +0 -10
  1762. package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts +0 -11
  1763. package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +0 -6
  1764. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +0 -6
  1765. package/lib/typescript/src/games/word-search/WordSearchConstants.d.ts +0 -63
  1766. package/lib/typescript/src/games/word-search/WordSearchService.d.ts +0 -34
  1767. package/lib/typescript/src/games/word-search/WordSearchStore.d.ts +0 -70
  1768. package/lib/typescript/src/games/word-search/components/GameBoard.d.ts +0 -7
  1769. package/lib/typescript/src/games/word-search/components/ScoreBoard.d.ts +0 -6
  1770. package/lib/typescript/src/games/word-search/components/WordList.d.ts +0 -2
  1771. package/lib/typescript/src/helpers/AnimatedScore.d.ts +0 -36
  1772. package/lib/typescript/src/helpers/AnimationFrame.d.ts +0 -40
  1773. package/lib/typescript/src/helpers/AnimationTracker.d.ts +0 -44
  1774. package/lib/typescript/src/helpers/BlastAnimation.d.ts +0 -16
  1775. package/lib/typescript/src/helpers/ErrorHandler.d.ts +0 -123
  1776. package/lib/typescript/src/helpers/GameBackgroundPattern.d.ts +0 -7
  1777. package/lib/typescript/src/helpers/GameControlButton.d.ts +0 -11
  1778. package/lib/typescript/src/helpers/GameOverModal.d.ts +0 -15
  1779. package/lib/typescript/src/helpers/GameTimer.d.ts +0 -26
  1780. package/lib/typescript/src/helpers/Icons.d.ts +0 -12
  1781. package/lib/typescript/src/helpers/ParticleBlast.d.ts +0 -11
  1782. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +0 -85
  1783. package/lib/typescript/src/helpers/assets/apple-fruit.d.ts +0 -4
  1784. package/lib/typescript/src/helpers/assets/avocado-item.d.ts +0 -4
  1785. package/lib/typescript/src/helpers/assets/banana-fruit.d.ts +0 -4
  1786. package/lib/typescript/src/helpers/assets/bomb-item.d.ts +0 -4
  1787. package/lib/typescript/src/helpers/assets/broccoli-item.d.ts +0 -4
  1788. package/lib/typescript/src/helpers/assets/cherries-fruit.d.ts +0 -4
  1789. package/lib/typescript/src/helpers/assets/donut-item.d.ts +0 -4
  1790. package/lib/typescript/src/helpers/assets/dragonfruit-item.d.ts +0 -4
  1791. package/lib/typescript/src/helpers/assets/fries-item.d.ts +0 -4
  1792. package/lib/typescript/src/helpers/assets/fruit-helpers.d.ts +0 -154
  1793. package/lib/typescript/src/helpers/assets/grapes-fruit.d.ts +0 -4
  1794. package/lib/typescript/src/helpers/assets/icecream-item.d.ts +0 -4
  1795. package/lib/typescript/src/helpers/assets/index.d.ts +0 -31
  1796. package/lib/typescript/src/helpers/assets/kiwi-fruit.d.ts +0 -4
  1797. package/lib/typescript/src/helpers/assets/mango-fruit.d.ts +0 -4
  1798. package/lib/typescript/src/helpers/assets/orange-fruit.d.ts +0 -4
  1799. package/lib/typescript/src/helpers/assets/papaya-fruit.d.ts +0 -4
  1800. package/lib/typescript/src/helpers/assets/papaya-full-fruit.d.ts +0 -4
  1801. package/lib/typescript/src/helpers/assets/peach-fruit.d.ts +0 -4
  1802. package/lib/typescript/src/helpers/assets/pineapple-fruit.d.ts +0 -4
  1803. package/lib/typescript/src/helpers/assets/pomegranate-fruit.d.ts +0 -4
  1804. package/lib/typescript/src/helpers/assets/pumpkin-fruit.d.ts +0 -4
  1805. package/lib/typescript/src/helpers/assets/raspberry-item.d.ts +0 -4
  1806. package/lib/typescript/src/helpers/assets/star-item.d.ts +0 -4
  1807. package/lib/typescript/src/helpers/assets/strawberry-fruit.d.ts +0 -4
  1808. package/lib/typescript/src/helpers/assets/watermelon-fruit.d.ts +0 -4
@@ -1 +1 @@
1
- "use strict";const _0x36c69d=_0x18eb;!function(){const e=_0x18eb,t=_0x559b();for(;;)try{if(866129==parseInt(e(235,"X7T("))/1+parseInt(e(196,"KPJw"))/2*(-parseInt(e(243,"eiKA"))/3)+parseInt(e(266,"(IP#"))/4+-parseInt(e(288,"*Cx4"))/5*(parseInt(e(223,"Ng5Q"))/6)+-parseInt(e(234,"%^d9"))/7+-parseInt(e(254,"T@DK"))/8*(-parseInt(e(200,"1xcz"))/9)+parseInt(e(209,"L(ST"))/10)break;t.push(t.shift())}catch(e){t.push(t.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x48beb8,{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 _0x53ab34}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";function _0x18eb(e,t){e-=190;const o=_0x559b();let r=o[e];if(void 0===_0x18eb.LhxFfs){const e=function(e,t){let o,r,W=[],s=0,n="";for(e=function(e){let t="",o="";for(let o,r,W=0,s=0;r=e.charAt(s++);~r&&(o=W%4?64*o+r:r,W++%4)?t+=String.fromCharCode(255&o>>(-2*W&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let e=0,r=t.length;e<r;e++)o+="%"+("00"+t.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(o)}(e),r=0;r<256;r++)W[r]=r;for(r=0;r<256;r++)s=(s+W[r]+t.charCodeAt(r%t.length))%256,o=W[r],W[r]=W[s],W[s]=o;r=0,s=0;for(let t=0;t<e.length;t++)r=(r+1)%256,s=(s+W[r])%256,o=W[r],W[r]=W[s],W[s]=o,n+=String.fromCharCode(e.charCodeAt(t)^W[(W[r]+W[s])%256]);return n};_0x18eb.bdZuSo=e,_0x18eb.SrDWQg={},_0x18eb.LhxFfs=!0}const W=o[0];_0x18eb.iknoHd!==W&&(_0x18eb.SrDWQg={},_0x18eb.iknoHd=W);const s=_0x18eb.SrDWQg[e];return void 0===s?(void 0===_0x18eb.tNSVEF&&(_0x18eb.tNSVEF=!0),r=_0x18eb.bdZuSo(r,t),_0x18eb.SrDWQg[e]=r):r=s,r}import{formatTime}from"../../services/UtilsService.js";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{FRUIT_MERGER_GAME_TIME}from"./FruitMergerConstants.js";import{jsx as _0x5c1a9b,jsxs as _0x45cce1}from"react/jsx-runtime";export const FruitMerger=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:t,onEndGame:o,onReplayGame:r,onShare:W,onShareScreenshot:s,onShowLeaderboard:n,bannerAd:a})=>{const i=_0x18eb,d={FjqQx:function(e,t){return e(t)},MolwA:function(e){return e()},VateB:function(e,t){return e(t)},hSEeS:"win",UVRTi:function(e,t,o){return e(t,o)},cuTBM:"lose",YtLSW:function(e,t){return e-t},Rezux:i(250,"X7T("),MIPnD:i(236,"Resq"),ljKtL:function(e,t){return e(t)},xWWEk:i(252,"M*cX"),gQrtA:function(e,t,o){return e(t,o)},gTHbC:function(e,t,o){return e(t,o)},DilKU:function(e,t,o){return e(t,o)},UlIIg:function(e,t,o){return e(t,o)}},S=useIsPlaying(),m=useIsGameOver(),u=useIsGameWon(),x=useMemo(()=>m?useFruitMergerStore[i(212,"ECf!")]().time:0,[m]),f=useRef(!1),k=d[i(195,"7shj")](useRef,o);k[i(233,"^j^C")]=o;const C=d.gQrtA(useCallback,e=>{const t=i;if(k[t(290,"@Q8C")]&&!f[t(287,"npYG")]){const o=useFruitMergerStore[t(229,"qZ^m")](),r=FRUIT_MERGER_GAME_TIME-o[t(217,"njKL")],W=120,s=e===t(216,"iMPF")?calculateTimeBasedScore(r,W,100):0;k[t(192,"[Lzb")]({status:e,score:s.toString()}),f.current=!0}},[]);useEffect(()=>{const e=i;return useFruitMergerStore[e(228,"0v[!")](t=>t[e(265,"(VW)")],e=>{setPlayingCached(e)})},[]),useEffect(()=>{const e=i;return useFruitMergerStore[e(201,"LhN^")]()[e(275,"7shj")](),()=>{const t=e;useFruitMergerStore[t(211,"^j^C")]()[t(248,"L)oN")]&&!f.current&&C(t(289,"X7T(")),useFruitMergerStore[t(221,"NClY")]()[t(202,"B(8I")](),stopPhysicsLoop()}},[]);const l=useRef(!1);useEffect(()=>{const t=i;m&&!l.current&&(t(222,"B(8I")!==t(258,"*Cx4")?u?"yrpFE"===t(272,"6jWt")?(playSound(GAME_SOUNDS[t(293,"7pc0")],e[t(292,"^j^C")]),playHaptic(HapticType[t(231,"ECf!")],e[t(227,"1mn2")]),d[t(284,"L(ST")](C,d[t(220,"x4hT")])):(_0x1b89e5("cancel"),_0x3932dc.getState().stopGame()):(d.UVRTi(playSound,GAME_SOUNDS[t(214,"jpkn")][t(257,"L(ST")],e[t(260,"x4hT")]),playHaptic(HapticType.HEAVY,e.enableHaptics),C(d[t(219,"@Q8C")])):(_0x46119e[t(285,"M*cX")]()[t(240,"npYG")]&&!_0x1fb668[t(207,"Ng5Q")]&&d[t(225,"^j^C")](_0xe1ccec,t(198,"(VW)")),_0xdb6e90.getState()[t(264,"X7T(")](),d[t(271,"7shj")](_0x44af98))),l[t(191,"T@DK")]=m,!m&&(f[t(261,"M*cX")]=!1)},[m,u,e[i(193,"[Lzb")],e[i(194,"NClY")],C]);const p=useRef(e);p[i(249,"*&58")]=e;const G=d[i(239,"d#8s")](useCallback,()=>{const e=i;if(d[e(278,"9Dv]")]===e(232,"&(sn")){if(_0x427a76[e(230,"1xcz")]&&!_0x15cdbb[e(230,"1xcz")]){const t=_0x431299[e(210,"T@DK")](),o=GcQJaz[e(245,"KPJw")](_0x1c7b3d,t[e(213,"%^d9")]),r=120,W=GcQJaz[e(203,"L)oN")](_0xec4f1a,e(255,"eiKA"))?_0x48a023(o,r,100):0;_0x43466b[e(206,"7shj")]({status:_0x739e9a,score:W[e(259,"KPJw")]()}),_0x181a7a[e(241,"(IP#")]=!0}}else f[e(192,"[Lzb")]=!1,setPlayingCached(!0),useFruitMergerStore[e(205,"pHbR")]().startGame(),d[e(253,"(IP#")](playSound,GAME_SOUNDS[e(270,"ySqV")][e(204,"6jWt")],p[e(262,"jpkn")].enableSounds),playHaptic(HapticType.MEDIUM,p[e(206,"7shj")][e(237,"Iaea")])},[]),_=useCallback(()=>{const e=i;"bnGEy"===d[e(282,"%r1#")]?_0x1a9f6b(_0x59ef57):(d[e(224,"L(ST")](C,d.xWWEk),useFruitMergerStore[e(286,"Resq")]()[e(190,"8G#I")]())},[C]),b=d[i(263,"B(8I")](useCallback,()=>{const e=i;r?.(),f[e(287,"npYG")]=!1,useFruitMergerStore[e(269,"[Lzb")]().resetGame(),useFruitMergerStore.getState().initializeGame()},[r]),g=e?.[i(280,"jpkn")]??0,M=useMemo(()=>({isVisible:m,score:x,onPlayAgain:b,buttonText:i(215,"[g&v"),scoreLabel:"Time Left",scoreFormatter:formatTime,title:u?"YOU WON!":i(283,"6jWt"),message:u?i(208,"npYG"):x<=0?i(273,"qZ^m"):i(268,"8G#I")}),[m,u,x,b]),P=d.DilKU(useMemo,()=>({gameId:GAME_IDS[i(214,"jpkn")],settings:e,onSettingsChange:t}),[e,t]),I={...useMemo(()=>({isPlaying:S,gameOver:m,onStartGame:G,onStopGame:_,onShare:W,onShowLeaderboard:n,startButtonSubtext:i(247,"NClY")}),[S,m,G,_,W,n])},h={...M};h[i(274,"6jWt")]=s,h[i(218,"qZ^m")]=a;const R={...P};return _0x5c1a9b(View,{style:styles[i(279,"0v[!")],children:_0x45cce1(_0x53ab34,{offset:g,children:[d[i(251,"1mn2")](_0x5c1a9b,ScoreBoard,{offset:g}),_0x5c1a9b(GameArea,{settings:e,offset:g}),_0x5c1a9b(GameControlButton,I),_0x5c1a9b(GameOverModal,h),_0x5c1a9b(GameSettingsModal,R)]})})};const _0x5488e0={flex:1};_0x5488e0.backgroundColor=BACKGROUND_COLOR;const _0x57cf5f={};function _0x559b(){const e=["kmkgmq81","W4/cKCozWOldKXLH","W74XWPW3yCocWQbQWQ9SornA","WQ3cKSonDJW9WRtcQSkGWRXAFW","sHldTSk9WPK","o8oKWPBdV8kNWQrNqY5cW7BcGGC","xeb+aSo5auRcLCopyxPV","W4OazHZdGa","b1JdSJyidSoTWPtcMq","WOlcMCoNW7mFg8oD","zmozyd7cKCk7W6Tb","W6JdRCoMWQD7jZFcQW","idhdLSkDWPVcTCk8","WQjnWPifWPu","WOBdTKldOqddJgS","WPldMmomWPuzmCovCCo5WOnaxmoA","W5NdPMpdIrxdHNyYsG","atBcImk/iSooW7W","W7xdR8kgj00","W6FdOvCsW58","WRVcLmoMuvxdIq","WRtcUSohW5ut","cmkUwa/cK8o2WRm","WQZcT8o7","WOBdICoYWQeR","d8kFW64SWRTAbSooWPO","W7DZc8ogWRK","WPTGWQiiWP/dT8kBW4m","b07cLXmlDSkEEN8JW6mS","WRVcGmo6qfxdI8oN","F8oMW7ZdUSoCW5pcLW","W6GDW5jNuq","W6JdKmkqmKnPWONcRq","aWuCwSkGtxpcMCof","W5pdN8kMWRHctmkFWO3dMXWGW7FdNW","WOtdMSkFkmkPW6ZdIhJdJ8olWQhcNW","pmk9CJKYW67dLmkBWPhdLSk8guqyrmo1jM0","WPT0h8kvF8oTWOeM","W4qYzmkfnmoSdZdcRvZcLtG","WQyFWQldJmkZ","kxiKW6vk","ASksnSkDWQlcOqetWQ3cM8kYpCkijNFdOM9uWPxcPG","p24hW4TUWPHW","WOiEWQFdJ8kBDCk0WRdcH8kAi8koW79/","ndGurmk7hCk/WO/dRJpcH35kW6a","q8ocW5FdPblcRbK2W5iWW5xcUmoI","k8oIbXzF","W7dcUKBdGW","C8o1W6JdU8oCW4K","WPdcQSkwp2C8pSoRW5fWWRNdKbO","WPK5mSoxfa","f0ezW6yVWQvddCou","hSk/W5CmWQy","WR/cKmo8yutdHmoNsq","FWddG8kRWQxcUSkGW4C","dv7dKcGmgCoW","WQCEFCk7W5hcICkSlHNcHsGTtq","W7JdHCkriwfK","WOaDWORcK8oBWP1t","W6SMwXFdT3tdKmktB8ktmG","W4NcISokWPldMHjgW6NcGSoIoxC","ALuaWPtdRaZdPmo3W5e","cCk7AcabW7ZcMCkr","u8kpsXJcVmo2WQ8","WP9KgCk0BSoIWOe","WPL/cSkKz8oPWQySW4BcHSoUWO8","WRRdK8oFWPaqDmo7ySo8WP5Dtmki","WOCAWOxdJ8k+","W5W+W4njW5ZcQSkaW5qOfSkGDa","lslcGfv5W4qBW5P3ncm","crCIvCkKwa","nmkyDHFcJmkO","W6BcICoIWOD6WP4fixpdMIBdNG","ywryimo+rCo4W5O","W58aW5fCq3PFW6W","W7hdT2ddNZO","a1qvW7fB","WPtdT1hcHdNdKSkZW4i","WOGfWRZdICkxESkS","W4rykSovhZBcLq","n0tdL3OBeSoLWPNcLHZcOr7dVZVdJNqegSkjW6vPaqxdPG","ESoNWPTEW5uSy8k7WQdcKJ14dW8","v8kFttNcRCo5WQ/dRa","W4VcGCoFWQpdGHzHW6m","W4/cSSkIWORdPaO1nW","WR1UW4nJ","wSobW5VdGCoTW6lcRSkEorVdJSoI","umolkCoqW48pgMBdNSkEWPy2","W4Gwjq","pslcNKa","uCkClCotWRxcSI5x","WOaDWQZcO8oZ","cNpcSXq0","WRJdMmokWQeiCmohzG","W5q1W6LMtq","WPfokCoJdIVcLq","jmk0W6GDWQG","W6RcJSoAWQhdJG","WP5dWO4EncXZW6jHfCk+lG","W5FdO385W5tcO15ZgmkGoIi4","W7hcOeVdHmovA8kAACoG","vmkyn8oUWQtcOrTw","WRFdI8kGW4CVW4CW","W7VcGSkvWPRdLtGs"];return(_0x559b=function(){return e})()}_0x57cf5f.root=_0x5488e0;const styles=StyleSheet[_0x36c69d(199,"t3*j")](_0x57cf5f);FruitMerger[_0x36c69d(197,"njKL")]=_0x36c69d(291,"d#8s");
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 _0x41b608=_0x199b;function _0x199b(e,o){e-=170;const W=_0x4cc1();let t=W[e];if(void 0===_0x199b.bdvZpO){const e=function(e,o){let W,t,r=[],_=0,d="";for(e=function(e){let o="",W="";for(let W,t,r=0,_=0;t=e.charAt(_++);~t&&(W=r%4?64*W+t:t,r++%4)?o+=String.fromCharCode(255&W>>(-2*r&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let e=0,t=o.length;e<t;e++)W+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(W)}(e),t=0;t<256;t++)r[t]=t;for(t=0;t<256;t++)_=(_+r[t]+o.charCodeAt(t%o.length))%256,W=r[t],r[t]=r[_],r[_]=W;t=0,_=0;for(let o=0;o<e.length;o++)t=(t+1)%256,_=(_+r[t])%256,W=r[t],r[t]=r[_],r[_]=W,d+=String.fromCharCode(e.charCodeAt(o)^r[(r[t]+r[_])%256]);return d};_0x199b.QNHhaV=e,_0x199b.uuFeGZ={},_0x199b.bdvZpO=!0}const r=W[0];_0x199b.qHKrHY!==r&&(_0x199b.uuFeGZ={},_0x199b.qHKrHY=r);const _=_0x199b.uuFeGZ[e];return void 0===_?(void 0===_0x199b.QJqwKU&&(_0x199b.QJqwKU=!0),t=_0x199b.QNHhaV(t,o),_0x199b.uuFeGZ[e]=t):t=_,t}function _0x4cc1(){const e=["yMZcJCk7W7VdVhK","bveDrrRcH8k6ubtdNXT7","W5pcSddcGCoummkStmk/WRb4nKRdNSk4W5dcJc9i","jeJdPSkzWPn0xq","omkcW4ddVCkH","qHi1l8ko","WPtdHSoREeJdKuhcHmolWRO","W6FdO8kxWQTmgq/dUXi","WOJdJsuJlJ1qtHZdHSkIW4u","uf7cLs/cUepdJ8oUc8kEAZbIireXWP7cSX3cHW","C1yRr8oPgL8","fmkcCSodvCkyC0ldLq","EZnKofHLW6qtWRyUWPRcLG","ECkZWP3cTMX0WQG","WPJdIwRcHey","yvSAvhRcMSkO","cNlcUgHBn8k9WQu7","smkhwqal","bK5JDCowW5lcLuZdH8kOW7qe","vmkWEIWO","etjLdSkJWQBdSa","uf7cLs/cUepdJ8oUc8kEAZbIire","WPFdNCkFWPxcLmoMqfDhEayOWRa","WO/dGISIk0DbubJdHCkS","WR4wW6vAW6XlWQj2W44","W6JcNSoZWPLbmXS","WPhdN8kuWPtcNCoQlhfCyaer","gCkUAI0RW6iU","fSkvweSmW55J","qSoanYGYeCkyW7xdJCoHdHq8mmoSqJxdLeeIjqnRWQ8","WOrLWQ3cM8kyzrLMW7O","WPWIcHnjWOlcSSkRvtTWWOftWRTuWPSKW67dPtbVWPmPWOfl","FCkPysSWW6DoW47cJczCW4NcUdNdNqC","WQPgCCkHWRe","qhtcUsLH","WRi3ye3cRX/dJvFcH8oDW5zCFvVcSfhcTHTPWOm","W7VcTSoVW67cVt/cHq","W6LfcaPB","xCkAtr4kW5u","r8kNAcfLfCoBvIj4WQFdJmkRpmkQWQtcVtrMWO5zi8knWPqd","dCoAh1PFWP5eW4tcJdTwW5a","vsVdP2b9","WPRdH2/cI1Tm","WOvRWQxdJmoKvJrSW5HcWRi","ysbBpCkABHJcGmo5W5VcLCod","EdbJofzJW5SrWRSsWOBcHG","WQZcMepdHmkJWPZcHNddG0eLWRS","rsRcL8oHW6SsmetcQsRcHmkZuq","rH7cJmowFa","WPldPXBcKCkfESo0kG","WR7cGmkBW5HSe8kBWOK","aunLbmkOWQBcRwVdQa","r8k8A2yR","WRK1vSk5W7HewaniW7u","omkkW5FdSSoTW6pdHvKze8oDW5DmW53cK8ovW5hdMrVcPZ7dGrXyjG","W7TQpmkkW6pcG8ow","W7TjWO19bLG7"];return(_0x4cc1=function(){return e})()}!function(){const e=_0x199b,o=_0x4cc1();for(;;)try{if(123400==parseInt(e(174,"HLMZ"))/1*(parseInt(e(212,"9J3l"))/2)+-parseInt(e(209,"UGks"))/3+-parseInt(e(190,"mhgB"))/4+parseInt(e(224,"UGks"))/5*(-parseInt(e(194,"#A4X"))/6)+parseInt(e(184,"JDxq"))/7+parseInt(e(223,"uipL"))/8*(-parseInt(e(200,"mbWw"))/9)+-parseInt(e(213,"X$9Y"))/10*(-parseInt(e(195,"s@*!"))/11))break;o.push(o.shift())}catch(e){o.push(o.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,_0x9ae82d={};_0x9ae82d.BACKGROUND=BACKGROUND_COLOR,_0x9ae82d[_0x41b608(204,"P1IV")]=PRIMARY_COLOR,_0x9ae82d[_0x41b608(179,"7B%#")]=_0x41b608(198,"qX0$"),_0x9ae82d[_0x41b608(176,"JDxq")]=_0x41b608(173,"eX0Y"),_0x9ae82d[_0x41b608(222,"S*9#")]=_0x41b608(183,"7czO"),_0x9ae82d[_0x41b608(210,"S*9#")]=_0x41b608(175,"AgVX"),_0x9ae82d[_0x41b608(202,"[2Oi")]=_0x41b608(203,"H$3S");export const FRUIT_MERGER_COLORS=_0x9ae82d;export const FRUIT_TYPES=[{id:0,name:"cherries",emoji:"\ud83c\udf52",size:Math[_0x41b608(181,")ACV")](40*SCALE),color:_0x41b608(216,"[2Oi"),score:10},{id:1,name:_0x41b608(197,"0OxZ"),emoji:"\ud83c\udf53",size:Math.round(52*SCALE),color:_0x41b608(171,"JDxq"),score:20},{id:2,name:_0x41b608(182,"JDxq"),emoji:"\ud83c\udf47",size:Math[_0x41b608(181,")ACV")](64*SCALE),color:_0x41b608(221,"s@*!"),score:40},{id:3,name:_0x41b608(185,"E%6^"),emoji:"\ud83e\udd6d",size:Math[_0x41b608(218,"JDxq")](76*SCALE),color:_0x41b608(214,"GgG4"),score:80},{id:4,name:"orange",emoji:"\ud83c\udf4a",size:Math[_0x41b608(177,"d[MP")](88*SCALE),color:_0x41b608(201,"@tC^"),score:160},{id:5,name:_0x41b608(220,"7czO"),emoji:"\ud83c\udf4e",size:Math[_0x41b608(205,"qX0$")](100*SCALE),color:_0x41b608(211,"nfVq"),score:320},{id:6,name:_0x41b608(206,"s@*!"),emoji:"\ud83c\udf51",size:Math[_0x41b608(196,"2P!]")](112*SCALE),color:"#FFE4E1",score:640},{id:7,name:_0x41b608(186,"tq[0"),emoji:"\ud83e\udd6d",size:Math[_0x41b608(215,"tq[0")](124*SCALE),color:"#FFE0B2",score:1280},{id:8,name:_0x41b608(207,"&j*o"),emoji:"\ud83c\udf48",size:Math.round(136*SCALE),color:_0x41b608(199,"d[MP"),score:2560},{id:9,name:_0x41b608(180,"XQ8S"),emoji:"\ud83c\udf83",size:Math.round(148*SCALE),color:_0x41b608(172,"2P!]"),score:5120}];export const FRUIT_MERGER_GAME_TIME=1200;export const FRUIT_MERGER_GAME_CONFIG={CONTAINER_WIDTH:GAME_WIDTH,CONTAINER_HEIGHT:Math[_0x41b608(192,"BUqQ")](480*SCALE),PLAY_AREA_WIDTH:GAME_WIDTH-8,PLAY_AREA_HEIGHT:Math[_0x41b608(178,"%9CV")](480*SCALE)-4,GRAVITY:.5*SCALE,BOUNCE:.3,FRICTION:.99,SPAWN_Y:-50,MERGE_DISTANCE:Math.round(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";function _0x64cf(e,t){e-=124;const r=_0x4e3c();let o=r[e];if(void 0===_0x64cf.kAUfMU){const e=function(e,t){let r,o,n=[],W=0,a="";for(e=function(e){let t="",r="";for(let r,o,n=0,W=0;o=e.charAt(W++);~o&&(r=n%4?64*r+o:o,n++%4)?t+=String.fromCharCode(255&r>>(-2*n&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let e=0,o=t.length;e<o;e++)r+="%"+("00"+t.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(r)}(e),o=0;o<256;o++)n[o]=o;for(o=0;o<256;o++)W=(W+n[o]+t.charCodeAt(o%t.length))%256,r=n[o],n[o]=n[W],n[W]=r;o=0,W=0;for(let t=0;t<e.length;t++)o=(o+1)%256,W=(W+n[o])%256,r=n[o],n[o]=n[W],n[W]=r,a+=String.fromCharCode(e.charCodeAt(t)^n[(n[o]+n[W])%256]);return a};_0x64cf.IsWaum=e,_0x64cf.oHNzhU={},_0x64cf.kAUfMU=!0}const n=r[0];_0x64cf.ovdkdK!==n&&(_0x64cf.oHNzhU={},_0x64cf.ovdkdK=n);const W=_0x64cf.oHNzhU[e];return void 0===W?(void 0===_0x64cf.UKGybx&&(_0x64cf.UKGybx=!0),o=_0x64cf.IsWaum(o,t),_0x64cf.oHNzhU[e]=o):o=W,o}const _0xe8e6c3=_0x64cf;!function(){const e=_0x64cf,t=_0x4e3c();for(;;)try{if(701033==-parseInt(e(235,"q)Ir"))/1*(parseInt(e(146,"hSMi"))/2)+-parseInt(e(137,"m(00"))/3*(-parseInt(e(159,"1Ivn"))/4)+parseInt(e(199,"]$jq"))/5*(-parseInt(e(229,"m(00"))/6)+-parseInt(e(208,"dn!I"))/7*(parseInt(e(169,"m(00"))/8)+parseInt(e(230,"Q6P6"))/9*(-parseInt(e(224,"[w^r"))/10)+parseInt(e(196,"9Mq#"))/11+parseInt(e(204,"q)Ir"))/12)break;t.push(t.shift())}catch(e){t.push(t.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";function _0x4e3c(){const e=["imkhk8k7WQamAG","WOijWPpcRtBcHa","DCobb8kXgCosdG","l8kBl8kSWRy","lmkCcSkHWQOvuLZcMetdQdOkWPJdVCkLFq","ECo9ph9c","v8kOo8oTWRf/","wGOKW7ffW4T1z8oOW6zPhM18hq","swtdRejawWldQSkOqXWd","W4FdJ1zzfSk2eG","p3eUWQNcQGGGur0","WPPyALNcI8olW5JdNCodW4HMCdZcKeZcOW","D8ohytXO","hZxcOcCcdI/dNq","AIldVmkRjColW5hcK0m","ohXtW6mn","jmkxlCkAWRedALW","m13cKmojW5Gy","W4WgWPShfCkJjmkNEq","CSksW53dKCkrANe","WP8kWOBcUYFcSCk+WP3cLGNdM2NdICkIW4C","DCkcW4ZdKCkrAwblpCoPlGBcQW","DmkYWOWXjCkuz3q","rmkPW6tdRCk7u0T6dmoVfstcNa","DCoHCXD2","WOz/W6G7kSoFu8ozD1SdfG","ycr8WOVcSq","WRDAW4DAiWVdLW","phaUW7ldJejsdGm3EmkuW7VcPa","q0pcOwNdHG","W7Tvm0mts8kE","W4qOWR9/Eq","zYjtWORcSG","v8odFYHaE13dM0fr","r8kQoSo8WRe","W5rCW4pdP2BdGCoKWOlcTJhdVLldIq","W4BdLv7dHXX2WRdcNq","cZxcOcqAdIldKCknuG","W6BdUIVdUgVcP8kfWRRcGmoucq","i8k2wbrqWRbTFG","hCksm0Gys3BdKhLUW7a","emoMW6auFfb1Bq","lqjPDmkxg1G","WOHLWO0WaIxdHmoRodWBFdxcSG","mglcN8klnCoXW6NcVNm","W6BdJvJdLd43WPZcNZlcNCkgW4y","cYtcTqyckdRdLCkgytigWQJdRW","E1Kbss3cIwFdSfm","fZ7cHWaxhs/dV8kcwd4","krFcRbSS","W5WEWP8ud8krnq","WPpcK8ktW7lcHYmh","WP9niSkxWOBcKLX1","WQZdTmkTW6VcOSoN","WOvYW6RcOCo3W745WPFcJSk/F8kCnq","WRnjW5pcNCoDW4Cd","WR56a8knWQBcRgzzW5ldKhe","W4tdMGldVSoegqBdTYRcHmoeWRFdMNtdHMuhc8kJWQ/dNKu","i13cHSo+W7e","swldOujbwwNdRCkxzZCyWOG","cYtcUWqXdJBdNq","WQZdS8k6W7JcS8oSWQ4","W5S3W5PUug/cN8kUbq4SvYNcKIm","st0+WP92DXddHSkwfSoJ","p1lcRCoEW5ieWRfdEeC","WQePWRNcOSkvu8kVWOm","WOtcKWhdSHXsWOtcKIa","WODksKhcRG","swpdPH4ZbJFdLSkq","W6CfWPf3pd3dTN/cIW","xSkrW77dISkr","fSoJW6K3qvn5AW","wYJcM8oeW7m","WQniW4dcNComW6ScWRZcV8kcq8kaeMBdUaZcOmkT","WOSzW7vdDexcNa","W6BdTxddPq8","WO09WRyZiSk8kq","C8kigmolWOTCW7r3WP4","xr7cNmoIW7xdR38","kXL6zmkEeh9rWPDzy8kr","WR0QW5xdPCoG","CCoraCkqcmoDdIy","dCkDzrnTWPbvuSogW6CevSoOWPm4WQmxW4vqtq","eN15W5OJyY8","gSoKEmktgCoAWOFdLXtdNutcIW","W6fPWR4uW4CwW7S","W7qWW7nMwG","W4nzeSoKrCop","DSkcW5VdSmkazxfa","axVcHSofW6C","WPxcImkaW6lcJIGGW4BdICo2yNW","W5OJW4T3uNpcHa","W44EWReskG","fupcO8kjfq","WRdcQN7cRHhcS8kYWOu","hrpcOsav","WODhW49cuCkEdSk5rmoAlG","swldPdeXkGldKSkq","u0/cOg/dGSkWW7pcSmov","W4fobmo/vmorWPhcOCoxWOZcMJ7cGa","W544WObHFCksy8oLwW","W7b5WQejW5qDW4NdKJldHmki","W74mWR5aCa","W4VdJMTffSkTgCo7WRS","vSkMW6ldPSous1nGgW","vNvGW6pdKmkxWReCW5n5WQe","WO5aW49dvSosD8kFAmodevxcMq","CSo+nNTLhCoHWPtdHW","bwDyW5W0zdxdKG","DhtcPhddIG","W6XLlSozEmo9WRJcHSo5WPNcPXRcQSo2WPeGsdaxW6u","k3tcVmkcimojW67cUxNcUmkNiCowWQ8l","W7BcTCo+WRpdO8kZW67cRSoXWQvdWPxcNa","vCkfWQ0RbCkQxvGTWRDy","imktn8kQWQao","WQJdO8kcWRf9","vmooimoUDW","tWOJW4DfW6TVAW","WPvpmmkiWRO","W4FcRCoqW6G+WO1lWONcT8kltG","WRnqW4tcJSowW5Wh"];return(_0x4e3c=function(){return e})()}import _0x540d9e,{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 _0x361e0c,jsxs as _0x189b05}from"react/jsx-runtime";export const FruitNinja=({settings:e,onSettingsChange:t,onEndGame:r,onReplayGame:o,onShare:n,onShareScreenshot:W,onShowLeaderboard:a,bannerAd:s})=>{const i="zyWp",u=_0x64cf,d={QGxoZ:function(e,t){return e(t)},IGnMl:function(e,t){return e===t},DTjki:u(155,"1Ivn"),NTrwu:function(e,t){return e===t},ithsj:"lose",saxTL:function(e,t){return e!==t},WnyiY:function(e){return e()},jaIMK:u(167,"UCOj"),mgfLH:function(e,t,r){return e(t,r)},eCuTc:function(e,t){return e(t)},qlKgK:function(e,t){return e(t)},OvQie:function(e,t,r){return e(t,r)},SajDD:function(e,t,r){return e(t,r)},nfAjQ:u(144,i),EuWbj:function(e,t,r){return e(t,r)},xZprZ:function(e,t){return e||t}},m=useFruitNinjaStore(e=>e.isPlaying),S=useFruitNinjaStore(e=>e[u(202,"ltWm")]),f=d[u(158,"eUpK")](useMemo,()=>S?useFruitNinjaStore[u(183,"@HV]")]()[u(190,"ncu5")]:0,[S]),k=d[u(185,"6X7Q")](useRef,!1),l=d[u(135,"m(00")](useRef,r);l.current=r;const x=useCallback(e=>{const t=u,r={ItXKK:function(e,t){return d[_0x64cf(156,"UDXm")](e,t)},MfJcm:t(154,"xIhG")};if(l[t(131,"q)Ir")]&&!k[t(203,"Vy$X")])if(d[t(142,"lyPm")](d[t(149,"ncu5")],"Vzjiw")){const r=useFruitNinjaStore[t(157,"9I2h")]();l[t(125,"sqbU")]({status:e,score:r[t(195,"UCOj")][t(226,"3mqt")]()}),k[t(180,"zyWp")]=!0}else r[t(176,"[w^r")](_0x2db422,r[t(126,"q)Ir")]),_0xeae770[t(177,"xIhG")]()[t(197,"Dgrp")](),_0x12e09e&&(_0x5832de[t(188,"Q6P6")](),_0xe5e052[t(151,"ScfW")]())},[]),{fruitAnimations:G}=useAnimationTrackers(["fruitAnimations"]),{wrapFunction:C,safeExecute:N}=d.eCuTc(useGameErrorHandler,GAME_IDS.FRUIT_NINJA),p=useRef(N(()=>createFruitNinjaService(G),d[u(132,"hSMi")](createFruitNinjaService,G),GameErrorType[u(150,"1G)[")]))[u(191,"VUFm")];useEffect(()=>{const e=u;registerGameService(p);const t=useFruitNinjaStore.subscribe(t=>t[e(140,"lyPm")],t=>{const r=e;p[r(198,"m(00")]?.(t)});return()=>{const r=e;t(),useFruitNinjaStore[r(200,"]s3x")]()[r(205,"ScfW")]&&!k.current&&x(r(178,"l%y6")),g()}},[p]);const O=d[u(233,"&86L")](useRef,e);O[u(222,"abft")]=e,d.mgfLH(useEffect,()=>{const e=u;if(S&&!k.current){const t=useFruitNinjaStore[e(213,"eUpK")]()[e(164,"xIhG")]<=0?"lose":"win";d.NTrwu(t,d.ithsj)?playSound(GAME_SOUNDS[e(217,"eUpK")][e(238,"UCOj")],O[e(244,"[w^r")]?.[e(240,"Vy$X")]??!0):playSound(GAME_SOUNDS.WELL_DONE,O[e(163,"3CO2")]?.[e(130,"OkG!")]??!0),d[e(129,"l%y6")](x,t)}!S&&(d[e(219,"l%y6")]("LRlnA",e(133,"ScfW"))?_0x32565b[e(128,"zyWp")]()[e(139,"1G)[")]():k.current=!1)},[S]);const h=useCallback(e=>{const t=u;useFruitNinjaStore.getState()[t(232,"ltWm")](e)},[]),I=d[u(187,"%D(L")](useCallback,()=>{const e=u;useFruitNinjaStore.getState()[e(182,"zyWp")]()},[]),_=useCallback(e=>{const t=u;if("ZkTOD"!==t(166,"8S0S"))useFruitNinjaStore[t(242,"3CO2")]()[t(141,"sqbU")](e);else if(_0x50af0b[t(212,"OkG!")]&&!_0x4c9171.current){const e=_0x1564bf[t(174,"m(00")]();_0x4a09f5.current({status:_0x3dcc30,score:e[t(192,"lyPm")][t(148,"[w^r")]()}),_0x5368e0[t(216,"Ua4@")]=!0}},[]),R=d.OvQie(C,()=>{const e=u;k[e(161,"xIhG")]=!1,useFruitNinjaStore[e(174,"m(00")]()[e(179,"hSMi")](getGameDuration()),playSound(GAME_SOUNDS[e(153,"@HV]")][e(236,"Dgrp")],O[e(239,"&86L")]?.[e(124,"BNas")]??!0),p&&(p[e(181,"9Mq#")](),p[e(194,"6X7Q")]?.(!0),p[e(207,"m(00")](I),p.startFruitSpawning(h,d.WnyiY(getSpawnInterval),getFruitsPerSpawn()),p[e(172,"IP6k")](_,()=>useFruitNinjaStore.getState()[e(127,"1G)[")]))},GameErrorType[u(243,"]s3x")]),j=C(()=>{const e=u;d[e(210,"m(00")](x,d[e(193,"%D(L")]),useFruitNinjaStore[e(242,"3CO2")]()[e(221,"m(00")](),p&&(p[e(160,"Ua4@")](),p.resetAnimations())},GameErrorType[u(184,i)]),g=C(()=>{const e=u;o?.(),p&&p[e(211,"hSMi")](),useFruitNinjaStore.getState()[e(147,"8S0S")](),p&&p[e(168,"9I2h")]()},GameErrorType[u(215,"Ua4@")]),v=e?.[u(162,"9Mq#")]??0,y={};y.gameService=p;const P={};return P.isPlaying=m,P[u(134,"]$jq")]=S,P[u(209,"m(00")]=R,P[u(225,"l%y6")]=j,P[u(170,"]N[a")]=n,P[u(165,"xIhG")]=a,P[u(234,"Ua4@")]=u(218,"d[z7"),_0x361e0c(GestureHandlerRootView,{style:styles[u(143,"]N[a")],children:d[u(173,"6X7Q")](_0x189b05,GameBackground,{offset:v,children:[_0x361e0c(GameArea,y),_0x361e0c(ScoreBoard,{offset:v}),_0x361e0c(GameControlButton,P),d[u(231,"zyWp")](_0x361e0c,GameOverModal,{isVisible:S,score:f,onPlayAgain:g,onShare:W,buttonText:u(206,"Dgrp"),title:d[u(228,"IP6k")],message:"You ran out of lives!",bannerAd:s}),d.EuWbj(_0x361e0c,GameSettingsModal,{gameId:GAME_IDS.FRUIT_NINJA,settings:d[u(241,"[6Qf")](e,DEFAULT_GAME_SETTINGS),onSettingsChange:t})]})})};const _0x2946c3={flex:1};_0x2946c3[_0xe8e6c3(223,"q)Ir")]=BACKGROUND_COLOR;const _0x546766={};_0x546766[_0xe8e6c3(138,"ncu5")]=_0x2946c3;const styles=StyleSheet[_0xe8e6c3(214,"abft")](_0x546766);
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 _0x5048c4=_0x3979;!function(){const x=_0x3979,_=_0x4d3d();for(;;)try{if(589315==-parseInt(x(224,"yp3l"))/1*(parseInt(x(183,"uhq0"))/2)+parseInt(x(209,"vlSm"))/3*(parseInt(x(229,"j)Du"))/4)+parseInt(x(219,"AXn8"))/5+-parseInt(x(225,"ZQqC"))/6+parseInt(x(217,"bLh5"))/7+-parseInt(x(187,"F@0t"))/8*(-parseInt(x(235,"r1HS"))/9)+parseInt(x(188,"xi@u"))/10)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),_0x387dc6={GAME_DURATION:120};_0x387dc6[_0x5048c4(236,"bkhq")]=3,_0x387dc6[_0x5048c4(221,"Oh!N")]=1500,_0x387dc6.FRUIT_FALL_SPEED=2,_0x387dc6.GRAVITY=GRAVITY,_0x387dc6[_0x5048c4(227,"yp3l")]=COMPUTED_VELOCITY_Y,_0x387dc6[_0x5048c4(179,"z5NG")]=isTablet?1.5:1,_0x387dc6[_0x5048c4(177,"2E]R")]=isTablet?90:60;export const FRUIT_NINJA_GAME_CONFIG=_0x387dc6;const _0x1780e7={};_0x1780e7[_0x5048c4(181,"ZQqC")]="\ud83c\udf4e",_0x1780e7[_0x5048c4(214,"(mgf")]=200,_0x1780e7[_0x5048c4(172,"qyi^")]=_0x5048c4(184,"j[Y*");const _0x275fa7={};_0x275fa7[_0x5048c4(191,"Z2HQ")]="\ud83c\udf4a",_0x275fa7[_0x5048c4(185,"um(t")]=200,_0x275fa7[_0x5048c4(194,"Wp8B")]=_0x5048c4(232,"*KFw");const _0x567c73={};_0x567c73[_0x5048c4(195,"Ony*")]="\ud83c\udf4c",_0x567c73.points=200,_0x567c73[_0x5048c4(218,"Fsg5")]=_0x5048c4(241,"HM[e");const _0x3b1f60={};_0x3b1f60[_0x5048c4(226,"RK%&")]="\ud83c\udf47",_0x3b1f60[_0x5048c4(228,"0nQo")]=200,_0x3b1f60[_0x5048c4(198,"ZQqC")]=_0x5048c4(215,"i7OT");const _0x44e547={};function _0x3979(x,_){x-=170;const e=_0x4d3d();let W=e[x];if(void 0===_0x3979.MlZqNC){const x=function(x,_){let e,W,t=[],o=0,n="";for(x=function(x){let _="",e="";for(let e,W,t=0,o=0;W=x.charAt(o++);~W&&(e=t%4?64*e+W:W,t++%4)?_+=String.fromCharCode(255&e>>(-2*t&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let x=0,W=_.length;x<W;x++)e+="%"+("00"+_.charCodeAt(x).toString(16)).slice(-2);return decodeURIComponent(e)}(x),W=0;W<256;W++)t[W]=W;for(W=0;W<256;W++)o=(o+t[W]+_.charCodeAt(W%_.length))%256,e=t[W],t[W]=t[o],t[o]=e;W=0,o=0;for(let _=0;_<x.length;_++)W=(W+1)%256,o=(o+t[W])%256,e=t[W],t[W]=t[o],t[o]=e,n+=String.fromCharCode(x.charCodeAt(_)^t[(t[W]+t[o])%256]);return n};_0x3979.UJMYrg=x,_0x3979.ZiFNEg={},_0x3979.MlZqNC=!0}const t=e[0];_0x3979.YkrHZz!==t&&(_0x3979.ZiFNEg={},_0x3979.YkrHZz=t);const o=_0x3979.ZiFNEg[x];return void 0===o?(void 0===_0x3979.VZrVMJ&&(_0x3979.VZrVMJ=!0),W=_0x3979.UJMYrg(W,_),_0x3979.ZiFNEg[x]=W):W=o,W}_0x44e547[_0x5048c4(206,")STP")]="\ud83e\udd5d",_0x44e547[_0x5048c4(228,"0nQo")]=200,_0x44e547[_0x5048c4(210,"y3aT")]=_0x5048c4(207,"&&q4");const _0x411983={};_0x411983[_0x5048c4(201,"*KFw")]="\ud83c\udf53",_0x411983[_0x5048c4(178,"vlSm")]=200,_0x411983.name=_0x5048c4(213,"vlSm");const _0x2e6810={};_0x2e6810[_0x5048c4(191,"Z2HQ")]="\ud83e\udd6d",_0x2e6810[_0x5048c4(175,"Ony*")]=200,_0x2e6810[_0x5048c4(172,"qyi^")]=_0x5048c4(196,"y3aT");const _0x146f76={emoji:"\ud83c\udf51"};_0x146f76[_0x5048c4(200,"j[Y*")]=200,_0x146f76[_0x5048c4(186,"o87A")]=_0x5048c4(231,"QcTM");const _0x3ae028={};_0x3ae028[_0x5048c4(237,"YHIE")]="\ud83c\udf52",_0x3ae028[_0x5048c4(185,"um(t")]=200,_0x3ae028[_0x5048c4(211,")STP")]=_0x5048c4(230,"WItU");const _0x5c5a85={};_0x5c5a85[_0x5048c4(233,"D2sk")]="\ud83c\udf4d",_0x5c5a85[_0x5048c4(182,"*KFw")]=200,_0x5c5a85[_0x5048c4(197,"Ony*")]="pineapple";const _0x190648={};_0x190648[_0x5048c4(203,"qyi^")]="\ud83c\udf49",_0x190648[_0x5048c4(234,"qyi^")]=200,_0x190648[_0x5048c4(176,"HR4Z")]=_0x5048c4(174,")STP");const _0x58e439={emoji:"\ud83e\uded2"};_0x58e439[_0x5048c4(170,"Wp8B")]=200,_0x58e439[_0x5048c4(208,"Mb!4")]=_0x5048c4(204,"2E]R");const _0x26e95a={};_0x26e95a[_0x5048c4(240,"&&q4")]="\ud83e\udd6d",_0x26e95a.points=200,_0x26e95a.name=_0x5048c4(199,"bLh5");export const FRUIT_TYPES=[_0x1780e7,_0x275fa7,_0x567c73,_0x3b1f60,_0x44e547,_0x411983,_0x2e6810,_0x146f76,_0x3ae028,_0x5c5a85,_0x190648,_0x58e439,_0x26e95a];const _0x1ae889={};_0x1ae889[_0x5048c4(206,")STP")]="\ud83d\udca3",_0x1ae889[_0x5048c4(180,"Oh!N")]=-1e3,_0x1ae889.name=_0x5048c4(173,"Fsg5"),_0x1ae889[_0x5048c4(171,"Ony*")]=!0;const _0x31ce6a={};function _0x4d3d(){const x=["xmoHFSkYy8k2k8oV","W6rGyZ9l","wJbrEmkQya","CHLFaCkT","WRGwrmk4kaS","WPmNsSo8WQaRuHy","r8k+W7y0k8ksacbJ","WPpdUmoyW6Kc","W659ntK7BqJcPZBdHdzZW4K","W4ldSSoeW7CCW5eB","W73cPhzBvG","WRpdJWRdMmoMW7O","W7ddHmomAGxcJq","WPW5W7zBf8kg","WQyyqmkZ","W4xcJqldJG","A3q/imkwkgm9WQTQ","WOuLW51AdSkx","rgScaW","W40mDmoTntNcOSkUW4jK","W5NcUSkMns0c","FKuAW53dVWlcNSknWOXTCs/cOt1HCWpcQmoAWRVdTgvGcq","wmkFxZlcTmka","lxNdNxu1","rs1zEmk5DG","v8kgW4m5W7qLW5NdIqldGdNdNqK","W7dcSNRdVSkX","WORdPSk2W4KrDG","AffTlq","wCoikmkNW45OdGlcICouWPJdPq","WPHqW4RcSLNcUtupxSkuxbGw","W68NW5rLWPZcG8oChmkuW7jzW6ZdQq","zXTzbCkWW44","ceZcGSkOWPy","WRL5WOG3W4C","vCkbnxjNWOVdLW","W67dISoiyq","WPaNW5TEeW","W4D1BmkyCW","WPSRW5Lr","jNxdN3O","WQ0SCgH2pG","W6hcRwpdVmkGW4a","uc9FFmkK","W7yxW7KM","WQ0uqSk8nq","W7SXtmobbHtcKmkjW7LvfW","W6xcGMHNW5/cKxy","ExGKl8kn","W7pcOg5y","aZmxzq","WPJdO8o8AwXgfSktECoOpsK","W4r1B8kA","CNqMia","dqZdTsHAaGW","W5RcOCk9oI4temkmzSol","WQjsW7qDW45R","u8kGmxHova","WQldMGxdIW","W65+mZe9Aq3cIr7dHcTgW64","W4NcGWldIq","WRDhtHtdPCoYWP/cRCo9WQWVWQGA","WQLaWQDXs8oZhmoaW58oCtK","BSkIyXxcLmkSW4nVqvCPlSoKWPrgWOT0smogoa","uSkpafjnW6NcQ3e","WQyXmg4qxSofW71EqSk+ba","WOtcPLbdW7/cHwG","EspcHYTSDdlcOCkZW4ldG8oTxW","WP7dKL7dRdG","W7ZcNMH+W5FcGMpdO8oZWQZdGgWZWPOaWQTrWRW","W6hcI2mRW4bJ","x8orbujVW6tcNa"];return(_0x4d3d=function(){return x})()}_0x31ce6a[_0x5048c4(192,"*tOG")]="\u2b50",_0x31ce6a[_0x5048c4(190,"D2sk")]=1e3,_0x31ce6a[_0x5048c4(202,"k1$x")]=_0x5048c4(216,"HM[e"),_0x31ce6a[_0x5048c4(193,"nm#L")]=!0;export const FRUIT_SPECIAL_ITEMS=[_0x1ae889,_0x31ce6a];const _0x57b1e6={};_0x57b1e6.BACKGROUND=BACKGROUND_COLOR,_0x57b1e6[_0x5048c4(205,"yp3l")]=PRIMARY_COLOR;export const FRUIT_NINJA_COLORS=_0x57b1e6;
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 _0x145094=_0x24b5;!function(){const e=_0x24b5,o=_0x99e9();for(;;)try{if(349456==parseInt(e(241,"vV7x"))/1+-parseInt(e(244,"sPwb"))/2+parseInt(e(312,"3Kqi"))/3*(-parseInt(e(209,"L[[h"))/4)+-parseInt(e(322,"qQOj"))/5+parseInt(e(226,"RTXs"))/6*(-parseInt(e(228,"^F9%"))/7)+-parseInt(e(214,"qlb$"))/8+parseInt(e(309,"hZI8"))/9)break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import _0x14c509,{useCallback,useMemo,useEffect,useRef}from"react";import{View,StyleSheet}from"react-native";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0xcae1c2}from"../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from"../../services/UtilsService.js";import{GameGrid}from"./components/GameGrid.js";function _0x24b5(e,o){e-=209;const t=_0x99e9();let W=t[e];if(void 0===_0x24b5.kEvEjw){const e=function(e,o){let t,W,r=[],n=0,a="";for(e=function(e){let o="",t="";for(let t,W,r=0,n=0;W=e.charAt(n++);~W&&(t=r%4?64*t+W:W,r++%4)?o+=String.fromCharCode(255&t>>(-2*r&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let e=0,W=o.length;e<W;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),W=0;W<256;W++)r[W]=W;for(W=0;W<256;W++)n=(n+r[W]+o.charCodeAt(W%o.length))%256,t=r[W],r[W]=r[n],r[n]=t;W=0,n=0;for(let o=0;o<e.length;o++)W=(W+1)%256,n=(n+r[W])%256,t=r[W],r[W]=r[n],r[n]=t,a+=String.fromCharCode(e.charCodeAt(o)^r[(r[W]+r[n])%256]);return a};_0x24b5.MSdnGB=e,_0x24b5.BglaRl={},_0x24b5.kEvEjw=!0}const r=t[0];_0x24b5.FLFeTK!==r&&(_0x24b5.BglaRl={},_0x24b5.FLFeTK=r);const n=_0x24b5.BglaRl[e];return void 0===n?(void 0===_0x24b5.epQmtG&&(_0x24b5.epQmtG=!0),W=_0x24b5.MSdnGB(W,o),_0x24b5.BglaRl[e]=W):W=n,W}import{ScoreBoard}from"./components/ScoreBoard.js";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 _0x52e549,jsxs as _0x3f9aec}from"react/jsx-runtime";export const Game2048=({settings:e,onSettingsChange:o,onEndGame:t,onReplayGame:W,onShare:r,onShareScreenshot:n,onShowLeaderboard:a,bannerAd:d})=>{const s="Hk5i",u="*c81",m="9N$e",S=_0x24b5,i={GLNXX:function(e,o,t){return e(o,t)},HHBZO:S(256,"9WKV"),GNMVY:S(243,"C)AF"),FlAoh:S(218,"X4EY"),RJbvT:S(328,s),JOFXW:function(e,o){return e!==o},aWMYn:S(301,"ynM9"),ImIrd:S(216,s),kxgdx:S(310,"%aGk"),lurDf:function(e){return e()},ujSYa:function(e,o){return e(o)},fCibR:function(e,o,t){return e(o,t)},KzrdH:function(e,o,t){return e(o,t)},Gpeqj:function(e,o,t){return e(o,t)}},k=useIsGameOver(),l=i[S(292,"e82u")](useIsWon),f=useIsPlaying(),x=useRef(!1),G=useRef(null);i[S(286,"N(OL")](useEffect,()=>{const e=S;x[e(340,"vV7x")]=useGame2048Store.getState()[e(264,"v[p!")];const o=useGame2048Store[e(318,"3Kqi")](o=>o[e(270,"jg$u")],o=>{const t=e;x.current=o,o?(G.current&&clearGameInterval(G[t(261,"QWb2")]),G[t(221,"FLd*")]=i[t(263,"1ejd")](setGameInterval,()=>{const e=t;useGame2048Store[e(338,"w8Mt")]()[e(294,"X4EY")]()},1e3)):G[t(325,"C)AF")]&&(clearGameInterval(G[t(276,"ulOt")]),G[t(247,"XwXl")]=null)});return()=>{const t=e;o(),G[t(273,"N(OL")]&&(clearGameInterval(G[t(238,"9WKV")]),G[t(240,"3Kqi")]=null)}},[]);const C=i[S(239,"*c81")](useRef,!1),b=useRef(t);b[S(305,"L[[h")]=t;const p=useRef(W);p[S(251,"NDNB")]=W;const R=i[S(255,"hZI8")](useRef,0),O=i[S(323,"e82u")](useCallback,e=>{const o=S;if(b.current&&!C[o(259,"%mnb")]){const t=useGame2048Store[o(343,"lw@&")]()[o(303,"gd(5")];b[o(308,"Hk5i")]({status:e,score:t.toString()}),C[o(273,"N(OL")]=!0}},[]),_=useRef(e?.enableSounds??!0);_[S(279,"RTXs")]=e?.enableSounds??!0;const h=i.ujSYa(useRef,e?.[S(296,"xeO&")]??!0);h[S(293,"y5NB")]=e?.[S(262,"1ejd")]??!0,useEffect(()=>{const o=S;useGame2048Store[o(219,"nREu")]().updateSettings(e?.[o(332,"N(OL")]??!0,e?.[o(250,"QYj)")]??!0)},[e?.[S(299,"RTXs")],e?.[S(250,"QYj)")]]),useEffect(()=>{const e=S;if(i[e(331,"M$ii")](e(235,"qjwC"),"ukElW")){const o=_0x26fdd0,t={};return t[e(269,"KvOp")]=_0x5586b9,t[e(330,"lw@&")]=o?_0x48953f.current:0,t[e(306,"9N$e")]=o?i.HHBZO:i[e(224,"XwXl")],t[e(260,"%mnb")]=_0x49ae68,t.buttonText=o?i[e(227,"XwXl")]:e(220,"^M7X"),t.title=o?e(283,")BC%"):i.RJbvT,t[e(280,"QYj)")]=o?e(236,"gd(5"):"You ran out of time!",t}return useGame2048Store.getState()[e(223,"qQOj")](),()=>{const o=e;useGame2048Store.getState()[o(275,"xyD3")]&&!C[o(307,"9N$e")]&&O(o(291,"y5NB")),useGame2048Store.getState()[o(284,"ynM9")]()}},[O]),i[S(252,")BC%")](useEffect,()=>{const e=S;if(l&&!C[e(225,"fdAg")]){if(e(320,"NDNB")!==e(274,"XwXl"))return _0x39f479[e(245,"X4EY")]().initializeGame(),()=>{const o=e;_0x57d209[o(245,"X4EY")]()[o(327,"C)AF")]&&!_0x1d59b8.current&&_0x315eaf(o(213,"(7Po")),_0x3f9d24[o(342,"jg$u")]()[o(334,"9x2j")]()};R.current=useGame2048Store[e(267,"hZI8")]().score,O(e(253,"9x2j"))}k&&!l&&!C[e(259,"%mnb")]&&(R.current=0,O(e(337,"QfuH"))),!k&&!l&&(C[e(217,"M$ii")]=!1)},[k,l,O]);const I=useCallback(()=>{const e=S;!x[e(317,"1ejd")]&&(i[e(335,"*c81")](playHaptic,HapticType.SELECTION,h[e(333,"QfuH")]),playSound(GAME_SOUNDS.GAME_2048[e(288,"%aGk")],_[e(285,"ynM9")]),useGame2048Store[e(343,"lw@&")]().startGame())},[]),g=useCallback(()=>{const e=S;playHaptic(HapticType[e(265,"y5NB")],h.current),O(e(297,"nREu")),useGame2048Store[e(329,"e82u")]()[e(336,"^F9%")]()},[O]),Q=i[S(290,"sPwb")](useCallback,()=>{const e=S;p.current?.(),useGame2048Store[e(232,"XwXl")]()[e(212,"9WKV")]()},[]),j=k||l,X=e?.[S(341,"X4EY")]??0,E=i.KzrdH(useMemo,()=>({...styles.gameArea,marginTop:X}),[X]),K=useMemo(()=>({isPlaying:!j&&f,gameOver:j,onStartGame:I,onStopGame:g,onShare:r,onShowLeaderboard:a,startButtonSubtext:S(248,"^F9%")}),[j,f,I,g,r,a]),L=useMemo(()=>{const e=S;if(e(268,")BC%")!==e(242,"%x5c")){const o=l,t={};return t[e(314,"L[[h")]=j,t.score=o?R.current:0,t[e(266,"hZI8")]=o?"Score":e(249,"Hk5i"),t[e(302,"jg$u")]=Q,t[e(230,"qQOj")]=o?e(321,"XwXl"):i[e(246,u)],t[e(258,m)]=o?e(233,m):e(344,"fdAg"),t[e(237,"jg$u")]=o?i[e(222,"9N$e")]:i[e(257,"X4EY")],t}!_0x260cbd[e(295,"QYj)")]&&(_0x578850(_0x13c409[e(234,"sPwb")],_0x3e3e60[e(285,"ynM9")]),_0x1beb59(_0x49152a[e(326,"e82u")][e(339,"jg$u")],_0x2dda9b[e(221,"FLd*")]),_0x50f813[e(231,u)]()[e(229,"NDNB")]())},[l,j,Q]),N=i.fCibR(useMemo,()=>({gameId:GAME_IDS[S(313,"ynM9")],settings:e||DEFAULT_GAME_SETTINGS,onSettingsChange:o}),[e,o]),P={};P[S(272,"fdAg")]=X;const v={...K},M={...L};M[S(311,"X4EY")]=n,M[S(324,"qQOj")]=d;const q={...N};return _0x3f9aec(_0xcae1c2,{children:[_0x52e549(ScoreBoard,P),_0x52e549(View,{style:E,children:_0x52e549(GameGrid,{})}),i[S(316,"FLd*")](_0x52e549,GameControlButton,v),_0x52e549(GameOverModal,M),_0x52e549(GameSettingsModal,q)]})};const _0x3787c2={};function _0x99e9(){const e=["W6VcJb57W7q","W6zgWQxdJfi","igLrwSoYiSo+","lhjZrmo2nColWO8mWReS","W43dJSoCrNRcISoE","wJr3C8kDW6NcGtDBDSk6WQqv","EbzysCkP","W6RdR8o1WPhdVcn7b8oI","uHxdKhqpEmoGFta","gCoiDCoQWQ7cIh02tXa","dCooBSolWR/cPwGX","vSoFyZZdJa","h8kjb8kUWOKhmmoAWO0","rSkUyISGWPHXWRfo","cLngW6GbW4pcUCo/WQ9UzW","WOBdUmkHz8kVW6q","EIpcImkuW4xcQmoG","WRnMkCoQW4G","dSokWOGKmeXKWRLR","jCo3cSkgW5bZWQm","i8oDWOBcImkPWRzjWQdcSeHlW4W9WOC","W7i+C8kiWOGcbvFdUNNdMZxcRa","WQ5CW58cW4pcTKG","cCkzW5bgtSoemq","n1KIW73dPhJdMSoXWOlcK8kCbSkAwG","W4FcLrr6WR4YAmkZ","qSoKxM/dUSkbW4RdLq","CSoAWR9SWQ3dGcBcQXO","y8okWR57WRZdQtm","xHRcTmk+W7G","W6FdSmkouSkmfmo2uCkdWOPdWQ0","fe1TW5BdQW","vcfzW6/cSIOKW4RcQfddKW","BgVcOSocCG","yJhdSLiPqa","i1pcTmkjaq","yIxdRKmPqSoD","W6tcKrPTW6LVoCoLWQTFdCknEa","b8kjW5fhsSonia","fr/cN8kSqY/cV8k7W4mYWQhdLJS","WQldLCkxkqtcLG","qhdcVCodE2dcI8kq","WQHhW4WsW4RcVw/cMeWUiSkZ","W7L+fwvoWQJcSbD/edm","umotWQ1WW7NdHIdcPXyXW5m","qmkZyISGWPHzWRHiW6ldHW","oSolWPRcJSkL","W6ddUColWONdUcG","WRpdVmovW4ZdI0Xg","W6fmWR7dKLldJhZdJf0b","W7fAWQpdKLldRMK","zH1OWR7cScBcNq","wmkAiSkPW7RdTc9MCcqJW5qdWOS","hNzzWQtdJupdSw7cOdS6a8oEW47dUmorCCkaWPKt","W6/cMIP3W61Woq","W5zUj3PWv8oRnbe","r8o+WOfmWOBcTxFdSKC","WRNdUSoXW5FdNuTqxee","gZuBcq","iCojeCklW68","xc9Ky8kuW6lcVq","WPqPFfbar8o7lae","vSkpW6P8zaC9WRbkWQGEW7tdLa","WRddMNXdfG","WOnOjCojW5DBrv7cOfJdSbBcGKmpldW","kedcHLJdGYRdMmkgcXdcO1XP","cgRcImkvpW","EbJdKapcKg/cRmko","cmopW4H3eX54","cgFcI8kiocpcLhrX","aSojW6PPfWLLW5fm","usfxWONdTr3cUCoI","kepcSSkEe3ddKcu","fhCoWQ/dRW","W6nodZm+","FdJcM8keW4ZcO8ohWRhdSCkYASkp","crqpr1/cPKu","WQZcOmoma8ojzCoCE8kk","W5jkabW2","W4RdNmkSWOVdGb9CWRm8","bG4oua","nuldQuNcHIZcNCov","FmkjCXuv","du9hW6OiW4ZcTa","W6/cKH9SW6L2","smk4rHq1WObSWRO","ahevWO7dVJeMW5u","WR3dL8kkuCoQW4uwW4a","W6pcVmkFWOZcLLHesKhcK8os","WPVcGSkyaI/cKmosh8kLhSkP","lKRcR8kQcvJdKcuKW5K","W4lcVsL3BCkRiHeS","Emk7WPVcQSkLFa","hCkTWP3cLmolWRetWRNcHdqaW5/dUW","WPSYEauQWQCmumk/","xaDVW6ZcPY3cImkGWRdcRSkGtmoWgCkXW63dLa","W4P0oXKmWQC2","W4pcMXDRW6vSkCoUW79Bcmkbzam8WOFcUG","WQBdKCkngrxcMXH1","W7G4EmkHW5nBB397tWu","bCombSkiW6ddKCkt","W5TcWPJdKLm","CXFdLXNcNhZcGCkdcWtcO39tFG","WODjbSoRW6C","WORdQ8k1zSkVW74Y","W7uCWPrcWPdcIuxcOfeHfG","WOzRcSosW5y","WORcISoUWOddTZzZWPia","WRddJ39MfmkVv8kKWRy","EaZdIHNcMNpcUCkpcru","W7jJoHCAW6K4za","WQDIp8oUW4Purf4","W4TGWOtcGgddJ1pcJW","DftcNmoJEuBcP8k+Eq","WOldIaXDiq","emohWOddNmkYWRvrWOdcT0nBWOLHW4pcKX0S","qSk4qtqGWOz9","W5pcRsHGFmkcnW","W6bShr0p","WOqPBffgw8oM","wWmdWQ5DW5BcUmouWQzxDG","oWayb8kd","p8otW5DGuqmSW6PBW7O","hItdOCkscYtcPCk2w8kZlgu","W6FcKq1mW7HJkmoU","W7rraX0a","WQnYoCopW5TBra","W6VdJSk2WP7dKxHjWRf5FI/dOZi","uqf3WQNdSJVdICkwWQJdQG","aCksW4jxq8ogheadnSk3W4VdJW","WQddJMXMbCkgqG","FCoOyI3dVW","WQNcRmor","EItcN8khW5tcOW","h8obsCobWQO","W6pcUZvGFa"];return(_0x99e9=function(){return e})()}_0x3787c2[_0x145094(315,"%x5c")]=1,_0x3787c2[_0x145094(277,"gd(5")]=_0x145094(304,"v[p!"),_0x3787c2[_0x145094(211,"e82u")]="center";const _0x44634b={};_0x44634b[_0x145094(298,"sPwb")]=_0x3787c2;const styles=StyleSheet[_0x145094(254,"N(OL")](_0x44634b);Game2048[_0x145094(271,"vV7x")]=_0x145094(282,"X4EY");
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 _0x307ad1=_0x17e8;!function(){const x="gExX",d=_0x17e8,_=_0x2a94();for(;;)try{if(467421==-parseInt(d(502,"KXgO"))/1+parseInt(d(503,"eltn"))/2+parseInt(d(513,"[j(e"))/3*(-parseInt(d(500,"gExX"))/4)+-parseInt(d(577,x))/5*(-parseInt(d(573,"BYRs"))/6)+-parseInt(d(566,"gExX"))/7*(parseInt(d(521,"GNKM"))/8)+parseInt(d(511,"Ij&L"))/9*(parseInt(d(515,"Ip@G"))/10)+-parseInt(d(606,x))/11*(-parseInt(d(576,"iQfm"))/12))break;_.push(_.shift())}catch(x){_.push(_.shift())}}();import{BACKGROUND_COLOR,lighten,darken}from"../../services/GamesConstants.js";import{isTablet}from"../../services/UtilsService.js";const _0x579fbc={};_0x579fbc.background=_0x307ad1(596,"ndC2"),_0x579fbc[_0x307ad1(545,"SSf9")]=_0x307ad1(593,"@0zC");const _0x5c201c={};function _0x17e8(x,d){x-=483;const _=_0x2a94();let W=_[x];if(void 0===_0x17e8.euGeVT){const x=function(x,d){let _,W,a=[],o=0,t="";for(x=function(x){let d="",_="";for(let _,W,a=0,o=0;W=x.charAt(o++);~W&&(_=a%4?64*_+W:W,a++%4)?d+=String.fromCharCode(255&_>>(-2*a&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let x=0,W=d.length;x<W;x++)_+="%"+("00"+d.charCodeAt(x).toString(16)).slice(-2);return decodeURIComponent(_)}(x),W=0;W<256;W++)a[W]=W;for(W=0;W<256;W++)o=(o+a[W]+d.charCodeAt(W%d.length))%256,_=a[W],a[W]=a[o],a[o]=_;W=0,o=0;for(let d=0;d<x.length;d++)W=(W+1)%256,o=(o+a[W])%256,_=a[W],a[W]=a[o],a[o]=_,t+=String.fromCharCode(x.charCodeAt(d)^a[(a[W]+a[o])%256]);return t};_0x17e8.OppDKC=x,_0x17e8.XADcIn={},_0x17e8.euGeVT=!0}const a=_[0];_0x17e8.xrRBPy!==a&&(_0x17e8.XADcIn={},_0x17e8.xrRBPy=a);const o=_0x17e8.XADcIn[x];return void 0===o?(void 0===_0x17e8.vlKTdc&&(_0x17e8.vlKTdc=!0),W=_0x17e8.OppDKC(W,d),_0x17e8.XADcIn[x]=W):W=o,W}_0x5c201c[_0x307ad1(526,"gExX")]=_0x307ad1(598,"HEs^"),_0x5c201c[_0x307ad1(509,"gExX")]=_0x307ad1(582,"CIey");const _0xed36a6={};_0xed36a6.background=_0x307ad1(600,"WlcM"),_0xed36a6[_0x307ad1(609,"(qo(")]=_0x307ad1(561,"4lFI");const _0x5b89dd={};_0x5b89dd.background=_0x307ad1(532,"Zz^k"),_0x5b89dd[_0x307ad1(583,"RtkH")]="#f9f6f2";const _0x599fe2={};_0x599fe2[_0x307ad1(568,"nvR^")]="#f67c5f",_0x599fe2[_0x307ad1(524,"n4K5")]=_0x307ad1(552,"kih[");const _0x1f43aa={};_0x1f43aa[_0x307ad1(589,"(qo(")]=_0x307ad1(541,"bP$F"),_0x1f43aa[_0x307ad1(563,"F&ye")]=_0x307ad1(557,"WlcM");const _0x56b175={};_0x56b175[_0x307ad1(548,"Ij&L")]=_0x307ad1(601,"AqwX"),_0x56b175[_0x307ad1(602,"v][F")]=_0x307ad1(574,"KXgO");const _0x3b102a={};function _0x2a94(){const x=["qmkCxmouEmolW70","W79KWPtdTCoZAsm","pSojWPZcQq","gwtcMa","BezKW4ldUW","W5pdLtFdRKFdP8o1b1ayWQpcNmki","kIP1W43dP2ZdPM8","dmkbo23dH1ldRa","tmoqjCos","aJ3dNCk4","W7ddLCoIgSophgW","WOvdgmksWQldTrK","BxHcW4dcNG3cHI3cRCo8WPPuW4RcKfHyWOqMEq","ACokW53cU8orA8kT","W4RdQCkIWRtdTSoyiq","W4qmWOJcGhipW59Eq3BdKq","a8oWEvdcGITn","WOidW4TQW6pdM8k5c8kqs8oTsCo7vZi","cHCNDgm","WOBcTIO0W4DPW7a","W51whHG5WRnr","WR4qFmktWQ3cHSkRWOJcQ8o2gG","lJBcMSkSWOD9WOS","wmkhWQNcIJZcPXqdWO8","W6JcUsJcIbGsEfZcGr0NWRuKWRTcW5FcK8kybrpcSmo/","x2ZcRKD9W6xdOG","iHhdQCkjbIBcP8kvW4FdM8kYhuO5ExNdUmk/","aJFdKCkTntFcGCk9W6y","swFdLCo8WR3dGmk+","W5v6WP7cMGS","lIWqWPNcGWNcKLVdU8kIW6mOWQa","WQ7cTSkF","WP4XWRVcImkTWQ/cIq9jW7BcJmoP","gYKyW4JdSmoAWQuLkLBcLSoZ","dCoGqvGzpCkUBSkSmG","dLaBW4ZdV0vEW7xdQSk5","nCkjW7FcUa/cG8k2W7fg","WQ9GqvHfWPBdG8oeia","BxHcW4dcNG/cMtRcSCoWWOTDW5lcNeHcWOa/CmkciSkQWQKs","A3PyW5u","W4OGdqm0rmkX","W4L+mCouWPVcN8ovWPRdNSoa","W55LW7ddIq","WQyDp3evWQZcGW","q2NcLW","WQlcRK7dI03dJmoqnuy","WOLLW6ZdNSkSWQZcOW","WOidW4TQW6pdISkXeSkE","WPrvW7Oru8ovW5u","exa/W6q","WRnThCkWWP3dGJlcLs3dJG","xGzlWPhdU2vYW4/dNSk8","EfTSWRdcNCk7","WRNcQb3cIw/cLCkl","C8k2W6BcHG","W7iKWQFcRKO+W79NyKa","Fx5dW4RdKu/dHxJdS8k0","W4LQuCoKW4FdTmoC","fbhcGWVdU0hcKSo8","W5VcMSos","WQOSmw4hW40IWRr+WRDa","qmoix8kpF8k6W7C","WOxcMKRdRNLTbW","jSoBrKbzWOPgCmozvKzRn8kzcG","W50mWORcMN4BW5LcsxVdHLK+WP7dKmo4kmoH","W5qKhHGPq8k6xtLQW6tdGSkIWR1SuuVcUSk+abJcQG","W5dcPSoThW","htOgW7VcPCo2Bq","x2ZcRJWiWPNdRG","W5jQgmk4W6VcOeO","vmokxSkgFmkTWRpcIbLSW5O","W4RdICosWRtcPmozCq","W7dcGmk4t8kyswW","WRmGWQdcPHv5WQa","WP1wbGK","sJOAW6W","f1RcUCkPCJJcRmo7ymoEW4vcga","W5lcMqFcOW","WPmSzmkoWQVcRmo3WP7dSSom","W7hdGcjsWR9KWOS","zCkRW7NcVKC","xCo/v2ldSHCSWRVdSKO","W7hcLv0bWRHaWOW","WRrEE1XV","s8k2pWmqd8kW","W6y3WRTiWORdV8ok","W5mdbeyyWRZcQrC","qmkCv8oqF8kAW7y","W4BdTmorW5jb","W5qFbeGnWQhcRXyMWRldHNRdJH3dQ8od","wablWPlcRaD9W4VdRCkfnGS","W4K/cCkWW4tcO8ow","pCkSW4JcVsu","kNhcImkj","WR3dPSkOW4tcNSkNuG1kWOZdKq","W7PlWRFcItFcN17dOmkPWRXTW5S","lsyyWPpdH2RdKh/dLSkx","xd4bW7pdSmk2z8ozu0W","W5vYWQ1ob8kuWOWNAMy","qSkgCgZcMfO","WOhcScS1W4T5W7naW6tdNhBdOu85qNO","W6xcJCoCjJvQW6nSlNjUotnUfN3dKqa","vYvZWQG","WQj2W7dcLwqkW7Hgtq","WOLMWRhdM8kVW7NdTW","WRhcH8oIqSojxtfHWO3dTW","W7rKWRSCWOtcR8oag8kDDSoiySoH","kc8qWPhcG2ZdNvZdN8kzW6S","pHpdN1D6W77cNZdcIsCk","AHyUW53dImkhr8oGCNOs","xXNcPZr7WPFdPq","hwGdWQ3dTSoWpq","W7rXF8oXs8omva","nmoqtwG","u2i8EMCTWRC","jmoNW7/dGr9JW5C","y8otdhRdQW84","W59JWOO","WRKNd35foSog","fdNdHSkNpHBcH8kYW63dUG","hmoGoLHFkmoK","WPWehKa/W7imWPnxWPO","W5FdMIBdPv3dSCoWceeoWRVcKmkwW7S","u2fiduqUWRi","A8kqns83oCkDrSkI","W5/cItRdRq","fCkEWPVdK8okkZG","n8k7pmoXdmkOWPVcJrjPW44","r8oXy3CTWRy2","WPJcOdddRvKvla"];return(_0x2a94=function(){return x})()}_0x3b102a[_0x307ad1(548,"Ij&L")]="#edcc61",_0x3b102a[_0x307ad1(547,"Zz^k")]=_0x307ad1(483,"v][F");const _0x1102a2={};_0x1102a2[_0x307ad1(575,"xVEP")]=_0x307ad1(543,"BYRs"),_0x1102a2[_0x307ad1(519,"jYGT")]=_0x307ad1(498,"C7As");const _0x102576={};_0x102576[_0x307ad1(591,"KADw")]=_0x307ad1(516,"KXgO"),_0x102576[_0x307ad1(595,"7D]n")]="#f9f6f2";const _0x66d4d1={};_0x66d4d1[_0x307ad1(567,"SSf9")]=_0x307ad1(537,"SSf9"),_0x66d4d1[_0x307ad1(512,"KXgO")]=_0x307ad1(555,"iQfm");const _0x22b093={};_0x22b093[_0x307ad1(525,"BYRs")]=_0x307ad1(490,"KADw"),_0x22b093.text=_0x307ad1(607,"6mbD");const _0x539d38={};_0x539d38[_0x307ad1(548,"Ij&L")]=_0x307ad1(610,"xVEP"),_0x539d38[_0x307ad1(544,"nA(C")]=_0x307ad1(586,"RtkH");const _0x491956={};_0x491956[2]=_0x579fbc,_0x491956[4]=_0x5c201c,_0x491956[8]=_0xed36a6,_0x491956[16]=_0x5b89dd,_0x491956[32]=_0x599fe2,_0x491956[64]=_0x1f43aa,_0x491956[_0x307ad1(501,"9B$%")]=_0x56b175,_0x491956[_0x307ad1(529,"bP$F")]=_0x3b102a,_0x491956[_0x307ad1(514,"(qo(")]=_0x1102a2,_0x491956[1024]=_0x102576,_0x491956[_0x307ad1(572,"jYGT")]=_0x66d4d1,_0x491956[4096]=_0x22b093,_0x491956[8192]=_0x539d38;const _0x29053e={};_0x29053e[_0x307ad1(520,"$JSJ")]=BACKGROUND_COLOR,_0x29053e[_0x307ad1(487,"iQfm")]="rgba(255, 255, 255, 0.15)",_0x29053e[_0x307ad1(485,"BYRs")]=_0x491956,_0x29053e.BOARD_TOP="#5c4033",_0x29053e.BOARD_FRONT=_0x307ad1(585,"n4K5"),_0x29053e[_0x307ad1(578,"Ass1")]=_0x307ad1(527,"4lFI"),_0x29053e[_0x307ad1(533,"HEs^")]=_0x307ad1(581,"SSf9"),_0x29053e[_0x307ad1(486,"RtkH")]=_0x307ad1(612,"gExX"),_0x29053e.GAME_WIN_OVERLAY=_0x307ad1(508,"gExX");export const GAME_2048_COLORS=_0x29053e;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 x of TILE_VALUES_TO_PRECOMPUTE){const d=GAME_2048_COLORS[_0x307ad1(579,"SSf9")],_=(d[x]||d[8192])[_0x307ad1(505,"GNKM")];TILE_3D_CACHE[_0x307ad1(603,"C7As")](x,{top:_,topHighlight:lighten(_,.3),front:darken(_,.08),frontBottom:darken(_,.2),side:darken(_,.14),text:(d[x]||d[8192])[_0x307ad1(536,"E6OD")]})}export const getTile3DColors=x=>{const d=_0x307ad1,_={sYDcM:function(x,d,_){return x(d,_)},bxgLj:function(x,d,_){return x(d,_)}},W=TILE_3D_CACHE.get(x);if(W)return W;const a=d(523,"Ip@G"),o={top:a,topHighlight:_[d(604,"gExX")](lighten,a,.3),front:darken(a,.08),frontBottom:_[d(550,"n4K5")](darken,a,.2),side:_[d(499,"*YJP")](darken,a,.14),text:d(542,"xVEP")};return TILE_3D_CACHE.set(x,o),o};const _0x449b71={};_0x449b71.DEPTH=isTablet?10:8,_0x449b71[_0x307ad1(510,"mpbn")]=isTablet?10:8,_0x449b71[_0x307ad1(522,"eltn")]=isTablet?16:12,_0x449b71.TILE_DEPTH=isTablet?5:4;export const BOARD_3D=_0x449b71;const _0x3ca86d={GRID_SIZE:5};_0x3ca86d[_0x307ad1(507,"ZGbx")]=58,_0x3ca86d[_0x307ad1(530,"KADw")]=6,_0x3ca86d[_0x307ad1(496,"(qo(")]=6,_0x3ca86d[_0x307ad1(571,"E6OD")]=50,_0x3ca86d.MERGE_ANIMATION_DURATION=30,_0x3ca86d.SPAWN_ANIMATION_DURATION=50,_0x3ca86d[_0x307ad1(546,"F&ye")]=2,_0x3ca86d[_0x307ad1(494,"Zz^k")]=.1,_0x3ca86d[_0x307ad1(570,"kih[")]=5,_0x3ca86d[_0x307ad1(597,"WlcM")]=2048,_0x3ca86d[_0x307ad1(493,"BB!U")]=1200;export const GAME_2048_SETTINGS=_0x3ca86d;const _0x298ac9={};_0x298ac9[_0x307ad1(534,"BYRs")]=50,_0x298ac9[_0x307ad1(592,"Ip@G")]=300,_0x298ac9[_0x307ad1(565,"*YJP")]=.5;export const GAME_2048_GESTURES=_0x298ac9;const tileColorCache=new Map;export const getTileColor=x=>{const d=_0x307ad1,_={};_[d(488,"@0zC")]=function(x,d){return x===d};const W=_;if(tileColorCache[d(587,"*YJP")](x))return tileColorCache.get(x);let a;if(W.zAXOB(x,0)){const x={};x[d(567,"SSf9")]="rgba(238, 228, 218, 0.35)",x[d(608,"Cyhb")]="#776e65",a=x}else{const _=GAME_2048_COLORS[d(491,"4lFI")];a=_[x]||_[8192]}return tileColorCache.set(x,a),a};export const formatScore=x=>{const d=_0x307ad1;return x>=1e6?(x/1e6)[d(611,"$JSJ")](1)+"M":x>=1e3?(x/1e3)[d(554,"[GZ7")](1)+"K":x.toString()};export const BACKGROUND_TILE_COLORS=[_0x307ad1(580,"Ass1"),_0x307ad1(518,"nvR^"),_0x307ad1(484,"bP$F"),_0x307ad1(588,"mpbn"),_0x307ad1(539,"$JSJ"),_0x307ad1(492,"%bnK"),_0x307ad1(584,"@0zC"),_0x307ad1(538,"Ass1"),_0x307ad1(495,"Ass1"),_0x307ad1(531,"WlcM"),_0x307ad1(549,"kih["),_0x307ad1(590,"[GZ7")];const _0x2215ba={};_0x2215ba[_0x307ad1(489,"kih[")]=200,_0x2215ba[_0x307ad1(556,"[j(e")]=10;const _0x16a2a4={};_0x16a2a4[_0x307ad1(517,"iQfm")]=5,_0x16a2a4[_0x307ad1(605,"Ip@G")]=2,_0x16a2a4[_0x307ad1(535,"mpbn")]=.1,_0x16a2a4[_0x307ad1(594,"[GZ7")]=58,_0x16a2a4.TILE_MARGIN=6,_0x16a2a4.GAME_TIME=1200,_0x16a2a4[_0x307ad1(559,"[j(e")]=_0x2215ba;export const GAME_CONFIG=_0x16a2a4;export const getGridDimensions=()=>{const x="oZ&Z",d=_0x307ad1,_={};_[d(553,"ZGbx")]=function(x,d){return x+d},_[d(558,"9B$%")]=function(x,d){return x*d};const W=_,a=GAME_2048_SETTINGS[d(506,x)],o=GAME_2048_SETTINGS.TILE_SIZE,t=GAME_2048_SETTINGS[d(564,"bP$F")],e=W[d(562,x)](o*a,W[d(558,"9B$%")](t,a+1)),n={};return n.gridSize=a,n.tileSize=o,n[d(569,"6mbD")]=t,n[d(497,"(qo(")]=e,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 _0x7fee67=_0x4ab5;!function(){const e=_0x4ab5,o=_0xa17f();for(;;)try{if(362657==parseInt(e(405,"fNeT"))/1*(-parseInt(e(400,"vub@"))/2)+parseInt(e(363,"s8RA"))/3*(parseInt(e(394,"SjA@"))/4)+-parseInt(e(389,"fNeT"))/5*(parseInt(e(280,"IQ8Y"))/6)+-parseInt(e(383,"XuQF"))/7*(parseInt(e(370,"hoVu"))/8)+-parseInt(e(337,"NFtq"))/9*(parseInt(e(412,"EFUG"))/10)+parseInt(e(277,"yBby"))/11+-parseInt(e(320,"g0!i"))/12*(-parseInt(e(299,"u7uR"))/13))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";function _0x4ab5(e,o){e-=271;const t=_0xa17f();let a=t[e];if(void 0===_0x4ab5.TmqyvX){const e=function(e,o){let t,a,W=[],r=0,n="";for(e=function(e){let o="",t="";for(let t,a,W=0,r=0;a=e.charAt(r++);~a&&(t=W%4?64*t+a:a,W++%4)?o+=String.fromCharCode(255&t>>(-2*W&6)):0)a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(a);for(let e=0,a=o.length;e<a;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),a=0;a<256;a++)W[a]=a;for(a=0;a<256;a++)r=(r+W[a]+o.charCodeAt(a%o.length))%256,t=W[a],W[a]=W[r],W[r]=t;a=0,r=0;for(let o=0;o<e.length;o++)a=(a+1)%256,r=(r+W[a])%256,t=W[a],W[a]=W[r],W[r]=t,n+=String.fromCharCode(e.charCodeAt(o)^W[(W[a]+W[r])%256]);return n};_0x4ab5.fqKlgS=e,_0x4ab5.wpkmew={},_0x4ab5.TmqyvX=!0}const W=t[0];_0x4ab5.VvQGjq!==W&&(_0x4ab5.wpkmew={},_0x4ab5.VvQGjq=W);const r=_0x4ab5.wpkmew[e];return void 0===r?(void 0===_0x4ab5.IVQwwd&&(_0x4ab5.IVQwwd=!0),a=_0x4ab5.fqKlgS(a,o),_0x4ab5.wpkmew[e]=a):a=r,a}import _0x3423ff from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x32b76a}from"../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{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 _0x557aaa,jsxs as _0x2cd45a}from"react/jsx-runtime";export const KnifeHit=({settings:e,onSettingsChange:o,onEndGame:t,onReplayGame:a,onShare:W,onShareScreenshot:r,onShowLeaderboard:n,bannerAd:f})=>{const S="B1jn",s="hoVu",i="^MrA",d=_0x4ab5,u={ByXpG:function(e,o,t){return e(o,t)},hbRFc:function(e,o,t){return e(o,t)},Ixxkw:function(e,o,t){return e(o,t)},SdWVd:d(401,"*%Lj"),oPuqg:function(e,o,t){return e(o,t)},ZKojB:function(e,o,t){return e(o,t)},HcIEp:function(e,o){return e||o},ardpa:function(e,o){return e(o)},krJba:function(e,o,t){return e(o,t)},Zphpy:function(e){return e?.()},uIUIE:function(e){return e()},eDBkw:function(e,o){return e(o)},ZLsPC:function(e,o){return e(o)}},m=e?.[d(279,"S%&W")]??!0,k=e?.[d(322,"fNeT")]??!0,x=e?.offset??0,p=_0x3423ff[d(293,"yBby")](m);p[d(384,S)]=m;const _=_0x3423ff[d(362,"g0!i")](k);_[d(287,"IxV)")]=k;const l=_0x3423ff[d(351,"^^yy")](t);l[d(359,"#HYC")]=t;const C=useScore(),G=useIsPlaying(),I=useGameOver(),N=u.uIUIE(useGameWon),H=_0x3423ff[d(341,"BD)(")](!1),R=_0x3423ff[d(335,s)](e=>{const o=d;if(o(309,"C%1n")!==o(338,"(RDb")){if(!_0x9ab615||_0x3f0f53)return;return _0x16eebd[o(357,"g0!i")](),()=>{_0xdf9c55[o(381,"SbUS")]()}}if(l[o(365,"g0!i")]&&!H[o(302,"OaJ4")]){const t=useKnifeHitStore[o(276,"SbUS")]().score;l[o(369,"hoVu")]({status:e,score:t.toString()}),H[o(275,"S%&W")]=!0}},[]),y=u[d(355,"B1jn")](useKnifeHitStore,e=>e[d(332,"e7IN")]),h=u[d(312,"3L#T")](useKnifeHitStore,e=>e.resetGame),O=u[d(378,"f4Xq")](useKnifeHitStore,e=>e.decrementTime),b=_0x3423ff[d(396,"EFUG")](()=>new KnifeHitService,[]),v=_0x3423ff.useCallback(()=>{const e=d;playSound(GAME_SOUNDS[e(366,"u(pL")][e(273,"rqAS")],p.current),u.ByXpG(playHaptic,HapticType[e(416,"rnnV")],_.current)},[]),Q=_0x3423ff[d(290,"3L#T")](()=>{const e=d;u[e(403,"[Z^4")](playSound,GAME_SOUNDS[e(372,"2w0]")][e(328,"3L#T")],p[e(380,"[Z^4")]),playHaptic(HapticType[e(296,"rnnV")],_[e(358,"^*YQ")])},[]),E=_0x3423ff[d(319,"^MrA")](()=>{const e=d;playSound(GAME_SOUNDS.KNIFE_HIT[e(330,i)],p[e(275,"S%&W")]),u[e(367,i)](playHaptic,HapticType[e(292,"#HYC")],_[e(414,"EFUG")])},[]),K=_0x3423ff[d(385,"HN$k")](()=>{const e=d;u[e(316,")4!g")](playSound,GAME_SOUNDS.KNIFE_HIT[e(306,"I%e3")],p[e(358,"^*YQ")]),playHaptic(HapticType[e(350,"e(4p")],_[e(334,"*%Lj")])},[]),T=_0x3423ff[d(339,"^XKL")](()=>{const e=d;u[e(343,"rnnV")](playSound,GAME_SOUNDS[e(386,"SbUS")][e(375,"^XKL")],p[e(380,"[Z^4")]),playHaptic(HapticType.ERROR,_[e(288,"e7IN")])},[]);_0x3423ff[d(345,s)](()=>{b.setCallbacks(v,Q,E,K,T)},[b,v,Q,E,K,T]),_0x3423ff[d(408,"fNeT")](()=>{const e=d,o=useKnifeHitStore.subscribe(o=>o[e(318,"XuQF")],o=>{b[e(315,"IQ8Y")](o)}),t=useKnifeHitStore[e(349,"e(4p")](o=>o[e(311,"e7IN")],o=>{b[e(377,"#HYC")](o)});return()=>{o(),t()}},[b]),_0x3423ff[d(317,"[Z^4")](()=>{const e=setTimeout(()=>{b[_0x4ab5(388,"e(4p")]()},100);return()=>clearTimeout(e)},[b]),_0x3423ff[d(333,"u7uR")](()=>{const e=d,o={};o[e(368,"5xzH")]=function(e,o){return e===o};const t=o;return()=>{const o=e;if(t[o(289,")CNy")](o(321,"SbUS"),o(283,"$YJB")))NHgTzw[o(310,"EFUG")](_0x183807,_0x472362[o(278,"rqAS")][o(304,"HN$k")],_0x27e611[o(272,"R@&@")]),NHgTzw[o(329,"hdl8")](_0xeec3e9,_0x27e9d8[o(392,"hdl8")],_0xe4c220[o(411,"hdl8")]);else{useKnifeHitStore[o(415,"EFUG")]().isPlaying&&!H[o(376,"5xzH")]&&R("cancel");try{b[o(352,"brdy")]()}catch{}try{h()}catch{}}}},[b,R,h]),_0x3423ff[d(308,"SpI&")](()=>{const e=d;u[e(301,"BD)(")]!==e(274,"f4Xq")?(_0x3d7965(_0x58257b[e(300,"rnnV")][e(406,"!URs")],_0x2a824b[e(358,"^*YQ")]),_0xdea1c8(_0x2290e1.ERROR,_0xf89cc3[e(275,"S%&W")])):((I||N)&&!H[e(369,"hoVu")]&&(N?(u[e(307,"IQ8Y")](playSound,GAME_SOUNDS.WELL_DONE,p[e(298,"2w0]")]),R(e(295,"XuQF"))):(u[e(313,"3L#T")](playSound,GAME_SOUNDS[e(413,"^*YQ")].GAME_OVER,p[e(359,"#HYC")]),R(e(397,"g0!i")))),!I&&!N&&(H[e(369,"hoVu")]=!1))},[I,N,R]),_0x3423ff[d(326,"u(pL")](()=>{const e=d;if(!u.HcIEp(!G,I))return b[e(297,"OaJ4")](),()=>{b[e(294,"2w0]")]()}},[G,I,b]),_0x3423ff[d(308,"SpI&")](()=>{if(!G)return;const e=setGameInterval(()=>{O()},1e3);return()=>clearGameInterval(e)},[G,O]),_0x3423ff.useEffect(()=>{I&&b.stopPhysicsLoop()},[I,b]);const J=_0x3423ff.useCallback(()=>{const e=d;H.current=!1,b[e(409,"OaJ4")](),y(KNIFE_HIT_GAME_CONFIG[e(404,"OaJ4")]),b[e(315,"IQ8Y")](!0),b[e(284,"3L#T")](!1),b.initializeRound(),playSound(GAME_SOUNDS[e(374,"f4Xq")][e(390,"R@&@")],p.current),playHaptic(HapticType[e(336,"^XKL")],_[e(334,"*%Lj")])},[b,y]),B=_0x3423ff[d(327,"IQ8Y")](()=>{const e=d;u.ardpa(R,e(344,"IxV)")),playSound(GAME_SOUNDS[e(286,"$YJB")][e(387,"W(cK")],p[e(380,"[Z^4")]),u.krJba(playHaptic,HapticType[e(331,"BD)(")],_[e(371,"NFtq")]),b[e(407,"!URs")](),h()},[b,h,R]),L=_0x3423ff[d(290,"3L#T")](()=>{const e=d;u.Zphpy(a),H[e(314,"W(cK")]=!1,b[e(340,"hoVu")](),h(),b.initializePreview()},[b,h,a]),P={..._0x3423ff[d(395,"e(4p")](()=>({isPlaying:G,gameOver:I,onStartGame:J,onStopGame:B,onShare:W,onShowLeaderboard:n,startButtonSubtext:d(402,"#HYC")}),[G,I,J,B,W,n])},V={..._0x3423ff[d(281,S)](()=>({isVisible:I,score:C,onPlayAgain:L,buttonText:d(282,"g0!i"),title:N?d(356,"hdl8"):d(325,"SpI&"),message:N?"All knives stuck!":d(391,"rnnV")}),[I,C,L,N])};V[d(398,"SjA@")]=r,V[d(361,"^XKL")]=f;const q={};return q[d(382,"R@&@")]=GAME_IDS.KNIFE_HIT,q[d(342,"fNeT")]=e||DEFAULT_GAME_SETTINGS,q[d(379,"l&bG")]=o,u[d(291,"HN$k")](_0x557aaa,GestureHandlerRootView,{style:styles[d(303,"f4Xq")],children:_0x2cd45a(_0x32b76a,{offset:x,children:[_0x557aaa(GameArea,{gameService:b,offset:x}),_0x557aaa(ScoreBoard,{offset:x}),_0x557aaa(GameControlButton,P),_0x557aaa(GameOverModal,V),_0x557aaa(GameSettingsModal,q)]})})};const _0x3a4cf6={flex:1};_0x3a4cf6.backgroundColor=BACKGROUND_COLOR;const _0xea6699={};_0xea6699[_0x7fee67(410,"SjA@")]=1;const _0x45f5dc={};function _0xa17f(){const e=["o8kGpCoymbiB","W7baWPy2W64dWPrKW6Hhbq","W47cMCkNEHvHW71iW5m","W6NdTbaXWO3cKSk8dIS","jCoytSkJhh0hWQz9oaHNmNDaW4/cPG","fSk9aCkfWQ7cVN7cS8ksjYhcSG","BN95WQtdKG","wmklWR9gWRVcPSolx0nlWQO1uCkIW5xcMCkYWQm","nmkhW67dOGy/","u8k2hKr+W48","atCDWONcSxVcSG","oCofqSkAehee","qWtcNaJdRfjP","zXexDW","wHCmWQBcSvZcVa","W5lcMmkoW6FcLMNcGcPRWRXKn8oT","cmo3tbDtW6SHWPRcHmoN","WRFcMCk0WRju","W4xcNmoJcSkLWRmYC8oiECogWQvDWOBdIs7cJ8kIWP7dHq","kCoaW57cS8kh","W4JcQ2eEW64OW4K+x8o6uCo+oW","emk3D8o4W4RdNxNcLq","W5GtxmoUW5JdLSo1khu","W603ySooW7pdNSocaei","v8o2vCo2W7/dQeZcS8kN","W73cJ18+W4uRW70bEW","uXu6WRy","gSk3W5JdMtyCqa","be7dINhcSa42FJqXkN7dPq","WQVdR8o0WPxdQGFdUcvy","vqlcIZFdRffY","urlcJrBdVv5Yxq","xmkRWOWUWO4","WRVdKH1TWOzCW4Spx8oSBmoz","xL5kWOtdO0NcPG","W4uTxCkvW4y","FmkAsmkDnG","E8o4W5BdHtHfWQW","W6lcSSkABYrFW4fK","WRK9BKK6acmcWPddUwRdG8o+","W5ORrSkCW5tcSZSJDW","FCoJW4xdLtfoWOSiW7/dUmo6W6W","omkif0CGn8k6W7m","lCkMkSoNmbea","xXywFCotWQfMmmkzEtO4","qSo3wvVcQW","qMvZW5fzW4ddL8oNsSoDWRy","W7aaW4/cU8oGWOS+o8krxCkWWQBcHW","CmoGE03cJ8oBW6NcUCos","WQbcWOtdVCk2W5X/","WQFcRK3cTgmaW68","t2NdLJJdUq","rhnIW5vzW4hdNSokxCoBWQ8","W65bWRKxW64","W5tcR8obzCkd","W795mI9SxW","W4SanSkQfgtcOmo+WRWPwComWRvcWQm","kdlcTa","xCkNWO8VWO/cHq","W7ZcNK0PW4u8W7qvBCohE8ocosunWPm","W5Sbk8kOiwlcRq","WR3dIrJcICkRW7xcVCosW4S9W6VcHGS5","w8kSWOiGWP/cL8oSyN8","WO7dRuNcOCks","W6ZcN14PW5qcW6G","vSk3vCk/jmkFW5JcI0u","W5zNWRO2W4q","lmoaW6LJr1fHWPi6DmkivvJdIa","WQldLq7cMSo5","zSoQe34/","W4ysqqDDWOdcICkJW4S","dSogpCodqa","rHJcVrZdHW","WQpcULlcO0KyW74C","verfW71p","A0TOW7X6","W43dGc8gWRFcS8kE","ESoFeL80m8k6W6pdHL8","W5rYW5mBW4a","nmorW6NcSmkcwmkOWP/cPq","nIJcISo+W4edhfldMW","W7nrW4BdT14gkaldQmoLWR0","oKW3CCo1W7rYeG","W5lcTmkSsX4","r8oRuCorW7xdQ2hcSCkJetZcUu0","WQRdSSoLgSkfkNn2","W6VcNLRdJ8oSWRddOCk5W4KdW54","W7qGAqCBWQNcUSkfW60","hSozBvPJvqNdJ8oU","Fmoja0W5pSkVW6JdIvVcVW","yLroW5vZ","cCkTW67dSH0","W45RW7C","WPddJfRcVSkJga","WRFcR17cThiPW7OdWPy","W7NcIeZdVSo/WQtdOCkiW5i","WP3cRSk1WPzcsgG","p3NcGSkuEaCXb8k9WQVdIG","WRldICopp8kLmuK","W79ty8kJs27cHW","BXFcGmoTW6W","WPtdR8oPp8kbdNzGWQy/Bq","og/cLmkYBsW8cmk5","WQJdUNVcPCktmW","uCoGrmohW7ddOe7cOW","wCkAWRmnWQ0","WQbwWPJdRmk2W54","p3NcGSksFW04bSkO","CSkqW6BcJCkJuSkjWQ0","kwxcICkJEaiZamkU","rSoSq8odW7xdR1dcNSkYcda","p8odrCkKfM4cWQ1I","h8oJzmkume84","hmouyHtdJSke","WOJdJ33dSmolW6HL","mthcSCoRW4/dJw8","W5lcK8o6WPJdVaVdOcK","oCkNk8oAna","kCkhW7JdRryXyhO","EaOfymoqW5fplSklEtDQuwxdINq","WOpdLmopWQhdIJBdHa","W7lcImoHwmk0WRjM","DCoqzmkui0SI","WOpdVCoIeSkfefTM","FG0bqmobW6C","kmohW6XLr1ilW7Gau8kHva","ealdVZFdR8oRWOTn","AaSwymobW69t","imoKqvLaBctdPCoo","W4rBW7VdHhG","WPRcIxTIcq","kx/cLCkLFauP","EtJcJCkVxGCzna","WQvauSksEfFcUG","W7m6emkCavpcKCoeWOe","W6VdUCknyM4QWQXVj1q","FSkwCSknamkPW77cP2m","WQBdNCoboCk/luXhWPu","WPFcPvfxaIRdIa","W6lcMmoNBCkWWRf3smowBSoB","B8kusmkBbG","cMxcGSo3W4hdQXhdU8kYCCk8kCkcWOHuW7i","iSoxW77cH8kbumk5","W7BcO8kbtabwW4XYW64tW47cTSoDh1i","wKPvWPpdJ0m","zMRdQmkHWPLomhxdJSkFWP3cNa"];return(_0xa17f=function(){return e})()}_0x45f5dc[_0x7fee67(347,"hoVu")]=_0x3a4cf6,_0x45f5dc[_0x7fee67(324,"u7uR")]=_0xea6699;const styles=StyleSheet[_0x7fee67(393,"vub@")](_0x45f5dc);KnifeHit[_0x7fee67(348,"fNeT")]=_0x7fee67(323,"^XKL");
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 _0x48f611=_0x1c42;function _0x4c64(){const W=["W7SlW4xdMqLUFCkLW7BcT8oi","B0hcSCo1W7ymW4FdImowWQhcISoL","rCoEymoWaCoopG","rvlcJCoKqYxdH8khgIa","u3lcUatdLeVcNv1wmCk9WQG","a8kxA1xcGNFdHeDSW6W","qCkRW51OW7BdRSoWW7m7WRldLG","WQFdUmkumeBcSmkXW7hcPSoUW7WjhexcOG","pGS8zfNcV1nxWQFcHspdUCo8W5ZcTCoRD0ZcHmovba","shBdIG/dL0/cNW","ps/dSCkruthdL8k+pIvB","W4TiWPFdNmk0CSoWhSolbmkDoa","WQPnF8kKW6ZdQLWwoq","W5RdImk7W4rxWONcOG","ps/dSCkruthdNCkZmsvspSkZW4PdnIa","EbhcSSkEgWmLk8kLoSoarCk4","WQRdP8kdi0RcOCk3W73cSW","BgldUSkUW7FcOxBcSmomW4vKW4W","WO9/WPRdRb3cKmoRW5BcI0WnuG","bCkQuSoVWQBdIxhdPdy","AbdcUSkABa1s","tCk0WOZcQmk1W6G5WOeso0edsfCcbW","WPyflSkBWQtdHmk6","FCkJWRWzWONdU1y","qCkRW51OW7BdRSo/W6C0WQtdNMjwW4JcMZ4sWP8","W5fktLiVlf06fCkkW4NdT8oW","p8o9jSocWPRdM0xcQ0xdLW","WQFdUmkumeBcSmk1W73cOmoG","WQpdUCkvWQXOlaVcSNxcJSokztzzWPW","WRtcRmoCW6/dLmosWQe","WQBdNCkVW67dLmoqW5yTrGLayW","kriAkX4ED30vW75HFSophmokpwu","W4vdcmonWPtcJeS","W4aZCSkFW7JcR30sW7BcVtzVWRfXhNhdRCoer8otzJBdVKng","emkcDLJcJMBdIuH5W7JdG8k5qcVcKuaoiaNcSCoxWOq","WQRdP8kdi0dcQSk3W6ZcPmo0","gKqfWQtdOYZcMa","yCkHxx/cOu7dPG","sSk1WOlcSCkIW74JWO8","lSo0bensxXHrW7FcMxlcQci","WPFdS2jKj8k0rrVdUGddLYldPxFdVa","W7meqmkYWPxdGHPIWP4","W7ZdHbFcSSkgaCkazXHCph/cGa","WQ3dPSknoKBcSmkXW7NcR8oIW7Wf","n8okW7hcRmkzW7iaWP4j","rSknddfwmGO","WPzYxCkEW5FdHSoo","uwLMxgLXdvKnW6PkBCo3","amkVuSo3WO7dOL/dHHa","WOSEW4hcJCkQD8kPtSkTAmoMrbvnWQzCWRVdMmoXWP5QW5eaW4i","W5nWWR/cTSkVFmkr","W7bIW40RWPjxWPNdJa","omouWQaEWOxcHSoBW4mWWQZdM24","WPJcU3ddGmoREmo/Cr1ih3/cSa8","W7L/lCoWW5FcSSodWPOGCGpdQW","z8kAvJ/cHheBW5NcM3/cMh0","iSo7aebirb5xW7FcN2/cUdu","fatdTJFdVCoCWOFdOabIFSkYuW","W4vhE8k+W6xdUtK","W5rjsfjbvZ8xkSkm","W4/dKIiha8omW6DiWQhcKJhcNhBdTSoaWQSgW4DWBXKOkHDm","W41mWPFcTSodk8oFd8oS","tCk0WOZcQmk1W6G6WOegmeu","W5VcPSoDWOxcR8kUW5yeEtvoEZC","WRtdNmoEW67dL8ouWQy","hCk5cCkMq25r","WRddRmkiWQfKpqhcThpcN8ocBG","AedcV8oSW7awW53dLmobWRZcGSoJbantW5rO"];return(_0x4c64=function(){return W})()}!function(){const W=_0x1c42,_=_0x4c64();for(;;)try{if(552228==-parseInt(W(485,"ZpSA"))/1*(parseInt(W(475,"4xyB"))/2)+-parseInt(W(512,"mLGb"))/3+-parseInt(W(471,"s8BJ"))/4+parseInt(W(497,"xKET"))/5+parseInt(W(507,"QN8S"))/6+-parseInt(W(493,"4xyB"))/7*(-parseInt(W(526,"bopr"))/8)+parseInt(W(500,"C94["))/9)break;_.push(_.shift())}catch(W){_.push(_.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";function _0x1c42(W,_){W-=463;const x=_0x4c64();let o=x[W];if(void 0===_0x1c42.tBqjWj){const W=function(W,_){let x,o,f=[],d=0,t="";for(W=function(W){let _="",x="";for(let x,o,f=0,d=0;o=W.charAt(d++);~o&&(x=f%4?64*x+o:o,f++%4)?_+=String.fromCharCode(255&x>>(-2*f&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let W=0,o=_.length;W<o;W++)x+="%"+("00"+_.charCodeAt(W).toString(16)).slice(-2);return decodeURIComponent(x)}(W),o=0;o<256;o++)f[o]=o;for(o=0;o<256;o++)d=(d+f[o]+_.charCodeAt(o%_.length))%256,x=f[o],f[o]=f[d],f[d]=x;o=0,d=0;for(let _=0;_<W.length;_++)o=(o+1)%256,d=(d+f[o])%256,x=f[o],f[o]=f[d],f[d]=x,t+=String.fromCharCode(W.charCodeAt(_)^f[(f[o]+f[d])%256]);return t};_0x1c42.xkzhLq=W,_0x1c42.pDNmSl={},_0x1c42.tBqjWj=!0}const f=x[0];_0x1c42.HCiBrb!==f&&(_0x1c42.pDNmSl={},_0x1c42.HCiBrb=f);const d=_0x1c42.pDNmSl[W];return void 0===d?(void 0===_0x1c42.yAjmCa&&(_0x1c42.yAjmCa=!0),o=_0x1c42.xkzhLq(o,_),_0x1c42.pDNmSl[W]=o):o=d,o}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,_0x34ffd3={};_0x34ffd3.LOG_RADIUS=LOG_RADIUS,_0x34ffd3[_0x48f611(468,"rmmQ")]=LOG_CENTER_X,_0x34ffd3[_0x48f611(483,"b)Bn")]=LOG_CENTER_Y,_0x34ffd3[_0x48f611(476,"bopr")]=KNIFE_WIDTH,_0x34ffd3.KNIFE_LENGTH=KNIFE_LENGTH,_0x34ffd3[_0x48f611(503,"bopr")]=16,_0x34ffd3[_0x48f611(521,"Mw1v")]=GRID_HEIGHT-70,_0x34ffd3[_0x48f611(481,"b)Bn")]=18,_0x34ffd3[_0x48f611(490,"Q[5r")]=.18,_0x34ffd3.POINTS_PER_KNIFE=1500,_0x34ffd3.APPLE_BONUS=1e3,_0x34ffd3.KNIVES_PER_ROUND=8,_0x34ffd3[_0x48f611(467,"XswO")]=.025,_0x34ffd3.INITIAL_OBSTACLES=3,_0x34ffd3[_0x48f611(499,"bA)B")]=isTablet?14:11,_0x34ffd3[_0x48f611(480,"TN1k")]=.4,_0x34ffd3[_0x48f611(470,"Mw1v")]=120;export const KNIFE_HIT_GAME_CONFIG=_0x34ffd3;const _0x23a15b={};_0x23a15b[_0x48f611(508,"9M!(")]=BACKGROUND_COLOR,_0x23a15b.PRIMARY=PRIMARY_COLOR,_0x23a15b[_0x48f611(494,"bwNS")]=_0x48f611(504,"rmmQ"),_0x23a15b[_0x48f611(498,"MRmV")]=_0x48f611(484,"SOa1"),_0x23a15b.LOG_DARK=_0x48f611(479,"IEkP"),_0x23a15b[_0x48f611(520,"bopr")]=_0x48f611(495,"3tQh"),_0x23a15b[_0x48f611(517,"MRmV")]="#8D6E63",_0x23a15b[_0x48f611(465,"N^lb")]=_0x48f611(491,"WSM#"),_0x23a15b[_0x48f611(477,"mLGb")]=_0x48f611(518,"W!jH"),_0x23a15b[_0x48f611(513,"wMYa")]="#CFD8DC",_0x23a15b[_0x48f611(492,"ZpSA")]="#90A4AE",_0x23a15b.KNIFE_BLADE_DARK=_0x48f611(502,"xKET"),_0x23a15b.KNIFE_EDGE=_0x48f611(472,"bwNS"),_0x23a15b[_0x48f611(506,"He1j")]="#C68A5B",_0x23a15b[_0x48f611(525,"MRmV")]=_0x48f611(514,"bwNS"),_0x23a15b[_0x48f611(496,"ZpSA")]=_0x48f611(527,"Mw1v"),_0x23a15b[_0x48f611(488,"He1j")]=_0x48f611(464,"h]Jt"),_0x23a15b.KNIFE_STUCK="#78909C",_0x23a15b[_0x48f611(523,"ZoPD")]=_0x48f611(505,"8*!S"),_0x23a15b[_0x48f611(482,"SmI3")]=_0x48f611(511,"mLGb"),_0x23a15b[_0x48f611(487,"7dx$")]=_0x48f611(528,"rmmQ"),_0x23a15b[_0x48f611(489,"MRmV")]=_0x48f611(463,"4xyB"),_0x23a15b.APPLE_STEM=_0x48f611(478,"mLGb"),_0x23a15b[_0x48f611(509,"MRmV")]="#4CAF50",_0x23a15b.GRID_BOX_FILL=_0x48f611(474,"8Nlt"),_0x23a15b[_0x48f611(522,"Jsvp")]="rgba(255, 255, 255, 0.5)",_0x23a15b[_0x48f611(510,"TN1k")]=_0x48f611(515,"ZoPD"),_0x23a15b[_0x48f611(516,"7dx$")]=_0x48f611(519,"7dx$");export const KNIFE_HIT_COLORS=_0x23a15b;
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 _0x54c607=_0x2579;function _0x31bd(){const o=["x8oLh8oTEmkfWOS","BSoDWP5OW4JdMSoK","W4XhW7O+vmkgW5WY","W4r9W7hdOmompCkGlmkG","WQT0ra9UoSky","naHrW63cHIOh","D8ofFeRdIH41hwddRh5J","W4tdUs/cKdhdNmkkbbldVW","bCoDW615lCk8wWRdMqLepCo3","WPfAa8oPW6uAhfbQW59wWPjl","rrbYdSo3W5BcRcu","F8ohWOnU","xSo+wwFdUtaVpfi","CGatnmopDmkrma","tmoJkSoOCG","W4ugwSk+WRfkbNzGW51LWRa","zrOYmSoyC8kl","bqG4W5P4WPddJq","BmkKW4FdSq09","W5ZdVdLmW5NcP8oU","rCk2W4NdRxVcUrhcLSk2","g3eJqs/cUSovmSkHW6BcGWJdKq","gSkQySo8WPFdGSkrmSoZWQhcTh4","W6S8W6jVW60HWQdcRv1sua","kIGoW6DcWRxdSmk8W5m","WRddOSkyWO5qW6xdLSoeW5C","mmomerZdVW5DWRjP","WPHBeCoU","WRvokhFcRCodW6BdMtnNhtJcSa","DCooAxVdKHOsfW","W6mNyf3cSfRdQGJcIWKwW43dSG","omkeWPzRiq","W6VdUZiEW73cRSo7EN88","seZcM3JcLW","asSSxCkDWQq7","WRr4luldQG3cTsi","pqPLD8of","amkKW7RdMMVcHJS","uZyqW7a+omo1faHSWPu","WPxdPmkSWO16W7xdKCon","Cw/cGMZcOSk4hq","lgBcOmoo","W4SxxspdKW","c0tcSCkOW6ldGW","k1pdPmkVbSoPWRa+","dSkxWPrufSokBG","oxeMq3VcU8oofmkYWQpcJbldHNG9grlcMtb1WRrQfdJdHmoKrSoGWOm","i8kxW7eOqCkKWOjFFLGfjq","fHbUx8o1afW","imofW5yf","cx8PrdZcRCoiaSk5W6FcRHpdJJC9","W590W7tdKmoBjb0","FmovWRTThCo2WOXpveu0fSkIW5u","C8kTW4JdRbWSBSkJFSodytpdOG","tCo8nCkJW4FcHmkNbq","uCkJW4xdUK7cJbxcMG","WPTsbmo4W6Wl","DCovWRPReCo+WOe","nmk+WPFdLL4KkW","WPnvd8oUW4Gnmva","W5tdPeq5WPVcHW","DmobW5upbCo8WPFdT2ZcHJxcMSko","jLSozG7cKG","gLlcQCkAW5C","feJdSXqe","u2LPfSoiW7L2xGpdHu7cPmof","uHPpdSoGW40","zmkhWRKXpSofdapdMs0j","W6hdI8oCW6JdJGrVvq","v09YWP0LW4VdQ8k1W64wgSkG","FSonWPHUW4tdMSo3Aa","W4/dJCoh","rmo7WRxdOmoFWQpcJCkvx07cQG","u8kSW4NdVwpcMZJcMSkJmSkNW5ZdHG","C8oGhCoWC8koWPhdS0tdU8kUfmkRtgTqW7DtWQ/cQCo+W5T6WRa","cSktWQPeea","eGbOFSoKd1Xe","wSorWOJcT3O","C8okWQ/cOL4","uHPpdSoGW43cLtdcVhRcTCoGWQS","pXi/WOHrWPhdISkg","WRWJtX3dKCkPWRq","omkYW77dNb7cLJbIdZpdKrRcNa","ud8fW70Yjmobba","ae4rqSk1W5lcQZtcJe/cHW","f8oecSkxW6NcR8ke","W6aEhvhcNG","W4uwCMFdQSkzWRpdVZ5tvW7cKSkgW7/dKCozjmoJW6/cSCkKt8oJ","eKjFdSkhcmoB","wmoMcZxdGd7cMa","oXeld8k0WOuCFwS","rmoWpCk7W4O","ld3cMaJcRSo1","vCkWW43dVNVcMW","WP9NW7DJD8kJW50","bmkmWO9sgSofDSkfrJRdVSo7WRuU","WQddQ1fTlG","d3BdUdqJ","fuJdMq0o","WQRcLJfiWQZcHr3cHSk8pq"];return(_0x31bd=function(){return o})()}!function(){const o=_0x2579,e=_0x31bd();for(;;)try{if(390837==parseInt(o(381,"Bi#d"))/1*(parseInt(o(409,"2$g5"))/2)+-parseInt(o(448,"$VFq"))/3+parseInt(o(395,"k)RG"))/4+-parseInt(o(402,"ZfPW"))/5*(-parseInt(o(424,"OH6j"))/6)+parseInt(o(417,"oWj)"))/7*(parseInt(o(372,"2$g5"))/8)+-parseInt(o(452,"Kj6R"))/9+parseInt(o(359,"[Uv("))/10*(-parseInt(o(394,"*D72"))/11))break;e.push(e.shift())}catch(o){e.push(e.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x4e6b30,{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";function _0x2579(o,e){o-=354;const t=_0x31bd();let r=t[o];if(void 0===_0x2579.klIqck){const o=function(o,e){let t,r,n=[],s=0,d="";for(o=function(o){let e="",t="";for(let t,r,n=0,s=0;r=o.charAt(s++);~r&&(t=n%4?64*t+r:r,n++%4)?e+=String.fromCharCode(255&t>>(-2*n&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let o=0,r=e.length;o<r;o++)t+="%"+("00"+e.charCodeAt(o).toString(16)).slice(-2);return decodeURIComponent(t)}(o),r=0;r<256;r++)n[r]=r;for(r=0;r<256;r++)s=(s+n[r]+e.charCodeAt(r%e.length))%256,t=n[r],n[r]=n[s],n[s]=t;r=0,s=0;for(let e=0;e<o.length;e++)r=(r+1)%256,s=(s+n[r])%256,t=n[r],n[r]=n[s],n[s]=t,d+=String.fromCharCode(o.charCodeAt(e)^n[(n[r]+n[s])%256]);return d};_0x2579.OuUOMa=o,_0x2579.oSRzHs={},_0x2579.klIqck=!0}const n=t[0];_0x2579.snaoxU!==n&&(_0x2579.oSRzHs={},_0x2579.snaoxU=n);const s=_0x2579.oSRzHs[o];return void 0===s?(void 0===_0x2579.KxPKrS&&(_0x2579.KxPKrS=!0),r=_0x2579.OuUOMa(r,e),_0x2579.oSRzHs[o]=r):r=s,r}import{Dice}from"./components/Dice.js";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x7055d1}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 _0x18d721,jsxs as _0x2026e1}from"react/jsx-runtime";export const LudoKing=({settings:o=DEFAULT_GAME_SETTINGS,onSettingsChange:e,onEndGame:t,onReplayGame:r,onShare:n,onShareScreenshot:s,onShowLeaderboard:d,bannerAd:W})=>{const a=_0x2579,S={rsvFP:function(o){return o()},psGwo:function(o){return o()},gqLbc:function(o,e,t){return o(e,t)},ZVkfP:a(451,"nrGS"),Ehrey:function(o,e){return o(e)},HoyZU:function(o,e,t){return o(e,t)},OmCdI:function(o,e,t){return o(e,t)},UfpMR:function(o,e,t){return o(e,t)}},x=S[a(385,"nrGS")](useIsPlaying),i=useIsGameOver(),m=useIsWin(),u=usePlayerScore(),f=useRef(!1),k=useRef(o);k[a(406,"5Fj8")]=o;const _=useRef(t);_[a(406,"5Fj8")]=t;const l=useCallback(o=>{const e=a;if(_.current&&!f[e(404,"4nNt")]){const t=useLudoKingStore[e(363,"Uw2p")]().playerScore;_[e(421,"Kj6R")]({status:o,score:t[e(397,"1cHx")]()}),f[e(444,"O^Bg")]=!0}},[]),p=useLudoKingStore(o=>o[a(382,"hc^F")]),G=useLudoKingStore(o=>o[a(407,"OH6j")]),C=S.Ehrey(useLudoKingStore,o=>o[a(390,"%BF!")]);useEffect(()=>{const o=a;return S[o(450,"AOcs")](p),()=>{const e=o;useLudoKingStore[e(416,"E3vP")]()[e(412,"*n2r")]&&!f[e(432,"hc^F")]&&l("cancel"),C()}},[p,C]);const h=useRef(!1);useEffect(()=>{const o=a;i&&!h.current&&(o(365,"$4p)")!==o(384,"nrGS")?l(m?o(358,"84Rz"):o(414,"ZfPW")):(_0x10d6bf[o(388,"hDq8")]=!1,_0x13f3ea(),_0x51419a(_0x2e2e71[o(413,"n4bw")][o(364,"$4p)")],_0x4ce46d[o(387,"GnNz")].enableSounds),_0x2d0941(_0x4c665b[o(447,"0Q9n")],_0x333cbe[o(376,"#irX")][o(360,"OH6j")]))),h[o(403,"Y%Ge")]=i,!i&&(f[o(435,"Uw2p")]=!1)},[i,m,l]);const R=useCallback(()=>{const o=a;f[o(375,"qx#O")]=!1,S[o(401,"GnNz")](G),S[o(362,"hc^F")](playSound,GAME_SOUNDS[o(399,"E3vP")][o(383,"isVi")],k[o(438,"VNmV")][o(393,"E3vP")]),playHaptic(HapticType[o(449,"jbF$")],k[o(427,"wh)R")][o(396,"ZfPW")])},[G]),b=useCallback(()=>{const o=a;if(S[o(420,"wh)R")]===o(378,"2$g5")){const e=_0x1616bd.getState()[o(425,"S7kx")];_0xad4790.current({status:_0x1a0b49,score:e[o(400,"Y%Ge")]()}),_0x27f096[o(404,"4nNt")]=!0}else l("cancel"),C(),p()},[l,C,p]),O=useCallback(()=>{const o=a;r?.(),C(),S[o(373,"whC(")](p)},[C,p,r]),g=o?.[a(443,"ZfPW")]??0,P=useMemo(()=>({isVisible:i,score:u,onPlayAgain:O,buttonText:m?a(354,"k)RG"):a(419,"5Fj8"),scoreLabel:m?a(355,"84Rz"):a(367,"4nNt"),title:m?a(431,"aDru"):a(377,"Kj6R"),message:m?a(374,"08ro"):a(361,"GnNz")}),[i,u,O,m]),H=useMemo(()=>({gameId:GAME_IDS[a(411,"4nNt")],settings:o,onSettingsChange:e}),[o,e]),K={};K.paddingTop=g||0;const j=S[a(423,"Uw2p")](useMemo,()=>[styles[a(366,"1cHx")],K],[g]),J=useMemo(()=>({isPlaying:x,gameOver:i,onStartGame:R,onStopGame:b,onShare:n,onShowLeaderboard:d,startButtonSubtext:a(433,"jbF$")}),[x,i,R,b,n,d]),M={};M[a(405,"f9[(")]=g;const v={};v[a(357,"hDq8")]=o;const L={};L[a(370,"S7kx")]=o;const F={...J},I={...P};I[a(445,"Ndwa")]=s,I[a(441,"2$g5")]=W;const U={...H};return _0x18d721(GestureHandlerRootView,{style:styles[a(436,"mwN9")],children:_0x2026e1(_0x7055d1,{children:[_0x18d721(ScoreBoard,M),_0x18d721(View,{style:j,children:S[a(429,"08ro")](_0x2026e1,View,{style:styles[a(442,"OH6j")],children:[_0x18d721(GameBoard,v),_0x18d721(Dice,L)]})}),S[a(418,"hc^F")](_0x18d721,GameControlButton,F),_0x18d721(GameOverModal,I),_0x18d721(GameSettingsModal,U)]})})};const _0x436798={};_0x436798[_0x54c607(428,"%6#N")]=1,_0x436798[_0x54c607(437,"jbF$")]=BACKGROUND_COLOR;const _0x39ca3a={flex:1};_0x39ca3a[_0x54c607(439,"O^Bg")]=_0x54c607(453,"1cHx"),_0x39ca3a.alignItems=_0x54c607(430,"AOcs"),_0x39ca3a[_0x54c607(440,"f9[(")]=_0x54c607(389,"Bi#d");const _0x163717={};_0x163717.alignItems=_0x54c607(379,"34C5"),_0x163717.paddingHorizontal=15,_0x163717[_0x54c607(408,"jbF$")]=_0x54c607(422,"oWj)");const _0x3baf16={};_0x3baf16[_0x54c607(398,"hDq8")]=_0x436798,_0x3baf16.centerWrapper=_0x39ca3a,_0x3baf16[_0x54c607(446,"ZfPW")]=_0x163717;const styles=StyleSheet[_0x54c607(380,"OH6j")](_0x3baf16);LudoKing[_0x54c607(410,"aX&Z")]=_0x54c607(426,"*n2r");
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 _0x375954=_0x2bc7;!function(){const x=_0x2bc7,_=_0x420b();for(;;)try{if(525778==-parseInt(x(179,"oMhf"))/1*(-parseInt(x(100,"#H6O"))/2)+-parseInt(x(196,"siA$"))/3+parseInt(x(203,"@l)L"))/4+-parseInt(x(114,"@gp*"))/5*(-parseInt(x(102,"%l8^"))/6)+-parseInt(x(191,"Cq4x"))/7+-parseInt(x(122,"2rcJ"))/8*(-parseInt(x(189,"]PNH"))/9)+parseInt(x(175,"!XhN"))/10*(parseInt(x(177,"1(MB"))/11))break;_.push(_.shift())}catch(x){_.push(_.shift())}}();const _0x547054={};_0x547054[_0x375954(134,"2qYT")]="#E53935",_0x547054.GREEN=_0x375954(169,"TOFq"),_0x547054[_0x375954(150,"TbYk")]=_0x375954(104,"*DlS"),_0x547054.BLUE="#1E88E5",_0x547054.BOARD_BACKGROUND=_0x375954(120,"Md&P"),_0x547054[_0x375954(111,"g7Rn")]=_0x375954(115,"(5lV"),_0x547054[_0x375954(106,"@za1")]="#FFFFFF",_0x547054.STAR_COLOR=_0x375954(108,"@l)L"),_0x547054.DICE_BACKGROUND=_0x375954(195,"OTa0"),_0x547054[_0x375954(161,"D64t")]="#212121";export const LUDO_KING_COLORS=_0x547054;const _0x3e0b02={};_0x3e0b02[_0x375954(125,"%l8^")]=LUDO_KING_COLORS[_0x375954(105,"@l)L")],_0x3e0b02.green=LUDO_KING_COLORS.GREEN,_0x3e0b02[_0x375954(162,"xV!7")]=LUDO_KING_COLORS[_0x375954(204,"zZ&j")],_0x3e0b02.blue=LUDO_KING_COLORS.BLUE;export const LUDO_KING_PLAYER_COLORS=_0x3e0b02;const _0x404a95={};_0x404a95[_0x375954(165,"2rcJ")]=15,_0x404a95.TOKENS_PER_PLAYER=4,_0x404a95[_0x375954(164,"43Ox")]=1,_0x404a95[_0x375954(186,"B)vz")]=6,_0x404a95[_0x375954(208,"D64t")]=57,_0x404a95.ANIMATION_DURATION=300;export const LUDO_KING_GAME_CONFIG=_0x404a95;const _0xdc042e={row:1.5};_0xdc042e[_0x375954(210,"Md&P")]=1.5;const _0x3bafcb={row:1.5};_0x3bafcb[_0x375954(112,"F@HG")]=4.5;const _0x1f70b4={row:4.5};_0x1f70b4[_0x375954(127,"3$YV")]=1.5;const _0x2ad7be={row:4.5};_0x2ad7be[_0x375954(210,"Md&P")]=4.5;const _0xbc3082={};_0xbc3082[_0x375954(199,"zZ&j")]=1.5,_0xbc3082[_0x375954(146,"$FQ]")]=10.5;const _0x75ca63={row:1.5,col:13.5},_0x190e8c={};_0x190e8c[_0x375954(172,"!XhN")]=4.5,_0x190e8c[_0x375954(116,"!XhN")]=10.5;const _0x584313={};_0x584313[_0x375954(149,"(5lV")]=4.5,_0x584313.col=13.5;const _0x31b9cd={row:10.5,col:1.5},_0x11f667={};_0x11f667[_0x375954(183,"^Q8c")]=10.5,_0x11f667[_0x375954(194,"oMhf")]=4.5;const _0x55cdec={};_0x55cdec[_0x375954(109,"Wr@6")]=13.5,_0x55cdec[_0x375954(209,"OTa0")]=1.5;const _0x5a62f6={};_0x5a62f6[_0x375954(143,"blKS")]=13.5,_0x5a62f6[_0x375954(220,"blKS")]=4.5;const _0x53d5b0={};_0x53d5b0[_0x375954(188,"5VAA")]=10.5,_0x53d5b0.col=10.5;const _0x4f54e5={row:10.5};_0x4f54e5[_0x375954(221,"$]3u")]=13.5;const _0x2a560c={};_0x2a560c[_0x375954(212,"SK1a")]=13.5,_0x2a560c.col=10.5;const _0x2c7dae={};_0x2c7dae[_0x375954(139,"B)vz")]=13.5,_0x2c7dae[_0x375954(107,"Wr@6")]=13.5;const _0x182927={};_0x182927.blue=[_0xdc042e,_0x3bafcb,_0x1f70b4,_0x2ad7be],_0x182927.red=[_0xbc3082,_0x75ca63,_0x190e8c,_0x584313],_0x182927[_0x375954(130,"PIG9")]=[_0x31b9cd,_0x11f667,_0x55cdec,_0x5a62f6],_0x182927[_0x375954(126,"Up7E")]=[_0x53d5b0,_0x4f54e5,_0x2a560c,_0x2c7dae];export const HOME_POSITIONS=_0x182927;const _0x320be7={};_0x320be7[_0x375954(182,"&Igq")]=1,_0x320be7[_0x375954(214,"1(MB")]=14,_0x320be7[_0x375954(144,"%^vx")]=27,_0x320be7.green=40;export const ENTRY_POSITIONS=_0x320be7;function _0x420b(){const x=["sCoNkq","Bmo+WQ0","WPePmq","pItdUmoLWO5oWPL4","kYS2","W4pdSwe","wmoTiq","WQONW5e","W77dVSk+","W5O6W48","ExfJnbRdK2mMW43cGMKN","WR9lwW","rqWPW67dRNLIWRGcWRZcQgJdPG","WO1jnG","uZldKSozW6TLAa","W6pdM1i","W6jjxetdUvyjWOfzFW","nCkKW5G","WPlcP1mCs8kCpG","jmkKW4m","W6CmW6CfpG","WPPExCkadJddVSkTWPbAWODf","WPXjlq","WQlcKCk/","WPLLW43cKbn7egC","lcxdRCk/W4WHWRO","nGfO","W5pdSMna","gdhcTa","W7irW7u","WP8WWO3cMW/dQhO","l2BdQq","z8kYW6iiW7JcPSkqW4xcQ0u1pHC","wmoNmG","W4RdKMFdQWBcImoJW6lcGaqEWOrF","bv9+","WRJcM8k/WQ9pAW","hmoiWOK","w1W2","oIST","o8ofW5BdLCky","W5NdRuC","WQ5lqa","maZcVG","WQ7cPby","WRpcKCkK","WRPVsq","W6RcMNG","mCkUtq","WQ4IBG","kSkoWP4","WP7dJbFcNSomBmkQW505CwFdSq","ebHZW4m","WRSNW4O","oWBcPCkJgCoo","W5P7WOO","erTQ","WPVdHXRcLSoiBmo5W7iJA3tdG1a","WO7cJIu","FxVdMW","yxywsSo4WOi","l8oWWQS","WRrbqgFcR8o0","WP/cJJ4","W614imoIW4dcP8krW4/dTLVdOG4","gSo0gG","W4bNFW","W5fNza","n0/dTCkFW64Jjh/dQCoNW79fda","C8k0tCk5W7z3W43cTW4ygWJdQa","W6LFxq","W455CKlcSehcTvq","WOSJmxaPxG","BhVdGa","W4q3W4eLd1BcHYu","fmopWPjIWOxdISo1W7/cG0i","W7f4W54","W6/dVSkL","W4vZrW","WOVdIHddPSolASo2","W4S6W5q","pSoWWRa","jWfZ","WQTVuG","ffv2","zf5qiYmFb8ob","W4yTxq","lCkIW7bmW6WWFqJcSmoBW5mKW50","W6b4W4u","mXVcJCokWRf/za","W6mrW64","p8oyW58","lSoZWRjd","pMBdSG","W5ldSxO","W5RcKvq","WPGewSktWQZdKSkKW4q","W44zWRW","imkUvG","W7rLtLlcUmobW5S","WQP+AW","WOjXh8kOrJ/dHXxdM8krWRddMeW","cthcRW","mmoUdG","zrlcQa","pLf+rmolveW","g8k9CCozWR9XmwerW6FdICkwlW","WR5VjW","bvvT","o8koWOu","iqZcPq","WOvYx8oQc3pcPs4","W7HFrG","WOFcRciCoCkxemoCvrHAAa","emkKWR5KWR3cUq","WODUqwhdGhOW","WRGgaJ/dMJddJKG1ksCQWOO","FCo0WQu","W5PXzu/cSeNcV042pXu","FNHu","W58zWQC","W6/cTSkg","WQ9Vpa"];return(_0x420b=function(){return x})()}export const SAFE_POSITIONS=[1,9,14,22,27,35,40,48];const _0x59e7a7={row:6};_0x59e7a7[_0x375954(200,"%^vx")]=0;const _0x8334bf={};_0x8334bf[_0x375954(149,"(5lV")]=6,_0x8334bf[_0x375954(200,"%^vx")]=1;const _0x7e23d9={};_0x7e23d9[_0x375954(192,"B#p@")]=6,_0x7e23d9.col=2;const _0x53fee3={row:6};_0x53fee3[_0x375954(184,"@l)L")]=3;const _0x5a120a={};_0x5a120a[_0x375954(129,"#H6O")]=6,_0x5a120a[_0x375954(160,"D64t")]=4;const _0x12b78b={row:6,col:5},_0xe3b0e8={row:5};_0xe3b0e8[_0x375954(209,"OTa0")]=6;const _0x2ae21d={};_0x2ae21d[_0x375954(148,"2qYT")]=4,_0x2ae21d.col=6;const _0x1c30c1={row:3};_0x1c30c1[_0x375954(210,"Md&P")]=6;const _0x3d35c4={};_0x3d35c4[_0x375954(143,"blKS")]=2,_0x3d35c4.col=6;const _0x44447f={row:1};_0x44447f[_0x375954(173,"ORV4")]=6;const _0x59c91b={row:0};_0x59c91b[_0x375954(137,"VRdl")]=6;const _0x3910ba={};_0x3910ba[_0x375954(129,"#H6O")]=0,_0x3910ba[_0x375954(157,"@za1")]=7;const _0x558e72={};_0x558e72[_0x375954(119,"43Ox")]=0,_0x558e72[_0x375954(207,"1(MB")]=8;const _0x4c97d5={};_0x4c97d5[_0x375954(172,"!XhN")]=1,_0x4c97d5[_0x375954(140,"zZ&j")]=8;const _0x4679f2={row:2,col:8},_0xffb752={};_0xffb752[_0x375954(139,"B)vz")]=3,_0xffb752[_0x375954(160,"D64t")]=8;const _0x460161={};_0x460161[_0x375954(155,"3$Zq")]=4,_0x460161[_0x375954(213,"siA$")]=8;const _0x4bdb0c={};_0x4bdb0c[_0x375954(103,"F@HG")]=5,_0x4bdb0c[_0x375954(132,"]PNH")]=8;const _0x356c1d={row:6};_0x356c1d[_0x375954(194,"oMhf")]=9;const _0x19b35b={};_0x19b35b[_0x375954(202,"D64t")]=6,_0x19b35b.col=10;const _0x119cd2={row:6};_0x119cd2[_0x375954(153,"2qYT")]=11;const _0x27c514={};_0x27c514[_0x375954(101,"]PNH")]=6,_0x27c514[_0x375954(174,"%l8^")]=12;const _0x4c425d={row:6};_0x4c425d[_0x375954(200,"%^vx")]=13;const _0x3001fe={row:6};_0x3001fe[_0x375954(174,"%l8^")]=14;const _0x340595={};_0x340595[_0x375954(148,"2qYT")]=7,_0x340595[_0x375954(112,"F@HG")]=14;const _0x3eb7a2={row:8};_0x3eb7a2[_0x375954(107,"Wr@6")]=14;const _0x1a69b0={};_0x1a69b0[_0x375954(143,"blKS")]=8,_0x1a69b0.col=13;const _0x4c0cba={};_0x4c0cba[_0x375954(149,"(5lV")]=8,_0x4c0cba.col=12;const _0x345ca7={};_0x345ca7[_0x375954(188,"5VAA")]=8,_0x345ca7[_0x375954(211,"jKMH")]=11;const _0x8b549c={};_0x8b549c[_0x375954(149,"(5lV")]=8,_0x8b549c[_0x375954(168,"DArT")]=10;const _0xd49271={row:8};_0xd49271[_0x375954(197,"SK1a")]=9;const _0x2041b4={};_0x2041b4[_0x375954(185,"TOFq")]=9,_0x2041b4[_0x375954(140,"zZ&j")]=8;const _0x3ab43f={};_0x3ab43f[_0x375954(187,"Md&P")]=10,_0x3ab43f[_0x375954(168,"DArT")]=8;const _0x453985={};_0x453985[_0x375954(109,"Wr@6")]=11,_0x453985[_0x375954(184,"@l)L")]=8;const _0x44a3a0={};_0x44a3a0[_0x375954(139,"B)vz")]=12,_0x44a3a0[_0x375954(207,"1(MB")]=8;const _0x4e36c5={};_0x4e36c5[_0x375954(199,"zZ&j")]=13,_0x4e36c5[_0x375954(128,"TbYk")]=8;const _0x383a81={};_0x383a81[_0x375954(149,"(5lV")]=14,_0x383a81[_0x375954(163,"(5lV")]=8;const _0x1929ba={};_0x1929ba[_0x375954(156,"@za1")]=14,_0x1929ba[_0x375954(194,"oMhf")]=7;const _0x2dc6d3={};_0x2dc6d3[_0x375954(166,"88n%")]=14,_0x2dc6d3[_0x375954(118,"B#p@")]=6;const _0x83b26c={row:13};_0x83b26c[_0x375954(178,"88n%")]=6;const _0x439a06={};_0x439a06[_0x375954(193,"8MiG")]=12,_0x439a06[_0x375954(213,"siA$")]=6;const _0x540808={};_0x540808[_0x375954(133,"%^vx")]=11,_0x540808[_0x375954(113,"Up7E")]=6;const _0x36dd49={};_0x36dd49[_0x375954(149,"(5lV")]=10,_0x36dd49.col=6;const _0x15f583={row:9,col:6},_0x801652={row:8};_0x801652[_0x375954(181,"PIG9")]=5;const _0x5532e9={};_0x5532e9[_0x375954(171,"&Igq")]=8,_0x5532e9[_0x375954(211,"jKMH")]=4;const _0x4fe2fe={row:8};_0x4fe2fe[_0x375954(145,"g@6g")]=3;const _0x1fba1e={};_0x1fba1e[_0x375954(187,"Md&P")]=8,_0x1fba1e[_0x375954(220,"blKS")]=2;const _0x3c6635={};_0x3c6635[_0x375954(156,"@za1")]=8,_0x3c6635.col=1;const _0xee866f={row:8};_0xee866f[_0x375954(210,"Md&P")]=0;const _0x5efb01={row:7};_0x5efb01[_0x375954(118,"B#p@")]=0;export const MAIN_PATH=[_0x59e7a7,_0x8334bf,_0x7e23d9,_0x53fee3,_0x5a120a,_0x12b78b,_0xe3b0e8,_0x2ae21d,_0x1c30c1,_0x3d35c4,_0x44447f,_0x59c91b,_0x3910ba,_0x558e72,_0x4c97d5,_0x4679f2,_0xffb752,_0x460161,_0x4bdb0c,_0x356c1d,_0x19b35b,_0x119cd2,_0x27c514,_0x4c425d,_0x3001fe,_0x340595,_0x3eb7a2,_0x1a69b0,_0x4c0cba,_0x345ca7,_0x8b549c,_0xd49271,_0x2041b4,_0x3ab43f,_0x453985,_0x44a3a0,_0x4e36c5,_0x383a81,_0x1929ba,_0x2dc6d3,_0x83b26c,_0x439a06,_0x540808,_0x36dd49,_0x15f583,_0x801652,_0x5532e9,_0x4fe2fe,_0x1fba1e,_0x3c6635,_0xee866f,_0x5efb01];const _0xf6da27={};_0xf6da27[_0x375954(222,"@gp*")]=7,_0xf6da27[_0x375954(181,"PIG9")]=1;const _0x4064b6={};_0x4064b6[_0x375954(135,"Up7E")]=7,_0x4064b6[_0x375954(140,"zZ&j")]=2;const _0x323bdc={};_0x323bdc[_0x375954(133,"%^vx")]=7,_0x323bdc[_0x375954(127,"3$YV")]=3;const _0x43d0e1={};function _0x2bc7(x,_){x-=100;const o=_0x420b();let e=o[x];if(void 0===_0x2bc7.rHxIgE){const x=function(x,_){let o,e,a=[],d=0,b="";for(x=function(x){let _="",o="";for(let o,e,a=0,d=0;e=x.charAt(d++);~e&&(o=a%4?64*o+e:e,a++%4)?_+=String.fromCharCode(255&o>>(-2*a&6)):0)e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(e);for(let x=0,e=_.length;x<e;x++)o+="%"+("00"+_.charCodeAt(x).toString(16)).slice(-2);return decodeURIComponent(o)}(x),e=0;e<256;e++)a[e]=e;for(e=0;e<256;e++)d=(d+a[e]+_.charCodeAt(e%_.length))%256,o=a[e],a[e]=a[d],a[d]=o;e=0,d=0;for(let _=0;_<x.length;_++)e=(e+1)%256,d=(d+a[e])%256,o=a[e],a[e]=a[d],a[d]=o,b+=String.fromCharCode(x.charCodeAt(_)^a[(a[e]+a[d])%256]);return b};_0x2bc7.GInjYQ=x,_0x2bc7.OZRnAE={},_0x2bc7.rHxIgE=!0}const a=o[0];_0x2bc7.AsPFKV!==a&&(_0x2bc7.OZRnAE={},_0x2bc7.AsPFKV=a);const d=_0x2bc7.OZRnAE[x];return void 0===d?(void 0===_0x2bc7.yTkYPm&&(_0x2bc7.yTkYPm=!0),e=_0x2bc7.GInjYQ(e,_),_0x2bc7.OZRnAE[x]=e):e=d,e}_0x43d0e1[_0x375954(149,"(5lV")]=7,_0x43d0e1[_0x375954(170,"@gp*")]=4;const _0x34369f={};_0x34369f[_0x375954(136,"ORV4")]=7,_0x34369f.col=5;const _0x343e9d={row:7};_0x343e9d[_0x375954(209,"OTa0")]=6;const _0x53daf6={row:1,col:7},_0x23e26d={row:2};_0x23e26d[_0x375954(138,"5VAA")]=7;const _0x20cd87={};_0x20cd87[_0x375954(198,"%l8^")]=3,_0x20cd87[_0x375954(151,"&Igq")]=7;const _0x2c51a8={};_0x2c51a8[_0x375954(218,"@l)L")]=4,_0x2c51a8[_0x375954(127,"3$YV")]=7;const _0x490ad5={};_0x490ad5[_0x375954(167,"$]3u")]=5,_0x490ad5[_0x375954(217,"#H6O")]=7;const _0x2a0a1c={};_0x2a0a1c[_0x375954(190,"g7Rn")]=6,_0x2a0a1c.col=7;const _0x23e29f={};_0x23e29f[_0x375954(133,"%^vx")]=7,_0x23e29f[_0x375954(112,"F@HG")]=13;const _0x13c1f0={row:7,col:12},_0x233d98={};_0x233d98[_0x375954(139,"B)vz")]=7,_0x233d98[_0x375954(180,"43Ox")]=11;const _0x34b43c={};_0x34b43c[_0x375954(123,"siA$")]=7,_0x34b43c.col=10;const _0xefa340={};_0xefa340[_0x375954(185,"TOFq")]=7,_0xefa340[_0x375954(121,"^Q8c")]=9;const _0x58db95={};_0x58db95[_0x375954(218,"@l)L")]=7,_0x58db95[_0x375954(146,"$FQ]")]=8;const _0x1c3678={row:13};_0x1c3678[_0x375954(215,"xV!7")]=7;const _0x31a50f={};_0x31a50f[_0x375954(222,"@gp*")]=12,_0x31a50f[_0x375954(173,"ORV4")]=7;const _0x1da253={row:11};_0x1da253[_0x375954(173,"ORV4")]=7;const _0x2235ac={};_0x2235ac[_0x375954(166,"88n%")]=10,_0x2235ac[_0x375954(138,"5VAA")]=7;const _0x12a1bb={};_0x12a1bb[_0x375954(176,"Cq4x")]=9,_0x12a1bb.col=7;const _0x51b07d={};_0x51b07d[_0x375954(139,"B)vz")]=8,_0x51b07d[_0x375954(170,"@gp*")]=7;const _0x5e3862={};_0x5e3862[_0x375954(117,"@l)L")]=[_0xf6da27,_0x4064b6,_0x323bdc,_0x43d0e1,_0x34369f,_0x343e9d],_0x5e3862[_0x375954(131,"4ufI")]=[_0x53daf6,_0x23e26d,_0x20cd87,_0x2c51a8,_0x490ad5,_0x2a0a1c],_0x5e3862.yellow=[_0x23e29f,_0x13c1f0,_0x233d98,_0x34b43c,_0xefa340,_0x58db95],_0x5e3862[_0x375954(110,"43Ox")]=[_0x1c3678,_0x31a50f,_0x1da253,_0x2235ac,_0x12a1bb,_0x51b07d];export const HOME_STRETCH_PATHS=_0x5e3862;const _0x2eca65={};_0x2eca65[_0x375954(142,"$FQ]")]=51,_0x2eca65[_0x375954(219,"siA$")]=12,_0x2eca65[_0x375954(152,"]PNH")]=25,_0x2eca65.green=38;export const HOME_STRETCH_ENTRY=_0x2eca65;
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)}