@nayan-ui/games 1.18.0 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1808) hide show
  1. package/README.md +53 -191
  2. package/lib/module/assets/fonts/Inter-SemiBold.ttf +0 -0
  3. package/lib/module/assets/models/explorer/explorer.glb +0 -0
  4. package/lib/module/assets/models/explorer/params.json +51 -0
  5. package/lib/module/assets/models/explorer/source.json +222 -0
  6. package/lib/module/assets/models/play-with-tua/play-with-tua.glb +0 -0
  7. package/lib/module/assets/models/play-with-tua/sources.json +141 -0
  8. package/lib/module/assets/sfx/balloon_pop.wav +0 -0
  9. package/lib/module/assets/sfx/blocked.wav +0 -0
  10. package/lib/module/assets/sfx/boing.wav +0 -0
  11. package/lib/module/assets/sfx/bonus.wav +0 -0
  12. package/lib/module/assets/sfx/boom.wav +0 -0
  13. package/lib/module/assets/sfx/bump.wav +0 -0
  14. package/lib/module/assets/sfx/cannon.wav +0 -0
  15. package/lib/module/assets/sfx/capture.wav +0 -0
  16. package/lib/module/assets/sfx/card_flip.wav +0 -0
  17. package/lib/module/assets/sfx/card_place.wav +0 -0
  18. package/lib/module/assets/sfx/catch.wav +0 -0
  19. package/lib/module/assets/sfx/chime.wav +0 -0
  20. package/lib/module/assets/sfx/chomp.wav +0 -0
  21. package/lib/module/assets/sfx/chomp_alt.wav +0 -0
  22. package/lib/module/assets/sfx/clack.wav +0 -0
  23. package/lib/module/assets/sfx/clang.wav +0 -0
  24. package/lib/module/assets/sfx/clash.wav +0 -0
  25. package/lib/module/assets/sfx/click.wav +0 -0
  26. package/lib/module/assets/sfx/coin.wav +0 -0
  27. package/lib/module/assets/sfx/combo.wav +0 -0
  28. package/lib/module/assets/sfx/crash.wav +0 -0
  29. package/lib/module/assets/sfx/crunch.wav +0 -0
  30. package/lib/module/assets/sfx/dance.wav +0 -0
  31. package/lib/module/assets/sfx/deselect.wav +0 -0
  32. package/lib/module/assets/sfx/dice_roll.wav +0 -0
  33. package/lib/module/assets/sfx/die.wav +0 -0
  34. package/lib/module/assets/sfx/draw.wav +0 -0
  35. package/lib/module/assets/sfx/drop.wav +0 -0
  36. package/lib/module/assets/sfx/eat.wav +0 -0
  37. package/lib/module/assets/sfx/engine.wav +0 -0
  38. package/lib/module/assets/sfx/error.wav +0 -0
  39. package/lib/module/assets/sfx/flag.wav +0 -0
  40. package/lib/module/assets/sfx/flap.wav +0 -0
  41. package/lib/module/assets/sfx/flip_disc.wav +0 -0
  42. package/lib/module/assets/sfx/footstep_run.wav +0 -0
  43. package/lib/module/assets/sfx/footstep_walk.wav +0 -0
  44. package/lib/module/assets/sfx/game_over.wav +0 -0
  45. package/lib/module/assets/sfx/gate.wav +0 -0
  46. package/lib/module/assets/sfx/hit.wav +0 -0
  47. package/lib/module/assets/sfx/hop.wav +0 -0
  48. package/lib/module/assets/sfx/hurt.wav +0 -0
  49. package/lib/module/assets/sfx/invalid.wav +0 -0
  50. package/lib/module/assets/sfx/jump.wav +0 -0
  51. package/lib/module/assets/sfx/ladder.wav +0 -0
  52. package/lib/module/assets/sfx/land.wav +0 -0
  53. package/lib/module/assets/sfx/laugh.wav +0 -0
  54. package/lib/module/assets/sfx/lose.wav +0 -0
  55. package/lib/module/assets/sfx/merge.wav +0 -0
  56. package/lib/module/assets/sfx/miss.wav +0 -0
  57. package/lib/module/assets/sfx/nitro.wav +0 -0
  58. package/lib/module/assets/sfx/pew.wav +0 -0
  59. package/lib/module/assets/sfx/place.wav +0 -0
  60. package/lib/module/assets/sfx/pling.wav +0 -0
  61. package/lib/module/assets/sfx/point.wav +0 -0
  62. package/lib/module/assets/sfx/pop.wav +0 -0
  63. package/lib/module/assets/sfx/pop_soft.wav +0 -0
  64. package/lib/module/assets/sfx/power_up.wav +0 -0
  65. package/lib/module/assets/sfx/reveal.wav +0 -0
  66. package/lib/module/assets/sfx/robot.wav +0 -0
  67. package/lib/module/assets/sfx/rotate.wav +0 -0
  68. package/lib/module/assets/sfx/run_steps.wav +0 -0
  69. package/lib/module/assets/sfx/select.wav +0 -0
  70. package/lib/module/assets/sfx/shuffle.wav +0 -0
  71. package/lib/module/assets/sfx/six.wav +0 -0
  72. package/lib/module/assets/sfx/slice.wav +0 -0
  73. package/lib/module/assets/sfx/slide.wav +0 -0
  74. package/lib/module/assets/sfx/snake.wav +0 -0
  75. package/lib/module/assets/sfx/snap.wav +0 -0
  76. package/lib/module/assets/sfx/splash.wav +0 -0
  77. package/lib/module/assets/sfx/star.wav +0 -0
  78. package/lib/module/assets/sfx/start.wav +0 -0
  79. package/lib/module/assets/sfx/swoosh.wav +0 -0
  80. package/lib/module/assets/sfx/tap.wav +0 -0
  81. package/lib/module/assets/sfx/thud.wav +0 -0
  82. package/lib/module/assets/sfx/thunk.wav +0 -0
  83. package/lib/module/assets/sfx/tick.wav +0 -0
  84. package/lib/module/assets/sfx/time_up.wav +0 -0
  85. package/lib/module/assets/sfx/tock.wav +0 -0
  86. package/lib/module/assets/sfx/walk_steps.wav +0 -0
  87. package/lib/module/assets/sfx/warning.wav +0 -0
  88. package/lib/module/assets/sfx/whack.wav +0 -0
  89. package/lib/module/assets/sfx/whoosh.wav +0 -0
  90. package/lib/module/assets/sfx/win.wav +0 -0
  91. package/lib/module/assets/sfx/zap.wav +0 -0
  92. package/lib/module/assets/textures/ad_bolt.png +0 -0
  93. package/lib/module/assets/textures/ad_bubbles.png +0 -0
  94. package/lib/module/assets/textures/ad_chevrons.png +0 -0
  95. package/lib/module/assets/textures/asphalt.png +0 -0
  96. package/lib/module/assets/textures/bark.jpg +0 -0
  97. package/lib/module/assets/textures/explorer-atlas.png +0 -0
  98. package/lib/module/assets/textures/facade.png +0 -0
  99. package/lib/module/assets/textures/grass.png +0 -0
  100. package/lib/module/assets/textures/leaves.png +0 -0
  101. package/lib/module/assets/textures/limestone.jpg +0 -0
  102. package/lib/module/assets/textures/meadow.jpg +0 -0
  103. package/lib/module/assets/textures/nature-sources.json +87 -0
  104. package/lib/module/assets/textures/pine.png +0 -0
  105. package/lib/module/assets/textures/river.jpg +0 -0
  106. package/lib/module/assets/textures/soft_glow.png +0 -0
  107. package/lib/module/games/arrows/Arrows.js +1 -1
  108. package/lib/module/games/arrows/ArrowsConstants.js +1 -1
  109. package/lib/module/games/arrows/ArrowsGame.js +1 -0
  110. package/lib/module/games/arrows/ArrowsScene.js +1 -0
  111. package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -1
  112. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -1
  113. package/lib/module/games/balloon-blaster/BalloonBlasterGame.js +1 -0
  114. package/lib/module/games/balloon-blaster/BalloonBlasterPhysics.js +1 -0
  115. package/lib/module/games/balloon-blaster/BalloonBlasterScene.js +1 -0
  116. package/lib/module/games/bike-racing/BikeMeshes.js +1 -0
  117. package/lib/module/games/bike-racing/BikeRacing.js +1 -1
  118. package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -1
  119. package/lib/module/games/bike-racing/BikeRacingGame.js +1 -0
  120. package/lib/module/games/bike-racing/BikeRacingScene.js +1 -0
  121. package/lib/module/games/block-blast/BlockBlast.js +1 -1
  122. package/lib/module/games/block-blast/BlockBlastConstants.js +1 -1
  123. package/lib/module/games/block-blast/BlockBlastGame.js +1 -0
  124. package/lib/module/games/block-blast/BlockBlastScene.js +1 -0
  125. package/lib/module/games/block-breaker/BlockBreaker.js +1 -1
  126. package/lib/module/games/block-breaker/BlockBreakerConstants.js +1 -1
  127. package/lib/module/games/block-breaker/BlockBreakerGame.js +1 -0
  128. package/lib/module/games/block-breaker/BlockBreakerScene.js +1 -0
  129. package/lib/module/games/bluk/Bluk.js +1 -1
  130. package/lib/module/games/bluk/BlukConstants.js +1 -1
  131. package/lib/module/games/bluk/BlukGame.js +1 -0
  132. package/lib/module/games/bluk/BlukRules.js +1 -0
  133. package/lib/module/games/bluk/BlukScene.js +1 -0
  134. package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -1
  135. package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -1
  136. package/lib/module/games/bubble-shooter/BubbleShooterGame.js +1 -0
  137. package/lib/module/games/bubble-shooter/BubbleShooterScene.js +1 -0
  138. package/lib/module/games/candy-crush/CandyCrush.js +1 -1
  139. package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -1
  140. package/lib/module/games/candy-crush/CandyCrushGame.js +1 -0
  141. package/lib/module/games/candy-crush/CandyCrushScene.js +1 -0
  142. package/lib/module/games/car-racing/CarMeshes.js +1 -0
  143. package/lib/module/games/car-racing/CarRacing.js +1 -1
  144. package/lib/module/games/car-racing/CarRacingConstants.js +1 -1
  145. package/lib/module/games/car-racing/CarRacingFacade.js +1 -0
  146. package/lib/module/games/car-racing/CarRacingGame.js +1 -0
  147. package/lib/module/games/car-racing/CarRacingScene.js +1 -0
  148. package/lib/module/games/car-racing/CarRacingScenery.js +1 -0
  149. package/lib/module/games/chameleon-run/ChameleonRun.js +1 -1
  150. package/lib/module/games/chameleon-run/ChameleonRunBackdrop.js +1 -0
  151. package/lib/module/games/chameleon-run/ChameleonRunConstants.js +1 -1
  152. package/lib/module/games/chameleon-run/ChameleonRunGame.js +1 -0
  153. package/lib/module/games/chameleon-run/ChameleonRunMeshes.js +1 -0
  154. package/lib/module/games/chameleon-run/ChameleonRunRules.js +1 -0
  155. package/lib/module/games/chameleon-run/ChameleonRunScene.js +1 -0
  156. package/lib/module/games/checkers/Checkers.js +1 -1
  157. package/lib/module/games/checkers/CheckersAI.js +1 -0
  158. package/lib/module/games/checkers/CheckersConstants.js +1 -1
  159. package/lib/module/games/checkers/CheckersGame.js +1 -0
  160. package/lib/module/games/checkers/CheckersRules.js +1 -0
  161. package/lib/module/games/checkers/CheckersScene.js +1 -0
  162. package/lib/module/games/color-switch/ColorSwitch.js +1 -1
  163. package/lib/module/games/color-switch/ColorSwitchConstants.js +1 -1
  164. package/lib/module/games/color-switch/ColorSwitchGame.js +1 -0
  165. package/lib/module/games/color-switch/ColorSwitchScene.js +1 -0
  166. package/lib/module/games/colors-sort/ColorsSort.js +1 -1
  167. package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -1
  168. package/lib/module/games/colors-sort/ColorsSortGame.js +1 -0
  169. package/lib/module/games/colors-sort/ColorsSortScene.js +1 -0
  170. package/lib/module/games/connect-em-all/ConnectEmAll.js +1 -1
  171. package/lib/module/games/connect-em-all/ConnectEmAllConstants.js +1 -1
  172. package/lib/module/games/connect-em-all/ConnectEmAllGame.js +1 -0
  173. package/lib/module/games/connect-em-all/ConnectEmAllScene.js +1 -0
  174. package/lib/module/games/crossy-road/CrossyRoad.js +1 -1
  175. package/lib/module/games/crossy-road/CrossyRoadCamera.js +1 -0
  176. package/lib/module/games/crossy-road/CrossyRoadConstants.js +1 -1
  177. package/lib/module/games/crossy-road/CrossyRoadGame.js +1 -0
  178. package/lib/module/games/crossy-road/CrossyRoadMeshes.js +1 -0
  179. package/lib/module/games/crossy-road/CrossyRoadPerson.js +1 -0
  180. package/lib/module/games/crossy-road/CrossyRoadRules.js +1 -0
  181. package/lib/module/games/crossy-road/CrossyRoadScene.js +1 -0
  182. package/lib/module/games/dino-jump/DinoJump.js +1 -1
  183. package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -1
  184. package/lib/module/games/dino-jump/DinoJumpGame.js +1 -0
  185. package/lib/module/games/dino-jump/DinoJumpScene.js +1 -0
  186. package/lib/module/games/dots-and-boxes/DotsAndBoxes.js +1 -1
  187. package/lib/module/games/dots-and-boxes/DotsAndBoxesConstants.js +1 -1
  188. package/lib/module/games/dots-and-boxes/DotsAndBoxesGame.js +1 -0
  189. package/lib/module/games/dots-and-boxes/DotsAndBoxesScene.js +1 -0
  190. package/lib/module/games/falling-sticks/FallingSticks.js +1 -1
  191. package/lib/module/games/falling-sticks/FallingSticksConstants.js +1 -1
  192. package/lib/module/games/falling-sticks/FallingSticksGame.js +1 -0
  193. package/lib/module/games/falling-sticks/FallingSticksRules.js +1 -0
  194. package/lib/module/games/falling-sticks/FallingSticksScene.js +1 -0
  195. package/lib/module/games/find-different-number/FindDifferentNumber.js +1 -1
  196. package/lib/module/games/find-different-number/FindDifferentNumberConstants.js +1 -1
  197. package/lib/module/games/find-different-number/FindDifferentNumberGame.js +1 -0
  198. package/lib/module/games/find-different-number/FindDifferentNumberRules.js +1 -0
  199. package/lib/module/games/find-different-number/FindDifferentNumberScene.js +1 -0
  200. package/lib/module/games/flappy-bird/FlappyBird.js +1 -1
  201. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -1
  202. package/lib/module/games/flappy-bird/FlappyBirdGame.js +1 -0
  203. package/lib/module/games/flappy-bird/FlappyBirdScene.js +1 -0
  204. package/lib/module/games/fruit-merger/FruitMerger.js +1 -1
  205. package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -1
  206. package/lib/module/games/fruit-merger/FruitMergerGame.js +1 -0
  207. package/lib/module/games/fruit-merger/FruitMergerRules.js +1 -0
  208. package/lib/module/games/fruit-merger/FruitMergerScene.js +1 -0
  209. package/lib/module/games/fruit-ninja/FruitNinja.js +1 -1
  210. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -1
  211. package/lib/module/games/fruit-ninja/FruitNinjaGame.js +1 -0
  212. package/lib/module/games/fruit-ninja/FruitNinjaScene.js +1 -0
  213. package/lib/module/games/fruit-ninja/FruitNinjaWorld.js +1 -0
  214. package/lib/module/games/game-2048/Game2048.js +1 -1
  215. package/lib/module/games/game-2048/Game2048Constants.js +1 -1
  216. package/lib/module/games/game-2048/Game2048Game.js +1 -0
  217. package/lib/module/games/game-2048/Game2048Rules.js +1 -0
  218. package/lib/module/games/game-2048/Game2048Scene.js +1 -0
  219. package/lib/module/games/knife-hit/KnifeHit.js +1 -1
  220. package/lib/module/games/knife-hit/KnifeHitConstants.js +1 -1
  221. package/lib/module/games/knife-hit/KnifeHitGame.js +1 -0
  222. package/lib/module/games/knife-hit/KnifeHitScene.js +1 -0
  223. package/lib/module/games/ludo-king/LudoKing.js +1 -1
  224. package/lib/module/games/ludo-king/LudoKingConstants.js +1 -1
  225. package/lib/module/games/ludo-king/LudoKingGame.js +1 -0
  226. package/lib/module/games/ludo-king/LudoKingRules.js +1 -0
  227. package/lib/module/games/ludo-king/LudoKingScene.js +1 -0
  228. package/lib/module/games/maze-runner/MazeRunner.js +1 -1
  229. package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -1
  230. package/lib/module/games/maze-runner/MazeRunnerGame.js +1 -0
  231. package/lib/module/games/maze-runner/MazeRunnerRules.js +1 -0
  232. package/lib/module/games/maze-runner/MazeRunnerScene.js +1 -0
  233. package/lib/module/games/memory-match/MemoryMatch.js +1 -1
  234. package/lib/module/games/memory-match/MemoryMatchConstants.js +1 -1
  235. package/lib/module/games/memory-match/MemoryMatchGame.js +1 -0
  236. package/lib/module/games/memory-match/MemoryMatchRules.js +1 -0
  237. package/lib/module/games/memory-match/MemoryMatchScene.js +1 -0
  238. package/lib/module/games/mine-sweeper/MineSweeper.js +1 -1
  239. package/lib/module/games/mine-sweeper/MineSweeperConstants.js +1 -1
  240. package/lib/module/games/mine-sweeper/MineSweeperGame.js +1 -0
  241. package/lib/module/games/mine-sweeper/MineSweeperRules.js +1 -0
  242. package/lib/module/games/mine-sweeper/MineSweeperScene.js +1 -0
  243. package/lib/module/games/mob-control/MobControl.js +1 -1
  244. package/lib/module/games/mob-control/MobControlConstants.js +1 -1
  245. package/lib/module/games/mob-control/MobControlGame.js +1 -0
  246. package/lib/module/games/mob-control/MobControlMeshes.js +1 -0
  247. package/lib/module/games/mob-control/MobControlRenderer.js +1 -0
  248. package/lib/module/games/mob-control/MobControlRules.js +1 -0
  249. package/lib/module/games/mob-control/MobControlScene.js +1 -0
  250. package/lib/module/games/number-search/NumberSearch.js +1 -1
  251. package/lib/module/games/number-search/NumberSearchNumbers.js +1 -0
  252. package/lib/module/games/nuts-and-bolts/NutsAndBolts.js +1 -1
  253. package/lib/module/games/nuts-and-bolts/NutsAndBoltsConstants.js +1 -1
  254. package/lib/module/games/nuts-and-bolts/NutsAndBoltsGame.js +1 -0
  255. package/lib/module/games/nuts-and-bolts/NutsAndBoltsRules.js +1 -0
  256. package/lib/module/games/nuts-and-bolts/NutsAndBoltsScene.js +1 -0
  257. package/lib/module/games/pac-man/PacMan.js +1 -1
  258. package/lib/module/games/pac-man/PacManConstants.js +1 -1
  259. package/lib/module/games/pac-man/PacManGame.js +1 -0
  260. package/lib/module/games/pac-man/PacManRules.js +1 -0
  261. package/lib/module/games/pac-man/PacManScene.js +1 -0
  262. package/lib/module/games/paper-io/PaperIo.js +1 -1
  263. package/lib/module/games/paper-io/PaperIoConstants.js +1 -1
  264. package/lib/module/games/paper-io/PaperIoGame.js +1 -0
  265. package/lib/module/games/paper-io/PaperIoMeshes.js +1 -0
  266. package/lib/module/games/paper-io/PaperIoRules.js +1 -0
  267. package/lib/module/games/paper-io/PaperIoScene.js +1 -0
  268. package/lib/module/games/penguin-run/PenguinMeshes.js +1 -0
  269. package/lib/module/games/penguin-run/PenguinModel.js +1 -0
  270. package/lib/module/games/penguin-run/PenguinRun.js +1 -0
  271. package/lib/module/games/penguin-run/PenguinRunConstants.js +1 -0
  272. package/lib/module/games/penguin-run/PenguinRunGame.js +1 -0
  273. package/lib/module/games/penguin-run/PenguinRunScene.js +1 -0
  274. package/lib/module/games/perfect-circle/PerfectCircle.js +1 -1
  275. package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -1
  276. package/lib/module/games/perfect-circle/PerfectCircleGame.js +1 -0
  277. package/lib/module/games/perfect-circle/PerfectCircleRules.js +1 -0
  278. package/lib/module/games/perfect-circle/PerfectCircleScene.js +1 -0
  279. package/lib/module/games/pipe-connect/PipeConnect.js +1 -1
  280. package/lib/module/games/pipe-connect/PipeConnectConstants.js +1 -1
  281. package/lib/module/games/pipe-connect/PipeConnectGame.js +1 -0
  282. package/lib/module/games/pipe-connect/PipeConnectRules.js +1 -0
  283. package/lib/module/games/pipe-connect/PipeConnectScene.js +1 -0
  284. package/lib/module/games/play-with-tua/PlayWithTua.js +1 -0
  285. package/lib/module/games/play-with-tua/PlayWithTuaConstants.js +1 -0
  286. package/lib/module/games/play-with-tua/PlayWithTuaGame.js +1 -0
  287. package/lib/module/games/play-with-tua/PlayWithTuaModel.js +1 -0
  288. package/lib/module/games/play-with-tua/PlayWithTuaScene.js +1 -0
  289. package/lib/module/games/popit-fidget/PopitFidget.js +1 -1
  290. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -1
  291. package/lib/module/games/popit-fidget/PopitFidgetGame.js +1 -0
  292. package/lib/module/games/popit-fidget/PopitFidgetScene.js +1 -0
  293. package/lib/module/games/reversi/Reversi.js +1 -1
  294. package/lib/module/games/reversi/ReversiConstants.js +1 -1
  295. package/lib/module/games/reversi/ReversiGame.js +1 -0
  296. package/lib/module/games/reversi/ReversiRules.js +1 -0
  297. package/lib/module/games/reversi/ReversiScene.js +1 -0
  298. package/lib/module/games/search-grid/SearchGrid.js +1 -0
  299. package/lib/module/games/search-grid/SearchGridConstants.js +1 -0
  300. package/lib/module/games/search-grid/SearchGridGame.js +1 -0
  301. package/lib/module/games/search-grid/SearchGridScene.js +1 -0
  302. package/lib/module/games/shared/BackdropCard.js +1 -0
  303. package/lib/module/games/shared/EngineBackdrop.js +1 -0
  304. package/lib/module/games/shared/EngineBlasts.js +1 -0
  305. package/lib/module/games/shared/EngineBlocks.js +1 -0
  306. package/lib/module/games/shared/EngineControlText.js +1 -0
  307. package/lib/module/games/shared/EngineDice.js +1 -0
  308. package/lib/module/games/shared/EngineFootprint.js +1 -0
  309. package/lib/module/games/shared/EngineFruits.js +1 -0
  310. package/lib/module/games/shared/EngineGameLoader.js +1 -0
  311. package/lib/module/games/shared/EngineGameScreen.js +1 -0
  312. package/lib/module/games/shared/EngineGameWidth.js +1 -0
  313. package/lib/module/games/shared/EngineGameWidth.web.js +1 -0
  314. package/lib/module/games/shared/EngineGlyphs.js +1 -0
  315. package/lib/module/games/shared/EngineHud.js +1 -0
  316. package/lib/module/games/shared/EngineLoading.js +1 -0
  317. package/lib/module/games/shared/EngineMeadow.js +1 -0
  318. package/lib/module/games/shared/EngineMeshCache.js +1 -0
  319. package/lib/module/games/shared/EngineMeshes.js +1 -0
  320. package/lib/module/games/shared/EngineRacingChase.js +1 -0
  321. package/lib/module/games/shared/EngineRacingHandling.js +1 -0
  322. package/lib/module/games/shared/EngineReadyContext.js +1 -0
  323. package/lib/module/games/shared/EngineTilt.js +1 -0
  324. package/lib/module/games/shared/EngineTouchSurface.js +1 -0
  325. package/lib/module/games/shared/EngineUtils.js +1 -0
  326. package/lib/module/games/shared/GameActivity.js +1 -0
  327. package/lib/module/games/shared/GameLoading.js +1 -0
  328. package/lib/module/games/shared/GameLoadingTransition.js +1 -0
  329. package/lib/module/games/shared/ProceduralCacheVersion.js +1 -0
  330. package/lib/module/games/shared/useEngineGame.js +1 -0
  331. package/lib/module/games/shared/useGameResource.js +1 -0
  332. package/lib/module/games/shared/useLiveState.js +1 -0
  333. package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -1
  334. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -1
  335. package/lib/module/games/sliding-numbers/SlidingNumbersGame.js +1 -0
  336. package/lib/module/games/sliding-numbers/SlidingNumbersRules.js +1 -0
  337. package/lib/module/games/sliding-numbers/SlidingNumbersScene.js +1 -0
  338. package/lib/module/games/snake-3d/Snake3D.js +1 -1
  339. package/lib/module/games/snake-3d/Snake3DConstants.js +1 -1
  340. package/lib/module/games/snake-3d/Snake3DGame.js +1 -0
  341. package/lib/module/games/snake-3d/Snake3DMotion.js +1 -0
  342. package/lib/module/games/snake-3d/Snake3DRules.js +1 -0
  343. package/lib/module/games/snake-3d/Snake3DScene.js +1 -0
  344. package/lib/module/games/snakes-and-ladders/SnakesAndLadders.js +1 -1
  345. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersConstants.js +1 -1
  346. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersGame.js +1 -0
  347. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersScene.js +1 -0
  348. package/lib/module/games/space-fighter/SpaceFighter.js +1 -1
  349. package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -1
  350. package/lib/module/games/space-fighter/SpaceFighterGame.js +1 -0
  351. package/lib/module/games/space-fighter/SpaceFighterScene.js +1 -0
  352. package/lib/module/games/spider-solitaire/SpiderSolitaire.js +1 -1
  353. package/lib/module/games/spider-solitaire/SpiderSolitaireConstants.js +1 -1
  354. package/lib/module/games/spider-solitaire/SpiderSolitaireGame.js +1 -0
  355. package/lib/module/games/spider-solitaire/SpiderSolitaireRules.js +1 -0
  356. package/lib/module/games/spider-solitaire/SpiderSolitaireScene.js +1 -0
  357. package/lib/module/games/stack-tower/StackTower.js +1 -1
  358. package/lib/module/games/stack-tower/StackTowerConstants.js +1 -1
  359. package/lib/module/games/stack-tower/StackTowerGame.js +1 -0
  360. package/lib/module/games/stack-tower/StackTowerScene.js +1 -0
  361. package/lib/module/games/sudoku/Sudoku.js +1 -1
  362. package/lib/module/games/sudoku/SudokuConstants.js +1 -1
  363. package/lib/module/games/sudoku/SudokuGame.js +1 -0
  364. package/lib/module/games/sudoku/SudokuRules.js +1 -0
  365. package/lib/module/games/sudoku/SudokuScene.js +1 -0
  366. package/lib/module/games/tangram/Tangram.js +1 -1
  367. package/lib/module/games/tangram/TangramConstants.js +1 -1
  368. package/lib/module/games/tangram/TangramGame.js +1 -0
  369. package/lib/module/games/tangram/TangramRules.js +1 -0
  370. package/lib/module/games/tangram/TangramScene.js +1 -0
  371. package/lib/module/games/tank-1990/Tank1990.js +1 -1
  372. package/lib/module/games/tank-1990/Tank1990Constants.js +1 -1
  373. package/lib/module/games/tank-1990/Tank1990Game.js +1 -0
  374. package/lib/module/games/tank-1990/Tank1990Rules.js +1 -0
  375. package/lib/module/games/tank-1990/Tank1990Scene.js +1 -0
  376. package/lib/module/games/tic-tac-toe/TicTacToe.js +1 -1
  377. package/lib/module/games/tic-tac-toe/TicTacToeConstants.js +1 -1
  378. package/lib/module/games/tic-tac-toe/TicTacToeGame.js +1 -0
  379. package/lib/module/games/tic-tac-toe/TicTacToeRules.js +1 -0
  380. package/lib/module/games/tic-tac-toe/TicTacToeScene.js +1 -0
  381. package/lib/module/games/tile-home/TileHome.js +1 -1
  382. package/lib/module/games/tile-home/TileHomeConstants.js +1 -1
  383. package/lib/module/games/tile-home/TileHomeGame.js +1 -0
  384. package/lib/module/games/tile-home/TileHomeScene.js +1 -0
  385. package/lib/module/games/treasure-hunt/TreasureHunt.js +1 -0
  386. package/lib/module/games/treasure-hunt/TreasureHuntConstants.js +1 -0
  387. package/lib/module/games/treasure-hunt/TreasureHuntControls.js +1 -0
  388. package/lib/module/games/treasure-hunt/TreasureHuntGame.js +1 -0
  389. package/lib/module/games/treasure-hunt/TreasureHuntMeshes.js +1 -0
  390. package/lib/module/games/treasure-hunt/TreasureHuntModel.js +1 -0
  391. package/lib/module/games/treasure-hunt/TreasureHuntRules.js +1 -0
  392. package/lib/module/games/treasure-hunt/TreasureHuntScene.js +1 -0
  393. package/lib/module/games/whack-a-mole/WhackAMole.js +1 -1
  394. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -1
  395. package/lib/module/games/whack-a-mole/WhackAMoleGame.js +1 -0
  396. package/lib/module/games/whack-a-mole/WhackAMoleScene.js +1 -0
  397. package/lib/module/games/word-search/WordSearch.js +1 -1
  398. package/lib/module/games/word-search/WordSearchWords.js +1 -0
  399. package/lib/module/helpers/GamePatternData.js +1 -0
  400. package/lib/module/helpers/GameSettingsModal.js +1 -1
  401. package/lib/module/helpers/GameTheme.js +1 -0
  402. package/lib/module/helpers/IconPaths.js +1 -0
  403. package/lib/module/helpers/index.js +1 -1
  404. package/lib/module/index.js +1 -1
  405. package/lib/module/services/GameAssetLoader.js +1 -0
  406. package/lib/module/services/GameAssets.js +1 -0
  407. package/lib/module/services/GameLoaders.js +1 -0
  408. package/lib/module/services/GamesConstants.js +1 -1
  409. package/lib/module/services/GamesMetadata.js +1 -1
  410. package/lib/module/services/GamesService.js +1 -1
  411. package/lib/module/services/HapticsService.js +1 -1
  412. package/lib/module/services/ScoringService.js +1 -1
  413. package/lib/module/services/SfxSources.js +1 -0
  414. package/lib/module/services/SoundsService.js +1 -1
  415. package/lib/module/services/ThemeService.js +1 -0
  416. package/lib/module/services/UtilsService.js +1 -1
  417. package/lib/module/services/index.js +1 -1
  418. package/lib/typescript/src/games/arrows/Arrows.d.ts +1 -3
  419. package/lib/typescript/src/games/arrows/ArrowsConstants.d.ts +48 -32
  420. package/lib/typescript/src/games/arrows/ArrowsGame.d.ts +60 -0
  421. package/lib/typescript/src/games/arrows/ArrowsScene.d.ts +67 -0
  422. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +1 -3
  423. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +39 -131
  424. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterGame.d.ts +57 -0
  425. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterPhysics.d.ts +16 -0
  426. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterScene.d.ts +31 -0
  427. package/lib/typescript/src/games/bike-racing/BikeMeshes.d.ts +14 -0
  428. package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +2 -1
  429. package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +38 -29
  430. package/lib/typescript/src/games/bike-racing/BikeRacingGame.d.ts +104 -0
  431. package/lib/typescript/src/games/bike-racing/BikeRacingScene.d.ts +25 -0
  432. package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +1 -3
  433. package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +48 -30
  434. package/lib/typescript/src/games/block-blast/BlockBlastGame.d.ts +77 -0
  435. package/lib/typescript/src/games/block-blast/BlockBlastScene.d.ts +36 -0
  436. package/lib/typescript/src/games/block-breaker/BlockBreaker.d.ts +1 -3
  437. package/lib/typescript/src/games/block-breaker/BlockBreakerConstants.d.ts +88 -35
  438. package/lib/typescript/src/games/block-breaker/BlockBreakerGame.d.ts +82 -0
  439. package/lib/typescript/src/games/block-breaker/BlockBreakerScene.d.ts +48 -0
  440. package/lib/typescript/src/games/bluk/Bluk.d.ts +1 -3
  441. package/lib/typescript/src/games/bluk/BlukConstants.d.ts +65 -54
  442. package/lib/typescript/src/games/bluk/BlukGame.d.ts +65 -0
  443. package/lib/typescript/src/games/bluk/BlukRules.d.ts +51 -0
  444. package/lib/typescript/src/games/bluk/BlukScene.d.ts +54 -0
  445. package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +1 -3
  446. package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +56 -24
  447. package/lib/typescript/src/games/bubble-shooter/BubbleShooterGame.d.ts +70 -0
  448. package/lib/typescript/src/games/bubble-shooter/BubbleShooterScene.d.ts +26 -0
  449. package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +1 -3
  450. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +63 -32
  451. package/lib/typescript/src/games/candy-crush/CandyCrushGame.d.ts +65 -0
  452. package/lib/typescript/src/games/candy-crush/CandyCrushScene.d.ts +28 -0
  453. package/lib/typescript/src/games/car-racing/CarMeshes.d.ts +44 -0
  454. package/lib/typescript/src/games/car-racing/CarRacing.d.ts +2 -1
  455. package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +60 -29
  456. package/lib/typescript/src/games/car-racing/CarRacingFacade.d.ts +5 -0
  457. package/lib/typescript/src/games/car-racing/CarRacingGame.d.ts +96 -0
  458. package/lib/typescript/src/games/car-racing/CarRacingScene.d.ts +97 -0
  459. package/lib/typescript/src/games/car-racing/CarRacingScenery.d.ts +22 -0
  460. package/lib/typescript/src/games/chameleon-run/ChameleonRun.d.ts +1 -3
  461. package/lib/typescript/src/games/chameleon-run/ChameleonRunBackdrop.d.ts +14 -0
  462. package/lib/typescript/src/games/chameleon-run/ChameleonRunConstants.d.ts +44 -42
  463. package/lib/typescript/src/games/chameleon-run/ChameleonRunGame.d.ts +60 -0
  464. package/lib/typescript/src/games/chameleon-run/ChameleonRunMeshes.d.ts +20 -0
  465. package/lib/typescript/src/games/chameleon-run/ChameleonRunRules.d.ts +52 -0
  466. package/lib/typescript/src/games/chameleon-run/ChameleonRunScene.d.ts +44 -0
  467. package/lib/typescript/src/games/checkers/Checkers.d.ts +1 -3
  468. package/lib/typescript/src/games/checkers/CheckersAI.d.ts +11 -0
  469. package/lib/typescript/src/games/checkers/CheckersConstants.d.ts +32 -72
  470. package/lib/typescript/src/games/checkers/CheckersGame.d.ts +56 -0
  471. package/lib/typescript/src/games/checkers/CheckersRules.d.ts +48 -0
  472. package/lib/typescript/src/games/checkers/CheckersScene.d.ts +41 -0
  473. package/lib/typescript/src/games/color-switch/ColorSwitch.d.ts +1 -3
  474. package/lib/typescript/src/games/color-switch/ColorSwitchConstants.d.ts +27 -31
  475. package/lib/typescript/src/games/color-switch/ColorSwitchGame.d.ts +61 -0
  476. package/lib/typescript/src/games/color-switch/ColorSwitchScene.d.ts +43 -0
  477. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts +1 -3
  478. package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts +37 -44
  479. package/lib/typescript/src/games/colors-sort/ColorsSortGame.d.ts +41 -0
  480. package/lib/typescript/src/games/colors-sort/ColorsSortScene.d.ts +33 -0
  481. package/lib/typescript/src/games/connect-em-all/ConnectEmAll.d.ts +1 -3
  482. package/lib/typescript/src/games/connect-em-all/ConnectEmAllConstants.d.ts +43 -17
  483. package/lib/typescript/src/games/connect-em-all/ConnectEmAllGame.d.ts +54 -0
  484. package/lib/typescript/src/games/connect-em-all/ConnectEmAllScene.d.ts +49 -0
  485. package/lib/typescript/src/games/crossy-road/CrossyRoad.d.ts +1 -3
  486. package/lib/typescript/src/games/crossy-road/CrossyRoadCamera.d.ts +14 -0
  487. package/lib/typescript/src/games/crossy-road/CrossyRoadConstants.d.ts +82 -50
  488. package/lib/typescript/src/games/crossy-road/CrossyRoadGame.d.ts +64 -0
  489. package/lib/typescript/src/games/crossy-road/CrossyRoadMeshes.d.ts +16 -0
  490. package/lib/typescript/src/games/crossy-road/CrossyRoadPerson.d.ts +10 -0
  491. package/lib/typescript/src/games/crossy-road/CrossyRoadRules.d.ts +36 -0
  492. package/lib/typescript/src/games/crossy-road/CrossyRoadScene.d.ts +38 -0
  493. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +1 -3
  494. package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +48 -72
  495. package/lib/typescript/src/games/dino-jump/DinoJumpGame.d.ts +60 -0
  496. package/lib/typescript/src/games/dino-jump/DinoJumpScene.d.ts +35 -0
  497. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxes.d.ts +1 -3
  498. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesConstants.d.ts +31 -36
  499. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesGame.d.ts +44 -0
  500. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesScene.d.ts +31 -0
  501. package/lib/typescript/src/games/falling-sticks/FallingSticks.d.ts +1 -3
  502. package/lib/typescript/src/games/falling-sticks/FallingSticksConstants.d.ts +31 -43
  503. package/lib/typescript/src/games/falling-sticks/FallingSticksGame.d.ts +42 -0
  504. package/lib/typescript/src/games/falling-sticks/FallingSticksRules.d.ts +36 -0
  505. package/lib/typescript/src/games/falling-sticks/FallingSticksScene.d.ts +26 -0
  506. package/lib/typescript/src/games/find-different-number/FindDifferentNumber.d.ts +1 -3
  507. package/lib/typescript/src/games/find-different-number/FindDifferentNumberConstants.d.ts +33 -29
  508. package/lib/typescript/src/games/find-different-number/FindDifferentNumberGame.d.ts +43 -0
  509. package/lib/typescript/src/games/find-different-number/FindDifferentNumberRules.d.ts +8 -0
  510. package/lib/typescript/src/games/find-different-number/FindDifferentNumberScene.d.ts +31 -0
  511. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +1 -3
  512. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +39 -35
  513. package/lib/typescript/src/games/flappy-bird/FlappyBirdGame.d.ts +66 -0
  514. package/lib/typescript/src/games/flappy-bird/FlappyBirdScene.d.ts +41 -0
  515. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +1 -3
  516. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +71 -44
  517. package/lib/typescript/src/games/fruit-merger/FruitMergerGame.d.ts +63 -0
  518. package/lib/typescript/src/games/fruit-merger/FruitMergerRules.d.ts +39 -0
  519. package/lib/typescript/src/games/fruit-merger/FruitMergerScene.d.ts +49 -0
  520. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +1 -3
  521. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +51 -76
  522. package/lib/typescript/src/games/fruit-ninja/FruitNinjaGame.d.ts +76 -0
  523. package/lib/typescript/src/games/fruit-ninja/FruitNinjaScene.d.ts +52 -0
  524. package/lib/typescript/src/games/fruit-ninja/FruitNinjaWorld.d.ts +8 -0
  525. package/lib/typescript/src/games/game-2048/Game2048.d.ts +1 -3
  526. package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +25 -120
  527. package/lib/typescript/src/games/game-2048/Game2048Game.d.ts +45 -0
  528. package/lib/typescript/src/games/game-2048/Game2048Rules.d.ts +32 -0
  529. package/lib/typescript/src/games/game-2048/Game2048Scene.d.ts +34 -0
  530. package/lib/typescript/src/games/knife-hit/KnifeHit.d.ts +1 -3
  531. package/lib/typescript/src/games/knife-hit/KnifeHitConstants.d.ts +41 -49
  532. package/lib/typescript/src/games/knife-hit/KnifeHitGame.d.ts +49 -0
  533. package/lib/typescript/src/games/knife-hit/KnifeHitScene.d.ts +37 -0
  534. package/lib/typescript/src/games/ludo-king/LudoKing.d.ts +1 -3
  535. package/lib/typescript/src/games/ludo-king/LudoKingConstants.d.ts +50 -28
  536. package/lib/typescript/src/games/ludo-king/LudoKingGame.d.ts +40 -0
  537. package/lib/typescript/src/games/ludo-king/LudoKingRules.d.ts +42 -0
  538. package/lib/typescript/src/games/ludo-king/LudoKingScene.d.ts +53 -0
  539. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +1 -3
  540. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +34 -10
  541. package/lib/typescript/src/games/maze-runner/MazeRunnerGame.d.ts +44 -0
  542. package/lib/typescript/src/games/maze-runner/MazeRunnerRules.d.ts +34 -0
  543. package/lib/typescript/src/games/maze-runner/MazeRunnerScene.d.ts +29 -0
  544. package/lib/typescript/src/games/memory-match/MemoryMatch.d.ts +1 -3
  545. package/lib/typescript/src/games/memory-match/MemoryMatchConstants.d.ts +42 -42
  546. package/lib/typescript/src/games/memory-match/MemoryMatchGame.d.ts +53 -0
  547. package/lib/typescript/src/games/memory-match/MemoryMatchRules.d.ts +14 -0
  548. package/lib/typescript/src/games/memory-match/MemoryMatchScene.d.ts +35 -0
  549. package/lib/typescript/src/games/mine-sweeper/MineSweeper.d.ts +1 -3
  550. package/lib/typescript/src/games/mine-sweeper/MineSweeperConstants.d.ts +43 -82
  551. package/lib/typescript/src/games/mine-sweeper/MineSweeperGame.d.ts +59 -0
  552. package/lib/typescript/src/games/mine-sweeper/MineSweeperRules.d.ts +18 -0
  553. package/lib/typescript/src/games/mine-sweeper/MineSweeperScene.d.ts +23 -0
  554. package/lib/typescript/src/games/mob-control/MobControl.d.ts +1 -3
  555. package/lib/typescript/src/games/mob-control/MobControlConstants.d.ts +99 -85
  556. package/lib/typescript/src/games/mob-control/MobControlGame.d.ts +45 -0
  557. package/lib/typescript/src/games/mob-control/MobControlMeshes.d.ts +2 -0
  558. package/lib/typescript/src/games/mob-control/MobControlRenderer.d.ts +20 -0
  559. package/lib/typescript/src/games/mob-control/MobControlRules.d.ts +68 -0
  560. package/lib/typescript/src/games/mob-control/MobControlScene.d.ts +58 -0
  561. package/lib/typescript/src/games/number-search/NumberSearch.d.ts +1 -3
  562. package/lib/typescript/src/games/number-search/NumberSearchNumbers.d.ts +1 -0
  563. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBolts.d.ts +1 -3
  564. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsConstants.d.ts +27 -79
  565. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsGame.d.ts +56 -0
  566. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsRules.d.ts +65 -0
  567. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsScene.d.ts +48 -0
  568. package/lib/typescript/src/games/pac-man/PacMan.d.ts +1 -3
  569. package/lib/typescript/src/games/pac-man/PacManConstants.d.ts +66 -106
  570. package/lib/typescript/src/games/pac-man/PacManGame.d.ts +48 -0
  571. package/lib/typescript/src/games/pac-man/PacManRules.d.ts +52 -0
  572. package/lib/typescript/src/games/pac-man/PacManScene.d.ts +44 -0
  573. package/lib/typescript/src/games/paper-io/PaperIo.d.ts +1 -3
  574. package/lib/typescript/src/games/paper-io/PaperIoConstants.d.ts +60 -40
  575. package/lib/typescript/src/games/paper-io/PaperIoGame.d.ts +49 -0
  576. package/lib/typescript/src/games/paper-io/PaperIoMeshes.d.ts +13 -0
  577. package/lib/typescript/src/games/paper-io/PaperIoRules.d.ts +71 -0
  578. package/lib/typescript/src/games/paper-io/PaperIoScene.d.ts +39 -0
  579. package/lib/typescript/src/games/penguin-run/PenguinMeshes.d.ts +9 -0
  580. package/lib/typescript/src/games/penguin-run/PenguinModel.d.ts +42 -0
  581. package/lib/typescript/src/games/penguin-run/PenguinRun.d.ts +1 -0
  582. package/lib/typescript/src/games/penguin-run/PenguinRunConstants.d.ts +58 -0
  583. package/lib/typescript/src/games/penguin-run/PenguinRunGame.d.ts +64 -0
  584. package/lib/typescript/src/games/penguin-run/PenguinRunScene.d.ts +65 -0
  585. package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +1 -3
  586. package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +23 -45
  587. package/lib/typescript/src/games/perfect-circle/PerfectCircleGame.d.ts +40 -0
  588. package/lib/typescript/src/games/perfect-circle/PerfectCircleRules.d.ts +55 -0
  589. package/lib/typescript/src/games/perfect-circle/PerfectCircleScene.d.ts +32 -0
  590. package/lib/typescript/src/games/pipe-connect/PipeConnect.d.ts +1 -3
  591. package/lib/typescript/src/games/pipe-connect/PipeConnectConstants.d.ts +36 -32
  592. package/lib/typescript/src/games/pipe-connect/PipeConnectGame.d.ts +40 -0
  593. package/lib/typescript/src/games/pipe-connect/PipeConnectRules.d.ts +16 -0
  594. package/lib/typescript/src/games/pipe-connect/PipeConnectScene.d.ts +28 -0
  595. package/lib/typescript/src/games/play-with-tua/PlayWithTua.d.ts +2 -0
  596. package/lib/typescript/src/games/play-with-tua/PlayWithTuaConstants.d.ts +64 -0
  597. package/lib/typescript/src/games/play-with-tua/PlayWithTuaGame.d.ts +34 -0
  598. package/lib/typescript/src/games/play-with-tua/PlayWithTuaModel.d.ts +9 -0
  599. package/lib/typescript/src/games/play-with-tua/PlayWithTuaScene.d.ts +13 -0
  600. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +1 -4
  601. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +25 -36
  602. package/lib/typescript/src/games/popit-fidget/PopitFidgetGame.d.ts +37 -0
  603. package/lib/typescript/src/games/popit-fidget/PopitFidgetScene.d.ts +19 -0
  604. package/lib/typescript/src/games/reversi/Reversi.d.ts +1 -3
  605. package/lib/typescript/src/games/reversi/ReversiConstants.d.ts +31 -62
  606. package/lib/typescript/src/games/reversi/ReversiGame.d.ts +54 -0
  607. package/lib/typescript/src/games/reversi/ReversiRules.d.ts +22 -0
  608. package/lib/typescript/src/games/reversi/ReversiScene.d.ts +27 -0
  609. package/lib/typescript/src/games/search-grid/SearchGrid.d.ts +20 -0
  610. package/lib/typescript/src/games/search-grid/SearchGridConstants.d.ts +60 -0
  611. package/lib/typescript/src/games/search-grid/SearchGridGame.d.ts +52 -0
  612. package/lib/typescript/src/games/search-grid/SearchGridScene.d.ts +43 -0
  613. package/lib/typescript/src/games/shared/BackdropCard.d.ts +2 -0
  614. package/lib/typescript/src/games/shared/EngineBackdrop.d.ts +19 -0
  615. package/lib/typescript/src/games/shared/EngineBlasts.d.ts +26 -0
  616. package/lib/typescript/src/games/shared/EngineBlocks.d.ts +19 -0
  617. package/lib/typescript/src/games/shared/EngineControlText.d.ts +2 -0
  618. package/lib/typescript/src/games/shared/EngineDice.d.ts +24 -0
  619. package/lib/typescript/src/games/shared/EngineFootprint.d.ts +17 -0
  620. package/lib/typescript/src/games/shared/EngineFruits.d.ts +27 -0
  621. package/lib/typescript/src/games/shared/EngineGameLoader.d.ts +4 -0
  622. package/lib/typescript/src/games/shared/EngineGameScreen.d.ts +48 -0
  623. package/lib/typescript/src/games/shared/EngineGameWidth.d.ts +3 -0
  624. package/lib/typescript/src/games/shared/EngineGameWidth.web.d.ts +3 -0
  625. package/lib/typescript/src/games/shared/EngineGlyphs.d.ts +15 -0
  626. package/lib/typescript/src/games/shared/EngineHud.d.ts +138 -0
  627. package/lib/typescript/src/games/shared/EngineLoading.d.ts +77 -0
  628. package/lib/typescript/src/games/shared/EngineMeadow.d.ts +90 -0
  629. package/lib/typescript/src/games/shared/EngineMeshCache.d.ts +3 -0
  630. package/lib/typescript/src/games/shared/EngineMeshes.d.ts +3 -0
  631. package/lib/typescript/src/games/shared/EngineRacingChase.d.ts +11 -0
  632. package/lib/typescript/src/games/shared/EngineRacingHandling.d.ts +15 -0
  633. package/lib/typescript/src/games/shared/EngineReadyContext.d.ts +2 -0
  634. package/lib/typescript/src/games/shared/EngineTilt.d.ts +19 -0
  635. package/lib/typescript/src/games/shared/EngineTouchSurface.d.ts +20 -0
  636. package/lib/typescript/src/games/shared/EngineUtils.d.ts +18 -0
  637. package/lib/typescript/src/games/shared/GameActivity.d.ts +3 -0
  638. package/lib/typescript/src/games/shared/GameLoading.d.ts +14 -0
  639. package/lib/typescript/src/games/shared/GameLoadingTransition.d.ts +9 -0
  640. package/lib/typescript/src/games/shared/ProceduralCacheVersion.d.ts +1 -0
  641. package/lib/typescript/src/games/shared/useEngineGame.d.ts +69 -0
  642. package/lib/typescript/src/games/shared/useGameResource.d.ts +2 -0
  643. package/lib/typescript/src/games/shared/useLiveState.d.ts +4 -0
  644. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +1 -3
  645. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +32 -40
  646. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersGame.d.ts +48 -0
  647. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersRules.d.ts +22 -0
  648. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersScene.d.ts +30 -0
  649. package/lib/typescript/src/games/snake-3d/Snake3D.d.ts +1 -3
  650. package/lib/typescript/src/games/snake-3d/Snake3DConstants.d.ts +31 -68
  651. package/lib/typescript/src/games/snake-3d/Snake3DGame.d.ts +42 -0
  652. package/lib/typescript/src/games/snake-3d/Snake3DMotion.d.ts +3 -0
  653. package/lib/typescript/src/games/snake-3d/Snake3DRules.d.ts +42 -0
  654. package/lib/typescript/src/games/snake-3d/Snake3DScene.d.ts +35 -0
  655. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLadders.d.ts +1 -3
  656. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersConstants.d.ts +58 -50
  657. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersGame.d.ts +45 -0
  658. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersScene.d.ts +50 -0
  659. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +1 -3
  660. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +33 -23
  661. package/lib/typescript/src/games/space-fighter/SpaceFighterGame.d.ts +58 -0
  662. package/lib/typescript/src/games/space-fighter/SpaceFighterScene.d.ts +51 -0
  663. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaire.d.ts +1 -3
  664. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireConstants.d.ts +52 -35
  665. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireGame.d.ts +67 -0
  666. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireRules.d.ts +39 -0
  667. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireScene.d.ts +60 -0
  668. package/lib/typescript/src/games/stack-tower/StackTower.d.ts +1 -3
  669. package/lib/typescript/src/games/stack-tower/StackTowerConstants.d.ts +31 -23
  670. package/lib/typescript/src/games/stack-tower/StackTowerGame.d.ts +58 -0
  671. package/lib/typescript/src/games/stack-tower/StackTowerScene.d.ts +27 -0
  672. package/lib/typescript/src/games/sudoku/Sudoku.d.ts +1 -3
  673. package/lib/typescript/src/games/sudoku/SudokuConstants.d.ts +50 -55
  674. package/lib/typescript/src/games/sudoku/SudokuGame.d.ts +56 -0
  675. package/lib/typescript/src/games/sudoku/SudokuRules.d.ts +23 -0
  676. package/lib/typescript/src/games/sudoku/SudokuScene.d.ts +44 -0
  677. package/lib/typescript/src/games/tangram/Tangram.d.ts +1 -3
  678. package/lib/typescript/src/games/tangram/TangramConstants.d.ts +33 -52
  679. package/lib/typescript/src/games/tangram/TangramGame.d.ts +68 -0
  680. package/lib/typescript/src/games/tangram/TangramRules.d.ts +61 -0
  681. package/lib/typescript/src/games/tangram/TangramScene.d.ts +42 -0
  682. package/lib/typescript/src/games/tank-1990/Tank1990.d.ts +1 -3
  683. package/lib/typescript/src/games/tank-1990/Tank1990Constants.d.ts +44 -127
  684. package/lib/typescript/src/games/tank-1990/Tank1990Game.d.ts +50 -0
  685. package/lib/typescript/src/games/tank-1990/Tank1990Rules.d.ts +67 -0
  686. package/lib/typescript/src/games/tank-1990/Tank1990Scene.d.ts +38 -0
  687. package/lib/typescript/src/games/tic-tac-toe/TicTacToe.d.ts +1 -3
  688. package/lib/typescript/src/games/tic-tac-toe/TicTacToeConstants.d.ts +35 -72
  689. package/lib/typescript/src/games/tic-tac-toe/TicTacToeGame.d.ts +54 -0
  690. package/lib/typescript/src/games/tic-tac-toe/TicTacToeRules.d.ts +10 -0
  691. package/lib/typescript/src/games/tic-tac-toe/TicTacToeScene.d.ts +26 -0
  692. package/lib/typescript/src/games/tile-home/TileHome.d.ts +1 -3
  693. package/lib/typescript/src/games/tile-home/TileHomeConstants.d.ts +72 -70
  694. package/lib/typescript/src/games/tile-home/TileHomeGame.d.ts +72 -0
  695. package/lib/typescript/src/games/tile-home/TileHomeScene.d.ts +28 -0
  696. package/lib/typescript/src/games/treasure-hunt/TreasureHunt.d.ts +3 -0
  697. package/lib/typescript/src/games/treasure-hunt/TreasureHuntConstants.d.ts +144 -0
  698. package/lib/typescript/src/games/treasure-hunt/TreasureHuntControls.d.ts +75 -0
  699. package/lib/typescript/src/games/treasure-hunt/TreasureHuntGame.d.ts +41 -0
  700. package/lib/typescript/src/games/treasure-hunt/TreasureHuntMeshes.d.ts +26 -0
  701. package/lib/typescript/src/games/treasure-hunt/TreasureHuntModel.d.ts +57 -0
  702. package/lib/typescript/src/games/treasure-hunt/TreasureHuntRules.d.ts +198 -0
  703. package/lib/typescript/src/games/treasure-hunt/TreasureHuntScene.d.ts +40 -0
  704. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +1 -3
  705. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +35 -45
  706. package/lib/typescript/src/games/whack-a-mole/WhackAMoleGame.d.ts +51 -0
  707. package/lib/typescript/src/games/whack-a-mole/WhackAMoleScene.d.ts +31 -0
  708. package/lib/typescript/src/games/word-search/WordSearch.d.ts +1 -3
  709. package/lib/typescript/src/games/word-search/WordSearchWords.d.ts +1 -0
  710. package/lib/typescript/src/helpers/GamePatternData.d.ts +46 -0
  711. package/lib/typescript/src/helpers/GameSettingsModal.d.ts +1 -1
  712. package/lib/typescript/src/helpers/GameTheme.d.ts +18 -0
  713. package/lib/typescript/src/helpers/IconPaths.d.ts +4 -0
  714. package/lib/typescript/src/helpers/index.d.ts +1 -19
  715. package/lib/typescript/src/index.d.ts +3 -0
  716. package/lib/typescript/src/services/GameAssetLoader.d.ts +32 -0
  717. package/lib/typescript/src/services/GameAssets.d.ts +11 -0
  718. package/lib/typescript/src/services/GameLoaders.d.ts +18 -0
  719. package/lib/typescript/src/services/GamesConstants.d.ts +11 -0
  720. package/lib/typescript/src/services/GamesMetadata.d.ts +2 -0
  721. package/lib/typescript/src/services/HapticsService.d.ts +1 -1
  722. package/lib/typescript/src/services/SfxSources.d.ts +79 -0
  723. package/lib/typescript/src/services/SoundsService.d.ts +487 -1566
  724. package/lib/typescript/src/services/ThemeService.d.ts +117 -0
  725. package/lib/typescript/src/services/UtilsService.d.ts +20 -2
  726. package/lib/typescript/src/services/index.d.ts +3 -0
  727. package/lib/web/assets/005ea2045b17-explorer.glb +0 -0
  728. package/lib/web/assets/01e2f0a0bbf6-hurt.wav +0 -0
  729. package/lib/web/assets/01fc0ecf658c-explorer-atlas.png +0 -0
  730. package/lib/web/assets/029329b2c7c0-asphalt.png +0 -0
  731. package/lib/web/assets/0376bda32be3-robot.wav +0 -0
  732. package/lib/web/assets/0719fb0bb38e-soft_glow.png +0 -0
  733. package/lib/web/assets/0b21278bffba-boing.wav +0 -0
  734. package/lib/web/assets/1333c9d1273c-flip_disc.wav +0 -0
  735. package/lib/web/assets/15785f62ee5f-time_up.wav +0 -0
  736. package/lib/web/assets/177f00502e08-bonus.wav +0 -0
  737. package/lib/web/assets/19e47dcfda1f-pling.wav +0 -0
  738. package/lib/web/assets/1a677e0f7f6c-laugh.wav +0 -0
  739. package/lib/web/assets/1ad2914478b1-eat.wav +0 -0
  740. package/lib/web/assets/1b0d703ddd1a-dance.wav +0 -0
  741. package/lib/web/assets/1e4330fddd74-chime.wav +0 -0
  742. package/lib/web/assets/2432a97b0af1-cannon.wav +0 -0
  743. package/lib/web/assets/2574370d6aa0-blocked.wav +0 -0
  744. package/lib/web/assets/2699065037ad-select.wav +0 -0
  745. package/lib/web/assets/28d30f53ad73-ladder.wav +0 -0
  746. package/lib/web/assets/2c1ec05270b2-point.wav +0 -0
  747. package/lib/web/assets/2e1dd99a0213-tick.wav +0 -0
  748. package/lib/web/assets/3084575cecdb-card_flip.wav +0 -0
  749. package/lib/web/assets/308bc31b6af5-engine.wav +0 -0
  750. package/lib/web/assets/336d63b739b5-combo.wav +0 -0
  751. package/lib/web/assets/3a369e2596e4-clash.wav +0 -0
  752. package/lib/web/assets/3a816e20212f-capture.wav +0 -0
  753. package/lib/web/assets/40240217810a-nitro.wav +0 -0
  754. package/lib/web/assets/46edaa54d1ea-crunch.wav +0 -0
  755. package/lib/web/assets/501994226995-coin.wav +0 -0
  756. package/lib/web/assets/5525d7f6a4b8-rotate.wav +0 -0
  757. package/lib/web/assets/5e816e1f0929-dice_roll.wav +0 -0
  758. package/lib/web/assets/60e2dec3cf41-deselect.wav +0 -0
  759. package/lib/web/assets/6ab86ea29e5c-six.wav +0 -0
  760. package/lib/web/assets/6da3b101926d-merge.wav +0 -0
  761. package/lib/web/assets/6e686dea513c-bark.jpg +0 -0
  762. package/lib/web/assets/6ff9a6a13714-limestone.jpg +0 -0
  763. package/lib/web/assets/735c4a1cd22e-invalid.wav +0 -0
  764. package/lib/web/assets/73f75c35ff5d-snake.wav +0 -0
  765. package/lib/web/assets/7506e3efe264-catch.wav +0 -0
  766. package/lib/web/assets/76493a2ada2d-ad_bolt.png +0 -0
  767. package/lib/web/assets/793abe620201-card_place.wav +0 -0
  768. package/lib/web/assets/7da09c57f52d-facade.png +0 -0
  769. package/lib/web/assets/7e1a902176f6-pine.png +0 -0
  770. package/lib/web/assets/7eb943b85c21-play-with-tua.glb +0 -0
  771. package/lib/web/assets/837d43c06dba-ad_bubbles.png +0 -0
  772. package/lib/web/assets/84f1a7dfa368-game_over.wav +0 -0
  773. package/lib/web/assets/850e26ce3b0a-flap.wav +0 -0
  774. package/lib/web/assets/854b31683cb2-draw.wav +0 -0
  775. package/lib/web/assets/8616150393b7-error.wav +0 -0
  776. package/lib/web/assets/87cc6d503ec6-river.jpg +0 -0
  777. package/lib/web/assets/88755845922c-hop.wav +0 -0
  778. package/lib/web/assets/8ec8f469492d-chomp_alt.wav +0 -0
  779. package/lib/web/assets/8f17f89b138c-pew.wav +0 -0
  780. package/lib/web/assets/9210a24472d1-place.wav +0 -0
  781. package/lib/web/assets/930d833ebf89-splash.wav +0 -0
  782. package/lib/web/assets/970f7c59265d-swoosh.wav +0 -0
  783. package/lib/web/assets/9900b8d1b6ad-flag.wav +0 -0
  784. package/lib/web/assets/9ab04403898b-clang.wav +0 -0
  785. package/lib/web/assets/9d8b97a10d45-drop.wav +0 -0
  786. package/lib/web/assets/9d9c02ddc7ed-boom.wav +0 -0
  787. package/lib/web/assets/9e1b5114d56d-pop_soft.wav +0 -0
  788. package/lib/web/assets/a01f22d6dbb3-thud.wav +0 -0
  789. package/lib/web/assets/a44a1cf1a1a8-bump.wav +0 -0
  790. package/lib/web/assets/a76940a48c68-hit.wav +0 -0
  791. package/lib/web/assets/a98ddb724460-leaves.png +0 -0
  792. package/lib/web/assets/aa0960e8bee6-footstep_run.wav +0 -0
  793. package/lib/web/assets/aa570c9d3e15-star.wav +0 -0
  794. package/lib/web/assets/aacb999f3c49-tock.wav +0 -0
  795. package/lib/web/assets/aae0c16c5e89-reveal.wav +0 -0
  796. package/lib/web/assets/ab37cd128509-click.wav +0 -0
  797. package/lib/web/assets/b0bc66f49005-warning.wav +0 -0
  798. package/lib/web/assets/b1edd756ac43-zap.wav +0 -0
  799. package/lib/web/assets/b3894545cf71-slice.wav +0 -0
  800. package/lib/web/assets/b3c6225d055a-meadow.jpg +0 -0
  801. package/lib/web/assets/b60ca65cdfcb-gate.wav +0 -0
  802. package/lib/web/assets/b8900bb2c5c7-win.wav +0 -0
  803. package/lib/web/assets/baff6feda846-lose.wav +0 -0
  804. package/lib/web/assets/bed31305d60d-ad_chevrons.png +0 -0
  805. package/lib/web/assets/c26f4a624e7d-shuffle.wav +0 -0
  806. package/lib/web/assets/c3a9edfad195-die.wav +0 -0
  807. package/lib/web/assets/c4aa9d773f2a-footstep_walk.wav +0 -0
  808. package/lib/web/assets/c5ab3ff0003f-crash.wav +0 -0
  809. package/lib/web/assets/c5eb07deddd4-start.wav +0 -0
  810. package/lib/web/assets/c6c58d9ae452-pop.wav +0 -0
  811. package/lib/web/assets/cea48c3cd9c7-balloon_pop.wav +0 -0
  812. package/lib/web/assets/d15591767778-tap.wav +0 -0
  813. package/lib/web/assets/d1781a52234f-slide.wav +0 -0
  814. package/lib/web/assets/d3bf2d9f793b-snap.wav +0 -0
  815. package/lib/web/assets/d8f59ebd3537-jump.wav +0 -0
  816. package/lib/web/assets/dafea2f28854-power_up.wav +0 -0
  817. package/lib/web/assets/e2e7f5ae2d1b-whoosh.wav +0 -0
  818. package/lib/web/assets/e2f90a23e1bd-chomp.wav +0 -0
  819. package/lib/web/assets/e454e56df89a-clack.wav +0 -0
  820. package/lib/web/assets/e8cbc2b88bc4-Inter-SemiBold.ttf +0 -0
  821. package/lib/web/assets/ed6496b891fc-land.wav +0 -0
  822. package/lib/web/assets/f21920200a81-thunk.wav +0 -0
  823. package/lib/web/assets/f753b43be89d-whack.wav +0 -0
  824. package/lib/web/assets/f798c4b5cf4d-miss.wav +0 -0
  825. package/lib/web/assets/fbe299716916-grass.png +0 -0
  826. package/lib/web/chunk-52ez2s9z.js +15 -0
  827. package/lib/web/chunk-8675t224.js +1 -0
  828. package/lib/web/index.js +2 -0
  829. package/lib/web/package.json +1 -0
  830. package/lib/web/services.js +2 -0
  831. package/package.json +94 -73
  832. package/src/assets/fonts/Inter-SemiBold.ttf +0 -0
  833. package/src/assets/models/explorer/explorer.glb +0 -0
  834. package/src/assets/models/explorer/params.json +51 -0
  835. package/src/assets/models/explorer/source.json +222 -0
  836. package/src/assets/models/play-with-tua/play-with-tua.glb +0 -0
  837. package/src/assets/models/play-with-tua/sources.json +141 -0
  838. package/src/assets/sfx/balloon_pop.wav +0 -0
  839. package/src/assets/sfx/blocked.wav +0 -0
  840. package/src/assets/sfx/boing.wav +0 -0
  841. package/src/assets/sfx/bonus.wav +0 -0
  842. package/src/assets/sfx/boom.wav +0 -0
  843. package/src/assets/sfx/bump.wav +0 -0
  844. package/src/assets/sfx/cannon.wav +0 -0
  845. package/src/assets/sfx/capture.wav +0 -0
  846. package/src/assets/sfx/card_flip.wav +0 -0
  847. package/src/assets/sfx/card_place.wav +0 -0
  848. package/src/assets/sfx/catch.wav +0 -0
  849. package/src/assets/sfx/chime.wav +0 -0
  850. package/src/assets/sfx/chomp.wav +0 -0
  851. package/src/assets/sfx/chomp_alt.wav +0 -0
  852. package/src/assets/sfx/clack.wav +0 -0
  853. package/src/assets/sfx/clang.wav +0 -0
  854. package/src/assets/sfx/clash.wav +0 -0
  855. package/src/assets/sfx/click.wav +0 -0
  856. package/src/assets/sfx/coin.wav +0 -0
  857. package/src/assets/sfx/combo.wav +0 -0
  858. package/src/assets/sfx/crash.wav +0 -0
  859. package/src/assets/sfx/crunch.wav +0 -0
  860. package/src/assets/sfx/dance.wav +0 -0
  861. package/src/assets/sfx/deselect.wav +0 -0
  862. package/src/assets/sfx/dice_roll.wav +0 -0
  863. package/src/assets/sfx/die.wav +0 -0
  864. package/src/assets/sfx/draw.wav +0 -0
  865. package/src/assets/sfx/drop.wav +0 -0
  866. package/src/assets/sfx/eat.wav +0 -0
  867. package/src/assets/sfx/engine.wav +0 -0
  868. package/src/assets/sfx/error.wav +0 -0
  869. package/src/assets/sfx/flag.wav +0 -0
  870. package/src/assets/sfx/flap.wav +0 -0
  871. package/src/assets/sfx/flip_disc.wav +0 -0
  872. package/src/assets/sfx/footstep_run.wav +0 -0
  873. package/src/assets/sfx/footstep_walk.wav +0 -0
  874. package/src/assets/sfx/game_over.wav +0 -0
  875. package/src/assets/sfx/gate.wav +0 -0
  876. package/src/assets/sfx/hit.wav +0 -0
  877. package/src/assets/sfx/hop.wav +0 -0
  878. package/src/assets/sfx/hurt.wav +0 -0
  879. package/src/assets/sfx/invalid.wav +0 -0
  880. package/src/assets/sfx/jump.wav +0 -0
  881. package/src/assets/sfx/ladder.wav +0 -0
  882. package/src/assets/sfx/land.wav +0 -0
  883. package/src/assets/sfx/laugh.wav +0 -0
  884. package/src/assets/sfx/lose.wav +0 -0
  885. package/src/assets/sfx/merge.wav +0 -0
  886. package/src/assets/sfx/miss.wav +0 -0
  887. package/src/assets/sfx/nitro.wav +0 -0
  888. package/src/assets/sfx/pew.wav +0 -0
  889. package/src/assets/sfx/place.wav +0 -0
  890. package/src/assets/sfx/pling.wav +0 -0
  891. package/src/assets/sfx/point.wav +0 -0
  892. package/src/assets/sfx/pop.wav +0 -0
  893. package/src/assets/sfx/pop_soft.wav +0 -0
  894. package/src/assets/sfx/power_up.wav +0 -0
  895. package/src/assets/sfx/reveal.wav +0 -0
  896. package/src/assets/sfx/robot.wav +0 -0
  897. package/src/assets/sfx/rotate.wav +0 -0
  898. package/src/assets/sfx/run_steps.wav +0 -0
  899. package/src/assets/sfx/select.wav +0 -0
  900. package/src/assets/sfx/shuffle.wav +0 -0
  901. package/src/assets/sfx/six.wav +0 -0
  902. package/src/assets/sfx/slice.wav +0 -0
  903. package/src/assets/sfx/slide.wav +0 -0
  904. package/src/assets/sfx/snake.wav +0 -0
  905. package/src/assets/sfx/snap.wav +0 -0
  906. package/src/assets/sfx/splash.wav +0 -0
  907. package/src/assets/sfx/star.wav +0 -0
  908. package/src/assets/sfx/start.wav +0 -0
  909. package/src/assets/sfx/swoosh.wav +0 -0
  910. package/src/assets/sfx/tap.wav +0 -0
  911. package/src/assets/sfx/thud.wav +0 -0
  912. package/src/assets/sfx/thunk.wav +0 -0
  913. package/src/assets/sfx/tick.wav +0 -0
  914. package/src/assets/sfx/time_up.wav +0 -0
  915. package/src/assets/sfx/tock.wav +0 -0
  916. package/src/assets/sfx/walk_steps.wav +0 -0
  917. package/src/assets/sfx/warning.wav +0 -0
  918. package/src/assets/sfx/whack.wav +0 -0
  919. package/src/assets/sfx/whoosh.wav +0 -0
  920. package/src/assets/sfx/win.wav +0 -0
  921. package/src/assets/sfx/zap.wav +0 -0
  922. package/src/assets/textures/ad_bolt.png +0 -0
  923. package/src/assets/textures/ad_bubbles.png +0 -0
  924. package/src/assets/textures/ad_chevrons.png +0 -0
  925. package/src/assets/textures/asphalt.png +0 -0
  926. package/src/assets/textures/bark.jpg +0 -0
  927. package/src/assets/textures/explorer-atlas.png +0 -0
  928. package/src/assets/textures/facade.png +0 -0
  929. package/src/assets/textures/grass.png +0 -0
  930. package/src/assets/textures/leaves.png +0 -0
  931. package/src/assets/textures/limestone.jpg +0 -0
  932. package/src/assets/textures/meadow.jpg +0 -0
  933. package/src/assets/textures/nature-sources.json +87 -0
  934. package/src/assets/textures/pine.png +0 -0
  935. package/src/assets/textures/river.jpg +0 -0
  936. package/src/assets/textures/soft_glow.png +0 -0
  937. package/src/games/arrows/Arrows.tsx +69 -0
  938. package/src/games/arrows/ArrowsConstants.ts +107 -0
  939. package/src/games/arrows/ArrowsGame.ts +735 -0
  940. package/src/games/arrows/ArrowsScene.ts +395 -0
  941. package/src/games/balloon-blaster/BalloonBlaster.tsx +75 -0
  942. package/src/games/balloon-blaster/BalloonBlasterConstants.ts +79 -0
  943. package/src/games/balloon-blaster/BalloonBlasterGame.ts +287 -0
  944. package/src/games/balloon-blaster/BalloonBlasterPhysics.ts +95 -0
  945. package/src/games/balloon-blaster/BalloonBlasterScene.ts +225 -0
  946. package/src/games/bike-racing/BikeMeshes.ts +273 -0
  947. package/src/games/bike-racing/BikeRacing.tsx +211 -0
  948. package/src/games/bike-racing/BikeRacingConstants.ts +103 -0
  949. package/src/games/bike-racing/BikeRacingGame.ts +557 -0
  950. package/src/games/bike-racing/BikeRacingScene.ts +119 -0
  951. package/src/games/block-blast/BlockBlast.tsx +73 -0
  952. package/src/games/block-blast/BlockBlastConstants.ts +179 -0
  953. package/src/games/block-blast/BlockBlastGame.ts +471 -0
  954. package/src/games/block-blast/BlockBlastScene.ts +156 -0
  955. package/src/games/block-breaker/BlockBreaker.tsx +79 -0
  956. package/src/games/block-breaker/BlockBreakerConstants.ts +139 -0
  957. package/src/games/block-breaker/BlockBreakerGame.ts +459 -0
  958. package/src/games/block-breaker/BlockBreakerScene.ts +257 -0
  959. package/src/games/bluk/Bluk.tsx +82 -0
  960. package/src/games/bluk/BlukConstants.ts +121 -0
  961. package/src/games/bluk/BlukGame.ts +323 -0
  962. package/src/games/bluk/BlukRules.ts +154 -0
  963. package/src/games/bluk/BlukScene.ts +514 -0
  964. package/src/games/bubble-shooter/BubbleShooter.tsx +76 -0
  965. package/src/games/bubble-shooter/BubbleShooterConstants.ts +103 -0
  966. package/src/games/bubble-shooter/BubbleShooterGame.ts +459 -0
  967. package/src/games/bubble-shooter/BubbleShooterScene.ts +158 -0
  968. package/src/games/candy-crush/CandyCrush.tsx +77 -0
  969. package/src/games/candy-crush/CandyCrushConstants.ts +94 -0
  970. package/src/games/candy-crush/CandyCrushGame.ts +477 -0
  971. package/src/games/candy-crush/CandyCrushScene.ts +209 -0
  972. package/src/games/car-racing/CarMeshes.ts +440 -0
  973. package/src/games/car-racing/CarRacing.tsx +211 -0
  974. package/src/games/car-racing/CarRacingConstants.ts +167 -0
  975. package/src/games/car-racing/CarRacingFacade.ts +40 -0
  976. package/src/games/car-racing/CarRacingGame.ts +539 -0
  977. package/src/games/car-racing/CarRacingScene.ts +1026 -0
  978. package/src/games/car-racing/CarRacingScenery.ts +265 -0
  979. package/src/games/chameleon-run/ChameleonRun.tsx +96 -0
  980. package/src/games/chameleon-run/ChameleonRunBackdrop.ts +186 -0
  981. package/src/games/chameleon-run/ChameleonRunConstants.ts +47 -0
  982. package/src/games/chameleon-run/ChameleonRunGame.ts +309 -0
  983. package/src/games/chameleon-run/ChameleonRunMeshes.ts +305 -0
  984. package/src/games/chameleon-run/ChameleonRunRules.ts +252 -0
  985. package/src/games/chameleon-run/ChameleonRunScene.ts +310 -0
  986. package/src/games/checkers/Checkers.tsx +83 -0
  987. package/src/games/checkers/CheckersAI.ts +255 -0
  988. package/src/games/checkers/CheckersConstants.ts +68 -0
  989. package/src/games/checkers/CheckersGame.ts +322 -0
  990. package/src/games/checkers/CheckersRules.ts +167 -0
  991. package/src/games/checkers/CheckersScene.ts +308 -0
  992. package/src/games/color-switch/ColorSwitch.tsx +75 -0
  993. package/src/games/color-switch/ColorSwitchConstants.ts +61 -0
  994. package/src/games/color-switch/ColorSwitchGame.ts +329 -0
  995. package/src/games/color-switch/ColorSwitchScene.ts +220 -0
  996. package/src/games/colors-sort/ColorsSort.tsx +82 -0
  997. package/src/games/colors-sort/ColorsSortConstants.ts +119 -0
  998. package/src/games/colors-sort/ColorsSortGame.ts +246 -0
  999. package/src/games/colors-sort/ColorsSortScene.ts +315 -0
  1000. package/src/games/connect-em-all/ConnectEmAll.tsx +70 -0
  1001. package/src/games/connect-em-all/ConnectEmAllConstants.ts +77 -0
  1002. package/src/games/connect-em-all/ConnectEmAllGame.ts +401 -0
  1003. package/src/games/connect-em-all/ConnectEmAllScene.ts +235 -0
  1004. package/src/games/crossy-road/CrossyRoad.tsx +74 -0
  1005. package/src/games/crossy-road/CrossyRoadCamera.ts +59 -0
  1006. package/src/games/crossy-road/CrossyRoadConstants.ts +132 -0
  1007. package/src/games/crossy-road/CrossyRoadGame.ts +293 -0
  1008. package/src/games/crossy-road/CrossyRoadMeshes.ts +195 -0
  1009. package/src/games/crossy-road/CrossyRoadPerson.ts +198 -0
  1010. package/src/games/crossy-road/CrossyRoadRules.ts +99 -0
  1011. package/src/games/crossy-road/CrossyRoadScene.ts +355 -0
  1012. package/src/games/dino-jump/DinoJump.tsx +77 -0
  1013. package/src/games/dino-jump/DinoJumpConstants.ts +80 -0
  1014. package/src/games/dino-jump/DinoJumpGame.ts +344 -0
  1015. package/src/games/dino-jump/DinoJumpScene.ts +686 -0
  1016. package/src/games/dots-and-boxes/DotsAndBoxes.tsx +83 -0
  1017. package/src/games/dots-and-boxes/DotsAndBoxesConstants.ts +77 -0
  1018. package/src/games/dots-and-boxes/DotsAndBoxesGame.ts +271 -0
  1019. package/src/games/dots-and-boxes/DotsAndBoxesScene.ts +249 -0
  1020. package/src/games/falling-sticks/FallingSticks.tsx +72 -0
  1021. package/src/games/falling-sticks/FallingSticksConstants.ts +62 -0
  1022. package/src/games/falling-sticks/FallingSticksGame.ts +220 -0
  1023. package/src/games/falling-sticks/FallingSticksRules.ts +145 -0
  1024. package/src/games/falling-sticks/FallingSticksScene.ts +245 -0
  1025. package/src/games/find-different-number/FindDifferentNumber.tsx +74 -0
  1026. package/src/games/find-different-number/FindDifferentNumberConstants.ts +74 -0
  1027. package/src/games/find-different-number/FindDifferentNumberGame.ts +174 -0
  1028. package/src/games/find-different-number/FindDifferentNumberRules.ts +43 -0
  1029. package/src/games/find-different-number/FindDifferentNumberScene.ts +193 -0
  1030. package/src/games/flappy-bird/FlappyBird.tsx +73 -0
  1031. package/src/games/flappy-bird/FlappyBirdConstants.ts +95 -0
  1032. package/src/games/flappy-bird/FlappyBirdGame.ts +375 -0
  1033. package/src/games/flappy-bird/FlappyBirdScene.ts +630 -0
  1034. package/src/games/fruit-merger/FruitMerger.tsx +73 -0
  1035. package/src/games/fruit-merger/FruitMergerConstants.ts +102 -0
  1036. package/src/games/fruit-merger/FruitMergerGame.ts +285 -0
  1037. package/src/games/fruit-merger/FruitMergerRules.ts +286 -0
  1038. package/src/games/fruit-merger/FruitMergerScene.ts +498 -0
  1039. package/src/games/fruit-ninja/FruitNinja.tsx +129 -0
  1040. package/src/games/fruit-ninja/FruitNinjaConstants.ts +107 -0
  1041. package/src/games/fruit-ninja/FruitNinjaGame.ts +391 -0
  1042. package/src/games/fruit-ninja/FruitNinjaScene.ts +319 -0
  1043. package/src/games/fruit-ninja/FruitNinjaWorld.ts +17 -0
  1044. package/src/games/game-2048/Game2048.tsx +84 -0
  1045. package/src/games/game-2048/Game2048Constants.ts +68 -0
  1046. package/src/games/game-2048/Game2048Game.ts +181 -0
  1047. package/src/games/game-2048/Game2048Rules.ts +101 -0
  1048. package/src/games/game-2048/Game2048Scene.ts +206 -0
  1049. package/src/games/knife-hit/KnifeHit.tsx +78 -0
  1050. package/src/games/knife-hit/KnifeHitConstants.ts +89 -0
  1051. package/src/games/knife-hit/KnifeHitGame.ts +264 -0
  1052. package/src/games/knife-hit/KnifeHitScene.ts +360 -0
  1053. package/src/games/ludo-king/LudoKing.tsx +86 -0
  1054. package/src/games/ludo-king/LudoKingConstants.ts +212 -0
  1055. package/src/games/ludo-king/LudoKingGame.ts +326 -0
  1056. package/src/games/ludo-king/LudoKingRules.ts +143 -0
  1057. package/src/games/ludo-king/LudoKingScene.ts +397 -0
  1058. package/src/games/maze-runner/MazeRunner.tsx +88 -0
  1059. package/src/games/maze-runner/MazeRunnerConstants.ts +65 -0
  1060. package/src/games/maze-runner/MazeRunnerGame.ts +176 -0
  1061. package/src/games/maze-runner/MazeRunnerRules.ts +161 -0
  1062. package/src/games/maze-runner/MazeRunnerScene.ts +245 -0
  1063. package/src/games/memory-match/MemoryMatch.tsx +77 -0
  1064. package/src/games/memory-match/MemoryMatchConstants.ts +105 -0
  1065. package/src/games/memory-match/MemoryMatchGame.ts +222 -0
  1066. package/src/games/memory-match/MemoryMatchRules.ts +38 -0
  1067. package/src/games/memory-match/MemoryMatchScene.ts +268 -0
  1068. package/src/games/mine-sweeper/MineSweeper.tsx +77 -0
  1069. package/src/games/mine-sweeper/MineSweeperConstants.ts +94 -0
  1070. package/src/games/mine-sweeper/MineSweeperGame.ts +234 -0
  1071. package/src/games/mine-sweeper/MineSweeperRules.ts +67 -0
  1072. package/src/games/mine-sweeper/MineSweeperScene.ts +262 -0
  1073. package/src/games/mob-control/MobControl.tsx +73 -0
  1074. package/src/games/mob-control/MobControlConstants.ts +106 -0
  1075. package/src/games/mob-control/MobControlGame.ts +176 -0
  1076. package/src/games/mob-control/MobControlMeshes.ts +85 -0
  1077. package/src/games/mob-control/MobControlRenderer.ts +108 -0
  1078. package/src/games/mob-control/MobControlRules.ts +522 -0
  1079. package/src/games/mob-control/MobControlScene.ts +399 -0
  1080. package/src/games/number-search/NumberSearch.tsx +18 -0
  1081. package/src/games/number-search/NumberSearchNumbers.ts +623 -0
  1082. package/src/games/nuts-and-bolts/NutsAndBolts.tsx +85 -0
  1083. package/src/games/nuts-and-bolts/NutsAndBoltsConstants.ts +75 -0
  1084. package/src/games/nuts-and-bolts/NutsAndBoltsGame.ts +298 -0
  1085. package/src/games/nuts-and-bolts/NutsAndBoltsRules.ts +474 -0
  1086. package/src/games/nuts-and-bolts/NutsAndBoltsScene.ts +498 -0
  1087. package/src/games/pac-man/PacMan.tsx +86 -0
  1088. package/src/games/pac-man/PacManConstants.ts +169 -0
  1089. package/src/games/pac-man/PacManGame.ts +406 -0
  1090. package/src/games/pac-man/PacManRules.ts +255 -0
  1091. package/src/games/pac-man/PacManScene.ts +387 -0
  1092. package/src/games/paper-io/PaperIo.tsx +91 -0
  1093. package/src/games/paper-io/PaperIoConstants.ts +86 -0
  1094. package/src/games/paper-io/PaperIoGame.ts +193 -0
  1095. package/src/games/paper-io/PaperIoMeshes.ts +233 -0
  1096. package/src/games/paper-io/PaperIoRules.ts +315 -0
  1097. package/src/games/paper-io/PaperIoScene.ts +310 -0
  1098. package/src/games/penguin-run/PenguinMeshes.ts +269 -0
  1099. package/src/games/penguin-run/PenguinModel.ts +712 -0
  1100. package/src/games/penguin-run/PenguinRun.tsx +77 -0
  1101. package/src/games/penguin-run/PenguinRunConstants.ts +69 -0
  1102. package/src/games/penguin-run/PenguinRunGame.ts +406 -0
  1103. package/src/games/penguin-run/PenguinRunScene.ts +949 -0
  1104. package/src/games/perfect-circle/PerfectCircle.tsx +74 -0
  1105. package/src/games/perfect-circle/PerfectCircleConstants.ts +52 -0
  1106. package/src/games/perfect-circle/PerfectCircleGame.ts +153 -0
  1107. package/src/games/perfect-circle/PerfectCircleRules.ts +111 -0
  1108. package/src/games/perfect-circle/PerfectCircleScene.ts +176 -0
  1109. package/src/games/pipe-connect/PipeConnect.tsx +69 -0
  1110. package/src/games/pipe-connect/PipeConnectConstants.ts +101 -0
  1111. package/src/games/pipe-connect/PipeConnectGame.ts +179 -0
  1112. package/src/games/pipe-connect/PipeConnectRules.ts +326 -0
  1113. package/src/games/pipe-connect/PipeConnectScene.ts +271 -0
  1114. package/src/games/play-with-tua/PlayWithTua.tsx +123 -0
  1115. package/src/games/play-with-tua/PlayWithTuaConstants.ts +70 -0
  1116. package/src/games/play-with-tua/PlayWithTuaGame.ts +167 -0
  1117. package/src/games/play-with-tua/PlayWithTuaModel.ts +42 -0
  1118. package/src/games/play-with-tua/PlayWithTuaScene.ts +36 -0
  1119. package/src/games/popit-fidget/PopitFidget.tsx +72 -0
  1120. package/src/games/popit-fidget/PopitFidgetConstants.ts +71 -0
  1121. package/src/games/popit-fidget/PopitFidgetGame.ts +148 -0
  1122. package/src/games/popit-fidget/PopitFidgetScene.ts +242 -0
  1123. package/src/games/reversi/Reversi.tsx +94 -0
  1124. package/src/games/reversi/ReversiConstants.ts +67 -0
  1125. package/src/games/reversi/ReversiGame.ts +266 -0
  1126. package/src/games/reversi/ReversiRules.ts +176 -0
  1127. package/src/games/reversi/ReversiScene.ts +240 -0
  1128. package/src/games/search-grid/SearchGrid.tsx +92 -0
  1129. package/src/games/search-grid/SearchGridConstants.ts +178 -0
  1130. package/src/games/search-grid/SearchGridGame.ts +209 -0
  1131. package/src/games/search-grid/SearchGridScene.ts +301 -0
  1132. package/src/games/shared/BackdropCard.tsx +54 -0
  1133. package/src/games/shared/EngineBackdrop.ts +300 -0
  1134. package/src/games/shared/EngineBlasts.ts +136 -0
  1135. package/src/games/shared/EngineBlocks.ts +91 -0
  1136. package/src/games/shared/EngineControlText.ts +17 -0
  1137. package/src/games/shared/EngineDice.ts +250 -0
  1138. package/src/games/shared/EngineFootprint.ts +35 -0
  1139. package/src/games/shared/EngineFruits.ts +1435 -0
  1140. package/src/games/shared/EngineGameLoader.tsx +88 -0
  1141. package/src/games/shared/EngineGameScreen.tsx +325 -0
  1142. package/src/games/shared/EngineGameWidth.ts +3 -0
  1143. package/src/games/shared/EngineGameWidth.web.ts +3 -0
  1144. package/src/games/shared/EngineGlyphs.ts +178 -0
  1145. package/src/games/shared/EngineHud.ts +815 -0
  1146. package/src/games/shared/EngineLoading.ts +477 -0
  1147. package/src/games/shared/EngineMeadow.ts +725 -0
  1148. package/src/games/shared/EngineMeshCache.ts +15 -0
  1149. package/src/games/shared/EngineMeshes.ts +10 -0
  1150. package/src/games/shared/EngineRacingChase.ts +21 -0
  1151. package/src/games/shared/EngineRacingHandling.ts +48 -0
  1152. package/src/games/shared/EngineReadyContext.ts +4 -0
  1153. package/src/games/shared/EngineTilt.ts +44 -0
  1154. package/src/games/shared/EngineTouchSurface.tsx +103 -0
  1155. package/src/games/shared/EngineUtils.ts +52 -0
  1156. package/src/games/shared/GameActivity.ts +13 -0
  1157. package/src/games/shared/GameLoading.tsx +202 -0
  1158. package/src/games/shared/GameLoadingTransition.tsx +61 -0
  1159. package/src/games/shared/ProceduralCacheVersion.ts +2 -0
  1160. package/src/games/shared/useEngineGame.ts +240 -0
  1161. package/src/games/shared/useGameResource.ts +21 -0
  1162. package/src/games/shared/useLiveState.ts +58 -0
  1163. package/src/games/sliding-numbers/SlidingNumbers.tsx +71 -0
  1164. package/src/games/sliding-numbers/SlidingNumbersConstants.ts +65 -0
  1165. package/src/games/sliding-numbers/SlidingNumbersGame.ts +192 -0
  1166. package/src/games/sliding-numbers/SlidingNumbersRules.ts +79 -0
  1167. package/src/games/sliding-numbers/SlidingNumbersScene.ts +193 -0
  1168. package/src/games/snake-3d/Snake3D.tsx +76 -0
  1169. package/src/games/snake-3d/Snake3DConstants.ts +61 -0
  1170. package/src/games/snake-3d/Snake3DGame.ts +192 -0
  1171. package/src/games/snake-3d/Snake3DMotion.ts +22 -0
  1172. package/src/games/snake-3d/Snake3DRules.ts +116 -0
  1173. package/src/games/snake-3d/Snake3DScene.ts +322 -0
  1174. package/src/games/snakes-and-ladders/SnakesAndLadders.tsx +87 -0
  1175. package/src/games/snakes-and-ladders/SnakesAndLaddersConstants.ts +136 -0
  1176. package/src/games/snakes-and-ladders/SnakesAndLaddersGame.ts +310 -0
  1177. package/src/games/snakes-and-ladders/SnakesAndLaddersScene.ts +515 -0
  1178. package/src/games/space-fighter/SpaceFighter.tsx +74 -0
  1179. package/src/games/space-fighter/SpaceFighterConstants.ts +86 -0
  1180. package/src/games/space-fighter/SpaceFighterGame.ts +292 -0
  1181. package/src/games/space-fighter/SpaceFighterScene.ts +550 -0
  1182. package/src/games/spider-solitaire/SpiderSolitaire.tsx +80 -0
  1183. package/src/games/spider-solitaire/SpiderSolitaireConstants.ts +107 -0
  1184. package/src/games/spider-solitaire/SpiderSolitaireGame.ts +387 -0
  1185. package/src/games/spider-solitaire/SpiderSolitaireRules.ts +123 -0
  1186. package/src/games/spider-solitaire/SpiderSolitaireScene.ts +352 -0
  1187. package/src/games/stack-tower/StackTower.tsx +76 -0
  1188. package/src/games/stack-tower/StackTowerConstants.ts +74 -0
  1189. package/src/games/stack-tower/StackTowerGame.ts +236 -0
  1190. package/src/games/stack-tower/StackTowerScene.ts +186 -0
  1191. package/src/games/sudoku/Sudoku.tsx +73 -0
  1192. package/src/games/sudoku/SudokuConstants.ts +127 -0
  1193. package/src/games/sudoku/SudokuGame.ts +250 -0
  1194. package/src/games/sudoku/SudokuRules.ts +125 -0
  1195. package/src/games/sudoku/SudokuScene.ts +304 -0
  1196. package/src/games/tangram/Tangram.tsx +79 -0
  1197. package/src/games/tangram/TangramConstants.ts +64 -0
  1198. package/src/games/tangram/TangramGame.ts +356 -0
  1199. package/src/games/tangram/TangramRules.ts +409 -0
  1200. package/src/games/tangram/TangramScene.ts +203 -0
  1201. package/src/games/tank-1990/Tank1990.tsx +78 -0
  1202. package/src/games/tank-1990/Tank1990Constants.ts +81 -0
  1203. package/src/games/tank-1990/Tank1990Game.ts +331 -0
  1204. package/src/games/tank-1990/Tank1990Rules.ts +390 -0
  1205. package/src/games/tank-1990/Tank1990Scene.ts +434 -0
  1206. package/src/games/tic-tac-toe/TicTacToe.tsx +98 -0
  1207. package/src/games/tic-tac-toe/TicTacToeConstants.ts +69 -0
  1208. package/src/games/tic-tac-toe/TicTacToeGame.ts +200 -0
  1209. package/src/games/tic-tac-toe/TicTacToeRules.ts +103 -0
  1210. package/src/games/tic-tac-toe/TicTacToeScene.ts +245 -0
  1211. package/src/games/tile-home/TileHome.tsx +92 -0
  1212. package/src/games/tile-home/TileHomeConstants.ts +139 -0
  1213. package/src/games/tile-home/TileHomeGame.ts +435 -0
  1214. package/src/games/tile-home/TileHomeScene.ts +154 -0
  1215. package/src/games/treasure-hunt/TreasureHunt.tsx +206 -0
  1216. package/src/games/treasure-hunt/TreasureHuntConstants.ts +266 -0
  1217. package/src/games/treasure-hunt/TreasureHuntControls.ts +280 -0
  1218. package/src/games/treasure-hunt/TreasureHuntGame.ts +402 -0
  1219. package/src/games/treasure-hunt/TreasureHuntMeshes.ts +422 -0
  1220. package/src/games/treasure-hunt/TreasureHuntModel.ts +506 -0
  1221. package/src/games/treasure-hunt/TreasureHuntRules.ts +1210 -0
  1222. package/src/games/treasure-hunt/TreasureHuntScene.ts +586 -0
  1223. package/src/games/whack-a-mole/WhackAMole.tsx +79 -0
  1224. package/src/games/whack-a-mole/WhackAMoleConstants.ts +94 -0
  1225. package/src/games/whack-a-mole/WhackAMoleGame.ts +233 -0
  1226. package/src/games/whack-a-mole/WhackAMoleScene.ts +349 -0
  1227. package/src/games/word-search/WordSearch.tsx +18 -0
  1228. package/src/games/word-search/WordSearchWords.ts +1642 -0
  1229. package/src/helpers/GamePatternData.ts +120 -0
  1230. package/src/helpers/GameSettingsModal.tsx +384 -0
  1231. package/src/helpers/GameTheme.tsx +37 -0
  1232. package/src/helpers/IconPaths.ts +6 -0
  1233. package/src/helpers/index.ts +2 -0
  1234. package/src/index.tsx +60 -0
  1235. package/src/services/GameAssetLoader.ts +111 -0
  1236. package/src/services/GameAssets.ts +149 -0
  1237. package/src/services/GameLoaders.ts +93 -0
  1238. package/src/services/GamesConstants.ts +193 -0
  1239. package/src/services/GamesMetadata.ts +711 -0
  1240. package/src/services/GamesService.ts +116 -0
  1241. package/src/services/HapticsService.ts +48 -0
  1242. package/src/services/ScoringService.ts +19 -0
  1243. package/src/services/SfxSources.ts +81 -0
  1244. package/src/services/SoundsService.ts +582 -0
  1245. package/src/services/ThemeService.ts +281 -0
  1246. package/src/services/UtilsService.ts +134 -0
  1247. package/src/services/index.ts +6 -0
  1248. package/lib/module/games/arrows/ArrowsService.js +0 -1
  1249. package/lib/module/games/arrows/ArrowsStore.js +0 -1
  1250. package/lib/module/games/arrows/components/ArrowsGrid.js +0 -1
  1251. package/lib/module/games/arrows/components/ScoreBoard.js +0 -1
  1252. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +0 -1
  1253. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +0 -1
  1254. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +0 -1
  1255. package/lib/module/games/balloon-blaster/components/GameArea.js +0 -1
  1256. package/lib/module/games/balloon-blaster/components/GameBackground.js +0 -1
  1257. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +0 -1
  1258. package/lib/module/games/bike-racing/BikeRacingService.js +0 -1
  1259. package/lib/module/games/bike-racing/BikeRacingStore.js +0 -1
  1260. package/lib/module/games/bike-racing/components/BikeComponent.js +0 -1
  1261. package/lib/module/games/bike-racing/components/GameBackground.js +0 -1
  1262. package/lib/module/games/bike-racing/components/ScoreBoard.js +0 -1
  1263. package/lib/module/games/block-blast/BlockBlastService.js +0 -1
  1264. package/lib/module/games/block-blast/BlockBlastStore.js +0 -1
  1265. package/lib/module/games/block-blast/components/BlockPieceComponent.js +0 -1
  1266. package/lib/module/games/block-blast/components/GameArea.js +0 -1
  1267. package/lib/module/games/block-blast/components/GridComponent.js +0 -1
  1268. package/lib/module/games/block-blast/components/ScoreBoard.js +0 -1
  1269. package/lib/module/games/block-breaker/BlockBreakerService.js +0 -1
  1270. package/lib/module/games/block-breaker/BlockBreakerStore.js +0 -1
  1271. package/lib/module/games/block-breaker/components/BlastAnimation.js +0 -1
  1272. package/lib/module/games/block-breaker/components/GameArea.js +0 -1
  1273. package/lib/module/games/block-breaker/components/ScoreBoard.js +0 -1
  1274. package/lib/module/games/bluk/BlukService.js +0 -1
  1275. package/lib/module/games/bluk/BlukStore.js +0 -1
  1276. package/lib/module/games/bluk/components/GameArea.js +0 -1
  1277. package/lib/module/games/bluk/components/GameBackground.js +0 -1
  1278. package/lib/module/games/bluk/components/ScoreBoard.js +0 -1
  1279. package/lib/module/games/bubble-shooter/BubbleShooterService.js +0 -1
  1280. package/lib/module/games/bubble-shooter/BubbleShooterStore.js +0 -1
  1281. package/lib/module/games/bubble-shooter/components/GameArea.js +0 -1
  1282. package/lib/module/games/bubble-shooter/components/ScoreBoard.js +0 -1
  1283. package/lib/module/games/candy-crush/CandyCrushService.js +0 -1
  1284. package/lib/module/games/candy-crush/CandyCrushStore.js +0 -1
  1285. package/lib/module/games/candy-crush/components/CandyItem.js +0 -1
  1286. package/lib/module/games/candy-crush/components/GameGrid.js +0 -1
  1287. package/lib/module/games/candy-crush/components/ScoreBoard.js +0 -1
  1288. package/lib/module/games/car-racing/CarRacingService.js +0 -1
  1289. package/lib/module/games/car-racing/CarRacingStore.js +0 -1
  1290. package/lib/module/games/car-racing/components/CarComponent.js +0 -1
  1291. package/lib/module/games/car-racing/components/GameBackground.js +0 -1
  1292. package/lib/module/games/car-racing/components/ScoreBoard.js +0 -1
  1293. package/lib/module/games/chameleon-run/ChameleonRunService.js +0 -1
  1294. package/lib/module/games/chameleon-run/ChameleonRunStore.js +0 -1
  1295. package/lib/module/games/chameleon-run/components/GameArea.js +0 -1
  1296. package/lib/module/games/chameleon-run/components/GameBackground.js +0 -1
  1297. package/lib/module/games/chameleon-run/components/ScoreBoard.js +0 -1
  1298. package/lib/module/games/checkers/CheckersService.js +0 -1
  1299. package/lib/module/games/checkers/CheckersStore.js +0 -1
  1300. package/lib/module/games/checkers/components/GameBoard.js +0 -1
  1301. package/lib/module/games/checkers/components/ScoreBoard.js +0 -1
  1302. package/lib/module/games/color-switch/ColorSwitchService.js +0 -1
  1303. package/lib/module/games/color-switch/ColorSwitchStore.js +0 -1
  1304. package/lib/module/games/color-switch/components/GameArea.js +0 -1
  1305. package/lib/module/games/color-switch/components/ScoreBoard.js +0 -1
  1306. package/lib/module/games/colors-sort/ColorsSortService.js +0 -1
  1307. package/lib/module/games/colors-sort/ColorsSortStore.js +0 -1
  1308. package/lib/module/games/colors-sort/components/ColorContainer.js +0 -1
  1309. package/lib/module/games/colors-sort/components/ScoreBoard.js +0 -1
  1310. package/lib/module/games/connect-em-all/ConnectEmAllService.js +0 -1
  1311. package/lib/module/games/connect-em-all/ConnectEmAllStore.js +0 -1
  1312. package/lib/module/games/connect-em-all/components/GameBoard.js +0 -1
  1313. package/lib/module/games/connect-em-all/components/ScoreBoard.js +0 -1
  1314. package/lib/module/games/crossy-road/CrossyRoadService.js +0 -1
  1315. package/lib/module/games/crossy-road/CrossyRoadStore.js +0 -1
  1316. package/lib/module/games/crossy-road/components/GameArea.js +0 -1
  1317. package/lib/module/games/crossy-road/components/ScoreBoard.js +0 -1
  1318. package/lib/module/games/dino-jump/DinoJumpService.js +0 -1
  1319. package/lib/module/games/dino-jump/DinoJumpStore.js +0 -1
  1320. package/lib/module/games/dino-jump/components/DinoSprite.js +0 -1
  1321. package/lib/module/games/dino-jump/components/GameArea.js +0 -1
  1322. package/lib/module/games/dino-jump/components/GameBackground.js +0 -1
  1323. package/lib/module/games/dino-jump/components/ObstacleSprite.js +0 -1
  1324. package/lib/module/games/dino-jump/components/ScoreBoard.js +0 -1
  1325. package/lib/module/games/dino-jump/components/StarSprite.js +0 -1
  1326. package/lib/module/games/dots-and-boxes/DotsAndBoxesService.js +0 -1
  1327. package/lib/module/games/dots-and-boxes/DotsAndBoxesStore.js +0 -1
  1328. package/lib/module/games/dots-and-boxes/components/GameBoard.js +0 -1
  1329. package/lib/module/games/dots-and-boxes/components/ScoreBoard.js +0 -1
  1330. package/lib/module/games/falling-sticks/FallingSticksService.js +0 -1
  1331. package/lib/module/games/falling-sticks/FallingSticksStore.js +0 -1
  1332. package/lib/module/games/falling-sticks/components/GameArea.js +0 -1
  1333. package/lib/module/games/falling-sticks/components/GameBackground.js +0 -1
  1334. package/lib/module/games/falling-sticks/components/ScoreBoard.js +0 -1
  1335. package/lib/module/games/find-different-number/FindDifferentNumberService.js +0 -1
  1336. package/lib/module/games/find-different-number/FindDifferentNumberStore.js +0 -1
  1337. package/lib/module/games/find-different-number/components/GameGrid.js +0 -1
  1338. package/lib/module/games/find-different-number/components/ScoreBoard.js +0 -1
  1339. package/lib/module/games/flappy-bird/FlappyBirdStore.js +0 -1
  1340. package/lib/module/games/flappy-bird/components/Bird.js +0 -1
  1341. package/lib/module/games/flappy-bird/components/GameArea.js +0 -1
  1342. package/lib/module/games/flappy-bird/components/GameBackground.js +0 -1
  1343. package/lib/module/games/flappy-bird/components/Pipes.js +0 -1
  1344. package/lib/module/games/flappy-bird/components/ScoreBoard.js +0 -1
  1345. package/lib/module/games/fruit-merger/FruitMergerService.js +0 -1
  1346. package/lib/module/games/fruit-merger/FruitMergerStore.js +0 -1
  1347. package/lib/module/games/fruit-merger/components/FruitItem.js +0 -1
  1348. package/lib/module/games/fruit-merger/components/GameArea.js +0 -1
  1349. package/lib/module/games/fruit-merger/components/ScoreBoard.js +0 -1
  1350. package/lib/module/games/fruit-ninja/FruitNinjaService.js +0 -1
  1351. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +0 -1
  1352. package/lib/module/games/fruit-ninja/components/FruitComponent.js +0 -1
  1353. package/lib/module/games/fruit-ninja/components/GameArea.js +0 -1
  1354. package/lib/module/games/fruit-ninja/components/GameBackground.js +0 -1
  1355. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +0 -1
  1356. package/lib/module/games/game-2048/Game2048Service.js +0 -1
  1357. package/lib/module/games/game-2048/Game2048Store.js +0 -1
  1358. package/lib/module/games/game-2048/components/GameGrid.js +0 -1
  1359. package/lib/module/games/game-2048/components/ScoreBoard.js +0 -1
  1360. package/lib/module/games/knife-hit/KnifeHitService.js +0 -1
  1361. package/lib/module/games/knife-hit/KnifeHitStore.js +0 -1
  1362. package/lib/module/games/knife-hit/components/GameArea.js +0 -1
  1363. package/lib/module/games/knife-hit/components/ScoreBoard.js +0 -1
  1364. package/lib/module/games/ludo-king/LudoKingService.js +0 -1
  1365. package/lib/module/games/ludo-king/LudoKingStore.js +0 -1
  1366. package/lib/module/games/ludo-king/components/Dice.js +0 -1
  1367. package/lib/module/games/ludo-king/components/GameBoard.js +0 -1
  1368. package/lib/module/games/ludo-king/components/ScoreBoard.js +0 -1
  1369. package/lib/module/games/maze-runner/MazeRunnerStore.js +0 -1
  1370. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +0 -1
  1371. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +0 -1
  1372. package/lib/module/games/maze-runner/components/ScoreBoard.js +0 -1
  1373. package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +0 -1
  1374. package/lib/module/games/maze-runner/components/WallComponent.js +0 -1
  1375. package/lib/module/games/memory-match/MemoryMatchService.js +0 -1
  1376. package/lib/module/games/memory-match/MemoryMatchStore.js +0 -1
  1377. package/lib/module/games/memory-match/components/Card.js +0 -1
  1378. package/lib/module/games/memory-match/components/GameBoard.js +0 -1
  1379. package/lib/module/games/memory-match/components/ScoreBoard.js +0 -1
  1380. package/lib/module/games/mine-sweeper/MineSweeperService.js +0 -1
  1381. package/lib/module/games/mine-sweeper/MineSweeperStore.js +0 -1
  1382. package/lib/module/games/mine-sweeper/components/GameArea.js +0 -1
  1383. package/lib/module/games/mine-sweeper/components/ScoreBoard.js +0 -1
  1384. package/lib/module/games/mob-control/MobControlService.js +0 -1
  1385. package/lib/module/games/mob-control/MobControlStore.js +0 -1
  1386. package/lib/module/games/mob-control/components/GameArea.js +0 -1
  1387. package/lib/module/games/mob-control/components/ScoreBoard.js +0 -1
  1388. package/lib/module/games/number-search/NumberSearchConstants.js +0 -1
  1389. package/lib/module/games/number-search/NumberSearchService.js +0 -1
  1390. package/lib/module/games/number-search/NumberSearchStore.js +0 -1
  1391. package/lib/module/games/number-search/components/GameBoard.js +0 -1
  1392. package/lib/module/games/number-search/components/NumberList.js +0 -1
  1393. package/lib/module/games/number-search/components/ScoreBoard.js +0 -1
  1394. package/lib/module/games/nuts-and-bolts/NutsAndBoltsService.js +0 -1
  1395. package/lib/module/games/nuts-and-bolts/NutsAndBoltsStore.js +0 -1
  1396. package/lib/module/games/nuts-and-bolts/components/GameBoard.js +0 -1
  1397. package/lib/module/games/nuts-and-bolts/components/ScoreBoard.js +0 -1
  1398. package/lib/module/games/pac-man/PacManService.js +0 -1
  1399. package/lib/module/games/pac-man/PacManStore.js +0 -1
  1400. package/lib/module/games/pac-man/components/GameCanvas.js +0 -1
  1401. package/lib/module/games/pac-man/components/ScoreBoard.js +0 -1
  1402. package/lib/module/games/paper-io/PaperIoService.js +0 -1
  1403. package/lib/module/games/paper-io/PaperIoStore.js +0 -1
  1404. package/lib/module/games/paper-io/components/GameArea.js +0 -1
  1405. package/lib/module/games/paper-io/components/ScoreBoard.js +0 -1
  1406. package/lib/module/games/perfect-circle/PerfectCircleService.js +0 -1
  1407. package/lib/module/games/perfect-circle/PerfectCircleStore.js +0 -1
  1408. package/lib/module/games/perfect-circle/components/DrawingCanvas.js +0 -1
  1409. package/lib/module/games/perfect-circle/components/ScoreBoard.js +0 -1
  1410. package/lib/module/games/pipe-connect/PipeConnectService.js +0 -1
  1411. package/lib/module/games/pipe-connect/PipeConnectStore.js +0 -1
  1412. package/lib/module/games/pipe-connect/components/GameArea.js +0 -1
  1413. package/lib/module/games/pipe-connect/components/ScoreBoard.js +0 -1
  1414. package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -1
  1415. package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -1
  1416. package/lib/module/games/popit-fidget/components/BubbleComponent.js +0 -1
  1417. package/lib/module/games/popit-fidget/components/FidgetGrid.js +0 -1
  1418. package/lib/module/games/popit-fidget/components/ScoreBoard.js +0 -1
  1419. package/lib/module/games/reversi/ReversiStore.js +0 -1
  1420. package/lib/module/games/reversi/components/GameBoard.js +0 -1
  1421. package/lib/module/games/reversi/components/ScoreBoard.js +0 -1
  1422. package/lib/module/games/sliding-numbers/SlidingNumbersService.js +0 -1
  1423. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +0 -1
  1424. package/lib/module/games/sliding-numbers/components/NumbersGrid.js +0 -1
  1425. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +0 -1
  1426. package/lib/module/games/snake-3d/Snake3DService.js +0 -1
  1427. package/lib/module/games/snake-3d/Snake3DStore.js +0 -1
  1428. package/lib/module/games/snake-3d/components/GameGrid.js +0 -1
  1429. package/lib/module/games/snake-3d/components/ScoreBoard.js +0 -1
  1430. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersService.js +0 -1
  1431. package/lib/module/games/snakes-and-ladders/SnakesAndLaddersStore.js +0 -1
  1432. package/lib/module/games/snakes-and-ladders/components/Dice.js +0 -1
  1433. package/lib/module/games/snakes-and-ladders/components/GameBoard.js +0 -1
  1434. package/lib/module/games/snakes-and-ladders/components/ScoreBoard.js +0 -1
  1435. package/lib/module/games/space-fighter/SpaceFighterService.js +0 -1
  1436. package/lib/module/games/space-fighter/SpaceFighterStore.js +0 -1
  1437. package/lib/module/games/space-fighter/components/AsteroidComponent.js +0 -1
  1438. package/lib/module/games/space-fighter/components/GameArea.js +0 -1
  1439. package/lib/module/games/space-fighter/components/GameBackground.js +0 -1
  1440. package/lib/module/games/space-fighter/components/ScoreBoard.js +0 -1
  1441. package/lib/module/games/space-fighter/components/Spacecraft3D.js +0 -1
  1442. package/lib/module/games/space-fighter/components/SpacecraftPath.js +0 -1
  1443. package/lib/module/games/spider-solitaire/SpiderSolitaireService.js +0 -1
  1444. package/lib/module/games/spider-solitaire/SpiderSolitaireStore.js +0 -1
  1445. package/lib/module/games/spider-solitaire/components/Card.js +0 -1
  1446. package/lib/module/games/spider-solitaire/components/CardPile.js +0 -1
  1447. package/lib/module/games/spider-solitaire/components/ScoreBoard.js +0 -1
  1448. package/lib/module/games/stack-tower/StackTowerService.js +0 -1
  1449. package/lib/module/games/stack-tower/StackTowerStore.js +0 -1
  1450. package/lib/module/games/stack-tower/components/GameArea.js +0 -1
  1451. package/lib/module/games/stack-tower/components/ScoreBoard.js +0 -1
  1452. package/lib/module/games/sudoku/SudokuService.js +0 -1
  1453. package/lib/module/games/sudoku/SudokuStore.js +0 -1
  1454. package/lib/module/games/sudoku/components/GameArea.js +0 -1
  1455. package/lib/module/games/sudoku/components/ScoreBoard.js +0 -1
  1456. package/lib/module/games/tangram/TangramService.js +0 -1
  1457. package/lib/module/games/tangram/TangramStore.js +0 -1
  1458. package/lib/module/games/tangram/components/GameBoard.js +0 -1
  1459. package/lib/module/games/tangram/components/ScoreBoard.js +0 -1
  1460. package/lib/module/games/tank-1990/Tank1990Service.js +0 -1
  1461. package/lib/module/games/tank-1990/Tank1990Store.js +0 -1
  1462. package/lib/module/games/tank-1990/components/Controls.js +0 -1
  1463. package/lib/module/games/tank-1990/components/GameBoard.js +0 -1
  1464. package/lib/module/games/tank-1990/components/ScoreBoard.js +0 -1
  1465. package/lib/module/games/tic-tac-toe/TicTacToeService.js +0 -1
  1466. package/lib/module/games/tic-tac-toe/TicTacToeStore.js +0 -1
  1467. package/lib/module/games/tic-tac-toe/components/GameBoard.js +0 -1
  1468. package/lib/module/games/tic-tac-toe/components/ScoreBoard.js +0 -1
  1469. package/lib/module/games/tile-home/TileHomeService.js +0 -1
  1470. package/lib/module/games/tile-home/TileHomeStore.js +0 -1
  1471. package/lib/module/games/tile-home/components/AnimatingTile.js +0 -1
  1472. package/lib/module/games/tile-home/components/FlyingTile.js +0 -1
  1473. package/lib/module/games/tile-home/components/GameBoard.js +0 -1
  1474. package/lib/module/games/tile-home/components/ScoreBoard.js +0 -1
  1475. package/lib/module/games/tile-home/components/TileItem.js +0 -1
  1476. package/lib/module/games/tile-home/components/TileSlot.js +0 -1
  1477. package/lib/module/games/whack-a-mole/WhackAMoleService.js +0 -1
  1478. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +0 -1
  1479. package/lib/module/games/whack-a-mole/components/GameBackground.js +0 -1
  1480. package/lib/module/games/whack-a-mole/components/GameGrid.js +0 -1
  1481. package/lib/module/games/whack-a-mole/components/GameHole.js +0 -1
  1482. package/lib/module/games/whack-a-mole/components/MoleCharacter.js +0 -1
  1483. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +0 -1
  1484. package/lib/module/games/word-search/WordSearchConstants.js +0 -1
  1485. package/lib/module/games/word-search/WordSearchService.js +0 -1
  1486. package/lib/module/games/word-search/WordSearchStore.js +0 -1
  1487. package/lib/module/games/word-search/components/GameBoard.js +0 -1
  1488. package/lib/module/games/word-search/components/ScoreBoard.js +0 -1
  1489. package/lib/module/games/word-search/components/WordList.js +0 -1
  1490. package/lib/module/helpers/AnimatedScore.js +0 -1
  1491. package/lib/module/helpers/AnimationFrame.js +0 -1
  1492. package/lib/module/helpers/AnimationTracker.js +0 -1
  1493. package/lib/module/helpers/BlastAnimation.js +0 -1
  1494. package/lib/module/helpers/ErrorHandler.js +0 -1
  1495. package/lib/module/helpers/GameBackgroundPattern.js +0 -1
  1496. package/lib/module/helpers/GameControlButton.js +0 -1
  1497. package/lib/module/helpers/GameOverModal.js +0 -1
  1498. package/lib/module/helpers/GameTimer.js +0 -1
  1499. package/lib/module/helpers/Icons.js +0 -1
  1500. package/lib/module/helpers/ParticleBlast.js +0 -1
  1501. package/lib/module/helpers/ScoreBoardContainer.js +0 -1
  1502. package/lib/module/helpers/assets/apple-fruit.js +0 -1
  1503. package/lib/module/helpers/assets/avocado-item.js +0 -1
  1504. package/lib/module/helpers/assets/banana-fruit.js +0 -1
  1505. package/lib/module/helpers/assets/bomb-item.js +0 -1
  1506. package/lib/module/helpers/assets/broccoli-item.js +0 -1
  1507. package/lib/module/helpers/assets/cherries-fruit.js +0 -1
  1508. package/lib/module/helpers/assets/donut-item.js +0 -1
  1509. package/lib/module/helpers/assets/dragonfruit-item.js +0 -1
  1510. package/lib/module/helpers/assets/fries-item.js +0 -1
  1511. package/lib/module/helpers/assets/fruit-helpers.js +0 -1
  1512. package/lib/module/helpers/assets/grapes-fruit.js +0 -1
  1513. package/lib/module/helpers/assets/icecream-item.js +0 -1
  1514. package/lib/module/helpers/assets/index.js +0 -1
  1515. package/lib/module/helpers/assets/kiwi-fruit.js +0 -1
  1516. package/lib/module/helpers/assets/mango-fruit.js +0 -1
  1517. package/lib/module/helpers/assets/orange-fruit.js +0 -1
  1518. package/lib/module/helpers/assets/papaya-fruit.js +0 -1
  1519. package/lib/module/helpers/assets/papaya-full-fruit.js +0 -1
  1520. package/lib/module/helpers/assets/peach-fruit.js +0 -1
  1521. package/lib/module/helpers/assets/pineapple-fruit.js +0 -1
  1522. package/lib/module/helpers/assets/pomegranate-fruit.js +0 -1
  1523. package/lib/module/helpers/assets/pumpkin-fruit.js +0 -1
  1524. package/lib/module/helpers/assets/raspberry-item.js +0 -1
  1525. package/lib/module/helpers/assets/star-item.js +0 -1
  1526. package/lib/module/helpers/assets/strawberry-fruit.js +0 -1
  1527. package/lib/module/helpers/assets/watermelon-fruit.js +0 -1
  1528. package/lib/module/types.d.js +0 -1
  1529. package/lib/typescript/src/games/arrows/ArrowsService.d.ts +0 -6
  1530. package/lib/typescript/src/games/arrows/ArrowsStore.d.ts +0 -51
  1531. package/lib/typescript/src/games/arrows/components/ArrowsGrid.d.ts +0 -13
  1532. package/lib/typescript/src/games/arrows/components/ScoreBoard.d.ts +0 -6
  1533. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -80
  1534. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +0 -30
  1535. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts +0 -9
  1536. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +0 -9
  1537. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +0 -7
  1538. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +0 -6
  1539. package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +0 -44
  1540. package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +0 -68
  1541. package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +0 -12
  1542. package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +0 -7
  1543. package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +0 -6
  1544. package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +0 -16
  1545. package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +0 -70
  1546. package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +0 -11
  1547. package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +0 -11
  1548. package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +0 -8
  1549. package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +0 -6
  1550. package/lib/typescript/src/games/block-breaker/BlockBreakerService.d.ts +0 -88
  1551. package/lib/typescript/src/games/block-breaker/BlockBreakerStore.d.ts +0 -47
  1552. package/lib/typescript/src/games/block-breaker/components/BlastAnimation.d.ts +0 -15
  1553. package/lib/typescript/src/games/block-breaker/components/GameArea.d.ts +0 -8
  1554. package/lib/typescript/src/games/block-breaker/components/ScoreBoard.d.ts +0 -6
  1555. package/lib/typescript/src/games/bluk/BlukService.d.ts +0 -71
  1556. package/lib/typescript/src/games/bluk/BlukStore.d.ts +0 -52
  1557. package/lib/typescript/src/games/bluk/components/GameArea.d.ts +0 -17
  1558. package/lib/typescript/src/games/bluk/components/GameBackground.d.ts +0 -9
  1559. package/lib/typescript/src/games/bluk/components/ScoreBoard.d.ts +0 -6
  1560. package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +0 -35
  1561. package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +0 -63
  1562. package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +0 -8
  1563. package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +0 -6
  1564. package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +0 -37
  1565. package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +0 -53
  1566. package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +0 -11
  1567. package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +0 -2
  1568. package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +0 -5
  1569. package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +0 -44
  1570. package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +0 -68
  1571. package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +0 -12
  1572. package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +0 -7
  1573. package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +0 -6
  1574. package/lib/typescript/src/games/chameleon-run/ChameleonRunService.d.ts +0 -76
  1575. package/lib/typescript/src/games/chameleon-run/ChameleonRunStore.d.ts +0 -48
  1576. package/lib/typescript/src/games/chameleon-run/components/GameArea.d.ts +0 -8
  1577. package/lib/typescript/src/games/chameleon-run/components/GameBackground.d.ts +0 -7
  1578. package/lib/typescript/src/games/chameleon-run/components/ScoreBoard.d.ts +0 -6
  1579. package/lib/typescript/src/games/checkers/CheckersService.d.ts +0 -6
  1580. package/lib/typescript/src/games/checkers/CheckersStore.d.ts +0 -48
  1581. package/lib/typescript/src/games/checkers/components/GameBoard.d.ts +0 -6
  1582. package/lib/typescript/src/games/checkers/components/ScoreBoard.d.ts +0 -6
  1583. package/lib/typescript/src/games/color-switch/ColorSwitchService.d.ts +0 -63
  1584. package/lib/typescript/src/games/color-switch/ColorSwitchStore.d.ts +0 -43
  1585. package/lib/typescript/src/games/color-switch/components/GameArea.d.ts +0 -8
  1586. package/lib/typescript/src/games/color-switch/components/ScoreBoard.d.ts +0 -6
  1587. package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts +0 -61
  1588. package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts +0 -56
  1589. package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts +0 -7
  1590. package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +0 -6
  1591. package/lib/typescript/src/games/connect-em-all/ConnectEmAllService.d.ts +0 -20
  1592. package/lib/typescript/src/games/connect-em-all/ConnectEmAllStore.d.ts +0 -48
  1593. package/lib/typescript/src/games/connect-em-all/components/GameBoard.d.ts +0 -7
  1594. package/lib/typescript/src/games/connect-em-all/components/ScoreBoard.d.ts +0 -6
  1595. package/lib/typescript/src/games/crossy-road/CrossyRoadService.d.ts +0 -89
  1596. package/lib/typescript/src/games/crossy-road/CrossyRoadStore.d.ts +0 -39
  1597. package/lib/typescript/src/games/crossy-road/components/GameArea.d.ts +0 -8
  1598. package/lib/typescript/src/games/crossy-road/components/ScoreBoard.d.ts +0 -6
  1599. package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +0 -39
  1600. package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +0 -97
  1601. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +0 -2
  1602. package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +0 -7
  1603. package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +0 -7
  1604. package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +0 -8
  1605. package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +0 -6
  1606. package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +0 -2
  1607. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesService.d.ts +0 -45
  1608. package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesStore.d.ts +0 -37
  1609. package/lib/typescript/src/games/dots-and-boxes/components/GameBoard.d.ts +0 -7
  1610. package/lib/typescript/src/games/dots-and-boxes/components/ScoreBoard.d.ts +0 -6
  1611. package/lib/typescript/src/games/falling-sticks/FallingSticksService.d.ts +0 -38
  1612. package/lib/typescript/src/games/falling-sticks/FallingSticksStore.d.ts +0 -31
  1613. package/lib/typescript/src/games/falling-sticks/components/GameArea.d.ts +0 -7
  1614. package/lib/typescript/src/games/falling-sticks/components/GameBackground.d.ts +0 -6
  1615. package/lib/typescript/src/games/falling-sticks/components/ScoreBoard.d.ts +0 -6
  1616. package/lib/typescript/src/games/find-different-number/FindDifferentNumberService.d.ts +0 -6
  1617. package/lib/typescript/src/games/find-different-number/FindDifferentNumberStore.d.ts +0 -36
  1618. package/lib/typescript/src/games/find-different-number/components/GameGrid.d.ts +0 -7
  1619. package/lib/typescript/src/games/find-different-number/components/ScoreBoard.d.ts +0 -6
  1620. package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +0 -68
  1621. package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +0 -2
  1622. package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +0 -7
  1623. package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +0 -7
  1624. package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +0 -8
  1625. package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +0 -6
  1626. package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +0 -3
  1627. package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +0 -66
  1628. package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +0 -8
  1629. package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +0 -8
  1630. package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +0 -6
  1631. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +0 -73
  1632. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +0 -38
  1633. package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts +0 -8
  1634. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +0 -7
  1635. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +0 -7
  1636. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +0 -6
  1637. package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +0 -102
  1638. package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +0 -44
  1639. package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +0 -2
  1640. package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +0 -6
  1641. package/lib/typescript/src/games/knife-hit/KnifeHitService.d.ts +0 -48
  1642. package/lib/typescript/src/games/knife-hit/KnifeHitStore.d.ts +0 -41
  1643. package/lib/typescript/src/games/knife-hit/components/GameArea.d.ts +0 -8
  1644. package/lib/typescript/src/games/knife-hit/components/ScoreBoard.d.ts +0 -6
  1645. package/lib/typescript/src/games/ludo-king/LudoKingService.d.ts +0 -33
  1646. package/lib/typescript/src/games/ludo-king/LudoKingStore.d.ts +0 -34
  1647. package/lib/typescript/src/games/ludo-king/components/Dice.d.ts +0 -7
  1648. package/lib/typescript/src/games/ludo-king/components/GameBoard.d.ts +0 -7
  1649. package/lib/typescript/src/games/ludo-king/components/ScoreBoard.d.ts +0 -6
  1650. package/lib/typescript/src/games/maze-runner/MazeRunnerStore.d.ts +0 -62
  1651. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts +0 -10
  1652. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts +0 -33
  1653. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +0 -24
  1654. package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts +0 -24
  1655. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts +0 -9
  1656. package/lib/typescript/src/games/memory-match/MemoryMatchService.d.ts +0 -6
  1657. package/lib/typescript/src/games/memory-match/MemoryMatchStore.d.ts +0 -42
  1658. package/lib/typescript/src/games/memory-match/components/Card.d.ts +0 -6
  1659. package/lib/typescript/src/games/memory-match/components/GameBoard.d.ts +0 -6
  1660. package/lib/typescript/src/games/memory-match/components/ScoreBoard.d.ts +0 -6
  1661. package/lib/typescript/src/games/mine-sweeper/MineSweeperService.d.ts +0 -22
  1662. package/lib/typescript/src/games/mine-sweeper/MineSweeperStore.d.ts +0 -73
  1663. package/lib/typescript/src/games/mine-sweeper/components/GameArea.d.ts +0 -8
  1664. package/lib/typescript/src/games/mine-sweeper/components/ScoreBoard.d.ts +0 -6
  1665. package/lib/typescript/src/games/mob-control/MobControlService.d.ts +0 -74
  1666. package/lib/typescript/src/games/mob-control/MobControlStore.d.ts +0 -66
  1667. package/lib/typescript/src/games/mob-control/components/GameArea.d.ts +0 -11
  1668. package/lib/typescript/src/games/mob-control/components/ScoreBoard.d.ts +0 -6
  1669. package/lib/typescript/src/games/number-search/NumberSearchConstants.d.ts +0 -63
  1670. package/lib/typescript/src/games/number-search/NumberSearchService.d.ts +0 -34
  1671. package/lib/typescript/src/games/number-search/NumberSearchStore.d.ts +0 -70
  1672. package/lib/typescript/src/games/number-search/components/GameBoard.d.ts +0 -7
  1673. package/lib/typescript/src/games/number-search/components/NumberList.d.ts +0 -2
  1674. package/lib/typescript/src/games/number-search/components/ScoreBoard.d.ts +0 -6
  1675. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsService.d.ts +0 -67
  1676. package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsStore.d.ts +0 -45
  1677. package/lib/typescript/src/games/nuts-and-bolts/components/GameBoard.d.ts +0 -7
  1678. package/lib/typescript/src/games/nuts-and-bolts/components/ScoreBoard.d.ts +0 -6
  1679. package/lib/typescript/src/games/pac-man/PacManService.d.ts +0 -73
  1680. package/lib/typescript/src/games/pac-man/PacManStore.d.ts +0 -89
  1681. package/lib/typescript/src/games/pac-man/components/GameCanvas.d.ts +0 -2
  1682. package/lib/typescript/src/games/pac-man/components/ScoreBoard.d.ts +0 -6
  1683. package/lib/typescript/src/games/paper-io/PaperIoService.d.ts +0 -70
  1684. package/lib/typescript/src/games/paper-io/PaperIoStore.d.ts +0 -51
  1685. package/lib/typescript/src/games/paper-io/components/GameArea.d.ts +0 -8
  1686. package/lib/typescript/src/games/paper-io/components/ScoreBoard.d.ts +0 -6
  1687. package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +0 -15
  1688. package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +0 -55
  1689. package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +0 -8
  1690. package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +0 -6
  1691. package/lib/typescript/src/games/pipe-connect/PipeConnectService.d.ts +0 -17
  1692. package/lib/typescript/src/games/pipe-connect/PipeConnectStore.d.ts +0 -31
  1693. package/lib/typescript/src/games/pipe-connect/components/GameArea.d.ts +0 -7
  1694. package/lib/typescript/src/games/pipe-connect/components/ScoreBoard.d.ts +0 -6
  1695. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -30
  1696. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +0 -33
  1697. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +0 -10
  1698. package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +0 -10
  1699. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +0 -6
  1700. package/lib/typescript/src/games/reversi/ReversiStore.d.ts +0 -46
  1701. package/lib/typescript/src/games/reversi/components/GameBoard.d.ts +0 -6
  1702. package/lib/typescript/src/games/reversi/components/ScoreBoard.d.ts +0 -6
  1703. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +0 -6
  1704. package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +0 -38
  1705. package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +0 -7
  1706. package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +0 -6
  1707. package/lib/typescript/src/games/snake-3d/Snake3DService.d.ts +0 -29
  1708. package/lib/typescript/src/games/snake-3d/Snake3DStore.d.ts +0 -49
  1709. package/lib/typescript/src/games/snake-3d/components/GameGrid.d.ts +0 -2
  1710. package/lib/typescript/src/games/snake-3d/components/ScoreBoard.d.ts +0 -6
  1711. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersService.d.ts +0 -22
  1712. package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersStore.d.ts +0 -40
  1713. package/lib/typescript/src/games/snakes-and-ladders/components/Dice.d.ts +0 -7
  1714. package/lib/typescript/src/games/snakes-and-ladders/components/GameBoard.d.ts +0 -2
  1715. package/lib/typescript/src/games/snakes-and-ladders/components/ScoreBoard.d.ts +0 -6
  1716. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts +0 -117
  1717. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts +0 -54
  1718. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -9
  1719. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +0 -9
  1720. package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts +0 -6
  1721. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +0 -6
  1722. package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts +0 -11
  1723. package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts +0 -9
  1724. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireService.d.ts +0 -23
  1725. package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireStore.d.ts +0 -71
  1726. package/lib/typescript/src/games/spider-solitaire/components/Card.d.ts +0 -10
  1727. package/lib/typescript/src/games/spider-solitaire/components/CardPile.d.ts +0 -12
  1728. package/lib/typescript/src/games/spider-solitaire/components/ScoreBoard.d.ts +0 -6
  1729. package/lib/typescript/src/games/stack-tower/StackTowerService.d.ts +0 -51
  1730. package/lib/typescript/src/games/stack-tower/StackTowerStore.d.ts +0 -52
  1731. package/lib/typescript/src/games/stack-tower/components/GameArea.d.ts +0 -8
  1732. package/lib/typescript/src/games/stack-tower/components/ScoreBoard.d.ts +0 -6
  1733. package/lib/typescript/src/games/sudoku/SudokuService.d.ts +0 -24
  1734. package/lib/typescript/src/games/sudoku/SudokuStore.d.ts +0 -65
  1735. package/lib/typescript/src/games/sudoku/components/GameArea.d.ts +0 -8
  1736. package/lib/typescript/src/games/sudoku/components/ScoreBoard.d.ts +0 -6
  1737. package/lib/typescript/src/games/tangram/TangramService.d.ts +0 -6
  1738. package/lib/typescript/src/games/tangram/TangramStore.d.ts +0 -34
  1739. package/lib/typescript/src/games/tangram/components/GameBoard.d.ts +0 -7
  1740. package/lib/typescript/src/games/tangram/components/ScoreBoard.d.ts +0 -6
  1741. package/lib/typescript/src/games/tank-1990/Tank1990Service.d.ts +0 -80
  1742. package/lib/typescript/src/games/tank-1990/Tank1990Store.d.ts +0 -48
  1743. package/lib/typescript/src/games/tank-1990/components/Controls.d.ts +0 -2
  1744. package/lib/typescript/src/games/tank-1990/components/GameBoard.d.ts +0 -2
  1745. package/lib/typescript/src/games/tank-1990/components/ScoreBoard.d.ts +0 -6
  1746. package/lib/typescript/src/games/tic-tac-toe/TicTacToeService.d.ts +0 -0
  1747. package/lib/typescript/src/games/tic-tac-toe/TicTacToeStore.d.ts +0 -51
  1748. package/lib/typescript/src/games/tic-tac-toe/components/GameBoard.d.ts +0 -6
  1749. package/lib/typescript/src/games/tic-tac-toe/components/ScoreBoard.d.ts +0 -6
  1750. package/lib/typescript/src/games/tile-home/TileHomeService.d.ts +0 -1
  1751. package/lib/typescript/src/games/tile-home/TileHomeStore.d.ts +0 -57
  1752. package/lib/typescript/src/games/tile-home/components/AnimatingTile.d.ts +0 -9
  1753. package/lib/typescript/src/games/tile-home/components/FlyingTile.d.ts +0 -16
  1754. package/lib/typescript/src/games/tile-home/components/GameBoard.d.ts +0 -7
  1755. package/lib/typescript/src/games/tile-home/components/ScoreBoard.d.ts +0 -6
  1756. package/lib/typescript/src/games/tile-home/components/TileItem.d.ts +0 -11
  1757. package/lib/typescript/src/games/tile-home/components/TileSlot.d.ts +0 -7
  1758. package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +0 -32
  1759. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +0 -39
  1760. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +0 -7
  1761. package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts +0 -10
  1762. package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts +0 -11
  1763. package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +0 -6
  1764. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +0 -6
  1765. package/lib/typescript/src/games/word-search/WordSearchConstants.d.ts +0 -63
  1766. package/lib/typescript/src/games/word-search/WordSearchService.d.ts +0 -34
  1767. package/lib/typescript/src/games/word-search/WordSearchStore.d.ts +0 -70
  1768. package/lib/typescript/src/games/word-search/components/GameBoard.d.ts +0 -7
  1769. package/lib/typescript/src/games/word-search/components/ScoreBoard.d.ts +0 -6
  1770. package/lib/typescript/src/games/word-search/components/WordList.d.ts +0 -2
  1771. package/lib/typescript/src/helpers/AnimatedScore.d.ts +0 -36
  1772. package/lib/typescript/src/helpers/AnimationFrame.d.ts +0 -40
  1773. package/lib/typescript/src/helpers/AnimationTracker.d.ts +0 -44
  1774. package/lib/typescript/src/helpers/BlastAnimation.d.ts +0 -16
  1775. package/lib/typescript/src/helpers/ErrorHandler.d.ts +0 -123
  1776. package/lib/typescript/src/helpers/GameBackgroundPattern.d.ts +0 -7
  1777. package/lib/typescript/src/helpers/GameControlButton.d.ts +0 -11
  1778. package/lib/typescript/src/helpers/GameOverModal.d.ts +0 -15
  1779. package/lib/typescript/src/helpers/GameTimer.d.ts +0 -26
  1780. package/lib/typescript/src/helpers/Icons.d.ts +0 -12
  1781. package/lib/typescript/src/helpers/ParticleBlast.d.ts +0 -11
  1782. package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +0 -85
  1783. package/lib/typescript/src/helpers/assets/apple-fruit.d.ts +0 -4
  1784. package/lib/typescript/src/helpers/assets/avocado-item.d.ts +0 -4
  1785. package/lib/typescript/src/helpers/assets/banana-fruit.d.ts +0 -4
  1786. package/lib/typescript/src/helpers/assets/bomb-item.d.ts +0 -4
  1787. package/lib/typescript/src/helpers/assets/broccoli-item.d.ts +0 -4
  1788. package/lib/typescript/src/helpers/assets/cherries-fruit.d.ts +0 -4
  1789. package/lib/typescript/src/helpers/assets/donut-item.d.ts +0 -4
  1790. package/lib/typescript/src/helpers/assets/dragonfruit-item.d.ts +0 -4
  1791. package/lib/typescript/src/helpers/assets/fries-item.d.ts +0 -4
  1792. package/lib/typescript/src/helpers/assets/fruit-helpers.d.ts +0 -154
  1793. package/lib/typescript/src/helpers/assets/grapes-fruit.d.ts +0 -4
  1794. package/lib/typescript/src/helpers/assets/icecream-item.d.ts +0 -4
  1795. package/lib/typescript/src/helpers/assets/index.d.ts +0 -31
  1796. package/lib/typescript/src/helpers/assets/kiwi-fruit.d.ts +0 -4
  1797. package/lib/typescript/src/helpers/assets/mango-fruit.d.ts +0 -4
  1798. package/lib/typescript/src/helpers/assets/orange-fruit.d.ts +0 -4
  1799. package/lib/typescript/src/helpers/assets/papaya-fruit.d.ts +0 -4
  1800. package/lib/typescript/src/helpers/assets/papaya-full-fruit.d.ts +0 -4
  1801. package/lib/typescript/src/helpers/assets/peach-fruit.d.ts +0 -4
  1802. package/lib/typescript/src/helpers/assets/pineapple-fruit.d.ts +0 -4
  1803. package/lib/typescript/src/helpers/assets/pomegranate-fruit.d.ts +0 -4
  1804. package/lib/typescript/src/helpers/assets/pumpkin-fruit.d.ts +0 -4
  1805. package/lib/typescript/src/helpers/assets/raspberry-item.d.ts +0 -4
  1806. package/lib/typescript/src/helpers/assets/star-item.d.ts +0 -4
  1807. package/lib/typescript/src/helpers/assets/strawberry-fruit.d.ts +0 -4
  1808. package/lib/typescript/src/helpers/assets/watermelon-fruit.d.ts +0 -4
@@ -0,0 +1 @@
1
+ "use strict";import{effects,quat}from"@nayan-ui/engine";import{popAndBurst}from"../shared/EngineBlasts.js";import{sceneryTint}from"../shared/EngineMeadow.js";import{toColor}from"../shared/EngineUtils.js";import{removeBackdrop,spawnBackdrop}from"./ChameleonRunBackdrop.js";import{COLORS,RUN_COLORS,TRACK_LENGTH}from"./ChameleonRunConstants.js";import{bodyMesh,detailsMesh,eyeDetailsMesh,eyeMesh,legMesh,LIMBS,starMesh,tailMesh}from"./ChameleonRunMeshes.js";import{platformUnder}from"./ChameleonRunRules.js";const FORWARD=quat.y(Math.PI/2),WHITE=[1,1,1,1],NEUTRAL=toColor(COLORS.NEUTRAL),shade=(o,e)=>[o[0]*e[0],o[1]*e[1],o[2]*e[2],o[3]??1],surfaceColor=o=>o.color?toColor(RUN_COLORS[o.color]):NEUTRAL;export const starPosition=(o,e)=>[0,o.height+1.05,e-(o.start+o.end)/2];export function frameCamera(o,e,t=0){o.eye=[0,3.1+t,5.4],o.target=[0,1.1+t,-6],o.fov=e.width/Math.max(1,e.height)<.7?1:.85}export function buildScene(o,e){const t=spawnBackdrop(o,e),n=sceneryTint(e),s=o.spawn({mesh:"none",pickable:!1}),a=o.spawn({mesh:"none",rotation:FORWARD,pickable:!1}),r=toColor(RUN_COLORS.yellow),i=bodyMesh(),l=o.spawn({mesh:i,parent:a,color:r,bob:{amplitude:[0,.004,0],speed:2.2},pickable:!1});o.spawn({mesh:detailsMesh(),parent:a,pickable:!1});const p=tailMesh(),d=o.spawn({mesh:p,parent:a,position:[-.5,-.015,0],color:r,pickable:!1}),h=[];for(const e of[-1,1]){const t=e>0?.27:Math.PI-.27,n=o.spawn({mesh:"none",parent:a,position:[.575,.205,.125*e],rotation:quat.y(t),pickable:!1}),s=eyeMesh(),i=o.spawn({mesh:s,parent:n,color:r,pickable:!1});h.push(i),o.spawn({mesh:eyeDetailsMesh(),parent:n,pickable:!1}),o.animate(n,{rotation:quat.y(t+.13*e)},{duration:e>0?2.7:3.4,repeat:"forever",yoyo:!0,easing:"easeInOut"})}const f=[];for(const e of LIMBS){const t=legMesh(e.side,e.hind),n=o.spawn({mesh:t,parent:a,position:[e.x,e.y,.13*e.side],color:r,pickable:!1});f.push(n)}const m=o.spawn({mesh:"sphere",scale:[.72,.012,1.8],color:[.12,.19,.25,.22],pickable:!1});return{backdrop:t,field:s,chameleon:a,skin:[l,d,...f,...h],legs:f,tail:d,shadow:m,platforms:new Map,tint:n,color:"yellow",stride:!1}}export function removeScene(o,e){removeBackdrop(o,e.backdrop);for(const t of[e.field,e.chameleon,e.shadow])o.despawn(t)}export function syncPlatforms(o,e,t,n){const s=n[0]?.id,a=n[n.length-1]?.id;if(t.syncedFirst===s&&t.syncedLast===a&&t.syncedCount===n.length)return;t.syncedFirst=s,t.syncedLast=a,t.syncedCount=n.length;const r=new Set(n.map(o=>o.id));for(const s of n){if(t.platforms.has(s.id))continue;const n=s.end-s.start,a=o.spawn({mesh:"none",parent:t.field,position:[0,s.height,-(s.start+s.end)/2],pickable:!1}),r=(e,n,s,r,i)=>o.spawn({mesh:e,parent:a,position:n,scale:s,color:shade(r,t.tint),rotation:i,pickable:!1});r("roundedBox",[0,-.65,0],[e.trackWidth,1.2,n],toColor(COLORS.STONE)),r("roundedBox",[0,-1.4,0],[.8*e.trackWidth,.7,.94*n],toColor(COLORS.STONE_DARK)),r("roundedBox",[0,-.105,0],[e.trackWidth+.08,.21,n+.025],surfaceColor(s));for(const o of[-1,1])r("roundedBox",[o*(e.trackWidth/2-.08),-.22,0],[.08,.08,n],toColor(COLORS.RIM));const i=Math.max(2,Math.floor(n/1.5));for(let o=0;o<i;o++){const t=-n/2+.75+1.5*o;if("yellow"===s.color&&r("roundedBox",[.32*-e.trackWidth,.012,t],[.55,.018,.12],[1,.98,.8]),"pink"===s.color)for(const o of[-.16,.16])r("sphere",[.32*-e.trackWidth+o,.018,t],[.16,.025,.16],[1,.85,.96])}r("roundedBox",[0,.015,-n/2+.35],[.8*e.trackWidth,.018,.09],WHITE);for(const o of[-1,1])r("roundedBox",[.18*o,.018,n/2-1.2],[.1,.025,.55],WHITE,quat.y(-.65*o));let l=null;if(s.star&&!s.starCollected&&(l=o.spawn({mesh:starMesh(),parent:a,position:[0,1.05,0],scale:.68,color:[1.6,1.35,.48,1],spin:[0,2.2,0],bob:{amplitude:[0,.09,0],speed:3.2},pickable:!1})),s.end>TRACK_LENGTH){const o=(s.start+s.end)/2-TRACK_LENGTH;for(const t of[-1,1])r("roundedBox",[t*(e.trackWidth/2+.1),1.7,o],[.22,3.4,.3],WHITE);r("roundedBox",[0,3.25,o],[e.trackWidth+.5,.55,.3],toColor("#20354A"));for(let e=0;e<10;e++)r("cube",[.36*(e-4.5),3.25,o+.16],[.35,.36,.02],e%2?WHITE:toColor("#20354A"))}t.platforms.set(s.id,{root:a,star:l})}for(const[e,n]of t.platforms)!r.has(e)&&(o.despawn(n.root),t.platforms.delete(e))}export function drawScene(o,e,t,n){const s=o.transforms;s.position(t.field,0,0,n.distance),s.position(t.chameleon,0,n.y+.5,0);const a=platformUnder(n),r=a?Math.max(0,n.y-a.height):0;s.position(t.shadow,0,(a?.height??-10)+.018,.15),s.scale(t.shadow,.72+.08*r,.012,1.8+.12*r),s.color(t.shadow,.12,.19,.25,a?.2/(1+r):0),s.flush(),syncPlatforms(o,e,t,n.platforms)}export function setStride(o,e,t){e.stride!==t&&(e.stride=t,o.set(e.chameleon,{bob:t?{amplitude:[0,.009,0],speed:16}:null}),e.legs.forEach((e,n)=>{o.stopAnimation(e);const s=0===n||3===n?1:-1;t?(o.set(e,{rotation:quat.z(-.28*s)}),o.animate(e,{rotation:quat.z(.28*s)},{duration:.2,easing:"easeInOut",repeat:"forever",yoyo:!0})):o.animate(e,{rotation:quat.z(.18*s)},{duration:.12})}),o.stopAnimation(e.tail),o.animate(e.tail,{rotation:quat.x(t?.1:.035)},{duration:.32,repeat:"forever",yoyo:!0,easing:"easeInOut"}))}export function tintChameleon(o,e,t,n=0){if(t!==e.color){e.color=t;for(const n of e.skin)o.set(n,{color:toColor(RUN_COLORS[t])});effects.sparkle(o,{position:[0,n+.65,0],colors:toColor(RUN_COLORS[t]),size:.06,speed:1.3,count:7,lifetime:.22,flash:!1})}}export function hop(o,e,t){o.animate(e.chameleon,[{scale:[.97,1.06,.97],at:.3},{scale:1}],{duration:.25}),t&&(o.set(e.chameleon,{rotation:FORWARD}),o.animate(e.chameleon,{turn:[0,0,2*-Math.PI]},{duration:.4,easing:"easeOut"}))}export function land(o,e,t){o.stopAnimation(e.chameleon),o.set(e.chameleon,{rotation:FORWARD,scale:1}),o.animate(e.chameleon,[{scale:[1.04,.94,1.03],at:.25},{scale:1}],{duration:.2}),effects.dust(o,{position:[0,t.height+.05,0],count:7,size:.13,speed:1.5,lifetime:.3,color:[.85,.93,1,.45],endSize:1.8,direction:[0,1,0],spread:1.4})}export function collectStar(o,e,t,n){const s=e.platforms.get(t.id);if(null==s?.star)return;const a=s.star;s.star=null;const r=starPosition(t,n);o.set(a,{parent:null,position:r,bob:null,spin:[0,0,0]}),popAndBurst(o,a,{scale:.68,color:[1.6,1.35,.48,1],duration:.3},{position:r,size:.5,color:toColor(COLORS.STAR),count:12}).then(()=>{o.has(a)&&o.despawn(a)})}export function stumble(o,e,t){o.animate(e.chameleon,{shake:.12},{duration:.4}),effects.sparkle(o,{position:[0,t.y+.4,0],colors:[toColor(RUN_COLORS[t.color]),WHITE],size:.08,speed:2,count:10,lifetime:.35})}export function tumble(o,e,t){setStride(o,e,!1),o.animate(e.chameleon,{moveBy:[0,-2.8,0],turn:[1.2,0,.7],scale:.25},{duration:.65,easing:"easeIn"}),"color"===t.failure&&effects.sparkle(o,{position:[0,t.y+.4,0],colors:[toColor(RUN_COLORS[t.color]),WHITE],size:.1,speed:3.2,count:20,lifetime:.45})}export function cheer(o,e,t){setStride(o,e,!1),effects.confetti(o,{position:[0,t.y+1,0],colors:[toColor(RUN_COLORS.pink),toColor(RUN_COLORS.yellow),WHITE],count:55,size:.1,speed:4,gravity:-3,lifetime:1.6}),o.animate(e.chameleon,[{moveBy:[0,.35,0],at:.5},{moveBy:[0,0,0]}],{duration:.65,repeat:3}),o.animate(e.chameleon,{rotation:quat.y(-Math.PI/2)},{duration:.5,delay:.5,easing:"easeInOut"})}export function clearPlatforms(o,e){for(const t of e.platforms.values())o.despawn(t.root);e.platforms.clear(),e.syncedCount=void 0}export function resetChameleon(o,e){o.stopAnimation(e.chameleon),setStride(o,e,!1),o.set(e.chameleon,{scale:1,rotation:FORWARD,bob:null}),e.color="yellow";for(const t of e.skin)o.stopAnimation(t),o.set(t,{color:toColor(RUN_COLORS.yellow)})}
@@ -1 +1 @@
1
- "use strict";const _0x3a9ebc=_0x38e9;!function(){const e=_0x38e9,o=_0x1062();for(;;)try{if(829139==parseInt(e(227,"F#^4"))/1*(-parseInt(e(264,"xvuK"))/2)+parseInt(e(147,"quny"))/3*(parseInt(e(183,"jE@y"))/4)+-parseInt(e(146,"4ci&"))/5+parseInt(e(159,"%0X$"))/6*(parseInt(e(208,"jye3"))/7)+parseInt(e(191,"XLwm"))/8*(parseInt(e(162,"of1g"))/9)+parseInt(e(157,"^gNk"))/10+-parseInt(e(178,")QdJ"))/11*(-parseInt(e(229,"c3N0"))/12))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x2b16c9,{useEffect,useRef,useCallback,useMemo}from"react";function _0x1062(){const e=["W6BdUwjOwSoTvsPud8oSna","gKqnimoQ","u8k0DsTt","W6RdR8ozW7JdVSkHEdpcRa","eHGaCmkdusJdIW","jSkevte","etGLdmk0WPlcKG","fHGAv8ksqG","WOVcOaTxBq","aCkAe8kHxSo/nCkv","WPjiW4K","W7NdPSoXFw4","ntDMWRhcTx7cHa","hr3cGvvr","bhxcVmkyW4uOW4C","W77dU8oQyuZdG8ohWRe","WOxcMCk8W6JcHCozgahdH0BcTIfb","yCo8cYfT","W7jEW4ldPSkkW6JcIJNcTq","WP9AWRywnfq5WQa","W5RcSgBcMSksW7lcNmkhnLpcMezzlCoQW6dcHSkcWRdcNmkDW6pcPmocs8o8xq","AMeRW77cOhxdOG","fGGguCksxIG","jc4uW5tcJuNdNmkQySk3W6G","WQlcRJuQcq","tmoloJ5fWQxcTHNcR2BcPhBcNcm","u8kJW5WjW4tcLuO","tSoNWPldVcSYvYu2mmka","W7NcKmkZeHCqvCo3a1e","b8oKW4OcW5xcKvRcPq","WPhcKSo5W5LvwSkAiYRcRCoYdSoQoa","C8kEW6S4W6RcVMZcGG","jCknqcCdWRi","Amk0uWboweC","rCk1W6ldK8oDWPzHya","eLW3W5qt","W63cSmoXoSkdW6ZcGcpdVa","j8kovsChWQhdNG","tCohWQesihpcQCk5WRffDv5s","DM5rWPBdMvddGW","WRCAbg/dQCkb","vfOwsxS","WOTlWQ01b1qGWQa","WR/cVG5DCCoufG","WRJdGCkzWOtcMmkOecRdRmkfWPa","c1WaW40FWPOuWPC","q3HGtSoGWOVcJCo+hulcRW","W6VcTMJcNmox","W7/dQSo2Dh/dPColWRNcGG","WOHeW4VcH3W","atK4dSkwWP3cI8od","vvCEwevfW6qsiCoGW70G","bCkkfCkat8oWnq","kauLjmkw","CN5xWRFdIf/dG8kx","WOzuW5xcGvVdPwC","W640fSkCWPtdUhtdPsVcMSkz","q0ree8oab2/dImoqW7hcOYqJ","WQ4+W6pdNtKbWRW2","W5tdHCo4WOVdHSkpxWi","WQ7dO8kWzSooWPVdKHtdQSkNW6v1aW","uSkUvfjzv11HW6nSDmommH7cP8o3q05xWOS","WQWFW7ddTSknW6VcJce","B8kOuGjhv0OpW610zq","W7ZcUSoSk8kwW4lcJYVdQW","EIzYW7KLWQWCWOpcJa","W6NdUuODimkiuSoglMtdISkiW5e","WRHJb8kJWOZdH1JdNG","bghcOmkjW4uQ","W7LyW6ddU8kwW6/cVddcQmoE","WPZcN8o5W55U","lIVcHfrE","rIBcMKfhBSosDW","t8omWRqJohFcLCk9","D8kzrL4U","paGrW4jrCHLCW4a","WRxdH8kxaCo8f8oo","rSoqitHjWQRcRG","nKqlW53cUG","jtz7WRpcL3hcNuG","W4/cOXC+W60","W6y/nSkaWOddUhq","W6pdV20VhCkSDYTb","WPjiW4NcNvVdUq","WRKwWOjUCfBcL8kIW50","rCkvW4ldK8oOWRXonsRcQbXidCkDdmkicmoWW4q","owuMW4lcNNVdPCkv","W6RcShtcI8ogW4hcLCkpCW","W7DfuJhcUSoeWRWte8olkrP6","W7GJW67cQ0S","W6NcKSkYaXCW","mq8Jn8oYuSoVoSowW53dSNGrCG","WRVcRGH8ymoBfSoQ","W63cLSkVfaCUuCohcvlcIq","agxcUSk5W5qNW4FdSa","W6JdMCoWy1K","g249gmotWQRcVmkThNaus8krWPO","W77cUwlcLG","W5NcP8kDmIy","W69TW6xdSJ0IWPilBCkt","kNWLtGRcV8oYWP0","pwe8W7lcJ3y","WRpdH8oSvHC/x8oXlNC","mZ7cMfblWQr2W58","W4tcGr0oW6lcN8oy","WRddISk9WRVcJCkWjsG","eca6pmkE","WPHbWOOsavW6WQi","dKBcUCkcW7O","eCkDW7bgkxxcISk8WOL7","W7FdRCoZzgi","EctcJH7cGZaoWPa","q1OqseW","vsZcVwzbzSoiDq","WP86WRXojetcPSoU","W5u/WQ/cQCky","v1WlAv1bW4my","F8ozegzsW7tcI8omW495cwRdKa","WQOBWQBcTSoaWRhdMW/cO8oTFmoWlG","lCkZW5xcOHi","nCkCcmkatW","W7RcTSkAfJu","WQiscwRdQ8kbW6mqmCoAjH5DW5RcLG","W6ZdRmo7dSoaW7H5WOCEWQPwh0pcHCoGi3qCbrZcUsqfW7q7qq","lqiB","W5/dOCoQFCogW7zVWO0","W58rW7RcR3Goy2e","W4NdKmoKWO/dKW","pmo3guiDaqm3W4bStmkhfG","psJcVg9EWRXRW5tdJa","WQHhW5ZcKmkKE8kwy3O","W7hdGSoZEmoC","awZcQ8ks"];return(_0x1062=function(){return e})()}import{View,StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useCheckersStore}from"./CheckersStore.js";import{GameBoard}from"./components/GameBoard.js";function _0x38e9(e,o){e-=138;const t=_0x1062();let W=t[e];if(void 0===_0x38e9.nggzbE){const e=function(e,o){let t,W,r=[],s=0,n="";for(e=function(e){let o="",t="";for(let t,W,r=0,s=0;W=e.charAt(s++);~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++)s=(s+r[W]+o.charCodeAt(W%o.length))%256,t=r[W],r[W]=r[s],r[s]=t;W=0,s=0;for(let o=0;o<e.length;o++)W=(W+1)%256,s=(s+r[W])%256,t=r[W],r[W]=r[s],r[s]=t,n+=String.fromCharCode(e.charCodeAt(o)^r[(r[W]+r[s])%256]);return n};_0x38e9.XVwhDP=e,_0x38e9.EMOcUD={},_0x38e9.nggzbE=!0}const r=t[0];_0x38e9.FJMbdn!==r&&(_0x38e9.EMOcUD={},_0x38e9.FJMbdn=r);const s=_0x38e9.EMOcUD[e];return void 0===s?(void 0===_0x38e9.WdaJom&&(_0x38e9.WdaJom=!0),W=_0x38e9.XVwhDP(W,o),_0x38e9.EMOcUD[e]=W):W=s,W}import{ScoreBoard}from"./components/ScoreBoard.js";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x1e87cb}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 _0x41688b,jsxs as _0x310b19}from"react/jsx-runtime";export const Checkers=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:W,onShare:r,onShareScreenshot:s,onShowLeaderboard:n,bannerAd:a})=>{const d="xvuK",u="F#^4",k="XpqW",i=_0x38e9,S={IFmVn:i(252,d),zphWa:i(257,"3g2D"),hWxBj:function(e,o){return e===o},DYXkA:i(203,"fqRe"),Wkwxy:function(e,o){return e(o)},CDLse:i(167,"4ci&"),zbvui:function(e,o){return e(o)},RrnPb:i(164,"^gNk"),iFwhZ:i(165,")QdJ"),dZqgX:i(152,"PMV6"),pEFvG:function(e,o){return e(o)},ZHrZG:function(e,o,t){return e(o,t)},LtoEj:function(e,o,t){return e(o,t)},JHAvJ:function(e,o,t){return e(o,t)}},C=S[i(150,d)](useCheckersStore,e=>e.isGameOver),m=useCheckersStore(e=>e.isPlaying),x=useRef(!1),f=useRef(e);f.current=e;const l=useRef(t);l[i(188,"XLwm")]=t;const h=useRef(W);h[i(184,"Q!b6")]=W;const G=S[i(197,u)](useCallback,e=>{const o=i;if(l[o(238,"[8XN")]&&!x[o(195,"^gNk")]){const t=useCheckersStore[o(267,"jnGE")]();l[o(266,"68om")]({status:e,score:t[o(209,"hV8N")][o(269,"J@HN")]()}),x[o(217,"9#Ng")]=!0}},[]);useEffect(()=>{const e=i;return useCheckersStore[e(166,"Q!b6")]()[e(253,"cH9k")](),()=>{const o=e,t={};t[o(163,"W75G")]=S[o(160,"PMV6")];const W=t;if(S[o(156,")QdJ")]!==S[o(233,"olgk")])return _0xf8d22a.getState().initializeGame(),()=>{const e=o;_0x54c560[e(235,"!EjB")]()[e(158,"olgk")]&&!_0x1ebc80[e(214,"1J#C")]&&_0x3ae7d5(W[e(240,"jE@y")]),_0x3714b2.getState()[e(177,"3g2D")](),_0x10620c[e(256,"XpqW")]().resetGame()};useCheckersStore[o(145,"fqRe")]().isPlaying&&!x[o(205,"3vjZ")]&&G(S[o(175,"olgk")]),useCheckersStore[o(235,"!EjB")]()[o(241,"*5e1")](),useCheckersStore.getState()[o(198,"t)Jg")]()}},[G]),S[i(197,u)](useEffect,()=>{const e=i;if(S[e(242,"68om")](S[e(179,"E(uR")],e(232,"Rui@")))C&&!x[e(176,"XpqW")]&&(useCheckersStore[e(142,"wVIo")]()[e(202,"w^Cf")]===e(153,"s6lm")?G(e(172,"9#Ng")):S[e(170,"3vjZ")](G,S[e(236,"wibb")])),!C&&(x.current=!1);else if(_0x44bb53[e(174,"*5e1")]&&!_0x131f10.current){const o=_0x53c935[e(145,"fqRe")]();_0x265cbe[e(238,"[8XN")]({status:_0x3ec57b,score:o.score[e(234,"wVIo")]()}),_0x3304d8[e(239,"E(uR")]=!0}},[C,G]);const _=useCallback(()=>{const e=i;x[e(168,"jye3")]=!1,useCheckersStore[e(216,"cC0Y")]().startGame(),playSound(GAME_SOUNDS[e(207,"F#^4")][e(260,"xvuK")],f.current[e(213,"fqRe")]),playHaptic(HapticType.MEDIUM,f.current[e(200,"!EjB")])},[]),b=useCallback(()=>{const e=i;G(e(263,"jE@y")),useCheckersStore[e(267,"jnGE")]()[e(212,"jye3")](),useCheckersStore[e(254,"3vjZ")]().resetGame(),useCheckersStore[e(204,"J@HN")]()[e(258,"W75G")]()},[G]),R=S.LtoEj(useCallback,()=>{const e=i;e(211,"9#Ng")!==e(268,"jye3")?(h[e(201,"cC0Y")]?.(),x.current=!1,useCheckersStore[e(248,"jE@y")]()[e(210,"3g2D")](),useCheckersStore[e(171,"1J#C")]()[e(192,"Rui@")]()):(S[e(139,"3g2D")](_0x4f4460,e(230,k)),_0xaa32ea[e(256,k)]()[e(181,"J@HN")](),_0x56d4b1.getState()[e(249,"hV8N")](),_0xc68cc5[e(221,")QdJ")]().initializeGame())},[]),g=S.ZHrZG(useCallback,e=>{useCheckersStore[i(140,"KI7F")]().handleSelect(e,f.current)},[]),p=useMemo(()=>({isPlaying:!C&&m,gameOver:C,onStartGame:_,onStopGame:b,onShare:r,onShowLeaderboard:n,startButtonSubtext:i(182,"hV8N")}),[C,m,_,b,r,n]),O=useMemo(()=>{const e=i;if("baRJb"!==S[e(148,"a*$4")]){const o=useCheckersStore[e(265,"olgk")](),t=!!C&&"red"===o[e(245,"9#Ng")],W=!!C&&o.isTimedOut,r={};return r[e(180,"quny")]=C,r[e(141,"fqRe")]=o[e(186,"of1g")],r[e(190,"xvuK")]=e(149,"1J#C"),r[e(206,"jnGE")]=R,r[e(231,"quny")]=e(189,"bnkf"),r[e(173,"3g2D")]=t?e(196,"XKc("):W?e(143,"vwJi"):S[e(270,"XpqW")],r[e(199,"4ci&")]=t?e(247,"XKc("):W?e(223,"^gNk"):S[e(251,"BA@s")],r}_0xc315e3[e(195,"^gNk")]?.(),_0x5dbbad[e(239,"E(uR")]=!1,_0x2fe119[e(154,"PMV6")]()[e(246,"vwJi")](),_0x3ebd2f.getState()[e(187,"E(uR")]()},[C,R]),N=useMemo(()=>({gameId:GAME_IDS[i(193,"XLwm")],settings:e||DEFAULT_GAME_SETTINGS,onSettingsChange:o}),[e,o]),v=e?.offset??0,q={};q[i(261,"T())")]=v;const E=useMemo(()=>[styles[i(262,"WF4m")],q],[v]),j={};j[i(194,"4ci&")]=v;const J={};J.onCellPress=g;const y={...p},H={...O};H[i(243,"c3N0")]=s,H.bannerAd=a;const Q={...N};return _0x41688b(View,{style:styles[i(226,"t)Jg")],children:_0x41688b(GestureHandlerRootView,{style:styles[i(218,"c3N0")],children:_0x310b19(_0x1e87cb,{children:[_0x41688b(ScoreBoard,j),S[i(215,"jye3")](_0x41688b,View,{style:E,children:_0x41688b(GameBoard,J)}),_0x41688b(GameControlButton,y),_0x41688b(GameOverModal,H),S[i(144,"%0X$")](_0x41688b,GameSettingsModal,Q)]})})})};Checkers[_0x3a9ebc(225,"^gNk")]=_0x3a9ebc(155,"BA@s");const _0x1170fb={};_0x1170fb[_0x3a9ebc(259,"hV8N")]=1,_0x1170fb[_0x3a9ebc(151,"w^Cf")]=BACKGROUND_COLOR;const _0x1524d8={flex:1},_0x8de224={};_0x8de224[_0x3a9ebc(161,"XpqW")]=1,_0x8de224.justifyContent=_0x3a9ebc(169,"Q!b6"),_0x8de224.alignItems="center";const _0x13fd39={};_0x13fd39[_0x3a9ebc(237,"s6lm")]=_0x1170fb,_0x13fd39[_0x3a9ebc(255,"xvuK")]=_0x1524d8,_0x13fd39.gameArea=_0x8de224;const styles=StyleSheet.create(_0x13fd39);
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{BOARD_BORDER_WIDTH,GAME_DURATION,getLayout,LIGHT}from"./CheckersConstants.js";import{createGame,dispose,drag,reset,setLayout,setTheme,start,tick}from"./CheckersGame.js";import{HUMAN,PIECES_PER_SIDE}from"./CheckersRules.js";import{jsx as _0x16cc56}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.CHECKERS,FEEDBACK={select:{sound:SOUNDS.SELECT,haptic:HapticType.LIGHT},move:{sound:SOUNDS.MOVE,haptic:HapticType.LIGHT},capture:{sound:SOUNDS.CAPTURE,haptic:HapticType.MEDIUM},king:{sound:SOUNDS.KING},win:{sound:SOUNDS.WIN,haptic:HapticType.SUCCESS},lose:{sound:SOUNDS.LOSE,haptic:HapticType.ERROR}};export const Checkers=engineGame(GAME_IDS.CHECKERS,e=>{const[t,s]=useLiveState(0),[r,o]=useLiveState(0),[i,a]=useLiveState(GAME_DURATION),{game:n,theme:m,status:S,screen:E,gameOver:u}=useEngineGame(e,{gameId:GAME_IDS.CHECKERS,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,r)=>{const o=getLayout(t,s,r);return setLayout(e,o),o.size+2*BOARD_BORDER_WIDTH},drag:drag,outcome:e=>e.winner===HUMAN?"win":"lose",sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),onOver:(e,t,s)=>{s.timedOut&&e(SOUNDS.TIME_UP,HapticType.ERROR)},wire:(e,t)=>{e.onScore=s,e.onCaptured=o,e.onTime=a,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}}),p=n.timedOut;return _0x16cc56(EngineGameScreen,{...E,light:LIGHT,columns:[scoreColumn(t),textColumn("CAPTURED",r+"/"+PIECES_PER_SIDE),timerColumn(i,m)],subtext:"Capture the robot's pieces!",gameOver:u({title:"win"===S?"YOU WON!":p?"TIME UP!":"YOU LOST!",message:"win"===S?"You beat the robot!":p?"You ran out of time!":"The robot wins this round!",scoreLabel:"Score",score:t,buttonText:"Play Again!"})})});
@@ -0,0 +1 @@
1
+ "use strict";const BOARD_N=8,SQUARES=64,LAST_ROW_START=56,AI_SIDE=1,HUMAN_SIDE=-1,DIR_R=[-1,-1,1,1],DIR_C=[-1,1,-1,1],STEP=new Int8Array(256),JUMP=new Int8Array(256);for(let o=0;o<64;o++){const r=Math.floor(o/8),e=o%8;for(let t=0;t<4;t++){const n=r+DIR_R[t],a=e+DIR_C[t],f=r+2*DIR_R[t],s=e+2*DIR_C[t];STEP[4*o+t]=n>=0&&n<8&&a>=0&&a<8?8*n+a:-1,JUMP[4*o+t]=f>=0&&f<8&&s>=0&&s<8?8*f+s:-1}}const dirLo=o=>1===o?2:0,dirHi=o=>-1===o?2:4,promotes=(o,r)=>1===o&&r>=56||-1===o&&r<8,MAN_VALUE=100,KING_VALUE=175,EVAL=new Int16Array(320);for(let o=0;o<64;o++){const r=Math.floor(o/8);EVAL[192+o]=100+2*r,EVAL[256+o]=175,EVAL[64+o]=-(100+2*(7-r)),EVAL[0+o]=-175}const MAX_CAPTURES=12,STRIDE=28,board=new Int8Array(64),plyBuffers=[];let genBuf=[],genCount=0;const capSq=new Int8Array(12),capCode=new Int8Array(12),record=(o,r,e,t)=>{let n=28*genCount;genBuf[n++]=o,genBuf[n++]=r,genBuf[n++]=e?1:0,genBuf[n++]=t;for(let o=0;o<t;o++)genBuf[n++]=capSq[o],genBuf[n++]=capCode[o];genCount++},expandJumps=(o,r,e,t,n,a,f)=>{let s=!1;for(let u=a;u<f;u++){const d=JUMP[4*r+u];if(d<0||0!==board[d])continue;const i=STEP[4*r+u],l=board[i];l*t>=0||(s=!0,board[r]=0,board[i]=0,board[d]=e,capSq[n]=i,capCode[n]=l,promotes(e,d)?record(o,d,!0,n+1):expandJumps(o,d,e,t,n+1,a,f),board[d]=0,board[i]=l,board[r]=e)}!s&&n>0&&record(o,r,!1,n)},generateMoves=(o,r)=>{genBuf=r,genCount=0;for(let r=0;r<64;r++){const e=board[r];e*o>0&&expandJumps(r,r,e,o,0,dirLo(e),dirHi(e))}if(genCount>0)return genCount;for(let r=0;r<64;r++){const e=board[r];if(e*o<=0)continue;const t=dirHi(e);for(let o=dirLo(e);o<t;o++){const t=STEP[4*r+o];t>=0&&0===board[t]&&record(r,t,promotes(e,t),0)}}return genCount},hasAnyMove=o=>{for(let r=0;r<64;r++){const e=board[r];if(e*o<=0)continue;const t=dirHi(e);for(let n=dirLo(e);n<t;n++){const e=STEP[4*r+n];if(e<0)continue;const t=board[e];if(0===t)return!0;if(t*o<0){const o=JUMP[4*r+n];if(o>=0&&0===board[o])return!0}}}return!1},evaluate=()=>{let o=0;for(let r=0;r<64;r++){const e=board[r];0!==e&&(o+=EVAL[64*(e+2)+r])}return o},makeMove=(o,r)=>{const e=o[r],t=board[e];board[e]=0;const n=o[r+3];for(let e=0;e<n;e++)board[o[r+4+2*e]]=0;board[o[r+1]]=o[r+2]?2*t:t},unmakeMove=(o,r)=>{const e=o[r+1],t=o[r+2]?board[e]/2:board[e];board[e]=0;const n=o[r+3];for(let e=0;e<n;e++)board[o[r+4+2*e]]=o[r+5+2*e];board[o[r]]=t},minimax=(o,r,e,t,n)=>{const a=r?1:-1;if(0===o)return hasAnyMove(a)?evaluate():r?-1e5:1e5;const f=plyBuffers[n]??(plyBuffers[n]=[]),s=generateMoves(a,f);if(0===s)return r?-1e5+o:1e5-o;if(r){let r=-1/0;for(let a=0;a<s;a++){makeMove(f,28*a);const s=minimax(o-1,!1,e,t,n+1);if(unmakeMove(f,28*a),s>r&&(r=s),r>e&&(e=r),t<=e)break}return r}let u=1/0;for(let r=0;r<s;r++){makeMove(f,28*r);const a=minimax(o-1,!0,e,t,n+1);if(unmakeMove(f,28*r),a<u&&(u=a),u<t&&(t=u),t<=e)break}return u},rootBuf=[];export const bestAIMoves=(o,r,e)=>{for(let r=0;r<64;r++){const e=o[r];board[r]=e?("black"===e.player?1:-1)*(e.king?2:1):0}let t=-1/0,n=[];for(const o of r){const r=o.steps[o.steps.length-1];let a=0;for(const r of o.steps)null!==r.captured&&(rootBuf[4+2*a]=r.captured,rootBuf[5+2*a]=board[r.captured],a++);rootBuf[0]=o.from,rootBuf[1]=r.to,rootBuf[2]=promotes(board[o.from],r.to)?1:0,rootBuf[3]=a,makeMove(rootBuf,0);const f=minimax(e-1,!1,t-1,1/0,0);unmakeMove(rootBuf,0),f>t?(t=f,n=[o]):f===t&&n.push(o)}return n};
@@ -1 +1 @@
1
- "use strict";const _0x112252=_0x2851;!function(){const o=_0x2851,t=_0x5c8f();for(;;)try{if(604458==-parseInt(o(285,"rFbO"))/1*(parseInt(o(254,"JN0y"))/2)+-parseInt(o(267,"6AL("))/3*(parseInt(o(288,"nohU"))/4)+-parseInt(o(270,"N^nP"))/5+-parseInt(o(291,"vM5J"))/6+parseInt(o(294,"M)l$"))/7+-parseInt(o(263,"M3Ym"))/8+-parseInt(o(287,"V*di"))/9*(-parseInt(o(248,"bok&"))/10))break;t.push(t.shift())}catch(o){t.push(t.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR,lighten,darken}from"../../services/GamesConstants.js";import{getGameDimensions,isTablet}from"../../services/UtilsService.js";const{width:width}=getGameDimensions();export const BOARD_N=8;const _0x1336af={};_0x1336af.PADDING=isTablet?12:9,_0x1336af[_0x112252(269,"$TZ8")]=isTablet?12:9,_0x1336af[_0x112252(275,"JN0y")]=isTablet?18:14,_0x1336af[_0x112252(250,"Mmi#")]=_0x112252(259,"]u9L"),_0x1336af[_0x112252(268,"V*di")]=_0x112252(286,"mE0G"),_0x1336af[_0x112252(277,"@3[L")]="#3a2518",_0x1336af[_0x112252(261,"fymC")]="#7a5a45";export const BOARD_3D=_0x1336af;const OUTER_TARGET=Math[_0x112252(279,"E!r^")](width,isTablet?560:460);export const CELL=Math[_0x112252(289,"1os%")]((OUTER_TARGET-2*BOARD_3D.PADDING)/8);export const INNER_SIZE=8*CELL;export const BOARD_OUTER_W=INNER_SIZE+2*BOARD_3D[_0x112252(265,"M)l$")];export const BOARD_OUTER_H=BOARD_OUTER_W+BOARD_3D.DEPTH;function _0x2851(o,t){o-=247;const _=_0x5c8f();let x=_[o];if(void 0===_0x2851.uOvCNw){const o=function(o,t){let _,x,d=[],n=0,e="";for(o=function(o){let t="",_="";for(let _,x,d=0,n=0;x=o.charAt(n++);~x&&(_=d%4?64*_+x:x,d++%4)?t+=String.fromCharCode(255&_>>(-2*d&6)):0)x="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(x);for(let o=0,x=t.length;o<x;o++)_+="%"+("00"+t.charCodeAt(o).toString(16)).slice(-2);return decodeURIComponent(_)}(o),x=0;x<256;x++)d[x]=x;for(x=0;x<256;x++)n=(n+d[x]+t.charCodeAt(x%t.length))%256,_=d[x],d[x]=d[n],d[n]=_;x=0,n=0;for(let t=0;t<o.length;t++)x=(x+1)%256,n=(n+d[x])%256,_=d[x],d[x]=d[n],d[n]=_,e+=String.fromCharCode(o.charCodeAt(t)^d[(d[x]+d[n])%256]);return e};_0x2851.frLITg=o,_0x2851.EUnKTO={},_0x2851.uOvCNw=!0}const d=_[0];_0x2851.iNUwCQ!==d&&(_0x2851.EUnKTO={},_0x2851.iNUwCQ=d);const n=_0x2851.EUnKTO[o];return void 0===n?(void 0===_0x2851.sWBdAT&&(_0x2851.sWBdAT=!0),x=_0x2851.frLITg(x,t),_0x2851.EUnKTO[o]=x):x=n,x}export const PIECE_RADIUS=Math[_0x112252(281,"Z23t")](.38*CELL);const _0x22b7d5={};_0x22b7d5[_0x112252(258,"JN0y")]=BACKGROUND_COLOR,_0x22b7d5.PRIMARY=PRIMARY_COLOR,_0x22b7d5[_0x112252(249,"M3Ym")]=_0x112252(260,"8]zg"),_0x22b7d5.DARK_SQ=_0x112252(257,"Gr^p"),_0x22b7d5.SELECT=_0x112252(278,"$TZ8"),_0x22b7d5.MOVE_DOT=_0x112252(273,"qGM@"),_0x22b7d5[_0x112252(272,"aCBg")]=_0x112252(290,"M)l$"),_0x22b7d5[_0x112252(255,"Ywna")]="rgba(0,0,0,0.30)";export const CHECKERS_COLORS=_0x22b7d5;const RED_BASE="#E53935";export const RED_3D={top:lighten(RED_BASE,.3),bottom:darken(RED_BASE,.28),rim:darken(RED_BASE,.5),highlight:lighten(RED_BASE,.55),shadow:_0x112252(271,"V[%J")};function _0x5c8f(){const o=["WQhcS8khlmk4W5NdHW","WQqOcCoich9rW5tdOMxcSmo/","WRq6W6aVk0/dK8oPBmkCCq","lmoZWOpdImo2pSkbbmoTWORcQea","WO0zWPVcGCofkmo5","W5ryESkXEbvkW4tdVxS","BmkPW5ldL3fYWRC","WRzEttNcISowW5S","W79TCmk+D8kUjudcMq","W4qHW5TAWPJdMKGcoZ0EW6Tf","jLVdHSkEW5dcOmkzErTwWQxdNc8","WQqAW6afWOzVWQC","cCkgcmoHe3VcMa","W6DTCSk1FSk0pvJcImknfNZcTrFdPa","uwVdKKVcGIRdNmk0","W6NdV8oyhxy","x3xcPCo7WP4","WP/cOmoUW6pdICk3WR/cVaBdUHhcSCoy","W65ZW6KxuxyZWQZcH8ojySkbf8o1E2S","y8kJl8kYfmo7kSk0imoPmrO","WRBcNW/cShLvW7ldOfeuFuxcUmkcWRGOfdRdPmojmCoG","WPJdOWpdLJ46iSky","W4ryFCkZAHq","WQNcVeNdS0BdMCkFW6vht8oWW5P/","lKldRmkeW54","AvFcL8ooW77cImo0W4rHxcSppwforCk7WQawvmkwW5qfdq","umkoEW","WO3cJWVdSNi","emk6W7tcNhu","W5RdPSkdamo9vCkiWP4A","WPRcP8oBq8kKjCkV","WRtcOCkeWQBcRCkRqmokWR4","W74CWPvZwmosla","WQynu8kag8k1W4u","WPZcLCkGcM8NWQdcSmoQ","WP/cJwi2fSklWQtdVmojW4tcVha","W7RcSLCsAa","k8kGlSoeCGFdQXjtW6JcISoZjuGGu0FdLmokfCkaW7VcRq","kmoWWOpdG8o0n8oclCoUWP3cK1ldIa","tNFdVCkbrG","t8kaD8k3B8o8WOxdU8ogE8k8gmoIWRpcGG","A8o0ECktBqddRhypWR3dQmkiEG","WQ7dRWHplwJdVCkqzYaIka","WONdU2GgW4jSn8kpWQKAWONdSG","wctcUmoNWRFdJCoYsq","E0JdRG","WONdVHy3zCkjW44","W659W6ur"];return(_0x5c8f=function(){return o})()}const BLACK_BASE=_0x112252(283,"Ad#U");export const BLACK_3D={top:lighten(BLACK_BASE,.28),bottom:darken(BLACK_BASE,.4),rim:darken(BLACK_BASE,.6),highlight:lighten(BLACK_BASE,.5),shadow:_0x112252(293,"E!r^")};const _0x374f8e={};_0x374f8e[_0x112252(252,"V[%J")]=_0x112252(264,"mTl@"),_0x374f8e[_0x112252(280,"BAiM")]=_0x112252(253,"LTor"),_0x374f8e[_0x112252(282,"Ad#U")]=_0x112252(251,"nohU");export const KING_3D=_0x374f8e;const _0x3778dd={BOARD_N:8};_0x3778dd[_0x112252(266,"fymC")]=12,_0x3778dd.GAME_DURATION=300,_0x3778dd.POINTS_PER_CAPTURE=500,_0x3778dd.KING_BONUS=500,_0x3778dd[_0x112252(284,"Aj)m")]=5e3,_0x3778dd[_0x112252(276,"9ke^")]=550,_0x3778dd.AI_DEPTH=5;export const CHECKERS_CONFIG=_0x3778dd;export const rc=o=>({row:Math[_0x112252(292,"]STK")](o/8),col:o%8});export const idx=(o,t)=>8*o+t;export const inBounds=(o,t)=>o>=0&&o<8&&t>=0&&t<8;export const isPlayable=(o,t)=>(o+t)%2==1;
1
+ "use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GAME_DURATION=300;export const POINTS_PER_CAPTURE=500;export const KING_BONUS=500;export const WIN_BONUS=5e3;export const AI_MOVE_DELAY=.55;export const SLIDE_TIME=.22;export const HOP_TIME=.3;export const COLORS={LIGHT_SQ:"#EED9B6",DARK_SQ:"#A9744F",BOARD_BORDER:"#61412E",RED:"#E53935",BLACK:"#37474F",GOLD:"#FFC107",SELECT:"#FFD54F",MOVE:"#4CAF50",CAPTURE:"#F44336"};export const TILT=0;export const BOARD_BORDER_WIDTH=3;export const LIGHT=frontLight([-.4,.5,1],.45);export const PIECE_HEIGHT=.16;const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=120;export function getLayout(t,o,e){const r=getScoreBoardTop(e)+82,n=Math.max(200,o-r-120),s=Math.min(gameWidthFor(t),n/Math.cos(0)-20),E=Math.max(16,Math.floor((s-6)/8));return{width:t,height:o,tilt:0,centerY:r+n/2,cell:E,size:8*E}}export const squareCentre=(t,o)=>[(o%8-3.5)*t.cell,(3.5-Math.floor(o/8))*t.cell];export function squareAt(t,o,e){const r=Math.floor(o/t.cell+4),n=Math.floor(4-e/t.cell);return r<0||r>7||n<0||n>7?-1:8*n+r}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{aimTilted,unproject}from"../shared/EngineTilt.js";import{AI_MOVE_DELAY,GAME_DURATION,KING_BONUS,PIECE_HEIGHT,POINTS_PER_CAPTURE,squareAt,WIN_BONUS}from"./CheckersConstants.js";import{AI,allSteps,applyFullMove,applyStep,chooseAIMove,countPieces,createInitialBoard,generateMoves,HUMAN,playerHasCapture,singleJumps,singleSlides}from"./CheckersRules.js";import{buildScene,celebrate,lift,movePiece,removeScene,resetPieces,setSceneTheme,showHints,stepScene}from"./CheckersScene.js";const WORLD_CAPACITY=300,TAP_SLOP=12;export function createGame(e){const t=new World(300),o={world:t,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",board:createInitialBoard(),turn:HUMAN,selected:-1,targets:[],captures:[],mustContinueFrom:-1,winner:null,timedOut:!1,redCaptured:0,blackCaptured:0,get score(){return t.scoreboard.score},moves:0,get timeLeft(){return t.scoreboard.shownSeconds},press:null,onPhase:e=>{},onScore:e=>{},onCaptured:e=>{},onTime:e=>{},onEvent:e=>{}};return t.scoreboard.reset(0,GAME_DURATION),t.scoreboard.handlers={onSecond:e=>o.onTime(e),onTimeUp:()=>{"playing"===o.phase&&(o.timedOut=!0,o.winner=AI,end(o))}},o}export function setLayout(e,t){e.scene&&removeScene(e.world,e.scene),e.layout=t,aimTilted(e.camera,t),e.scene=buildScene(e.world,t,e.theme,e.board),hints(e)}export function setTheme(e,t){e.theme=t,e.layout&&e.scene&&setSceneTheme(e.world,e.layout,e.scene,t)}function hints(e){e.layout&&e.scene&&showHints(e.world,e.layout,e.scene,e.selected,e.targets,e.captures)}function setSelection(e,t,o,r){const{layout:n,scene:s}=e;n&&s&&e.selected!==t&&(e.selected>=0&&e.board[e.selected]&&lift(e.world,n,s,e.selected,!1),t>=0&&lift(e.world,n,s,t,!0)),e.selected=t,e.targets=o,e.captures=r,hints(e)}function fresh(e){e.world.cancelTimers(),e.board=createInitialBoard(),e.turn=HUMAN,e.selected=-1,e.targets=[],e.captures=[],e.mustContinueFrom=-1,e.winner=null,e.timedOut=!1,e.redCaptured=0,e.blackCaptured=0,e.world.scoreboard.reset(0,GAME_DURATION),e.moves=0,e.press=null,e.layout&&e.scene&&resetPieces(e.world,e.layout,e.scene,e.board),hints(e),e.onScore(0),e.onCaptured(0),e.onTime(GAME_DURATION)}export function start(e){"ready"===e.phase&&(fresh(e),e.world.scoreboard.startCountdown(GAME_DURATION),e.phase="playing",e.onPhase("playing"))}export function reset(e){fresh(e),e.phase="ready",e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,t){e.world.isDisposed||(e.scene&&stepScene(e.scene,t),e.world.update(t))}function end(e){e.world.cancelTimers(),e.world.scoreboard.stop(),setSelection(e,-1,[],[]),e.mustContinueFrom=-1,e.phase="over",e.onPhase("over")}function finish(e,t){e.winner=t,t===HUMAN&&(e.onScore(e.world.scoreboard.add(WIN_BONUS)),e.layout&&e.scene&&celebrate(e.world,e.layout,e.scene,e.board)),e.onEvent(t===HUMAN?"win":"lose"),end(e)}export function select(e,t){if("playing"!==e.phase||e.turn!==HUMAN)return;const o=e.board;if(e.mustContinueFrom>=0)return void(t!==e.mustContinueFrom&&e.targets.includes(t)&&playerStep(e,e.mustContinueFrom,t));if(e.selected>=0&&e.targets.includes(t))return playerStep(e,e.selected,t);const r=o[t];if(r&&r.player===HUMAN){const n=playerHasCapture(o,HUMAN)?singleJumps(o,t,HUMAN,r.king):allSteps(o,t,HUMAN,r.king);return 0===n.length?setSelection(e,-1,[],[]):(setSelection(e,t,n.map(e=>e.to),n.filter(e=>null!==e.captured).map(e=>e.to)),void e.onEvent("select"))}e.selected>=0&&setSelection(e,-1,[],[])}function playerStep(e,t,o){const r=e.board,n=r[t];if(!n)return;const s=singleJumps(r,t,n.player,n.king).find(e=>e.to===o)??singleSlides(r,t,n.player,n.king).find(e=>e.to===o);if(!s)return;const a=applyStep(r,t,s,n.player),l=null!==s.captured,i=l&&!0===r[s.captured]?.king,u=a.board[o],d=l&&!a.promoted&&singleJumps(a.board,o,n.player,u.king).length>0;if(e.layout&&e.scene&&movePiece(e.world,e.layout,e.scene,t,[o],l?[s.captured]:[],a.promoted?u:null),e.board=a.board,e.selected=-1,l&&(e.redCaptured+=1,e.onScore(e.world.scoreboard.add(POINTS_PER_CAPTURE+(i?KING_BONUS:0))),e.onCaptured(e.redCaptured)),d){const t=singleJumps(a.board,o,n.player,u.king).map(e=>e.to);e.mustContinueFrom=o,e.selected=o,e.targets=t,e.captures=t.slice(),hints(e)}else e.moves+=1,e.mustContinueFrom=-1,setSelection(e,-1,[],[]),e.turn=AI;return e.onEvent(l?"capture":"move"),a.promoted&&e.onEvent("king"),d?void 0:0===countPieces(a.board,AI)||0===generateMoves(a.board,AI).length?finish(e,HUMAN):void e.world.after(AI_MOVE_DELAY,()=>robotMove(e))}function robotMove(e){if("playing"!==e.phase||e.turn!==AI)return;const t=chooseAIMove(e.board);if(!t)return finish(e,HUMAN);const o=e.board,r=applyFullMove(o,t),n=t.steps.filter(e=>null!==e.captured).map(e=>e.captured),s=t.steps[t.steps.length-1].to,a=!o[t.from].king&&r[s].king;e.layout&&e.scene&&movePiece(e.world,e.layout,e.scene,t.from,t.steps.map(e=>e.to),n,a?r[s]:null),e.board=r,e.blackCaptured+=n.length,e.moves+=1,e.turn=HUMAN,e.mustContinueFrom=-1,setSelection(e,-1,[],[]),e.onEvent(n.length?"capture":"move"),0!==countPieces(r,HUMAN)&&0!==generateMoves(r,HUMAN).length||finish(e,AI)}export function squareUnder(e,t,o){const r=e.layout;if(!r)return-1;const[n,s]=unproject(r,t,o,1.2+r.cell*PIECE_HEIGHT*.6);return squareAt(r,n,s)}export function drag(e,{phase:t,x:o,y:r}){if("start"===t)return void(e.press={x:o,y:r});const n=e.press;if(!n)return;if(Math.hypot(o-n.x,r-n.y)>12)return void(e.press=null);if("end"!==t)return;e.press=null;const s=squareUnder(e,o,r);s>=0&&select(e,s)}
@@ -0,0 +1 @@
1
+ "use strict";import{bestAIMoves}from"./CheckersAI.js";export const BOARD_N=8;export const PIECES_PER_SIDE=12;export const AI_DEPTH=5;export const HUMAN="red";export const AI="black";export const rc=t=>({row:Math.floor(t/8),col:t%8});export const idx=(t,o)=>8*t+o;export const inBounds=(t,o)=>t>=0&&t<8&&o>=0&&o<8;export const isPlayable=(t,o)=>(t+o)%2==1;export function createInitialBoard(){const t=new Array(64).fill(null);for(let o=0;o<8;o++)for(let e=0;e<8;e++)isPlayable(o,e)&&(o<3?t[idx(o,e)]={player:AI,king:!1}:o>4&&(t[idx(o,e)]={player:"red",king:!1}));return t}const KING_DIRS=[[-1,-1],[-1,1],[1,-1],[1,1]],HUMAN_DIRS=[[-1,-1],[-1,1]],AI_DIRS=[[1,-1],[1,1]],dirsFor=(t,o)=>o?KING_DIRS:"red"===t?HUMAN_DIRS:AI_DIRS;export function singleJumps(t,o,e,n){const{row:r,col:s}=rc(o),l=[];for(const[o,p]of dirsFor(e,n)){const n=r+2*o,u=s+2*p;if(!inBounds(n,u))continue;const i=idx(n,u);if(null!==t[i])continue;const f=idx(r+o,s+p),a=t[f];a&&a.player!==e&&l.push({to:i,captured:f})}return l}export function singleSlides(t,o,e,n){const{row:r,col:s}=rc(o),l=[];for(const[o,p]of dirsFor(e,n)){const e=r+o,n=s+p;if(!inBounds(e,n))continue;const u=idx(e,n);null===t[u]&&l.push({to:u,captured:null})}return l}export function applyStep(t,o,e,n){const r=t.slice(),s=r[o];r[o]=null,null!==e.captured&&(r[e.captured]=null);const{row:l}=rc(e.to),p=!s.king&&("red"===n&&0===l||n===AI&&7===l);return r[e.to]=p?{player:n,king:!0}:s,{board:r,promoted:p}}export function playerHasCapture(t,o){for(let e=0;e<t.length;e++){const n=t[e];if(n&&n.player===o&&singleJumps(t,e,n.player,n.king).length>0)return!0}return!1}function captureSequences(t,o,e,n,r,s){const l=singleJumps(t,e,n,r);if(0===l.length)return s.length?[{from:o,steps:s}]:[];const p=[];for(const u of l){const l=applyStep(t,e,u,n),i=[...s,u];l.promoted?p.push({from:o,steps:i}):p.push(...captureSequences(l.board,o,u.to,n,r,i))}return p}export function generateMoves(t,o){const e=[];for(let n=0;n<t.length;n++){const r=t[n];if(!r||r.player!==o)continue;const s=captureSequences(t,n,n,o,r.king,[]);s.length&&e.push(...s)}if(e.length)return e;const n=[];for(let e=0;e<t.length;e++){const r=t[e];if(r&&r.player===o)for(const s of singleSlides(t,e,o,r.king))n.push({from:e,steps:[s]})}return n}export function applyFullMove(t,o){const e=t[o.from].player;let n=t,r=o.from;for(const t of o.steps)n=applyStep(n,r,t,e).board,r=t.to;return n}export const allSteps=(t,o,e,n)=>[...singleJumps(t,o,e,n),...singleSlides(t,o,e,n)];export function countPieces(t,o){let e=0;for(const n of t)n&&n.player===o&&e++;return e}export function chooseAIMove(t){const o=generateMoves(t,AI);if(0===o.length)return null;if(1===o.length)return o[0];const e=bestAIMoves(t,o,5);return e[Math.floor(Math.random()*e.length)]}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,lathe,merge,Path,quat}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{cacheGameAsset,createGameMesh as _0x1828fd}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{BOARD_BORDER_WIDTH,COLORS,HOP_TIME,PIECE_HEIGHT,SLIDE_TIME,squareCentre}from"./CheckersConstants.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("checkers/CheckersScene:"+e,o),meshes.set(e,t)),t},STAND_UP=quat.x(Math.PI/2),BACKDROP_DEPTH=30,SURFACE=.2,HINTS=4,pieceMesh=()=>cached("ck-piece",()=>{const e=PIECE_HEIGHT,o=lathe([[.001,e],[.14,e],[.155,e-.012],[.17,e],[.27,e],[.285,e-.014],[.3,e],[.36,e],[.395,e-.02],[.41,.55*e],[.4,.18*e],[.37,0],[.001,0]],{segments:36,color:({position:[o,t,s]})=>{const n=Math.hypot(o,s),r=t<e-.004?n>.38?.78:.88:1;return[r,r,r,1]}});return _0x1828fd(merge([{geometry:o,rotation:STAND_UP}]),{center:!1,shine:.55})}),crownMesh=()=>cached("ck-crown",()=>{const e=(new Path).addPolygon([[-.2,.1],[-.2,-.06],[-.12,.02],[-.06,-.12],[0,0],[.06,-.12],[.12,.02],[.2,-.06],[.2,.1]]);return _0x1828fd(extrude(e,{depth:.04}),{center:!1,shine:.8})}),ringMesh=()=>cached("ck-ring",()=>_0x1828fd(extrude((new Path).addCircle(0,0,.4).addCircle(0,0,.33),{depth:0,fillRule:"evenodd"}),{center:!1})),discMesh=()=>cached("ck-disc",()=>_0x1828fd(extrude((new Path).addCircle(0,0,.5),{depth:0}),{center:!1})),panelMesh=(e,o)=>cached("ck-flat-panel:"+e+":"+o,()=>_0x1828fd(extrude((new Path).addRoundedRect(-e/2,-e/2,e,e,o),{depth:0}))),pieceColor=e=>toColor("red"===e.player?COLORS.RED:COLORS.BLACK),at=(e,o,t=.2)=>{const[s,n]=squareCentre(e,o);return[s,n,t]};function spawnBoard(e,o){const t=[],s=o=>t.push(e.spawn({pickable:!1,...o}));for(let e=0;e<64;e++){const t=(Math.floor(e/8)+e)%2==1,[n,r]=squareCentre(o,e);s({mesh:panelMesh(1,0),position:[n,r,.2],scale:[o.cell,o.cell,1],color:toColor(t?COLORS.DARK_SQ:COLORS.LIGHT_SQ)})}const n=BOARD_BORDER_WIDTH,r=toColor(COLORS.BOARD_BORDER);for(const e of[-1,1])s({mesh:panelMesh(1,0),position:[0,e*(o.size+n)/2,.2],scale:[o.size+2*n,n,1],color:r}),s({mesh:panelMesh(1,0),position:[e*(o.size+n)/2,0,.2],scale:[n,o.size,1],color:r});return t}function spawnPiece(e,o,t,s,n){const r={root:e.spawn({mesh:pieceMesh(),position:at(o,s),scale:o.cell,color:pieceColor(n),pickable:!1}),crown:null};t.pieces.set(s,r),n.king&&crown(e,r,n,!1)}function crown(e,o,t,s){if(null!=o.crown)return;const n=e.spawn({mesh:pieceMesh(),parent:o.root,position:[0,0,.95*PIECE_HEIGHT],color:pieceColor(t),pickable:!1});e.spawn({mesh:crownMesh(),parent:n,position:[0,.02,PIECE_HEIGHT+.025],color:toColor(COLORS.GOLD),pickable:!1}),o.crown=n,s&&(e.set(n,{position:[0,0,4*PIECE_HEIGHT]}),e.animate(n,{position:[0,0,.95*PIECE_HEIGHT]},{duration:.35,delay:SLIDE_TIME,easing:"bounce"}))}export function buildScene(e,o,t,s){const n=spawnBackdrop(e,o.width,o.height,-30,t);placeTiltedBackdrop(e,n,o,30);const r=(o,t,s)=>e.spawn({mesh:o,scale:0,color:toColor(t,s),pickable:!1}),a={backdrop:n,board:spawnBoard(e,o),pieces:new Map,select:e.spawn({mesh:panelMesh(1,0),scale:0,color:toColor(COLORS.SELECT,.55),pickable:!1}),dots:Array.from({length:4},()=>r(discMesh(),COLORS.MOVE,.9)),rings:Array.from({length:4},()=>r(ringMesh(),COLORS.CAPTURE,.95)),queue:[],time:0};return s.forEach((t,s)=>t&&spawnPiece(e,o,a,s,t)),a}export function removeScene(e,o){for(const t of[o.backdrop,...o.board,...Array.from(o.pieces.values(),e=>e.root),o.select,...o.dots,...o.rings])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)}export function resetPieces(e,o,t,s){for(const o of t.pieces.values())e.despawn(o.root);t.pieces.clear(),t.queue=[],s.forEach((s,n)=>s&&spawnPiece(e,o,t,n,s))}export function showHints(e,o,t,s,n,r){const a=e.transforms;if(s>=0){const[e,n]=squareCentre(o,s);a.position(t.select,e,n,.25),a.scale(t.select,o.cell,o.cell,1)}else a.scale(t.select,0);let i=0,l=0;for(const e of n){const s=r.includes(e),n=s?t.rings[l++]:t.dots[i++];if(null==n)continue;const[p,u]=squareCentre(o,e);a.position(n,p,u,.32),a.scale(n,s?o.cell:.32*o.cell)}for(;i<4;i++)a.scale(t.dots[i],0);for(;l<4;l++)a.scale(t.rings[l],0);a.flush()}export function lift(e,o,t,s,n){const r=t.pieces.get(s);r&&e.animate(r.root,{position:at(o,s,.2+(n?.12*o.cell:0))},{duration:.12})}export function movePiece(e,o,t,s,n,r,a,i=0){const l=t.pieces.get(s);if(!l)return;t.pieces.delete(s);const p=r.length>0,u=p?HOP_TIME:SLIDE_TIME,d=[];let h=s;n.forEach((e,t)=>{const[s,r]=squareCentre(o,h),[a,i]=squareCentre(o,e);p&&d.push({position:[(s+a)/2,(r+i)/2,.2+.55*o.cell],at:(t+.5)/n.length}),d.push({position:[a,i,.2],at:(t+1)/n.length}),h=e}),e.stopAnimation(l.root),e.animate(l.root,d,{duration:u*n.length,delay:i,path:p?"smooth":"linear",easing:"easeInOut"}),r.forEach((s,n)=>{const r=t.pieces.get(s);if(!r)return;t.pieces.delete(s);const a=i+u*(n+.55);e.animate(r.root,[{scale:1.15*o.cell,at:.3},{scale:.01}],{duration:.22,delay:a,easing:"easeIn"}),e.set(r.root,{lifetime:a+.3});const[l,p]=squareCentre(o,s);queueBurst(e,o,t,[l,p,.2+.15*o.cell],a)});const f=n[n.length-1];t.pieces.set(f,l),a&&crown(e,l,a,!0)}function queueBurst(e,o,t,s,n){t.queue.push({at:t.time+n,run:()=>effects.sparkle(e,{position:s,count:16,size:.07*o.cell,speed:2.5*o.cell,lifetime:.55,gravity:4*-o.cell,colors:[toColor("#FFFFFF"),toColor(COLORS.GOLD)]})})}export function stepScene(e,o){e.time+=o;for(let o=e.queue.length-1;o>=0;o--)if(e.queue[o].at<=e.time){const[t]=e.queue.splice(o,1);t.run()}}export function celebrate(e,o,t,s){for(const[n,r]of t.pieces){if("red"!==s[n]?.player)continue;const[t,a]=squareCentre(o,n);e.animate(r.root,[{position:[t,a,.2+.5*o.cell],at:.4},{position:[t,a,.2]}],{duration:.45,delay:.3+.04*(Math.floor(n/8)+n%8),easing:"easeOut"})}effects.confetti(e,{position:[0,0,o.cell],count:70,size:.12*o.cell,speed:1.3*o.size,lifetime:1.3,gravity:2.4*-o.size,colors:["#FFD700","#E53935","#4CAF50","#2196F3"].map(e=>toColor(e))})}
@@ -1 +1 @@
1
- "use strict";const _0x169b55=_0x3c95;!function(){const o=_0x3c95,e=_0x4b44();for(;;)try{if(300710==-parseInt(o(263,"33cq"))/1+parseInt(o(312,"3d*P"))/2+-parseInt(o(367,"%$wp"))/3+-parseInt(o(296,"MNhE"))/4*(parseInt(o(279,"Qq[O"))/5)+-parseInt(o(345,"]A^5"))/6*(parseInt(o(360,"CkHE"))/7)+-parseInt(o(252,"ip]z"))/8*(parseInt(o(387,"VLvP"))/9)+-parseInt(o(328,"k[!4"))/10*(-parseInt(o(377,"gAVg"))/11))break;e.push(e.shift())}catch(o){e.push(e.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x499aba from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x4fe1b3}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{useColorSwitchStore,useScore,useIsPlaying,useGameOver,useGameWon}from"./ColorSwitchStore.js";import{ColorSwitchService}from"./ColorSwitchService.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{setGameInterval}from"../../helpers/GameTimer.js";import{jsx as _0x423228,jsxs as _0x4b6fc7}from"react/jsx-runtime";function _0x4b44(){const o=["WQVdPSo9W6KT","dYbaWRlcSfnx","W54ZBCkzW4ZdUJZdNvG","bKpdI8opjJlcVG","WPNcOmkfW7XR","uCkPimkYbb3dSxv/","sCoXW6rDWQalWOPVzW","t8kNWPNdKCoLWOvJW7JdL8kzAW","WPFcP8oBW57cVCkr","W5vqWOhcS8oAjmkY","o8ocWPXUW4iOW6TehCoyeCk1","W4mOW4dcQ8k2W41P","W6vWWRdcGSo6gCkv","WRhcIMxdNSo6w8kCW7a","WOVdSbrqW4TWvmkVzW","WO3cJ2BcHCoUWPxcPv/dU8kFWR7dLG","wmkQWQVdLrS","gCknAa13","nmoZW7KiWQ49eYX8W6ldGSoI","WOFdKSovhmkGnf0OiW","WPVcQSknW7jGW5mgW6FcU3S0W63cPciSCSkA","W7qjkJRcS37dSJ7cQg7cJc8","tmoQwmoBW59wW4z3sGJdIa","j1CfW73cPXJcLspdGq","W5VcPunJW4rhD8kBr0XoWRhcUCkeW6C","mNpdVmoFfWdcMuC","r8kVn8kfbXxdOa","BSk5W53cMmk1hSkV","waTuWO0+WPxdJJ4","W4ddUvNdQJJdUtpdLgZdUq","WOz1vuFdLwpdTYxcP2RcNa","h8oOWQrYW6qwW4X2","qxpdOI7cQSoXECk0Da","WOxdQmokW5S+zmo2WO8","vSoyAXRdHSoR","j00zW7VcOX/cJW","W5a+W6BcTCkX","jCoyzc3dUYtcRSoa","WO3dLmo3aSkKi0a","WRZdLq/dH8oXW5FcHmkWaafv","W6ZcR3dcL0Xpm8kCW4GuW5ZcRa","p8kvWQqnW43dS3K","imoprhPEWQqN","W4uRCCkCh8kbi8kRW4m","W7WfrmkqW7xdMbBdSgK","dc9xeX0","x2mfW7FdRa1SW5hdIIOZW4e","emoEWRHWW70","W5ZcLv7cQ31IgCk2W6W","WOWPW5BcKIS","iCoyzYVdKt4","j8oxAcRdMdFcG8otWPOMfvJcQG","kXr/WOxdTxj1W6pdOa","W7riC8kGamoEaW","qmoEFdRdHSoJW6y","h1iWW451W4ZdRY49W6fKW5C","mSkQW5iiW6PuW6/cKmoAFmkrW6BcTWmCW5G","W4ZcLu7cQNT+ba","W6BcTg3cJCkj","W5b8tmkxoSo/isJcGa","hvCEWQNcTqtcItddMLGGWQtcLWifW6HtjwZdJgCgWR0","WRxcMMpdV8oRvmkC","umoFBZRdL8okW7pcHrK","ESkTWODLrCkzCqK","n8kQWR8SW4W","ugNdTbVcOmo2zCkzyCkEW4K","kSoUWRjpv8kqxW","qSoHqSoBW4nfW49mxWldU8oEFve","W6eFtSkRjCkGaq","W4RcSe94W7nDyCkDqeT+WPlcUSkeW6u","cx0VW4dcKZW","uCkNsCo6wmk9WOm","WPeDCcBdNqxcKIqAx2aQ","ggzmWRm","FLxdIJS","W4ZcT0vlW4jzDmkmseTM","gmkDW5SkW4C","peHmWPtcRmojW5RdHq","WRfBd8oSDCo2jSk/W5ZdOM7cIq","WQlcHCk3W5u","W79hwCkRz8kYW4e","WPWYW5VcJY0SWR7cISopWRVdPmkI","W4i1aZdcH0FdHaRcLq","W6riy8kHbSochG/cTW","rmkRW5VcRCk+","WRZdLGtdGmoXWQBdPmkZar1uBWm","WReZuGRdQJy","W7xcGKaeW5FcUeJdJmoLW6y5WRFdQa","W4RcRNxcGSkd","WQhdNKDxWP4odSojWQq","W4v/WOhcPCoj","W4TSWRtcOmot","ognqWQBcNa","wmo7rmoFW7PmW5PwtatdJ8oZF1VcQq","C8koWO/cICkKW7RdSSk2W4TfW74","WRa8W7hcHSoqe8kfW53dRW","W5yltmo5nmkHvCkeW6tdQ2FdP8ojg8oTtqZdHConW7K","WRfzbCoPD8o2h8kSW4xdJNBcPa","mConzJJdPdRcSSobWOmXd3FcTGKG","WP7cRCoyW5u","WQBdUmoofmk5","bCkVWOnFW7/dKKmR","W4SnsmkElG","v8kXwmoWxmk9WONdHeSZga","W5WunW3cRq","gviWWQGvWRVdPY8/","e1NdG8oBnW","W4RdI8oRW4ldQNVcVa","W6buBW","wrDIWRWQWPRdHtOX","W6jozmkxa8oweG7cPG","kSklWQuyW58","igxdRCoEbGC","WQCaBZ/dUG","WRNcGuldPCoVsmkn","W4BcK2ZcTh9PgCk6W64","WRWiW6xcSHODWPK","W6ednYtcSq","CmkSrSoBFa","smo6wCoDW49kW5C","WOVcSCorW4tcRa","gfpdJmofnIW","WQ3dRSojp8kteNCobCoFWP/dNW","WPZdHmo2fCk1cLuRiq","W6fKEZhdUd3cMYS","W5RcHdZcSYFcNmkA","igxdRCopaG3cGuaJW41I","xSo8tSoSW4TiW49hratdLW","CYvoFM3cK8k6ctxcUwe","smk8WRBdLrTnAW","WPNdRIxcHSkMW7hdMmouWPldUa","W69xx8kEy8kXW5ade8kCya","iCowzZZdLtVcPCoxWPG","nmovW6VcOCkgWQ4","tXf1WOSPWPldLa","WQxcKNVcSSoW","pvr6WRlcU8og","WRxdV8orW6yTjCoHWOxdVmocyCkl","A8kTWRLy","WPnUWOVdQCoKWPT3W70nWOWprW","u8kuWPhcLmkZW4FdSq","iSkRW4eiW7TQW7m","WQ3dRSojp8kteMCrdCofWPVdKG","WOpdPtJcOSkJW7hdJCouWOBdUSoFygpdI8kdWOTw","WP/cPmojW77cRmkeW6zQ","a8k/xWLCWO7dVq","WRVcJSoXW6lcISk6W4fyCSoJW4v/","W5qZfaFcHe/dLq","WPRdImoOfCkZbfOYiCoJWQ7dU8od","muSoW4RcPX3cLYtdKK0U","jMaDjI/cKa","c8oOWQrIW7eBW5rXnCoVoCko","DmkHWQvpW74","WONdVIpcPmkVW77dLq","W49fqSkTyCk0WPunaSkyE8kVW4m","WOFcRHVcJMhdOaNdJ07dLWu","WOhdGtJcHCkU","iComEZRdKtZcVW"];return(_0x4b44=function(){return o})()}export const ColorSwitch=({settings:o,onSettingsChange:e,onEndGame:W,onReplayGame:t,onShare:a,onShareScreenshot:r,onShowLeaderboard:n,bannerAd:d})=>{const S=_0x3c95,s={Lybpo:function(o,e){return o===e},FOKWT:S(282,"c8uv"),kRQxL:function(o,e,W){return o(e,W)},vksgw:function(o){return o()},MivPL:function(o){return o()},TxjlA:S(374,"MXep"),uRSVu:function(o,e){return o!==e},ddnOO:function(o){return o()},IgtGn:function(o,e,W){return o(e,W)},fMFrp:S(382,"vRoM"),VEQQP:function(o){return o()},KqnTu:function(o,e){return o(e)},CzCUV:function(o,e){return o(e)},kdazb:function(o,e){return o||e}},x=o?.enableSounds??!0,m=o?.[S(333,"TR21")]??!0,i=o?.[S(290,"w^^h")]??0,C=_0x499aba[S(260,"MXep")](x);C[S(249,"Njod")]=x;const k=_0x499aba[S(394,"a@5!")](m);k[S(389,"6t3S")]=m;const u=_0x499aba.useRef(W);u[S(336,"]chp")]=W;const p=s[S(399,"3d*P")](useScore),R=useIsPlaying(),_=useGameOver(),f=useGameWon(),l=_0x499aba[S(316,"]chp")](!1),O=_0x499aba[S(251,"tgmz")](o=>{const e=S;if(s.Lybpo(e(358,"o3zl"),s[e(388,"a@5!")])){const o=_0x4d0bcb[e(295,"bu4s")]().score;_0x273416[e(265,"o3zl")]({status:_0x5bfdad,score:o[e(310,"VLvP")]()}),_0x3d6dca[e(343,"bu4s")]=!0}else if(u[e(362,"QZYD")]&&!l[e(323,"kheC")]){const W=useColorSwitchStore[e(315,"c8uv")]()[e(298,"fL%5")];u[e(339,"%Z83")]({status:o,score:W[e(359,"MXep")]()}),l[e(281,"TR21")]=!0}},[]),b=s.KqnTu(useColorSwitchStore,o=>o[S(344,"]chp")]),h=s[S(372,"gAVg")](useColorSwitchStore,o=>o[S(405,"vRoM")]),G=_0x499aba.useMemo(()=>new ColorSwitchService,[]),P=_0x499aba[S(250,"a@5!")](()=>{const o=S;playSound(GAME_SOUNDS[o(354,"NxrM")][o(356,"yM4g")],C[o(264,"Fr3p")]),playHaptic(HapticType.LIGHT,k[o(348,"]A^5")])},[]),v=_0x499aba.useCallback(()=>{const o=S;playSound(GAME_SOUNDS.COLOR_SWITCH[o(361,"V8PQ")],C[o(335,"#*br")]),playHaptic(HapticType[o(257,"ACGI")],k[o(277,")9%k")])},[]),g=_0x499aba.useCallback(()=>{const o=S;playSound(GAME_SOUNDS[o(297,"ueNx")][o(322,"%Z83")],C.current),playHaptic(HapticType[o(291,"gAVg")],k[o(350,"CkHE")])},[]),y=_0x499aba[S(273,"TUuN")](()=>{const o=S;s[o(340,"%$wp")](playSound,GAME_SOUNDS[o(292,"*CFx")][o(341,"#*br")],C[o(283,"k[!4")]),s[o(386,"3d*P")](playHaptic,HapticType.ERROR,k[o(308,"fRzY")])},[]);_0x499aba.useEffect(()=>{G[S(275,"*CFx")](P,v,g,y)},[G,P,v,g,y]),_0x499aba[S(314,"yM4g")](()=>{const o=setTimeout(()=>{G[_0x3c95(302,"V8PQ")]()},100);return()=>clearTimeout(o)},[G]),_0x499aba[S(287,"fRzY")](()=>{const o=S;if("yXFVp"!==s[o(400,"O^Yy")]){const e=useColorSwitchStore[o(365,"#*br")](e=>e[o(397,"%Z83")],e=>G[o(311,"Qq[O")](e)),W=useColorSwitchStore[o(330,"%Z83")](e=>e[o(319,"TR21")],e=>G[o(385,"O^Yy")](e));return()=>{const t=o;s[t(393,"kheC")](e),s[t(373,"gAVg")](W)}}_0x57482b(_0x2260b3.COLOR_SWITCH[o(355,"MXep")],_0x18bbd5[o(320,"vRoM")]),LlYaCa[o(329,"*CFx")](_0x5cec78,_0x3a1e59[o(403,"a@5!")],_0x193de1[o(324,"7McL")])},[G]),_0x499aba[S(364,"3d*P")](()=>()=>{const o=_0x3c95;useColorSwitchStore[o(307,"a@5!")]()[o(301,"vRoM")]&&!l[o(348,"]A^5")]&&O(o(332,"TR21"));try{e=o(318,"33cq"),W="HavsN",s[_0x3c95(395,"NxrM")](e,W)?G.cleanup():_0x201c0e&&_0x531c8a[o(380,"TR21")]()}catch{}var e,W,t;try{t=h,s.ddnOO(t)}catch{}},[G,O,h]),_0x499aba[S(326,"4sSb")](()=>{const o=S;(_||f)&&!l.current&&(f?(s[o(299,"DoLD")](playSound,GAME_SOUNDS[o(284,"4sSb")],C[o(401,"tgmz")]),O(o(390,"#*br"))):(playSound(GAME_SOUNDS[o(270,"w^^h")].GAME_OVER,C[o(350,"CkHE")]),O(o(262,"5^DI")))),!_&&!f&&(l[o(348,"]A^5")]=!1)},[_,f,O]),_0x499aba[S(391,"VLvP")](()=>{const o=S;if(R&&!_)return G[o(338,"o3zl")](),()=>{G[o(351,"MNhE")]()}},[R,_,G]),_0x499aba[S(392,"#*br")](()=>{const o=S;if(_)if(o(370,"%$wp")===s.fMFrp){if(_0x213e01[o(324,"7McL")]&&!_0x5c4008[o(277,")9%k")]){const e=_0x4a32d4[o(313,"*CFx")]()[o(276,"5^DI")];_0x1e090a[o(317,"TUuN")]({status:_0x4c80c8,score:e[o(310,"VLvP")]()}),_0x467331[o(265,"o3zl")]=!0}}else G[o(375,"tgmz")]()},[_,G]);const T=_0x499aba.useCallback(()=>{const o=S;l[o(253,"fL%5")]=!1,b(),G[o(254,")9%k")](!0),G[o(255,"QZYD")](!1),G[o(349,"tgmz")]();const{decrementTime:e}=useColorSwitchStore[o(268,"w^^h")](),W=setGameInterval(()=>{const W=o;W(280,")9%k")===W(346,"kheC")?s[W(327,"58fZ")](e):(_0xa532c3(_0x1cdd0c[W(363,"S*e7")][W(404,"vRoM")],_0x5924f1[W(293,"33cq")]),_0x1213c1(_0x33f548[W(269,"DoLD")],_0x61af8e[W(258,"VLvP")]))},1e3),t={};t[o(272,"vRoM")]=W,useColorSwitchStore.setState(t),playSound(GAME_SOUNDS[o(266,"vRoM")][o(331,"S*e7")],C[o(398,"S*e7")]),playHaptic(HapticType[o(285,"a@5!")],k[o(271,"3d*P")])},[G,b]),M=_0x499aba[S(357,"MNhE")](()=>{const o=S;O(o(368,"NxrM")),s.IgtGn(playSound,GAME_SOUNDS.COLOR_SWITCH[o(325,"CkHE")],C[o(294,"gAVg")]),playHaptic(HapticType[o(352,"TUuN")],k.current),G.resetGame(),h()},[G,h,O]),V=_0x499aba.useCallback(()=>{const o=S,e=o(288,"*CFx")[o(402,"w^^h")]("|");let W=0;for(;;){switch(e[W++]){case"0":G.resetGame();continue;case"1":t?.();continue;case"2":h();continue;case"3":G[o(267,")9%k")]();continue;case"4":l[o(309,"t4qw")]=!1;continue}break}},[G,h,t]),L={..._0x499aba[S(353,"O^Yy")](()=>({isPlaying:R,gameOver:_,onStartGame:T,onStopGame:M,onShare:a,onShowLeaderboard:n,startButtonSubtext:S(378,"CkHE")}),[R,_,T,M,a,n])},Q={..._0x499aba.useMemo(()=>({isVisible:_,score:p,onPlayAgain:V,buttonText:S(278,"QZYD"),title:f?S(383,"kheC"):S(334,"k[!4"),message:f?S(342,"TUuN"):S(261,"c8uv")}),[_,p,V,f])};return Q[S(396,"bu4s")]=r,Q.bannerAd=d,s[S(366,"t4qw")](_0x423228,GestureHandlerRootView,{style:styles[S(305,"TUuN")],children:s[S(259,"ueNx")](_0x4b6fc7,_0x4fe1b3,{offset:i,children:[_0x423228(GameArea,{gameService:G,offset:i}),s[S(384,"CkHE")](_0x423228,ScoreBoard,{offset:i}),_0x423228(GameControlButton,L),_0x423228(GameOverModal,Q),_0x423228(GameSettingsModal,{gameId:GAME_IDS[S(303,"3d*P")],settings:s[S(286,"V8PQ")](o,DEFAULT_GAME_SETTINGS),onSettingsChange:e})]})})};const _0x39f6d5={};function _0x3c95(o,e){o-=249;const W=_0x4b44();let t=W[o];if(void 0===_0x3c95.CtcGWW){const o=function(o,e){let W,t,a=[],r=0,n="";for(o=function(o){let e="",W="";for(let W,t,a=0,r=0;t=o.charAt(r++);~t&&(W=a%4?64*W+t:t,a++%4)?e+=String.fromCharCode(255&W>>(-2*a&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let o=0,t=e.length;o<t;o++)W+="%"+("00"+e.charCodeAt(o).toString(16)).slice(-2);return decodeURIComponent(W)}(o),t=0;t<256;t++)a[t]=t;for(t=0;t<256;t++)r=(r+a[t]+e.charCodeAt(t%e.length))%256,W=a[t],a[t]=a[r],a[r]=W;t=0,r=0;for(let e=0;e<o.length;e++)t=(t+1)%256,r=(r+a[t])%256,W=a[t],a[t]=a[r],a[r]=W,n+=String.fromCharCode(o.charCodeAt(e)^a[(a[t]+a[r])%256]);return n};_0x3c95.JKnzcz=o,_0x3c95.cMREZx={},_0x3c95.CtcGWW=!0}const a=W[0];_0x3c95.pKyLES!==a&&(_0x3c95.cMREZx={},_0x3c95.pKyLES=a);const r=_0x3c95.cMREZx[o];return void 0===r?(void 0===_0x3c95.aRrwTL&&(_0x3c95.aRrwTL=!0),t=_0x3c95.JKnzcz(t,e),_0x3c95.cMREZx[o]=t):t=r,t}_0x39f6d5[_0x169b55(381,"w^^h")]=1,_0x39f6d5[_0x169b55(306,"MNhE")]=BACKGROUND_COLOR;const _0x589418={flex:1},_0x4d00aa={};_0x4d00aa[_0x169b55(256,"TR21")]=_0x39f6d5,_0x4d00aa[_0x169b55(304,"tgmz")]=_0x589418;const styles=StyleSheet[_0x169b55(274,"ip]z")](_0x4d00aa);ColorSwitch[_0x169b55(347,"yM4g")]=_0x169b55(376,"Fr3p");
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{getLayout,LIGHT,TIME_LIMIT}from"./ColorSwitchConstants.js";import{createGame,dispose,jump,reset,setLayout,setTheme,start,tick}from"./ColorSwitchGame.js";import{jsx as _0x5aad4c}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.COLOR_SWITCH,FEEDBACK={jump:{sound:SOUNDS.JUMP,haptic:HapticType.LIGHT},pass:{sound:SOUNDS.PASS,haptic:HapticType.MEDIUM},color:{sound:SOUNDS.COLOR_CHANGE,haptic:HapticType.SUCCESS},crash:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}};export const ColorSwitch=engineGame(GAME_IDS.COLOR_SWITCH,e=>{const[t,s]=useLiveState(0),[r,o]=useLiveState(TIME_LIMIT),{theme:i,status:a,screen:n,gameOver:S}=useEngineGame(e,{gameId:GAME_IDS.COLOR_SWITCH,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,r)=>setLayout(e,getLayout(t,s,r)),drag:(e,t)=>{"start"===t.phase&&jump(e)},sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),onOver:(e,t)=>{"win"===t&&e(GAME_SOUNDS.WELL_DONE,HapticType.SUCCESS)},wire:(e,t)=>{e.onScore=s,e.onTime=o,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0x5aad4c(EngineGameScreen,{...n,light:LIGHT,columns:[scoreColumn(t),timerColumn(r,i,0)],subtext:"Tap to jump through!",gameOver:S({title:"win"===a?"YOU WON!":"GAME OVER",message:"win"===a?"You survived 2 minutes!":"Wrong color!",scoreLabel:"Final Score",score:t,buttonText:"Switch Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x4c6dd3=_0x4bf6;!function(){const d=_0x4bf6,e=_0x37b0();for(;;)try{if(123677==parseInt(d(121,"FeV7"))/1*(-parseInt(d(138,"M2oZ"))/2)+parseInt(d(145,"DuD4"))/3+-parseInt(d(127,"*L(V"))/4+-parseInt(d(135,"s5sV"))/5*(-parseInt(d(140,"BKBc"))/6)+-parseInt(d(152,"2DCk"))/7*(parseInt(d(122,"6UIK"))/8)+parseInt(d(157,"ltDr"))/9*(parseInt(d(111,"]^81"))/10)+-parseInt(d(154,"rBea"))/11*(-parseInt(d(118,"lCso"))/12))break;e.push(e.shift())}catch(d){e.push(e.shift())}}();import{PRIMARY_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions,isTablet}from"../../services/UtilsService.js";const BACKGROUND_COLOR=_0x4c6dd3(158,"7c]C"),{width:GAME_WIDTH,height:SCREEN_HEIGHT}=getGameDimensions();export const GRID_HEIGHT=SCREEN_HEIGHT;function _0x37b0(){const d=["WOneW4ldG0tcI8kxW6tcOt9D","efb9WR/cK8ovW7GXibFcPtXM","BSkYWOe","W7a0W7FdJNdcGCkEW6C","WQOeAbCBDaq","WO3dTN3cHYpdNYrhxCoDW67dQwJdPq","lSojbCkaWOv6WQ3cGcHr","zSoCWPFdQfSlW7u","W77cMhddLJ0daG","rCoQWQVcSCotWOvvlxFcNCk1","WQlcMSkzW69rWO1pW6XZb8kQsCkd","hmkOWRRcLxvU","WRNcIeVcV1ldPYmCmSoWmCoqjSkyW5y","W77cLSk+WRGdB3RcGvL9","WO3dPNr1WR9tosJdHXJdQCoqctVcTW","mmkIeSkjW6VcVSk5iHhcIrq","n8oAsdH9amoAq8kcW7vXzq","W5hdV8oQWOGVW60U","b8kSWRRcLwvH","WRtcS0RcMxFcMCk9WPbSECopxGX2WQVcPeriW7i0shFdVa0","W7y4WOZcQ2FdUSkXrmkZW57dKmk6W7u","WRb2umkhAmk2l8k1cNNdMSoHWPWOW4uztqm","W5NdPtPtESk3W6eHcG","W7/cNflcJHBdMSo7","ACkLcSkbs0rj","W5RcLCkedbBdMgunW4OeoHRdNCkIWRiKktOfW7ZcTmkNgmkEW7O","WO7cP2NcG8odemow","wYpcUJrCoYLljmkdW7NdMsmGWPm0W7pcP3mnpCo3Ea","vCk7Cc5yb8oFrq","WPu5qGVcRc/cMmk9C8oPxYO","ymoFymotlGqFWQWYW7ZdUGFcQG","E8ovw8kXE3VdUmoYAgq","WONcKNddQsO0kmkTCLKRAG","W5NdR8o4WOONW7O7W71dl8kjDSkmmmkdCW1PDCklpv4x","W6eRCab6n0jlW4VdTCk3k8ojWPjYo8o/zmojW6ZcTuldSCky","WRxcMCoUWP0IW7Pd","W7pcVYmWc8khsNu6dG","W63dHHxcU8objmowWPzy","WRb4vYiwrKm","WPjvW4VdIL/cHSkFW67cQZHlWOfmuhK","WRa3kMufht/dRchdMfu","vmk9BmoQWPXyWORcKJDaW7pdLwFdSttdGCkdWR4","w8oEgCkoW6X2CMXGW4a","wSkWWO5GWP/cGui","W5qnxYqnqsiSWQBcGComuCkY","bSowC8oaWOxdHMBdHmkgWOtdSHXAW5ddGSkuemkOW4FdOa","w8k9Emo5WPfeWORcKJfDW6pdGG","xCkfWRbpgCkhW7RcRCo/WRpdUW","i8kko8klnqiAW7P7WP7cHKhdKCofWO0rovddI8ooW5unW5Dc","lfBdMfqPqarim8kMW7ddUq","W7PvW5ugi8oeFW","zSkRWRddR3GpW5i","pHmqx3bpW6OidM8"];return(_0x37b0=function(){return d})()}export const GAME_COLORS=[_0x4c6dd3(141,"#$vZ"),"#FFE66D",_0x4c6dd3(133,"0ZMw"),_0x4c6dd3(148,"$kqO")];function _0x4bf6(d,e){d-=111;const W=_0x37b0();let _=W[d];if(void 0===_0x4bf6.TZhRrN){const d=function(d,e){let W,_,o=[],t=0,x="";for(d=function(d){let e="",W="";for(let W,_,o=0,t=0;_=d.charAt(t++);~_&&(W=o%4?64*W+_:_,o++%4)?e+=String.fromCharCode(255&W>>(-2*o&6)):0)_="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(_);for(let d=0,_=e.length;d<_;d++)W+="%"+("00"+e.charCodeAt(d).toString(16)).slice(-2);return decodeURIComponent(W)}(d),_=0;_<256;_++)o[_]=_;for(_=0;_<256;_++)t=(t+o[_]+e.charCodeAt(_%e.length))%256,W=o[_],o[_]=o[t],o[t]=W;_=0,t=0;for(let e=0;e<d.length;e++)_=(_+1)%256,t=(t+o[_])%256,W=o[_],o[_]=o[t],o[t]=W,x+=String.fromCharCode(d.charCodeAt(e)^o[(o[_]+o[t])%256]);return x};_0x4bf6.MAkRYW=d,_0x4bf6.zClZiz={},_0x4bf6.TZhRrN=!0}const o=W[0];_0x4bf6.JDOiNN!==o&&(_0x4bf6.zClZiz={},_0x4bf6.JDOiNN=o);const t=_0x4bf6.zClZiz[d];return void 0===t?(void 0===_0x4bf6.jdhpOJ&&(_0x4bf6.jdhpOJ=!0),_=_0x4bf6.MAkRYW(_,e),_0x4bf6.zClZiz[d]=_):_=t,_}const BALL_RADIUS=isTablet?14:11,BALL_X=GAME_WIDTH/2,GRAVITY=.2,JUMP_VELOCITY=-4.5,OBSTACLE_RING_RADIUS=isTablet?150:120,OBSTACLE_RING_THICKNESS=isTablet?16:13,OBSTACLE_ROTATION_SPEED=.017,OBSTACLE_GAP=isTablet?550:450,_0x4e4e6e={};_0x4e4e6e[_0x4c6dd3(151,"rBea")]=BALL_RADIUS,_0x4e4e6e[_0x4c6dd3(116,"7c]C")]=BALL_X,_0x4e4e6e[_0x4c6dd3(144,"ltDr")]=.9*GRID_HEIGHT,_0x4e4e6e[_0x4c6dd3(115,"0ZMw")]=.2,_0x4e4e6e.JUMP_VELOCITY=-4.5,_0x4e4e6e[_0x4c6dd3(143,"fujk")]=OBSTACLE_RING_RADIUS,_0x4e4e6e[_0x4c6dd3(131,"0ZMw")]=OBSTACLE_RING_THICKNESS,_0x4e4e6e[_0x4c6dd3(125,"9Po%")]=.017,_0x4e4e6e[_0x4c6dd3(130,"!aCf")]=OBSTACLE_GAP,_0x4e4e6e.STAR_RADIUS=isTablet?10:8,_0x4e4e6e[_0x4c6dd3(112,"ObTJ")]=1e3,_0x4e4e6e[_0x4c6dd3(137,"rBea")]=.001,_0x4e4e6e[_0x4c6dd3(139,"ltDr")]=.1,_0x4e4e6e[_0x4c6dd3(114,"CTAP")]=100,_0x4e4e6e[_0x4c6dd3(142,"2YrV")]=120;export const COLOR_SWITCH_GAME_CONFIG=_0x4e4e6e;const _0x5b8014={};_0x5b8014.BACKGROUND=BACKGROUND_COLOR,_0x5b8014[_0x4c6dd3(124,"s5sV")]=PRIMARY_COLOR,_0x5b8014[_0x4c6dd3(153,"T[[k")]=_0x4c6dd3(149,"7c]C"),_0x5b8014[_0x4c6dd3(162,"7c]C")]="#FFE66D",_0x5b8014.TEAL=_0x4c6dd3(136,"2YrV"),_0x5b8014.PURPLE="#A855F7",_0x5b8014[_0x4c6dd3(156,"%@Gi")]=_0x4c6dd3(132,"2YrV"),_0x5b8014.BALL_SHADOW=_0x4c6dd3(119,"62uU"),_0x5b8014[_0x4c6dd3(120,"X36y")]=_0x4c6dd3(146,"6UIK"),_0x5b8014.GRID_BOX_FILL=_0x4c6dd3(123,"NMuv"),_0x5b8014[_0x4c6dd3(163,"wL2q")]=_0x4c6dd3(117,"FeV7");export const COLOR_SWITCH_COLORS=_0x5b8014;
1
+ "use strict";import{frontLight}from"../shared/EngineUtils.js";export const GAME_COLORS=["#FF6B6B","#FFE66D","#4ECDC4","#A855F7"];export const TIME_LIMIT=120;export const POINTS_PER_PASS=1e3;export const STEP_MS=1e3/60;export const STEP_TOLERANCE_MS=2;export const MAX_PENDING_MS=50;export const GRAVITY=.2;export const JUMP_VELOCITY=-4.5;export const MAX_VELOCITY=12;export const ROTATION_SPEED=.017;export const FORGIVENESS=Math.PI/15;export const SPAWN_MARGIN=100;export const LIGHT=frontLight([-.45,.55,1],.45);const TABLET_WIDTH=640;export function getLayout(t,o,r){const s=t>640;return{width:t,height:o,top:r/2,fieldHeight:o,ballRadius:s?14:11,ringRadius:s?150:120,ringThickness:s?16:13,gap:s?550:450,starRadius:s?10:8,ballStartY:.9*o}}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{FORGIVENESS,GAME_COLORS,GRAVITY,JUMP_VELOCITY,MAX_PENDING_MS,MAX_VELOCITY,POINTS_PER_PASS,ROTATION_SPEED,SPAWN_MARGIN,STEP_MS,STEP_TOLERANCE_MS,TIME_LIMIT}from"./ColorSwitchConstants.js";import{buildScene,frame,hop,placeBall,recolor,removeScene,resetBall,setSceneTheme,shatter,syncField,turnRing}from"./ColorSwitchScene.js";const WORLD_CAPACITY=300,COLORS=GAME_COLORS.length,TWO_PI=2*Math.PI,QUADRANT=Math.PI/2;let ids=0;const ring=e=>({id:"r"+ids++,y:e,rotationSpeed:ROTATION_SPEED*(Math.random()<.5?1:-1),rotationBase:Math.random()*TWO_PI,passed:!1}),star=(e,o)=>{let r=o;for(;r===o;)r=Math.floor(Math.random()*COLORS);return{id:"s"+ids++,y:e,colorIndex:r}};export const ringRotation=(e,o)=>e.rotationBase+e.rotationSpeed*o;const quarterAt=(e,o)=>{let r=(e-o)%TWO_PI;return r<0&&(r+=TWO_PI),Math.floor(r/QUADRANT)%4},safeAt=(e,o,r)=>quarterAt(e,o)===r||quarterAt(e+FORGIVENESS,o)===r||quarterAt(e-FORGIVENESS,o)===r;export function createGame(e){const o=new World(300),r={world:o,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",rings:[],stars:[],ballY:0,velocity:0,crashed:!1,color:0,cameraY:0,tick:0,highestY:1/0,passed:0,get score(){return o.scoreboard.score},get timeLeft(){return o.scoreboard.shownSeconds},won:!1,pending:0,onPhase:e=>{},onScore:e=>{},onTime:e=>{},onEvent:e=>{}};return o.scoreboard.reset(0,TIME_LIMIT),o.scoreboard.handlers={onSecond:e=>r.onTime(e),onTimeUp:()=>"playing"===r.phase&&end(r,!0)},r}export function setLayout(e,o){const r=!e.layout;e.scene&&removeScene(e.world,e.scene),e.layout=o,e.scene=buildScene(e.world,o,e.theme),r?preview(e):resetBall(e.world,o,e.scene,e.color),draw(e)}export function setTheme(e,o){e.theme=o,e.scene&&setSceneTheme(e.world,e.scene,o)}function draw(e){const{layout:o,scene:r}=e;if(o&&r){syncField(e.world,o,r,e.rings,e.stars);for(const o of e.rings)turnRing(e.world,r,o.id,ringRotation(o,e.tick));placeBall(e.world,o,r,e.ballY),frame(e.world,o,r,e.camera,e.cameraY)}}function home(e,o){e.ballY=o.ballStartY,e.cameraY=o.ballStartY-.65*o.fieldHeight,e.pending=0,e.crashed=!1,e.passed=0}function preview(e){const o=e.layout;if(!o)return;home(e,o),e.velocity=0,e.color=0,e.rings=[],e.stars=[],e.highestY=1/0;const r=o.ballStartY-.8*o.gap;for(let t=0;t<3;t++){const a=r-t*o.gap;e.rings.push(ring(a)),e.highestY=Math.min(e.highestY,a),t>0&&e.stars.push(star(a+o.gap/2,0))}e.scene&&resetBall(e.world,o,e.scene,0)}export function start(e){const o=e.layout;if("ready"!==e.phase||!o)return;home(e,o),e.color=Math.floor(Math.random()*COLORS),e.rings=e.rings.map(e=>({...e,passed:!1})),e.highestY=e.rings.reduce((e,o)=>Math.min(e,o.y),1/0);const r=o.ballStartY-.8*o.gap;for(let t=e.rings.length;t<5;t++){const a=r-t*o.gap;e.rings.push(ring(a)),e.highestY=Math.min(e.highestY,a),t>0&&e.stars.length<t&&e.stars.push(star(a+o.gap/2,e.color))}e.velocity=JUMP_VELOCITY,e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(TIME_LIMIT),e.won=!1,e.phase="playing",e.scene&&resetBall(e.world,o,e.scene,e.color),draw(e),e.onScore(0),e.onTime(TIME_LIMIT),e.onPhase("playing")}export function reset(e){e.world.scoreboard.reset(0,TIME_LIMIT),e.won=!1,e.phase="ready",preview(e),draw(e),e.onScore(0),e.onTime(TIME_LIMIT),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,o){if(!e.world.isDisposed){if("playing"===e.phase){let r=Math.min(e.pending+1e3*o,MAX_PENDING_MS);for(;"playing"===e.phase&&!e.crashed&&r>=STEP_MS-STEP_TOLERANCE_MS;)r-=STEP_MS,step(e);e.pending=r,draw(e)}e.world.update(o)}}function end(e,o){e.world.scoreboard.stop(),e.won=o,e.phase="over",e.onPhase("over")}function step(e){const o=e.layout;e.velocity+=GRAVITY;const r=e.ballY+e.velocity;e.velocity=Math.max(-MAX_VELOCITY,Math.min(MAX_VELOCITY,e.velocity));const t=r-.65*o.fieldHeight-e.cameraY,a=t<0?e.cameraY+.12*t:e.cameraY;e.tick+=1;const s=a+o.fieldHeight-o.top;if(r+o.ballRadius>=s)return e.ballY=s-o.ballRadius,crash(e);const n=o.ringRadius+o.ringThickness/2,i=o.ringRadius-o.ringThickness/2;for(const t of e.rings){const a=r-t.y,s=Math.abs(a);if(s+o.ballRadius>=i&&Math.max(0,s-o.ballRadius)<=n&&!safeAt(Math.atan2(a,0),ringRotation(t,e.tick),e.color))return crash(e);!t.passed&&r<t.y-n-2*o.ballRadius&&(t.passed=!0,e.passed+=1,e.onScore(e.world.scoreboard.add(POINTS_PER_PASS)),e.onEvent("pass"))}e.ballY=r,e.cameraY=a;const l=a+o.fieldHeight+SPAWN_MARGIN;if(e.stars=e.stars.filter(r=>Math.abs(e.ballY-r.y)<o.ballRadius+o.starRadius?(e.color=r.colorIndex,e.scene&&recolor(e.world,o,e.scene,r.colorIndex,e.ballY,r.id),e.onEvent("color"),!1):r.y<l),e.highestY>a-SPAWN_MARGIN){const r=e.highestY-o.gap;e.rings.push(ring(r)),e.stars.push(star(r+o.gap/2,e.color)),e.highestY=r}e.rings.some(e=>e.y>=l)&&(e.rings=e.rings.filter(e=>e.y<l))}const CRASH_DELAY=.7;function crash(e){const{layout:o,scene:r}=e;e.crashed||(e.crashed=!0,e.world.scoreboard.stop(),o&&r&&shatter(e.world,o,r,e.ballY,e.color),e.onEvent("crash"),e.world.after(CRASH_DELAY,()=>"playing"===e.phase&&e.crashed&&end(e,!1)))}export function jump(e){"playing"!==e.phase||e.crashed||(e.velocity=JUMP_VELOCITY,e.layout&&e.scene&&hop(e.world,e.layout,e.scene),e.onEvent("jump"))}
@@ -0,0 +1 @@
1
+ "use strict";import{extrude,merge,Path,quat,tube}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{popAndBurst}from"../shared/EngineBlasts.js";import{cacheGameAsset,createGameMesh as _0x1776ec}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{GAME_COLORS}from"./ColorSwitchConstants.js";const meshes=new Map,cached=(o,e)=>{let s=meshes.get(o);return!s&&(s=cacheGameAsset("color-switch/ColorSwitchScene:"+o,e),meshes.set(o,s)),s},BACKDROP_DEPTH=60,EYE_DISTANCE=240,arc=(o,e,s=14)=>Array.from({length:s+1},(t,a)=>{const r=o+(e-o)*a/s;return[Math.cos(r),Math.sin(r),0]}),ringMesh=o=>cached("cs-ring:"+o.toFixed(3),()=>_0x1776ec(merge(GAME_COLORS.map((e,s)=>({geometry:tube(arc(-s*Math.PI/2,-(s+1)*Math.PI/2),{radius:o/2,sides:16,smoothness:3,caps:!1}),color:toColor(e)}))),{center:!1,shine:.65})),haloMesh=()=>cached("cs-halo",()=>_0x1776ec(tube(arc(0,2*Math.PI,32),{radius:.06,sides:10,smoothness:2,caps:!1}),{center:!1})),starMesh=()=>cached("cs-star",()=>_0x1776ec(extrude((new Path).addStar(0,0,.5,.22),{depth:.3}),{shine:.6}));export const toWorld=(o,e,s,t=0)=>[e-o.width/2,-s,t];export const colorOf=o=>toColor(GAME_COLORS[o]??GAME_COLORS[0]);export function buildScene(o,e,s){return{backdrop:spawnBackdrop(o,e.width,e.height,-60,s),ball:o.spawn({mesh:"sphere",scale:2*e.ballRadius,color:colorOf(0),pickable:!1}),halo:o.spawn({mesh:haloMesh(),scale:0,color:[1,1,1,0],pickable:!1}),rings:new Map,stars:new Map}}export function removeScene(o,e){for(const s of[e.backdrop,e.ball,e.halo,...Array.from(e.rings.values()),...Array.from(e.stars.values())])o.despawn(s)}export function setSceneTheme(o,e,s){setBackdropTheme(o,e.backdrop,s)}export function frame(o,e,s,t,a){const r=-(a+e.height/2-e.top);t.eye=[0,r,240],t.target=[0,r,0],t.ortho=e.height/2,o.set(s.backdrop,{position:[-e.width/2,r+e.height/2,-60]})}export function syncField(o,e,s,t,a){if(s.syncedRings===t&&s.syncedStars===a&&s.ringCount===t.length&&s.starCount===a.length)return;s.syncedRings=t,s.syncedStars=a,s.ringCount=t.length,s.starCount=a.length;const r=new Set;for(const a of t)r.add(a.id),s.rings.has(a.id)||s.rings.set(a.id,o.spawn({mesh:ringMesh(e.ringThickness/e.ringRadius),position:toWorld(e,e.width/2,a.y),scale:e.ringRadius,pickable:!1}));for(const[e,t]of s.rings)!r.has(e)&&(o.despawn(t),s.rings.delete(e));r.clear();for(const t of a)r.add(t.id),s.stars.has(t.id)||s.stars.set(t.id,o.spawn({mesh:starMesh(),position:toWorld(e,e.width/2,t.y,4),scale:2.4*e.starRadius,color:colorOf(t.colorIndex),spin:[0,2.2,0],pickable:!1}));for(const[e,t]of s.stars)!r.has(e)&&(o.despawn(t),s.stars.delete(e))}const TURN=[0,0,0,1];export function turnRing(o,e,s,t){const a=e.rings.get(s);null!=a&&o.set(a,{rotation:quat.z(-t,TURN)})}export function placeBall(o,e,s,t){o.set(s.ball,{position:toWorld(e,e.width/2,t,6)})}export function hop(o,e,s){const t=2*e.ballRadius;o.animate(s.ball,[{scale:1.14*t,at:.3},{scale:t}],{duration:.22})}export function recolor(o,e,s,t,a,r){const n=colorOf(t),i=2*e.ballRadius;if(o.set(s.ball,{color:n}),o.animate(s.ball,[{scale:1.3*i,at:.25},{scale:i}],{duration:.3}),o.stopAnimation(s.halo),o.set(s.halo,{position:toWorld(e,e.width/2,a,5),scale:e.ballRadius,color:[n[0],n[1],n[2],.9]}),o.animate(s.halo,{scale:2.6*e.ballRadius,color:[n[0],n[1],n[2],0]},{duration:.42,easing:"easeOut"}),r){const e=s.stars.get(r);null!=e&&o.set(e,{scale:0})}}export function shatter(o,e,s,t,a){const r=colorOf(a),n=2*e.ballRadius;o.stopAnimation(s.ball),popAndBurst(o,s.ball,{scale:n,color:r,duration:.45},{position:toWorld(e,e.width/2,t,10),size:1.6*n,color:r,count:14})}export function resetBall(o,e,s,t){o.stopAnimation(s.ball),o.stopAnimation(s.halo),o.set(s.ball,{scale:2*e.ballRadius,color:colorOf(t)}),o.set(s.halo,{scale:0})}
@@ -1 +1 @@
1
- "use strict";const _0x3521c9=_0x52fe;!function(){const e=_0x52fe,o=_0x360e();for(;;)try{if(998312==parseInt(e(445,"CeqO"))/1+parseInt(e(382,"iQ2b"))/2+-parseInt(e(390,"wUW#"))/3*(-parseInt(e(438,"(kNw"))/4)+parseInt(e(453,"H%A%"))/5+-parseInt(e(392,"5@3d"))/6+-parseInt(e(422,"y8yk"))/7+-parseInt(e(428,"jEn%"))/8*(-parseInt(e(460,"CeqO"))/9))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{c as _0xd69b13}from"react/compiler-runtime";import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x2d2c8f,{useEffect,useMemo}from"react";import{View,StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useColorsSortStore,useIsPlaying,useIsGameOver,useIsTimedOut,useContainerCount}from"./ColorsSortStore.js";import{ColorContainer}from"./components/ColorContainer.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x14e2b4}from"../../helpers/index.js";import{COLORS_SORT_GAME_CONFIG,COLORS_SORT_CONSTANTS}from"./ColorsSortConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS,getGameDimensions,formatTime}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{jsx as _0x5ea375,Fragment as _0x18041b,jsxs as _0x5eea9b}from"react/jsx-runtime";const{width:SCREEN_WIDTH}=getGameDimensions(),ITEM_TOTAL_WIDTH=COLORS_SORT_GAME_CONFIG.CONTAINER_WIDTH+2*COLORS_SORT_GAME_CONFIG[_0x3521c9(368,"2eYF")],GRID_WIDTH=3*ITEM_TOTAL_WIDTH+2*COLORS_SORT_GAME_CONFIG[_0x3521c9(436,"CeqO")],GRID_STYLE={width:Math[_0x3521c9(455,"0hdH")](GRID_WIDTH,SCREEN_WIDTH-20)},timedOutFormatter=()=>formatTime(COLORS_SORT_CONSTANTS[_0x3521c9(469,"8bA9")]),winFormatter=formatTime,ContainerGrid=_0x2d2c8f[_0x3521c9(355,"8bA9")](e=>{const o=_0x3521c9,t={Ydmgf:function(e){return e()},YWmAz:function(e,o){return e===o}},r=_0xd69b13(5),{onPress:W}=e,n=t[o(378,"H%A%")](useContainerCount);let s;if(r[0]!==n){const e={};e.length=n,s=Array.from(e,_temp),r[0]=n,r[1]=s}else t[o(375,"mFMK")](o(359,"QXts"),"QBeDW")?s=r[1]:_0x47773b=_0x5e0d82[4];const d=s;let a;return r[2]!==d||r[3]!==W?(a=_0x5ea375(_0x18041b,{children:d[o(403,"h&8L")](e=>_0x5ea375(ColorContainer,{containerIndex:e,onPress:W},e))}),r[2]=d,r[3]=W,r[4]=a):a=r[4],a});ContainerGrid[_0x3521c9(417,"(kNw")]=_0x3521c9(354,"QXts");export const ColorsSort=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:r,onShare:W,onShareScreenshot:n,onShowLeaderboard:s,bannerAd:d})=>{const a=_0x3521c9,i={zOQgG:function(e,o,t,r){return e(o,t,r)},fUSRY:function(e,o){return e(o)},xaGGx:function(e){return e()},iYezi:"SuGKy",iDMNg:"zZffy",QDpJB:function(e,o,t){return e(o,t)},UPeKI:function(e,o){return e(o)},kwkoo:function(e,o){return e(o)},WBiUH:function(e,o,t){return e(o,t)},gICOP:function(e,o,t){return e(o,t)},HMhjy:function(e,o,t){return e(o,t)},WuhcU:function(e,o,t){return e(o,t)}},m=useIsPlaying(),S=useIsGameOver(),x=useIsTimedOut(),_=_0x2d2c8f[a(418,"(kNw")](t);_.current=t;const O=_0x2d2c8f[a(435,"y8yk")](e);O[a(409,"O@&i")]=e;const u=_0x2d2c8f[a(369,"wUW#")](!1),f=_0x2d2c8f[a(433,"iQ2b")](e=>{const o=a;if(_[o(362,"q^qj")]&&!u[o(384,"2eYF")]){const t=useColorsSortStore[o(379,"k!dr")]()[o(425,"MA6r")],r=120,W=e===o(464,"82h!")?i.zOQgG(calculateTimeBasedScore,t,r,100):0;_[o(388,"g5]9")]({status:e,score:W[o(381,"8g^e")]()}),u[o(432,"aL36")]=!0}},[]),l=useColorsSortStore(e=>e[a(353,"wUW#")]),C=i[a(377,"wUW#")](useColorsSortStore,e=>e[a(446,"5@3d")]),G=i[a(468,"jx1v")](useColorsSortStore,e=>e.stopGame),R=useColorsSortStore(e=>e[a(441,"mFMK")]),k=i[a(372,"h&8L")](useColorsSortStore,e=>e[a(457,"n3Kg")]);useEffect(()=>{const e=a;if(i[e(396,"(kNw")]!==i.iDMNg)return l(),()=>{const o=e;useColorsSortStore[o(408,"82h!")]().isPlaying&&!u[o(404,"$GV5")]&&i.fUSRY(f,o(467,"ulTx")),i[o(398,"(kNw")](G)};_0x5cbdf0[e(470,"QXts")]=_0x4004e6.getState().time},[l,G]);const p=_0x2d2c8f[a(442,"CeqO")](0);S&&(p[a(402,"G)2G")]=useColorsSortStore[a(395,"ulTx")]().time),useEffect(()=>{const e=a;S&&!u[e(367,"iQ2b")]&&f(x?e(412,"KUnb"):e(462,"(kNw")),!S&&(u[e(447,"CeqO")]=!1)},[S,x,f]);const h=_0x2d2c8f[a(415,"e^1N")](()=>{const e=a;u[e(423,"MA6r")]=!1,C(),i[e(429,"82h!")](playSound,GAME_SOUNDS.COLORS_SORT[e(459,"KUnb")],O[e(374,"RsV6")][e(405,"jEn%")]),playHaptic(HapticType.MEDIUM,O[e(421,"bpap")][e(380,"2eYF")])},[C]),T=_0x2d2c8f[a(463,"y8yk")](()=>{f(a(451,"e^1N")),G()},[f,G]),I=_0x2d2c8f[a(360,"Xv![")](()=>{r?.(),R(),l()},[R,l,r]),N=_0x2d2c8f.useCallback(e=>{const o=a;if(o(450,"h&8L"),o(456,"jx1v")!==o(434,"n3Kg")){const t=useColorsSortStore[o(452,"8bA9")]();if(!t[o(454,"wUW#")]||t.isGameOver)return;k(e,O[o(358,"2cj*")])}else _0xac275f&&!_0x22810a[o(411,"mFMK")]&&RQDWdR[o(466,"82h!")](_0x33d42a,_0x15231b?RQDWdR[o(419,"JVpJ")]:"win"),!_0x507953&&(_0x22af29[o(358,"2cj*")]=!1)},[k]),D=e?.[a(437,"RsV6")]??0,y=_0x2d2c8f.useMemo(()=>({isPlaying:m,gameOver:S,onStartGame:h,onStopGame:T,onShare:W,onShowLeaderboard:s,startButtonSubtext:a(449,"iQ2b")}),[m,S,h,T,W,s]),g=_0x2d2c8f.useMemo(()=>({isVisible:S,score:p[a(373,"272[")],onPlayAgain:I,buttonText:a(394,"2cj*"),scoreLabel:x?a(387,"n3Kg"):"Completion Time",scoreFormatter:x?timedOutFormatter:winFormatter,title:x?a(440,"e7v$"):a(399,"2eYF"),message:x?a(416,"e^1N"):a(357,"#L0E")}),[S,I,x]),b=_0x2d2c8f[a(458,"RsV6")](()=>({gameId:GAME_IDS[a(407,"(Ly!")],settings:e,onSettingsChange:o}),[e,o]),Q={};Q[a(389,"KUnb")]=D;const H=useMemo(()=>[styles[a(365,"O@&i")],Q],[D]),M=useMemo(()=>[styles.containersGrid,GRID_STYLE],[]),L={};L.offset=D;const A={};A[a(364,"ulTx")]=N;const E={...y},P={...g};P[a(465,"sV9X")]=n,P[a(385,"0hdH")]=d;const j={...b};return i[a(386,"WNjH")](_0x5ea375,GestureHandlerRootView,{style:styles[a(420,"JVpJ")],children:_0x5eea9b(_0x14e2b4,{children:[i[a(448,"5fDd")](_0x5ea375,ScoreBoard,L),_0x5ea375(View,{style:H,children:_0x5ea375(View,{style:M,children:i[a(424,"82h!")](_0x5ea375,ContainerGrid,A)})}),_0x5ea375(GameControlButton,E),i[a(383,"5@3d")](_0x5ea375,GameOverModal,P),_0x5ea375(GameSettingsModal,j)]})})};const _0x4c7284={};_0x4c7284[_0x3521c9(356,"&hYt")]=1,_0x4c7284[_0x3521c9(363,"bpap")]=BACKGROUND_COLOR;const _0x34c614={};function _0x360e(){const e=["dCo6FSodqSoso3lcGmkpW4e","iCoMBSkGuCoFotdcJSkzW545j2Pcmmo3u8kqWQ0","WO/dTrZcQmkcW6ddSmomi8otWO4","WP7dRWRcISklW6C","W64mWPxdOZ8","W60XWOhdVWBcGSomW6WAuSoA","W5GrW4dcVCoHW5yk","W6lcRN0KWOH6W6RcGN3dKMtcMGyO","mLtdRSoaWRpdVru","W4JcOmozCCos","juJdSCox","W4pcGSoDDmozqHhcOmkIWPS","WOldVSkOW5eNjSk+xSoWhG","kN0pWRxcMe9pgq","W5hcQCobuCoP","kh0/WQJcP1zAlq","W4OKFNGWDa","W75eW78wWQyPW5G","BGTYW4XKjMm2crZcOa","W6RdU8kxhYm","WQBdRsfpW5qV","imkzW43dPmoUW7DfeG","WRu/W7DykHG","W5RcRGFcLmkeW7xdISoK","eaFdHmoK","t8oCWRJdHSoXW5BdO3C","W719lYJcR1ddLSkiWPC","eSk4W6hdSSouW5y","W4/cVmoiW4L4zSo7W7vbWRRcHmkcrmoS","g8o7FSoHv8oB","vmo/WRZcK8kdWODJa0GKjGG","WORdRetdJYFdSrRdGrW","bmk+W7BdKSouW55W","C1ZdTHWH","sbDLW7SLkwa4bW3cUhq","wCoMldm","g8oODCoJrSos","jSkUW53dS8kXW5/cRY8","fsGkWPJdUgBdUuFdUmoYWRNcS8oC","W70/ht/cM8oDxWRcIW","WOtdQc0","WOfWjmobWQ4","W6ddT8kIocOwW58rleLTBYFcUCod","WQ8QW7rMkGhcJa","jt/dOmooWQK","vCo4WRBcK8kdWOC8ixqveH89","DSoQWQ0cW7JcNbRdJYhcNNeZlq","WPZdTqe","WQBdRsfEW5aLWRldLxNdVe0","W7FcHmoF","mqS6WOddQmknW6S","W4/cPmo+ESoL","W5WSWPtcUfpcPG","WRH6dCo9WRC","lmkQW5hdTmkSW5pcVG","W4BcVmojW490BSo2","W70IjcFcK8ofwG3cLSoLW4VdOcTQ","W6BcPSovW4LWACoSW5nCWPpcGSkotG","lmkUW4tdJW","WQ3dICkuxG","D8kuWOJcPSoYmmkMW4nPW7dcSmkrW5ZdMSoctdKK","ya48W4TxWRmV","W7tcI8oEW7Lg","WOKfiaZcTSoZsqDxx8kZ","W7G7WOxdJblcGa","W4O0yN4WAmoP","W5KfW5hcPmoJW4OreHJcVc3dP39rha","W5aJWQRcQvpcUu4","mGGsDJq+a8oM","W7xdH8kDdXa","Ea1LW71GjhS","bCoUWO5ysvD0ddZcU8k6WRy","W6e/kahcN8oc","FCkglCkKWPVdHJGP","WQZdL8kpsmkBwJZdImowW5S","xSo+ndNdKW","Bb94EalcJCo9","WRKSW6nzkGlcLW","W5zpmqZcOq","W5GOWONcR0pcUfGPW7S/WRG","W7izhGhcOW","E3PtW4RcRG","W47dImkOWOCYW7VdNSki","iSopWR1+ygbJoGxcI8khWP1f","WRNdLmk1w8khEIBdIG","kKSHWRO0EJCLdZJcSH1j","WQ7dRu3dNGy","jmouWQ5UAwTF","WOVdOc0+W7D8WQhdQG","rmo+WQVcVCkk","W4FdU8kJog4rWRWRmHW","hmopW4lcRKFcOwa","gWRdK8o7WPtcRetcO8ks","WQb6E2VdJmkxzGdcM8oeW5ZdRa","WOOBiNBdOvL2WOlcTCoPWRXMWOS5","W4hcOrBcHwpcHuNdJIm5kxGl","W7pcNCoqEmoohcFcUCk1WOhdTSkO","ubq8W40sWPW8bwBdSmky","W5GOWO7cIelcQ0KE","WOldHqRcOSkh","bSk9z2xcJSkTlSogeCk/xaG","WPpdVsJcN8kw","fmoUWO5isuek","DmktWOrnwwH9cq","W5NcR13dQ8oCWRBcSCoHmSonWP44W70","WOr1W4b9WR7dQSom","wmoOlW","WOddP8kZW4qSaCk+","Fce2WOBcOuDkjmoSW7xdV8k0","W75uW6mqWQy1","ydK7W6bcDrHmDr8r","W6FcImofsmoFudBcQG","nHWnyraIeG","W64yhrO","W6XTlJ/cVNNdGW","gGtdKSo5","W7G7WOu","smkmWOtdQrldVceAW6qGudtcHG"];return(_0x360e=function(){return e})()}_0x34c614[_0x3521c9(439,"KUnb")]=1,_0x34c614.justifyContent=_0x3521c9(431,"q^qj"),_0x34c614[_0x3521c9(427,"$GV5")]=_0x3521c9(406,"aL36");const _0x7c11c5={};function _0x52fe(e,o){e-=353;const t=_0x360e();let r=t[e];if(void 0===_0x52fe.psYWQO){const e=function(e,o){let t,r,W=[],n=0,s="";for(e=function(e){let o="",t="";for(let t,r,W=0,n=0;r=e.charAt(n++);~r&&(t=W%4?64*t+r:r,W++%4)?o+=String.fromCharCode(255&t>>(-2*W&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let e=0,r=o.length;e<r;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),r=0;r<256;r++)W[r]=r;for(r=0;r<256;r++)n=(n+W[r]+o.charCodeAt(r%o.length))%256,t=W[r],W[r]=W[n],W[n]=t;r=0,n=0;for(let o=0;o<e.length;o++)r=(r+1)%256,n=(n+W[r])%256,t=W[r],W[r]=W[n],W[n]=t,s+=String.fromCharCode(e.charCodeAt(o)^W[(W[r]+W[n])%256]);return s};_0x52fe.DddNqM=e,_0x52fe.Dlpctl={},_0x52fe.psYWQO=!0}const W=t[0];_0x52fe.yzjITp!==W&&(_0x52fe.Dlpctl={},_0x52fe.yzjITp=W);const n=_0x52fe.Dlpctl[e];return void 0===n?(void 0===_0x52fe.yCxczF&&(_0x52fe.yCxczF=!0),r=_0x52fe.DddNqM(r,o),_0x52fe.Dlpctl[e]=r):r=n,r}_0x7c11c5.flexDirection=_0x3521c9(413,"JVpJ"),_0x7c11c5.flexWrap=_0x3521c9(410,"(&0b"),_0x7c11c5[_0x3521c9(443,"QXts")]=_0x3521c9(393,"82h!"),_0x7c11c5[_0x3521c9(371,"8g^e")]="flex-end",_0x7c11c5[_0x3521c9(361,"JVpJ")]=COLORS_SORT_GAME_CONFIG.GRID_GAP;const _0x33d5a3={};_0x33d5a3[_0x3521c9(376,"ulTx")]=_0x4c7284,_0x33d5a3[_0x3521c9(370,"nn7j")]=_0x34c614,_0x33d5a3[_0x3521c9(391,"om7N")]=_0x7c11c5;const styles=StyleSheet[_0x3521c9(444,"e^1N")](_0x33d5a3);function _temp(e,o){return o}ColorsSort.displayName=_0x3521c9(426,"82h!");
1
+ "use strict";import{HapticType}from"../../services/HapticsService.js";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{formatTime,GAME_IDS}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{getLayout,LIGHT,SCORE_BASE,TIME_LIMIT}from"./ColorsSortConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,tap,tick}from"./ColorsSortGame.js";import{jsx as _0x24f22b}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.COLORS_SORT,FEEDBACK={pick:{sound:SOUNDS.PICK,haptic:HapticType.LIGHT},drop:{sound:SOUNDS.DESELECT,haptic:HapticType.LIGHT},refuse:{sound:SOUNDS.MISS,haptic:HapticType.LIGHT},move:{sound:SOUNDS.MATCH,haptic:HapticType.MEDIUM},complete:{sound:SOUNDS.COMPLETE,haptic:HapticType.SUCCESS}},timedOutFormatter=()=>formatTime(TIME_LIMIT);export const ColorsSort=engineGame(GAME_IDS.COLORS_SORT,e=>{const[t,r]=useLiveState(TIME_LIMIT),{game:o,theme:s,screen:i,gameOver:m}=useEngineGame(e,{gameId:GAME_IDS.COLORS_SORT,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,o)=>{const s=getLayout(t,r,o);return setLayout(e,s),s.shelves[0]?.width},tap:tap,outcome:e=>e.timedOut?"lose":"win",reportScore:(e,t)=>"win"===t?calculateTimeBasedScore(e.time,TIME_LIMIT,SCORE_BASE):0,sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),onOver:(e,t)=>{"win"!==t&&e(SOUNDS.GAME_OVER,HapticType.ERROR)},wire:(e,t)=>{e.onTime=r,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}}),a=o.timedOut;return _0x24f22b(EngineGameScreen,{...i,light:LIGHT,columns:[timerColumn(t,s)],subtext:"Sort colors!",gameOver:m({title:a?"TIME UP!":"SORTED!",message:a?"You ran out of time!":"All colors sorted!",scoreLabel:a?"Time's Up!":"Completion Time",score:o.time,formatter:a?timedOutFormatter:formatTime,buttonText:"Sort Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x497857=_0x4bd4;!function(){const _=_0x4bd4,x=_0x24b3();for(;;)try{if(499913==parseInt(_(428,"F#fO"))/1+-parseInt(_(344,"tz@v"))/2+-parseInt(_(433,"P$bP"))/3+-parseInt(_(439,"Gtai"))/4+parseInt(_(419,"U1UK"))/5*(-parseInt(_(364,"1w!]"))/6)+-parseInt(_(346,"hb1T"))/7*(parseInt(_(445,"qNm7"))/8)+parseInt(_(418,"O]4g"))/9*(parseInt(_(383,"tz@v"))/10))break;x.push(x.shift())}catch(_){x.push(x.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions,isTablet}from"../../services/UtilsService.js";const{width:width,height:height}=getGameDimensions(),_0x1638a9={};function _0x24b3(){const _=["W7tdOSo5iqqHDG","qrG1WPGsWPldN3z7WQG","wNNcRmoZESoMBa","WQ9EW53cVwtcPNVcVSkB","W5TlbsJdSCoHW5G","eCotz8kVrmk6rvVdNq","bSkwW6i0WOLyArhdNL/dGSkM","CexcMYfkomkUW4j4W6VdISofxW","cYNcImoufmoKgGDrqrP4WORdSW52WONdJ8oi","W4pdQmktn8kKWOC5rtZdKa","fSozlHhdTXvc","BCo0ymoP","WP12W6VcM3lcMK3cICkYWR10Aa","v8kiBuW","WQVcTgnO","wrOTf8kCWPVdQmo0uXpdTa","fmksW6PoW70Oeq","kgnpz8o3WOBdGConuq","wGJcRmkecmoOgq","l8oEk8o4qIHaW4NcVCkHW5RcJG","wSorsSoDW6ivWQC/gW9qWQi","W43cVSoVgW","WQG6W6ddSmkdWQjbWRRdOLS","kbtdLXeqaSob","eNJdM8k2W5TwW7RcSCkWxSkVnMm","WPasWPqpW7dcHs3cVmkaWRhdHCkg","BCorWORdVKzHW6D9","WR40WQeJW4e","W6ZcKYrfW7dcHNW","WP12W6VcM3lcMKBcICk6","W73cRCkCWRK","aeFdSsu3n8oj","WOnfbCkScSkwW4S","eCotz8kVrmk6ueZdNmkvga","xmk9tSkCFqbgW6VcL8kH","WRaLc8k5i8oRW5q7nM14W7JdH8oCW640lSowW77dGW","vtfCW6HmBJTrW7BcVKXDW4RcL8kIeNBdNCky","WQZcOGFdRmoOWQRdKmogf8kRvSot","qmk9r1pcThPVoa5b","WP7cIJhdIG","d2HXWQOvWRXJWOtdHIZcTW","AtBdP0a","adddVYi/mmob","mqSKiv5YW5yHBaVdUW","j8k1jmk7AarA","WRjoW7WTeIeyWPpcLmowmJm","WOPQixdcNmoLWQ8BWP5vWPj7hmoYW6NcNCoYW4/cUG","WORcMCoBnCoPycS","WQ4RdSkWFW","W60HBYFdJgpdRW","WP/cNfraWOdcNXdcQCkCeCoNWPm","jSo2tCkB","WPqHr8o9hbxdUW","dKnUsq","oGhcPmoHFCkyzg4XlMCrW7BcHgOs","WQZcOGFdRmoOWQRdHSorgSkPxSob","u2z2hq","WO/cTCoeWP3cRNBcI3OvdmopACo5c8oN","dCozkrNcHufUWPnsW5xdMq","W6ZdPYm3W7hcGqG","W5FdOsWcWRSQW6rIkmop","W4RcMCoOiSkxWPRcSG","DtacWRa","WP4UBcdcVGZcJ8o8c8oX","wbiUeCkBW7pcSCo2ErFdNdJdHG","W6r5l8ooqG","WRddP8kqqmovW6Xo","CmoWWPnjW6CHyt7dSw/dPmk6d8o3","W4NcNGRcTG","fMigWRbvAeCtWQRdQXiW","W7b1xmk0wCkTWQjACq","qrG1WPGsWPldK317WQG7zG","WQ5cW6KJaW","CCobz8o0W5pcISkhWPHIia","FSkUW5bXW5NdNI7dOHKZW65SW6pcN35mWR3cU8kq","eJC1o8oSAxe","W4ivn8oX","eqiUmCoNWRjT","W7/dImkXhmkv","W6lcNKmBWOzGW6hdP8o3n8oA","kgtcPMzGaCod","W7eBWOb9W7FdPeC","W7qOt8krzwtcJwpcGmk1yLiMbhmtpG","WQyJg8kZ","WROGESkvbCkqzSodWOlcVmkJDbu","m2lcOriqcSkJoaBdLmo/ca","FdaiWO8+WQddUq","WR7cQHhdQSoYWQBdGmopdCkIsW","luzwWOH4W5erW6pcR1JdICkkrmooxKPit2JdLa","W7eBWOb6WOhdRKe","WO9snmoYebxcKwRcVSkNCey","CmopASoRW5xcKCkgWOH+o8oAz8kqWRm","iMLbW65JWPtdTerZWQe7","WPillmkBtSkcWRjhrH4eWPRcSG","uSonmfFdScGc","WRFdGqjoW6vVW6FdNmo7","W7/dJmk9W77dMGFdSxyYh8oYCCov","mGeZj0XYW4mLCbO","jCo7umkh","C0/cJcDkkCkYW5n8W6W","xmk8s8kFofbTW5VcVSkHW6BcMq","WQK2s8oKW6tdGCoJWRi2WPBcK8oFW5pcMCotWPiFnmoh","amk0WRVcMmokWPtdMve","WRdcVCkKfq","W6eel8oUsCoUW5q"];return(_0x24b3=function(){return _})()}_0x1638a9[_0x497857(422,")]Aw")]=BACKGROUND_COLOR,_0x1638a9.PRIMARY=PRIMARY_COLOR,_0x1638a9[_0x497857(404,"w8pH")]=_0x497857(348,"U1UK"),_0x1638a9[_0x497857(412,"r6u5")]=_0x497857(438,"gF2K"),_0x1638a9[_0x497857(382,"x]o^")]=_0x497857(429,"GSy%"),_0x1638a9.PIECE_RED=_0x497857(443,"cTcA"),_0x1638a9[_0x497857(399,"9z67")]=_0x497857(398,"r6u5"),_0x1638a9[_0x497857(371,"JYwq")]=_0x497857(393,"vbck"),_0x1638a9[_0x497857(343,"!%9L")]=_0x497857(365,"%9(L"),_0x1638a9[_0x497857(436,"w8pH")]="#C0C0C0",_0x1638a9[_0x497857(366,"1w!]")]=_0x497857(380,"!%9L"),_0x1638a9[_0x497857(392,"xPSY")]=_0x497857(377,"9z67"),_0x1638a9[_0x497857(368,"tz@v")]="rgba(255, 255, 255, 0.35)",_0x1638a9.SELECTED_GLOW="#FFD700";export const COLORS_SORT_COLORS=_0x1638a9;const _0x353471={};_0x353471.SCREEN_WIDTH=width,_0x353471[_0x497857(356,"!%9L")]=height,_0x353471.PIECE_SIZE=isTablet?60:45,_0x353471[_0x497857(440,")]Aw")]=isTablet?84:60,_0x353471[_0x497857(431,"Gtai")]=isTablet?28:20,_0x353471[_0x497857(442,"U1UK")]=isTablet?7:5,_0x353471[_0x497857(406,"qNm7")]=isTablet?112:80,_0x353471[_0x497857(403,"#Cz(")]=isTablet?336:240,_0x353471.PIECE_WIDTH=isTablet?82:64,_0x353471[_0x497857(374,"gF2K")]=isTablet?5:4,_0x353471[_0x497857(373,"[qX*")]=isTablet?28:20,_0x353471[_0x497857(345,"[ODe")]=isTablet?14:10,_0x353471.GRID_GAP=isTablet?20:15,_0x353471[_0x497857(416,"%9(L")]=isTablet?410:300;export const COLORS_SORT_GAME_CONFIG=_0x353471;const _0x3bcccb={};_0x3bcccb[_0x497857(352,"&HKq")]=500,_0x3bcccb[_0x497857(444,"F#fO")]=100,_0x3bcccb[_0x497857(394,"eqis")]=2e3,_0x3bcccb[_0x497857(435,"orDA")]=120;export const COLORS_SORT_CONSTANTS=_0x3bcccb;export const PIECE_COLORS=[COLORS_SORT_COLORS[_0x497857(378,"&HKq")],COLORS_SORT_COLORS.PIECE_GREEN,COLORS_SORT_COLORS[_0x497857(446,"xPSY")],COLORS_SORT_COLORS[_0x497857(386,"w8pH")],COLORS_SORT_COLORS[_0x497857(350,"orDA")],COLORS_SORT_COLORS[_0x497857(369,"G*wk")],COLORS_SORT_COLORS[_0x497857(409,"zhrq")]];const _0x151beb={};_0x151beb[_0x497857(376,"gF2K")]=_0x497857(401,"Gtai"),_0x151beb[_0x497857(425,"@nl5")]=_0x497857(415,"j3rG"),_0x151beb[_0x497857(370,"4cqw")]=_0x497857(426,"w72U"),_0x151beb.glow=_0x497857(395,"9efR");const _0x5629e7={};_0x5629e7.light=_0x497857(351,"#Cz("),_0x5629e7[_0x497857(390,"GSy%")]=_0x497857(349,"MK5z"),_0x5629e7.dark=_0x497857(381,"@nl5"),_0x5629e7[_0x497857(360,"G*wk")]=_0x497857(357,"#Cz(");const _0x17da23={};_0x17da23[_0x497857(397,"U1UK")]="#7B9FFF",_0x17da23[_0x497857(379,"aBh9")]=_0x497857(410,"zMDM"),_0x17da23[_0x497857(432,"U1UK")]=_0x497857(408,"9z67"),_0x17da23[_0x497857(347,"MK5z")]=_0x497857(384,"U1UK");const _0x110efa={};_0x110efa[_0x497857(421,"eqis")]=_0x497857(396,"4cqw"),_0x110efa[_0x497857(405,"tOYR")]="#FFD700",_0x110efa[_0x497857(402,"1w!]")]="#CC9E00",_0x110efa[_0x497857(417,"homp")]=_0x497857(385,"O]4g");const _0xc62a6e={};function _0x4bd4(_,x){_-=343;const W=_0x24b3();let o=W[_];if(void 0===_0x4bd4.qNBpHB){const _=function(_,x){let W,o,O=[],d=0,C="";for(_=function(_){let x="",W="";for(let W,o,O=0,d=0;o=_.charAt(d++);~o&&(W=O%4?64*W+o:o,O++%4)?x+=String.fromCharCode(255&W>>(-2*O&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let _=0,o=x.length;_<o;_++)W+="%"+("00"+x.charCodeAt(_).toString(16)).slice(-2);return decodeURIComponent(W)}(_),o=0;o<256;o++)O[o]=o;for(o=0;o<256;o++)d=(d+O[o]+x.charCodeAt(o%x.length))%256,W=O[o],O[o]=O[d],O[d]=W;o=0,d=0;for(let x=0;x<_.length;x++)o=(o+1)%256,d=(d+O[o])%256,W=O[o],O[o]=O[d],O[d]=W,C+=String.fromCharCode(_.charCodeAt(x)^O[(O[o]+O[d])%256]);return C};_0x4bd4.VKmhMD=_,_0x4bd4.RCMXBo={},_0x4bd4.qNBpHB=!0}const O=W[0];_0x4bd4.PvtdNn!==O&&(_0x4bd4.RCMXBo={},_0x4bd4.PvtdNn=O);const d=_0x4bd4.RCMXBo[_];return void 0===d?(void 0===_0x4bd4.fwMgXW&&(_0x4bd4.fwMgXW=!0),o=_0x4bd4.VKmhMD(o,x),_0x4bd4.RCMXBo[_]=o):o=d,o}_0xc62a6e.light=_0x497857(391,"!%9L"),_0xc62a6e[_0x497857(388,"w8pH")]=_0x497857(424,"tOYR"),_0xc62a6e[_0x497857(411,"orDA")]=_0x497857(359,"zQ@*"),_0xc62a6e.glow=_0x497857(423,"wzCZ");const _0x283589={};_0x283589[_0x497857(414,"P$bP")]=_0x497857(353,"9efR"),_0x283589.base=_0x497857(430,"gF2K"),_0x283589[_0x497857(363,"9z67")]=_0x497857(372,"GSy%"),_0x283589[_0x497857(400,"x]o^")]=_0x497857(437,"swfG");const _0x447ddc={};_0x447ddc[_0x497857(427,"j3rG")]="#FF6EB8",_0x447ddc[_0x497857(362,"zQ@*")]=_0x497857(367,"#Cz("),_0x447ddc[_0x497857(447,"x]o^")]="#CC0066",_0x447ddc.glow="rgba(255,20,147,0.4)";const _0x1f2816={[COLORS_SORT_COLORS[_0x497857(354,"x]o^")]]:_0x151beb,[COLORS_SORT_COLORS[_0x497857(389,"swfG")]]:_0x5629e7,[COLORS_SORT_COLORS.PIECE_BLUE]:_0x17da23,[COLORS_SORT_COLORS[_0x497857(361,"&HKq")]]:_0x110efa,[COLORS_SORT_COLORS[_0x497857(358,"j3rG")]]:_0xc62a6e,[COLORS_SORT_COLORS[_0x497857(420,"orDA")]]:_0x283589,[COLORS_SORT_COLORS.PIECE_PINK]:_0x447ddc};export const PIECE_3D_COLORS=_0x1f2816;
1
+ "use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const COLORS=["#FF4444","#32CD32","#4169E1","#FFD700","#00CED1"];export const PIECES_PER_COLOR=4;export const TUBES=6;export const CAPACITY=5;export const TIME_LIMIT=120;export const SCORE_BASE=100;const PHONE={tubeWidth:80,tubeHeight:240,border:4,pieceWidth:64,pieceHeight:35,pieceGap:5,padBottom:4,columnGap:15,rowGap:15,lift:15},TABLET={tubeWidth:112,tubeHeight:336,border:5,pieceWidth:82,pieceHeight:50,pieceGap:7,padBottom:6,columnGap:20,rowGap:20,lift:20},TABLET_WIDTH=640,COLUMNS=3;export const LIFT_TIME=.18;export const MOVE_TIME=.36;export const SHAKE_TIME=.3;export const TILT=-.3;export const LIGHT=frontLight([-.4,.55,1],.5);const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110,SHELF_HEIGHT=12;export function getLayout(t,e,o){const i=t>640?TABLET:PHONE,p=-.3,r=Math.cos(p),h=getScoreBoardTop(o)+82+16,a=Math.max(240,e-h-110),s=3*i.tubeWidth+2*i.columnGap,n=i.tubeHeight+i.lift+.6*i.pieceHeight+12,u=(2*n+i.rowGap)*r+1.6*i.tubeWidth*Math.abs(Math.sin(p)),d=Math.min(1,gameWidthFor(t)/(s+2*i.columnGap),a/u),E={width:t,height:e,centerY:h+a/2,tilt:p},H=(2*n+i.rowGap)*d,T=[H/2-n*d+12*d,H/2-n*d*2-i.rowGap*d+12*d],g=(i.tubeWidth+i.columnGap)*d,b=[];for(const t of T)for(let e=0;e<3;e++)b.push([(e-1)*g,t]);return{...E,tubeRadius:i.tubeWidth/2*d,tubeHeight:i.tubeHeight*d,pieceRadius:i.pieceWidth/2*d,pieceHeight:i.pieceHeight*d,pieceGap:i.pieceGap*d,padBottom:(i.border+i.padBottom)*d,lift:i.lift*d,shelfHeight:12*d,tubes:b,shelves:T.map(t=>({y:t,width:s*d+i.columnGap*d*2}))}}export const slotY=(t,e,o)=>t.tubes[e][1]+t.padBottom+o*(t.pieceHeight+t.pieceGap);export const hoverY=(t,e)=>t.tubes[e][1]+t.tubeHeight+t.lift;
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{aimTilted,unproject}from"../shared/EngineTilt.js";import{CAPACITY,COLORS,hoverY,PIECES_PER_COLOR,TIME_LIMIT,TUBES}from"./ColorsSortConstants.js";import{buildScene,celebrate,completeTube,liftPiece,lowerPiece,movePiece,removeScene,setSceneTheme,shakeTube,showCork,spawnPiece}from"./ColorsSortScene.js";const WORLD_CAPACITY=300;function deal(){const e=COLORS.flatMap((e,t)=>Array(PIECES_PER_COLOR).fill(t));for(let t=e.length-1;t>0;t--){const o=Math.floor(Math.random()*(t+1));[e[t],e[o]]=[e[o],e[t]]}return Array.from({length:TUBES},(t,o)=>o<COLORS.length?e.splice(0,PIECES_PER_COLOR):[])}export function createGame(e){const t=new World(300),o={world:t,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",tubes:deal(),pieces:[],selected:null,get time(){return TIME_LIMIT-t.scoreboard.shownSeconds},get timeLeft(){return t.scoreboard.shownSeconds},timedOut:!1,onPhase:e=>{},onTime:e=>{},onEvent:e=>{}};return t.scoreboard.reset(0,TIME_LIMIT),t.scoreboard.handlers={onSecond:e=>o.onTime(e),onTimeUp:()=>{"playing"===o.phase&&(o.timedOut=!0,end(o))}},o}const sorted=e=>e.length===PIECES_PER_COLOR&&e.every(t=>t===e[0]);function solved(e){const t=new Map;for(const o of e)if(o.length){if(!o.every(e=>e===o[0]))return!1;t.set(o[0],(t.get(o[0])??0)+o.length)}return e.every(e=>!e.length||e.length===CAPACITY||e.length===t.get(e[0]))}export function setLayout(e,t){e.scene&&removeScene(e.world,e.scene);for(const t of e.pieces.flat())e.world.despawn(t);e.layout=t,aimTilted(e.camera,t),e.scene=buildScene(e.world,t,e.theme),spawnPieces(e)}export function setTheme(e,t){e.theme=t,e.scene&&setSceneTheme(e.world,e.scene,t)}function spawnPieces(e){const{layout:t,scene:o}=e;if(t&&o){if(e.pieces=e.tubes.map((o,n)=>o.map((o,s)=>spawnPiece(e.world,t,o,n,s))),null!=e.selected){const o=e.pieces[e.selected][e.pieces[e.selected].length-1];null!=o&&liftPiece(e.world,t,o,e.selected)}e.tubes.forEach((n,s)=>showCork(e.world,t,o.tubes[s],s,sorted(n)))}}export function start(e){"ready"===e.phase&&(e.phase="playing",e.world.scoreboard.startCountdown(TIME_LIMIT),e.onTime(TIME_LIMIT),e.onPhase("playing"))}export function reset(e){for(const t of e.pieces.flat())e.world.despawn(t);e.tubes=deal(),e.selected=null,e.world.scoreboard.reset(0,TIME_LIMIT),e.timedOut=!1,e.phase="ready",spawnPieces(e),e.onTime(TIME_LIMIT),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,t){e.world.isDisposed||e.world.update(t)}function end(e){e.world.scoreboard.stop();const{layout:t}=e;if(t&&null!=e.selected){const o=e.selected,n=e.pieces[o][e.pieces[o].length-1];null!=n&&lowerPiece(e.world,t,n,o,e.tubes[o].length-1)}e.selected=null,e.phase="over",e.onPhase("over")}export function tubeAt(e,t,o){const n=e.layout;if(!n)return null;const[s,r]=unproject(n,t,o,0),l=n.tubes.length>1?Math.abs(n.tubes[1][0]-n.tubes[0][0]):3*n.tubeRadius;let i=null,u=1/0;return n.tubes.forEach(([e,t],o)=>{if(Math.abs(s-e)>l/2)return;if(r<t-2*n.shelfHeight||r>hoverY(n,o)+1.2*n.pieceHeight)return;const d=Math.abs(s-e);d<u&&(i=o,u=d)}),i}export function tap(e,t,o){if("playing"!==e.phase)return;const n=tubeAt(e,t,o);null!=n&&choose(e,n)}export function choose(e,t){const{layout:o,scene:n}=e;if(!o||!n||"playing"!==e.phase)return;const s=e.tubes[t],r=e.pieces[t];if(null==e.selected)return s.length?(e.selected=t,liftPiece(e.world,o,r[r.length-1],t),void e.onEvent("pick")):(shakeTube(e.world,o,n.tubes[t],r),void e.onEvent("refuse"));const l=e.selected;if(e.selected=null,l===t)return lowerPiece(e.world,o,r[r.length-1],t,s.length-1),void e.onEvent("drop");if(s.length>=CAPACITY){const s=e.pieces[l];return lowerPiece(e.world,o,s[s.length-1],l,e.tubes[l].length-1),shakeTube(e.world,o,n.tubes[t],r),void e.onEvent("refuse")}const i=e.tubes[l].pop(),u=e.pieces[l].pop();if(s.push(i),r.push(u),movePiece(e.world,o,u,l,t,s.length-1),sorted(s)&&completeTube(e.world,o,n.tubes[t],t,i),sorted(e.tubes[l])||showCork(e.world,o,n.tubes[l],l,!1),solved(e.tubes))return e.onEvent("complete"),celebrate(e.world,o),void end(e);e.onEvent("move")}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,lathe,Path}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{noise}from"../shared/EngineMeadow.js";import{cacheGameAsset,createGameMesh as _0x2f0278}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{COLORS,hoverY,LIFT_TIME,MOVE_TIME,SHAKE_TIME,slotY}from"./ColorsSortConstants.js";const meshes=new Map,cached=(e,t)=>{let o=meshes.get(e);return!o&&(o=cacheGameAsset("colors-sort/ColorsSortScene:"+e,t),meshes.set(e,o)),o},shade=(e,t)=>[e[0]*t,e[1]*t,e[2]*t],smooth=(e,t,o)=>{const s=Math.min(1,Math.max(0,(o-e)/(t-e)));return s*s*(3-2*s)},glassMesh=()=>cached("cs-glass",()=>_0x2f0278(lathe(GLASS_PROFILE,{segments:96}),{center:!1,shine:.9})),GLASS_PROFILE=[...Array.from({length:25},(e,t)=>{const o=t/24*(Math.PI/2);return[Math.max(.001,.5*Math.sin(o)),.09*(1-Math.cos(o))]}),[.5,1]],outlineMesh=e=>cached("cs-outline:"+e.toFixed(2),()=>{const t=GLASS_PROFILE.map(([t,o])=>[t,o*e]),o=[...t.slice().reverse().map(([e,t])=>[-e,t]),...t.slice(1)],s=[...o.map(([e,t],s)=>{const[i,a]=o[Math.max(0,s-1)],[n,r]=o[Math.min(o.length-1,s+1)],u=n-i,h=r-a,l=Math.hypot(u,h)||1;return[e+h/l*.035,t-u/l*.035]}),...o.slice().reverse()].map(([e,t])=>[e,-t]);return _0x2f0278(extrude((new Path).addPolygon(s),{depth:0}),{center:!1})}),mouthRingMesh=()=>cached("cs-mouth-ring",()=>_0x2f0278(lathe(Array.from({length:17},(e,t)=>{const o=t/16*Math.PI*2;return[.59+.03*Math.cos(o),.5+.5*Math.sin(o)]}),{segments:120}),{center:!1,shine:.3})),rimMesh=()=>cached("cs-rim",()=>_0x2f0278(lathe([[.5,0],[.56,.1],[.56,.9],[.5,1],[.5,0]],{segments:96}),{center:!1,shine:.8})),puckMesh=()=>cached("cs-puck",()=>_0x2f0278(lathe([[.001,0],[.42,0],[.5,.14],[.5,.86],[.42,1],[.001,1]],{segments:32,color:({position:e,normal:t})=>shade([1,1,1],.82+.18*smooth(.2,.95,e[1])+.12*Math.max(0,t[1]))}),{center:!1,shine:.6})),corkMesh=()=>cached("cs-cork",()=>_0x2f0278(lathe([[.001,0],[.42,0],[.46,.55],[.56,.58],[.58,.68],[.56,1],[.001,1]],{segments:28,color:({position:e})=>shade([.78,.56,.34],.82+.3*noise(30*e[0]+9*e[1],30*e[2]+40*e[1]))}),{center:!1,shine:.1})),glassColor=e=>"dark"===e.mode?[1,1,1,.05]:[1,1,1,.08],edgeColor=e=>"dark"===e.mode?[1,1,1,.55]:[.1,.14,.22,.45],rimColor=e=>{if("classic"===e.mode)return[1,1,1,.6];const t=toColor(e.BOARD.BORDER),[o,s,i,a]=t[3]>0?t:toColor(e.BOARD.CELL_EMPTY);return[o,s,i,Math.max(.45,a??0)]};export const pieceColor=e=>toColor(COLORS[e]);const BACKDROP_DEPTH=60;export function buildScene(e,t,o){const s=spawnBackdrop(e,t.width,t.height,-60,o);placeTiltedBackdrop(e,s,t,60);const i=2*t.tubeRadius;return{backdrop:s,tubes:t.tubes.map(([s,a])=>({glass:e.spawn({mesh:glassMesh(),position:[s,a,0],scale:[i,t.tubeHeight,i],color:glassColor(o),pickable:!1}),rim:e.spawn({mesh:rimMesh(),position:[s,a+t.tubeHeight-.12*t.tubeRadius,0],scale:[i,.16*t.tubeRadius,i],color:rimColor(o),pickable:!1}),streak:e.spawn({mesh:"cube",position:[s-.55*t.tubeRadius,a+.55*t.tubeHeight,.86*t.tubeRadius],scale:[.08*t.tubeRadius,.72*t.tubeHeight,.5],color:[1,1,1,.2],pickable:!1}),edges:[e.spawn({mesh:outlineMesh(t.tubeHeight/i),position:[s,a,0],scale:[i,i,1],color:edgeColor(o),pickable:!1}),e.spawn({mesh:mouthRingMesh(),position:[s,a+t.tubeHeight-.06*t.tubeRadius,0],scale:[i,.12*t.tubeRadius,i],color:edgeColor(o),pickable:!1})],cork:e.spawn({mesh:corkMesh(),position:[s,a+t.tubeHeight,0],scale:0,pickable:!1})}))}}export function removeScene(e,t){for(const o of[t.backdrop,...t.tubes.flatMap(e=>[e.glass,e.rim,e.streak,...e.edges,e.cork])])e.despawn(o)}export function setSceneTheme(e,t,o){setBackdropTheme(e,t.backdrop,o);for(const s of t.tubes){e.set(s.glass,{color:glassColor(o)}),e.set(s.rim,{color:rimColor(o)});for(const t of s.edges)e.set(t,{color:edgeColor(o)})}}const pieceScale=e=>[2*e.pieceRadius,e.pieceHeight,2*e.pieceRadius],at=(e,t,o)=>[e.tubes[t][0],o,0];export function spawnPiece(e,t,o,s,i){return e.spawn({mesh:puckMesh(),position:at(t,s,slotY(t,s,i)),scale:pieceScale(t),color:pieceColor(o),pickable:!1})}export function liftPiece(e,t,o,s){e.stopAnimation(o),e.animate(o,{position:at(t,s,hoverY(t,s))},{spring:{stiffness:260,damping:18}}),e.set(o,{bob:{amplitude:[0,.08*t.pieceHeight,0],speed:5}})}export function lowerPiece(e,t,o,s,i){e.set(o,{bob:null}),e.stopAnimation(o),e.animate(o,{position:at(t,s,slotY(t,s,i))},{duration:LIFT_TIME,easing:"easeIn"})}export function movePiece(e,t,o,s,i,a){e.set(o,{bob:null}),e.stopAnimation(o);const n=Math.max(hoverY(t,s),hoverY(t,i));e.animate(o,[{position:at(t,s,n),at:.2},{position:at(t,i,n),at:.55},{position:at(t,i,slotY(t,i,a)),at:1}],{duration:MOVE_TIME,path:"smooth",easing:"easeInOut"})}export function shakeTube(e,t,o,s){e.animate([o.glass,o.rim,o.streak,...o.edges,...s],{shake:.14*t.tubeRadius},{duration:SHAKE_TIME})}export function completeTube(e,t,o,s,i){const[a,n]=t.tubes[s],r=2*t.tubeRadius;e.animate(o.glass,[{scale:[1.06*r,1.03*t.tubeHeight,1.06*r],at:.4},{scale:[r,t.tubeHeight,r]}],{duration:.3}),effects.sparkle(e,{position:[a,n+t.tubeHeight,t.tubeRadius],count:16,size:.16*t.tubeRadius,speed:4*t.tubeRadius,direction:[0,1,0],spread:1,lifetime:.6,gravity:6*-t.tubeRadius,colors:[pieceColor(i),[1,1,1,1],[1,.85,.3,1]]}),showCork(e,t,o,s,!0,!0)}export function showCork(e,t,o,s,i,a=!1){const[n,r]=t.tubes[s],u=[1.9*t.tubeRadius,.95*t.tubeRadius,1.9*t.tubeRadius],h=[n,r+t.tubeHeight-.5*u[1],0];e.stopAnimation(o.cork),i?a?(e.set(o.cork,{position:[n,h[1]+2.5*t.tubeRadius,0],scale:u}),e.animate(o.cork,{position:h},{duration:.35,delay:.15,easing:"bounce"})):e.set(o.cork,{position:h,scale:u}):e.set(o.cork,{scale:0})}export function celebrate(e,t){effects.confetti(e,{position:[0,.4*t.tubeHeight,2*t.tubeRadius],count:60,size:.2*t.tubeRadius,speed:2.2*t.tubeHeight,lifetime:1.3,gravity:3.5*-t.tubeHeight,colors:COLORS.slice(0,4).map(e=>toColor(e))})}
@@ -1 +1 @@
1
- "use strict";const _0x1180e8=_0x16a5;function _0x268d(){const e=["b8kJdmkuW4DEmG","W7NcM8kSWRykW4f6qX8IW5dcS8oJWRW","W77dMSoNWPVdQCoVW4vHbxxdNHi","dYbj","WQm9W6tdVmoshHldLSo8WRZcQtpcOa","W4TZW4TLjq","WPD9zLumtcD1","W5KkWR0TWRNcLbddHv3cImkNW6FdVW","WPqpW4JdJCkI","b2lcMCoaWOtcNCkL","W6C9h8oJWOpdHfZcRW","w2hdNMhdMSkq","WP/cQCotlsT6jmoV","WPZdOSosW4iCWQqyuG","W5LxnIzCkCkNW5RcSg1qWQRdRmoRpqH9","W4BdN8ktWO/cJa","W4XrWQJdUZVdLSoQWPC","rmkNFwHwkSkreq","WRGkW7dcJ8ktEvFcQaKF","B8otW50h","W4HAoYvBdSk0W7FcSMW","W4G8WPpdHSkisZtdKW","mv7cSSodWQtcS8kEjmovW5BdL8kHzxa","WQSiiIJdItG3W6a","cLxcPCoiWRu","WQHGfXpdVJS5","ASoEW5yCAdi","bCo4zu5JgSk5eCkSrWRcMCoQ","W7tcR8onW5rngmk4WRddNCo+W6tcPmoe","awxcNCo/WPxcT8kRfSo1","W7bzj2jhjSkUWRlcSgPnW7ddRmoJAr14W77cQe4","W7NdQSkzWR3cGq","W53dRSk4WRJcVwldUW","uSkAb8kjW5j3imoae8onBq","FmomW508BdjREmkcm8kv","zNFcGCo4W4K","W4SyjmkpWPS","W7ddKCk9AbZcGmk5W4G","W4ZdVmo9iYai","fSoIFLjYeCk/","WQ1/WQldNW3dJa","WR42W4b9fwn5W6W","W5KlW7HCW43dT3/dMa","DhKBWQFcKmkmWQy","W6hdLCkNCHdcNmkFW58","CSkIWRypWQCfW5y","qSkdWOuVWPy","uN7cMCo5","WO1QW6TMW4u","W49TW7z8gu98WR19lSkKBZ4ntmo7fsdcPgZdICk8","oG7dSvRdLG","WRvHy8orWQxdRhJcGa","WP1iW6XxW63dJKNdV1lcOSkU","W4rFW4ZdMrzTaW","WRf1FmogWOhdSgK","W6ZdMSkAEqhcMSk3W5xdUqrWymorz2Ll","W5/dUmo4jZzYnmoZW4e","WQ0uW6xcJ8kXCvJcRWjDW4KlpSotxSobuSkSa3am","WQJcJCkJW73cQmk8W6zb","WP49q1FdTq","qmkAgZCNW6nRDKq","eM0LWORcTSkTWRldQ2NcKmo1WRO4","WRDQkSkyWQpdOfFcGa","l27cLsJcQSotW4C","WRzJuCo6W5ZcK0tcNCoeWQqiDa","dX/dS2pdIIukW7C","uCkkgIa2W4P+","l37cIs7cQSop","vCkLwW7cHt/dV8oxnCoVW60ecKe","WPnQD2Cmsa","W5ZcISk1FrG","DINdMaZcNhddSW","WPL2E3irtd95AdFcUSk+W7tdLa","WRqNWRpdS8klW5JdUmkEW7a","WQdcHSkeW4BcVCkVW7C","ddWXbHlcNf3dTSoTW5y","WORcOSo7W7ldRwddIJNcGSolga","WRvLESoNWPddV2NcHa","FMiaWQhcNmkdWR5qWOChWO/dNmokWPe","W4j0W67cO8kEWQxdMCk+W7aUW6v3","W6ddMmopcXD4","WPKXF1hdOSoOWPrA","WO8DW6FdM8k3BghcSWzoW40hiW","W65TW6a/eKnMW7G","cX/dQutdMZy","y8k4WQSj","W7mOW7dcLv3cJL7dIgxcPWb2ga","WP5iWQ3cOq","WRS0W6xcJhZcUCkx","WPtdVcaDWOxcMW","W5WcWRGSWRNdJMddN37cICke","WPZdVZi9WPtcJGOf","l8k7cmoRudGUnSkhESkbWOKw","W5ZdUSkPWQhcV37dOa7cOCoNgGabzbS","ycjFW6NdNW","WPKlW6ZdRmkZCLRcOWzDW5y","WQmrdSowEMzWW6BdImomW5rcW7K","BSoEW5uArdO","jd1FW6hdHmoAWQrUWOG4WORdNW","WRn3FgGDtIDvFXpcKCkZ","WQa2W5BcNgK"];return(_0x268d=function(){return e})()}!function(){const e=_0x16a5,o=_0x268d();for(;;)try{if(225256==parseInt(e(367,"!J1X"))/1*(-parseInt(e(339,"sRTq"))/2)+-parseInt(e(320,"QArS"))/3*(parseInt(e(404,"WD2v"))/4)+-parseInt(e(327,"]D2o"))/5+parseInt(e(333,"ON!v"))/6+-parseInt(e(403,"(n^g"))/7+-parseInt(e(354,"&^sl"))/8*(parseInt(e(331,"c[rW"))/9)+parseInt(e(359,"Rnt("))/10*(parseInt(e(343,"va#u"))/11))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x3764d7,{useEffect,useRef}from"react";function _0x16a5(e,o){e-=311;const t=_0x268d();let W=t[e];if(void 0===_0x16a5.GAljnD){const e=function(e,o){let t,W,n=[],r=0,a="";for(e=function(e){let o="",t="";for(let t,W,n=0,r=0;W=e.charAt(r++);~W&&(t=n%4?64*t+W:W,n++%4)?o+=String.fromCharCode(255&t>>(-2*n&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let e=0,W=o.length;e<W;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),W=0;W<256;W++)n[W]=W;for(W=0;W<256;W++)r=(r+n[W]+o.charCodeAt(W%o.length))%256,t=n[W],n[W]=n[r],n[r]=t;W=0,r=0;for(let o=0;o<e.length;o++)W=(W+1)%256,r=(r+n[W])%256,t=n[W],n[W]=n[r],n[r]=t,a+=String.fromCharCode(e.charCodeAt(o)^n[(n[W]+n[r])%256]);return a};_0x16a5.igyraP=e,_0x16a5.VoYRVp={},_0x16a5.GAljnD=!0}const n=t[0];_0x16a5.HskxoR!==n&&(_0x16a5.VoYRVp={},_0x16a5.HskxoR=n);const r=_0x16a5.VoYRVp[e];return void 0===r?(void 0===_0x16a5.LHWWbM&&(_0x16a5.LHWWbM=!0),W=_0x16a5.igyraP(W,o),_0x16a5.VoYRVp[e]=W):W=r,W}import{View,StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useConnectEmAllStore,useIsPlaying,useIsGameOver,useIsWin,useScore}from"./ConnectEmAllStore.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameBoard}from"./components/GameBoard.js";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x16e849}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 _0x2a6d4a,jsxs as _0x25e453}from"react/jsx-runtime";export const ConnectEmAll=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:W,onShare:n,onShareScreenshot:r,onShowLeaderboard:a,bannerAd:d})=>{const s="^Z8!",S=_0x16a5,i={XfkdA:function(e,o){return e(o)},NJCAv:function(e,o){return e!==o},eQbrI:function(e,o){return e(o)},GqSwY:function(e,o,t){return e(o,t)},xDYET:function(e,o,t){return e(o,t)},CxBUY:function(e,o,t){return e(o,t)},VWNih:function(e,o,t){return e(o,t)}},m=useIsPlaying(),l=useIsGameOver(),x=useIsWin(),u=useScore(),k=useRef(!1),C=useRef(t);C[S(395,")5V2")]=t;const _=i[S(390,"c[rW")](useRef,e);_[S(408,"Cu#8")]=e;const R=_0x3764d7[S(394,"c[rW")](e=>{const o=S;if(C.current&&!k[o(385,"sRTq")]){const t=useConnectEmAllStore[o(363,"CiZv")]()[o(401,"pCEy")];C[o(312,"kO5q")]({status:e,score:t[o(322,"pCEy")]()}),k.current=!0}},[]);useEffect(()=>{const e={Rtvjh:function(e,o){return e(o)}};return useConnectEmAllStore.getState().initializeGame(),()=>{const o=_0x16a5;useConnectEmAllStore[o(400,"V58l")]().isPlaying&&!k[o(374,"^Z8!")]&&e[o(392,"gZee")](R,"cancel"),useConnectEmAllStore[o(332,"!%2#")]()[o(402,"Cu#8")]()}},[R]);const f=useRef(!1);i[S(347,"D@RX")](useEffect,()=>{const e=S;l&&!f[e(329,"v[sQ")]&&i[e(377,"@7Pa")](R,x?e(345,"j6ud"):e(389,"@7Pa")),f[e(396,"v^up")]=l,!l&&(i[e(378,"WD2v")](e(350,"fQe#"),e(341,"v[sQ"))?_0x11e462(e(368,"gT4C")):k[e(405,"RMH%")]=!1)},[l,x,R]);const p=_0x3764d7[S(376,"gT4C")](()=>{const e=S;k.current=!1,useConnectEmAllStore.getState()[e(371,"QL%K")](),playSound(GAME_SOUNDS[e(410,"F#u4")][e(388,"da2b")],_[e(387,"da2b")].enableSounds),playHaptic(HapticType[e(321,"&^sl")],_[e(312,"kO5q")].enableHaptics)},[]),G=_0x3764d7.useCallback(()=>{const e=S;R(e(353,"&sTa")),useConnectEmAllStore[e(318,"v^up")]().resetGame(),useConnectEmAllStore[e(363,"CiZv")]()[e(319,"sRTq")]()},[R]),Q=_0x3764d7[S(336,"fQe#")](()=>{const e=S;k[e(381,"Rnt(")]=!1,W?.(),useConnectEmAllStore[e(407,"gZee")]()[e(398,"&^sl")](),useConnectEmAllStore[e(348,"k&K6")]()[e(313,"k&K6")]()},[W]),g=_.current?.[S(330,"!%2#")]??0,h=_0x3764d7[S(351,"QL%K")](()=>({isVisible:l,score:u,onPlayAgain:Q,buttonText:x?"Play Again!":S(360,"fQe#"),scoreLabel:x?"Great Job!":S(314,"QArS"),title:x?S(316,"fsMy"):S(355,"va#u"),message:x?S(399,"fQe#"):S(372,"N*yd")}),[l,u,Q,x]),y=_0x3764d7.useMemo(()=>({isPlaying:m,gameOver:l,onStartGame:p,onStopGame:G,onShare:n,onShowLeaderboard:a,startButtonSubtext:S(391,"D@RX")}),[m,l,p,G,n,a]),N={};N[S(382,"]D2o")]=g;const A={};A.paddingTop=g||0;const O={};O[S(358,"PfOD")]=e;const v={...y},E={...h};E[S(315,"V58l")]=r,E[S(386,"RpXZ")]=d;const I={};return I[S(338,"gT4C")]=GAME_IDS[S(364,"QL%K")],I[S(379,"RpXZ")]=e,I[S(397,"RpXZ")]=o,i[S(357,s)](_0x2a6d4a,GestureHandlerRootView,{style:styles[S(326,"da2b")],children:i[S(373,s)](_0x25e453,_0x16e849,{children:[_0x2a6d4a(ScoreBoard,N),i[S(366,"QL%K")](_0x2a6d4a,View,{style:[styles[S(337,"qyjz")],A],children:_0x2a6d4a(View,{style:styles[S(393,"v^up")],children:i[S(335,"(n^g")](_0x2a6d4a,GameBoard,O)})}),i[S(311,"kVEs")](_0x2a6d4a,GameControlButton,v),_0x2a6d4a(GameOverModal,E),_0x2a6d4a(GameSettingsModal,I)]})})};const _0x279da5={};_0x279da5[_0x1180e8(361,"gT4C")]=1,_0x279da5[_0x1180e8(334,"^Z8!")]=BACKGROUND_COLOR;const _0x3f4ee5={};_0x3f4ee5[_0x1180e8(328,"M^3l")]=1,_0x3f4ee5.justifyContent=_0x1180e8(325,"gZee"),_0x3f4ee5[_0x1180e8(362,"N*yd")]=_0x1180e8(380,"HRVi"),_0x3f4ee5[_0x1180e8(369,"Rnt(")]=_0x1180e8(352,"WD2v");const _0xb10203={};_0xb10203.alignItems=_0x1180e8(409,"RMH%"),_0xb10203[_0x1180e8(356,"N*yd")]=15,_0xb10203[_0x1180e8(370,"@8My")]=_0x1180e8(324,"D@RX");const _0x38657c={};_0x38657c.root=_0x279da5,_0x38657c[_0x1180e8(323,"fQe#")]=_0x3f4ee5,_0x38657c.gameArea=_0xb10203;const styles=StyleSheet[_0x1180e8(411,"k&K6")](_0x38657c);ConnectEmAll[_0x1180e8(375,"]S[W")]=_0x1180e8(340,"k&K6");
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{getLayout,LIGHT,TIME_LIMIT}from"./ConnectEmAllConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,tick,touchEnd,touchMove,touchStart}from"./ConnectEmAllGame.js";import{jsx as _0x1180ef}from"react/jsx-runtime";const SFX=GAME_SOUNDS.CONNECT_EM_ALL,formatScore=e=>e.toLocaleString();export const ConnectEmAll=engineGame(GAME_IDS.CONNECT_EM_ALL,e=>{const[t,o]=useLiveState(0),[r,s]=useLiveState(TIME_LIMIT),{theme:n,status:i,screen:a,gameOver:m}=useEngineGame(e,{gameId:GAME_IDS.CONNECT_EM_ALL,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,o,r)=>{const s=getLayout(t,o,r);return setLayout(e,s),s.boardSize},drag:(e,{phase:t,x:o,y:r})=>{"start"===t?touchStart(e,o,r):"move"===t?touchMove(e,o,r):touchEnd(e)},sounds:SFX,onStart:e=>e(SFX.START,HapticType.MEDIUM),onOver:(e,t)=>e("win"===t?SFX.WIN:SFX.GAME_OVER,"win"===t?HapticType.SUCCESS:HapticType.HEAVY),wire:(e,t)=>{e.onScore=o,e.onTime=s,e.onConnect=()=>t(SFX.CONNECT,HapticType.LIGHT),e.onClear=()=>t(SFX.CLEAR,HapticType.MEDIUM)}});return _0x1180ef(EngineGameScreen,{...a,light:LIGHT,columns:[scoreColumn(t,"SCORE",formatScore),timerColumn(r,n)],subtext:"Connect matching dots!",gameOver:m({title:"win"===i?"WELL DONE!":"TIME UP!",message:"win"===i?"All connections made!":"You ran out of time!",scoreLabel:"win"===i?"Great Job!":"Game Over",score:t,buttonText:"win"===i?"Play Again!":"Try Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x5c7bfb=_0x342d;!function(){const _=_0x342d,t=_0x23d0();for(;;)try{if(104565==-parseInt(_(485,"g8vU"))/1+parseInt(_(484,"s*px"))/2*(parseInt(_(491,"wxyb"))/3)+parseInt(_(486,"9dF7"))/4+-parseInt(_(476,"mK)5"))/5*(-parseInt(_(499,"hU!I"))/6)+-parseInt(_(477,"PjGP"))/7+parseInt(_(500,"5QpX"))/8*(-parseInt(_(483,"f$vy"))/9)+parseInt(_(498,"dHuT"))/10)break;t.push(t.shift())}catch(_){t.push(t.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions}from"../../services/UtilsService.js";function _0x342d(_,t){_-=472;const W=_0x23d0();let x=W[_];if(void 0===_0x342d.TKSxyU){const _=function(_,t){let W,x,d=[],o=0,f="";for(_=function(_){let t="",W="";for(let W,x,d=0,o=0;x=_.charAt(o++);~x&&(W=d%4?64*W+x:x,d++%4)?t+=String.fromCharCode(255&W>>(-2*d&6)):0)x="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(x);for(let _=0,x=t.length;_<x;_++)W+="%"+("00"+t.charCodeAt(_).toString(16)).slice(-2);return decodeURIComponent(W)}(_),x=0;x<256;x++)d[x]=x;for(x=0;x<256;x++)o=(o+d[x]+t.charCodeAt(x%t.length))%256,W=d[x],d[x]=d[o],d[o]=W;x=0,o=0;for(let t=0;t<_.length;t++)x=(x+1)%256,o=(o+d[x])%256,W=d[x],d[x]=d[o],d[o]=W,f+=String.fromCharCode(_.charCodeAt(t)^d[(d[x]+d[o])%256]);return f};_0x342d.MyBjAL=_,_0x342d.pHSfbQ={},_0x342d.TKSxyU=!0}const d=W[0];_0x342d.NDRxeC!==d&&(_0x342d.pHSfbQ={},_0x342d.NDRxeC=d);const o=_0x342d.pHSfbQ[_];return void 0===o?(void 0===_0x342d.ZCGIPB&&(_0x342d.ZCGIPB=!0),x=_0x342d.MyBjAL(x,t),_0x342d.pHSfbQ[_]=x):x=o,x}const GRID_SIZE=7,{width:GAME_WIDTH}=getGameDimensions(),CELL_SIZE=GAME_WIDTH/7,BOARD_PADDING=CELL_SIZE/2+5,DOT_SPACING=(GAME_WIDTH-2*BOARD_PADDING)/6,DOT_RADIUS=Math[_0x5c7bfb(492,"LD)u")](.42*DOT_SPACING,24),_0x1f4585={};function _0x23d0(){const _=["gr5vWPP1tmo4WOhdSt5SsdOjW6FdGSkRW4pdNvqffCkRwW","W7NdOCkdWQdcVSo2WRCWWOjHtdOr","WOmCiCkvW4LauSoRsCkP","sd0AlCoAtf/dPW","WOjuW7XXAmolW5DbWRRcK8kubG","WR84c2tcQ8okWRS","u8kMsCkZuCkqWOniW7Sueq","sd9XWR9QtSo9","imkjWOlcS0NdUmkcra8","WRNdSCkGWP0kW7mDWQBdGNxdPq","WOOLW57cI8ofWOKc","vSoSW7NdH2pdO8kNxZ0h","vKq/W6n9ESkbiLdcLthcVqq","pKy2gCortg/dUvJcKG","W4HAhCongSomgG","x3CxW7ZcM8kEW4elW4RdQW","F8kYuXpcUqBdO1tdVSoQ","WRD2W7aYAItdMW","deRcP8oLWR8XW6BdGwtdHLpcNW","FSkPkCkhsmopW5hdOmoeWOlcLq","WQxcGCkTWO1xw8o2W5/dUSo+r0G","W6OpWRNcU8kPp0xcHhP3W5FdHa","WP1BWQJcGmk1WO85WP/cSCkIW5JdTq","gr5vWPP1tmo4WOhdSt5SsdOjW6FdGSkRW4pdNvqffCkRr8oN","p8oYEG88k2K","WRBdNCkvWPxdJMldKq","wKfFWOGmhCkuW7S","W5WpWQm","WOjEW7T1AmoiWRrYWQZcO8kQhmkl","a8kMWO/dICkszmkemmkfW5xdQmoT","WQtcQmoHWPddUMZcJ8kLW7jF","EmkYsG7cTrBdU17dTmoT"];return(_0x23d0=function(){return _})()}_0x1f4585[_0x5c7bfb(480,"sS5a")]=BACKGROUND_COLOR,_0x1f4585[_0x5c7bfb(482,"%Uh*")]=PRIMARY_COLOR,_0x1f4585.GRID_BACKGROUND=_0x5c7bfb(497,"wxyb"),_0x1f4585.BOARD_BACKGROUND=_0x5c7bfb(488,"wxyb"),_0x1f4585[_0x5c7bfb(496,"yPeM")]=[_0x5c7bfb(475,"kbzS"),_0x5c7bfb(502,"VKbl"),_0x5c7bfb(472,"wxyb"),_0x5c7bfb(489,"QRNR"),_0x5c7bfb(490,"*tO&")],_0x1f4585.LINE_COLOR="rgba(255, 255, 255, 0.85)",_0x1f4585.SCORE_TEXT=PRIMARY_COLOR,_0x1f4585[_0x5c7bfb(481,"yPeM")]=_0x5c7bfb(479,"*NZh");export const CONNECT_EM_ALL_COLORS=_0x1f4585;const _0x55070a={};_0x55070a[_0x5c7bfb(473,"mK)5")]=7,_0x55070a[_0x5c7bfb(478,"5QpX")]=DOT_RADIUS,_0x55070a[_0x5c7bfb(503,"nuFx")]=DOT_SPACING,_0x55070a.BOARD_PADDING=BOARD_PADDING,_0x55070a[_0x5c7bfb(474,"IBBX")]=3,_0x55070a.TIME_LIMIT=300,_0x55070a.FALL_DURATION=350;export const CONNECT_EM_ALL_GAME_CONFIG=_0x55070a;
1
+ "use strict";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GRID_SIZE=7;export const MIN_CONNECT=3;export const TIME_LIMIT=300;export const LOOP_BONUS=250;export const DOT_COLORS=["#FF3B3B","#32CD32","#FFD700","#4DA6FF","#BF5AF2"];export const scoreFor=t=>t<2?0:50*t+(t>=4?75*(t-3):0);export const FALL_TIME=.35;export const INTRO_COL_STAGGER=.035;export const INTRO_ROW_STAGGER=.03;export const INTRO_SPRING={damping:12,stiffness:190,mass:.9};export const POP_SCALE=1.24;export const CONNECTED_SCALE=1.08;export const POP_TIME=.2;export const RELEASE_TIME=.14;export const CLEAR_TIME=.45;export const TRAIL_ALPHA=.75;export const GLOW_SIZE=1.6;export const GLOW_ALPHA=.38;export const GLOW_IN_TIME=.2;export const GLOW_OUT_TIME=.12;export const BOARD_RADIUS=8;export const LIGHT=frontLight([0,.35,1],.6);export const DOT_SHINE=.4;export function getLayout(t,o,r){const s=gameWidthFor(t),e=s/7/2+5,n=(s-2*e)/6,p=.44*n;return{width:t,height:o,boardLeft:(t-s)/2,boardTop:r+(o-r-s)/2,boardSize:s,padding:e,spacing:n,radius:p,hitRadius:1.5*p}}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{popAndBurst}from"../shared/EngineBlasts.js";import{introPlayed}from"../shared/EngineUtils.js";import{CLEAR_TIME,CONNECTED_SCALE,DOT_COLORS,FALL_TIME,GRID_SIZE,INTRO_COL_STAGGER,INTRO_ROW_STAGGER,INTRO_SPRING,LOOP_BONUS,MIN_CONNECT,POP_SCALE,POP_TIME,RELEASE_TIME,scoreFor,TIME_LIMIT,TRAIL_ALPHA}from"./ConnectEmAllConstants.js";import{buildBoard,DOT_COUNT,dotBurst,dotColor,dotPoint,dotPosition,dotScale,hideSegment,hideTrail,lineColor,removeBoard,showGlow,showSegment,showTrail,spawnDot,spawnSegment,spawnTrail}from"./ConnectEmAllScene.js";const NO_DOT=-1,WORLD_CAPACITY=1200,randomColor=()=>Math.floor(Math.random()*DOT_COLORS.length),rowOf=o=>Math.floor(o/GRID_SIZE),colOf=o=>o%GRID_SIZE,adjacent=(o,n)=>{const t=Math.abs(rowOf(o)-rowOf(n)),e=Math.abs(colOf(o)-colOf(n));return t<=1&&e<=1&&t+e>0};export function createGame(o){const n=new World(1200),t={world:n,camera:{eye:[0,0,400],target:[0,0,0],fov:1,ortho:1},theme:o,layout:null,board:null,phase:"ready",get score(){return n.scoreboard.score},get timeLeft(){return n.scoreboard.shownSeconds},won:!1,dots:Array.from({length:DOT_COUNT},()=>({colorIndex:randomColor(),entity:null,glow:null})),chain:[],touching:!1,lastIndex:-1,finger:[0,0],segments:[],trail:null,intro:!0,introAge:-1,onPhase:o=>{},onScore:o=>{},onTime:o=>{},onConnect:()=>{},onClear:()=>{}};return n.scoreboard.reset(0,TIME_LIMIT),n.scoreboard.handlers={onSecond:o=>t.onTime(o),onTimeUp:()=>"playing"===t.phase&&end(t)},t}export function setLayout(o,n){const t=o.world;releaseChain(o),o.board&&removeBoard(t,o.board);for(const n of o.dots)null!=n.entity&&t.despawn(n.entity);o.layout=n,o.camera.ortho=n.height/2,o.board=buildBoard(t,n,o.theme),spawnAll(o),o.trail||(o.trail=spawnTrail(t))}export function setTheme(o,n){o.theme=n;const t=o.layout;t&&(o.board&&removeBoard(o.world,o.board),o.board=buildBoard(o.world,t,n))}function spawnAll(o){const n=o.layout;if(!n)return;const t=o.intro;t&&(o.introAge=0),o.dots.forEach((e,r)=>{if(!t)return spawnInto(o,e,r);const{entity:a,glow:l}=spawnDot(o.world,n,rowOf(r)-2,colOf(r),e.colorIndex);e.entity=a,e.glow=l;const i=colOf(r)*INTRO_COL_STAGGER+(GRID_SIZE-1-rowOf(r))*INTRO_ROW_STAGGER;o.world.set(a,{scale:0}),o.world.animate(a,{position:dotPosition(n,rowOf(r),colOf(r))},{spring:INTRO_SPRING,delay:i}),o.world.animate(a,{scale:2*n.radius},{duration:FALL_TIME,delay:i,easing:"back"})})}function spawnInto(o,n,t,e=!1){const r=o.layout;if(!r)return;const{entity:a,glow:l}=spawnDot(o.world,r,e?rowOf(t)-1:rowOf(t),colOf(t),n.colorIndex);n.entity=a,n.glow=l,e&&(o.world.set(a,{scale:0}),o.world.animate(a,{scale:2*r.radius},{duration:FALL_TIME,easing:"back"}),fall(o,n,t))}function fall(o,n,t){null!=n.entity&&o.layout&&o.world.animate(n.entity,{position:dotPosition(o.layout,rowOf(t),colOf(t))},{duration:FALL_TIME,easing:"back"})}export function start(o){"ready"===o.phase&&(o.phase="playing",o.world.scoreboard.startCountdown(TIME_LIMIT),o.onPhase("playing"))}export function reset(o){releaseChain(o);for(const n of o.dots)null!=n.entity&&o.world.despawn(n.entity);o.dots=o.dots.map(()=>({colorIndex:randomColor(),entity:null,glow:null})),o.intro=!0,spawnAll(o),o.world.scoreboard.reset(0,TIME_LIMIT),o.won=!1,o.phase="ready",o.onScore(0),o.onTime(TIME_LIMIT),o.onPhase("ready")}export function dispose(o){o.world.dispose()}export function tick(o,n){o.world.isDisposed||(introPlayed(o,n),o.world.update(n))}function end(o){o.world.scoreboard.stop(),releaseChain(o),o.won=o.score>0,o.phase="over",o.onPhase("over")}function dotAt(o,n,t){const e=Math.round((n-o.boardLeft-o.padding)/o.spacing),r=Math.round((t-o.boardTop-o.padding)/o.spacing);if(r<0||r>=GRID_SIZE||e<0||e>=GRID_SIZE)return-1;const[a,l]=dotPoint(o,r,e);return(n-a)**2+(t-l)**2<=o.hitRadius**2?r*GRID_SIZE+e:-1}export function touchStart(o,n,t){const e=o.layout;e&&(o.touching=!0,o.finger=[n,t],o.lastIndex=dotAt(e,n,t),"playing"===o.phase&&-1!==o.lastIndex&&(releaseChain(o),o.chain=[o.lastIndex],connected(o,o.lastIndex,!0),drawChain(o)))}export function touchMove(o,n,t){const e=o.layout;if(!e||!o.touching)return;o.finger=[n,t];const r=dotAt(e,n,t);-1!==r&&r!==o.lastIndex&&(o.lastIndex=r,"playing"===o.phase&&extend(o,r)&&(o.onConnect(),drawChain(o))),drawTrail(o)}export function touchEnd(o){o.touching=!1,o.lastIndex=-1,o.trail&&hideTrail(o.world,o.trail),"playing"===o.phase&&o.chain.length>=MIN_CONNECT?clearChain(o):releaseChain(o)}function extend(o,n){const t=o.chain,e=t[t.length-1];return!(void 0===e||n===e||(t.length>=2&&n===t[t.length-2]?(connected(o,t.pop(),!1),0):t.includes(n)||o.dots[n].colorIndex!==o.dots[e].colorIndex||!adjacent(n,e)||(t.push(n),connected(o,n,!0),0)))}function connected(o,n,t){const e=o.layout,r=o.dots[n];if(!e||null==r.entity||null==r.glow)return;const a=2*e.radius;t?o.world.animate(r.entity,[{scale:a*POP_SCALE,at:.45},{scale:a*CONNECTED_SCALE}],{duration:POP_TIME}):o.world.animate(r.entity,{scale:a},{duration:RELEASE_TIME}),showGlow(o.world,r.glow,t)}function releaseChain(o){for(const n of o.chain)connected(o,n,!1);o.chain=[],drawChain(o),o.trail&&hideTrail(o.world,o.trail)}function clearChain(o){const n=o.layout,t=o.world,e=o.chain,r=o.dots[e[0]].colorIndex,a=e.length>=4&&adjacent(e[0],e[e.length-1]),l=a?o.dots.flatMap((o,n)=>o.colorIndex===r?[n]:[]):e.slice();o.chain=[],drawChain(o);for(const e of l){const r=o.dots[e],a=r.entity;null!=a&&popAndBurst(t,a,{scale:dotScale(n),color:dotColor(r.colorIndex),duration:CLEAR_TIME},dotBurst(n,rowOf(e),colOf(e),r.colorIndex)).then(()=>t.despawn(a)),r.entity=null,r.glow=null}const i=new Set(l);for(let n=0;n<GRID_SIZE;n++){const t=[];for(let e=GRID_SIZE-1;e>=0;e--)i.has(e*GRID_SIZE+n)||t.push({dot:o.dots[e*GRID_SIZE+n],from:e});t.forEach(({dot:t,from:e},r)=>{const a=GRID_SIZE-1-r;o.dots[a*GRID_SIZE+n]=t,e!==a&&fall(o,t,a*GRID_SIZE+n)});const e=GRID_SIZE-t.length;for(let t=0;t<e;t++){const e={colorIndex:randomColor(),entity:null,glow:null};o.dots[t*GRID_SIZE+n]=e,spawnInto(o,e,t*GRID_SIZE+n,!0)}}o.onScore(o.world.scoreboard.add(scoreFor(l.length)+(a?LOOP_BONUS:0))),o.onClear()}function drawChain(o){const n=o.layout;if(!n)return;const t=o.world,e=o.chain,r=e.length?lineColor(o.dots[e[0]].colorIndex):null;for(let a=0;a<Math.max(e.length-1,o.segments.length);a++)if(a<e.length-1&&r){const l=o.segments[a]??(o.segments[a]=spawnSegment(t)),i=e[a],d=e[a+1];showSegment(t,n,l,dotPoint(n,rowOf(i),colOf(i)),dotPoint(n,rowOf(d),colOf(d)),r)}else o.segments[a]&&hideSegment(t,o.segments[a]);drawTrail(o)}function drawTrail(o){const n=o.layout,t=o.trail;if(!n||!t)return;const e=o.chain[o.chain.length-1];if(!o.touching||void 0===e)return void hideTrail(o.world,t);const[r,a,l]=lineColor(o.dots[e].colorIndex),i=dotPoint(n,rowOf(e),colOf(e));showTrail(o.world,n,t,i,insideBoard(n,i,o.finger),[r,a,l,TRAIL_ALPHA])}function insideBoard(o,n,t){let e=1;const r=[[0,o.boardLeft,o.boardLeft+o.boardSize],[1,o.boardTop,o.boardTop+o.boardSize]];for(const[o,a,l]of r){const r=t[o]-n[o];t[o]<a&&(e=Math.min(e,(a-n[o])/r)),t[o]>l&&(e=Math.min(e,(l-n[o])/r))}return[n[0]+(t[0]-n[0])*e,n[1]+(t[1]-n[1])*e]}
@@ -0,0 +1 @@
1
+ "use strict";import{extrude,loadTexture,Path,quat,shapeGeometry}from"@nayan-ui/engine";import{lighten}from"../../services/GamesConstants.js";import{spawnBackdrop}from"../shared/EngineBackdrop.js";import{cacheGameAsset,createGameMesh as _0x47d81e}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{BOARD_RADIUS,DOT_COLORS,DOT_SHINE,GLOW_ALPHA,GLOW_IN_TIME,GLOW_OUT_TIME,GLOW_SIZE,GRID_SIZE}from"./ConnectEmAllConstants.js";const Z_BOARD=0,Z_BACKDROP=-20,HIDDEN=0;export const toWorld=(e,o,t,s=0)=>[o-e.width/2,e.height/2-t,s];export const dotPoint=(e,o,t)=>[e.boardLeft+e.padding+t*e.spacing,e.boardTop+e.padding+o*e.spacing];const dotZ=e=>2*e.radius,lineZ=e=>.5*e.radius,shadowZ=e=>.4*e.radius;export const dotPosition=(e,o,t)=>{const[s,n]=dotPoint(e,o,t);return toWorld(e,s,n,dotZ(e))};const meshes=new Map,mesh=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("connect-em-all/ConnectEmAllScene:"+e,o),meshes.set(e,t)),t},dotMesh=()=>mesh("dot",()=>_0x47d81e(shapeGeometry("sphere"),{shine:DOT_SHINE})),discMesh=()=>mesh("disc",()=>_0x47d81e(extrude((new Path).addCircle(0,0,.5),{depth:0}))),panelMesh=(e,o,t=0)=>mesh("panel:"+e+":"+o+":"+t,()=>{const s=(new Path).addRoundedRect(0,0,e,e,o);return t>0&&s.addRoundedRect(t,t,e-2*t,e-2*t,o-t),_0x47d81e(extrude(s,{depth:0,fillRule:"evenodd"}))});export function buildBoard(e,o,t){loadGlowTexture();const s=toWorld(o,o.boardLeft+o.boardSize/2,o.boardTop+o.boardSize/2),n=e.spawn({mesh:panelMesh(o.boardSize,BOARD_RADIUS),position:[s[0],s[1],0],color:toColor(t.BOARD.SURFACE),pickable:!1}),a=e.spawn({mesh:panelMesh(o.boardSize,BOARD_RADIUS,1),position:[s[0],s[1],.2],color:toColor(t.BOARD.BORDER),pickable:!1});return{backdrop:spawnBackdrop(e,o.width,o.height,-20,t),panel:n,rim:a}}export function removeBoard(e,o){e.despawn(o.panel),e.despawn(o.rim),e.despawn(o.backdrop)}const DOTS=DOT_COLORS.map(e=>toColor(e)),LINES=DOT_COLORS.map(e=>toColor(lighten(e,.15)));export const dotColor=e=>DOTS[e];export const lineColor=e=>LINES[e];let glowTexture=null,glowLoading=null;export function loadGlowTexture(){glowLoading??=loadTexture(require("../../assets/textures/soft_glow.png")).then(e=>{glowTexture=e}).catch(()=>{glowLoading=null})}export function spawnDot(e,o,t,s,n){const a=dotColor(n),r=e.spawn({mesh:dotMesh(),position:dotPosition(o,t,s),scale:2*o.radius,color:a,pickable:!1});return{entity:r,glow:e.spawn({mesh:discMesh(),texture:glowTexture,parent:r,position:[0,0,-.55],scale:0,color:[a[0],a[1],a[2],GLOW_ALPHA],pickable:!1})}}export function showGlow(e,o,t){t&&glowTexture&&e.set(o,{mesh:discMesh(),texture:glowTexture}),e.stopAnimation(o),e.animate(o,{scale:t?GLOW_SIZE:0},t?{duration:GLOW_IN_TIME,easing:"back"}:{duration:GLOW_OUT_TIME,easing:"easeIn"})}export function dotBurst(e,o,t,s){const n=dotPosition(e,o,t);return{position:[n[0],n[1],n[2]+e.radius],size:2*e.radius,color:dotColor(s),glowZ:.8*e.radius}}export const dotScale=e=>2*e.radius;export function spawnSegment(e){const o=()=>e.spawn({mesh:"cube",scale:0,pickable:!1});return{shadow:o(),line:o()}}const SHADOW=[0,0,0,.3],scratch=[0,0,0,1];function placeBar(e,o,t,s,n,a,r,i){const l=n[0]-s[0],d=s[1]-n[1],p=toWorld(o,(s[0]+n[0])/2,(s[1]+n[1])/2,r),h=quat.z(Math.atan2(d,l),scratch);e.transform(t,p[0],p[1],p[2],h[0],h[1],h[2],h[3]),e.scale(t,Math.hypot(l,d),a,.5),e.color(t,i[0],i[1],i[2],i[3]??1)}export const lineWidth=e=>.45*e.radius;export function showSegment(e,o,t,s,n,a){const r=e.transforms,i=lineWidth(o);placeBar(r,o,t.shadow,[s[0]+1,s[1]+2],[n[0]+1,n[1]+2],i+2,shadowZ(o),SHADOW),placeBar(r,o,t.line,s,n,i,lineZ(o),a),r.flush()}export function hideSegment(e,o){e.set(o.shadow,{scale:0}),e.set(o.line,{scale:0})}export function spawnTrail(e){return{line:e.spawn({mesh:"cube",scale:0,pickable:!1}),cap:e.spawn({mesh:discMesh(),scale:0,pickable:!1})}}export function showTrail(e,o,t,s,n,a){const r=e.transforms,i=lineWidth(o);placeBar(r,o,t.line,s,n,i,lineZ(o),a);const l=toWorld(o,n[0],n[1],lineZ(o));r.position(t.cap,l[0],l[1],l[2]),r.scale(t.cap,i),r.color(t.cap,a[0],a[1],a[2],a[3]??1),r.flush()}export function hideTrail(e,o){e.set(o.line,{scale:0}),e.set(o.cap,{scale:0})}export const DOT_COUNT=GRID_SIZE*GRID_SIZE;
@@ -1 +1 @@
1
- "use strict";const _0x3d0a8d=_0x3c0d;function _0x3c0d(o,W){o-=206;const e=_0x25e9();let t=e[o];if(void 0===_0x3c0d.LUvXlg){const o=function(o,W){let e,t,r=[],n=0,d="";for(o=function(o){let W="",e="";for(let e,t,r=0,n=0;t=o.charAt(n++);~t&&(e=r%4?64*e+t:t,r++%4)?W+=String.fromCharCode(255&e>>(-2*r&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let o=0,t=W.length;o<t;o++)e+="%"+("00"+W.charCodeAt(o).toString(16)).slice(-2);return decodeURIComponent(e)}(o),t=0;t<256;t++)r[t]=t;for(t=0;t<256;t++)n=(n+r[t]+W.charCodeAt(t%W.length))%256,e=r[t],r[t]=r[n],r[n]=e;t=0,n=0;for(let W=0;W<o.length;W++)t=(t+1)%256,n=(n+r[t])%256,e=r[t],r[t]=r[n],r[n]=e,d+=String.fromCharCode(o.charCodeAt(W)^r[(r[t]+r[n])%256]);return d};_0x3c0d.McjDvU=o,_0x3c0d.ATMzoR={},_0x3c0d.LUvXlg=!0}const r=e[0];_0x3c0d.sxHQYu!==r&&(_0x3c0d.ATMzoR={},_0x3c0d.sxHQYu=r);const n=_0x3c0d.ATMzoR[o];return void 0===n?(void 0===_0x3c0d.KAqupu&&(_0x3c0d.KAqupu=!0),t=_0x3c0d.McjDvU(t,W),_0x3c0d.ATMzoR[o]=t):t=n,t}!function(){const o=_0x3c0d,W=_0x25e9();for(;;)try{if(404907==parseInt(o(331,"XHGO"))/1+parseInt(o(271,"Q0]J"))/2*(parseInt(o(233,"QGc%"))/3)+parseInt(o(253,"p8i@"))/4+parseInt(o(299,"mq0K"))/5*(-parseInt(o(211,"v9r8"))/6)+parseInt(o(293,"Y5O4"))/7+parseInt(o(341,"bD*q"))/8*(parseInt(o(238,"l]Zd"))/9)+-parseInt(o(230,"X*h3"))/10*(parseInt(o(247,"X&#b"))/11))break;W.push(W.shift())}catch(o){W.push(W.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x20226d from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x3b3bc7}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{useCrossyRoadStore,useGameOver,useIsPlaying,useWon}from"./CrossyRoadStore.js";import{CrossyRoadService}from"./CrossyRoadService.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{jsx as _0x3a9611,jsxs as _0x1e5ce0}from"react/jsx-runtime";const CrossyRoadComponent=({settings:o=DEFAULT_GAME_SETTINGS,onSettingsChange:W,onEndGame:e,onReplayGame:t,onShare:r,onShareScreenshot:n,onShowLeaderboard:d,bannerAd:a})=>{const s="Q0]J",S="X*h3",i="h0#F",x=_0x3c0d,k={WSZwC:function(o,W,e){return o(W,e)},vPsYZ:function(o,W){return o===W},nSHyr:function(o,W,e){return o(W,e)},VxlAz:function(o,W){return o!==W},tjyOu:"lose",XIJJb:function(o,W){return o!==W},DvgzI:function(o,W){return o(W)},uobdQ:x(359,"l]Zd"),lGWOG:x(239,"mWnH"),xVJkv:"Score",RgAgV:function(o,W){return o===W},qABLJ:x(243,"b1g6"),nqWkn:function(o,W,e){return o(W,e)},gCYIg:function(o,W,e){return o(W,e)},GCpcm:function(o,W,e){return o(W,e)}},u=_0x20226d[x(294,"bD*q")](o?.enableSounds??!0);u.current=o?.[x(311,"Y5O4")]??!0;const C=_0x20226d[x(266,"l]Zd")](o?.enableHaptics??!0);C.current=o?.[x(352,"c)Va")]??!0;const m=o?.[x(251,"3A#M")]??0,l=_0x20226d[x(326,"zAL]")](e);l[x(307,"%tCx")]=e;const O=_0x20226d[x(286,"iyro")](t);O.current=t;const R=useGameOver(),_=useWon(),p=useIsPlaying(),G=R||_,f=_0x20226d.useRef(0),b=_0x20226d[x(232,"3vxY")](0),y=_0x20226d[x(241,"cZgA")](!1),H=_0x20226d[x(346,"D2l*")](o=>{const W=x;if("JIEIx"!==W(234,"RwVH"))_0x1ecf80(_0x2b647b.CROSSY_ROAD.HOP,_0x2e275d[W(330,"Wn5&")]),_0x134428(_0x1f7e84[W(279,"mWnH")],_0x994a9[W(325,"G0ES")]);else if(l.current&&!y[W(317,"(4l8")]){const e=useCrossyRoadStore.getState()[W(309,"v1r6")];l.current({status:o,score:e[W(349,"n)QX")]()}),y[W(307,"%tCx")]=!0}},[]),h=_0x20226d[x(260,"mWnH")](()=>new CrossyRoadService,[]),A=_0x20226d[x(333,"Q0]J")](()=>{const o=x;playSound(GAME_SOUNDS.CROSSY_ROAD[o(256,"Q0]J")],u[o(317,"(4l8")]),playHaptic(HapticType[o(285,"8oNS")],C[o(303,"HV8p")])},[]),P=_0x20226d.useCallback(()=>{const o=x;playSound(GAME_SOUNDS[o(318,i)][o(283,i)],u[o(212,"X*h3")]),k[o(340,"eY%(")](playHaptic,HapticType.ERROR,C[o(308,"@loC")])},[]),Q=_0x20226d[x(350,"G0ES")](()=>{const o=x;playSound(GAME_SOUNDS[o(328,"D2l*")][o(282,"v1r6")],u[o(303,"HV8p")]),k[o(265,"RwVH")](playHaptic,HapticType[o(339,"l]Zd")],C[o(257,"QGc%")])},[]),v=_0x20226d[x(297,"c)Va")](()=>{const o=x;k[o(215,"eY%(")](o(306,"Y5O4"),o(272,"X&#b"))?(k[o(228,"Nkqf")](playSound,GAME_SOUNDS[o(357,"LJ!F")][o(300,"4u1#")],u.current),k[o(267,"Nkqf")](playHaptic,HapticType[o(344,"n)QX")],C[o(264,"bD*q")])):(_0x5d3d38(_0x111319[o(252,"8oNS")].SPLASH,_0x5b6c07[o(295,"b1g6")]),_0x3669c2(_0x2fa45c[o(254,"@loC")],_0x1326a5.current))},[]),q=_0x20226d[x(319,"HV8p")](()=>{const o=x;playSound(GAME_SOUNDS[o(214,"%tCx")][o(209,"ng!P")],u[o(291,"UE*O")]),playHaptic(HapticType[o(347,"mWnH")],C.current)},[]);_0x20226d[x(287,"%tCx")](()=>{h.setCallbacks(A,P,Q,v,q)},[h,A,P,Q,v,q]),_0x20226d[x(322,"p8i@")](()=>{h[x(219,"n)QX")](p)},[h,p]),_0x20226d.useEffect(()=>{const o=x;if(k.VxlAz(o(225,"Wn5&"),o(236,"c)Va")))_0x4b3feb[o(261,"eY%(")](_0x5cdac1);else{if(R&&!y[o(348,"3vxY")]&&H(_?o(315,"v1r6"):k[o(354,"8oNS")]),G){const W=useCrossyRoadStore[o(358,"bD*q")]();f[o(355,"LJ!F")]=W[o(361,"Wrt4")],b.current=W.crossings}!R&&(y[o(257,"QGc%")]=!1)}},[R,_,G,H]),_0x20226d[x(277,"(4l8")](()=>{h[x(248,"3vxY")]()},[h]),_0x20226d[x(221,"8oNS")](()=>{const o={gjhKH:function(o,W){return k.XIJJb(o,W)},EKcYV:function(o,W){return k.DvgzI(o,W)}};return()=>{const W=_0x3c0d;o[W(332,"%tCx")]("ojrlh","ojrlh")?(_0x557478(_0x55d72f[W(337,"Wrt4")][W(217,"3A#M")],_0x4330e5[W(276,"iET&")]),_0x4f1023(_0x228bbc[W(312,"zAL]")],_0x57dc1e[W(323,"#tf8")])):(useCrossyRoadStore[W(342,S)]()[W(231,S)]&&!y[W(284,"v1r6")]&&o[W(269,"RwVH")](H,W(327,"iyro")),useCrossyRoadStore[W(343,"v9r8")]().stopGame(),h[W(275,"4u1#")](),useCrossyRoadStore[W(207,"mWnH")]()[W(263,"QGc%")]())}},[h,H]);const N=_0x20226d.useCallback(()=>{const o=x;y.current=!1,h[o(302,s)](),useCrossyRoadStore[o(298,"Wn5&")]()[o(334,"RwVH")](),h[o(304,"HV8p")](),useCrossyRoadStore[o(223,"0YT*")]()[o(338,"XHGO")](),h[o(220,"UE*O")](!0),h.startGame(),playSound(GAME_SOUNDS.CROSSY_ROAD[o(356,"6WId")],u.current),k[o(360,"h0#F")](playHaptic,HapticType.SUCCESS,C[o(240,s)])},[h]),L=_0x20226d.useCallback(()=>{const o=x,W=k.uobdQ[o(218,"n)QX")]("|");let e=0;for(;;){switch(W[e++]){case"0":playHaptic(HapticType[o(278,"h0#F")],C[o(250,"mWnH")]);continue;case"1":h[o(224,"XHGO")]();continue;case"2":H(o(246,"Wrt4"));continue;case"3":k.WSZwC(playSound,GAME_SOUNDS[o(324,"#tf8")][o(274,"3vxY")],u.current);continue;case"4":useCrossyRoadStore[o(320,"uW0z")]()[o(226,"X&#b")]();continue;case"5":h[o(351,"D2l*")]();continue}break}},[h,H]),D=_0x20226d[x(208,"B(Ti")](()=>{const o=x,W=k[o(262,"4u1#")].split("|");let e=0;for(;;){switch(W[e++]){case"0":useCrossyRoadStore[o(362,"v1r6")]()[o(334,"RwVH")]();continue;case"1":h[o(329,"LJ!F")]();continue;case"2":y[o(270,"h0#F")]=!1;continue;case"3":O[o(353,"mq0K")]?.();continue;case"4":h.initialize();continue}break}},[h]),g={..._0x20226d[x(305,"RwVH")](()=>({isPlaying:!G&&p,gameOver:R,onStartGame:N,onStopGame:L,onShare:r,onShowLeaderboard:d,startButtonSubtext:"Cross all 9 roads before 2:00!"}),[G,p,R,N,L,r,d])},J={..._0x20226d[x(216,"%tCx")](()=>{const o=x,W=useCrossyRoadStore[o(298,"Wn5&")](),e=R?W[o(244,"0YT*")]:0,t=R?W[o(280,"h0#F")]:0;return{isVisible:R,score:e,onPlayAgain:D,buttonText:o(259,"3vxY"),title:_?o(345,"(4l8"):o(213,"Q0]J"),scoreLabel:k.xVJkv,message:_?o(321,"Q0]J")+t+o(313,"UE*O"):o(249,"v1r6")+t+" "+(k[o(227,"mWnH")](t,1)?k[o(245,"h0#F")]:o(273,"8oNS"))+"!"}},[R,_,D])};J.onShare=n,J[x(255,"v9r8")]=a;const M={};return M[x(336,"4u1#")]=GAME_IDS.CROSSY_ROAD,M.settings=o||DEFAULT_GAME_SETTINGS,M[x(258,"h0#F")]=W,k[x(316,"D2l*")](_0x3a9611,GestureHandlerRootView,{style:styles[x(229,"iET&")],children:_0x1e5ce0(_0x3b3bc7,{offset:m,children:[_0x3a9611(GameArea,{gameService:h,offset:m}),_0x3a9611(ScoreBoard,{offset:m}),k[x(288,"bD*q")](_0x3a9611,GameControlButton,g),_0x3a9611(GameOverModal,J),k[x(237,"3A#M")](_0x3a9611,GameSettingsModal,M)]})})},_0x40357f={};function _0x25e9(){const o=["rCoeW78wrmk7AW","W4BcOG7dI8o4W7S","W4NdKfXWtYC","BaJcNmoxA8oKWRD5t8o/va","nqiRlIddNSosW6jR","WPeKWOldR8kqWR/dLa","ESkAW6xcMmojAXCtWOG9F8kE","y8k+CHeq","tSk9WQOxWPrnEbddLmoGW64","swtcKYddKmkscexcUa","d8oblLG0WODAhSoyWRi5","qCkLW6JcKXJdQa","W58RWP7cVdFcLCo0semDWOK","pmoDWR3dKSkkftaKWP0","W54rW5NcT8ob","q8kGnCkUsW","WPRcM8oBW5b/EsZcKW","W4pdJdLfmCkLW4hcLq","lmoiWRTkWPBcRCo1uq","s8osWQSKWOy","W4eFWQXCWQuCz8o9","wINcTSohwCorWOrjyCoDEW","cu7dOcVcO8kMWQ0","e8kDrvSfWQhdVG","ESoVWQOFWQyqgCkY","u8ocW6GNqmk5C8ofkbqF","xt/cOmoHtmo6WOLgzq","WPLziCkaCSk2W53cQCk0W7qCmsG","zSkzDmk5aceh","xYnzWQac","jbiQothdT8oh","WO7cH8kHW6BdJG","bduxgaFdGmoSW51bvJq","W47dJmonW6XVtrtcHq","WQK/WRJcHmkJlCkHitJdN2m","W57cMmkAWPxcQq","W68AWR7cNqe","WQVdMrRdNGT1W5HU","bCoIWP1kWPT+W4K2Dhb6WR8tWOLN","px7dLZVcKSkuWOO0","is/cLwm0iSonWR/cLxGA","gZKQmSok","d8oflfS4W6m1kmomWRGWz8k/","FCoeWRP7WRtcP8ok","W4FdNd9KimkQW4e","FmkpWOirW5vUqJFdPW","r8kgvqKlqCkydmotWRvu","ySkJhmkauG","CCkNFXC9DCkO","C8kVdCkoBSkVxSoZW58","FCoWWPucWQa","FCoLWO07WRGydSk8W6n9","uSkLW5ZcTqVdSmkhaCo0rG","xJPfWQOrAcxcPSke","BcldLXhcLCkwWOG2","W5NcUJDzWOzLiSk5","jSohWRxdLmkxmZ0GWOij","WQmBWPtdSSkg","F8k6WP8DDCobW6atia","chZdOG/cSa","p8oDW4fFrW","cSk3W6BcOmoYWQW0nGm","WPxcMqL/mCk9W6hcGq","W43dMH16jmk9W5ZcNSk4","bCkBuNSfWQK","WQFdGHzuC35ttW","CuJcPqZdNa","dmoAECoZamorpSopW6eAWRW2Ca","WQ19jmknBq","C8kTmmkOxa","WQPYWRJdICkGACkLnMtdKrOXW7G","AwFcKrtdL8kjW44Tsa","wmk7WR0MWPbpya","eSoWWPTZWPLQ","qSkYW43cHbpdTa","xxyOmW","W43cVcX4WPC","W4hcISkqWQdcKq","W78yWR/cJahcOa","nCoRW5vammk3WRChkCkuWO3cHcC","gCkgxL0jWQ7dPHlcHw4","WPxdKXVcRrXMW4n4WP/dK1xcJG","ow7dKrRcG8kBWOO","w8kijSk4vmku","AbTVWRWKvX/cL8k/i8oX","W5BdNSobg8o1W6vjWOKOWPddL8ov","W6WlWQSUWOu","kComWQf3WOFcVSoaua","C8kbWP8","W7lcJHbFzxnr","W5/cPCkbWONcR8kSWPCbW5RcKI0+iSkuiYS","omkhrWKHWQJdQXlcKsO","l2JdHIxcG8kyWPe","z8kwg8kjzcSJWPKAW6i","sSkdW5lcUry","W6pcNHfiDfPerx8","W4RdNmolW41+qHq","BflcUJldPW","W64WW67cQSo2nW","bSoDW5nrDG","WP8WWOWdWOfRzq","FKRcGXZdSG","W5pcVSkGWP7cVSk2WOO","cmo8W75NW41ZtHxdSSogW4G","wCk4WR49Ea","wszbWOSe","n8kPEMW/WOddNd7cRq","rCkOW6dcLZ/dUCkU","cSkTW7RcPSo2WQSU","W60JWPW5WPqZtmk/WP0","W73cJSkwWQxcJSkv","fLldPcdcSG","W5pcUCk9WP/cQmkXWPaiW44","thyNiYFdRwqmxq","WO/dRI/dNJC","W6pcM8kEWQ3cImkq","WQ/dIrZdVXP6W5G","zWbNWQCJ","W5/dGLDbtY0","CCkNFX8+FSkIpCoO","W47dQSoGW7z8","WPXQW4bzW6a5AaS2zNRcPa","vSkZWRPiWOH1W7iY","qSk1W5RcLWldV8kk","W5ddMSokgSo3W6SnWOy1WRxdTCobW7G","W5HtWQFdSSoNWQ3cSMRcT8k4WOivW5q","W5ZdMSoCW61+sG","tgW7jspdQN4","pSoTWO4xzCotW40n","WOLejCkHF8k/W7NcQSkLW6mE","WPu0WOtdJSkbWRddLe0","nSoAnCo7uxLgWQnOzN7cTSof","yCkfW4JcSW7dG8kirSku","W5xcVq7dOq","sCkRWRWXWOfMDr/dKa","W74eW5tdRSkhW5bw","W7qFW4/dQmklW59osCo/WOW","tNlcHqJdGCk4bG","WR4fW4tcHCkS","z8kHAcG9DSkZ","W4OSWOStWRjUwG","WR/dNWhdVXO","W5SIWPypWOeSE8kZWOHV","WO8mW7FcOSk5W73dKwRcPSkBWRiU","W7BcGZNdLSop","aCkYW4FcHapdOSoEh8oZvwumCLTpjqb6hmk6DCovwMmmaq","W40WWOOrWRTHvX8NwNu","WRVdLqa","qsVcHmoVvG","W7SLWOSoWPC7xq","W7pcMCkDWR/cImkbWQe9W7lcOcO","W6GcW4pdN8kdW5joqSoKWORdIG","k0aXW6nhWOlcMmoX","ySkHWRP0WPztEWhdHSoMW6hcSSooWOyAW60","WPtcMmkCBSkIWRvzWO4P","WRCMzNy2oqC","WPCbw1CadIZdJxu/ca"];return(_0x25e9=function(){return o})()}_0x40357f[_0x3d0a8d(301,"zAL]")]=1,_0x40357f[_0x3d0a8d(206,"cZgA")]=BACKGROUND_COLOR;const _0x5bea32={};_0x5bea32[_0x3d0a8d(281,"b1g6")]=_0x40357f;const styles=StyleSheet[_0x3d0a8d(242,"UE*O")](_0x5bea32);export const CrossyRoad=CrossyRoadComponent;CrossyRoad[_0x3d0a8d(314,"@loC")]=_0x3d0a8d(310,"(4l8");
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{DAY_LIGHT,GAME_DURATION,getLayout,LOW_TIME,NIGHT_LIGHT,SKY_DAY,SKY_NIGHT,TOTAL_ROADS}from"./CrossyRoadConstants.js";import{createGame,dispose,drag,reset,setLayout,setNight,start,tick}from"./CrossyRoadGame.js";import{jsx as _0x1abeb7}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.CROSSY_ROAD;export const CrossyRoad=engineGame(GAME_IDS.CROSSY_ROAD,e=>{const[s,t]=useLiveState(0),[r,o]=useLiveState(0),[a,i]=useLiveState(GAME_DURATION),{theme:S,status:n,screen:m,gameOver:u}=useEngineGame(e,{gameId:GAME_IDS.CROSSY_ROAD,create:e=>createGame(e.isDark),start:start,reset:reset,dispose:dispose,tick:tick,setTheme:(e,s)=>setNight(e,s.isDark),resize:(e,s,t,r)=>{const o=getLayout(s,t,r);return setLayout(e,o),o.gridW},drag:drag,sounds:SOUNDS,resultsDelay:e=>"win"===e?1050:450,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),onOver:(e,s)=>{"win"===s&&e(SOUNDS.WIN,HapticType.SUCCESS)},wire:(e,s)=>{e.onScore=(e,s)=>{t(e),o(s)},e.onTime=i,e.onEvent=e=>{"hop"===e?s(SOUNDS.HOP,HapticType.LIGHT):"cross"===e?s(SOUNDS.CROSS,HapticType.SUCCESS):s("crash"===e?SOUNDS.CRASH:SOUNDS.TIME_UP,HapticType.ERROR)}}}),O=S.isDark;return _0x1abeb7(EngineGameScreen,{...m,light:O?NIGHT_LIGHT:DAY_LIGHT,background:O?SKY_NIGHT:SKY_DAY,fog:.0015,columns:[scoreColumn(s),textColumn("CROSSINGS",r+"/"+TOTAL_ROADS),timerColumn(a,S,LOW_TIME)],subtext:"Cross roads, dodge traffic!",gameOver:u({title:"win"===n?"YOU WIN!":"GAME OVER",message:"win"===n?"You crossed all "+r+" roads with time to spare!":"You crossed "+r+" "+(1===r?"road":"roads")+"!",scoreLabel:"Score",score:s,buttonText:"Play Again!"})})});
@@ -0,0 +1 @@
1
+ "use strict";import{CAMERA_FOV,CAMERA_PITCH,PERSON,TOTAL_LANES,WORLD_SCALE}from"./CrossyRoadConstants.js";const dot=(t,A)=>t[0]*A[0]+t[1]*A[1]+t[2]*A[2];export function viewPoint(t,A,o){const C=[0,Math.cos(CAMERA_PITCH),-Math.sin(CAMERA_PITCH)],e=[0,Math.sin(CAMERA_PITCH),Math.cos(CAMERA_PITCH)],a=[o[0]-A[0],o[1]-A[1],o[2]-A[2]],h=dot(a,C),E=Math.tan(CAMERA_FOV/2),M=t.width/t.height;return[t.width/2*(1+a[0]/(h*E*M)),t.height/2*(1-dot(a,e)/(h*E))]}export function frameCamera(t,A){const o=WORLD_SCALE,C=TOTAL_LANES*A.laneH*o/2,e=C-A.laneH*o/2,a=PERSON.HEIGHT*PERSON.SCALE*A.tile*o,h=Math.cos(CAMERA_PITCH),E=Math.sin(CAMERA_PITCH),M=Math.tan(CAMERA_FOV/2),i=A.width/A.height,n=t=>(h+t*M*E)/(E-t*M*h),R=t=>1-2*t/A.height,s=(A.top+A.bottom)/2;let _=A.bottom-A.top,r=[0,0,0];for(let t=0;t<80;t++){const t=R(s+_/2),T=R(s-_/2),H=(e+C+a*n(T))/(n(T)-n(t)),P=-C-H*n(t);if(r=[0,P,H],((-C-P)*h+H*E)*M*i>=(A.gridW/2+.3*A.tile)*o)break;_*=.97}t.eye=r,t.target=[0,r[1]+r[2]/Math.tan(CAMERA_PITCH),0],t.fov=CAMERA_FOV,delete t.ortho}
@@ -1 +1 @@
1
- "use strict";const _0xfeef10=_0x16d2;function _0x1617(){const e=["lCkJW7xdReu","WOhdHCoEgCk2WRG","WQTvWPZcVsxcL8kA","uaa3W6xcVIFdVfFdPCokcW3dKq","F8ksF2xdNd0sWPldNLNdR8kibq","WPJcImkaF8kGW4ddP10","W7OkWQ/dQYvIvW","cCkqW4BdGgxdNIjlW5aaDSkApq","W4ZdTCk1uquntCkEW5K","W5n0W69DWPtcHYW","W4JcTSklWQxdRab9W7hdLthdVG","WO7dK8ocWP5sewfsWQlcKSkh","WO8UWOJdRCkmeCkA","W6HdEqtcKmkpW5e","WQJcRSkDas/dL8oq","kWddSSkMW5qHW5RdNeSmW6NdUCo3","W5xcVmo6WPlcMZZcPmkKFSkkkx0","FCkvbJBcJKzeWQ8","lstdVSoBBmoiW4JcR8kkB1u","wIhcP08","pxe4WOv7W43dGCoGWPNdRSkNvtBdHW","W6hdSCo0fCosWRpdPfKUwCo9W5q","lXSgtw5QWOm","dI3dJ8kwW7u","oGddQCk1W5GLW5BdNa","gmoLgrNcR0z9WQNdK3ldI8kXaa","hmoQW5v7ga","mLPEA1xdJvG","WQ/dSexdIwddLrm","W6imhSktWQ3dUSomCLfRW7a","uSoJWQjtkmoXaa","t8kjWPldTGVcN8ov","iYpdKeOQdSog","jaddRSk8W5GLW4BdIuOa","W685W7NcM8kEFCkkW5RcGb0WW7qoiCoRfNCt","WQVcQCkfWR3dKGD2","WQK5WPRdHW","W5pcPCoSda","kmoYW5uifNldG8kJW6VcOq","s0dcJmkQfSkLWQ/cRSkey2ldRmoy","W6GYcNBdOCo+W5O","W5/dHmkzEsm","WQSJWPZdGxG","rL1mhuxcOsW+DSoi","WOJdK8oxWPTbc3DAWQy","WOS/WP4zW7a","t8o6W6hdUh7cMSkN","xwflW7itWQdcVq","j8oYW4KscNu","kSo2zCksW5NcGmoqWRxdP8kVBG97","W5PlWOq5W5eGW7m","W4pdJmkpWP7dQZRdGa","W47dUulcO2xcUrxdOdzsdtpdTmkk","lSkjW6FcIW/cI8oCW74HcW","p8klW7BcHq3cL8omW7WMc8ofW7S","fCkdFXm","xNFcK8olWRbfWQFdVKC1W4VdM8oH","jCovvCoXdW","W7ntW5v4","W6qdWRhdQrldIW","s38ckGGhW7FdOgRcTa","wSo+WPFdSN/dRCkRW4WNkCo+W5dcMW","y1ThFmkTW7iAWPKNWRe","nSkwW5WIr8kbfa7dHmkKB8kItSo/FSk2","W6adWRBdQq7dLW","aSkvEW","WPS8ErZdPCky","BmkKW4X3","avldGmkAWONcN8kv","dmo0aHJcTv8","WQaqW6bsWPpdOue","W5SHzSoEC1JdLG","W5FcSSo9WPlcN0VcMSkoq8khcW","WQasW6CKWPtdOea","W4aNpCkRW4dcMSkMaZWlWO7dSaRdHCo6W7NcQCozW7vbW5mx","vK5rheJcSI05Ca","sCkda8oLWQBdU8kN","uSosW6O/e1xdIq","WPJcQ8oGamkwW75I","WQTEWP3cUYFcKCoU","gYldKSkCW6iFW4JdSgSNW4W","W5pcUSo+WPpcMJBdJCk4z8kzmh/dKq","W4FcPSoIb8kI","q11rfeJcQJO+z8oi"];return(_0x1617=function(){return e})()}!function(){const e=_0x16d2,_=_0x1617();for(;;)try{if(567248==parseInt(e(256,"c%x@"))/1+-parseInt(e(223,"kE%*"))/2*(-parseInt(e(252,"YN&n"))/3)+parseInt(e(232,"kE%*"))/4+-parseInt(e(238,"J^u6"))/5+-parseInt(e(207,"mr6e"))/6+-parseInt(e(270,"rlE]"))/7*(parseInt(e(190,"mccC"))/8)+-parseInt(e(229,"I@MY"))/9*(-parseInt(e(239,"YN&n"))/10))break;_.push(_.shift())}catch(e){_.push(_.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions,isTablet}from"../../services/UtilsService.js";const dims=getGameDimensions(),DEVICE_WIDTH=dims[_0xfeef10(231,"mr6e")],PLAY_WIDTH=dims.width,SCREEN_HEIGHT=dims[_0xfeef10(215,"#eQl")],COLS=9,TILE=Math[_0xfeef10(258,"mr6e")](PLAY_WIDTH/9),GRID_W=9*TILE,GRID_LEFT=Math.round((DEVICE_WIDTH-GRID_W)/2),TOTAL_ROADS=9,ROADS_PER_REST=3,buildLanePattern=()=>{const e=_0xfeef10,_={};_[e(196,"L&qs")]=e(272,"I@MY"),_.UgzWj=e(235,"2Cq!");const f=_,W=["grass"];let x=0,d=0;for(;x<9;)W.push(f[e(261,"Bh()")]),x++,d++,3===d&&x<9&&(W[e(271,"QcMT")](f.UgzWj),d=0);return W[e(209,"3B1x")](f.UgzWj),W},LANE_TYPES=buildLanePattern(),TOTAL_LANES=LANE_TYPES[_0xfeef10(210,"#eQl")],VERTICAL_BUDGET=.82*SCREEN_HEIGHT,LANE_H=Math.min(TILE,Math[_0xfeef10(233,"I@MY")](VERTICAL_BUDGET/TOTAL_LANES)),ANCHOR_Y=Math[_0xfeef10(193,"QcMT")](.62*SCREEN_HEIGHT),ROWS_ABOVE=Math.ceil(ANCHOR_Y/LANE_H)+2,ROWS_BELOW=Math.ceil((SCREEN_HEIGHT-ANCHOR_Y)/LANE_H)+2,BOARD_BOTTOM_Y=Math[_0xfeef10(208,"#Sp[")](SCREEN_HEIGHT/2+(TOTAL_LANES-1)*LANE_H/2),GAME_DURATION_MS=12e4,HOP_MS=130,CREEP_DELAY_MS=3e3,CREEP_ROWS_PER_SEC=.55,BEHIND_DEATH_ROWS=ROWS_BELOW-1,CAR_SPEED_MIN=isTablet?2.2:1.7,CAR_SPEED_MAX=isTablet?4.6:3.6,LOG_SPEED_MIN=isTablet?1.6:1.2,LOG_SPEED_MAX=isTablet?3:2.4,TRAIN_SPEED=isTablet?12:9.5,_0x53fe9e={};function _0x16d2(e,_){e-=189;const f=_0x1617();let W=f[e];if(void 0===_0x16d2.FHfMcd){const e=function(e,_){let f,W,x=[],d=0,E="";for(e=function(e){let _="",f="";for(let f,W,x=0,d=0;W=e.charAt(d++);~W&&(f=x%4?64*f+W:W,x++%4)?_+=String.fromCharCode(255&f>>(-2*x&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let e=0,W=_.length;e<W;e++)f+="%"+("00"+_.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(f)}(e),W=0;W<256;W++)x[W]=W;for(W=0;W<256;W++)d=(d+x[W]+_.charCodeAt(W%_.length))%256,f=x[W],x[W]=x[d],x[d]=f;W=0,d=0;for(let _=0;_<e.length;_++)W=(W+1)%256,d=(d+x[W])%256,f=x[W],x[W]=x[d],x[d]=f,E+=String.fromCharCode(e.charCodeAt(_)^x[(x[W]+x[d])%256]);return E};_0x16d2.lhIMaG=e,_0x16d2.uVUEsf={},_0x16d2.FHfMcd=!0}const x=f[0];_0x16d2.RCjzyT!==x&&(_0x16d2.uVUEsf={},_0x16d2.RCjzyT=x);const d=_0x16d2.uVUEsf[e];return void 0===d?(void 0===_0x16d2.fVhSUF&&(_0x16d2.fVhSUF=!0),W=_0x16d2.lhIMaG(W,_),_0x16d2.uVUEsf[e]=W):W=d,W}_0x53fe9e[_0xfeef10(218,"Gi95")]=9,_0x53fe9e[_0xfeef10(254,"grT3")]=TILE,_0x53fe9e[_0xfeef10(199,"irHB")]=LANE_H,_0x53fe9e[_0xfeef10(220,"YN&n")]=GRID_W,_0x53fe9e[_0xfeef10(226,"NZ(I")]=GRID_LEFT,_0x53fe9e.ANCHOR_Y=ANCHOR_Y,_0x53fe9e[_0xfeef10(203,"F[G4")]=BOARD_BOTTOM_Y,_0x53fe9e[_0xfeef10(245,"rlE]")]=TOTAL_LANES,_0x53fe9e[_0xfeef10(246,"1)Yh")]=9,_0x53fe9e[_0xfeef10(268,"mr6e")]=LANE_TYPES,_0x53fe9e[_0xfeef10(214,"D9uX")]=12e4,_0x53fe9e[_0xfeef10(213,"iBd9")]=ROWS_ABOVE,_0x53fe9e.ROWS_BELOW=ROWS_BELOW,_0x53fe9e[_0xfeef10(236,"UZ^E")]=130,_0x53fe9e[_0xfeef10(255,"qsUT")]=3e3,_0x53fe9e[_0xfeef10(269,"n$ks")]=.55,_0x53fe9e.BEHIND_DEATH_ROWS=BEHIND_DEATH_ROWS,_0x53fe9e[_0xfeef10(242,"2Cq!")]=CAR_SPEED_MIN,_0x53fe9e[_0xfeef10(250,"mr6e")]=CAR_SPEED_MAX,_0x53fe9e.LOG_SPEED_MIN=LOG_SPEED_MIN,_0x53fe9e.LOG_SPEED_MAX=LOG_SPEED_MAX,_0x53fe9e[_0xfeef10(253,"mccC")]=TRAIN_SPEED,_0x53fe9e[_0xfeef10(205,"]fd@")]=DEVICE_WIDTH,_0x53fe9e[_0xfeef10(260,"YN&n")]=SCREEN_HEIGHT;export const CROSSY_CONFIG=_0x53fe9e;const _0x4ea5c7={};_0x4ea5c7[_0xfeef10(204,"]fd@")]=BACKGROUND_COLOR,_0x4ea5c7[_0xfeef10(244,"3B1x")]=PRIMARY_COLOR,_0x4ea5c7.GRASS_LIGHT="#7EC850",_0x4ea5c7[_0xfeef10(211,"(iKE")]=_0xfeef10(221,"3B1x"),_0x4ea5c7[_0xfeef10(206,"^Tm!")]=_0xfeef10(224,"3B1x"),_0x4ea5c7[_0xfeef10(243,"dhm9")]=_0xfeef10(225,"$5s4"),_0x4ea5c7[_0xfeef10(195,"1)Yh")]=_0xfeef10(237,"#eQl"),_0x4ea5c7.WATER=_0xfeef10(248,"0[3e"),_0x4ea5c7[_0xfeef10(194,"NZ(I")]=_0xfeef10(197,"]fd@"),_0x4ea5c7.RAIL="#5A5560",_0x4ea5c7[_0xfeef10(259,"mr6e")]=_0xfeef10(265,"D9uX"),_0x4ea5c7[_0xfeef10(234,"NZ(I")]=_0xfeef10(222,")QST"),_0x4ea5c7.LOG=_0xfeef10(230,"#eQl"),_0x4ea5c7[_0xfeef10(240,"c%x@")]=_0xfeef10(257,"(iKE"),_0x4ea5c7[_0xfeef10(189,"irHB")]=["#FF5C5C",_0xfeef10(241,"QcMT"),_0xfeef10(201,"L&qs"),_0xfeef10(266,"]fd@"),_0xfeef10(202,"kE%*"),"#4D96FF"],_0x4ea5c7[_0xfeef10(192,"^I]8")]=_0xfeef10(191,"0[3e"),_0x4ea5c7.TRAIN_DARK=_0xfeef10(267,"J*W^"),_0x4ea5c7[_0xfeef10(217,"0[3e")]=_0xfeef10(247,"n$ks"),_0x4ea5c7[_0xfeef10(264,"$5s4")]=_0xfeef10(198,"qsUT"),_0x4ea5c7.PLAYER_BEAK=_0xfeef10(263,"F[G4"),_0x4ea5c7.PLAYER_COMB=_0xfeef10(249,"^I]8"),_0x4ea5c7[_0xfeef10(216,"^Tm!")]="#2C2C44",_0x4ea5c7[_0xfeef10(227,"qI@w")]=_0xfeef10(262,"NZ(I");export const CROSSY_COLORS=_0x4ea5c7;
1
+ "use strict";import{isTablet}from"../../services/UtilsService.js";import{getScoreBoardTop}from"../shared/EngineHud.js";import{gameWidthFor}from"../shared/EngineUtils.js";export const COLS=9;export const TOTAL_ROADS=9;const ROADS_PER_REST=3;export const LANE_TYPES=(()=>{const t=["grass"];let o=0,e=0;for(;o<9;)t.push("road"),o++,e++,3===e&&o<9&&(t.push("grass"),e=0);return t.push("grass"),t})();export const TOTAL_LANES=LANE_TYPES.length;export const GOAL_ROW=TOTAL_LANES-1;export const GAME_DURATION=120;export const SCORE_PER_CROSS=2e3;export const LOW_TIME=10;export const CAR_SPEED_MIN=isTablet?2:1.55;export const CAR_SPEED_MAX=isTablet?4.15:3.25;export const STEP_MS=1e3/60;export const MAX_PENDING_MS=50;export const speedScale=t=>Math.min(1+.065*t,1.9);export const MOVE_TIME=.2;export const SWIPE=18;export const TAP_MAX=.25;export const COLORS={GRASS_LIGHT:"#95CF69",GRASS_DARK:"#83BF5C",GRASS_TUFT:"#4E9A2E",ROAD:"#4B5667",ROAD_EDGE:"#3C3C46",ROAD_LINE:"#C9C9CF",CAR_COLORS:["#FF5C5C","#FFD93D","#6BCB77","#A66CFF","#FF9F45","#4D96FF","#37C7C2","#F2EEE2","#EF7CAB"],WHEEL:"#15151A",WINDOW:"#2A3442",PLAYER:"#3B82C4",TRUNK:"#7A4E2D",LEAVES:"#3FA34D",FLOWERS:["#FFFFFF","#FFD1EC","#C7B3FF","#FFF2B0"],CURB:"#C9C6BE",LINE:"#F2F2EE",BUSH:"#3E8E3A",ROCK:"#8E8C88"};export const PERSON={SCALE:.82,HEIGHT:1.817,STRIDE:.5};export const PERSON_COLORS={SKIN:"#DCA67D",JACKET:COLORS.PLAYER,PANTS:"#3B4558",HAIR:"#352B27",SHOE:"#39434C",SOLE:"#F0ECE1",BACKPACK:"#CE8248",STRAP:"#72513A"};export const WORLD_SCALE=.1;export const CAMERA_PITCH=.92;export const CAMERA_FOV=.7;export const SKY_DAY=[.62,.78,.95];export const SKY_NIGHT=[.227,.192,.376];export const DAY_LIGHT={direction:[-.45,-.55,1],ambient:.5,shadowExtent:40};export const NIGHT_LIGHT={direction:[-.3,-.5,1],ambient:.66,shadowExtent:40,color:[.84,.88,1]};const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110;export function getLayout(t,o,e){const E=gameWidthFor(t),r=Math.floor(E/9),s=9*r,A=getScoreBoardTop(e)+82,n=Math.max(A+200,o-110);return{width:t,height:o,tile:r,laneH:1.25*r,gridW:s,gridLeft:Math.round((t-s)/2),top:A,bottom:n}}export const colX=(t,o)=>t.gridLeft+o*t.tile+t.tile/2;
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{frameCamera}from"./CrossyRoadCamera.js";import{GAME_DURATION,MAX_PENDING_MS,MOVE_TIME,SCORE_PER_CROSS,STEP_MS,SWIPE,TAP_MAX}from"./CrossyRoadConstants.js";import{crossyMeshes}from"./CrossyRoadMeshes.js";import{buildTraffic,hit,hopBack,hopForward,hopSide,moveTraffic,playerX,scaleFor,startPlayer}from"./CrossyRoadRules.js";import{buildScene,celebrate,hop,placePlayer,placeVehicles,removeScene,setTraffic,stumble}from"./CrossyRoadScene.js";const WORLD_CAPACITY=1600;export function createGame(e){const o=new World(1600),r={world:o,camera:{eye:[0,-60,60],target:[0,0,0],fov:.7},assets:crossyMeshes(),night:e,layout:null,scene:null,phase:"ready",traffic:[],nextId:0,player:startPlayer(),hopping:null,queuedHop:null,alive:!0,won:!1,get score(){return o.scoreboard.score},timeLeft:GAME_DURATION,pending:0,clock:0,press:null,onPhase:e=>{},onScore:(e,o)=>{},onTime:e=>{},onEvent:e=>{}};return o.scoreboard.reset(0,GAME_DURATION),o.scoreboard.handlers={onSecond:e=>{r.timeLeft=e,r.onTime(e)},onTimeUp:()=>"playing"===r.phase&&r.alive&&timeUp(r)},r}export function setLayout(e,o){const r=e.layout,t=!e.layout||e.layout.width!==o.width||e.layout.tile!==o.tile;if(e.scene&&removeScene(e.world,e.scene),e.layout=o,frameCamera(e.camera,o),t&&"playing"!==e.phase)e.traffic=buildTraffic(o,e.nextId),e.nextId+=e.traffic.length;else if(t&&r){const t=o.tile/r.tile;for(const s of e.traffic)s.x=o.gridLeft+(s.x-r.gridLeft)*t,s.width*=t,s.speed*=t}if(e.scene=buildScene(e.world,o,e.assets,e.night,e.traffic),placePlayer(e.world,o,e.scene,e.player.row,e.player.col),e.hopping){const r=e.hopping;r.elapsed=0,hop(e.world,o,e.scene,[r.from.row,r.from.col],[r.to.row,r.to.col],r.direction)}}export function setNight(e,o){o!==e.night&&(e.night=o,e.layout&&setLayout(e,e.layout))}function deal(e){const o=e.layout;e.player=startPlayer(),e.hopping=null,e.queuedHop=null,e.alive=!0,e.won=!1,e.world.scoreboard.reset(0,GAME_DURATION),e.timeLeft=GAME_DURATION,e.pending=0,e.press=null,o&&(e.traffic=buildTraffic(o,e.nextId),e.nextId+=e.traffic.length,e.scene&&(setTraffic(e.world,o,e.assets,e.scene,e.traffic),placePlayer(e.world,o,e.scene,0,e.player.col))),e.onScore(0,0),e.onTime(GAME_DURATION)}export function start(e){"playing"!==e.phase&&(deal(e),e.world.scoreboard.startCountdown(GAME_DURATION),e.phase="playing",e.onPhase("playing"))}export function reset(e){deal(e),e.phase="ready",e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,o){if(e.world.isDisposed)return;const r=Math.max(0,Math.min(o,MAX_PENDING_MS/1e3));e.clock+=r;const t=e.layout;let s=!1;if(t&&"playing"===e.phase&&e.alive){let o=Math.min(e.pending+1e3*r,MAX_PENDING_MS);for(;e.alive&&o>=STEP_MS;){o-=STEP_MS,moveTraffic(t,e.traffic,scaleFor(e.player)),s=!0;const r=e.hopping;r&&(r.elapsed=Math.min(MOVE_TIME,r.elapsed+STEP_MS/1e3));const n=r?r.elapsed/MOVE_TIME:0,a=r?r.from.row+(r.to.row-r.from.row)*n:e.player.row,l=r?r.from.col+(r.to.col-r.from.col)*n:e.player.col,i=playerX(t,e.player)+(l-e.player.col)*t.tile;hit(t,e.traffic,a,i)?crash(e,a,l):r&&r.elapsed+1e-6>=MOVE_TIME&&land(e,r)}e.pending=o}s&&t&&e.scene&&placeVehicles(e.world,t,e.scene,e.traffic),e.world.update(r)}function end(e,o){e.world.scoreboard.stop(),e.alive=!1,e.won=o,e.press=null,e.hopping=null,e.queuedHop=null,e.phase="over",e.onPhase("over")}function crash(e,o,r){const{layout:t,scene:s}=e;t&&s&&(placePlayer(e.world,t,s,o,r),stumble(e.world,t,s,o,r)),e.onEvent("crash"),end(e,!1)}function timeUp(e){e.timeLeft=0,e.onTime(0),e.onEvent("timeUp"),end(e,!1)}export function hopTo(e,o){const{layout:r,scene:t}=e;if("playing"!==e.phase||!e.alive||!r)return;if(e.hopping)return void(e.queuedHop=o);const s={...e.player},n=[s.row,s.col],a="up"===o?hopForward(s):"down"===o?hopBack(s):hopSide(s,"left"===o?-1:1);a.moved&&(e.hopping={from:{...e.player},to:s,result:a,elapsed:0,direction:o},t&&hop(e.world,r,t,n,[s.row,s.col],o),e.onEvent("hop"))}function land(e,o){e.player=o.to,e.hopping=null;const r=e.player,t=o.result,{layout:s,scene:n}=e;if(t.crossed&&(e.world.scoreboard.set(r.crossings*SCORE_PER_CROSS),e.onScore(e.score,r.crossings),e.onEvent("cross")),t.goal){const o=Math.floor(Math.max(0,e.world.scoreboard.seconds));return e.timeLeft=o,e.world.scoreboard.set(calculateTimeBasedScore(GAME_DURATION-o,GAME_DURATION,r.crossings*SCORE_PER_CROSS)),e.onTime(o),e.onScore(e.score,r.crossings),n&&s&&celebrate(e.world,s,n,r.row,r.col),void end(e,!0)}const a=e.queuedHop;e.queuedHop=null,a&&hopTo(e,a)}export function drag(e,{phase:o,x:r,y:t,cancelled:s}){if(s)return void(e.press=null);if("start"===o)return void(e.press={x:r,y:t,at:e.clock,swiped:!1});const n=e.press;if(!n)return;const a=r-n.x,l=t-n.y;!n.swiped&&Math.hypot(a,l)>=SWIPE&&(n.swiped=!0,hopTo(e,Math.abs(a)>=Math.abs(l)?a>0?"right":"left":l>0?"down":"up")),"end"===o&&(e.press=null,!n.swiped&&e.clock-n.at<=TAP_MAX&&hopTo(e,"up"))}
@@ -0,0 +1 @@
1
+ "use strict";import{merge}from"@nayan-ui/engine";import{cacheGameAsset,createGameMesh as _0x3cf61a}from"../shared/EngineMeshes.js";const WHITE=[1,1,1,1],GLASS=[.18,.34,.42,1],TYRE=[.11,.13,.17,1],CHROME=[.75,.81,.82,1],CREAM=[.94,.94,.86,1];function solid(o,e){const s=[],r=[],t=[0,1,2].map(e=>o.reduce((o,s)=>o+s[e],0)/o.length);for(const n of e){const[e,h,u]=n.map(e=>o[e]),a=h.map((o,s)=>o-e[s]),i=u.map((o,s)=>o-e[s]);let p=[a[1]*i[2]-a[2]*i[1],a[2]*i[0]-a[0]*i[2],a[0]*i[1]-a[1]*i[0]];const l=[0,1,2].map(e=>n.reduce((s,r)=>s+o[r][e],0)/n.length),f=p.reduce((o,e,s)=>o+e*(l[s]-t[s]),0)<0;f&&(p=p.map(o=>-o));const m=Math.hypot(...p)||1,b=s.length/11;for(const e of n)s.push(...o[e],...p.map(o=>o/m),1,1,1,0,0);for(let o=1;o<n.length-1;o++)r.push(b,b+(f?o+1:o),b+(f?o:o+1))}return{vertices:Float32Array.from(s),indices:Uint32Array.from(r)}}const FACES=[[0,1,2,3],[4,5,6,7],[0,1,5,4],[1,2,6,5],[2,3,7,6],[3,0,4,7]],cube=solid([[-.5,-.5,-.5],[.5,-.5,-.5],[.5,.5,-.5],[-.5,.5,-.5],[-.5,-.5,.5],[.5,-.5,.5],[.5,.5,.5],[-.5,.5,.5]],FACES),box=(o,e,s=WHITE)=>({geometry:cube,position:o,scale:e,color:s}),model=o=>_0x3cf61a(merge(o),{center:!1});function cabin(o,e,s,r){return solid([[o,-.44,s],[e,-.44,s],[e,.44,s],[o,.44,s],[o+.07,-.36,r],[e-.1,-.36,r],[e-.1,.36,r],[o+.07,.36,r]],FACES)}const wheel=(()=>{const o=[];for(const e of[-1,1])for(let s=0;s<8;s++){const r=s*Math.PI/4;o.push([.13*Math.cos(r),.065*e,.13*Math.sin(r)])}return solid(o,[Array.from({length:8},(o,e)=>e),Array.from({length:8},(o,e)=>e+8),...Array.from({length:8},(o,e)=>[e,(e+1)%8,(e+1)%8+8,e+8])])})();function vehicle(o){const e="bus"===o,s="pickup"===o,r="taxi"===o,t=e?2.4:s?1.7:r?1.5:1.4,n=[box([0,0,.3],[.96,.94,.26])],h=[box([0,0,.17],[.88,.82,.07],TYRE)];if(e){h.push(box([0,0,.65],[.94,.91,.48],CREAM)),n.push(box([0,0,.91],[.96,.94,.06]));for(const o of[-1,1]){for(let e=0;e<6;e++)h.push(box([.147*e-.375,.462*o,.69],[.118,.015,.24],GLASS));h.push(box([.2,.475*o,.36],[.52,.018,.055],CREAM))}h.push(box([.478,0,.69],[.02,.78,.29],GLASS),box([-.478,0,.69],[.02,.71,.22],GLASS)),h.push(box([.483,0,.87],[.025,.48,.075],TYRE),box([.49,0,.87],[.025,.3,.024],[1,.78,.3,1])),h.push(box([-.08,0,.97],[.25,.5,.07],CHROME))}else{const o=s?-.04:-.3,e=.28;h.push({geometry:cabin(o,e,.43,.73),color:GLASS}),n.push(box([(o+e-.03)/2,0,.745],[e-o-.13,.76,.055]));for(const o of[-1,1])n.push(box([.035,.44*o,.57],[.034,.04,.29])),h.push(box([.14,.48*o,.42],[.065,.015,.022],CHROME));if(s){h.push(box([-.28,0,.438],[.35,.7,.018],TYRE));for(const o of[-1,1])n.push(box([-.28,.42*o,.49],[.38,.07,.15]));h.push(box([-.31,0,.51],[.15,.28,.14],[.66,.44,.25,1]))}if(r){h.push(box([-.04,0,.82],[.16,.38,.1],[1,.83,.23,1]));for(const o of[-1,1])for(let e=0;e<5;e++)h.push(box([.11*e-.28,.477*o,.32],[.055,.015,.055],TYRE))}}for(const o of[-.31,.3])for(const e of[-1,1])h.push({geometry:wheel,position:[o,.46*e,.13],scale:[1/t,1,1],color:TYRE}),h.push(box([o,.529*e,.13],[.11/t,.012,.11],CHROME));h.push(box([.485,0,.22],[.035,.8,.07],CHROME),box([-.485,0,.22],[.035,.8,.07],CHROME)),h.push(box([.485,0,.33],[.028,.35,.08],TYRE));const u=[];for(const o of[-1,1])u.push(box([.49,.34*o,.35],[.03,.18,.09],[1,.94,.68,1])),u.push(box([-.49,.34*o,.35],[.03,.14,.09],[1,.12,.08,1]));return{body:model(n),details:model(h),lights:model(u)}}function pyramid(o,e,s){const r=o/2;return solid([[-r,-r,e],[r,-r,e],[r,r,e],[-r,r,e],[0,0,s]],[[0,1,2,3],[0,1,4],[1,2,4],[2,3,4],[3,0,4]])}let cached=null;export function crossyMeshes(){return cacheGameAsset("crossy-road/CrossyRoadMeshes:crossyMeshes",()=>crossyMeshesUncached())}function crossyMeshesUncached(){return cached||(cached={vehicles:{compact:vehicle("compact"),taxi:vehicle("taxi"),pickup:vehicle("pickup"),bus:vehicle("bus")},tree:model([box([0,0,.3],[.14,.14,.6],[.45,.28,.16,1]),{geometry:pyramid(.9,.35,1.1),color:[.2,.48,.3,1]},{geometry:pyramid(.7,.75,1.4),color:[.26,.59,.34,1]},{geometry:pyramid(.5,1.1,1.65),color:[.34,.67,.4,1]}]),bush:model([box([-.23,0,.22],[.44,.6,.44]),box([.12,.03,.3],[.6,.65,.6]),box([.4,-.03,.18],[.3,.45,.36])]),rock:model([{geometry:cabin(-.4,.4,0,.4)}])},cached)}export function*warmAssets(){yield crossyMeshes}