@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{block,ellipsoid,loft,merge,tube}from"@nayan-ui/engine";import{cacheGameAsset,createGameMesh as _0x221759}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{PERSON_COLORS}from"./CrossyRoadConstants.js";const part=(o,e,t)=>({geometry:o,position:e,color:t}),orb=(o,e,t,r=12)=>part(ellipsoid(o,void 0,r),e,t),pipe=(o,e,t,r=8)=>({geometry:tube(o,{radius:e,sides:r,smoothness:3}),color:t}),model=o=>_0x221759(merge(o),{center:!1,shine:.08});let cached=null;export function pedestrianMeshes(){return cacheGameAsset("crossy-road/CrossyRoadPerson:pedestrianMeshes",()=>pedestrianMeshesUncached())}function pedestrianMeshesUncached(){if(cached)return cached;const o=toColor(PERSON_COLORS.SKIN),e=toColor(PERSON_COLORS.JACKET),t=toColor(PERSON_COLORS.PANTS),r=toColor(PERSON_COLORS.HAIR),s=toColor(PERSON_COLORS.SHOE),p=toColor(PERSON_COLORS.SOLE),i=toColor(PERSON_COLORS.BACKPACK),a=toColor(PERSON_COLORS.STRAP),n=[{geometry:loft([{z:.9,bottom:-.12,top:.13,width:.15,square:3},{z:1.05,bottom:-.135,top:.14,width:.165,square:3},{z:1.32,bottom:-.14,top:.15,width:.225,square:2.8},{z:1.43,bottom:-.105,top:.11,width:.2,square:2.6},{z:1.48,bottom:-.065,top:.07,width:.075,square:2.4}],{around:16,smoothness:2}),color:e},orb([.16,.135,.12],[0,0,.86],t),pipe([[0,0,1.46],[0,0,1.57]],.052,o),orb([.106,.105,.135],[0,.005,1.65],o,16),orb([.027,.033,.031],[0,.11,1.642],o),orb([.111,.108,.067],[0,-.012,1.75],r,16),orb([.103,.052,.09],[0,-.075,1.685],r),{geometry:loft([{z:1.02,bottom:-.23,top:-.115,width:.13,square:4},{z:1.08,bottom:-.27,top:-.12,width:.15,square:4},{z:1.35,bottom:-.265,top:-.115,width:.145,square:4},{z:1.41,bottom:-.2,top:-.11,width:.1,square:3}],{around:12,smoothness:2}),color:i},part(block(.21,.028,.11),[0,-.269,1.14],a),pipe([[-.09,-.278,1.28],[.09,-.278,1.28]],.008,p,6),pipe([[0,.145,1.02],[0,.155,1.33],[0,.08,1.45]],.007,a,6),pipe([[-.02,.107,1.605],[0,.113,1.6],[.02,.107,1.605]],.004,toColor("#8D5044"),6)];for(const e of[-1,1])n.push(orb([.019,.02,.035],[.108*e,-.002,1.65],o)),n.push(orb([.023,.013,.015],[.047*e,.099,1.682],p,8)),n.push(orb([.01,.009,.01],[.047*e,.111,1.681],toColor("#293341"),8)),n.push(pipe([[.026*e,.099,1.709],[.065*e,.094,1.71]],.006,r,6)),n.push(pipe([[.13*e,-.16,1.38],[.16*e,.02,1.44],[.13*e,.152,1.25],[.13*e,.14,1.03]],.019,a));const d=model([pipe([[0,0,0],[0,.01,-.15],[0,.04,-.28]],.071,e),pipe([[0,.04,-.27],[0,.07,-.38],[0,.085,-.49]],.042,o),orb([.038,.044,.062],[0,.085,-.49],o)]),h=model([pipe([[0,0,0],[0,.025,-.33],[0,-.01,-.72]],.072,t),orb([.073,.075,.08],[0,.025,-.33],t)]),l=model([orb([.068,.14,.063],[0,.075,-.06],s),part(block(.14,.275,.025),[0,.075,-.115],p),pipe([[-.04,.09,-.005],[.04,.09,-.005]],.008,p,6),pipe([[-.04,.13,-.01],[.04,.13,-.01]],.008,p,6)]);return cached={torso:model(n),arm:d,leg:h,shoe:l},cached}export function*warmAssets(){yield pedestrianMeshes}
@@ -0,0 +1 @@
1
+ "use strict";import{CAR_SPEED_MAX,CAR_SPEED_MIN,COLORS,COLS,colX,GOAL_ROW,LANE_TYPES,speedScale}from"./CrossyRoadConstants.js";const rnd=(o,t)=>o+Math.random()*(t-o);export function buildTraffic(o,t=0){const r=[];let e=t,n=[],s=-1;const a=()=>{if(!n.length){n=COLORS.CAR_COLORS.map((o,t)=>t);for(let o=n.length-1;o>0;o--){const t=Math.floor(Math.random()*(o+1));[n[o],n[t]]=[n[t],n[o]]}n[n.length-1]===s&&([n[0],n[n.length-1]]=[n[n.length-1],n[0]])}return s=n.pop(),s};return LANE_TYPES.forEach((t,n)=>{if("road"!==t)return;const s=Math.random()<.5?1:-1,d=Math.random()<.35,i=d?"bus":["compact","taxi","pickup"][Math.floor(3*Math.random())],l=rnd(CAR_SPEED_MIN,CAR_SPEED_MAX)*(d?.8:1)*s,h=(d?1:2)+(Math.random()<.3?1:0),p=o.tile*{compact:1.4,taxi:1.5,pickup:1.7,bus:2.4}[i],O=o.width/h+p,f=rnd(0,O);for(let o=0;o<h;o++)r.push({id:e++,row:n,x:-p+f+o*O,width:p,speed:l,colorIndex:a(),style:i})}),r}export function moveTraffic(o,t,r){const e=2*o.tile;for(const n of t){let t=n.x+n.speed*r;const s=n.width+e;n.speed>0&&t-n.width/2>o.width+s?t=-s-n.width/2:n.speed<0&&t+n.width/2<-s&&(t=o.width+s+n.width/2),n.x=t}}export function hit(o,t,r,e){const n=.4*o.tile*.65;return t.some(t=>Math.abs(t.row-r)*o.laneH<.53*o.tile&&Math.abs(t.x-e)<t.width/2+n)}export const startPlayer=()=>({row:0,col:Math.floor(COLS/2),maxRow:0,crossings:0});const NO_HOP={moved:!1,crossed:!1,goal:!1};export function hopForward(o){const t=o.row,r=Math.min(t+1,GOAL_ROW);if(r===t)return NO_HOP;o.row=r;let e=!1;return r>o.maxRow&&(o.maxRow=r,"road"===LANE_TYPES[t]&&(o.crossings++,e=!0)),{moved:!0,crossed:e,goal:r===GOAL_ROW}}export function hopBack(o){return o.row<=0?NO_HOP:(o.row-=1,{moved:!0,crossed:!1,goal:!1})}export function hopSide(o,t){const r=o.col+t;return r<0||r>=COLS?NO_HOP:(o.col=r,{moved:!0,crossed:!1,goal:!1})}export const playerX=(o,t)=>colX(o,t.col);export const scaleFor=o=>speedScale(o.crossings);
@@ -0,0 +1 @@
1
+ "use strict";import{effects,quat}from"@nayan-ui/engine";import{toColor}from"../shared/EngineUtils.js";import{COLORS,COLS,colX,LANE_TYPES,MOVE_TIME,PERSON,TOTAL_LANES,WORLD_SCALE}from"./CrossyRoadConstants.js";import{pedestrianMeshes}from"./CrossyRoadPerson.js";const GROUND_DEPTH=8,ROAD_DROP=1.6,FACE_RIGHT=[0,0,0,1],FACE_LEFT=quat.z(Math.PI),STAND_UP=quat.x(Math.PI/2),k=WORLD_SCALE,world3=e=>[e[0]*k,e[1]*k,e[2]*k],seeded=e=>{const o=43758.5453*Math.sin(127.1*e+311.7);return o-Math.floor(o)},shade=(e,o,t=1)=>{const[s,a,i,n]=toColor(e);return[s*t,a*t,i*t,n??1]};export const laneY=(e,o)=>(o-(TOTAL_LANES-1)/2)*e.laneH;export const laneTop=e=>"road"===LANE_TYPES[Math.round(e)]?-1.6:0;export const worldX=(e,o)=>o-e.width/2;function spawnGround(e,o,t,s,a){const i=[],n=o=>i.push(e.spawn({pickable:!1,parent:a,...o})),l=2*Math.ceil((o.width+12*o.tile)/o.tile/2),r=l*o.tile,p=TOTAL_LANES*o.laneH;n({mesh:"cube",position:[0,0,-6.2],scale:[3*r,4*p,8],color:shade(COLORS.GRASS_DARK,0,.9)});const d=e=>-r/2+e*o.tile+o.tile/2;for(let e=0;e<TOTAL_LANES;e++){const a=laneY(o,e);if("road"===LANE_TYPES[e]){for(let t=0;t<l;t+=2)n({mesh:"cube",position:[d(t)+o.tile/2,a,-5.6],scale:[2*o.tile+.2,o.laneH,8],color:shade(COLORS.ROAD,0,.96+.06*seeded(3.1*e+t))});for(const e of[-1,1])n({mesh:"cube",position:[0,a+e*(o.laneH/2-3),-1.55],scale:[r,1.6,.1],color:shade(COLORS.LINE,0,.9)});for(let e=0;e<l;e++)n({mesh:"cube",position:[d(e),a,-1.54],scale:[.45*o.tile,1.8,.12],color:shade(COLORS.LINE,0,.85)});for(const t of[-1,1])"grass"===LANE_TYPES[e+t]&&n({mesh:"cube",position:[0,a+t*(o.laneH/2-.4),(.9-1.6)/2],scale:[r,3.6,2.5],color:shade(COLORS.CURB)});continue}const i=e%2==0?COLORS.GRASS_LIGHT:COLORS.GRASS_DARK;for(let t=0;t<l;t+=2)n({mesh:"cube",position:[d(t)+o.tile/2,a,-4],scale:[2*o.tile+.2,o.laneH,8],color:shade(i,0,.95+.12*seeded(7.7*e+1.3*t))});for(let e=0;e<COLS;e++)n({mesh:"cube",position:[worldX(o,colX(o,e)),a,.08],scale:[.42*o.tile,.34*o.laneH,.16],color:shade("#C8DF99",0,.94)});if(e===TOTAL_LANES-1)for(let e=0;e<2*COLS;e++)for(let t=0;t<2;t++)n({mesh:"cube",position:[-o.gridW/2+(e+.5)*o.tile/2,a-.36*o.laneH+t*o.laneH*.12,.15],scale:[o.tile/2,.12*o.laneH,.2],color:shade((e+t)%2?"#F8F6E9":"#34434A")});for(const e of[-1,1]){const t=e*(o.gridW/2+.85*o.tile),i=.075*o.tile;n({mesh:"cube",position:[t,a,.65*o.tile],scale:[i,i,1.3*o.tile],color:shade("#56676A")}),n({mesh:"cube",position:[t,a,1.33*o.tile],scale:[.26*o.tile,.26*o.tile,.13*o.tile],color:s?[2,1.65,.9,1]:[.98,.92,.71,1]}),n({mesh:"cube",position:[t,a,1.44*o.tile],scale:[.34*o.tile,.34*o.tile,.08*o.tile],color:shade("#45565A")})}for(let s=0;s<l;s++){const i=d(s);if(Math.abs(i)>o.gridW/2+.2*o.tile&&seeded(5.3*e+1.7*s)>.4){const l=seeded(2.9*e+4.1*s),r=(seeded(3*s+e)-.5)*o.tile*.3,p=(seeded(5*e+s)-.5)*o.laneH*.3;n(l<.7?{mesh:t.tree,position:[i+r,a+p,0],rotation:quat.z(seeded(s+9*e)*Math.PI/2),scale:o.tile*(.95+.45*seeded(e+2.1*s)),color:shade("#FFFFFF",0,.9+.15*seeded(s+e))}:l<.88?{mesh:t.bush,position:[i+r,a+p,0],scale:.85*o.tile,color:shade(COLORS.BUSH)}:{mesh:t.rock,position:[i+r,a+p,0],rotation:quat.z(3*seeded(e+7*s)),scale:[.7*o.tile,.5*o.tile,.75*o.tile],color:shade(COLORS.ROCK,0,.85+.2*seeded(5*s+e))});continue}if(seeded(13.1*e+3.7*s)>.62){const t=.14*o.tile;n({mesh:"cone",position:[i+(seeded(2*s+e)-.5)*o.tile*.3,a+(seeded(e+s)-.5)*o.laneH*.5,t/2],rotation:STAND_UP,scale:[t,t,t],color:shade(COLORS.GRASS_TUFT)})}if(seeded(7.3*e+9.1*s+5)>.9){const t=COLORS.FLOWERS[Math.floor(seeded(e+2*s)*COLORS.FLOWERS.length)],l=i+(seeded(e+3*s)-.5)*o.tile*.2,r=a+(seeded(2*e+s)-.5)*o.laneH*.5;n({mesh:"sphere",position:[l,r,1.5],scale:4.6,color:shade(t)}),n({mesh:"sphere",position:[l,r,2.6],scale:2.4,color:shade("#FFD93D")})}}}return i}function spawnVehicle(e,o,t,s,a,i){const n=e.spawn({mesh:"none",parent:i,rotation:s.speed>=0?FACE_RIGHT:FACE_LEFT,scale:[s.width,.66*o.tile,o.tile],pickable:!1}),l=t.vehicles[s.style],r=toColor(COLORS.CAR_COLORS[s.colorIndex]??COLORS.CAR_COLORS[0]);return e.spawn({mesh:l.body,parent:n,color:r,pickable:!1}),e.spawn({mesh:l.details,parent:n,pickable:!1}),e.spawn({mesh:l.lights,parent:n,color:a?[1.8,1.8,1.8,1]:[1,1,1,1],pickable:!1}),n}export function placeVehicles(e,o,t,s){const a=e.transforms;for(const e of s){const s=t.vehicles.get(e.id);null!=s&&a.position(s,worldX(o,e.x),laneY(o,e.row),laneTop(e.row))}a.flush()}function spawnPlayer(e,o,t){const s=e.spawn({mesh:"none",parent:t,pickable:!1}),a=e.spawn({mesh:"none",parent:s,pickable:!1}),i=e.spawn({mesh:"none",parent:a,scale:o.tile*PERSON.SCALE,pickable:!1}),n=pedestrianMeshes();e.spawn({mesh:n.torso,parent:i,pickable:!1});const l=[-1,1].map(o=>e.spawn({mesh:n.arm,parent:i,position:[.235*o,0,1.4],pickable:!1})),r=[-1,1].map(o=>e.spawn({mesh:n.leg,parent:i,position:[.105*o,0,.87],pickable:!1})),p=r.map(o=>e.spawn({mesh:n.shoe,parent:o,position:[0,-.01,-.72],pickable:!1}));return{root:s,body:a,arms:l,legs:r,feet:p}}function restLimbs(e,o){for(const t of[...o.arms,...o.legs,...o.feet])e.stopAnimation(t),e.set(t,{rotation:FACE_RIGHT});o.legs.forEach((o,t)=>e.set(o,{position:[.105*(0===t?-1:1),0,.87]}))}export function placePlayer(e,o,t,s,a){e.stopAnimation(t.player.root),e.stopAnimation(t.player.body),restLimbs(e,t.player),e.set(t.player.root,{position:[worldX(o,colX(o,a)),laneY(o,s),laneTop(s)],rotation:FACE_RIGHT}),e.set(t.player.body,{scale:1,rotation:[0,0,0,1],position:[0,0,0]})}export function hop(e,o,t,s,a,i){const n=[worldX(o,colX(o,s[1])),laneY(o,s[0]),laneTop(s[0])],l=[worldX(o,colX(o,a[1])),laneY(o,a[0]),laneTop(a[0])],r={up:0,down:Math.PI,left:Math.PI/2,right:-Math.PI/2}[i];e.stopAnimation(t.player.root),e.set(t.player.root,{position:n,rotation:quat.z(r)}),e.animate(t.player.root,{position:l},{duration:MOVE_TIME,easing:"linear"});const p={duration:MOVE_TIME,easing:"linear"};t.player.legs.forEach((o,s)=>{const a=PERSON.STRIDE*(0===s?1:-1),i=.105*(0===s?-1:1),n=[i,0,.87];e.animate(o,[{rotation:quat.x(a),position:[i,0,.87+(a>0?.12:0)],at:.25},{rotation:FACE_RIGHT,position:n,at:.5},{rotation:quat.x(-a),position:[i,0,.87+(a<0?.12:0)],at:.75},{rotation:FACE_RIGHT,position:n}],p),e.animate(t.player.feet[s],[{rotation:quat.x(-a),at:.25},{rotation:FACE_RIGHT,at:.5},{rotation:quat.x(a),at:.75},{rotation:FACE_RIGHT}],p)}),t.player.arms.forEach((o,t)=>{const s=-PERSON.STRIDE*(0===t?1:-1)*.8;e.animate(o,[{rotation:quat.x(s),at:.25},{rotation:FACE_RIGHT,at:.5},{rotation:quat.x(-s),at:.75},{rotation:FACE_RIGHT}],p)});const d=.72*(1-Math.cos(PERSON.STRIDE))*o.tile*PERSON.SCALE;e.animate(t.player.body,[{position:[0,0,-d],at:.25},{position:[0,0,0],at:.5},{position:[0,0,-d],at:.75},{position:[0,0,0]}],p)}export function stumble(e,o,t,s,a){restLimbs(e,t.player),e.animate(t.player.body,{rotation:quat.x(1.25),position:[0,0,.05*o.tile]},{duration:.24,easing:"easeOut"}),effects.shatter(e,{position:world3([worldX(o,colX(o,a)),laneY(o,s),laneTop(s)+.3*o.tile]),count:10,size:.08*o.tile*k,speed:3*o.tile*k,lifetime:.6,gravity:6*-o.tile*k,colors:[toColor(COLORS.ROAD_LINE),toColor(COLORS.CURB)]})}export function celebrate(e,o,t,s,a){const i=[worldX(o,colX(o,a)),laneY(o,s),laneTop(s)];restLimbs(e,t.player),e.animate(t.player.arms[0],[{rotation:quat.x(-2.5),at:.3},{rotation:quat.x(-2),at:.65},{rotation:FACE_RIGHT}],{duration:.96}),e.set(t.player.root,{position:i}),e.set(t.player.body,{position:[0,0,0]}),effects.confetti(e,{position:world3([i[0],i[1],o.tile]),count:50,size:.12*o.tile*k,speed:6*o.tile*k,lifetime:1.2,gravity:10*-o.tile*k,colors:COLORS.CAR_COLORS.slice(0,4).map(e=>toColor(e))})}export function buildScene(e,o,t,s,a){const i=e.spawn({mesh:"none",scale:k,pickable:!1}),n={root:i,ground:spawnGround(e,o,t,s,i),vehicles:new Map,player:spawnPlayer(e,o,i),night:s};return setTraffic(e,o,t,n,a),n}export function setTraffic(e,o,t,s,a){for(const o of s.vehicles.values())e.despawn(o);s.vehicles.clear();for(const i of a)s.vehicles.set(i.id,spawnVehicle(e,o,t,i,s.night,s.root));placeVehicles(e,o,s,a)}export function removeScene(e,o){e.despawn(o.root)}
@@ -1 +1 @@
1
- "use strict";const _0x13bec5=_0x261c;!function(){const e=_0x261c,t=_0x9f1b();for(;;)try{if(401204==-parseInt(e(269,"MXIt"))/1+parseInt(e(267,"Y!$s"))/2+-parseInt(e(350,"N@N*"))/3+-parseInt(e(333,"OBda"))/4*(-parseInt(e(277,"6*4#"))/5)+-parseInt(e(249,"qGlN"))/6+parseInt(e(307,"Y!$s"))/7*(parseInt(e(334,"wM9p"))/8)+-parseInt(e(286,"NvnT"))/9*(-parseInt(e(323,"#Ozy"))/10))break;t.push(t.shift())}catch(e){t.push(t.shift())}}();import{c as _0x3c497c}from"react/compiler-runtime";import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x2895a4,{useEffect,useRef,useCallback,useMemo,useState}from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useDinoJumpStore,useIsPlaying,useIsGameOver,useIsWin}from"./DinoJumpStore.js";import{GameBackground}from"./components/GameBackground.js";import{GameArea}from"./components/GameArea.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameControlButton,GameOverModal,ParticleBlast}from"../../helpers/index.js";import{GameSettingsModal}from"../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";function _0x261c(e,t){e-=241;const o=_0x9f1b();let n=o[e];if(void 0===_0x261c.CTVDZG){const e=function(e,t){let o,n,r=[],s=0,W="";for(e=function(e){let t="",o="";for(let o,n,r=0,s=0;n=e.charAt(s++);~n&&(o=r%4?64*o+n:n,r++%4)?t+=String.fromCharCode(255&o>>(-2*r&6)):0)n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(n);for(let e=0,n=t.length;e<n;e++)o+="%"+("00"+t.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(o)}(e),n=0;n<256;n++)r[n]=n;for(n=0;n<256;n++)s=(s+r[n]+t.charCodeAt(n%t.length))%256,o=r[n],r[n]=r[s],r[s]=o;n=0,s=0;for(let t=0;t<e.length;t++)n=(n+1)%256,s=(s+r[n])%256,o=r[n],r[n]=r[s],r[s]=o,W+=String.fromCharCode(e.charCodeAt(t)^r[(r[n]+r[s])%256]);return W};_0x261c.QCVVQi=e,_0x261c.gXOOfm={},_0x261c.CTVDZG=!0}const r=o[0];_0x261c.IAOAmA!==r&&(_0x261c.gXOOfm={},_0x261c.IAOAmA=r);const s=_0x261c.gXOOfm[e];return void 0===s?(void 0===_0x261c.NFJYRF&&(_0x261c.NFJYRF=!0),n=_0x261c.QCVVQi(n,t),_0x261c.gXOOfm[e]=n):n=s,n}import{playHaptic,HapticType}from"../../services/HapticsService.js";import{jsx as _0x3a60b6,Fragment as _0x13b7a3,jsxs as _0x2fdbb7}from"react/jsx-runtime";const BLAST_COLORS=[_0x13bec5(343,"lZ]l"),_0x13bec5(326,"MXIt"),_0x13bec5(287,"nlic"),_0x13bec5(330,"#$[T"),_0x13bec5(348,"bqq3")],MemoizedBlast=_0x2895a4.memo(e=>{const t=_0x13bec5,o={SeOXU:function(e,t){return e(t)},dPvgK:function(e,t){return e!==t},yPIqf:function(e,t){return e!==t}},n=_0x3c497c(7),{blast:r,onComplete:s}=e;let W;n[0]!==r.id||o[t(266,"[lzb")](n[1],s)?(W=()=>{o[t(329,"CA0F")](s,r.id)},n[0]=r.id,n[1]=s,n[2]=W):W=n[2];const a=W;let i;if(n[3]!==r.x||n[4]!==r.y||o[t(276,"fn0(")](n[5],a)){const e={};e.x=r.x,e.y=r.y,e.particleCount=5,e[t(299,"1$e(")]=BLAST_COLORS,e[t(252,"Y!$s")]=400,e[t(242,"p[1B")]=a,i=_0x3a60b6(ParticleBlast,e),n[3]=r.x,n[4]=r.y,n[5]=a,n[6]=i}else i=n[6];return i});MemoizedBlast[_0x13bec5(247,"p&pM")]=_0x13bec5(254,"#Ozy");const CollisionBlastsLayer=_0x2895a4.memo(()=>{const e=_0x13bec5,t={};t[e(293,"lZ]l")]=function(e,t){return e===t},t[e(339,"cGMY")]=function(e,t){return e!==t};const o=t,n=_0x3c497c(8);let r;o.qsPFH(n[0],Symbol[e(294,"DpfS")](e(352,"Y!$s")))?(r=[],n[0]=r):r=n[0];const[s,W]=useState(r);let a,i;o[e(342,"tL24")](n[1],Symbol[e(300,"MXIt")]("react.memo_cache_sentinel"))?(a=()=>useDinoJumpStore[e(315,"*gw4")](_temp,e=>W(e)),i=[],n[1]=a,n[2]=i):(a=n[1],i=n[2]),useEffect(a,i);const m=_temp2;if(0===s[e(278,"Wr@a")])return null;let u,S;if(o[e(324,"tL24")](n[3],s)){let t;n[5]===Symbol[e(306,"z2R&")](e(253,"fn0("))?(t=e=>_0x3a60b6(MemoizedBlast,{blast:e,onComplete:m},e.id),n[5]=t):t=n[5],u=s[e(245,"!dFw")](t),n[3]=s,n[4]=u}else u=n[4];if(n[6]!==u){const t={};t[e(332,"tL24")]=u,S=_0x3a60b6(_0x13b7a3,t),n[6]=u,n[7]=S}else S=n[7];return S});CollisionBlastsLayer.displayName=_0x13bec5(246,"6*4#");export const DinoJump=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:t,onEndGame:o,onReplayGame:n,onShare:r,onShareScreenshot:s,onShowLeaderboard:W,bannerAd:a})=>{const i=_0x13bec5,m={szTRR:i(284,"lZ]l"),efQXJ:function(e,t,o){return e(t,o)},INkVZ:function(e,t,o){return e(t,o)},VUqrh:function(e,t){return e!==t},iReTe:function(e){return e()},Nywie:function(e){return e()},eIBDI:function(e){return e()},BlpvB:function(e,t){return e(t)},zkBqm:function(e,t,o){return e(t,o)},pyomT:function(e,t,o){return e(t,o)},gKkoP:function(e,t,o){return e(t,o)},WYhbm:function(e,t,o){return e(t,o)}},u=m[i(255,"Wr@a")](useIsPlaying),S=m[i(273,"XFP#")](useIsGameOver),d=m[i(279,"p[1B")](useIsWin),l=useRef(!1),f=m[i(309,"#$[T")](useRef,o);f[i(288,"[O17")]=o;const p=e?.[i(322,"Hfik")]??0;useEffect(()=>{useDinoJumpStore.getState().setOffset(p)},[p]),m[i(336,"9%7w")](useEffect,()=>{const e=i;return useDinoJumpStore.getState()[e(244,"BN3Z")](),()=>{const t=e,o=useDinoJumpStore.getState();o.isPlaying&&!l.current&&x(m[t(251,"qGlN")],o.score),useDinoJumpStore[t(259,"p&pM")]()[t(351,"tL24")]()}},[]);const x=useCallback((e,t)=>{const o=i;f[o(283,"NvnT")]&&!l[o(248,"wM9p")]&&(f[o(305,"qGlN")]({status:e,score:t[o(311,"cGMY")]()}),l[o(320,"cGMY")]=!0)},[]);useEffect(()=>{const e=i;if(e(337,"fn0(")===e(270,"tL24"))_0x19d4ec=_0x5d1812[4];else{if(S&&!l[e(345,"b$cY")]){const t=useDinoJumpStore[e(317,"ivQ[")]()[e(327,"Wr@a")];x(d?"win":"lose",t)}!S&&(l[e(280,"#Ozy")]=!1)}},[S,d]);const C=useRef(e);C[i(328,"g!1M")]=e;const O=m[i(312,"Hfik")](useCallback,()=>{const e=i;l[e(265,"tL24")]=!1,useDinoJumpStore.getState()[e(331,"9%7w")](C[e(282,"axO1")]),m[e(295,"bqq3")](playSound,GAME_SOUNDS[e(296,"nlic")][e(261,"qGlN")],C[e(283,"NvnT")][e(302,"9%7w")]),playHaptic(HapticType[e(347,"bqq3")],C.current[e(256,"4FFT")])},[]),_=m[i(290,"4FFT")](useCallback,()=>{const e=i,t=useDinoJumpStore[e(314,"XFP#")]()[e(321,"axO1")];m[e(271,"mqIe")](x,e(272,"NvnT"),t),useDinoJumpStore.getState()[e(291,"z2R&")]()},[x]),G=useCallback(()=>{const e=i;m[e(292,"3@y1")](e(303,"p[1B"),e(318,"9%7w"))?_0x51211e.getState().setOffset(_0x59ab3a):(n?.(),l[e(313,"DpfS")]=!1,useDinoJumpStore[e(258,"NvnT")]()[e(353,"8oEi")](),playHaptic(HapticType[e(310,"CA0F")],C[e(248,"wM9p")][e(349,"p&pM")]))},[n]),k=useMemo(()=>({isPlaying:u,gameOver:S,onStartGame:O,onStopGame:_,onShare:r,onShowLeaderboard:W,startButtonSubtext:i(319,"XFP#")}),[u,S,O,_,r,W]),b=m[i(262,"axO1")](useMemo,()=>{const e=i;return S?useDinoJumpStore[e(344,")VG[")]()[e(297,"85vF")]:0},[S]),R=useMemo(()=>({isVisible:S,score:b,onPlayAgain:G,buttonText:i(325,"OBda"),title:d?"YOU SURVIVED!":i(268,"6*4#"),message:d?i(281,"fn0("):i(316,"CA0F")}),[S,b,G,d]),g=m[i(241,"N@N*")](useMemo,()=>({gameId:GAME_IDS[i(301,"*gw4")],settings:e,onSettingsChange:t}),[e,t]),y={};y[i(243,"#$[T")]=e;const I={...k},q={...R};q[i(263,"lZ]l")]=s,q[i(257,"N@N*")]=a;const B={...g};return _0x3a60b6(GestureHandlerRootView,{style:styles[i(289,"^6IA")],children:_0x2fdbb7(GameBackground,{offset:p,children:[m[i(346,"85vF")](_0x3a60b6,GameArea,y),_0x3a60b6(CollisionBlastsLayer,{}),_0x3a60b6(ScoreBoard,{offset:p}),_0x3a60b6(GameControlButton,I),_0x3a60b6(GameOverModal,q),m[i(285,"QwTg")](_0x3a60b6,GameSettingsModal,B)]})})};const _0x2754da={};_0x2754da[_0x13bec5(304,"#$[T")]=1,_0x2754da[_0x13bec5(308,"g!1M")]=BACKGROUND_COLOR;const _0x5ed0ee={};_0x5ed0ee.container=_0x2754da;const styles=StyleSheet.create(_0x5ed0ee);function _temp(e){return e.collisionBlasts}function _temp2(e){const t=_0x13bec5;useDinoJumpStore[t(298,"nlic")]()[t(250,")VG[")](e)}function _0x9f1b(){const e=["WQZdNZ0jiKFcSmorESoXW4e","W6xcGezlFW","mCoAB8kJW5G","FJjypZhcPxjc","yCkJwmkslW","buRcU8kbWPxdS05jCGD5fCoa","WOjGCmk4uaKGWQ0","W40vbCoWW7K","W45zWPNcQfVcO8kn","oSolWRlcKeyMDMO","WRVdIftdGConWQtcMG","qSoGWPjdrq","W77cM0X9W7tdNW","WPdcNtX2WPNdKY4","W4ezlmk6WOdcNSoIcCoJWQVcNColCa","wSkTpZXOsCkyW5ldRZdcHY7dRG","W44djSotW4u5kefv","W5ZdISoFWOFcRdyItI4tWODxpSomcdhdR8krWPJcQvGFWO/dGSoc","gSo8W6vYhNesnM8","gmoLzwCk","wgRdIImis8kMW7xcMrC","WPbRtGmOrSkpaW","W7CxW65vCG0/WOmGFu7dJCoMWOe","p8oIbG","b8kLW5nfueuBWO8/WPPTWPCeWQ/cVsDaW4FdUte","W4aEpSkOWOdcMSotjSoYWRlcKq","q3pdJr0HCsi","vCkLy8otvmoVW7WPgmkUW7RcOmkA","l8olWQVcReqIqwaxWQimg1pcSdDyW5j5zNC","eSoTbCk1nq","W4RdMSomWOxcRheGrq","iSoPrSkuW4tdOCoAtSoRW4itW7/cJCkhWQ8WyCkGW7tcNsxcKGhdIrS","ivtcMSk2W6KcWROFEqxdNa5J","m8kHW5hdSmop","jmo0WPNcV2xdPvRdHKfuqCoRwG","cSo9zgq7cSoQW5O","EvhdQmogxatcQru","W4msoCklWPJcMSoEdq","W4XZWPzrFqWUWQm","mSodemk1mW","W7OAD8k0BG","WOicWO7dTh/dOSoF","ACoaWOhcKmkFvfBdQCoxW4O9WP4","W58tj8oeW5qqpq","bbCjlSoX","WP/cMSkjW5FdQsf7Bay4WPLSnW","a8klW7jSgxKKWQud","bH8AiSkAWRVdL8kqhJhdHSkb","W7ypmCofW5O","wNHmW5bM","FvxdSSo2tqK","wmozACoLWRy","etdcIL59j2BcL2HQW6RcGmoY","WPSSWQXwwGq1WRSTAmot","kCoCBSkgW5y","D8o+WOyAcxKZWRGxWOLR","nSkwW5RdG8oEcW","uK3dIWGS","d0tcHCkRW6uwWQS","f8o+qSkwW4tdR8ofxSoOW4mLW7lcI8of","W5aHBSkqur0X","FuhdRSoNtqVcQq","WO4nWRpdV3VdVa","BqjEmHy","lqldLCoIyWZcVYy","WRNdIw7dSgBdI8ka","WR3cNSoyWPBcJKfC","DY0pW7RdKZZcVsrS","mCoJWPFcSf0","gH9dbfmkWQpcHG","b1pdVCosmG","WPWFWO3dMLy","WOiira","W5BcUfLSW6S","W57cUglcIh3cT8oJWQBdNa","vSoiWPzECa","W73cLfJcLfBcNmocWO4","WPWQWRnjrby","u0nD","q3/dISoSWQeUW6RcIr4","W7RcHwvyFM3cOSoMsCooW4/cNG","FvtdUaqY","WOvIxW8","aSoIi8kvaSk4WRG","dWrE","WP/cM8osWR7cVgiQya","cGyWW7K3WQ7dTdpdOCkPhSoeW6ZcRYC","WQfIsGed","l1jBxmkD","qCkDCCkwoCkOWQtcUq","W6xdRN7cU8kL","WOCsrh7cKCkLsW","CCofASoFWQFdOeOB","DepdPSoqWP0wW5BcPIS","oNrPnmkHW5e9WPBcMv7dJtBdKee0mCoGxCorva","WQj8W5bJWRtdVCkSfW","W5xcU3vYrq","qSobBSkSWQFdRH4upSoJrSkTWOvgW6HJAx7cGSk+W6GGWQG","vSkhumkqlSkVWR4","W4a3C8kquq","W6/dRKNcKmkkqG","xqFdGSoOWRLaW68RyqxdRrHv","W6G3l8ogW5u","W4KWWOhcGhDYWOdcMg/dQW","fHTUimoTWRNcUW","kCkqW5VdLSop","cXiHW6a1WRldRW","mh5ttmkC","W4bpde4demkP","W6ZcN2vizK/cKmoKwq","W58opmoAW5umlei","WQP0W5NdILPDWO3cLK4","eJBcJfDWkMdcTKfLW7dcRCow"];return(_0x9f1b=function(){return e})()}DinoJump[_0x13bec5(275,"1$e(")]=_0x13bec5(338,"QwTg");
1
+ "use strict";import{useMemo}from"react";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{livesColumn,scoreColumn,timerColumn}from"../shared/EngineHud.js";import{backgroundFor,lightFor}from"../shared/EngineMeadow.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,LIVES,TIME_LIMIT}from"./DinoJumpConstants.js";import{createGame,dispose,jump,reset,setLayout,setTheme,start,tick}from"./DinoJumpGame.js";import{jsx as _0x528447}from"react/jsx-runtime";const SFX=GAME_SOUNDS.DINO_JUMP,formatScore=e=>e.toLocaleString();export const DinoJump=engineGame(GAME_IDS.DINO_JUMP,e=>{const[t,r]=useLiveState(0),[o,s]=useLiveState(LIVES),[i,n]=useLiveState(TIME_LIMIT),{theme:a,status:m,screen:u,gameOver:S}=useEngineGame(e,{gameId:GAME_IDS.DINO_JUMP,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,o)=>setLayout(e,getLayout(t,r,o)),drag:(e,{phase:t})=>{"start"===t&&jump(e)},sounds:SFX,onStart:e=>e(SFX.START,HapticType.MEDIUM),onPlayAgain:e=>e(null,HapticType.LIGHT),onOver:(e,t)=>e("win"===t?SFX.WIN:SFX.GAME_OVER,"win"===t?HapticType.SUCCESS:HapticType.ERROR),wire:(e,t)=>{e.onScore=r,e.onLives=s,e.onTime=n,e.onJump=()=>t(SFX.JUMP,HapticType.LIGHT),e.onCollect=()=>t(SFX.COLLECT,HapticType.SUCCESS),e.onHit=()=>t(SFX.HIT,HapticType.HEAVY)}}),p=useMemo(()=>lightFor(a),[a]),E=useMemo(()=>backgroundFor(a),[a]);return _0x528447(EngineGameScreen,{...u,light:p,background:E,columns:[scoreColumn(t,"SCORE",formatScore),livesColumn(o,LIVES),timerColumn(i,a)],subtext:"Jump over the cacti!",gameOver:S({title:"win"===m?"YOU SURVIVED!":"GAME OVER",message:"win"===m?"Great running!":"You hit an obstacle!",scoreLabel:"Final Score",score:t,buttonText:"Run Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x449bdd=_0x1b73;!function(){const d="xrSO",x=_0x1b73,W=_0x4d05();for(;;)try{if(530328==-parseInt(x(322,"&K6O"))/1*(-parseInt(x(331,d))/2)+parseInt(x(342,"$TX$"))/3*(-parseInt(x(353,"sg6h"))/4)+-parseInt(x(369,"#Vb*"))/5+-parseInt(x(333,"h^D["))/6*(-parseInt(x(307,"IPbu"))/7)+-parseInt(x(326,d))/8+parseInt(x(316,"^gCs"))/9+parseInt(x(306,")Lk&"))/10*(-parseInt(x(366,"We1E"))/11))break;W.push(W.shift())}catch(d){W.push(W.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions}from"../../services/UtilsService.js";const{height:height,screenWidth:screenWidth}=getGameDimensions(),_0x11c01a={};_0x11c01a[_0x449bdd(332,"A#v^")]=1.4,_0x11c01a[_0x449bdd(370,"3&j%")]=-28,_0x11c01a[_0x449bdd(363,"qYx1")]=6,_0x11c01a.baseScore=1,_0x11c01a.scoreMultiplier=1.5,_0x11c01a[_0x449bdd(343,"JNl2")]=.001,_0x11c01a.maxSpeed=12,_0x11c01a[_0x449bdd(315,"KX[C")]=120,_0x11c01a[_0x449bdd(330,"sg6h")]=3,_0x11c01a[_0x449bdd(336,"h^D[")]=3;export const DINO_JUMP_CONSTANTS=_0x11c01a;const _0x64d34b={};_0x64d34b.SCREEN_WIDTH=screenWidth,_0x64d34b[_0x449bdd(323,"xrSO")]=height,_0x64d34b[_0x449bdd(320,"Y5z@")]=150,_0x64d34b[_0x449bdd(329,"8yVY")]=70,_0x64d34b[_0x449bdd(340,"@lrN")]=75,_0x64d34b[_0x449bdd(351,"We1E")]=50,_0x64d34b[_0x449bdd(361,"hxPb")]=20,_0x64d34b[_0x449bdd(338,"$TX$")]=40,_0x64d34b[_0x449bdd(364,"d)eN")]=600,_0x64d34b[_0x449bdd(355,"b#Bk")]=120,_0x64d34b.PHYSICS_FRAME_RATE=60,_0x64d34b[_0x449bdd(309,"1Okg")]=2e3,_0x64d34b[_0x449bdd(349,"T4En")]=600,_0x64d34b[_0x449bdd(379,"G!Bj")]=4;export const DINO_JUMP_GAME_CONFIG=_0x64d34b;function _0x1b73(d,x){d-=305;const W=_0x4d05();let _=W[d];if(void 0===_0x1b73.sysTHn){const d=function(d,x){let W,_,o=[],e=0,b="";for(d=function(d){let x="",W="";for(let W,_,o=0,e=0;_=d.charAt(e++);~_&&(W=o%4?64*W+_:_,o++%4)?x+=String.fromCharCode(255&W>>(-2*o&6)):0)_="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(_);for(let d=0,_=x.length;d<_;d++)W+="%"+("00"+x.charCodeAt(d).toString(16)).slice(-2);return decodeURIComponent(W)}(d),_=0;_<256;_++)o[_]=_;for(_=0;_<256;_++)e=(e+o[_]+x.charCodeAt(_%x.length))%256,W=o[_],o[_]=o[e],o[e]=W;_=0,e=0;for(let x=0;x<d.length;x++)_=(_+1)%256,e=(e+o[_])%256,W=o[_],o[_]=o[e],o[e]=W,b+=String.fromCharCode(d.charCodeAt(x)^o[(o[_]+o[e])%256]);return b};_0x1b73.NSheup=d,_0x1b73.rfljps={},_0x1b73.sysTHn=!0}const o=W[0];_0x1b73.dMOFOU!==o&&(_0x1b73.rfljps={},_0x1b73.dMOFOU=o);const e=_0x1b73.rfljps[d];return void 0===e?(void 0===_0x1b73.vxOrzE&&(_0x1b73.vxOrzE=!0),_=_0x1b73.NSheup(_,x),_0x1b73.rfljps[d]=_):_=e,_}export const getGroundHeight=(d=0)=>d>0?150:250;export const getGroundY=(d=0)=>height-getGroundHeight(d);const _0x50b084={damping:15};_0x50b084[_0x449bdd(356,"E3Qs")]=300,_0x50b084[_0x449bdd(328,"&K6O")]=1;const _0x20b660={};_0x20b660[_0x449bdd(341,"d)eN")]=3e3;const _0x545f4d={};_0x545f4d[_0x449bdd(319,"5nP(")]=200,_0x545f4d.intensity=.1;const _0x3614ad={};function _0x4d05(){const d=["nNbrW7/dHCkPW75Wxq","fxpdLCoEB8o4fGtcICk/W4nHW6FdKHa2W60EcHuDbSoT","WO5lWQtdM8kuFmk2","n094jCkapmktnmkCiCoaW4e","WPxdPw9Smmo2W5jfpSoMtgK","WRSUWOPeBSkxsCokW6TwW7Wk","W5OCW75GWQy2W7mFagj8W6eO","WRW4W64OW5RdTLnQW5m","ymoYjCoeWQXC","cmktW6FcI0RdPePUW5OtptHYW57cK8oE","vSkpWOu6WRtdSMrq","WQHkzeq+W6VdSW","o2rrW6RdV8k3W7W","WOldOxrSoSo1W59amSo1wxu","Cu1JBJJcVSok","iZrbW7tdVColcCoEvejpfx3dTmk4C8kgdq","WPfVW4FcTHVcSZf5lb8XlSofoarHW7lcHmk3","jCkgWONcTG","i8kZEgr3WR5MCSos","e8ksx8kKW5CPW4RcHSkqWRpcGmoR","W4vRBmosCf7dGG","WOFdOCkAW7TyW5BcVqPkWRbzW6/cQ8omwSoZsNdcImkKgSowW48","W6RdJ8kIs1rzlaBcSG","WO3dUmoicSkjWP4VW54+W7C","WO5puY1nW5qt","qCo5BmoNW6JcLLVcKZTOW7qH","WPj0qCoeW5VcK3qawxv8W5a","qSkYnW0FWOJcMmkvW6C","iCkcW6dcSwpdM8oss8kPnXpdK8og","vCk6orWMWPlcQSkqW7ldISoCeG","aSoyWRBdK8k2CupdRK/cOG","ASklyX/dRIpdOgS","WPVcQCoDF1vTaYpcJsddISoSEa","ExFdGmk8Bmknga","WRSRWOLpl8oJD8o8W7bx","nmkmWONcT8o1W5xdJclcU8kpWQpcOmkm","AZmxhbtcQCoRfNlcGG","g8oGASoacmoOEW","uCo4W6NdG8kbWQNdHsNcQmkHWQpcGq","yHSTCG","W6D+W40e","W5jPE8ocD1ddHWZdVc/dJmoPWOhdNq","WQ3dSCkJWRddVq","vSo7W6RdISoIW43dLWFcU8kr","smk0ux/cOSopWPK","W7iOWRpdICkVyCkAWPC","WP1yWQu7W71RWQe","pqnEtWafFSkNW4xdR2TF","WQL/WPhdH8k0rmkuWQC","WOZdQSkhW6bgW5/cPajf","d8oBWQBdJmkWyeddVL7cRIf7rKBdMa","wSofg1f5WO1AwSo3wmoajCkVr8kpW6f1uq","WPv8tmoFW53cGx4bs3X1W5xdLSohea","pKtdTmoRwSosns8","C8kRW4tdOSkLtKddTuy","ySkCECo5W742omkWo8oGW4xcICkJW5VcKSoMbq","vCkiW6PnW7tcKJPrW63dOCopcmo7","gx3dICoFASoKgq7cMSkJW4e","W645WPNdNqJcJce","mY3cJmkrW7HbWOSqpCkfwX8mW5xcTItcVGm","W7pcJSkSzSk5WPGwW5ORW5dcMmk4W4ZcU0H+","WPZdSwfOoSoHW5HBpSoGqMpcKW","q8klW6G5WOpcLZ8","qJCcwCoJtmkneCksdW","FSoBjehdOSojta","W7JcOmoNW6hdPmoTWP5jb8kG","W7L6W5b6W7/dTvC","fuPOBshcVmozcL3cPCkxjwK","s8kGnSoKwCoclYTW","zbC+CG","W7pcJSkSzSk5WPGwW5ORW43cHCkNW4q","bmoCWRtdNa","WRO4ed8QW7JdSCoHz8ow","kd9CW6/dR8ojemojvezdeMBdSG","mCkHWQBdUdypWOn2v8otWPa"];return(_0x4d05=function(){return d})()}_0x3614ad[_0x449bdd(337,"1Okg")]=_0x50b084,_0x3614ad[_0x449bdd(358,"#(BX")]=_0x20b660,_0x3614ad[_0x449bdd(347,"A5I3")]=_0x545f4d;export const DINO_JUMP_ANIMATION_CONFIG=_0x3614ad;const _0x12e58b={};_0x12e58b[_0x449bdd(318,"$TX$")]=BACKGROUND_COLOR,_0x12e58b.PRIMARY=PRIMARY_COLOR,_0x12e58b[_0x449bdd(308,"8yVY")]=BACKGROUND_COLOR,_0x12e58b.SKY_BOTTOM=_0x449bdd(374,"^oP!"),_0x12e58b[_0x449bdd(371,"IPbu")]="#FFD93D",_0x12e58b[_0x449bdd(362,"hWJd")]=_0x449bdd(321,"d)eN"),_0x12e58b[_0x449bdd(372,"Jvlq")]="#4ECDC4",_0x12e58b[_0x449bdd(378,"hxPb")]=_0x449bdd(325,"E3Qs"),_0x12e58b.DINOSAUR_OUTLINE=_0x449bdd(346,"FRcF"),_0x12e58b[_0x449bdd(348,"#(BX")]=_0x449bdd(354,"!FjC"),_0x12e58b[_0x449bdd(339,")Lk&")]=_0x449bdd(350,"CR(E"),_0x12e58b.OBSTACLE_OUTLINE=_0x449bdd(352,"vtlv"),_0x12e58b[_0x449bdd(376,"T4En")]=_0x449bdd(312,"Z@Dy"),_0x12e58b.TEXT_SECONDARY="#ECF0F1",_0x12e58b[_0x449bdd(345,"d)eN")]=_0x449bdd(377,"b#Bk"),_0x12e58b[_0x449bdd(335,"V$rU")]="rgba(52, 152, 219, 0.2)";export const DINO_JUMP_COLORS=_0x12e58b;const _0x21399e={};_0x21399e.RUNNING=_0x449bdd(334,"#Vb*"),_0x21399e[_0x449bdd(365,"h^D[")]=_0x449bdd(375,"qYx1"),_0x21399e.DUCKING="ducking",_0x21399e[_0x449bdd(359,"$TX$")]=_0x449bdd(327,"We1E");export const DINOSAUR_STATES=_0x21399e;const _0x5907e6={};_0x5907e6[_0x449bdd(314,"@lrN")]="cactus_small",_0x5907e6[_0x449bdd(367,"T4En")]=_0x449bdd(317,"KX[C"),_0x5907e6[_0x449bdd(305,"xrSO")]=_0x449bdd(357,"We1E");export const OBSTACLE_TYPES=_0x5907e6;
1
+ "use strict";export const TIME_LIMIT=120;export const LIVES=3;export const POINTS_PER_SECOND=200;export const MUSHROOM_POINTS=1e3;export const OBSTACLE_SIZE={cactus_small:{width:35,height:65},cactus_large:{width:45,height:85},mushroom:{width:45,height:65}};export const MUSHROOM_CHANCE=.05;export const SMALL_CHANCE=.5;export const STEP=1/60;export const STEP_TOLERANCE=.002;export const MAX_PENDING=.05;export const GRAVITY=1.4;export const JUMP_FORCE=-28;export const RUN_SPEED=6;export const DINO_X=50;export const DINO_WIDTH=70;export const DINO_HEIGHT=75;export const DINO_HIT_WIDTH=50;export const DINO_HIT_HEIGHT=60;export const MAX_OBSTACLES=5;export const MIN_OBSTACLE_GAP=300;export const REMOVE_X=-100;export const FIRST_OBSTACLE=1.5;export const SPAWN_MIN=2.5;export const SPAWN_SPREAD=2;export const STRIDE_TIME=.16;export const DUST_INTERVAL=.24;const FOV=.9,HORIZON=.6,PLAY_DEPTH=9;export const groundLine=(t,o)=>t-(o>0?150:250);export function rigFor(t,o){const e=Math.tan(.45),n=Math.atan(2*(.6-.5)*e),r=18*e/t;return{eyeHeight:-9*Math.sin(n)-(t/2-groundLine(t,o))*r*Math.cos(n),horizon:.6,playDepth:9}}export const MEADOW={biome:"desert",near:!1,sun:[.8,.22],clouds:[.1,.42]};export const TILE=80;export const getLayout=(t,o,e)=>({width:t,height:o,offset:e,groundY:groundLine(o,e)});
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{at,cameraFor,makeView,pointSize,sceneryTint,spawnWorld}from"../shared/EngineMeadow.js";import{DINO_HIT_HEIGHT,DINO_HIT_WIDTH,DINO_X,DUST_INTERVAL,FIRST_OBSTACLE,GRAVITY,JUMP_FORCE,LIVES,MAX_OBSTACLES,MAX_PENDING,MEADOW,MIN_OBSTACLE_GAP,MUSHROOM_CHANCE,MUSHROOM_POINTS,OBSTACLE_SIZE,POINTS_PER_SECOND,REMOVE_X,rigFor,RUN_SPEED,SMALL_CHANCE,SPAWN_MIN,SPAWN_SPREAD,STEP,STEP_TOLERANCE,TIME_LIMIT}from"./DinoJumpConstants.js";import{cheerDino,dinoCentre,dust,hitBurst,hurtDino,placeDesert,placeDino,placeObstacle,removeDesert,setGait,spawnDesert,spawnDino,spawnObstacle}from"./DinoJumpScene.js";const WORLD_CAPACITY=900;export function createGame(e){const o=new World(900),n={world:o,camera:{eye:[0,1,0],target:[0,1,-1],fov:.9},theme:e,tint:sceneryTint(e),layout:null,view:null,scenery:[],desert:null,dino:null,phase:"ready",get score(){return o.scoreboard.score},get lives(){return o.scoreboard.lives},get timeLeft(){return o.scoreboard.shownSeconds},won:!1,time:0,pending:0,jumpY:0,velocity:0,jumping:!1,scroll:0,dustTimer:0,obstacles:[],onPhase:e=>{},onScore:e=>{},onLives:e=>{},onTime:e=>{},onJump:()=>{},onHit:e=>{},onCollect:()=>{}};return o.scoreboard.reset(LIVES,TIME_LIMIT),o.scoreboard.handlers={onSecond:e=>{"playing"===n.phase&&(n.onTime(e),n.onScore(o.scoreboard.add(POINTS_PER_SECOND)))},onTimeUp:()=>"playing"===n.phase&&end(n,!0)},n}const after=(e,o,n)=>e.world.after(o,n);export function setLayout(e,o){const n=e.world;for(const o of e.scenery)n.despawn(o);e.desert&&removeDesert(n,e.desert),e.dino&&n.despawn(e.dino.root),clearObstacles(e),e.layout=o;const t=makeView(o.width,o.height,rigFor(o.height,o.offset));e.view=t;const r=cameraFor(t);e.camera.eye=r.eye,e.camera.target=r.target,e.camera.fov=r.fov,buildScenery(e),e.dino=spawnDino(n,t,dinoCentre(DINO_X),o.groundY+e.jumpY,e.tint),setGait(n,t,e.dino,"playing"===e.phase?e.jumping?"air":"run":"stand")}function buildScenery(e){const o=e.view,n=e.layout;e.scenery=spawnWorld(e.world,o,e.theme,MEADOW),e.desert=spawnDesert(e.world,e.theme,-at(o,0,n.groundY)[2]),placeDesert(e.world,e.desert,e.scroll*pointSize(o))}export function setTheme(e,o){if((o!==e.theme||!e.scenery.length)&&(e.theme=o,e.tint=sceneryTint(o),e.view&&e.layout&&!e.world.isDisposed)){for(const o of e.scenery)e.world.despawn(o);if(e.desert&&removeDesert(e.world,e.desert),buildScenery(e),e.dino)for(const o of[e.dino.body,e.dino.near,e.dino.far])e.world.set(o,{color:e.tint});for(const o of e.obstacles)e.world.set(o.root,{color:e.tint})}}function clearObstacles(e){for(const o of e.obstacles)e.world.despawn(o.root);e.obstacles=[]}export function start(e){"ready"===e.phase&&e.view&&(e.jumpY=0,e.velocity=0,e.jumping=!1,e.pending=0,e.phase="playing",e.world.scoreboard.startCountdown(TIME_LIMIT),e.dino&&setGait(e.world,e.view,e.dino,"run"),drawDino(e),e.onPhase("playing"),after(e,FIRST_OBSTACLE,()=>spawnLoop(e)))}function spawnLoop(e){"playing"===e.phase&&(spawn(e),after(e,SPAWN_MIN+Math.random()*SPAWN_SPREAD,()=>spawnLoop(e)))}function spawn(e){const o=e.layout,n=e.view;if(!o||!n||e.obstacles.length>=MAX_OBSTACLES)return;if(e.obstacles.some(e=>e.x>o.width-MIN_OBSTACLE_GAP))return;const t=Math.random(),r=t<MUSHROOM_CHANCE?"mushroom":t<MUSHROOM_CHANCE+SMALL_CHANCE?"cactus_small":"cactus_large";e.obstacles.push({kind:r,x:o.width,root:spawnObstacle(e.world,n,o,r,o.width,e.tint)})}export function reset(e){e.world.cancelTimers(),clearObstacles(e),e.jumpY=0,e.velocity=0,e.jumping=!1,e.pending=0,e.world.scoreboard.reset(LIVES,TIME_LIMIT),e.won=!1,e.phase="ready",e.dino&&e.view&&setGait(e.world,e.view,e.dino,"stand"),drawDino(e),e.onScore(0),e.onLives(LIVES),e.onTime(TIME_LIMIT),e.onPhase("ready")}export function dispose(e){e.world.cancelTimers(),e.world.dispose()}function end(e,o){e.world.scoreboard.stop(),e.world.cancelTimers(),e.won=o,e.phase="over",e.dino&&e.view&&setGait(e.world,e.view,e.dino,e.jumping?"air":"stand"),e.onPhase("over")}export function tick(e,o){if(!e.world.isDisposed){if(e.time+=o,"playing"===e.phase){e.pending=Math.min(e.pending+o,MAX_PENDING);let n=!1;for(;e.pending>=STEP-STEP_TOLERANCE&&"playing"===e.phase;)e.pending-=STEP,step(e),n=!0;n&&draw(e),e.dustTimer+=o,"playing"===e.phase&&!e.jumping&&e.dustTimer>=DUST_INTERVAL&&e.view&&e.layout&&(e.dustTimer=0,dust(e.world,e.view,DINO_X+12,e.layout.groundY,!1))}e.world.update(o)}}export function jump(e){"playing"!==e.phase||e.jumping||(e.jumping=!0,e.velocity=JUMP_FORCE,e.dino&&e.view&&setGait(e.world,e.view,e.dino,"air"),e.onJump())}function step(e){const o=e.layout;e.jumping&&(e.velocity+=GRAVITY,e.jumpY+=e.velocity,e.jumpY>=0&&(e.jumpY=0,e.velocity=0,e.jumping=!1,e.dino&&e.view&&(setGait(e.world,e.view,e.dino,"run"),dust(e.world,e.view,dinoCentre(DINO_X),o.groundY,!0)))),e.scroll+=RUN_SPEED,e.obstacles=e.obstacles.filter(o=>(o.x-=RUN_SPEED,!(o.x<REMOVE_X&&(e.world.despawn(o.root),1))));const n=o.groundY-DINO_HIT_HEIGHT+e.jumpY,t=e.obstacles.find(e=>{const{width:t,height:r}=OBSTACLE_SIZE[e.kind],i=o.groundY-r;return DINO_X<e.x+t&&DINO_X+DINO_HIT_WIDTH>e.x&&n<i+r&&n+DINO_HIT_HEIGHT>i});if(!t)return;e.obstacles=e.obstacles.filter(e=>e!==t),e.world.despawn(t.root);const{width:r,height:i}=OBSTACLE_SIZE[t.kind];if(e.view&&hitBurst(e.world,e.view,t.x+r/2,o.groundY-i/2,"mushroom"===t.kind),"mushroom"===t.kind)return e.lives<LIVES&&e.world.scoreboard.addLives(1),e.onLives(e.lives),e.onScore(e.world.scoreboard.add(MUSHROOM_POINTS)),e.dino&&cheerDino(e.world,e.dino,e.tint),void e.onCollect();e.onLives(e.world.scoreboard.addLives(-1)),e.dino&&hurtDino(e.world,e.dino,e.tint),e.onHit(e.lives<=0),e.lives<=0&&(draw(e),end(e,!1))}function drawDino(e){const o=e.layout,n=e.view;o&&n&&e.dino&&placeDino(e.world,n,e.dino,dinoCentre(DINO_X),o.groundY+e.jumpY)}function draw(e){const o=e.layout,n=e.view;if(!o||!n)return;const t=e.world.transforms;for(const r of e.obstacles)placeObstacle(e.world,n,o,r.root,r.kind,r.x,t);t.flush(),e.desert&&placeDesert(e.world,e.desert,e.scroll*pointSize(n)),drawDino(e)}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,lathe,merge,quat,recolor,shapeGeometry,tube}from"@nayan-ui/engine";import{at,bushMesh,fbm,HAZE,noise,pointSize,random,rockMesh,sceneryTint,tuftMesh}from"../shared/EngineMeadow.js";import{cacheGameAsset,createGameMesh as _0x1571ec}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{DINO_HEIGHT,DINO_WIDTH,OBSTACLE_SIZE,STRIDE_TIME,TILE}from"./DinoJumpConstants.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("dino-jump/DinoJumpScene:"+e,o),meshes.set(e,t)),t},rgb=e=>{const[o,t,r]=toColor(e);return[o,t,r]},mix=(e,o,t)=>[e[0]+(o[0]-e[0])*t,e[1]+(o[1]-e[1])*t,e[2]+(o[2]-e[2])*t],sphere=()=>shapeGeometry("sphere"),ribbed=(e,o)=>({displace:t=>o*Math.cos(t*Math.PI*2*e),color:({u:o})=>mix(rgb("#2f6b2c"),rgb("#5aa646"),.5+.5*Math.cos(o*Math.PI*2*e))}),smallCactusMesh=()=>cached("dj-cactus-small",()=>_0x1571ec(merge([{geometry:lathe([[.34,0],[.36,.55],[.33,.82],[.22,.96],[.001,1]],{segments:24,...ribbed(10,.025)})},{geometry:tube([[.25,.4,0],[.42,.42,0],[.45,.62,0]],{radius:.1,color:rgb("#3f8a38")})}]),{center:!1,shine:.25})),largeCactusMesh=()=>cached("dj-cactus-large",()=>_0x1571ec(merge([{geometry:lathe([[.22,0],[.24,.6],[.22,.86],[.15,.97],[.001,1]],{segments:24,...ribbed(12,.018)})},{geometry:tube([[-.18,.36,0],[-.4,.38,0],[-.42,.66,0]],{radius:.085,color:rgb("#3f8a38")})},{geometry:tube([[.18,.46,0],[.38,.48,0],[.4,.76,0]],{radius:.08,color:rgb("#3f8a38")})}]),{center:!1,shine:.25})),mushroomMesh=()=>cached("dj-mushroom",()=>{const e=[],o=random(5);for(let t=0;t<9;t++){const t=o()*Math.PI*2,r=.25+.6*o(),s=.5*Math.cos(1.2*r);e.push({geometry:sphere(),position:[Math.cos(t)*s,.5+.48*r,Math.sin(t)*s],scale:.09+.05*o(),color:[1,1,1]})}return _0x1571ec(merge([{geometry:lathe([[.15,0],[.17,.25],[.14,.52]],{segments:16,color:rgb("#f3e3c3")})},{geometry:lathe([[.001,.46],[.5,.48],[.47,.66],[.34,.86],[.16,.97],[.001,1]],{segments:24,color:rgb("#e23b33")})},...e]),{center:!1,shine:.5})}),OBSTACLE_MESH={cactus_small:smallCactusMesh,cactus_large:largeCactusMesh,mushroom:mushroomMesh};export function spawnObstacle(e,o,t,r,s,a){const n=pointSize(o),{width:i,height:h}=OBSTACLE_SIZE[r];return e.spawn({mesh:OBSTACLE_MESH[r](),position:at(o,s+i/2,t.groundY),scale:[i*n,h*n,i*n*("cactus_large"===r?.6:1)],rotation:quat.y("mushroom"===r?.5:0),color:a,pickable:!1})}export function placeObstacle(e,o,t,r,s,a,n){const i=at(o,a+OBSTACLE_SIZE[s].width/2,t.groundY);n?n.position(r,i[0],i[1],i[2]):e.set(r,{position:i})}const SKIN_TOP=rgb("#3a4527"),SKIN_SIDE=rgb("#6d7a43"),SKIN_BELLY=rgb("#cdbf8f"),SKIN_STRIPE=rgb("#262b17"),CLAW=rgb("#2a2418"),TOOTH=rgb("#efe5c8"),MOUTH=rgb("#3a1a14"),smooth=(e,o,t)=>{const r=Math.min(1,Math.max(0,(t-e)/(o-e)));return r*r*(3-2*r)},hide=(e=!1)=>({position:o,normal:t})=>{const r=.5+.5*t[1];let s=mix(SKIN_BELLY,SKIN_SIDE,smooth(.22,.5,r));s=mix(s,SKIN_TOP,smooth(.6,.95,r)),e&&r>.55&&o[0]<.14&&(s=mix(s,SKIN_STRIPE,smooth(.45,.8,Math.sin(46*o[0]))*smooth(.55,.8,r)*.75));const a=.86+.28*noise(22*o[0]+3,22*o[1]+11*o[2]);return[s[0]*a,s[1]*a,s[2]*a]},skin=e=>recolor(e,hide()),taper=e=>o=>{for(let t=0;t+1<e.length;t++){const[r,s]=e[t],[a,n]=e[t+1];if(o<=a)return s+(n-s)*smooth(r,a,o)}return e[e.length-1][1]},claw=(e,o,t=CLAW)=>lathe([[o,0],[.6*o,.5*e],[.001,e]],{segments:8,color:t}),dinoMesh=()=>cached("dj-dino-rex",()=>{const e=tube([[-.54,.41,0],[-.42,.44,0],[-.28,.5,0],[-.12,.55,0],[.03,.57,0],[.14,.63,0],[.21,.73,0],[.26,.83,0]],{radius:taper([[0,.01],[.16,.042],[.33,.095],[.5,.155],[.62,.165],[.76,.12],[.88,.078],[1,.072]]),sides:24,smoothness:10,color:hide(!0)}),o=e=>.072-.026*e,t=tube([[.29,.885,0],[.38,.877,0],[.475,.862,0]],{radius:o,sides:18,color:hide()}),r=tube([[.27,.84,0],[.36,.818,0],[.455,.8,0]],{radius:e=>.046-.016*e,sides:16,color:hide()}),s=[];for(let e=0;e<7;e++){const t=.335+.021*e,r=(t-.29)/.185,a=o(r),n=.885-.023*r-.72*a;for(const o of[1,-1])s.push({geometry:claw(.026,.008,TOOTH),position:[t,n,o*a*.62],rotation:quat.z(Math.PI),scale:1-.08*Math.abs(e-2)})}const a=e=>[e,{...e,position:[e.position[0],e.position[1],-e.position[2]]}],n=e=>({geometry:skin(tube([[.15,.57,e],[.19,.51,1.15*e],[.235,.515,1.15*e]],{radius:e=>.026-.01*e,sides:10}))}),i=e=>[.012,-.012].map(o=>({geometry:claw(.022,.006),position:[.235,.512,1.15*e+o],rotation:quat.z(-2)}));return _0x1571ec(merge([{geometry:e,scale:[1,1,.8]},{geometry:skin(sphere()),position:[.01,.5,0],scale:[.36,.3,.25]},{geometry:skin(sphere()),position:[.3,.875,0],scale:[.2,.17,.16]},{geometry:t,scale:[1,1,.82]},{geometry:r,scale:[1,1,.78]},...s,...a({geometry:tube([[.28,.842,.046],[.37,.828,.042],[.455,.818,.032]],{radius:.006,sides:6,caps:!1}),position:[0,0,0],scale:1,color:MOUTH}),...a({geometry:skin(sphere()),position:[.335,.94,.05],scale:[.1,.032,.045]}),...a({geometry:sphere(),position:[.34,.91,.064],scale:.034,color:rgb("#d79a1c")}),...a({geometry:sphere(),position:[.345,.91,.079],scale:[.009,.026,.008],color:rgb("#0b0b0b")}),...a({geometry:sphere(),position:[.35,.918,.08],scale:.007,color:[1,1,1]}),...a({geometry:sphere(),position:[.462,.88,.026],scale:[.02,.012,.012],color:rgb("#1d1f12")}),n(.085),n(-.085),...i(.085),...i(-.085)]),{center:!1,shine:.18})}),legMesh=()=>cached("dj-leg-rex",()=>{const e=[-.032,0,.032].flatMap(e=>{const o=0===e?.1:.08,t=[.03+o,-.443,1.6*e];return[{geometry:skin(tube([[.03,-.438,.6*e],[.03+.55*o,-.44,1.2*e],t],{radius:e=>.021-.009*e,sides:8}))},{geometry:claw(.03,.011),position:t,rotation:quat.z(-1.75)}]});return _0x1571ec(merge([{geometry:skin(sphere()),position:[.01,-.07,0],scale:[.25,.3,.17],rotation:quat.z(-.25)},{geometry:skin(tube([[0,-.1,0],[.065,-.2,0]],{radius:e=>.075-.03*e,sides:12}))},{geometry:skin(tube([[.065,-.2,0],[.02,-.27,0],[-.03,-.33,0]],{radius:e=>.045-.016*e,sides:12}))},{geometry:skin(tube([[-.03,-.33,0],[-.005,-.39,0],[.03,-.437,0]],{radius:e=>.028-.004*e,sides:10}))},...e]),{center:!1,shine:.15})}),HIP=[-.06,.46,0],SWING=.5;export function spawnDino(e,o,t,r,s){const a=DINO_HEIGHT*pointSize(o),n=e.spawn({mesh:"none",position:at(o,t,r),pickable:!1}),i=e.spawn({mesh:dinoMesh(),parent:n,scale:a,color:s,pickable:!1}),h=o=>e.spawn({mesh:legMesh(),parent:n,position:[HIP[0]*a,HIP[1]*a,o*a],scale:a,color:s,pickable:!1});return{root:n,body:i,near:h(.1),far:h(-.1)}}export const dinoCentre=e=>e+DINO_WIDTH/2;export function placeDino(e,o,t,r,s){e.set(t.root,{position:at(o,r,s)})}export function setGait(e,o,t,r){for(const o of[t.near,t.far])e.stopAnimation(o);const s=DINO_HEIGHT*pointSize(o);if("run"===r)return e.set(t.near,{rotation:quat.z(.5)}),e.set(t.far,{rotation:quat.z(-.5)}),e.animate(t.near,{rotation:quat.z(-.5)},{duration:STRIDE_TIME,easing:"easeInOut",repeat:"forever",yoyo:!0}),e.animate(t.far,{rotation:quat.z(.5)},{duration:STRIDE_TIME,easing:"easeInOut",repeat:"forever",yoyo:!0}),void e.set(t.root,{bob:{amplitude:[0,.025*s,0],speed:Math.PI/STRIDE_TIME}});e.set(t.root,{bob:null}),e.set(t.near,{rotation:quat.z("air"===r?.5:0)}),e.set(t.far,{rotation:quat.z("air"===r?-.25:0)})}export function hurtDino(e,o,t){e.animate(o.body,[{color:[1.8,.35,.35,1],at:.25},{color:t}],{duration:.4}),e.animate(o.root,{shake:.05},{duration:.3})}export function cheerDino(e,o,t){e.animate(o.body,[{color:[1.7,1.5,.7,1],at:.3},{color:t}],{duration:.45})}const SAND=[.86,.74,.55,.85],CACTUS_BITS=["#2f6b2c","#5aa646","#c9a063"].map(e=>toColor(e)),MUSHROOM_BITS=["#e23b33","#ffffff","#ffd54f"].map(e=>toColor(e));export function dust(e,o,t,r,s){const a=pointSize(o);effects.dust(e,{position:at(o,t,r),count:s?5:1,size:(s?22:14)*a,speed:(s?60:30)*a,direction:[-1,.5,0],spread:s?1.4:.6,lifetime:s?.5:.4,color:SAND,endSize:2.2})}export function hitBurst(e,o,t,r,s){const a=pointSize(o);effects.shatter(e,{position:at(o,t,r,o.playDepth-.3),count:12,mesh:s?"sphere":"cube",size:8*a,speed:220*a,lifetime:.55,gravity:-2200*a,colors:s?MUSHROOM_BITS:CACTUS_BITS})}const SAND_LIGHT=rgb("#ecd29a"),SAND_DARK=rgb("#cfa86a"),SAND_RED=rgb("#d89a62"),periodic=(e,o,t,r)=>{const s=(e%t+t)%t/t;return r(s*t,o)*(1-s)+r((s-1)*t,o)*s},floorMesh=e=>cached("dj-floor:"+e.toFixed(2),()=>{const o=[],t=[];for(let t=0;t<44;t++){const r=-(1.2+Math.pow(1.12,t)-1);for(let t=0;t<48;t++){const s=-TILE/2+t/47*TILE,a=periodic(s,r,TILE,(e,o)=>fbm(.07*e,.07*o)),n=periodic(s,r,TILE,(e,o)=>noise(.9*e,.35*o));let i=mix(SAND_DARK,SAND_LIGHT,a);i=mix(i,SAND_RED,.6*Math.max(0,.45-a)),i=mix(i,mix(i,[1,1,1],.12),.6*n);const h=Math.max(0,1-Math.abs(-r-e)/1.3);i=mix(i,rgb("#f2deb0"),.45*h);const m=1-Math.exp(-((-r/140)**2));i=mix(i,HAZE,.7*m),o.push(s,0,r,0,1,0,i[0],i[1],i[2],0,0)}}const r=(e,o)=>48*e+o;for(let e=0;e+1<44;e++)for(let o=0;o+1<48;o++)t.push(r(e,o),r(e,o+1),r(e+1,o+1),r(e,o),r(e+1,o+1),r(e+1,o));return _0x1571ec({vertices:new Float32Array(o),indices:new Uint32Array(t)},{center:!1})}),saguaroMesh=()=>cached("dj-saguaro",()=>_0x1571ec(merge([{geometry:lathe([[.07,0],[.075,.7],[.065,.92],[.035,.99],[.001,1]],{segments:18,...ribbed(12,.006)})},{geometry:tube([[-.06,.42,0],[-.2,.44,0],[-.22,.72,0]],{radius:.045,color:rgb("#3f8a38")})},{geometry:tube([[.06,.52,0],[.17,.54,0],[.18,.8,0]],{radius:.04,color:rgb("#3f8a38")})}]),{center:!1,shine:.2})),barrelMesh=()=>cached("dj-barrel",()=>_0x1571ec(merge([{geometry:lathe([[.001,0],[.3,.04],[.4,.22],[.36,.42],[.2,.54],[.001,.56]],{segments:22,...ribbed(14,.02)})},...[0,1,2,3,4].map(e=>({geometry:sphere(),position:[.12*Math.cos(1.26*e),.56,.12*Math.sin(1.26*e)],scale:.09,color:rgb("#ff6fa8")}))]),{center:!1,shine:.25}));export function spawnDesert(e,o,t){const r=sceneryTint(o),s=e=>[e[0]*r[0],e[1]*r[1],e[2]*r[2],e[3]??1];return{roots:[0,1,2].map(o=>{const r=e.spawn({mesh:floorMesh(t),color:s([1,1,1,1]),pickable:!1}),a=random(100+17*o),n=(o,t,n,i,h=[1,1,1,1],m=quat.y(6.3*a()))=>e.spawn({mesh:o,parent:r,position:[t,0,n],scale:i,rotation:m,color:s(h),pickable:!1}),i=()=>(a()-.5)*TILE,h=(e,o)=>{let r=-(e+a()*(o-e));return Math.abs(-r-t)<4&&(r-=5),r};for(let e=0;e<6;e++)n(saguaroMesh(),i(),h(18,70),3+3.5*a(),[1,1,1,1],quat.y(.6*a()-.3));for(let e=0;e<6;e++)n(barrelMesh(),i(),h(13,40),.5+.6*a());for(let e=0;e<8;e++){const e=.3+1.4*a();n(rockMesh(),i(),h(12,60),[1.3*e,e,e],[.95,.78,.6,1])}for(let e=0;e<8;e++){const e=.5+.7*a();n(bushMesh(),i(),h(12,50),[1.2*e,.8*e,1.2*e],[.72,.62,.36,1])}for(let e=0;e<16;e++)n(tuftMesh(),i(),-(2.6+2.9*a()),.5+.3*a(),[.82,.72,.42,1]);for(let e=0;e<14;e++){const e=.05+.07*a();n(rockMesh(),i(),-(2.6+5.5*a()),[1.4*e,e,e],[.85,.72,.58,1])}return r})}}export function placeDesert(e,o,t){o.roots.forEach((o,r)=>{const s=3*TILE,a=((r*TILE-t+1.5*TILE)%s+s)%s-1.5*TILE;e.set(o,{position:[a,0,0]})})}export function removeDesert(e,o){for(const t of o.roots)e.despawn(t)}
@@ -1 +1 @@
1
- "use strict";const _0x5ea89d=_0x2e84;!function(){const e=_0x2e84,o=_0x1b51();for(;;)try{if(872172==-parseInt(e(454,"KLbZ"))/1*(-parseInt(e(504,"U*#z"))/2)+parseInt(e(490,"*)Yd"))/3*(parseInt(e(480,"15rL"))/4)+parseInt(e(435,"G)^T"))/5+-parseInt(e(471,"zADk"))/6+parseInt(e(437,"5Fbr"))/7+-parseInt(e(442,"O14L"))/8+parseInt(e(500,"&8*O"))/9)break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";function _0x2e84(e,o){e-=434;const t=_0x1b51();let s=t[e];if(void 0===_0x2e84.YJEVtN){const e=function(e,o){let t,s,r=[],n=0,a="";for(e=function(e){let o="",t="";for(let t,s,r=0,n=0;s=e.charAt(n++);~s&&(t=r%4?64*t+s:s,r++%4)?o+=String.fromCharCode(255&t>>(-2*r&6)):0)s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(s);for(let e=0,s=o.length;e<s;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),s=0;s<256;s++)r[s]=s;for(s=0;s<256;s++)n=(n+r[s]+o.charCodeAt(s%o.length))%256,t=r[s],r[s]=r[n],r[n]=t;s=0,n=0;for(let o=0;o<e.length;o++)s=(s+1)%256,n=(n+r[s])%256,t=r[s],r[s]=r[n],r[n]=t,a+=String.fromCharCode(e.charCodeAt(o)^r[(r[s]+r[n])%256]);return a};_0x2e84.cGSvEo=e,_0x2e84.iqhAEI={},_0x2e84.YJEVtN=!0}const r=t[0];_0x2e84.tXUBGW!==r&&(_0x2e84.iqhAEI={},_0x2e84.tXUBGW=r);const n=_0x2e84.iqhAEI[e];return void 0===n?(void 0===_0x2e84.ZhPbPR&&(_0x2e84.ZhPbPR=!0),s=_0x2e84.cGSvEo(s,o),_0x2e84.iqhAEI[e]=s):s=n,s}import _0xf850f3,{useEffect,useRef,useCallback,useMemo}from"react";import{View,StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useDotsAndBoxesStore,useIsPlaying,useIsGameOver,useIsWin,usePlayerScore,useOpponentScore}from"./DotsAndBoxesStore.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameBoard}from"./components/GameBoard.js";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x1f190e}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 _0x40a6a5,jsxs as _0xebdaf6}from"react/jsx-runtime";export const DotsAndBoxes=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:s,onShare:r,onShareScreenshot:n,onShowLeaderboard:a,bannerAd:d})=>{const W=_0x2e84,x={fOVxz:function(e,o){return e(o)},ypBtN:W(494,")([h"),autIC:function(e,o,t){return e(o,t)},Etrmu:"XBwac",fRXfS:function(e){return e()},VRill:function(e,o,t){return e(o,t)},vwmFD:function(e,o,t){return e(o,t)},KlAIo:function(e,o,t){return e(o,t)},TEOGw:function(e,o,t){return e(o,t)}},i=x.fRXfS(useIsPlaying),u=useIsGameOver(),m=useIsWin(),S=usePlayerScore(),k=useOpponentScore(),l=x[W(502,"KLbZ")](useRef,!1),f=x.fOVxz(useRef,e);f[W(459,"EBUA")]=e;const _=useRef(t);_[W(488,"smY2")]=t;const p=useCallback(e=>{const o=W;if(_[o(441,"bkf(")]&&!l[o(476,"zADk")]){const t=useDotsAndBoxesStore[o(486,"dH[t")]()[o(479,"k0Mo")];_.current({status:e,score:t[o(496,"4[NR")]()}),l[o(460,"D]nQ")]=!0}},[]),C=useDotsAndBoxesStore(e=>e[W(451,"bkf(")]),G=x[W(485,"ad5I")](useDotsAndBoxesStore,e=>e[W(477,")([h")]),R=useDotsAndBoxesStore(e=>e[W(491,"pN]e")]);useEffect(()=>(C(),()=>{const e=_0x2e84;useDotsAndBoxesStore[e(449,"D]nQ")]()[e(489,"WJX3")]&&!l[e(440,"5pXS")]&&x[e(445,"O14L")](p,e(438,")([h")),R()}),[C,R]);const O=useRef(!1);useEffect(()=>{const e=W;u&&!O.current&&p(m?x.ypBtN:"lose"),O.current=u,!u&&(l[e(495,"22F&")]=!1)},[u,m,p]);const b=x.VRill(useCallback,()=>{const e=W;l[e(443,"KLbZ")]=!1,G(),x.autIC(playSound,GAME_SOUNDS[e(487,"5Fbr")][e(470,"E7J7")],f[e(450,"[S%K")][e(457,"4jRP")]),x.autIC(playHaptic,HapticType.MEDIUM,f.current[e(492,"%5%%")])},[G]),h=x.vwmFD(useCallback,()=>{const e=W;e(464,"4jRP")!==x[e(467,"D]nQ")]?_0x75c1ff(e(447,"^GpP")):(p(e(436,"&8*O")),R(),C())},[p,R,C]),A=useCallback(()=>{s?.(),R(),C()},[R,C,s]),P=e?.[W(482,"22F&")]??0,I=useMemo(()=>({isVisible:u,score:S,onPlayAgain:A,buttonText:m?"Play Again!":"Try Again!",scoreLabel:m?W(446,"CJ^k"):"You Lost",title:m?W(462,"O14L"):"YOU LOST!",message:W(469,"5pXS")+S+W(452,"zA@v")+k}),[u,S,k,m,A]),B=x[W(453,"4jRP")](useMemo,()=>({gameId:GAME_IDS[W(458,"22F&")],settings:e,onSettingsChange:o}),[e,o]),D={};D.paddingTop=P||0;const E=useMemo(()=>[styles.centerWrapper,D],[P]),g=x.TEOGw(useMemo,()=>({isPlaying:i,gameOver:u,onStartGame:b,onStopGame:h,onShare:r,onShowLeaderboard:a,startButtonSubtext:"Complete boxes to win!"}),[i,u,b,h,r,a]),L={};L.offset=P;const y={};y[W(505,"pOO1")]=e;const M={...g},w={...I};w.onShare=n,w[W(503,"15rL")]=d;const J={...B};return _0x40a6a5(GestureHandlerRootView,{style:styles[W(499,"O14L")],children:_0xebdaf6(_0x1f190e,{children:[_0x40a6a5(ScoreBoard,L),_0x40a6a5(View,{style:E,children:_0x40a6a5(View,{style:styles[W(493,"dH[t")],children:_0x40a6a5(GameBoard,y)})}),_0x40a6a5(GameControlButton,M),_0x40a6a5(GameOverModal,w),_0x40a6a5(GameSettingsModal,J)]})})};function _0x1b51(){const e=["W4JdRSoPoKVcRuhdISkkjNpdIa","W5VcTmkNWOe4","W7bFDSkeWQlcSCochmkeeJFdI08","W6fCDSknWRJcNCoepmkFba","WQ1+WPVcR3O","WQ0wW7abb8oweuexW7xdN8oGW50","pmkTCmkEWPldLeHsFqzYWP/dHq","mL9rWRzN","mCkdW6JdPGZcN8kRW7JcIHDTW4tdSG","W6ZdUmkTW45WWQK","W4X1W5H6WP5iiSoqW5NcQWZdImoA","WRKDoCkYW4Gl","rsGABwrmW7VcVwLF","A8odWQRcRv7dHmoR","vc7cImk+WRukuseR","WRxdHCoIW5rTWPlcMSoiWO/dG8kpW6xcRa","W4pdRmoCp8oiEmo6W6NcUu9C","aslcT8oAxNzOW5VdPSkHzsO","W7JcKmoGWP/cRCkxWP1vBLxcPa","cCk3fmkijCop","ASozWQddSLxdHCoXW7a","WOOEW5zFWQ87g0RdUCkWzSoi","BW/cOmo0W5y","aSkCfSkCWQJdMupcPq","ra3cNhpcHeGbWO7dUCocW6FcGwlcMW","W5TEWPyuW7XNjq","BSoveMBcG8kOwuCW","WRefFCkHWRtcVmoilq","WOlcUCkIBWBdMhldPSkb","d0PMWPlcPCo2wtVdIc7dSwbX","aSkyd8kQWP3dILlcOq","udpcHW","bCkKamkjjCovW54","WR7dNSkuW6RdPSoDW6pdQq","WO3dRmoPW5pdGCoopYyAnIKJsa","vmoItGBcI2WcWQpdS2hdQsOfsWpcM8ks","q8kftmks","aIyJjSkGiSoMgw4frW","c35JWPbAWPDTbhrewmozsCoO","qGSLCNa","w3hdOCkeaJz7W74","WOn2W6JdUxBcLJKexqpdUmkb","W6JcVtrEd8kwamk+","qtBcJmk0","hWDujduDWORdRCktWPK1WPDu","uhb7Cmo9pG","nxldVXddQJb3WP/dGCoSW6ZcRuu","rdVcH8kVWQqH","f8kwdCk7","gCkXBmknWPVcMK8","W6ZdQmkXW4HWWRv4","cmoCeSouW6RcMuaIbq/dTaKQ","rZebEg9RW7S","rJ0sWOldGmoLwSo5W4hcR2O","v8kLDCkEWQC","bhPlW6ddN8k1W4NdVa","WRKomSkWW5Kc","amkKbCo2WR3cKG","WO9VWP3cKxVdGCkisG","d8oHWRxdGLNcTNa","W6BdS8kQW458WRPGW44GW5NdQNBdHmoo","W4Lwwq","W4JcMSkrWQK0","etC+A3jGW5W","zmodlh7cH8kJz1S2uMVcJHG","AY/cJSkHW4ldKwWn","W6BcMmkXWOi3W4pdUCoYWPJdO8kgW7G","iSkEjSkOh8o6W6rRW4BcMmotfmoZWQa","W5RdUWK8WQtdLmky","WOT/WPVcSgRdJSki","cICKiCkVzSkxmLiXw8kWW5W","AmkLDSogWORdOJPa"];return(_0x1b51=function(){return e})()}const _0x5538fe={};_0x5538fe[_0x5ea89d(434,")([h")]=1,_0x5538fe.backgroundColor=BACKGROUND_COLOR;const _0x406890={flex:1};_0x406890[_0x5ea89d(501,"E7J7")]=_0x5ea89d(472,"bkf("),_0x406890[_0x5ea89d(466,"*)Yd")]=_0x5ea89d(448,"^F6d"),_0x406890[_0x5ea89d(497,"g9x9")]=_0x5ea89d(483,"zADk");const _0x20b913={};_0x20b913[_0x5ea89d(475,"KLbZ")]="center",_0x20b913[_0x5ea89d(498,"rBcG")]=15,_0x20b913[_0x5ea89d(465,"*)Yd")]=_0x5ea89d(456,"ad5I");const _0x72280c={};_0x72280c[_0x5ea89d(439,"dH[t")]=_0x5538fe,_0x72280c[_0x5ea89d(455,"WJX3")]=_0x406890,_0x72280c.gameArea=_0x20b913;const styles=StyleSheet[_0x5ea89d(474,"^GpP")](_0x72280c);DotsAndBoxes[_0x5ea89d(481,"7jE]")]="DotsAndBoxes";
1
+ "use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{textColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,LIGHT,OPPONENT_COLOR,PLAYER_COLOR}from"./DotsAndBoxesConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,tap,tick}from"./DotsAndBoxesGame.js";import{jsx as _0x167321}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.DOTS_AND_BOXES,playerColumn=(e,t,r,s)=>({label:e,value:r.toLocaleString(),color:s?t:void 0,valueColor:t});export const DotsAndBoxes=engineGame(GAME_IDS.DOTS_AND_BOXES,e=>{const[t,r]=useLiveState([0,0]),[s,o]=useLiveState("player"),{status:a,screen:n,gameOver:i}=useEngineGame(e,{gameId:GAME_IDS.DOTS_AND_BOXES,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,s)=>{const o=getLayout(t,r,s);return setLayout(e,o),o.boardSize},tap:tap,reportScore:e=>e.playerScore,sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),onOver:(e,t)=>e("draw"===t?GAME_SOUNDS.DRAW:"win"===t?SOUNDS.WIN:SOUNDS.LOSE,"win"===t?HapticType.SUCCESS:HapticType.HEAVY),wire:(e,t)=>{e.onScores=(e,t)=>r([e,t]),e.onTurn=o,e.onEvent=(e,r)=>{const s="player"===r;"box"===e?t(s?SOUNDS.BOX_CLAIMED:SOUNDS.OPPONENT_BOX,s?HapticType.MEDIUM:HapticType.WARNING):t(s?SOUNDS.PLAYER_LINE:SOUNDS.OPPONENT_LINE,HapticType.LIGHT)}}}),S="player"===s;return _0x167321(EngineGameScreen,{...n,light:LIGHT,columns:[playerColumn("YOU",PLAYER_COLOR,t[0],S),textColumn("TURN",S?"Your Turn":"AI Thinking...",S?PLAYER_COLOR:OPPONENT_COLOR),playerColumn("AI",OPPONENT_COLOR,t[1],!S)],subtext:"Complete boxes to win!",gameOver:i({title:"win"===a?"YOU WON!":"YOU LOST!",message:"Final score: "+t[0]+" - "+t[1],scoreLabel:"win"===a?"You Won!":"You Lost",score:t[0],buttonText:"win"===a?"Play Again!":"Try Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x2f9e23=_0x4940;!function(){const W=_0x4940,e=_0xad05();for(;;)try{if(678915==parseInt(W(228,"Xpni"))/1+-parseInt(W(204,"fviW"))/2*(-parseInt(W(199,"]RfV"))/3)+parseInt(W(207,"f!c$"))/4*(-parseInt(W(209,"]RfV"))/5)+-parseInt(W(184,"]a2D"))/6+-parseInt(W(229,"eN(i"))/7+-parseInt(W(222,"4Ju("))/8+parseInt(W(219,"D]eh"))/9)break;e.push(e.shift())}catch(W){e.push(e.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";function _0xad05(){const W=["beZdS3jHWO8B","W5f2WQ7dTGlcISoGWO7cICoVW5T7wSonWORcO8ojW4veW53dIsJdJCoGfG","zI05WOFdNCoIWOlcKSoJW5zeWO95","xepdHSoiWPiXW60","W5OeetyioSoHW7X1D8odBKBdKfPsaJldHa","WOuxWQKJWQ/cLmkL","W7JdGKqzWOi4y8oFW5RcGmk9vmopFCkXWROeamkUpCk6Cauo","WOFdPv5hfN7dKCohW69gWPGFWPOyWQZcQK7dJ1P2gmoshSoW","WPZdICoBWOPBWPWfW5CFymkKW4NdMCoBWQCn","W6xdP3JcM2JcRslcISojBv46jSkMW7GdWQb7WQbTW4S","W6yComkruCo3WQBdUgOtW4VcMgtdPmkrmhRcSNhdUmk3ocrPlW","gXTsA2qYW7O","W5e8b3S9WRLVW6JcK8oqW7K","hW4OyHb6WQ0","WPtdJ8obWPbwWOuhW5e","cCoNtSkapNGEWPBdLCo3WPz+WOJdH2PPWR5i","W49iW6ZdVgiIW77dPHHPi8kJWQVcJa","WPeJW77dSg/dN8kTW7/dVW","qmoQWRpdLCk3cv3dJmoKWQy","wwpdMM3cICohiSkxW6WYvCofbuVdQSk/WOpcK8oUchTtECkFaW","ftZdS3fKWO4EWO3dISoUyMJdRa","n8ojySkKsqj8W6RcUSklW6ibW7dcUb8DW58VxWldHCoTW4i","W5DOErz9WRP4","BfBdSuJdVSkMxSo/WOu","WR8RW5SixgZcLeFdVcHzWOddPCkqt3P+W6pdVmkLi8kKrSkPea","mf1AWQPsWPVdNvSCq0ddRdxdUSoECXC","W7BdLd7dIepdGXn1W6BdValcVSkzeLPuWQeZia","W6pdI8kIBmktn0tdPxyNnmkFW6L4WOJdVq","n8ojySkKsqj8W6RcUSklW6ibW7dcUb8DW58VxWldHCoUW5VcJG","rCoLw8kgWPzupG","WO8dW7G7maldTtBcLeWIW73cKW","W5m3d34ZW7XyW6dcKCoDW5hdHq","bsJdJK1rW4FcPYJcMCk0WRRdRr7dMW","W5SDW4VcR2Kyh8o/eJRdJhJcUaJcOgSgk8ow","jGhdTmkRW7jwWQFcMCo/iNRdS8oQ","uCoKlmo6WPiKmCkZtmkAw0Pl","n8ojySkKsqv6W77cTSkzW6ibW6/cTa4zW50WuXldM8o2W53cLYa","W6BdHmoiWQTIWQXM","zuxcKXOaW7rRWPpdMCoytvRdJmoPimkfjmoTW7pdQSo5WQ4","W6/cGCkNwmonAmkBWPTrW65KWQq","mSoldmkMACkEWOm","C8kEmSo1vfexWPtdQmobWPW","WOurW4CAW4JcPYdcIwHexIi","WOiCW6KMoHJdQYpcJ0SKW7/cM8oU","eSk/o8kPjSoHWPG","W51jnZZdUXlcKSo9bmowyMqk","W6PLW60KW7JdNSklWP0","W6qQprj/rSkdWP0hfSk6fcpcVIiOEfFcPSoNWPeNWQK","e1vtW6hcVSkCW7VcOSomW7a","zuxcIHCuW6DOWOxdJSoov08","WROuW5xcTMaocq","W6nNgXJcJgNdQCkjA8kIgqD6W7DgW7rxW7XZnmk+kSkJwCoV","WRJcNb9aWPi6gSkgWOxdMCovcq","a8oaWQpcLvZdHZuQWRapWPFcTmoKnmk2WPZcNCoUz8o6W7pcJbW","cCoNtSkapNGEWPBdLCo3WPz+WOG","Efz9W6jJW7ddHCoxth0","oZRdKmkGW6jiWO4b","WQiYquZcKIJcRmoTcmo6Cq","WOvHWQqTWQJcLCkT","q8oRBCkmpCoQWPtcRYlcLSkXW43dRSklASk/vttcGCo8WORdMIddLmkA","WQHRWQpdGb5+cmoPeqRdSe8","WQ3dU8kAgmkXWQ/cVG","jmkCrSkCW7fAsmkdy8k8q2n/qmkcz8kixmka"];return(_0xad05=function(){return W})()}const _0x2bc2e6={};_0x2bc2e6.BACKGROUND=BACKGROUND_COLOR,_0x2bc2e6[_0x2f9e23(198,"ilWm")]=PRIMARY_COLOR,_0x2bc2e6.DOT_HIGHLIGHT=_0x2f9e23(237,"]a2D"),_0x2bc2e6[_0x2f9e23(243,"]kc1")]=_0x2f9e23(224,"af1D"),_0x2bc2e6[_0x2f9e23(205,"nx9D")]=_0x2f9e23(190,"]kc1"),_0x2bc2e6[_0x2f9e23(201,"H&pk")]=_0x2f9e23(188,"fviW"),_0x2bc2e6[_0x2f9e23(232,"Rr3D")]=_0x2f9e23(193,"%fmq"),_0x2bc2e6[_0x2f9e23(191,"9bQ2")]=_0x2f9e23(238,"Rr3D"),_0x2bc2e6.LINE_PLAYER=_0x2f9e23(185,"ZNf&"),_0x2bc2e6[_0x2f9e23(212,"SN&k")]=_0x2f9e23(216,"4Ju("),_0x2bc2e6[_0x2f9e23(214,"IMBd")]=_0x2f9e23(245,"NkJ$"),_0x2bc2e6[_0x2f9e23(195,"H&pk")]=_0x2f9e23(208,"Xpni"),_0x2bc2e6[_0x2f9e23(241,"Xpni")]=_0x2f9e23(187,"f!c$"),_0x2bc2e6[_0x2f9e23(213,"3rYL")]="#FCA5A5",_0x2bc2e6[_0x2f9e23(202,"Xpni")]=_0x2f9e23(227,"DnT0"),_0x2bc2e6.LINE_OPPONENT_GLOW=_0x2f9e23(194,"oyq8"),_0x2bc2e6[_0x2f9e23(235,"t2an")]="rgba(52, 211, 153, 0.35)",_0x2bc2e6[_0x2f9e23(186,"4Ju(")]=_0x2f9e23(211,"2#LK"),_0x2bc2e6[_0x2f9e23(225,"f!c$")]=_0x2f9e23(234,"9bQ2"),_0x2bc2e6.BOX_PLAYER_BORDER=_0x2f9e23(215,"Xpni"),_0x2bc2e6[_0x2f9e23(226,"UkT^")]="rgba(248, 113, 113, 0.35)",_0x2bc2e6[_0x2f9e23(196,"$A&[")]=_0x2f9e23(206,"#z42"),_0x2bc2e6.BOX_OPPONENT_GRAD_BOTTOM=_0x2f9e23(240,"@MOh"),_0x2bc2e6[_0x2f9e23(220,"]a2D")]=_0x2f9e23(223,"Xpni"),_0x2bc2e6.PLAYER_COLOR=_0x2f9e23(231,"7@8i"),_0x2bc2e6[_0x2f9e23(230,"2#LK")]=_0x2f9e23(192,"NkJ$"),_0x2bc2e6[_0x2f9e23(233,"*&9[")]=_0x2f9e23(197,"4^wr"),_0x2bc2e6[_0x2f9e23(236,"f!c$")]=_0x2f9e23(183,"7@8i");export const DOTS_AND_BOXES_COLORS=_0x2bc2e6;const _0xf8357d={};function _0x4940(W,e){W-=183;const o=_0xad05();let x=o[W];if(void 0===_0x4940.qokeGn){const W=function(W,e){let o,x,_=[],d=0,f="";for(W=function(W){let e="",o="";for(let o,x,_=0,d=0;x=W.charAt(d++);~x&&(o=_%4?64*o+x:x,_++%4)?e+=String.fromCharCode(255&o>>(-2*_&6)):0)x="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(x);for(let W=0,x=e.length;W<x;W++)o+="%"+("00"+e.charCodeAt(W).toString(16)).slice(-2);return decodeURIComponent(o)}(W),x=0;x<256;x++)_[x]=x;for(x=0;x<256;x++)d=(d+_[x]+e.charCodeAt(x%e.length))%256,o=_[x],_[x]=_[d],_[d]=o;x=0,d=0;for(let e=0;e<W.length;e++)x=(x+1)%256,d=(d+_[x])%256,o=_[x],_[x]=_[d],_[d]=o,f+=String.fromCharCode(W.charCodeAt(e)^_[(_[x]+_[d])%256]);return f};_0x4940.uBjgHv=W,_0x4940.UTNFRZ={},_0x4940.qokeGn=!0}const _=o[0];_0x4940.AXhpJA!==_&&(_0x4940.UTNFRZ={},_0x4940.AXhpJA=_);const d=_0x4940.UTNFRZ[W];return void 0===d?(void 0===_0x4940.TbjQHZ&&(_0x4940.TbjQHZ=!0),x=_0x4940.uBjgHv(x,e),_0x4940.UTNFRZ[W]=x):x=d,x}_0xf8357d[_0x2f9e23(210,"#z42")]=6,_0xf8357d.DOT_RADIUS=7,_0xf8357d[_0x2f9e23(242,"vSWt")]=6,_0xf8357d[_0x2f9e23(217,"2#LK")]=22,_0xf8357d.ANIMATION_DURATION=250;export const DOTS_AND_BOXES_GAME_CONFIG=_0xf8357d;
1
+ "use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GRID_SIZE=6;export const BOX_POINTS=2e3;export const PLAYER_COLOR="#34D399";export const OPPONENT_COLOR="#F87171";export const DOT_COLOR="#D5DCE6";export const CLASSIC_BOARD="rgba(255, 255, 255, 0.25)";export const CLASSIC_RIM="rgba(255, 255, 255, 0.3)";export const CLASSIC_SLOT="rgba(255, 255, 255, 0.3)";export const AI_FIRST_DELAY=1;export const AI_CHAIN_DELAY=.8;export const LINE_TIME=.22;export const BOX_TIME=.32;export const TILT=.3;export const LIGHT=frontLight([-.4,.35,1],.5);const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110,PADDING=22;export function getLayout(t,o,r){const e=getScoreBoardTop(r)+82,n=Math.max(200,o-e-110),s=Math.min(gameWidthFor(t),n/Math.cos(.3)),a=(s-44)/6;return{width:t,height:o,tilt:.3,centerY:e+n/2,boardSize:s,padding:22,cell:a,dotRadius:Math.max(6,.12*a),lineWidth:Math.max(6,.12*a),boardTop:0}}export function dotPoint(t,o,r){const e=t.boardSize/2;return[-e+t.padding+r*t.cell,e-t.padding-o*t.cell]}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{aimTilted,unproject}from"../shared/EngineTilt.js";import{AI_CHAIN_DELAY,AI_FIRST_DELAY,BOX_POINTS,dotPoint,GRID_SIZE}from"./DotsAndBoxesConstants.js";import{buildBoard,celebrate,removeBoard,setBoardTheme,showSlot,spawnRod,spawnTile}from"./DotsAndBoxesScene.js";const G=GRID_SIZE,H_COUNT=(G+1)*G,LINE_COUNT=2*H_COUNT,WORLD_CAPACITY=800,MAX_STEP=.1,HIT_REACH=.4,LINES=Array.from({length:LINE_COUNT},(o,e)=>e<H_COUNT?{kind:"h",row:Math.floor(e/G),col:e%G}:{kind:"v",row:Math.floor((e-H_COUNT)/(G+1)),col:(e-H_COUNT)%(G+1)}),hIndex=(o,e)=>o*G+e,vIndex=(o,e)=>H_COUNT+o*(G+1)+e,BORDERS=LINES.map(({kind:o,row:e,col:n})=>{const r=[];return"h"===o?(e>0&&r.push((e-1)*G+n),e<G&&r.push(e*G+n)):(n>0&&r.push(e*G+n-1),n<G&&r.push(e*G+n)),r});export function createGame(o){return{world:new World(800),camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:o,layout:null,board:null,phase:"ready",turn:"player",lines:new Uint8Array(LINE_COUNT),boxes:new Uint8Array(G*G),sideCounts:new Uint8Array(G*G),drawn:0,rods:[],tiles:[],playerScore:0,opponentScore:0,won:!1,onPhase:o=>{},onScores:(o,e)=>{},onTurn:o=>{},onEvent:(o,e)=>{}}}const after=(o,e,n)=>o.world.after(e,n),sidesDrawn=(o,e)=>o.sideCounts[e];export function setLayout(o,e){clearPieces(o),o.board&&removeBoard(o.world,o.board),o.layout=e,aimTilted(o.camera,e),o.board=buildBoard(o.world,e,o.theme,LINES),o.lines.forEach((e,n)=>e&&drawLine(o,n,e,!1)),o.boxes.forEach((e,n)=>e&&drawTile(o,n,e,!1))}export function setTheme(o,e){o.theme=e,o.layout&&o.board&&setBoardTheme(o.world,o.layout,o.board,e)}function clearPieces(o){for(const e of[...o.rods,...o.tiles])o.world.despawn(e);o.rods=[],o.tiles=[]}function drawLine(o,e,n,r){const{layout:t,board:a}=o;if(!t||!a)return;const{kind:l,row:s,col:i}=LINES[e];showSlot(o.world,a,e,!1),o.rods.push(spawnRod(o.world,t,l,s,i,n,r))}function drawTile(o,e,n,r){o.layout&&o.tiles.push(spawnTile(o.world,o.layout,Math.floor(e/G),e%G,n,r))}export function start(o){"ready"===o.phase&&(o.phase="playing",o.onPhase("playing"))}export function reset(o){if(o.world.cancelTimers(),clearPieces(o),o.board)for(let e=0;e<LINE_COUNT;e++)showSlot(o.world,o.board,e,!0);o.lines.fill(0),o.sideCounts.fill(0),o.boxes.fill(0),o.drawn=0,o.turn="player",o.playerScore=0,o.opponentScore=0,o.won=!1,o.phase="ready",o.onScores(0,0),o.onTurn("player"),o.onPhase("ready")}export function dispose(o){o.world.dispose()}export function tick(o,e){o.world.isDisposed||o.world.update(Math.min(e,.1))}export function lineAt(o,e,n){const r=o.layout;if(!r)return null;const[t,a]=unproject(r,e,n,0),[l,s]=dotPoint(r,0,0),i=(t-l)/r.cell,d=(s-a)/r.cell;let u=null,p=.4;const f=(e,n)=>{!o.lines[e]&&n<p&&(u=e,p=n)},h=Math.round(d),w=Math.floor(i);h>=0&&h<=G&&w>=0&&w<G&&f(hIndex(h,w),Math.abs(d-h));const y=Math.floor(d),T=Math.round(i);return y>=0&&y<G&&T>=0&&T<=G&&f(vIndex(y,T),Math.abs(i-T)),u}export function tap(o,e,n){if("playing"!==o.phase||"player"!==o.turn)return;const r=lineAt(o,e,n);if(null==r)return;const t=play(o,r,"player");"playing"!==o.phase||t>0||(setTurn(o,"opponent"),after(o,AI_FIRST_DELAY,()=>aiMove(o)))}function play(o,e,n){const r="player"===n?1:2;o.lines[e]=r,o.drawn++,drawLine(o,e,r,!0);let t=0;for(const n of BORDERS[e])o.sideCounts[n]++,!o.boxes[n]&&4===sidesDrawn(o,n)&&(o.boxes[n]=r,drawTile(o,n,r,!0),t++);return"player"===n?o.playerScore+=t*BOX_POINTS:o.opponentScore+=t*BOX_POINTS,t&&o.onScores(o.playerScore,o.opponentScore),o.onEvent(t?"box":"line",n),o.drawn===LINE_COUNT&&end(o),t}function aiMove(o){if("playing"!==o.phase||"opponent"!==o.turn)return;const e=chooseLine(o);if(null==e)return void setTurn(o,"player");const n=play(o,e,"opponent");"playing"===o.phase&&(n>0?after(o,AI_CHAIN_DELAY,()=>aiMove(o)):setTurn(o,"player"))}function chooseLine(o){const e=[];for(let n=0;n<LINE_COUNT;n++)o.lines[n]||e.push(n);if(!e.length)return null;const n=e.find(e=>BORDERS[e].some(e=>3===sidesDrawn(o,e)));if(void 0!==n)return n;const r=e.filter(e=>BORDERS[e].every(e=>2!==sidesDrawn(o,e))),t=r.length?r:e;return t[Math.floor(Math.random()*t.length)]}function setTurn(o,e){o.turn=e,o.onTurn(e)}function end(o){o.world.cancelTimers();let e=0,n=0;for(const r of o.boxes)1===r?e++:2===r&&n++;o.won=e>n,o.phase="over",o.won&&o.layout&&celebrate(o.world,o.layout),o.onPhase("over")}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,lathe,merge,Path,quat,shapeGeometry,tube}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{cacheGameAsset,createGameMesh as _0x4fb6f2}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{BOX_TIME,CLASSIC_BOARD,CLASSIC_RIM,CLASSIC_SLOT,DOT_COLOR,dotPoint,GRID_SIZE,LINE_TIME,OPPONENT_COLOR,PLAYER_COLOR}from"./DotsAndBoxesConstants.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("dots-and-boxes/DotsAndBoxesScene:"+e,o),meshes.set(e,t)),t},STAND_UP=quat.x(Math.PI/2),ACROSS=quat.z(0),DOWN=quat.z(Math.PI/2),BOARD_DEPTH=10,BACKDROP_DEPTH=25,ownerColor=e=>toColor(1===e?PLAYER_COLOR:OPPONENT_COLOR),glow=(e,o)=>[e[0]*o,e[1]*o,e[2]*o,1],panelMesh=(e,o)=>cached("dab-panel:"+e.toFixed(1)+":"+o,()=>_0x4fb6f2(extrude((new Path).addRoundedRect(-e/2,-e/2,e,e,o),{depth:10}),{shine:.25})),rimMesh=(e,o)=>cached("dab-rim:"+e.toFixed(1)+":"+o,()=>_0x4fb6f2(extrude((new Path).addRoundedRect(-e/2,-e/2,e,e,o).addRoundedRect(-e/2+1.5,-e/2+1.5,e-3,e-3,o-1.5),{depth:0,fillRule:"evenodd"}))),slotMesh=(e,o)=>cached("dab-slot:"+e.toFixed(1)+":"+o.toFixed(1),()=>_0x4fb6f2(extrude((new Path).addRoundedRect(-e/2,-o/2,e,o,o/2),{depth:0}))),studMesh=()=>cached("dab-stud",()=>_0x4fb6f2(lathe([[.001,0],[.5,0],[.5,.22],[.46,.38],[.34,.52],[.16,.6],[.001,.62]],{segments:24}),{center:!1,shine:.85})),rodMesh=()=>cached("dab-rod",()=>_0x4fb6f2(tube([[-.5,0,0],[.5,0,0]],{radius:.5,sides:16,smoothness:1}),{shine:.7})),tileMesh=()=>cached("dab-tile",()=>_0x4fb6f2(merge([{geometry:shapeGeometry("roundedBox",{color:[.78,.78,.78]}),position:[0,0,.5]},{geometry:shapeGeometry("roundedBox"),position:[0,0,.62],scale:[.72,.72,.9]}]),{center:!1,shine:.55}));function linePlace(e,o,t,s){const[n,i]=dotPoint(e,t,s),[a,r]="h"===o?dotPoint(e,t,s+1):dotPoint(e,t+1,s);return{x:(n+a)/2,y:(i+r)/2}}export function boxCentre(e,o,t){const[s,n]=dotPoint(e,o,t);return[s+e.cell/2,n-e.cell/2]}const tileSize=e=>[.76*e.cell,.76*e.cell,.14*e.cell],slotColor=e=>toColor("classic"===e.mode?CLASSIC_SLOT:e.BOARD.CELL_HIGHLIGHT);export function buildBoard(e,o,t,s){const n="classic"===t.mode,i=n?16:8,a=spawnBackdrop(e,o.width,o.height,-25,t);placeTiltedBackdrop(e,a,o,25);const r=e.spawn({mesh:panelMesh(o.boardSize,i),position:[0,0,-5],color:toColor(n?CLASSIC_BOARD:t.BOARD.SURFACE),pickable:!1}),l=toColor(n?CLASSIC_RIM:t.BOARD.BORDER),d=l[3]>0?e.spawn({mesh:rimMesh(o.boardSize,i),position:[0,0,.2],color:l,pickable:!1}):null,p=[],h=toColor(DOT_COLOR);for(let t=0;t<=GRID_SIZE;t++)for(let s=0;s<=GRID_SIZE;s++){const[n,i]=dotPoint(o,t,s);p.push(e.spawn({mesh:studMesh(),position:[n,i,0],rotation:STAND_UP,scale:2*o.dotRadius,color:h,pickable:!1}))}const m=slotMesh(o.cell-2.4*o.dotRadius,.75*o.lineWidth),u=slotColor(t);return{backdrop:a,panel:r,rim:d,studs:p,slots:s.map(({kind:t,row:s,col:n})=>{const{x:i,y:a}=linePlace(o,t,s,n);return e.spawn({mesh:m,position:[i,a,.3],rotation:"h"===t?ACROSS:DOWN,color:u,pickable:!1})})}}export function removeBoard(e,o){for(const t of[o.backdrop,o.panel,...null!=o.rim?[o.rim]:[],...o.studs,...o.slots])e.despawn(t)}export function setBoardTheme(e,o,t,s){const n="classic"===s.mode,i=n?16:8;setBackdropTheme(e,t.backdrop,s),e.set(t.panel,{mesh:panelMesh(o.boardSize,i),color:toColor(n?CLASSIC_BOARD:s.BOARD.SURFACE)}),null!=t.rim&&e.despawn(t.rim);const a=toColor(n?CLASSIC_RIM:s.BOARD.BORDER);t.rim=a[3]>0?e.spawn({mesh:rimMesh(o.boardSize,i),position:[0,0,.2],color:a,pickable:!1}):null;const r=slotColor(s);for(const o of t.slots)e.set(o,{color:r})}export function spawnRod(e,o,t,s,n,i,a){const{x:r,y:l}=linePlace(o,t,s,n),d=o.lineWidth,p=ownerColor(i),h=[r,l,d/2],m=e.spawn({mesh:rodMesh(),position:a?[r,l,2.5*d]:h,rotation:"h"===t?ACROSS:DOWN,scale:[a?d:o.cell,d,d],color:a?glow(p,1.6):p,pickable:!1});return a&&(e.animate(m,{scale:[o.cell,d,d]},{duration:LINE_TIME,easing:"back"}),e.animate(m,{position:h},{duration:LINE_TIME,easing:"bounce"}),e.animate(m,{color:p},{duration:2*LINE_TIME})),m}export function spawnTile(e,o,t,s,n,i){const[a,r]=boxCentre(o,t,s),l=ownerColor(n),d=e.spawn({mesh:tileMesh(),position:[a,r,0],scale:i?[.01,.01,.01]:tileSize(o),color:l,pickable:!1});return i&&(e.animate(d,{scale:tileSize(o)},{duration:BOX_TIME,easing:"back"}),effects.sparkle(e,{position:[a,r,.2*o.cell],count:12,size:.08*o.cell,speed:3*o.cell,lifetime:.5,gravity:6*-o.cell,colors:[l,glow(l,1.3),[1,1,1,1]]})),d}export function celebrate(e,o){effects.confetti(e,{position:[0,0,o.cell],count:60,size:.12*o.cell,speed:1.4*o.boardSize,lifetime:1.4,gravity:2.4*-o.boardSize,colors:["#34D399","#FFD740","#448AFF","#FF5252"].map(e=>toColor(e))})}export function showSlot(e,o,t,s){e.set(o.slots[t],{scale:s?1:0})}
@@ -1 +1 @@
1
- "use strict";const _0x430547=_0x223d;function _0x3d6b(){const e=["t8oVseFcPa","W59dh8oMWRi","W4TsjCoWWPFcLJv+W4m","W6xdImogWPldQ1OpvaRcL8o5","W4Pdn8oNWPFcLJv+W4m","etf8WQuNBCkvW7NdNsKfndzNmW","kGKneSo9tSk4BGzWW5dcIG","WRpcU8o9CMXZBCoqgSk6WQn1W7hdLc8E","vh9Wz8kdnmkPDcnXW4pcOGqT","WP/cH8kvW71+W6HMW48","vLCxW7a6Emk+","d0nnWQFcQsH+ha","WRFcJSkdW5FcT3CR","WOnDvGi4W5W9","WP3cJmkaW4XMW6XbW4vKW4iZWOm","f8k4kSkkoJmbWQy","W6bOWOGKwmkHbSkk","CvK0W4GN","W6/cJSo2W5FdT1fd","W5PcjmoNWOBcVYa","WQ/cLCoLvCoQWPf2","W43cVrNdQmkGEW","teRdP8kKjKOmAsCqW4X4WQq","auOdW6KxzCkx","W49YqCkWecFcIrJcQaG","wr4nW4xdRxa6cxWqwbZdSG","eSk8mmk3kYa0WQC","WOjwdSk3za","zmoRW5exW65Dua","W7LpWQWVww/cHq","zvRcPG3cO8o4W7tcOq","ecvTWRWLCCko","ySoscCo7cW","WQ4lW5xcKZZdISkxb1r1W4ZdLSkxW4BcILFcGLtcHG","WQadWQ7dHmotWQ3dRHG7z8okmxqm","WQZcISkeWO55W717W4L6W593WPCPECoon8oqmwRcPq","W4ZcVsddG8kT","WRWQkd4qcCobgq","WO/cGCoVruW","wrqiWQFcMs16e38","W70ABCkbW4C","WOu3WPddUSo/WO3dNq","WPvyvHeC","WRHQWRzMkCkMwHHAhSofW7xdKMm","atvSWQS0wmkBW6hdLG","WRlcL8kuW50","W6PjWOdcOqZdI8kZbf8","BMxdI8kdAMastqu","W6RcQY/cLmk5","WQNcPCoCDLK","WOtcSmo0zL8","WPhcM8kcW5zL","W4rWEmkajq","W6a1WQpcQmotlmk4f8kz","W4NdKmovWPSYWRSNW7XPW4OhWOOb","WRRcKCo7vCojWRL5WOFcVW","vK4aW6mXy8k6","smoqCxzN","eSk4kCkbedCLWRa","uSoatMHJgqNcGSoG","WOvBeCkIvKbU","nIVdJSkdrwhcSW94mvHGk8oEW7S6kCoOW4ZdJK1JWRfidMlcOa","W4feC8oqW67cM8oOW6aRkgldPa","WQDxoCopWPbEWPKpW6hdG8kmEq","br9gW7vqb1W","W6CayCklW40","W4arf8kWWOZdOCog","s8kgW4X7fG","WOLDm8kLvG","W7Ddy8kXmG","rgGUW7z4lmkTW4BdNbCJpG","WRrjvfaPW5OSmKL+hbSuW7CzaCk3WQBcJSklWQW/xvhcRSoYWPOsWOdcKSkuyaSOeSowAYVdTCk8","WQRcK8okmCo+WPBcHG","WQG6pH4hgSoChSoH","dYhdH1VcOmo2W4VdPw4","W7CcymkAW40a","W4ldSYK9W7afla","W7OXWQ7dJ8oRdSkGwse","yvTix8kJfmkjwa","WQZdUCo8FmoJ","W6XdWOddINdcNmkujfzkW7VdLG","q8opn8oXn8oBFa","bCoFW4ecW7fgDW","c1nlWOBcUcD+","W5ieWORcJmo4bSk6o8kMW5RcPCkUWPddRfrRWRCvCa","W4ddLCoqWPC9WR1eW69NW7KnWPS","WQ7cG8omemoVWPNcHKW","bbXCWQ8m","aWxdSCo1tG","vmolW6aMW45GDW","WOiHWObkaXrY","wrqnW4hdPxS/l2eewqldLG","cx97WRiEkW","eSopWOSnWPS","W4qbWPZcN8oPdCkA","W7RdLCknD8kVW43dH2XbktNcKCo0","sLBdO8kNpKO","rSkbWRJcTq","WP1EWOHybCkgAq","W4eTrSkUW4K","j1TrWPGUcG","WQTXW4SCw2ZcPW","ifnmWOSNb8oViZPAAW","W5ldLqePW6W","W6TIWO8s","zmkUWO3cLwzz","WRBdVr7cMSoRoGFcUa","WPvAdmkGDe93W7C","W7G1WOFdLmo/","WPVcL8ktW5XVW6DM","BCowDa","t0BcQuVcJq","WRq5W4GbEmkha8kkW7y","WRVcSmoArgXMCmoB","WQKjW6TPcdtdHhZcU3S7vLy","WR4Hpq8idCo9hCo0W5f/W5fw","WRVcTmodCKTIDSoifmkQWOu","WQj6W4RcKSk6tSo5rYpcMmo+j2e","W4/cIgvLW5ZcUY0","W7xdRHi4W50","q8ovk8o3m8oCzSoqva","jmoIW4ZdH2jrlG","WP7cJSkeW5y","nmoYW4RdTMztnItcVIRcJ8kh","WQVcVmoa","Amk9WPNcLgzddG","pCoAWRqJWP0","s8kiW5D9lSoEbdG","WR4Hpq8idCoMe8oXW4TYW4e","WRVcImkHW5dcTW","WR7cO8kTW6jdW4DvW7vcW7GEWRmnxG","imoYW4RdPNnElIm","pXLXzmoJcuznyq","WQdcLmkIW5hcOhaXFq","W7PwECk7oatcQXdcLdianmoGkW","WPefnSkuWRpdH8og","WPNcRrBcQSkoB04","tmo7d8ovkG"];return(_0x3d6b=function(){return e})()}!function(){const e=_0x223d,o=_0x3d6b();for(;;)try{if(714002==-parseInt(e(454,"fkK$"))/1*(parseInt(e(456,"JZfA"))/2)+parseInt(e(437,"rHq6"))/3*(-parseInt(e(510,"li%C"))/4)+-parseInt(e(488,"IsMv"))/5+parseInt(e(518,"c2HF"))/6+parseInt(e(428,"R@Rx"))/7+parseInt(e(448,"h[)$"))/8*(-parseInt(e(515,"Xmlj"))/9)+-parseInt(e(537,"naK$"))/10*(-parseInt(e(413,"naK$"))/11))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x101469,{useEffect,useRef,useCallback,useMemo}from"react";import{View,StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal}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{setGameInterval,clearGameInterval}from"../../helpers/GameTimer.js";import{useFallingSticksStore,useIsPlaying}from"./FallingSticksStore.js";import{FallingSticksService}from"./FallingSticksService.js";import{GameArea}from"./components/GameArea.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameBackground}from"./components/GameBackground.js";function _0x223d(e,o){e-=413;const t=_0x3d6b();let W=t[e];if(void 0===_0x223d.ubuyuk){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};_0x223d.vidUtw=e,_0x223d.mvqWMj={},_0x223d.ubuyuk=!0}const n=t[0];_0x223d.oTEmsv!==n&&(_0x223d.mvqWMj={},_0x223d.oTEmsv=n);const r=_0x223d.mvqWMj[e];return void 0===r?(void 0===_0x223d.BsugoL&&(_0x223d.BsugoL=!0),W=_0x223d.vidUtw(W,o),_0x223d.mvqWMj[e]=W):W=r,W}import{jsx as _0x43e63c,jsxs as _0x3b6659}from"react/jsx-runtime";export const FallingSticks=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:W,onShare:n,onShareScreenshot:r,onShowLeaderboard:a,bannerAd:s})=>{const i="R@Rx",d="#%wm",S="90pr",u=_0x223d,m={upraA:function(e,o,t){return e(o,t)},KTVFC:u(461,"PQ1["),ThIwH:function(e){return e()},iycxo:function(e,o,t){return e(o,t)},UNHWa:function(e){return e()},wVwxu:function(e,o){return e(o)},xgMwT:u(533,"*8KA"),DbFYs:function(e,o){return e(o)},kwywu:function(e,o){return e(o)},ZfBSF:function(e,o){return e(o)}},l=m[u(467,"7D5c")](useFallingSticksStore,e=>e[u(432,"g#zG")]),k=useFallingSticksStore(e=>e[u(532,"CaCm")]),f=useIsPlaying(),x=useRef(0),C=useRef(!0),R=m[u(482,"vpIZ")](useRef,e?.[u(526,i)]??!0);R[u(430,"u$WM")]=e?.[u(502,"wZ!I")]??!0;const p=m[u(500,"7D5c")](useRef,e?.[u(534,"QCPg")]??!0);p.current=e?.[u(489,"wZ!I")]??!0;const G=m[u(529,"u$WM")](useRef,t);G[u(483,i)]=t;const g=m.ZfBSF(useRef,W);g[u(499,"DxNa")]=W;const v=m.ZfBSF(useRef,!1),_=useMemo(()=>new FallingSticksService,[]),O=useCallback(e=>{const o=u;G[o(475,"qygL")]&&!v[o(430,"u$WM")]&&(G[o(495,"56oU")]({status:e,score:useFallingSticksStore[o(480,"VJ8y")]()[o(439,"rHq6")][o(507,"Xmlj")]()}),v[o(531,"2QXT")]=!0)},[]);useEffect(()=>{const e=u,o={lAJVx:function(e,o,t){return e(o,t)},ftIsQ:function(e,o,t){return m[_0x223d(512,"XQaQ")](e,o,t)}};_[e(497,"56oU")](()=>{const t=e;o[t(511,"Elid")](playSound,GAME_SOUNDS[t(508,"OEbb")].CATCH,R[t(464,"40PK")]),playHaptic(HapticType.LIGHT,p[t(457,"naK$")])},()=>{const o=e;playSound(GAME_SOUNDS[o(417,"QhsI")][o(471,"DxNa")],R[o(524,"Xmlj")]),playHaptic(HapticType.WARNING,p[o(525,"#%wm")])},()=>{const t=e;o[t(513,"2QXT")](playSound,GAME_SOUNDS[t(504,"R@Rx")][t(427,"NRyN")],R[t(530,"ry28")]),o[t(462,"eLp9")](playHaptic,HapticType.ERROR,p[t(509,"v%un")])})},[_]),useEffect(()=>{const e=u;l&&!v[e(492,"L1Z@")]&&O(k?e(498,"90pr"):e(478,"&IC8")),!l&&(v[e(446,"akP%")]=!1)},[l,k,O]),l&&0===x[u(525,d)]&&(x[u(543,"PQ1[")]=useFallingSticksStore[u(523,"naK$")]()[u(431,"W7Py")]),!l&&(x[u(434,"ca%8")]=0);const P=useRef(null);m[u(416,d)](useEffect,()=>{const e=u,o={sSZfy:e(422,"li%C"),dxmgW:function(e,o){return e(o)},XeZqG:e(503,"Xmlj"),baWHh:function(e,o,t){return e(o,t)},gkoUL:function(o){return m[e(473,"rHq6")](o)}},t=()=>{const t=e;P[t(455,"Elid")]&&(o[t(485,"h[)$")]===o[t(477,"uE!C")]?(o[t(539,"ca%8")](clearGameInterval,P[t(468,"NRyN")]),P.current=null):_0x37df81[t(475,"qygL")]&&!_0x208c83.current&&(_0x37a942.current({status:_0x270a5c,score:_0x35232b[t(528,"&IC8")]().score.toString()}),_0x303c97[t(446,"akP%")]=!0))},W=useFallingSticksStore[e(447,"wZ!I")](o=>o[e(433,"W7Py")],W=>{const n=e,r={};r.BhLxY=n(474,"JAA)");const a=r;if(n(453,"YJvi")!==m[n(443,"OEbb")]){if(m[n(493,"uE!C")](t),!W)return;P.current=m[n(414,"rHq6")](setGameInterval,()=>{const e=n;if(!C[e(438,"Drtu")]){if(o[e(424,"90pr")]===e(442,"ca%8"))return void t();_0x41bf09(a[e(544,"Elid")])}const W=useFallingSticksStore[e(505,"56oU")]().timeRemaining;W<=1?(useFallingSticksStore[e(521,"R@Rx")]()[e(458,"NRyN")](-W),useFallingSticksStore[e(460,"akP%")]()[e(536,"OEbb")](),playSound(GAME_SOUNDS[e(520,"c2HF")][e(484,"XQaQ")],R[e(450,"uE!C")]),o[e(548,"*8KA")](playHaptic,HapticType[e(540,"JZfA")],p[e(509,"v%un")]),t()):useFallingSticksStore[e(549,"wZ!I")]()[e(545,"fkK$")](-1)},1e3)}else _0x1c4cfe[n(415,"8V4H")]=_0x297835.getState().score});return()=>{o[e(441,"vQbR")](W),t()}},[]),useEffect(()=>{const e=u;return C[e(438,"Drtu")]=!0,()=>{const o=e;C[o(530,"ry28")]=!1,useFallingSticksStore[o(487,"90pr")]()[o(451,"vpIZ")]&&!v[o(463,"JZfA")]&&O(o(449,"rHq6")),useFallingSticksStore[o(538,"g#zG")]()[o(481,"ca%8")](),_[o(522,"u$WM")](),useFallingSticksStore[o(487,"90pr")]()[o(418,"PQ1[")]()}},[_,O]);const Q=useCallback(()=>{const e=u;v.current=!1,useFallingSticksStore[e(501,"vQbR")]()[e(516,"2QXT")](),playSound(GAME_SOUNDS[e(546,"8V4H")][e(550,"90pr")],R[e(541,"IsMv")]),playHaptic(HapticType[e(466,"JAA)")],p.current)},[]),b=useCallback(()=>{const e=u;m.wVwxu(O,m[e(426,"OEbb")]),useFallingSticksStore.getState()[e(429,"CaCm")]()},[O]),I=useCallback(()=>{const e=u;g[e(464,"40PK")]?.(),v[e(472,"QhsI")]=!1,useFallingSticksStore[e(521,"R@Rx")]()[e(514,"2QXT")]()},[]),y=useMemo(()=>({isPlaying:!l&&f,gameOver:l,onStartGame:Q,onStopGame:b,onShare:n,onShowLeaderboard:a,startButtonSubtext:u(445,"#%wm")}),[l,f,Q,b,n,a]),h=useMemo(()=>({isVisible:l,score:x.current,onPlayAgain:I,buttonText:"Play Again!",title:k?u(542,"h[)$"):u(421,"QCPg"),message:k?u(435,"eLp9"):u(547,"R@Rx")}),[l,k,I]),H=e?.[u(479,"DxNa")]??0,L={};L[u(490,S)]=_;const A={};A.offset=H;const q={...y},E={...h};E.onShare=r,E[u(527,"g#zG")]=s;const F={};return F.gameId=GAME_IDS.FALLING_STICKS,F[u(452,"c2HF")]=e||DEFAULT_GAME_SETTINGS,F[u(519,"90pr")]=o,_0x43e63c(View,{style:styles[u(494,"Elid")],children:_0x43e63c(GestureHandlerRootView,{style:styles.gestureRoot,children:_0x3b6659(GameBackground,{children:[m[u(425,"R@Rx")](_0x43e63c,GameArea,L),_0x43e63c(ScoreBoard,A),m[u(423,S)](_0x43e63c,GameControlButton,q),_0x43e63c(GameOverModal,E),_0x43e63c(GameSettingsModal,F)]})})})};FallingSticks[_0x430547(476,"JAA)")]="FallingSticks";const _0x45a6af={};_0x45a6af[_0x430547(496,"R@Rx")]=1,_0x45a6af[_0x430547(517,"PQ1[")]=BACKGROUND_COLOR;const _0x4d84aa={};_0x4d84aa[_0x430547(419,"Xmlj")]=1;const _0x235501={};_0x235501[_0x430547(506,"[LZI")]=_0x45a6af,_0x235501.gestureRoot=_0x4d84aa;const styles=StyleSheet[_0x430547(470,"QCPg")](_0x235501);
1
+ "use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{livesColumn,scoreColumn,timerColumn}from"../shared/EngineHud.js";import{backgroundFor,lightFor}from"../shared/EngineMeadow.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,LIVES,TIME_LIMIT}from"./FallingSticksConstants.js";import{createGame,dispose,drag,reset,setLayout,setTheme,start,tick}from"./FallingSticksGame.js";import{jsx as _0x1953b4}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.FALLING_STICKS,FEEDBACK={catch:{sound:SOUNDS.CATCH,haptic:HapticType.LIGHT},miss:{sound:SOUNDS.MISS,haptic:HapticType.WARNING},win:{sound:SOUNDS.WIN,haptic:HapticType.SUCCESS},lose:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}};export const FallingSticks=engineGame(GAME_IDS.FALLING_STICKS,e=>{const[t,s]=useLiveState(0),[i,r]=useLiveState(LIVES),[a,o]=useLiveState(TIME_LIMIT),{theme:n,status:m,screen:S,gameOver:u}=useEngineGame(e,{gameId:GAME_IDS.FALLING_STICKS,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,i)=>setLayout(e,getLayout(t,s,i)),resultsDelay:e=>"win"===e?650:350,drag:drag,sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),wire:(e,t)=>{e.onScore=s,e.onLives=r,e.onTime=o,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0x1953b4(EngineGameScreen,{...S,light:lightFor(n),background:backgroundFor(n),columns:[scoreColumn(t),livesColumn(i,LIVES),timerColumn(a,n,15)],subtext:"Catch the falling sticks!",gameOver:u({title:"win"===m?"YOU WIN!":"GAME OVER",message:"win"===m?"You survived the 2 minutes!":"The sticks got away!",scoreLabel:"Final Score",score:t,buttonText:"Play Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x560fb6=_0x3976;!function(){const t=_0x3976,W=_0x3f6a();for(;;)try{if(867936==parseInt(t(248,"06Un"))/1*(-parseInt(t(229,"gHn&"))/2)+parseInt(t(199,"fHQa"))/3*(parseInt(t(198,"%%x$"))/4)+-parseInt(t(216,"GJ#@"))/5*(parseInt(t(217,"Kilj"))/6)+parseInt(t(230,"Kilj"))/7+-parseInt(t(241,"T7t2"))/8+-parseInt(t(207,"G1a5"))/9+parseInt(t(206,"IGI("))/10)break;W.push(W.shift())}catch(t){W.push(W.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR,lighten,darken}from"../../services/GamesConstants.js";function _0x3976(t,W){t-=198;const _=_0x3f6a();let o=_[t];if(void 0===_0x3976.vwDOMF){const t=function(t,W){let _,o,x=[],n=0,e="";for(t=function(t){let W="",_="";for(let _,o,x=0,n=0;o=t.charAt(n++);~o&&(_=x%4?64*_+o:o,x++%4)?W+=String.fromCharCode(255&_>>(-2*x&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let t=0,o=W.length;t<o;t++)_+="%"+("00"+W.charCodeAt(t).toString(16)).slice(-2);return decodeURIComponent(_)}(t),o=0;o<256;o++)x[o]=o;for(o=0;o<256;o++)n=(n+x[o]+W.charCodeAt(o%W.length))%256,_=x[o],x[o]=x[n],x[n]=_;o=0,n=0;for(let W=0;W<t.length;W++)o=(o+1)%256,n=(n+x[o])%256,_=x[o],x[o]=x[n],x[n]=_,e+=String.fromCharCode(t.charCodeAt(W)^x[(x[o]+x[n])%256]);return e};_0x3976.dsHaFx=t,_0x3976.ydYHXd={},_0x3976.vwDOMF=!0}const x=_[0];_0x3976.zZJXRW!==x&&(_0x3976.ydYHXd={},_0x3976.zZJXRW=x);const n=_0x3976.ydYHXd[t];return void 0===n?(void 0===_0x3976.LqWBmG&&(_0x3976.LqWBmG=!0),o=_0x3976.dsHaFx(o,W),_0x3976.ydYHXd[t]=o):o=n,o}import{getGameDimensions,isTablet}from"../../services/UtilsService.js";const DIMS=getGameDimensions();export const SCREEN_W=DIMS[_0x560fb6(235,"GJ#@")];export const SCREEN_H=DIMS[_0x560fb6(236,"cU1z")];const GAME_W=DIMS[_0x560fb6(243,"Zd^N")];export const STICK_LEN=Math[_0x560fb6(238,"GJ#@")](GAME_W*(isTablet?.16:.22));export const STICK_W=Math[_0x560fb6(233,"xBw9")](8,Math[_0x560fb6(219,"u1xQ")](.1*STICK_LEN));export const STICK_CANVAS=STICK_LEN+STICK_W+6;export const STICK_HALF=STICK_CANVAS/2;export const HIT_RADIUS=.62*STICK_LEN;export const SPAWN_MARGIN=.6*STICK_LEN;export const FLOOR_Y=SCREEN_H-(isTablet?190:150);export const FALLING_STICKS_TIME_LIMIT=120;const _0x56bade={MAX_STICKS:18,LIVES:3,POINTS_PER_CATCH:500};_0x56bade[_0x560fb6(228,"gHn&")]=2.4,_0x56bade[_0x560fb6(213,"qg[T")]=.0015,_0x56bade[_0x560fb6(223,"cU1z")]=3.8,_0x56bade[_0x560fb6(214,"!lRq")]=1450,_0x56bade.SPAWN_DEC_PER_POINT=.6,_0x56bade.MIN_SPAWN_MS=1e3,_0x56bade[_0x560fb6(227,"cU1z")]=2.2,_0x56bade[_0x560fb6(220,"fxl[")]=12;export const FALLING_STICKS_CONFIG=_0x56bade;const _0xb67705={};_0xb67705[_0x560fb6(211,"!a91")]=BACKGROUND_COLOR,_0xb67705[_0x560fb6(218,"GCrq")]=PRIMARY_COLOR;export const FALLING_STICKS_COLORS=_0xb67705;const STICK_BASE_COLORS=[_0x560fb6(247,"T7t2"),_0x560fb6(201,"477I"),_0x560fb6(215,"%8bw"),_0x560fb6(232,"%8bw"),_0x560fb6(209,"JZqt"),_0x560fb6(234,"yWTT"),"#F4511E",_0x560fb6(221,"477I")];export const STICK_COLORS=STICK_BASE_COLORS.map(t=>({top:lighten(t,.3),bottom:darken(t,.28),rim:darken(t,.5),highlight:lighten(t,.55)}));export const STICK_SHADOW=_0x560fb6(237,"gHn&");const _0x53fd32={};function _0x3f6a(){const t=["vI8YW6/dS2GYWPBcOdxdGW","W64+tu4Aba","WQezWOPelSk1W5OuW6fIWRK2jColBLG","vYm1W6tdSG","dmkAfCkLWOTguCkWcSoDW602W6zqy8kgWPCcr1ymWOK","nMJcObqtC8kigSknWO0","mCkHW5WUW6RdPYBcTSozW5JcNqBcLa","rCoia8oghdpcQa","lh18ECk+","mmkgW55vDCoMmCoSoSopBNTZWQ0","W5n2omkLWOpdKwi","j8kRWQKQWP7dOY4","j8oCW58VW6BdOIm","W4ipemoMWQ/cJrm","cWlcSem5W5jiAmkVWPG","WQ/dNJdcSCoPqNGrW7VcSG","W7VdNSoElCkmW7n2","W4BcV8k+WRxdMa3cKq","FmojWOeBCaSYDaVcQhTAWOCzn8kQ","WOpcUx/cIKbyWPZdHbtdMSkXaCk6wCk8zq","lmkuW5jlyr4ywJhcUa","pCoMCt87W7nIW6xdGCkqr8kh","W65Sz8o9pN/cGHrTna/cQbKv","WR9FfCo1WRNdOe/dQCkYlCohcmoN","WOPlW54mWOGEW5i","bmkFiSknFb3cMq","W6Obq8k9W43cTWNdH8k7nW","W7RcK0WvWQz8FrOzWOm","xu0CrYybWPVcNCofWOBdIq8v","BXBdHSkqdCoQWO19iLBdVN/cK8k6bazKW6NdLq","q8o3WRqGhmkduSkAdmonxwjo","W6pdHmkSi8oVW54H","fNrXWR/cO3mrWP3cOZxdOq","mwxcPKGRCmkylSkq","BgldR8ktWOXZWQ0","WOHaW4TzW7C","BsxdQCkGDYhdKSkUmtJcTmkzW5C","W4BdImk/W4NdMhVcKq","W69IySo6oJVdGez9cbi","W4SAFhy0msLvhJ1FWQBdLaW","k8kJW6rAWPtcHmkSzmoYydJcHdO","nrNcSCkzcSoEBvBcG8oaW7HDWPRcPq","lmoOWO0fEYub","W5ulBwCTpsrb","WPe/WRTGwCodWRDOWOenW4zwtSk9hW","W6jkW5aunSk3W4jWWOu7W7DtBW","nwZcQXrScmoiB8kEWPnJWPJcGbG","gG7cTJbeWQKd","W6pcTSoDwSkCW5OM","WQhdRqW","WOrUoYnNW7KU"];return(_0x3f6a=function(){return t})()}_0x53fd32[_0x560fb6(242,"JZqt")]="#3C7D33",_0x53fd32[_0x560fb6(210,"G1a5")]=_0x560fb6(200,"!x@H"),_0x53fd32[_0x560fb6(205,"Z622")]=_0x560fb6(208,"@j^r"),_0x53fd32.bladeBackBottom=_0x560fb6(246,"T7t2"),_0x53fd32[_0x560fb6(224,"FRkV")]=_0x560fb6(231,"%%x$"),_0x53fd32[_0x560fb6(202,"Pii@")]=_0x560fb6(245,"06Un"),_0x53fd32[_0x560fb6(203,"DKnl")]=_0x560fb6(239,"NJ@O");export const GROUND=_0x53fd32;export const GRASS_BLADE_H=18;
1
+ "use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{gameWidthFor}from"../shared/EngineUtils.js";export const TIME_LIMIT=120;export const LIVES=3;export const POINTS_PER_CATCH=500;export const MAX_STICKS=18;export const BASE_FALL_SPEED=2.4;export const SPEED_INC_PER_POINT=6e-5;export const MAX_FALL_SPEED=3.8;export const BASE_SPAWN_MS=1450;export const SPAWN_DEC_PER_POINT=.012;export const MIN_SPAWN_MS=1e3;export const SPIN_MAX=2.2;export const LAND_TILT_MAX=6;export const FIRST_SPAWN_TIMER=1300;export const STEP_MS=1e3/60;export const MAX_PENDING_MS=50;export const STICK_COLORS=["#E53935","#1E88E5","#43A047","#FB8C00","#8E24AA","#00ACC1","#F4511E","#FDD835"];export function getLayout(t,o,r=0){const e=gameWidthFor(t),n=Math.min(108,Math.round(.24*e)),s=Math.max(12,Math.round(.15*n));return{width:t,height:o,left:(t-e)/2,right:(t+e)/2,spawnY:getScoreBoardTop(r)+82+.55*n,stickLen:n,stickW:s,hitRadius:Math.max(18,1.5*s),spawnMargin:.6*n,floorY:o-145}}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{cameraFor}from"../shared/EngineMeadow.js";import{LIVES,MAX_PENDING_MS,POINTS_PER_CATCH,STEP_MS,TIME_LIMIT}from"./FallingSticksConstants.js";import{catchAlong,FALLING,FREE,newField,step}from"./FallingSticksRules.js";import{buildScene,celebrate,drawTrail,fadeTrail,hideStick,landStick,placeStick,popStick,removeScene,showStick}from"./FallingSticksScene.js";const WORLD_CAPACITY=500,TRAIL_POINTS=10;export function createGame(e){const o=new World(500),t={world:o,camera:{eye:[0,1,0],target:[0,1,-1],fov:.9},theme:e,layout:null,scene:null,phase:"ready",field:newField(),get lives(){return o.scoreboard.lives},get score(){return o.scoreboard.score},get timeLeft(){return o.scoreboard.shownSeconds},won:!1,trail:[],pending:0,onPhase:e=>{},onScore:e=>{},onLives:e=>{},onTime:e=>{},onEvent:e=>{}};return o.scoreboard.reset(LIVES,TIME_LIMIT),o.scoreboard.handlers={onScore:e=>t.onScore(e),onSecond:e=>t.onTime(e),onTimeUp:()=>"playing"===t.phase&&end(t,!0)},t}export function setLayout(e,o){const t=e.layout;if(t)for(const r of e.field.sticks)r.state!==FREE&&(r.x=o.left+(r.x-t.left)/(t.right-t.left)*(o.right-o.left),r.y=o.spawnY+(r.y-t.spawnY)/Math.max(1,t.floorY-t.spawnY)*(o.floorY-o.spawnY),r.restY=o.floorY-(t.floorY-r.restY)*(o.stickLen/t.stickLen));e.scene&&removeScene(e.world,e.scene),e.layout=o,e.scene=buildScene(e.world,o,e.theme),Object.assign(e.camera,cameraFor(e.scene.view)),e.trail=[];const r=e.scene;e.field.sticks.forEach((t,n)=>{t.state!==FREE&&(showStick(e.world,o,r,n,t),t.state!==FALLING&&placeStick(e.world,o,r,n,{...t,y:t.restY,rot:t.restRot},!1))})}export function setTheme(e,o){e.theme===o||e.world.isDisposed||(e.theme=o,e.layout&&setLayout(e,e.layout))}function clear(e){if(e.world.cancelTimers(),e.field=newField(),e.world.scoreboard.reset(LIVES,TIME_LIMIT),e.won=!1,e.pending=0,e.trail=[],e.scene){for(let o=0;o<e.scene.sticks.length;o++)hideStick(e.world,e.scene,o);drawTrail(e.world,e.layout,e.scene,[])}e.onScore(0),e.onLives(LIVES),e.onTime(TIME_LIMIT)}export function start(e){"ready"===e.phase&&(clear(e),e.world.scoreboard.startCountdown(TIME_LIMIT),e.phase="playing",e.onPhase("playing"))}export function reset(e){clear(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 t=Math.max(0,Math.min(o,MAX_PENDING_MS/1e3)),{layout:r,scene:n}=e;if("playing"===e.phase&&r&&n){let o=Math.min(e.pending+1e3*t,MAX_PENDING_MS);for(;"playing"===e.phase&&o+1e-6>=STEP_MS;)o-=STEP_MS,frame(e,r,n);if(e.pending=Math.max(0,o),"playing"===e.phase){const o=e.world.transforms;e.field.sticks.forEach((t,a)=>t.state===FALLING&&placeStick(e.world,r,n,a,t,!0,o)),o.flush()}}e.world.update(t)}function frame(e,o,t){const{landed:r,spawned:n}=step(e.field,o,e.lives);for(const n of r)landStick(e.world,o,t,n,e.field.sticks[n]);if(n>=0&&showStick(e.world,o,t,n,e.field.sticks[n]),r.length)for(let o=0;o<r.length&&"playing"===e.phase;o++)e.onEvent("miss"),e.onLives(e.world.scoreboard.addLives(-1)),e.lives<=0&&end(e,!1)}function end(e,o){e.world.scoreboard.stop(),e.won=o,e.phase="over",e.layout&&e.scene&&(e.trail=[],fadeTrail(e.world,e.scene),o&&celebrate(e.world,e.layout,e.scene)),e.onEvent(o?"win":"lose"),e.onPhase("over")}export function drag(e,{phase:o,x:t,y:r,cancelled:n}){const{layout:a,scene:s}=e;if(!a||!s)return;if(n)return e.trail=[],void fadeTrail(e.world,s);if("playing"!==e.phase)return;if("start"!==o&&e.trail.length<2)return;const i="start"===o?t:e.trail[e.trail.length-2],l="start"===o?r:e.trail[e.trail.length-1];e.trail="start"===o?[t,r]:[...e.trail.slice(-18),t,r],drawTrail(e.world,a,s,e.trail);const d=catchAlong(e.field,a,i,l,t,r);for(const o of d)popStick(e.world,a,s,o,e.field.sticks[o]),e.world.scoreboard.add(POINTS_PER_CATCH),e.onEvent("catch");"end"===o&&(e.trail=[],fadeTrail(e.world,s))}
@@ -0,0 +1 @@
1
+ "use strict";import{BASE_FALL_SPEED,BASE_SPAWN_MS,FIRST_SPAWN_TIMER,LAND_TILT_MAX,MAX_FALL_SPEED,MAX_STICKS,MIN_SPAWN_MS,POINTS_PER_CATCH,SPAWN_DEC_PER_POINT,SPEED_INC_PER_POINT,SPIN_MAX,STEP_MS,STICK_COLORS}from"./FallingSticksConstants.js";export const FREE=0;export const FALLING=1;export const LANDED=2;export const newField=()=>({sticks:Array.from({length:MAX_STICKS},()=>({state:0,color:0,x:0,y:0,speed:0,rot:0,rotSpeed:0,restY:0,restRot:0})),spawnTimer:FIRST_SPAWN_TIMER,score:0,nextColor:0});function spawn(t,n){const a=t.sticks.findIndex(t=>0===t.state);if(a<0)return-1;const s=t.sticks[a];return s.state=1,s.color=t.nextColor,t.nextColor=(t.nextColor+1+Math.floor(3*Math.random()))%STICK_COLORS.length,s.x=n.left+n.spawnMargin+Math.random()*Math.max(0,n.right-n.left-2*n.spawnMargin),s.y=n.spawnY,s.speed=Math.min((BASE_FALL_SPEED+t.score*SPEED_INC_PER_POINT)*(.85+.3*Math.random()),MAX_FALL_SPEED),s.rot=360*Math.random(),s.rotSpeed=(2*Math.random()-1)*SPIN_MAX,a}function land(t,n){t.state=2,t.restRot=180*Math.round(t.rot/180)+(2*Math.random()-1)*LAND_TILT_MAX,t.restY=n.floorY-.55*n.stickW-Math.abs(Math.sin(t.restRot*Math.PI/180))*n.stickLen*.5}export function step(t,n,a){const s=[];t.sticks.forEach((t,a)=>{if(1!==t.state)return;t.y+=t.speed,t.rot+=t.rotSpeed;const e=Math.abs(Math.sin(t.rot*Math.PI/180))*n.stickLen*.5+.5*n.stickW;t.y+e>=n.floorY&&(land(t,n),s.push(a))});let e=-1;if((a=Math.max(0,a-s.length))<=0)return{landed:s,spawned:e,lives:a};const o=Math.max(BASE_SPAWN_MS-t.score*SPAWN_DEC_PER_POINT,MIN_SPAWN_MS);return t.spawnTimer+=STEP_MS,t.spawnTimer>=o&&(t.spawnTimer-=o,e=spawn(t,n)),{landed:s,spawned:e,lives:a}}const pointDistance=(t,n,a,s,e,o)=>{const r=e-a,i=o-s,M=r*r+i*i,_=M>0?Math.max(0,Math.min(1,((t-a)*r+(n-s)*i)/M)):0;return(t-a-_*r)**2+(n-s-_*i)**2};function segmentDistance(t,n,a,s,e,o,r,i){const M=(t,n,a,s)=>t*s-n*a,_=M(a-t,s-n,e-t,o-n),h=M(a-t,s-n,r-t,i-n),S=M(r-e,i-o,t-e,n-o),A=M(r-e,i-o,a-e,s-o);return Math.max(t,a)>=Math.min(e,r)&&Math.max(e,r)>=Math.min(t,a)&&Math.max(n,s)>=Math.min(o,i)&&Math.max(o,i)>=Math.min(n,s)&&_*h<=0&&S*A<=0?0:Math.min(pointDistance(t,n,e,o,r,i),pointDistance(a,s,e,o,r,i),pointDistance(e,o,t,n,a,s),pointDistance(r,i,t,n,a,s))}export function catchAlong(t,n,a,s,e,o){const r=[],i=n.hitRadius*n.hitRadius;return t.sticks.forEach((M,_)=>{if(1!==M.state)return;const h=M.rot*Math.PI/180,S=Math.cos(h)*n.stickLen*.5,A=Math.sin(h)*n.stickLen*.5;segmentDistance(a,s,e,o,M.x-S,M.y-A,M.x+S,M.y+A)>i||(M.state=0,t.score+=POINTS_PER_CATCH,r.push(_))}),r}export const catchAt=(t,n,a,s)=>catchAlong(t,n,a,s,a,s);
@@ -0,0 +1 @@
1
+ "use strict";import{effects,lathe,merge,quat}from"@nayan-ui/engine";import{stickBlast}from"../shared/EngineBlasts.js";import{at,facing,flowerMesh,makeView,pineMesh,pointSize,random,sceneryTint,spawnWorld,tuftMesh}from"../shared/EngineMeadow.js";import{createGameMesh as _0x4d84c5}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{MAX_STICKS,STICK_COLORS}from"./FallingSticksConstants.js";const DEG=Math.PI/180,TRAIL=10,SIDEWAYS=quat.z(-Math.PI/2);let baton=null,bands=null;const batonMesh=()=>baton??=_0x4d84c5(merge([{geometry:lathe([[.08,-.5],[.31,-.49],[.44,-.465],[.47,-.43],[.47,.43],[.44,.465],[.31,.49],[.08,.5]],{segments:20}),rotation:SIDEWAYS}]),{center:!1,shine:.35}),bandMesh=()=>bands??=_0x4d84c5(merge([-1,1].map(t=>({geometry:lathe([[.475,-.038],[.51,-.026],[.51,.026],[.475,.038]],{segments:20}),rotation:SIDEWAYS,position:[.34*t,0,0],color:toColor("#FFF3D9")}))),{center:!1,shine:.25}),stickColor=t=>toColor(STICK_COLORS[t.color%STICK_COLORS.length]),depthFor=(t,e)=>t.view.playDepth-.003*e,stickScale=(t,e,o)=>{const i=pointSize(e.view,depthFor(e,o));return[t.stickLen*i,t.stickW*i,t.stickW*i]};function meadowView(t){const e=Math.min(.64,t.floorY/t.height-.18),o=makeView(t.width,t.height,{horizon:e,eyeHeight:1,playDepth:3.6});return o.eye=[o.eye[0],o.eye[1]+.025-at(o,t.width/2,t.floorY)[1],o.eye[2]],o}export function buildScene(t,e,o){const i=meadowView(e),s=spawnWorld(t,i,o,{sun:[.8,.28],clouds:[.25,.48],groundDetails:!1}),n=random(73),a=sceneryTint(o);for(let o=0;o<13;o++){const r=-(55+40*n()),l=(o/12*2-1)*(-r*i.tanHalf*(e.width/e.height))*1.15,h=3.5+2.5*n();s.push(t.spawn({mesh:pineMesh(),position:[l,0,r],scale:h,color:a,pickable:!1}))}for(let o=0;o<28;o++){const r=at(i,(o+n())/28*e.width,e.floorY+6+5*n());s.push(t.spawn({mesh:o%5==0?flowerMesh():tuftMesh(),position:[r[0],0,r[2]],rotation:quat.y(n()*Math.PI*2),scale:pointSize(i)*(32+20*n()),color:a,pickable:!1}))}const r=Array.from({length:MAX_STICKS},()=>{const e=t.spawn({mesh:batonMesh(),scale:0,pickable:!1});return t.spawn({mesh:bandMesh(),parent:e,pickable:!1}),e});return{view:i,scenery:s,sticks:r,trail:Array.from({length:10},()=>t.spawn({mesh:"roundedBox",scale:0,pickable:!1})),tumble:r.map(()=>0)}}export function removeScene(t,e){for(const o of[...e.scenery,...e.sticks,...e.trail])t.despawn(o)}const turn=(t,e,o)=>quat.multiply(facing(t,-e*DEG),quat.x(o));export function placeStick(t,e,o,i,s,n=!0,a){const r=n?o.tumble[i]+s.rot*DEG*.6:o.tumble[i];(a??t).set(o.sticks[i],{position:at(o.view,s.x,s.y,depthFor(o,i)),rotation:turn(o.view,s.rot,r)})}export function showStick(t,e,o,i,s){const n=o.sticks[i];t.stopAnimation(n),o.tumble[i]=.73*s.color,t.set(n,{scale:stickScale(e,o,i),color:stickColor(s)}),placeStick(t,e,o,i,s)}export function hideStick(t,e,o){t.stopAnimation(e.sticks[o]),t.set(e.sticks[o],{scale:0})}export function landStick(t,e,o,i,s){const n=o.sticks[i],a=Math.min(6*s.speed,24),r=depthFor(o,i),l=Math.round((o.tumble[i]+s.rot*DEG*.6)/Math.PI)*Math.PI;o.tumble[i]=l,t.animate(n,[{position:at(o.view,s.x,s.restY-a,r),at:.3},{position:at(o.view,s.x,s.restY,r),rotation:turn(o.view,s.restRot,l)}],{duration:.45,easing:"easeOut",path:"smooth"});const h=pointSize(o.view);effects.shatter(t,{position:at(o.view,s.x,e.floorY,r),count:7,mesh:"sphere",size:e.stickW*h*.3,speed:75*h,lifetime:.45,gravity:-260*h,direction:[0,1,0],spread:.9,colors:[toColor("#8DA35D"),toColor("#5F9141")],flash:!1,dust:!1})}export function popStick(t,e,o,i,s){stickBlast(t,o.sticks[i],{scale:stickScale(e,o,i),position:at(o.view,s.x,s.y,depthFor(o,i)),rotation:facing(o.view,-s.rot*DEG),color:stickColor(s)})}export function drawTrail(t,e,o,i){const s=t.transforms,n=i.length/2,a=o.view.playDepth-.2,r=pointSize(o.view,a);o.trail.forEach((e,l)=>{t.stopAnimation(e);const h=n-1-l;if(h<0)return void s.scale(e,0);const p=i[2*h],m=i[2*h+1],f=i[2*Math.max(0,h-1)],u=i[2*Math.max(0,h-1)+1],d=4*(1-l/10),w=at(o.view,(p+f)/2,(m+u)/2,a),S=facing(o.view,Math.atan2(u-m,p-f));s.transform(e,w[0],w[1],w[2],S[0],S[1],S[2],S[3]),s.scale(e,(Math.hypot(p-f,m-u)+d)*r,d*r,d*r),s.color(e,1.7,1.6,1.35,.7*(1-l/10))}),s.flush()}export function fadeTrail(t,e){t.animate(e.trail,{color:[1.7,1.6,1.35,0],scale:0},{duration:.18})}export function celebrate(t,e,o){const i=pointSize(o.view);effects.confetti(t,{position:at(o.view,e.width/2,.45*e.height),count:64,size:5*i,speed:e.right*i,lifetime:1.2,gravity:-260*i,colors:STICK_COLORS.map(t=>toColor(t))})}
@@ -1 +1 @@
1
- "use strict";const _0x4fa826=_0x2413;!function(){const e=_0x2413,o=_0x4018();for(;;)try{if(979650==-parseInt(e(607,"bmKL"))/1*(-parseInt(e(608,"oM%m"))/2)+parseInt(e(509,"Rsc@"))/3*(-parseInt(e(586,"CGdt"))/4)+parseInt(e(587,"cCEB"))/5+parseInt(e(641,"y7Aw"))/6+parseInt(e(521,"FRca"))/7*(-parseInt(e(552,"mclG"))/8)+-parseInt(e(528,"WM9i"))/9*(parseInt(e(563,"cNZ1"))/10)+-parseInt(e(591,"^ul5"))/11*(-parseInt(e(535,"w$A4"))/12))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x32b0d6,{useEffect,useRef,useMemo,useCallback}from"react";import{View,StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useFindDiffStore}from"./FindDifferentNumberStore.js";import{FindDifferentNumberService}from"./FindDifferentNumberService.js";import{GameGrid}from"./components/GameGrid.js";function _0x2413(e,o){e-=499;const t=_0x4018();let W=t[e];if(void 0===_0x2413.JpYYqN){const e=function(e,o){let t,W,n=[],d=0,r="";for(e=function(e){let o="",t="";for(let t,W,n=0,d=0;W=e.charAt(d++);~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++)d=(d+n[W]+o.charCodeAt(W%o.length))%256,t=n[W],n[W]=n[d],n[d]=t;W=0,d=0;for(let o=0;o<e.length;o++)W=(W+1)%256,d=(d+n[W])%256,t=n[W],n[W]=n[d],n[d]=t,r+=String.fromCharCode(e.charCodeAt(o)^n[(n[W]+n[d])%256]);return r};_0x2413.xexFyf=e,_0x2413.MRokFO={},_0x2413.JpYYqN=!0}const n=t[0];_0x2413.KQVSjW!==n&&(_0x2413.MRokFO={},_0x2413.KQVSjW=n);const d=_0x2413.MRokFO[e];return void 0===d?(void 0===_0x2413.JzsXoy&&(_0x2413.JzsXoy=!0),W=_0x2413.xexFyf(W,o),_0x2413.MRokFO[e]=W):W=d,W}import{ScoreBoard}from"./components/ScoreBoard.js";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x34a117}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 _0x1ad1fb,jsxs as _0x574b8b}from"react/jsx-runtime";export const FindDifferentNumber=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:W,onShare:n,onShareScreenshot:d,onShowLeaderboard:r,bannerAd:s})=>{const f="lT0x",a=_0x2413,i={sYLVr:a(543,"[mDm"),cfaGo:function(e,o){return e===o},WnoDM:"zkWfi",oSrJS:function(e,o){return e!==o},hLGtr:a(558,"cCEB"),jdBmM:function(e,o,t){return e(o,t)},GIhdP:function(e,o){return e(o)},nIFgQ:function(e,o,t){return e(o,t)},hhvep:function(e,o){return e(o)},mVLTz:function(e,o,t){return e(o,t)},eKpRI:function(e,o,t){return e(o,t)},pWmkp:function(e,o,t){return e(o,t)},zMsJR:function(e,o,t){return e(o,t)}},m=useFindDiffStore(e=>e[a(506,"6&dA")]),S=useFindDiffStore(e=>e[a(547,"N*2N")]),k=i[a(507,"w$A4")](useFindDiffStore,e=>e[a(546,"f3yj")]),u=i.hhvep(useRef,!1);i[a(579,"OOL%")](useEffect,()=>{const e=a;return u.current=useFindDiffStore[e(573,"nfb3")]().isPlaying,useFindDiffStore[e(548,"FRca")](o=>o[e(602,"KutZ")],o=>{const t=e;"hoVpS"!==i[t(502,"PR0l")]?(_0x12b1f4[t(620,"Ms@^")]=!1,_0x461e3b[t(500,"rE4t")]?.(),_0x42900d[t(560,"ePkR")]().resetGame(),_0x9b9330[t(505,"oM%m")]()[t(571,"m6d!")]()):(u[t(637,"lDoR")]=o,o?_[t(584,"nfb3")][t(570,"KN61")](()=>{useFindDiffStore[t(530,"3TDN")]().decrementTime()}):_[t(536,"Rsc@")][t(559,"UgJ$")]())})},[]);const x=useRef(!1),C=useRef(0),l=useRef(t);l.current=t;const G=useRef(W);G[a(566,"m6d!")]=W;const R=useCallback(e=>{const o=a,t={mDshN:function(e,o){return i[_0x2413(520,"qQbE")](e,o)}};if(o(525,"Ms@^")===i[o(639,"m6d!")]){_0x2c9c25[o(540,"bmKL")]=!1;const e=_0x569f57[o(504,"sgSy")]();t[o(629,"rE4t")](e[o(537,"h2d&")][o(624,"KutZ")],0)&&_0x3ce6df.getState()[o(580,"ePkR")](),_0x52944f.getState()[o(609,"lDoR")](),_0x39495f(_0x5f5b5b[o(503,"KA9^")][o(523,"f3yj")],_0x15a187[o(589,"XGld")])}else if(l[o(589,"XGld")]&&!x[o(619,"cCEB")]){const t=useFindDiffStore[o(544,"UgJ$")]();l[o(540,"bmKL")]({status:e,score:t[o(542,"oM%m")][o(598,"lDoR")]()}),x.current=!0}},[]),_=useRef(new FindDifferentNumberService);i[a(638,"y7Aw")](useEffect,()=>{const e=a;return useFindDiffStore[e(582,"GS#D")]()[e(574,"H2Ij")](),()=>{const o=e;useFindDiffStore[o(513,"sgF5")]().isPlaying&&!x[o(640,"f3yj")]&&R(o(605,"1V6m")),_[o(634,"e5Tc")][o(626,"N*2N")](),useFindDiffStore[o(633,"y7Aw")]()[o(646,"N*2N")]()}},[R]),useEffect(()=>{const e=a;m&&!x[e(565,"sgF5")]&&(i[e(545,"3TDN")](i[e(533,"y7Aw")],e(614,"nfb3"))?(_0x2d5391(_0x440ccd[e(612,"1V6m")][e(577,"bmKL")],_0x24dac4[e(621,"PR0l")]),_0x21f975(_0x3aeedc[e(627,f)],_0xa31efd.current),_0x57378c(e(611,"nfb3"))):(i[e(622,"ePkR")](playSound,GAME_SOUNDS[e(510,"bmKL")].WIN,O[e(619,"cCEB")]),i[e(518,"f3yj")](playHaptic,HapticType[e(616,"KutZ")],M[e(631,"VACg")]),i[e(600,f)](R,"win"))),S&&!x[e(631,"VACg")]&&(playSound(GAME_SOUNDS.FIND_DIFFERENT_NUMBER[e(556,"[mDm")],O[e(514,"L!fJ")]),playHaptic(HapticType.ERROR,M[e(635,"ejVO")]),R(e(611,"nfb3"))),!m&&!S&&(x[e(532,"CGdt")]=!1)},[m,S,R]);const b=useCallback(()=>{const e=a;x[e(578,"3TDN")]=!1,0===useFindDiffStore[e(642,"OOL%")]()[e(553,"GS#D")][e(610,"XGld")]&&useFindDiffStore[e(576,"dVWY")]()[e(551,"nfb3")](),useFindDiffStore[e(569,"bmKL")]()[e(564,"5Imq")](),i[e(643,"2V!s")](playSound,GAME_SOUNDS[e(512,"cCEB")].START,O[e(588,"WM9i")])},[]),p=useCallback(()=>{const e=a;e(590,"h2d&")!==e(511,"KA9^")?(R(e(613,"lDoR")),useFindDiffStore.getState()[e(527,"nfb3")](),useFindDiffStore[e(568,"Ms@^")]()[e(561,"KA9^")]()):_0x581284.current=_0x2b5bc6.getState()[e(515,"CGdt")]},[R]),h=i[a(508,"w$A4")](useCallback,()=>{const e=a;x[e(634,"e5Tc")]=!1,G[e(562,"KutZ")]?.(),useFindDiffStore[e(623,"lDoR")]()[e(585,"w$A4")](),useFindDiffStore[e(560,"ePkR")]()[e(534,"cCEB")]()},[]),F=m||S;F&&0===C[a(583,"h2d&")]&&(C[a(584,"nfb3")]=useFindDiffStore.getState()[a(516,"N*2N")]),!F&&(C[a(584,"nfb3")]=0);const D=i[a(597,"N*2N")](useMemo,()=>({isPlaying:k,gameOver:F,onStartGame:b,onStopGame:p,onShare:n,onShowLeaderboard:r,startButtonSubtext:a(501,"rE4t")}),[k,F,b,p,n,r]),y=useMemo(()=>{const e=a,o=m,t={};return t[e(632,"mclG")]=F,t.score=C[e(526,"dVWY")],t.scoreLabel=e(522,"6&dA"),t[e(644,"e5Tc")]=h,t.buttonText=o?"Play Again!":"Try Again!",t.title=o?e(541,"H2Ij"):e(555,"m6d!"),t[e(531,"oM%m")]=o?e(549,"KN61"):e(567,"nfb3"),t},[m,F,h]),N=i.nIFgQ(useMemo,()=>({gameId:GAME_IDS[a(538,"y7Aw")],settings:e||DEFAULT_GAME_SETTINGS,onSettingsChange:o}),[e,o]),O=i.hhvep(useRef,e?.enableSounds??!0);O.current=e?.[a(529,"CGdt")]??!0;const M=useRef(e?.enableHaptics??!0);M[a(631,"VACg")]=e?.enableHaptics??!0;const P=e?.[a(581,"3TDN")]??0,g=useMemo(()=>({...styles[a(524,"qQbE")],marginTop:P}),[P]),A={};A.soundEnabledRef=O,A[a(618,"sgF5")]=M;const L={};L[a(539,"L!fJ")]=P;const Q={...D},H={...y};H.onShare=d,H[a(517,"WM9i")]=s;const I={...N};return _0x1ad1fb(View,{style:styles[a(599,"jvTS")],children:_0x1ad1fb(GestureHandlerRootView,{style:styles[a(557,"ePkR")],children:_0x574b8b(_0x34a117,{children:[_0x1ad1fb(View,{style:g,children:_0x1ad1fb(GameGrid,A)}),i[a(519,"CGdt")](_0x1ad1fb,ScoreBoard,L),_0x1ad1fb(GameControlButton,Q),_0x1ad1fb(GameOverModal,H),_0x1ad1fb(GameSettingsModal,I)]})})})};const _0x2586c9={};_0x2586c9[_0x4fa826(554,"L!fJ")]=1,_0x2586c9.backgroundColor=BACKGROUND_COLOR;const _0x291455={};_0x291455[_0x4fa826(636,"cCEB")]=1;const _0x5bd70f={};function _0x4018(){const e=["W77cLIddLZbkWRFdGmof","sCkhWRqTWQO","z8ozv8kHeCooWPpdHmkhW4rNfxe","WP0TdCkJW7VdOmk8WQH0","tCkfW5ddLHXFWPJdH8oK","A8kjWR8bW7nwjmoOsW","W6btaZ/dOe0","omoPbZa","gmk2FwRdLmofwXi7y8kGE8oM","s8oaWQOplx3cMq","WPlcK8k4aSkAWQddUmkVvG","gKW+A8ohya","nSotW7O9","W4v7iXJdMMuXWRT7pKrgEvJcUmoJssBcGcRcGa","WOlcHSk3e8klWOS","fCoUW7SsW7e","W6VdMSk7ASkAWRe","WQClhSkmW5/dISkg","WPCPW4ZdPmoKW4FdLZtdJCk3vM9KFvWMW47cNMG","cWndp8oFFLKmWPlcHSkXWQRdHaddUa8","j8ougJxcUCksmW","WP3cHCoVWRawW7tcGq","pmkBemoNqCkyW5i","W4BcLmk0WQRcVq","WOBcGSkTi8kAWOBdRCkN","WPG7m8kOW67dSq","WOHoAKD/nsdcJ8oIW5nm","WR4DgmoJyI1l","s8kCWO4gWQG","WOxcSIldU8krCvm","W7RcH8oZev0","w1ufECkclsuMWPhcHSkpWOhdRa","wuldPdCsWP1z","WQddLZFcSCkoWPtdHqxcOG","bSo6W6/cOSkSWOqMW4W","BvNdG8kaWRZcVXC","vmk+b27cISk3WQa","iSondt8","WOlcKSkRaSklWONdRq","c8o7W5NcNmkv","jHLYW71P","pCoWedRcQd89","vCkPWQ7dGSoGW5fKW4GpW4LTkdW","W61uh8oMgCorW4W/","W7ddSCoYBmk8","yuldOCkEWRJcQclcJGZdG34","AmkmW4WWW6nZomo9","WQ8udSoNEb9AWQVcNq","WP3cGSo4WQmhW78","W7tcTSoYc3BcG8or","W5hcQSoUhtpcMCongCoKWRlcScNcNLboCmkzW4JcMxPQWRZcP8oMW47cPSoBWODNiG","lmk3lSodvG","bHldJmoZnCkCWPFdRmkEW6NcSK42W6mAWPyMWQCFemkH","lahcSCoavmkLWOFcPG","hSo0WPafchdcL8kQ","FK5iaCk0WPSeW54QrSod","WQTHC0vC","WOLJA3nf","W79sW51UW7BdSSkf","B8ooarZcUCk0kJihAmk9FCooW69jhbhcL8k6uSkA","grldQ8oDhq","aSoOjGpcG8k4dSkPW7ZdTh1cq8o8W6n/W4VcJmo2qmok","baDhgmocFgGh","W4uaW7dcJXWIeW","WQGIFmo9ya","WQ4seSoWAq","W5fHWRJcIgnFWOyx","nmoHicxcGa","WQemymofvW","vmkFW4GQW6u","WPJcMI9ZW4tcGsfCW6rXDCk9","rf5Khmk8","dCoriXRcMq","umkyW4qiW4VcJWqD","WQBcUSonWPS7","WRi1W5ddSSofW4ddHq","kmozW7O9W4nydSoksq","WOS3W6ddLdiDW743WOtcV8oVxCoN","WR4VCSoTAspdR8k4WQiIWRJdNa","AtRdN8o5lCoRWPTE","fmo0WPCLhxBcHG","WRG0yCo9ycJdIa","cCotW5ZcHCkQ","i8oebIlcRSkDm8kkW6JdNLPPAq","W50DlxHiWRxdTmk+ta","WQ9mW7LSW6RdQmkt","WOjsDfv2jIO","j8owW5xcTCkhWQeBW68cW7PMiX9LE8kavmo4pwzs","W4KtW6tcJHW4","sSoYpsRcG8kEfW","ude8m8kbW6dcTHxdVSka","cSoYWOSKgq","yWpcJGFdMW","f33dRXBdHv7dO8kY","yqZdMCoGcG","n8o2mItcRcGGWOVdGG","WRqcoSoJyt10WRdcNCku","W57dM303WPFdIZ5YW60","W6Hgy8kkWRxdQKvswGJdGhDUh1vkj8k2icyFWOLeb3i4gtSUWRRdI3/dPSouWRNcLa","WQ7dGrlcRmkiWO/dGJVcQmkNWOm","pCozW6C9W4v+g8ocFMWxmqa","W7JcKfxcI8kiWOtdSIdcHa","W6BdISk4FmkAWRf/","W4azW6FcHq","jt5qW7WeWOH/qq","tc3cLtldL8klfSk7WQG","W4VcLCkfWRpcHw0dW49Hm8kX","c8oZgG3cMG","a2ZdTdxdPvBdUSkYtq","W4VcLCkcWPtcHh4sW7G","jZ7dRmosgmk5WQRdJ8kkW4pcLwuC","WPCRl8k9W7/dT8kH","W43dRmocDbJdSCk7W5m","WPpcHmk0W73dUuhcN8o+xq","abDboCotC2G","eGjVW4TbWRnB","a8otW7X4W4v+aCkhq3ywFWVcOqNcHmo6lmk/W7e","WPNcLCoPWPehW7VcGCkE","tSoIoWVcKSkrfXe","W4jDD8oyWQFdKvLrw1O","fHjZW5XwWRXBbCo1rCkoh04","e8oKWPCIfxFcMSkmWOVdUsxcN8ordW","pCozW70lW4n+g8oc","Cayxf8kNWQhcId/dRSooCM4u","oaFcJGFdSCkWiG","WRyLW5BdK8ouW4/dHtC","BSogaH3cUCk/ntet","BsRdMCoypmoKWPS","W6DNj8oHfW","W4VcLCkyWQlcGN4sW7HCm8kWW41F","ytNdJCozpmo+","W6/dMSkHtCklWQj4yG","WO9sA0v2oI0","oCojW7SQW5jXgW","WP5nAer4WRVdNSkCtG","W6LWiCk9m3FcJSkwWP4UWRldVmkc","FmkwxxpdQCoeCSk7W5ddKefHxq","W5b1WQtcLgndWRm","fvWIFSowzHG","WPrKtw94","nCkLWRHiECoQdmkmWQxdPmkrWPTA","WQZdIhZcKwmwW6hdG8onyMO8fW","amoZW7lcLSk2WQWMW4WPW4W","oLZdQupcVSo0D8kpWR1ln8oPsG","pCoGddZcQcm","jLDniCkGWRNcQrpdVW","WQ0MemoPFa","WPxcImkkbmkCWO7dT8kL"];return(_0x4018=function(){return e})()}_0x5bd70f[_0x4fa826(606,"f3yj")]=1,_0x5bd70f[_0x4fa826(572,"oM%m")]=_0x4fa826(615,"GS#D"),_0x5bd70f[_0x4fa826(593,"y7Aw")]=_0x4fa826(595,"f3yj");const _0x2ed23b={};_0x2ed23b[_0x4fa826(603,"yNTQ")]=_0x2586c9,_0x2ed23b[_0x4fa826(550,"mclG")]=_0x291455,_0x2ed23b.gameArea=_0x5bd70f;const styles=StyleSheet[_0x4fa826(499,"Ms@^")](_0x2ed23b);FindDifferentNumber[_0x4fa826(625,"h2d&")]=_0x4fa826(617,"dVWY");
1
+ "use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS,isTablet}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,textColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{GAME_DURATION,getLayout,LIGHT}from"./FindDifferentNumberConstants.js";import{createGame,dispose,drag,reset,setLayout,setTheme,start,tick}from"./FindDifferentNumberGame.js";import{DIFFERENT_COUNT}from"./FindDifferentNumberRules.js";import{jsx as _0x303c29}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.FIND_DIFFERENT_NUMBER,FEEDBACK={correct:{sound:SOUNDS.CORRECT,haptic:HapticType.SUCCESS},wrong:{sound:SOUNDS.WRONG,haptic:HapticType.WARNING},win:{sound:SOUNDS.WIN,haptic:HapticType.SUCCESS},lose:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}};export const FindDifferentNumber=engineGame(GAME_IDS.FIND_DIFFERENT_NUMBER,e=>{const[t,r]=useLiveState(0),[s,i]=useLiveState(GAME_DURATION),[n,o]=useLiveState(DIFFERENT_COUNT),{game:a,theme:m,status:u,screen:E,gameOver:S}=useEngineGame(e,{gameId:GAME_IDS.FIND_DIFFERENT_NUMBER,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,s)=>{const i=getLayout(t,r,s,isTablet);return setLayout(e,i),i.size+2*i.pad},drag:drag,sounds:SOUNDS,onStart:e=>e(SOUNDS.START),wire:(e,t)=>{e.onScore=r,e.onTime=i,e.onLeft=o,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0x303c29(EngineGameScreen,{...E,light:LIGHT,columns:[scoreColumn(t),textColumn("LEFT",n),timerColumn(s,m)],subtext:"Find the different numbers!",gameOver:S({title:"win"===u?"GREAT JOB!":"TIME UP!",message:"win"===u?"You found all the different numbers!":"You ran out of time!",scoreLabel:"Score",score:a.score,buttonText:"win"===u?"Play Again!":"Try Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x557f39=_0x3e7d;!function(){const _=_0x3e7d,t=_0x20cb();for(;;)try{if(599687==-parseInt(_(441,"&TMf"))/1+-parseInt(_(440,"0d74"))/2+parseInt(_(434,"*Sca"))/3+-parseInt(_(435,"9oTN"))/4+-parseInt(_(427,"11eK"))/5+-parseInt(_(430,"#8Ru"))/6*(-parseInt(_(425,"wMuT"))/7)+parseInt(_(418,"#x0x"))/8*(parseInt(_(423,"dLW9"))/9))break;t.push(t.shift())}catch(_){t.push(t.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions,isTablet}from"../../services/UtilsService.js";const GAME_WIDTH=getGameDimensions()[_0x557f39(439,"#6!n")];export const GRID_SIZE=10;export const TOTAL_CELLS=100;function _0x3e7d(_,t){_-=409;const W=_0x20cb();let o=W[_];if(void 0===_0x3e7d.ktHbBS){const _=function(_,t){let W,o,e=[],x=0,n="";for(_=function(_){let t="",W="";for(let W,o,e=0,x=0;o=_.charAt(x++);~o&&(W=e%4?64*W+o:o,e++%4)?t+=String.fromCharCode(255&W>>(-2*e&6)):0)o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(o);for(let _=0,o=t.length;_<o;_++)W+="%"+("00"+t.charCodeAt(_).toString(16)).slice(-2);return decodeURIComponent(W)}(_),o=0;o<256;o++)e[o]=o;for(o=0;o<256;o++)x=(x+e[o]+t.charCodeAt(o%t.length))%256,W=e[o],e[o]=e[x],e[x]=W;o=0,x=0;for(let t=0;t<_.length;t++)o=(o+1)%256,x=(x+e[o])%256,W=e[o],e[o]=e[x],e[x]=W,n+=String.fromCharCode(_.charCodeAt(t)^e[(e[o]+e[x])%256]);return n};_0x3e7d.zTTqZV=_,_0x3e7d.emRWCO={},_0x3e7d.ktHbBS=!0}const e=W[0];_0x3e7d.tbczjk!==e&&(_0x3e7d.emRWCO={},_0x3e7d.tbczjk=e);const x=_0x3e7d.emRWCO[_];return void 0===x?(void 0===_0x3e7d.IOvvoI&&(_0x3e7d.IOvvoI=!0),o=_0x3e7d.zTTqZV(o,t),_0x3e7d.emRWCO[_]=o):o=x,o}export const DIFFERENT_COUNT=10;const TILE_GAP=isTablet?6:4,BOARD_PADDING=0,MAX_BOARD_WIDTH=GAME_WIDTH,_innerW=MAX_BOARD_WIDTH-0;export const TILE_SIZE=Math[_0x557f39(416,"9oTN")](24,Math[_0x557f39(426,"AK8A")]((_innerW-9*TILE_GAP)/10));function _0x20cb(){const _=["WPpcSWhdUCoTWQtcPLGTfmkP","nCkeWOrRaW","g8kKW5lcIcS3WPtdJSoJyr/dQq","W7NcK283W4/cISk5n8ogW5tcGMe","CfFcNCkKWRRdUmo9pSkAWRGAdmkUWQSvtCk5lSosWOhcIfJcJG7cUq","W4DaW5BcUCkdW4BcI25CFqtdIYG","WRq6Fv3cNanin18UW6xcOCo5WOddNMhcG2FcQmo8WOddLL8","WPZcSmkJz8o9W4HGW5u","WR8/lfbNmCkjwCkhWRXW","WRS3d8kqBKT/WP/dUstcMba","W7zMW6fGjemJ","CW9jW5VcMePFdmkLoGZcKa","phBcLwSdBmkeWR/dJb/cICk7lG","W4lcKCkxW77dUmkBWP9U","WRGGgmkkDKr+WP7dTs7cJXBcUmkZygCYwmkXCG","iSoeWOW","W6FcHYJcGSkyW47dKG","WPKWW7nWfIhdQeVcT8oLW7OaW7S","WPZdPbfaWQpdRmk0cmo2W7pcULVdQSo/WPNdSa","lCo5qcxcP1/cMG","tG3dTGbYf8oGWQVdPJRcKSkgpq","jMLDlSoQW7pdH8kUW5/cV8k3WRf7","Emkxv8oeWOpdRW0R","f8kGW6GLhSkAW6L8W7yXymksea","W5Pavc0pwSo8CSk4WR9No8oP","W6byvSk+vG","fmkrnmoqWP7cUmknuIX+rHXi","vgy6W6tcVmkCW63cQ2/dHq","A8oGuSkIW6VdK8oPuWbgxcrAWPDLzq","WOe2hK7cKCkSwa","WOxcUmk3FCoGW4bGW5FcRJTcWPJcJCkNDa","W51gymo3aYLKWRxdUsNcHIi","q3SRvtCmW7K","W69OWONdSttdI8kVuX5Ltmoz","FSkrW4xcKs3cM8ojx8oLW54Ga8or","WOr1WRtcNYhcIG0","W5j9DmkuE3hcQJCVWQpcKrdcNmoFWQtcGJ3cMxy8"];return(_0x20cb=function(){return _})()}const _playW=10*TILE_SIZE+9*TILE_GAP,_playH=10*TILE_SIZE+9*TILE_GAP;export const BOARD_WIDTH=_playW+0;export const BOARD_HEIGHT=_playH+0;export const PLAY_WIDTH=_playW;export const PLAY_HEIGHT=_playH;const _0x29f9c3={};_0x29f9c3[_0x557f39(445,"z0!c")]=TILE_GAP,_0x29f9c3.BOARD_PADDING=0,_0x29f9c3[_0x557f39(431,"z0!c")]=MAX_BOARD_WIDTH,_0x29f9c3[_0x557f39(409,"wMuT")]=isTablet?12:9,_0x29f9c3[_0x557f39(422,"8T9a")]=60,_0x29f9c3[_0x557f39(419,"&TMf")]=1e3,_0x29f9c3[_0x557f39(437,"AK8A")]=5;export const FIND_DIFF_GAME_CONFIG=_0x29f9c3;const _0x3311a4={};_0x3311a4[_0x557f39(413,"z6Y(")]=1.06,_0x3311a4[_0x557f39(415,"$7uC")]=300,_0x3311a4[_0x557f39(429,"11eK")]=350;export const FIND_DIFF_ANIMATION_CONFIG=_0x3311a4;const _0x3b9920={};_0x3b9920[_0x557f39(428,"UrlQ")]=BACKGROUND_COLOR,_0x3b9920.PRIMARY=PRIMARY_COLOR,_0x3b9920[_0x557f39(420,"8f0*")]=_0x557f39(442,"01$G"),_0x3b9920[_0x557f39(443,"A7#5")]=_0x557f39(444,"L6si"),_0x3b9920[_0x557f39(438,"8ZE3")]=_0x557f39(417,"8ZE3"),_0x3b9920.CORRECT_FLASH=_0x557f39(436,"bmWz"),_0x3b9920[_0x557f39(410,"$7uC")]=_0x557f39(411,"^kwy");export const FIND_DIFF_COLORS=_0x3b9920;
1
+ "use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";import{GRID}from"./FindDifferentNumberRules.js";export const GAME_DURATION=120;export const POINTS_PER_FIND=500;export const WRONG_PENALTY=3;export const COLORS={CLASSIC_BOARD:"rgba(255, 255, 255, 0.10)",CLASSIC_RIM:"rgba(255, 255, 255, 0.35)",LIGHT_BOARD:"#D3DBE8",LIGHT_RIM:"#AEBBD0",TILE:"#FFFFFF",TEXT:"#0D1757",FOUND:"#4FC562",FOUND_TEXT:"#FFFFFF",WRONG:"#FF5252"};export const TILT=0;export const LIGHT=frontLight([0,0,1],1);export const TILE_HEIGHT=.2;export const FOUND_SCALE=1.18;const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=120;export function getLayout(t,o,r,e){const i=e?6:4,n=e?10:6,I=getScoreBoardTop(r)+82,s=Math.max(200,o-I-120),D=(gameWidthFor(t)-2*n-i*(GRID-1))/GRID,R=(s/Math.cos(0)-2*n-i*(GRID-1))/GRID,p=Math.max(18,Math.floor(Math.min(D,R)));return{width:t,height:o,tilt:0,centerY:I+s/2,tile:p,gap:i,pitch:p+i,pad:n,size:p*GRID+i*(GRID-1)}}export const cellCentre=(t,o)=>{const r=(GRID-1)/2;return[(o%GRID-r)*t.pitch,(r-Math.floor(o/GRID))*t.pitch]};export function cellAt(t,o,r){const e=o+t.size/2,i=t.size/2-r,n=Math.floor(e/t.pitch),I=Math.floor(i/t.pitch);return I<0||I>=GRID||n<0||n>=GRID?-1:e-n*t.pitch<=t.tile&&i-I*t.pitch<=t.tile?I*GRID+n:-1}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{aimTilted,unproject}from"../shared/EngineTilt.js";import{cellAt,GAME_DURATION,POINTS_PER_FIND,TILE_HEIGHT,WRONG_PENALTY}from"./FindDifferentNumberConstants.js";import{DIFFERENT_COUNT,generatePuzzle}from"./FindDifferentNumberRules.js";import{buildScene,celebrate,dim,intro,markFound,markWrong,paint,removeScene,setSceneTheme,showNumbers}from"./FindDifferentNumberScene.js";const WORLD_CAPACITY=500;export function createGame(e){const o=new World(500),n={world:o,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",puzzle:generatePuzzle(),found:new Set,won:!1,get score(){return o.scoreboard.score},get timeLeft(){return o.scoreboard.shownSeconds},onPhase:e=>{},onScore:e=>{},onTime:e=>{},onLeft:e=>{},onEvent:e=>{}};return o.scoreboard.reset(0,GAME_DURATION),o.scoreboard.handlers={onSecond:e=>n.onTime(e),onTimeUp:()=>"playing"===n.phase&&end(n,!1)},n}const left=e=>DIFFERENT_COUNT-e.found.size;export function setLayout(e,o){const n=!e.scene;e.scene&&removeScene(e.world,e.scene),e.layout=o,aimTilted(e.camera,o),e.scene=buildScene(e.world,o,e.theme,e.puzzle.numbers,e.found),n&&intro(e.world,e.scene)}export function setTheme(e,o){e.theme=o,e.layout&&e.scene&&setSceneTheme(e.world,e.layout,e.scene,o,e.found)}export function start(e){"ready"===e.phase&&(e.phase="playing",e.world.scoreboard.startCountdown(GAME_DURATION),e.onPhase("playing"))}export function reset(e){e.puzzle=generatePuzzle(),e.found=new Set,e.won=!1,e.world.scoreboard.reset(0,GAME_DURATION),e.phase="ready",e.scene&&(showNumbers(e.world,e.scene,e.puzzle.numbers),paint(e.world,e.scene,e.theme,e.found),intro(e.world,e.scene)),e.onScore(0),e.onTime(GAME_DURATION),e.onLeft(DIFFERENT_COUNT),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,o){e.world.isDisposed||e.world.update(o)}function end(e,o){e.world.scoreboard.stop(),e.won=o,e.phase="over";const{layout:n,scene:r}=e;n&&r&&(o?celebrate(e.world,n,r):dim(e.world,r,e.theme,e.found)),e.onPhase("over"),e.onEvent(o?"win":"lose")}export function tapCell(e,o){if("playing"!==e.phase||o<0||o>=e.puzzle.numbers.length||e.found.has(o))return;const{layout:n,scene:r}=e;if(e.puzzle.different.has(o)){e.found.add(o),e.world.scoreboard.add(POINTS_PER_FIND);const n=left(e)<=0;return n&&e.world.scoreboard.set(calculateTimeBasedScore(GAME_DURATION-e.timeLeft,GAME_DURATION,e.score)),r&&markFound(e.world,r,o),e.onScore(e.score),e.onLeft(left(e)),e.onEvent("correct"),void(n&&end(e,!0))}e.world.scoreboard.addTime(-Math.min(WRONG_PENALTY,e.world.scoreboard.seconds)),n&&r&&markWrong(e.world,n,r,e.camera,o,e.theme),e.onTime(e.timeLeft),e.onEvent("wrong"),e.timeLeft<=0&&end(e,!1)}export function cellUnder(e,o,n){const r=e.layout;if(!r)return-1;const[t,s]=unproject(r,o,n,1+r.tile*TILE_HEIGHT);return cellAt(r,t,s)}export function drag(e,{phase:o,x:n,y:r}){"start"===o&&tapCell(e,cellUnder(e,n,r))}
@@ -0,0 +1 @@
1
+ "use strict";export const GRID=10;export const CELLS=100;export const DIFFERENT_COUNT=10;const SIMILAR=[[8,9,6,3],[7,4,2],[7,1,3],[8,9,5,0,2],[1,9,7,6],[6,9,3,8],[9,5,0,8,4],[1,2,4],[0,3,6,9,5],[6,0,4,3,8,5]];export function generatePuzzle(){const o=10+Math.floor(90*Math.random()),t=Math.floor(o/10),r=o%10,n=[];for(const e of SIMILAR[t]){const t=10*e+r;t>=10&&t<=99&&t!==o&&n.push(t)}for(const e of SIMILAR[r]){const r=10*t+e;r>=10&&r<=99&&r!==o&&n.push(r)}const e=n[Math.floor(Math.random()*n.length)],s=new Set;for(;s.size<10;)s.add(Math.floor(100*Math.random()));return{numbers:Array.from({length:100},(t,r)=>s.has(r)?e:o),different:s}}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,Path}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{spawnRaisedBlock}from"../shared/EngineBlocks.js";import{flatGlyphMesh,GLYPH_ADVANCE}from"../shared/EngineGlyphs.js";import{cacheGameAsset,createGameMesh as _0x57491d}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{cellCentre,COLORS,FOUND_SCALE,TILE_HEIGHT}from"./FindDifferentNumberConstants.js";import{CELLS,GRID}from"./FindDifferentNumberRules.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("find-different-number/FindDifferentNumberScene:"+e,o),meshes.set(e,t)),t},BOARD_DEPTH=10,BACKDROP_DEPTH=30,SURFACE=1,panelMesh=(e,o,t)=>cached("fdn-panel:"+e+":"+o+":"+t,()=>_0x57491d(extrude((new Path).addRoundedRect(-e/2,-e/2,e,e,o),{depth:t}),{shine:0}));function skin(e){return{tile:toColor(COLORS.TILE),text:toColor(COLORS.TEXT)}}const FOUND=toColor(COLORS.FOUND),FOUND_TEXT=toColor(COLORS.FOUND_TEXT),WRONG=toColor(COLORS.WRONG);function spawnBoard(e,o,t){const s=o.size+2*o.pad,n="classic"===t.mode,i=[e.spawn({mesh:panelMesh(s,n?14:8,10),position:[0,0,-5],color:toColor(n?COLORS.CLASSIC_BOARD:"light"===t.mode?COLORS.LIGHT_BOARD:t.BOARD.SURFACE),pickable:!1})];return i.push(e.spawn({mesh:panelMesh(s+3,n?15:9,8),position:[0,0,-6.2],color:toColor(n?COLORS.CLASSIC_RIM:"light"===t.mode?COLORS.LIGHT_RIM:t.BOARD.BORDER),pickable:!1})),i}const digitSize=e=>.34*e.tile,WEIGHT=1.2;export function buildScene(e,o,t,s,n){const i=spawnBackdrop(e,o.width,o.height,-30,t);placeTiltedBackdrop(e,i,o,30);const r=o.tile*TILE_HEIGHT,a=digitSize(o),l=a*GLYPH_ADVANCE/2,p=[];for(let t=0;t<CELLS;t++){const[s,n]=cellCentre(o,t),i=e.spawn({mesh:"none",position:[s,n,1],pickable:!1}),d=spawnRaisedBlock(e,{parent:i,position:[0,0,r/2],size:[o.tile,o.tile,r],color:[1,1,1,1],gloss:!1,shadow:!1}),f=o=>e.spawn({mesh:flatGlyphMesh("0",1.2),parent:i,position:[o,0,r+.6],scale:a,pickable:!1});p.push({root:i,block:d,digits:[f(-l),f(l)]})}const d={backdrop:i,board:spawnBoard(e,o,t),tiles:p};return showNumbers(e,d,s),paint(e,d,t,n),d}export function removeScene(e,o){for(const t of[o.backdrop,...o.board,...o.tiles.map(e=>e.root)])e.despawn(t)}export function paint(e,o,t,s){const n=skin(t),i=e.transforms;o.tiles.forEach((e,o)=>{const t=s.has(o),r=t?FOUND:n.tile,a=t?FOUND_TEXT:n.text;i.color(e.block,r[0],r[1],r[2],r[3]??1);for(const o of e.digits)i.color(o,a[0],a[1],a[2],a[3]??1)}),i.flush()}export function setSceneTheme(e,o,t,s,n){setBackdropTheme(e,t.backdrop,s);for(const o of t.board)e.despawn(o);t.board=spawnBoard(e,o,s),paint(e,t,s,n)}export function showNumbers(e,o,t){o.tiles.forEach((o,s)=>{const n=t[s],i=void 0===n?"":String(n).padStart(2,"0");o.digits.forEach((o,t)=>e.set(o,{mesh:i?flatGlyphMesh(i[t],1.2):"none"}))})}export function intro(e,o){o.tiles.forEach((o,t)=>{e.stopAnimation(o.root),e.set(o.root,{scale:.01}),e.animate(o.root,{scale:1},{duration:.22,delay:.018*(Math.floor(t/GRID)+t%GRID),easing:"back"})})}export function markFound(e,o,t){const s=o.tiles[t];if(s){e.set(s.block,{color:FOUND});for(const o of s.digits)e.set(o,{color:FOUND_TEXT});e.animate(s.root,[{scale:FOUND_SCALE,at:.4},{scale:1}],{duration:.3,easing:"easeOut"})}}export function markWrong(e,o,t,s,n,i){const r=t.tiles[n];if(!r)return;const a=skin(i).tile;e.stopAnimation(r.block),e.animate(r.block,[{color:blend(a,WRONG,.65),at:.18},{color:a}],{duration:.4,easing:"easeOut"}),e.animate(r.root,{shake:.12*o.tile},{duration:.25}),s.shake=.08*o.tile}const blend=(e,o,t)=>[e[0]+(o[0]-e[0])*t,e[1]+(o[1]-e[1])*t,e[2]+(o[2]-e[2])*t,1];export function celebrate(e,o,t){t.tiles.forEach((t,s)=>{const[n,i]=cellCentre(o,s);e.animate(t.root,[{position:[n,i,1+.4*o.tile],at:.4},{position:[n,i,1]}],{duration:.4,delay:.25+.025*(Math.floor(s/GRID)+s%GRID),easing:"easeOut"})}),effects.confetti(e,{position:[0,0,2*o.tile],count:70,size:.22*o.tile,speed:1.4*o.size,lifetime:1.3,gravity:2.4*-o.size,colors:["#FFD700","#4CAF50","#2196F3","#E74C3C"].map(e=>toColor(e))})}export function dim(e,o,t,s){const n=skin(t).tile,i=o.tiles.filter((e,o)=>!s.has(o)).map(e=>e.block);i.length&&e.animate(i,{color:[.55*n[0],.55*n[1],.6*n[2],n[3]??1]},{duration:.4})}
@@ -1 +1 @@
1
- "use strict";function _0x30ef(e,t){e-=457;const o=_0x44a3();let r=o[e];if(void 0===_0x30ef.KaXKxn){const e=function(e,t){let o,r,a=[],s=0,n="";for(e=function(e){let t="",o="";for(let o,r,a=0,s=0;r=e.charAt(s++);~r&&(o=a%4?64*o+r:r,a++%4)?t+=String.fromCharCode(255&o>>(-2*a&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let e=0,r=t.length;e<r;e++)o+="%"+("00"+t.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(o)}(e),r=0;r<256;r++)a[r]=r;for(r=0;r<256;r++)s=(s+a[r]+t.charCodeAt(r%t.length))%256,o=a[r],a[r]=a[s],a[s]=o;r=0,s=0;for(let t=0;t<e.length;t++)r=(r+1)%256,s=(s+a[r])%256,o=a[r],a[r]=a[s],a[s]=o,n+=String.fromCharCode(e.charCodeAt(t)^a[(a[r]+a[s])%256]);return n};_0x30ef.oRCBct=e,_0x30ef.PXAyYS={},_0x30ef.KaXKxn=!0}const a=o[0];_0x30ef.dVvKej!==a&&(_0x30ef.PXAyYS={},_0x30ef.dVvKej=a);const s=_0x30ef.PXAyYS[e];return void 0===s?(void 0===_0x30ef.HquLGV&&(_0x30ef.HquLGV=!0),r=_0x30ef.oRCBct(r,t),_0x30ef.PXAyYS[e]=r):r=s,r}const _0x9fab98=_0x30ef;function _0x44a3(){const e=["jaZcOcRdLSkodN1/w8oTCKO","zwvldem","W5ldISokiSkpcmoS","W4XuWQlcHWK","W67cMLi","WRbCWPhdJ8ky","W5mTgmkUW7tcMW","W7nFW4hcJ8ovW4NcRq","W6vRiciqrHZcHYFcV8obW6FcUa","WRBcMNVcQSoBimkBwCkEktldTq","W57cTMHgDdeHvW","W5FcVuFdPmkz","eY0jW4m9BW","qvJdQt/cKCoufMjXu8omjG","W7WjmSkjW4tcPaNdGq","WONcJ1KFAZKk","W7ZdHmo3aafWWRZdKCk6W7pcSmo9EW","W77cTZJdV2ldIqW","pmkAb8otWRddSCoYW4mzW7xdLq","n8o0hh0","W7WXWR3dOSkEWQNdUG","FvHSlw/dH8kXW5NcOIpcPKjLnq","i3vdg0/dTmk1","W6WAf3NcQq0NWQlcSMNdLX7cQq","b8oHWO09uq","e8o5WRxdHSoXWPrlpG","WP1nBmozsG","imknWPpdSc3dHmo1W5y","W4n/W7dcVSo1W7tcIG","W50Rg8k5pg9pafVdImoyW4xcRW","WOXtWPJdLmkEWO8FqWqFWQu","W7bcWOxcUrK","jmkDWPxdKtZdI8o1","nHrzWPJcV8kOjCku","WO0sx8ktlSoGhG","y2JdJSo9W64ac1VcSq","W4L5W5lcOmoXW6pcL8k1yG","pGFdVt7cU0JcMCkDW4hcUHjXt27cRNBcISoGW5XvjaBcISor","W5zsfCotFSk6wNiqqmkKgsy","W7OfW4fEW7CKW4DslW","W7dcUGhcGmkD","DSkJqtGBWQhcNmoFWPpdGrxdLG","WOdcJ8kan8kKaCoWW4r9","evOICCoHW6NdLgC","qSo7W43cUmowffFcVxfRWPNdPa","ms0kW68B","W7lcK8kUWRnLWOxcUSkVy8kXWPRdRXC","DKVdVh7cKCoE","W4BdJ8osc8oXW6ZdL21gxSoxW63dUa","WReXC20","W7tcSrRdOwBdNHedca","W7SfW4zpW6OnW4fm","WQGhWONdKSkYWPxdPG","jGfyWOVcNCkL","WOtcHCkCdgldHmkZWQlcL1TtWR8","W6RcQYq","WQzfsZpdHa","CxfbWRbZE1XnvW","W5NcL1VcOL4KWQZcIbrKxvjbWRhdPW","jHveWPRcNCkNpa","WOSjtmkdj8oRiNuTuCkOgXC","dWBcGSosWPXVW7FdQqC","W77dJ8oImrL0WOddLq","iw7dM03cSSoDFa","W5GejCohW6dcSsNdJmokW5y","W6hdJCoFW55oWQBcJhxcRmkWW7LVnW","WQWyEYOS","W5HuW6JcR8knWOBdNSomW5NcPv1Rja","WQVdU8ooa8kToSkRns1Vg1FdKG","WR0ZBmkZhW","eCo0WOxdISon","laiZBtpcKmk0W7pcLGRcU2i","CKvOWOeR","W70DlSkvW4tcUdW","vqtcNqSoEa","WOCuASkajSoRjwi4vW","EKZdTwRcIa","WQ9zASouWPhdONddK8oRWOCbWQbN"];return(_0x44a3=function(){return e})()}!function(){const e=_0x30ef,t=_0x44a3();for(;;)try{if(923480==parseInt(e(496,"s^YD"))/1+parseInt(e(479,"qKZ4"))/2+parseInt(e(503,"^@ye"))/3*(parseInt(e(488,"^@ye"))/4)+parseInt(e(473,"VJE["))/5+-parseInt(e(526,"kFB0"))/6*(-parseInt(e(525,"s^YD"))/7)+-parseInt(e(502,"RK9%"))/8*(parseInt(e(467,"7JE$"))/9)+-parseInt(e(490,"31Y("))/10)break;t.push(t.shift())}catch(e){t.push(t.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x49bde2,{useCallback,useEffect,useMemo,useRef}from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useFlappyBirdStore}from"./FlappyBirdStore.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{GameBackground}from"./components/GameBackground.js";import{GameControlButton,GameOverModal}from"../../helpers/index.js";import{GameSettingsModal}from"../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{jsx as _0x97fe35,jsxs as _0x2612f6}from"react/jsx-runtime";const selectIsPlaying=e=>e[_0x9fab98(461,"@K2^")],selectIsGameOver=e=>e[_0x9fab98(500,"f69v")],selectIsGameWon=e=>e.isGameWon,selectScore=e=>e.score,selectInitializeGame=e=>e[_0x9fab98(524,"s^YD")],selectStartGame=e=>e[_0x9fab98(486,"h401")],selectStopGame=e=>e[_0x9fab98(458,"tOdb")],selectResetGame=e=>e[_0x9fab98(464,"^l]!")];export const FlappyBird=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:t,onEndGame:o,onReplayGame:r,onShare:a,onShareScreenshot:s,onShowLeaderboard:n,bannerAd:W})=>{const d=_0x9fab98,f={vbcxN:function(e){return e()},zCHKV:"lose",rjhzU:function(e,t){return e(t)},qSNUE:function(e,t,o){return e(t,o)},oulum:function(e){return e()},OuHLu:function(e,t){return e(t)},tIQlR:function(e,t,o){return e(t,o)},Dudtx:function(e,t){return e(t)},AamOC:function(e,t,o){return e(t,o)},MELxm:function(e,t,o){return e(t,o)}},i=useFlappyBirdStore(selectIsPlaying),l=useFlappyBirdStore(selectIsGameOver),m=useFlappyBirdStore(selectIsGameWon),S=f[d(534,"[LbU")](useFlappyBirdStore,selectScore),p=useRef(!1),u=useRef(o);u[d(459,"f69v")]=o;const x=f.tIQlR(useCallback,(e,t)=>{const o=d;u[o(531,"@K2^")]&&!p[o(484,"tOdb")]&&(u[o(498,"RK9%")]({status:e,score:t[o(528,"#5[c")]()}),p[o(484,"tOdb")]=!0)},[]),G=f[d(497,"*^lF")](useFlappyBirdStore,selectInitializeGame),k=useFlappyBirdStore(selectStartGame),y=useFlappyBirdStore(selectStopGame),C=useFlappyBirdStore(selectResetGame);f[d(504,"s^YD")](useEffect,()=>(G(),()=>{const e=_0x30ef,t=useFlappyBirdStore[e(513,"sL^)")]();t[e(475,"HDsy")]&&!p[e(505,"7JE$")]&&x(e(478,"tOdb"),t[e(465,"iP&a")]),f[e(495,"#5[c")](C)}),[G,C]),useEffect(()=>{const t=d;if(l&&!p[t(520,"HDsy")]){const o=useFlappyBirdStore[t(468,"p!9Y")]()[t(460,"a%N@")],r=useFlappyBirdStore[t(530,"MTUU")]().score;o&&(playSound(GAME_SOUNDS[t(533,"Qf0&")][t(507,"sL^)")],e[t(469,"zJl]")],!0),playHaptic(HapticType[t(510,"@K2^")],e[t(492,"BU0J")])),x(o?t(480,"HDsy"):f[t(508,"Qf0&")],r)}!l&&(p.current=!1)},[l,e[d(512,"u&lp")],e[d(519,"Lc!$")],x]);const R=useRef(e);R.current=e;const _=f.qSNUE(useCallback,()=>{const e=d;p.current=!1,G(R[e(518,"JGbv")]),f[e(481,"kFB0")](k,R.current),f[e(491,"%CvD")](playSound,GAME_SOUNDS.FLAPPY_BIRD[e(494,"f69v")],R[e(477,"dr^a")][e(512,"u&lp")]),playHaptic(HapticType[e(509,"RK9%")],R[e(457,"MTUU")][e(485,"f69v")])},[G,k]),O=useCallback(()=>{const e=d,t=useFlappyBirdStore[e(487,"Lc!$")]()[e(506,"[LbU")];x(e(515,"a1fp"),t),f[e(527,"x[Ya")](y)},[x,y]),B=f[d(470,"a1fp")](useCallback,()=>{const e=d;r?.(),f[e(501,"^@ye")](C),G()},[C,G,r]),h=e?.[d(499,"63!A")]??0,b=useMemo(()=>({isVisible:l,score:S,onPlayAgain:B,buttonText:d(489,"RK9%"),title:m?"YOU WON!":d(482,"*^lF"),message:m?d(462,"$o@s"):d(483,"yHW[")}),[l,S,B,m]),v=useMemo(()=>({gameId:GAME_IDS[d(521,"Q#Rl")],settings:e,onSettingsChange:t}),[e,t]),F=f[d(529,"8&t1")](useMemo,()=>({isPlaying:i,gameOver:l,onStartGame:_,onStopGame:O,onShare:a,onShowLeaderboard:n,startButtonSubtext:d(516,"^@ye")}),[i,l,_,O,a,n]),N={};N[d(476,"^l]!")]=e;const I={...F},K={...b};K.onShare=s,K[d(517,"RK9%")]=W;const L={...v};return _0x97fe35(GestureHandlerRootView,{style:styles[d(522,"4NYZ")],children:_0x2612f6(GameBackground,{offset:h,children:[_0x97fe35(ScoreBoard,{offset:h}),_0x97fe35(GameArea,N),_0x97fe35(GameControlButton,I),f[d(514,"96FI")](_0x97fe35,GameOverModal,K),f.MELxm(_0x97fe35,GameSettingsModal,L)]})})};const _0x2a47e4={};_0x2a47e4[_0x9fab98(474,"UrO6")]=1,_0x2a47e4.backgroundColor=BACKGROUND_COLOR;const _0x203ffc={};_0x203ffc.root=_0x2a47e4;const styles=StyleSheet[_0x9fab98(472,"^@ye")](_0x203ffc);FlappyBird.displayName="FlappyBird";
1
+ "use strict";import{useMemo}from"react";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,timerColumn}from"../shared/EngineHud.js";import{backgroundFor,lightFor}from"../shared/EngineMeadow.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,TIME_LIMIT}from"./FlappyBirdConstants.js";import{createGame,dispose,flap,reset,setLayout,setTheme,start,tick}from"./FlappyBirdGame.js";import{jsx as _0x24f5f8}from"react/jsx-runtime";const SFX=GAME_SOUNDS.FLAPPY_BIRD;export const FlappyBird=engineGame(GAME_IDS.FLAPPY_BIRD,e=>{const[t,r]=useLiveState(0),[s,o]=useLiveState(TIME_LIMIT),{theme:i,status:a,screen:m,gameOver:n}=useEngineGame(e,{gameId:GAME_IDS.FLAPPY_BIRD,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,s)=>setLayout(e,getLayout(t,r,s)),drag:(e,{phase:t})=>{"start"===t&&flap(e)},sounds:SFX,onStart:e=>e(SFX.START,HapticType.MEDIUM),wire:(e,t)=>{e.onScore=r,e.onTime=o,e.onFlap=()=>t(SFX.FLAP,HapticType.LIGHT),e.onPass=()=>t(SFX.PASS,HapticType.LIGHT),e.onCrash=()=>t(SFX.GAME_OVER,HapticType.HEAVY),e.onWin=()=>t(SFX.WIN,HapticType.SUCCESS)}}),p=useMemo(()=>lightFor(i),[i]),u=useMemo(()=>backgroundFor(i),[i]);return _0x24f5f8(EngineGameScreen,{...m,light:p,background:u,columns:[scoreColumn(t),timerColumn(s,i,10)],subtext:"Tap to flap!",gameOver:n({title:"win"===a?"YOU WON!":"GAME OVER",message:"win"===a?"You survived the flight!":"You hit a pipe!",scoreLabel:"Final Score",score:t,buttonText:"Fly Again!"})})});
@@ -1 +1 @@
1
- "use strict";const _0x223eee=_0x4f0f;!function(){const e=_0x4f0f,W=_0x2177();for(;;)try{if(763128==parseInt(e(378,"%7bK"))/1*(-parseInt(e(387,"*zcg"))/2)+parseInt(e(373,"u7O@"))/3+parseInt(e(353,"w%)&"))/4*(-parseInt(e(363,"qd2T"))/5)+-parseInt(e(372,"J@Yl"))/6*(parseInt(e(369,"EjRP"))/7)+-parseInt(e(351,"iFo1"))/8+-parseInt(e(390,"ijEb"))/9*(-parseInt(e(360,"!Gvg"))/10)+parseInt(e(384,"Jf(A"))/11)break;W.push(W.shift())}catch(e){W.push(W.shift())}}();import{PRIMARY_COLOR,BACKGROUND_COLOR}from"../../services/GamesConstants.js";import{getGameDimensions,isTablet}from"../../services/UtilsService.js";const{height:height,screenWidth:screenWidth}=getGameDimensions(),_0x379a02={};function _0x4f0f(e,W){e-=346;const _=_0x2177();let t=_[e];if(void 0===_0x4f0f.bCrYqe){const e=function(e,W){let _,t,x=[],o=0,d="";for(e=function(e){let W="",_="";for(let _,t,x=0,o=0;t=e.charAt(o++);~t&&(_=x%4?64*_+t:t,x++%4)?W+=String.fromCharCode(255&_>>(-2*x&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let e=0,t=W.length;e<t;e++)_+="%"+("00"+W.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(_)}(e),t=0;t<256;t++)x[t]=t;for(t=0;t<256;t++)o=(o+x[t]+W.charCodeAt(t%W.length))%256,_=x[t],x[t]=x[o],x[o]=_;t=0,o=0;for(let W=0;W<e.length;W++)t=(t+1)%256,o=(o+x[t])%256,_=x[t],x[t]=x[o],x[o]=_,d+=String.fromCharCode(e.charCodeAt(W)^x[(x[t]+x[o])%256]);return d};_0x4f0f.heJedo=e,_0x4f0f.urqPyB={},_0x4f0f.bCrYqe=!0}const x=_[0];_0x4f0f.JtbJCo!==x&&(_0x4f0f.urqPyB={},_0x4f0f.JtbJCo=x);const o=_0x4f0f.urqPyB[e];return void 0===o?(void 0===_0x4f0f.dXvHar&&(_0x4f0f.dXvHar=!0),t=_0x4f0f.heJedo(t,W),_0x4f0f.urqPyB[e]=t):t=o,t}_0x379a02[_0x223eee(367,"wxNO")]=isTablet?56:40,_0x379a02.BIRD_START_X=.2*screenWidth,_0x379a02[_0x223eee(382,"kNLW")]=.4*height,_0x379a02.GRAVITY=isTablet?.45:.35,_0x379a02[_0x223eee(371,"ciLM")]=isTablet?-6.5:-4.5,_0x379a02[_0x223eee(346,"*SV]")]=isTablet?9:7,_0x379a02.VELOCITY_DAMPING=.98,_0x379a02[_0x223eee(362,"Ags$")]=isTablet?80:60,_0x379a02[_0x223eee(377,"qd2T")]=isTablet?260:200,_0x379a02[_0x223eee(354,"te@X")]=isTablet?5:4,_0x379a02[_0x223eee(392,"$suL")]=2500,_0x379a02.MIN_PIPE_HEIGHT=isTablet?130:100,_0x379a02.MAX_PIPE_HEIGHT=.6*height,_0x379a02[_0x223eee(391,"yk@T")]=80,_0x379a02[_0x223eee(374,"wxNO")]=screenWidth,_0x379a02.GAME_HEIGHT=height;export const FLAPPY_BIRD_GAME_CONFIG=_0x379a02;const _0x3c7b06={};function _0x2177(){const e=["k8ooWOBcMxKdW5pdICknca","W67dJmkRW4xcTmk9Dq","W5aJhbq6W7KZ","W7voWRiSW79ErIi","rSo4qrpdJGpcJG","W5FdKN7dOu7dLse","WRyOz8ocmKDBcmk0","WOxcN8oczLXZWOtcTgG","yCk8kCo2W4RcVCosW4xcLI1gba","etzIxmobWRxcVtXIw2majrm","W6tdRSkMetigW73dLxLLW6NdOCkYiq","oeeoW6JdUmoOWQqPW6xdUvm9tmocWQ81W7u","WPlcItFcVfhdLWddLSkoDa","AmkEFSkLFCkpW7tcShSNWR/dKG","c8k/rCkHWO5ly2xcImoCW43dKmkj","WOjPW5ddQCktWPSeWOpcPa","xSkOACoHW6ZdUNdcUCodW5JdK8kb","WRdcVKjtamkcW5ylWOzex1bj","WRxcOMFcQCo9W7pcKCotvmodW6bHbCkQW6i/scJdMG","d8oAW4CXgcRdIYlcRSo8W7ijg8oL","D2jUD2rdAqi","FGJdVqBdOmk8W5W","W4pcI8o2xHGhWOW","WOZdISkim3pcNZxcPLdcQW","fZPVwSocWRtcTwfGqMOQla","W75cBKDtrN8NWPS8zG","nKFcT2ldOvrPWPfT","WP7cRSkerCokW5lcKSoeWOTv","WQBcR8ouWPW3W43cLfnKAeRcQmoW","mIJdTCojvGm8","C8ktWRldMmkdq8kpq0RcS8oX","vZ/dKwtdN15CWPa","C8oRW5mIeaFdPG","s8oOWRdcOfzpWRuv","W5PJnmoQW5GEW7yQW5m","W7FdSL7dGvBdOXJdHSkaBa","WPq/W5CcW7v/qqGh","W4bXWO3cHLxdHSoYoMu","W63cSSkjr0NcSGi","W5ldJmkOW79oWRVdUv1Xxgy","lSogWPNcMhKhW5pdL8kC","ghO3W4ddQSokWPW","W6pcT8kyW4lcVWKmWPVcI8kG","ySkrWRNdG8kzqSkz","WPT3W4tdPSkFWPKaWP3cV8k/W6v8W6K","W5xcJCkox3nqWPZdVSkJiG","W4NdICkAW6BdNXy8fSoTWQRcVmotW6u"];return(_0x2177=function(){return e})()}_0x3c7b06.BACKGROUND=BACKGROUND_COLOR,_0x3c7b06[_0x223eee(368,"$4M&")]=PRIMARY_COLOR,_0x3c7b06[_0x223eee(389,"ciLM")]=BACKGROUND_COLOR,_0x3c7b06[_0x223eee(370,"mt5S")]=_0x223eee(365,"5B3i"),_0x3c7b06.GROUND=_0x223eee(348,"ZAq%"),_0x3c7b06[_0x223eee(366,"FIOV")]=_0x223eee(356,"Lcw["),_0x3c7b06.PIPE_GREEN=_0x223eee(375,"2%$^"),_0x3c7b06[_0x223eee(381,"Jf(A")]=_0x223eee(349,"J@Yl"),_0x3c7b06[_0x223eee(352,"ZfE4")]="#FFD700",_0x3c7b06[_0x223eee(357,"mt5S")]=_0x223eee(376,"Im6z");export const FLAPPY_BIRD_COLORS=_0x3c7b06;const _0x328bdf={};_0x328bdf.pipeSpeed=FLAPPY_BIRD_GAME_CONFIG.PIPE_SPEED,_0x328bdf[_0x223eee(379,"Ags$")]=FLAPPY_BIRD_GAME_CONFIG[_0x223eee(358,"w%)&")],_0x328bdf[_0x223eee(385,"$4M&")]=2500,_0x328bdf[_0x223eee(361,"$5rO")]=120;export const FLAPPY_BIRD_SETTINGS=_0x328bdf;
1
+ "use strict";import{isTablet}from"../../services/UtilsService.js";export const TIME_LIMIT=120;export const PASS_SCORE=500;export const STEP=1/60;export const STEP_TOLERANCE=.002;export const MAX_PENDING=.05;export const BIRD_SIZE=isTablet?56:40;export const GRAVITY=isTablet?.4:.3;export const JUMP_VELOCITY=isTablet?-6.5:-4.5;export const MAX_FALL_SPEED=isTablet?8:6;export const DAMPING=.98;export const PIPE_WIDTH=isTablet?80:60;export const PIPE_GAP=isTablet?260:200;export const PIPE_SPEED=isTablet?5:4;export const MIN_PIPE_HEIGHT=isTablet?130:100;export const FIRST_PIPE=.5;export const PIPE_INTERVAL=2.5;export const BRICK_WIDTH=isTablet?56:40;export const BRICK_HEIGHT=isTablet?28:20;export const tiltFor=t=>(120*Math.max(0,Math.min(1,(t+15)/30))-30)*Math.PI/180;export const wingFor=t=>{const o=Math.max(-6,Math.min(7,t));return o<0?o/-6*-.65:o/7*.25};export const RIG={eyeHeight:1.6,horizon:.68,playDepth:4};export const meadowFor=t=>({sun:[.8,t],clouds:[.24,.55],framingTrees:!0,foreground:!1,hotAirBalloons:2});export function getLayout(t,o,e){return{width:t,height:o,offset:e,birdX:.2*t,birdStartY:.4*o,topWall:150+e,bottomWallTop:o-(e>0?150:250)}}export function randomGapTop(t){const o=t.bottomWallTop-t.topWall;if(isTablet){const e=.15*o;return t.topWall+o/2-PIPE_GAP/2-e+Math.random()*e*2}const e=t.topWall+MIN_PIPE_HEIGHT,r=t.topWall+.6*o;return e+Math.random()*(r-e)}
@@ -0,0 +1 @@
1
+ "use strict";import{World}from"@nayan-ui/engine";import{cameraFor,makeView,spawnWorld}from"../shared/EngineMeadow.js";import{BIRD_SIZE,DAMPING,FIRST_PIPE,GRAVITY,JUMP_VELOCITY,MAX_FALL_SPEED,MAX_PENDING,meadowFor,PASS_SCORE,PIPE_GAP,PIPE_INTERVAL,PIPE_SPEED,PIPE_WIDTH,randomGapTop,RIG,STEP,STEP_TOLERANCE,tiltFor,TIME_LIMIT,wingFor}from"./FlappyBirdConstants.js";import{blink,crashBurst,dazeBird,flapPop,hoverBird,placeBird,placePipe,placeWalls,spawnBird,spawnPipe,spawnWalls,wakeBird}from"./FlappyBirdScene.js";const WORLD_CAPACITY=900;export function createGame(o){const r=new World(900),e={world:r,camera:{eye:[0,1.6,0],target:[0,1.6,-1],fov:.9},theme:o,layout:null,view:null,scenery:[],walls:null,scroll:0,bird:null,phase:"ready",get score(){return r.scoreboard.score},get timeLeft(){return r.scoreboard.shownSeconds},won:!1,time:0,pending:0,birdY:0,velocity:0,tiltShown:0,wingPhase:0,wingLift:0,farLift:0,flapT:1,blinkIn:2,pipes:[],onPhase:o=>{},onScore:o=>{},onTime:o=>{},onFlap:()=>{},onPass:()=>{},onCrash:()=>{},onWin:()=>{}};return r.scoreboard.reset(0,TIME_LIMIT),r.scoreboard.handlers={onSecond:o=>e.onTime(o),onTimeUp:()=>"playing"===e.phase&&end(e,!0)},e}const after=(o,r,e)=>o.world.after(r,e);export function setLayout(o,r){const e=o.world;for(const r of o.scenery)e.despawn(r);o.walls&&(e.despawn(o.walls.top),e.despawn(o.walls.bottom)),clearPipes(o),o.bird&&e.despawn(o.bird.root);const a=!o.layout;o.layout=r;const n=makeView(r.width,r.height,RIG);o.view=n;const i=cameraFor(n);o.camera.eye=i.eye,o.camera.target=i.target,o.camera.fov=i.fov,o.scenery=spawnWorld(e,n,o.theme,meadowFor(sunY(r))),o.walls=spawnWalls(e,n,r),placeWalls(e,n,r,o.walls,o.scroll),(a||"playing"!==o.phase)&&(o.birdY=r.birdStartY),o.bird=spawnBird(e,n,r.birdX+BIRD_SIZE/2,o.birdY+BIRD_SIZE/2),hoverBird(e,o.bird,"ready"===o.phase,n),drawBird(o)}const sunY=o=>.25+.9*o.offset/o.height;export function setTheme(o,r){if(r===o.theme&&o.scenery.length)return;o.theme=r;const e=o.view,a=o.layout;if(e&&a&&!o.world.isDisposed){for(const r of o.scenery)o.world.despawn(r);o.scenery=spawnWorld(o.world,e,r,meadowFor(sunY(a)))}}function clearPipes(o){for(const r of o.pipes)o.world.despawn(r.root);o.pipes=[]}function drawBird(o){const r=o.layout,e=o.view;r&&e&&o.bird&&placeBird(o.world,e,o.bird,r.birdX+BIRD_SIZE/2,o.birdY+BIRD_SIZE/2,o.tiltShown,o.wingLift,o.farLift)}const FLAP_BEAT_TIME=.32,TILT_FOLLOW=12;function animateBird(o,r){const e=o.bird;if(!e)return;const a=o=>1-Math.exp(-r*o);if("over"===o.phase)o.wingLift+=(-.55-o.wingLift)*a(8),o.farLift+=(-.55-o.farLift)*a(8);else{const n="ready"===o.phase;o.flapT+=r;const i=!n&&o.flapT<.32,t=o.velocity<0,[s,l,d]=i?[13,.95-o.flapT/.32*.35,-.1]:n?[6.5,.75,.1]:t?[7,.45,-.15]:[2.5,.12,.15+1.6*wingFor(o.velocity)];o.wingPhase+=r*s*Math.PI*2,o.wingLift=d+Math.sin(o.wingPhase)*l,o.farLift=d+Math.sin(o.wingPhase-.6)*l,o.tiltShown+=((n?0:tiltFor(o.velocity))-o.tiltShown)*a(12),o.blinkIn-=r,o.blinkIn<=0&&(blink(o.world,e),o.blinkIn=2+3*Math.random())}drawBird(o)}export function start(o){const r=o.layout;"ready"===o.phase&&r&&(o.birdY=r.birdStartY,o.velocity=0,o.pending=0,o.phase="playing",o.world.scoreboard.startCountdown(TIME_LIMIT),o.bird&&o.view&&hoverBird(o.world,o.bird,!1,o.view),drawBird(o),o.onPhase("playing"),after(o,FIRST_PIPE,()=>spawn(o)),after(o,PIPE_INTERVAL,()=>spawnLoop(o)))}function spawnLoop(o){"playing"===o.phase&&(spawn(o),after(o,PIPE_INTERVAL,()=>spawnLoop(o)))}function spawn(o){const r=o.layout,e=o.view;if(!r||!e||"playing"!==o.phase)return;const a=randomGapTop(r),n=r.width;o.pipes.push({x:n,gapTop:a,gapBottom:a+PIPE_GAP,passed:!1,root:spawnPipe(o.world,e,r,n,a,a+PIPE_GAP)})}export function reset(o){o.world.cancelTimers(),clearPipes(o);const r=o.layout;r&&(o.birdY=r.birdStartY),o.velocity=0,o.pending=0,o.world.scoreboard.reset(0,TIME_LIMIT),o.won=!1,o.phase="ready",o.tiltShown=0,o.bird&&wakeBird(o.world,o.bird),o.bird&&o.view&&hoverBird(o.world,o.bird,!0,o.view),drawBird(o),o.onScore(0),o.onTime(TIME_LIMIT),o.onPhase("ready")}export function dispose(o){o.world.cancelTimers(),o.world.dispose()}function end(o,r){o.world.scoreboard.stop(),o.world.cancelTimers(),o.won=r,o.phase="over",!r&&o.bird&&dazeBird(o.world,o.bird),r?o.onWin():o.onCrash(),o.onPhase("over")}export function tick(o,r){if(!o.world.isDisposed){if(o.time+=r,"playing"===o.phase){o.pending=Math.min(o.pending+r,MAX_PENDING);let e=!1;for(;o.pending>=STEP-STEP_TOLERANCE&&"playing"===o.phase;)o.pending-=STEP,step(o),e=!0;e&&drawWorld(o)}animateBird(o,r),o.world.update(r)}}export function flap(o){"playing"===o.phase&&(o.velocity=JUMP_VELOCITY,o.flapT=0,o.bird&&flapPop(o.world,o.bird),o.onFlap())}function step(o){const r=o.layout;let e=(o.velocity+GRAVITY)*DAMPING;e>MAX_FALL_SPEED&&(e=MAX_FALL_SPEED);let a=o.birdY+e,n=!1,i=!1;a<r.topWall&&(a=r.topWall,e=0,n=!0),a+BIRD_SIZE>r.bottomWallTop&&(a=r.bottomWallTop-BIRD_SIZE,i=!0),o.birdY=a,o.velocity=e,o.scroll+=PIPE_SPEED;let t=0;o.pipes=o.pipes.filter(e=>(e.x-=PIPE_SPEED,!e.passed&&e.x+PIPE_WIDTH<r.birdX&&(e.passed=!0,t++),!(e.x+PIPE_WIDTH<0&&(o.world.despawn(e.root),1)))),t&&(o.onScore(o.world.scoreboard.add(t*PASS_SCORE)),o.onPass());const s=r.birdX+BIRD_SIZE/2;let l=null;n?l=r.topWall+BIRD_SIZE/2:i?l=r.bottomWallTop-BIRD_SIZE/2:o.pipes.some(o=>r.birdX+BIRD_SIZE>o.x&&r.birdX<o.x+PIPE_WIDTH&&(a<o.gapTop||a+BIRD_SIZE>o.gapBottom))&&(l=a+BIRD_SIZE/2),null!==l&&(drawWorld(o),o.view&&crashBurst(o.world,o.view,s,l),end(o,!1))}function drawWorld(o){const r=o.view,e=o.layout;if(!r||!e)return;const a=o.world.transforms;for(const e of o.pipes)placePipe(o.world,r,e.root,e.x,a);a.flush(),o.walls&&placeWalls(o.world,r,e,o.walls,o.scroll),drawBird(o)}
@@ -0,0 +1 @@
1
+ "use strict";import{effects,extrude,lathe,merge,Path,quat,recolor,shapeGeometry,tube}from"@nayan-ui/engine";import{at,facing,pointSize}from"../shared/EngineMeadow.js";import{cacheGameAsset,createGameMesh as _0x4195a4}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{BIRD_SIZE,BRICK_HEIGHT,BRICK_WIDTH,PIPE_WIDTH}from"./FlappyBirdConstants.js";const meshes=new Map,cached=(e,t)=>{let o=meshes.get(e);return!o&&(o=cacheGameAsset("flappy-bird/FlappyBirdScene:"+e,t),meshes.set(e,o)),o},rgb=e=>{const[t,o,a]=toColor(e);return[t,o,a]},mix=(e,t,o)=>[e[0]+(t[0]-e[0])*o,e[1]+(t[1]-e[1])*o,e[2]+(t[2]-e[2])*o],sphere=()=>shapeGeometry("sphere"),beakPart=(e,t,o,a,s)=>({geometry:lathe([[t,0],[.6*t,.5*e],[.001,e]],{segments:12,color:o}),position:a,rotation:quat.multiply(quat.z(s),quat.z(-Math.PI/2))}),clamp01=e=>Math.max(0,Math.min(1,e)),smoothstep=e=>{const t=clamp01(e);return t*t*(3-2*t)},BODY_TOP=rgb("#FFE14D"),BODY_BOTTOM=rgb("#FFAA1F"),BELLY=rgb("#FFF4CC"),BLUSH=rgb("#FF8C9A"),FEATHER=rgb("#F08A12"),feather=(e,t,o)=>tube(e,{radius:e=>t*Math.max(.08,1-.85*e),shape:e=>.35+.65*Math.abs(Math.cos(e*Math.PI*2)),sides:8,smoothness:5,color:[...o,1]}),birdMesh=()=>cached("fb-bird",()=>{const e=Array.from({length:17},(e,t)=>{const o=t/16;return[Math.max(.001,.47*Math.sin(Math.PI*o)**.75*(1-.16*o)),.5-o]}),t=merge([{geometry:lathe(e,{segments:28}),rotation:quat.z(-Math.PI/2),scale:[1,.92,.86]}]),o=recolor(t,({position:[e,t,o]})=>{let a=mix(BODY_BOTTOM,BODY_TOP,clamp01(.5+1.3*t+.25*e));return a=mix(a,BELLY,smoothstep(4*(.06-t))*smoothstep(3*o+.3)*smoothstep(3*(e+.32))*.95),a=mix(a,BLUSH,.8*smoothstep(1-Math.hypot(e-.2,t+.06,o-.33)/.11)),[...a,1]});return _0x4195a4(merge([{geometry:o},{geometry:sphere(),position:[.22,.15,.26],scale:.32,color:[1,1,1]},{geometry:sphere(),position:[.3,.16,.38],scale:.15,color:rgb("#151515")},{geometry:sphere(),position:[.33,.2,.445],scale:.05,color:[1,1,1]},beakPart(.3,.1,rgb("#FF7B3A"),[.4,0,.06],.12),beakPart(.24,.08,rgb("#D9531A"),[.39,-.07,.06],-.2),{geometry:feather([[.02,.36,0],[0,.52,0],[-.1,.6,0]],.07,rgb("#FF9500"))},{geometry:feather([[.1,.36,.02],[.12,.5,.02],[.06,.6,.02]],.06,rgb("#FFB300"))},{geometry:feather([[-.06,.34,-.02],[-.14,.46,-.02],[-.24,.5,-.02]],.055,FEATHER)},...[.2,.02,-.16].map((e,t)=>({geometry:tube([[-.34,.02,0],[-.52,.04+.6*e,0],[-.68,.06+e,0]],{radius:e=>.13*(.55+.45*Math.sin(Math.PI*(.25+.6*e))),shape:e=>.45+.55*Math.abs(Math.cos(e*Math.PI*2)),sides:10,smoothness:5,color:[...mix(FEATHER,rgb("#C2600A"),.35*t),1]})})),...[.12,-.12].map(e=>({geometry:feather([[.02,-.36,e],[-.08,-.46,e],[-.2,-.48,e]],.035,rgb("#FF7B3A"))}))]),{center:!1,shine:.35})}),wingMesh=e=>cached("fb-wing:"+e,()=>{const t=[[.06,.06],[-.12,.14],[-.34,.12],[-.56,.02],[-.5,-.04],[-.55,-.09],[-.44,-.11],[-.47,-.17],[-.34,-.17],[-.12,-.12],[.06,-.05]],o=(new Path).moveTo(t[0][0],-t[0][1]);for(const[e,a]of t.slice(1))o.lineTo(e,-a);o.close();const[a,s]=e?[rgb("#B86A08"),rgb("#D9901F")]:[rgb("#F59E0B"),rgb("#FFD35C")];return _0x4195a4(recolor(extrude(o,{depth:.07}),({position:[e]})=>[...mix(a,s,clamp01(-e/.55)),1]),{center:!1,shine:.25})}),lidMesh=()=>cached("fb-lid",()=>_0x4195a4(merge([{geometry:sphere(),color:BODY_TOP}]),{shine:.35})),pipeMesh=()=>cached("fb-pipe",()=>_0x4195a4(lathe([[.5,-.5],[.5,.5]],{segments:24,color:rgb("#4CA840")}),{center:!1,shine:.55})),capMesh=()=>cached("fb-cap",()=>_0x4195a4(merge([{geometry:lathe([[.001,.5],[.5,.5],[.52,.42],[.52,-.42],[.5,-.5]],{segments:24,color:rgb("#3A8A2A")})},{geometry:sphere(),position:[0,.5,0],scale:[.78,.02,.78],color:rgb("#123d10")}]),{center:!1,shine:.6})),SHADE_PERIOD=12;function brickShade(e,t){const o=(t%12+12)%12,a=43758.5453*Math.sin(127.1*e+311.7*o),s=a-Math.floor(a),n=rgb("#9E5428");return s<.5?mix(rgb("#6E3412"),n,2*s):mix(n,rgb("#B8693A"),2*(s-.5))}function wallGeometry(e,t,o,a){const s=BRICK_WIDTH*o,n=BRICK_HEIGHT*o,r=e*o,i=t*o,l=COPING*o,p=.35*n,h=.12*n,m=[],g=(e,t,o,a,s,n,r)=>m.push({geometry:shapeGeometry("cube"),position:[(e+t)/2,(o+a)/2,(s+n)/2],scale:[t-e,a-o,n-s],color:r});g(-r/2,r/2,l,i,0,a,rgb("#3a1d0c")),g(-r/2,r/2,0,l,-.01,a+p+.025,rgb("#c8b896")),g(-r/2,r/2,.78*l,l,a+p+.005,a+p+.03,rgb("#a9987a"));const u=Math.ceil((i-l)/n);for(let e=0;e<u;e++){const t=l+e*n,o=Math.min(i,t+n);for(let n=0,i=-r/2-(e%2?s/2:0);i<r/2;n++,i+=s){const l=Math.max(i,-r/2),m=Math.min(i+s,r/2);m-l<=h||o-t<=h||g(l+h/2,m-h/2,t+h/2,o-h/2,a-.01,a+p,brickShade(e,n))}}return merge(m)}const local=(e,t,o,a=0)=>[t*e,-o*e,a],CAP_HEIGHT=26,CAP_OVER=5,COPING=12,WALL_MARGIN=160,PIPE_INTO_WALL=220,wallDepth=e=>{const t=(PIPE_WIDTH+PIPE_WIDTH/60*10)/2*pointSize(e);return{back:e.playDepth+t+.04,thickness:2*t+.08,front:e.playDepth-t-.04}};function prism(e,t,o,a){const s=[],n=[],r=e.reduce((e,t)=>e+t[0],0)/e.length,i=e.reduce((e,t)=>e+t[1],0)/e.length,l=[(t+o)/2,i,r],p=e=>{const[t,o,r]=e,i=[o[0]-t[0],o[1]-t[1],o[2]-t[2]],p=[r[0]-t[0],r[1]-t[1],r[2]-t[2]];let h=[i[1]*p[2]-i[2]*p[1],i[2]*p[0]-i[0]*p[2],i[0]*p[1]-i[1]*p[0]];const m=e.reduce((t,o)=>[t[0]+o[0]/e.length,t[1]+o[1]/e.length,t[2]+o[2]/e.length],[0,0,0]);h[0]*(m[0]-l[0])+h[1]*(m[1]-l[1])+h[2]*(m[2]-l[2])<0&&(e=[...e].reverse(),h=[-h[0],-h[1],-h[2]]);const g=Math.hypot(h[0],h[1],h[2])||1,u=s.length/11;for(const t of e)s.push(t[0],t[1],t[2],h[0]/g,h[1]/g,h[2]/g,a[0],a[1],a[2],0,0);for(let t=1;t+1<e.length;t++)n.push(u,u+t,u+t+1)};return p(e.map(([e,o])=>[t,o,e])),p(e.map(([e,t])=>[o,t,e])),e.forEach(([a,s],n)=>{const[r,i]=e[(n+1)%e.length];p([[t,s,a],[o,s,a],[o,i,r],[t,i,r]])}),{vertices:new Float32Array(s),indices:new Uint32Array(n)}}function topWallGeometry(e,t,o,a){const s=BRICK_WIDTH*o,n=BRICK_HEIGHT*o,r=e*o,i=t*o,l=COPING*o,p=.35*n,h=p+.025,m=.12*n,g=1.05*a,u=-r/2,b=r/2,d=[{geometry:prism([[-h,g*h],[-h,i],[-.25,i],[-.25,.25*g]],u,b,rgb("#3a1d0c"))},{geometry:prism([[0,0],[0,l],[-h,l],[-h,g*h]],u,b,rgb("#c8b896"))},{geometry:shapeGeometry("cube"),position:[0,.11*l,.004],scale:[r,.22*l,.008],color:rgb("#a9987a")}],I=Math.ceil((i-l)/n);for(let e=0;e<I;e++){const t=l+e*n,o=Math.min(i,t+n);for(let a=0,n=u-(e%2?s/2:0);n<b;a++,n+=s){const r=Math.max(n,u),i=Math.min(n+s,b);i-r<=m||o-t<=m||d.push({geometry:shapeGeometry("cube"),position:[(r+i)/2,(t+o)/2,p/2-h],scale:[i-r-m,o-t-m,p+.01],color:brickShade(e+7,a)})}}return merge(d)}export function spawnWalls(e,t,o){const{back:a,front:s,thickness:n}=wallDepth(t),r=pointSize(t,a),i=pointSize(t,s),l=(o.height/2-o.topWall)/(o.height/2)*t.tanHalf,p=o.width+12*BRICK_WIDTH+4*BRICK_WIDTH,h=cached("fb-top-wall:"+Math.round(o.width)+"x"+Math.round(o.topWall)+":"+i.toFixed(6)+":"+l.toFixed(5),()=>_0x4195a4(topWallGeometry(p,o.topWall+160,i,l),{center:!1,shine:.05})),m=o.height-o.bottomWallTop,g=cached("fb-wall:"+Math.round(o.width)+"x"+Math.round(m)+":"+r.toFixed(6)+":"+n.toFixed(4),()=>_0x4195a4(wallGeometry(p,m+160,r,n),{center:!1,shine:.05})),u={top:e.spawn({mesh:h,color:[1,1,1,1],pickable:!1}),bottom:e.spawn({mesh:g,color:[1,1,1,1],pickable:!1})};return placeWalls(e,t,o,u,0),u}export function placeWalls(e,t,o,a,s){const{back:n,front:r}=wallDepth(t),i=s*pointSize(t),l=(a,s,n,r)=>{const l=12*BRICK_WIDTH*pointSize(t,n),p=at(t,o.width/2+12*BRICK_WIDTH/2,s,n);e.set(a,{position:[p[0]-i%l,p[1],p[2]],rotation:facing(t,r)})};l(a.top,o.topWall,r,0),l(a.bottom,o.bottomWallTop,n,Math.PI)}export function spawnPipe(e,t,o,a,s,n){const r=pointSize(t),i=PIPE_WIDTH/60,l=26*i,p=PIPE_WIDTH+10*i,h=a+PIPE_WIDTH/2,m=e.spawn({mesh:"none",position:at(t,h,0),rotation:facing(t),pickable:!1}),g=(t,o,a,s,n=!1)=>e.spawn({mesh:t,parent:m,position:local(r,0,o),scale:[s*r,a*r,s*r],...n?{rotation:quat.z(Math.PI)}:{},color:[1,1,1,1],pickable:!1}),u=Math.max(o.topWall,Math.min(s,o.bottomWallTop)),b=Math.max(o.topWall,Math.min(n,o.bottomWallTop)),d=o.topWall-220,I=o.bottomWallTop+220;return u-o.topWall>.5&&(g(pipeMesh(),(d+u)/2,u-d,PIPE_WIDTH),g(capMesh(),u-l/2,l,p,!0)),o.bottomWallTop-b>.5&&(g(pipeMesh(),(b+I)/2,I-b,PIPE_WIDTH),g(capMesh(),b+l/2,l,p)),m}export function placePipe(e,t,o,a,s){const n=at(t,a+PIPE_WIDTH/2,0);s?s.position(o,n[0],n[1],n[2]):e.set(o,{position:n})}const EYE=[.22,.15,.27],EYE_SIZE=.34;export function spawnBird(e,t,o,a){const s=BIRD_SIZE*pointSize(t),n=e.spawn({mesh:"none",position:at(t,o,a),rotation:facing(t),pickable:!1}),r=e.spawn({mesh:wingMesh(!0),parent:n,position:[.04*-s,.04*s,.3*-s],scale:s,color:[1,1,1,1],pickable:!1}),i=e.spawn({mesh:birdMesh(),parent:n,scale:s,color:[1,1,1,1],pickable:!1}),l=e.spawn({mesh:lidMesh(),parent:n,position:[EYE[0]*s,EYE[1]*s,EYE[2]*s],scale:0,color:[1,1,1,1],pickable:!1});return{root:n,body:i,wing:e.spawn({mesh:wingMesh(!1),parent:n,position:[.02*-s,.04*-s,.38*s],scale:s,color:[1,1,1,1],pickable:!1}),farWing:r,lid:l,size:s}}const NEAR_WING_TILT=quat.x(-.25),FAR_WING_TILT=quat.x(.25),wingTurn=[0,0,0,1];export function placeBird(e,t,o,a,s,n,r,i=r){e.set(o.root,{position:at(t,a,s),rotation:facing(t,-n)}),e.set(o.wing,{rotation:quat.multiply(NEAR_WING_TILT,quat.z(-r,wingTurn),wingTurn)}),e.set(o.farWing,{rotation:quat.multiply(FAR_WING_TILT,quat.z(-i,wingTurn),wingTurn)})}export function flapPop(e,t){const o=t.size;e.stopAnimation(t.body),e.animate(t.body,[{scale:[.86*o,1.16*o,o],at:.3},{scale:[1.05*o,.96*o,o],at:.65},{scale:o}],{duration:.26,easing:"easeOut"})}export function blink(e,t){const o=.34*t.size;e.animate(t.lid,[{scale:[o,o,o],at:.4},{scale:[o,o,o],at:.6},{scale:0}],{duration:.16,easing:"linear"})}export function dazeBird(e,t){const o=.34*t.size;e.stopAnimation(t.lid),e.set(t.lid,{scale:[o,.55*o,o],position:[EYE[0]*t.size,(EYE[1]+.06)*t.size,EYE[2]*t.size]}),e.animate(t.root,{shake:.12*t.size},{duration:.35})}export function wakeBird(e,t){e.stopAnimation(t.lid),e.set(t.lid,{scale:0,position:[EYE[0]*t.size,EYE[1]*t.size,EYE[2]*t.size]})}export function hoverBird(e,t,o,a){const s=BIRD_SIZE*pointSize(a)*.12;e.set(t.root,{bob:o?{amplitude:[0,s,0],speed:3.2}:null})}const FEATHERS=["#FFD700","#FF8C00","#FFE850","#FFFFFF","#A0522D"].map(e=>toColor(e));export function crashBurst(e,t,o,a){const s=pointSize(t),n=BIRD_SIZE*s,r=at(t,o,a,t.playDepth-.6*n);effects.shatter(e,{position:r,count:16,mesh:"sphere",size:.12*n,speed:7*n,lifetime:.7,gravity:18*-n,colors:FEATHERS,dust:!1}),effects.dust(e,{position:r,count:5,size:.9*n,speed:2*n,lifetime:.5,color:[1,1,1,.75]})}