@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.
- package/README.md +53 -191
- package/lib/module/assets/fonts/Inter-SemiBold.ttf +0 -0
- package/lib/module/assets/models/explorer/explorer.glb +0 -0
- package/lib/module/assets/models/explorer/params.json +51 -0
- package/lib/module/assets/models/explorer/source.json +222 -0
- package/lib/module/assets/models/play-with-tua/play-with-tua.glb +0 -0
- package/lib/module/assets/models/play-with-tua/sources.json +141 -0
- package/lib/module/assets/sfx/balloon_pop.wav +0 -0
- package/lib/module/assets/sfx/blocked.wav +0 -0
- package/lib/module/assets/sfx/boing.wav +0 -0
- package/lib/module/assets/sfx/bonus.wav +0 -0
- package/lib/module/assets/sfx/boom.wav +0 -0
- package/lib/module/assets/sfx/bump.wav +0 -0
- package/lib/module/assets/sfx/cannon.wav +0 -0
- package/lib/module/assets/sfx/capture.wav +0 -0
- package/lib/module/assets/sfx/card_flip.wav +0 -0
- package/lib/module/assets/sfx/card_place.wav +0 -0
- package/lib/module/assets/sfx/catch.wav +0 -0
- package/lib/module/assets/sfx/chime.wav +0 -0
- package/lib/module/assets/sfx/chomp.wav +0 -0
- package/lib/module/assets/sfx/chomp_alt.wav +0 -0
- package/lib/module/assets/sfx/clack.wav +0 -0
- package/lib/module/assets/sfx/clang.wav +0 -0
- package/lib/module/assets/sfx/clash.wav +0 -0
- package/lib/module/assets/sfx/click.wav +0 -0
- package/lib/module/assets/sfx/coin.wav +0 -0
- package/lib/module/assets/sfx/combo.wav +0 -0
- package/lib/module/assets/sfx/crash.wav +0 -0
- package/lib/module/assets/sfx/crunch.wav +0 -0
- package/lib/module/assets/sfx/dance.wav +0 -0
- package/lib/module/assets/sfx/deselect.wav +0 -0
- package/lib/module/assets/sfx/dice_roll.wav +0 -0
- package/lib/module/assets/sfx/die.wav +0 -0
- package/lib/module/assets/sfx/draw.wav +0 -0
- package/lib/module/assets/sfx/drop.wav +0 -0
- package/lib/module/assets/sfx/eat.wav +0 -0
- package/lib/module/assets/sfx/engine.wav +0 -0
- package/lib/module/assets/sfx/error.wav +0 -0
- package/lib/module/assets/sfx/flag.wav +0 -0
- package/lib/module/assets/sfx/flap.wav +0 -0
- package/lib/module/assets/sfx/flip_disc.wav +0 -0
- package/lib/module/assets/sfx/footstep_run.wav +0 -0
- package/lib/module/assets/sfx/footstep_walk.wav +0 -0
- package/lib/module/assets/sfx/game_over.wav +0 -0
- package/lib/module/assets/sfx/gate.wav +0 -0
- package/lib/module/assets/sfx/hit.wav +0 -0
- package/lib/module/assets/sfx/hop.wav +0 -0
- package/lib/module/assets/sfx/hurt.wav +0 -0
- package/lib/module/assets/sfx/invalid.wav +0 -0
- package/lib/module/assets/sfx/jump.wav +0 -0
- package/lib/module/assets/sfx/ladder.wav +0 -0
- package/lib/module/assets/sfx/land.wav +0 -0
- package/lib/module/assets/sfx/laugh.wav +0 -0
- package/lib/module/assets/sfx/lose.wav +0 -0
- package/lib/module/assets/sfx/merge.wav +0 -0
- package/lib/module/assets/sfx/miss.wav +0 -0
- package/lib/module/assets/sfx/nitro.wav +0 -0
- package/lib/module/assets/sfx/pew.wav +0 -0
- package/lib/module/assets/sfx/place.wav +0 -0
- package/lib/module/assets/sfx/pling.wav +0 -0
- package/lib/module/assets/sfx/point.wav +0 -0
- package/lib/module/assets/sfx/pop.wav +0 -0
- package/lib/module/assets/sfx/pop_soft.wav +0 -0
- package/lib/module/assets/sfx/power_up.wav +0 -0
- package/lib/module/assets/sfx/reveal.wav +0 -0
- package/lib/module/assets/sfx/robot.wav +0 -0
- package/lib/module/assets/sfx/rotate.wav +0 -0
- package/lib/module/assets/sfx/run_steps.wav +0 -0
- package/lib/module/assets/sfx/select.wav +0 -0
- package/lib/module/assets/sfx/shuffle.wav +0 -0
- package/lib/module/assets/sfx/six.wav +0 -0
- package/lib/module/assets/sfx/slice.wav +0 -0
- package/lib/module/assets/sfx/slide.wav +0 -0
- package/lib/module/assets/sfx/snake.wav +0 -0
- package/lib/module/assets/sfx/snap.wav +0 -0
- package/lib/module/assets/sfx/splash.wav +0 -0
- package/lib/module/assets/sfx/star.wav +0 -0
- package/lib/module/assets/sfx/start.wav +0 -0
- package/lib/module/assets/sfx/swoosh.wav +0 -0
- package/lib/module/assets/sfx/tap.wav +0 -0
- package/lib/module/assets/sfx/thud.wav +0 -0
- package/lib/module/assets/sfx/thunk.wav +0 -0
- package/lib/module/assets/sfx/tick.wav +0 -0
- package/lib/module/assets/sfx/time_up.wav +0 -0
- package/lib/module/assets/sfx/tock.wav +0 -0
- package/lib/module/assets/sfx/walk_steps.wav +0 -0
- package/lib/module/assets/sfx/warning.wav +0 -0
- package/lib/module/assets/sfx/whack.wav +0 -0
- package/lib/module/assets/sfx/whoosh.wav +0 -0
- package/lib/module/assets/sfx/win.wav +0 -0
- package/lib/module/assets/sfx/zap.wav +0 -0
- package/lib/module/assets/textures/ad_bolt.png +0 -0
- package/lib/module/assets/textures/ad_bubbles.png +0 -0
- package/lib/module/assets/textures/ad_chevrons.png +0 -0
- package/lib/module/assets/textures/asphalt.png +0 -0
- package/lib/module/assets/textures/bark.jpg +0 -0
- package/lib/module/assets/textures/explorer-atlas.png +0 -0
- package/lib/module/assets/textures/facade.png +0 -0
- package/lib/module/assets/textures/grass.png +0 -0
- package/lib/module/assets/textures/leaves.png +0 -0
- package/lib/module/assets/textures/limestone.jpg +0 -0
- package/lib/module/assets/textures/meadow.jpg +0 -0
- package/lib/module/assets/textures/nature-sources.json +87 -0
- package/lib/module/assets/textures/pine.png +0 -0
- package/lib/module/assets/textures/river.jpg +0 -0
- package/lib/module/assets/textures/soft_glow.png +0 -0
- package/lib/module/games/arrows/Arrows.js +1 -1
- package/lib/module/games/arrows/ArrowsConstants.js +1 -1
- package/lib/module/games/arrows/ArrowsGame.js +1 -0
- package/lib/module/games/arrows/ArrowsScene.js +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterGame.js +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterPhysics.js +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterScene.js +1 -0
- package/lib/module/games/bike-racing/BikeMeshes.js +1 -0
- package/lib/module/games/bike-racing/BikeRacing.js +1 -1
- package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -1
- package/lib/module/games/bike-racing/BikeRacingGame.js +1 -0
- package/lib/module/games/bike-racing/BikeRacingScene.js +1 -0
- package/lib/module/games/block-blast/BlockBlast.js +1 -1
- package/lib/module/games/block-blast/BlockBlastConstants.js +1 -1
- package/lib/module/games/block-blast/BlockBlastGame.js +1 -0
- package/lib/module/games/block-blast/BlockBlastScene.js +1 -0
- package/lib/module/games/block-breaker/BlockBreaker.js +1 -1
- package/lib/module/games/block-breaker/BlockBreakerConstants.js +1 -1
- package/lib/module/games/block-breaker/BlockBreakerGame.js +1 -0
- package/lib/module/games/block-breaker/BlockBreakerScene.js +1 -0
- package/lib/module/games/bluk/Bluk.js +1 -1
- package/lib/module/games/bluk/BlukConstants.js +1 -1
- package/lib/module/games/bluk/BlukGame.js +1 -0
- package/lib/module/games/bluk/BlukRules.js +1 -0
- package/lib/module/games/bluk/BlukScene.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -1
- package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -1
- package/lib/module/games/bubble-shooter/BubbleShooterGame.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterScene.js +1 -0
- package/lib/module/games/candy-crush/CandyCrush.js +1 -1
- package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -1
- package/lib/module/games/candy-crush/CandyCrushGame.js +1 -0
- package/lib/module/games/candy-crush/CandyCrushScene.js +1 -0
- package/lib/module/games/car-racing/CarMeshes.js +1 -0
- package/lib/module/games/car-racing/CarRacing.js +1 -1
- package/lib/module/games/car-racing/CarRacingConstants.js +1 -1
- package/lib/module/games/car-racing/CarRacingFacade.js +1 -0
- package/lib/module/games/car-racing/CarRacingGame.js +1 -0
- package/lib/module/games/car-racing/CarRacingScene.js +1 -0
- package/lib/module/games/car-racing/CarRacingScenery.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRun.js +1 -1
- package/lib/module/games/chameleon-run/ChameleonRunBackdrop.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunConstants.js +1 -1
- package/lib/module/games/chameleon-run/ChameleonRunGame.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunMeshes.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunRules.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunScene.js +1 -0
- package/lib/module/games/checkers/Checkers.js +1 -1
- package/lib/module/games/checkers/CheckersAI.js +1 -0
- package/lib/module/games/checkers/CheckersConstants.js +1 -1
- package/lib/module/games/checkers/CheckersGame.js +1 -0
- package/lib/module/games/checkers/CheckersRules.js +1 -0
- package/lib/module/games/checkers/CheckersScene.js +1 -0
- package/lib/module/games/color-switch/ColorSwitch.js +1 -1
- package/lib/module/games/color-switch/ColorSwitchConstants.js +1 -1
- package/lib/module/games/color-switch/ColorSwitchGame.js +1 -0
- package/lib/module/games/color-switch/ColorSwitchScene.js +1 -0
- package/lib/module/games/colors-sort/ColorsSort.js +1 -1
- package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -1
- package/lib/module/games/colors-sort/ColorsSortGame.js +1 -0
- package/lib/module/games/colors-sort/ColorsSortScene.js +1 -0
- package/lib/module/games/connect-em-all/ConnectEmAll.js +1 -1
- package/lib/module/games/connect-em-all/ConnectEmAllConstants.js +1 -1
- package/lib/module/games/connect-em-all/ConnectEmAllGame.js +1 -0
- package/lib/module/games/connect-em-all/ConnectEmAllScene.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoad.js +1 -1
- package/lib/module/games/crossy-road/CrossyRoadCamera.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadConstants.js +1 -1
- package/lib/module/games/crossy-road/CrossyRoadGame.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadMeshes.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadPerson.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadRules.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadScene.js +1 -0
- package/lib/module/games/dino-jump/DinoJump.js +1 -1
- package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -1
- package/lib/module/games/dino-jump/DinoJumpGame.js +1 -0
- package/lib/module/games/dino-jump/DinoJumpScene.js +1 -0
- package/lib/module/games/dots-and-boxes/DotsAndBoxes.js +1 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesConstants.js +1 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesGame.js +1 -0
- package/lib/module/games/dots-and-boxes/DotsAndBoxesScene.js +1 -0
- package/lib/module/games/falling-sticks/FallingSticks.js +1 -1
- package/lib/module/games/falling-sticks/FallingSticksConstants.js +1 -1
- package/lib/module/games/falling-sticks/FallingSticksGame.js +1 -0
- package/lib/module/games/falling-sticks/FallingSticksRules.js +1 -0
- package/lib/module/games/falling-sticks/FallingSticksScene.js +1 -0
- package/lib/module/games/find-different-number/FindDifferentNumber.js +1 -1
- package/lib/module/games/find-different-number/FindDifferentNumberConstants.js +1 -1
- package/lib/module/games/find-different-number/FindDifferentNumberGame.js +1 -0
- package/lib/module/games/find-different-number/FindDifferentNumberRules.js +1 -0
- package/lib/module/games/find-different-number/FindDifferentNumberScene.js +1 -0
- package/lib/module/games/flappy-bird/FlappyBird.js +1 -1
- package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -1
- package/lib/module/games/flappy-bird/FlappyBirdGame.js +1 -0
- package/lib/module/games/flappy-bird/FlappyBirdScene.js +1 -0
- package/lib/module/games/fruit-merger/FruitMerger.js +1 -1
- package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -1
- package/lib/module/games/fruit-merger/FruitMergerGame.js +1 -0
- package/lib/module/games/fruit-merger/FruitMergerRules.js +1 -0
- package/lib/module/games/fruit-merger/FruitMergerScene.js +1 -0
- package/lib/module/games/fruit-ninja/FruitNinja.js +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaGame.js +1 -0
- package/lib/module/games/fruit-ninja/FruitNinjaScene.js +1 -0
- package/lib/module/games/fruit-ninja/FruitNinjaWorld.js +1 -0
- package/lib/module/games/game-2048/Game2048.js +1 -1
- package/lib/module/games/game-2048/Game2048Constants.js +1 -1
- package/lib/module/games/game-2048/Game2048Game.js +1 -0
- package/lib/module/games/game-2048/Game2048Rules.js +1 -0
- package/lib/module/games/game-2048/Game2048Scene.js +1 -0
- package/lib/module/games/knife-hit/KnifeHit.js +1 -1
- package/lib/module/games/knife-hit/KnifeHitConstants.js +1 -1
- package/lib/module/games/knife-hit/KnifeHitGame.js +1 -0
- package/lib/module/games/knife-hit/KnifeHitScene.js +1 -0
- package/lib/module/games/ludo-king/LudoKing.js +1 -1
- package/lib/module/games/ludo-king/LudoKingConstants.js +1 -1
- package/lib/module/games/ludo-king/LudoKingGame.js +1 -0
- package/lib/module/games/ludo-king/LudoKingRules.js +1 -0
- package/lib/module/games/ludo-king/LudoKingScene.js +1 -0
- package/lib/module/games/maze-runner/MazeRunner.js +1 -1
- package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -1
- package/lib/module/games/maze-runner/MazeRunnerGame.js +1 -0
- package/lib/module/games/maze-runner/MazeRunnerRules.js +1 -0
- package/lib/module/games/maze-runner/MazeRunnerScene.js +1 -0
- package/lib/module/games/memory-match/MemoryMatch.js +1 -1
- package/lib/module/games/memory-match/MemoryMatchConstants.js +1 -1
- package/lib/module/games/memory-match/MemoryMatchGame.js +1 -0
- package/lib/module/games/memory-match/MemoryMatchRules.js +1 -0
- package/lib/module/games/memory-match/MemoryMatchScene.js +1 -0
- package/lib/module/games/mine-sweeper/MineSweeper.js +1 -1
- package/lib/module/games/mine-sweeper/MineSweeperConstants.js +1 -1
- package/lib/module/games/mine-sweeper/MineSweeperGame.js +1 -0
- package/lib/module/games/mine-sweeper/MineSweeperRules.js +1 -0
- package/lib/module/games/mine-sweeper/MineSweeperScene.js +1 -0
- package/lib/module/games/mob-control/MobControl.js +1 -1
- package/lib/module/games/mob-control/MobControlConstants.js +1 -1
- package/lib/module/games/mob-control/MobControlGame.js +1 -0
- package/lib/module/games/mob-control/MobControlMeshes.js +1 -0
- package/lib/module/games/mob-control/MobControlRenderer.js +1 -0
- package/lib/module/games/mob-control/MobControlRules.js +1 -0
- package/lib/module/games/mob-control/MobControlScene.js +1 -0
- package/lib/module/games/number-search/NumberSearch.js +1 -1
- package/lib/module/games/number-search/NumberSearchNumbers.js +1 -0
- package/lib/module/games/nuts-and-bolts/NutsAndBolts.js +1 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsConstants.js +1 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsGame.js +1 -0
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsRules.js +1 -0
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsScene.js +1 -0
- package/lib/module/games/pac-man/PacMan.js +1 -1
- package/lib/module/games/pac-man/PacManConstants.js +1 -1
- package/lib/module/games/pac-man/PacManGame.js +1 -0
- package/lib/module/games/pac-man/PacManRules.js +1 -0
- package/lib/module/games/pac-man/PacManScene.js +1 -0
- package/lib/module/games/paper-io/PaperIo.js +1 -1
- package/lib/module/games/paper-io/PaperIoConstants.js +1 -1
- package/lib/module/games/paper-io/PaperIoGame.js +1 -0
- package/lib/module/games/paper-io/PaperIoMeshes.js +1 -0
- package/lib/module/games/paper-io/PaperIoRules.js +1 -0
- package/lib/module/games/paper-io/PaperIoScene.js +1 -0
- package/lib/module/games/penguin-run/PenguinMeshes.js +1 -0
- package/lib/module/games/penguin-run/PenguinModel.js +1 -0
- package/lib/module/games/penguin-run/PenguinRun.js +1 -0
- package/lib/module/games/penguin-run/PenguinRunConstants.js +1 -0
- package/lib/module/games/penguin-run/PenguinRunGame.js +1 -0
- package/lib/module/games/penguin-run/PenguinRunScene.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircle.js +1 -1
- package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -1
- package/lib/module/games/perfect-circle/PerfectCircleGame.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleRules.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleScene.js +1 -0
- package/lib/module/games/pipe-connect/PipeConnect.js +1 -1
- package/lib/module/games/pipe-connect/PipeConnectConstants.js +1 -1
- package/lib/module/games/pipe-connect/PipeConnectGame.js +1 -0
- package/lib/module/games/pipe-connect/PipeConnectRules.js +1 -0
- package/lib/module/games/pipe-connect/PipeConnectScene.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTua.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaConstants.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaGame.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaModel.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaScene.js +1 -0
- package/lib/module/games/popit-fidget/PopitFidget.js +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetGame.js +1 -0
- package/lib/module/games/popit-fidget/PopitFidgetScene.js +1 -0
- package/lib/module/games/reversi/Reversi.js +1 -1
- package/lib/module/games/reversi/ReversiConstants.js +1 -1
- package/lib/module/games/reversi/ReversiGame.js +1 -0
- package/lib/module/games/reversi/ReversiRules.js +1 -0
- package/lib/module/games/reversi/ReversiScene.js +1 -0
- package/lib/module/games/search-grid/SearchGrid.js +1 -0
- package/lib/module/games/search-grid/SearchGridConstants.js +1 -0
- package/lib/module/games/search-grid/SearchGridGame.js +1 -0
- package/lib/module/games/search-grid/SearchGridScene.js +1 -0
- package/lib/module/games/shared/BackdropCard.js +1 -0
- package/lib/module/games/shared/EngineBackdrop.js +1 -0
- package/lib/module/games/shared/EngineBlasts.js +1 -0
- package/lib/module/games/shared/EngineBlocks.js +1 -0
- package/lib/module/games/shared/EngineControlText.js +1 -0
- package/lib/module/games/shared/EngineDice.js +1 -0
- package/lib/module/games/shared/EngineFootprint.js +1 -0
- package/lib/module/games/shared/EngineFruits.js +1 -0
- package/lib/module/games/shared/EngineGameLoader.js +1 -0
- package/lib/module/games/shared/EngineGameScreen.js +1 -0
- package/lib/module/games/shared/EngineGameWidth.js +1 -0
- package/lib/module/games/shared/EngineGameWidth.web.js +1 -0
- package/lib/module/games/shared/EngineGlyphs.js +1 -0
- package/lib/module/games/shared/EngineHud.js +1 -0
- package/lib/module/games/shared/EngineLoading.js +1 -0
- package/lib/module/games/shared/EngineMeadow.js +1 -0
- package/lib/module/games/shared/EngineMeshCache.js +1 -0
- package/lib/module/games/shared/EngineMeshes.js +1 -0
- package/lib/module/games/shared/EngineRacingChase.js +1 -0
- package/lib/module/games/shared/EngineRacingHandling.js +1 -0
- package/lib/module/games/shared/EngineReadyContext.js +1 -0
- package/lib/module/games/shared/EngineTilt.js +1 -0
- package/lib/module/games/shared/EngineTouchSurface.js +1 -0
- package/lib/module/games/shared/EngineUtils.js +1 -0
- package/lib/module/games/shared/GameActivity.js +1 -0
- package/lib/module/games/shared/GameLoading.js +1 -0
- package/lib/module/games/shared/GameLoadingTransition.js +1 -0
- package/lib/module/games/shared/ProceduralCacheVersion.js +1 -0
- package/lib/module/games/shared/useEngineGame.js +1 -0
- package/lib/module/games/shared/useGameResource.js +1 -0
- package/lib/module/games/shared/useLiveState.js +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersGame.js +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersRules.js +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersScene.js +1 -0
- package/lib/module/games/snake-3d/Snake3D.js +1 -1
- package/lib/module/games/snake-3d/Snake3DConstants.js +1 -1
- package/lib/module/games/snake-3d/Snake3DGame.js +1 -0
- package/lib/module/games/snake-3d/Snake3DMotion.js +1 -0
- package/lib/module/games/snake-3d/Snake3DRules.js +1 -0
- package/lib/module/games/snake-3d/Snake3DScene.js +1 -0
- package/lib/module/games/snakes-and-ladders/SnakesAndLadders.js +1 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersConstants.js +1 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersGame.js +1 -0
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersScene.js +1 -0
- package/lib/module/games/space-fighter/SpaceFighter.js +1 -1
- package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -1
- package/lib/module/games/space-fighter/SpaceFighterGame.js +1 -0
- package/lib/module/games/space-fighter/SpaceFighterScene.js +1 -0
- package/lib/module/games/spider-solitaire/SpiderSolitaire.js +1 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireConstants.js +1 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireGame.js +1 -0
- package/lib/module/games/spider-solitaire/SpiderSolitaireRules.js +1 -0
- package/lib/module/games/spider-solitaire/SpiderSolitaireScene.js +1 -0
- package/lib/module/games/stack-tower/StackTower.js +1 -1
- package/lib/module/games/stack-tower/StackTowerConstants.js +1 -1
- package/lib/module/games/stack-tower/StackTowerGame.js +1 -0
- package/lib/module/games/stack-tower/StackTowerScene.js +1 -0
- package/lib/module/games/sudoku/Sudoku.js +1 -1
- package/lib/module/games/sudoku/SudokuConstants.js +1 -1
- package/lib/module/games/sudoku/SudokuGame.js +1 -0
- package/lib/module/games/sudoku/SudokuRules.js +1 -0
- package/lib/module/games/sudoku/SudokuScene.js +1 -0
- package/lib/module/games/tangram/Tangram.js +1 -1
- package/lib/module/games/tangram/TangramConstants.js +1 -1
- package/lib/module/games/tangram/TangramGame.js +1 -0
- package/lib/module/games/tangram/TangramRules.js +1 -0
- package/lib/module/games/tangram/TangramScene.js +1 -0
- package/lib/module/games/tank-1990/Tank1990.js +1 -1
- package/lib/module/games/tank-1990/Tank1990Constants.js +1 -1
- package/lib/module/games/tank-1990/Tank1990Game.js +1 -0
- package/lib/module/games/tank-1990/Tank1990Rules.js +1 -0
- package/lib/module/games/tank-1990/Tank1990Scene.js +1 -0
- package/lib/module/games/tic-tac-toe/TicTacToe.js +1 -1
- package/lib/module/games/tic-tac-toe/TicTacToeConstants.js +1 -1
- package/lib/module/games/tic-tac-toe/TicTacToeGame.js +1 -0
- package/lib/module/games/tic-tac-toe/TicTacToeRules.js +1 -0
- package/lib/module/games/tic-tac-toe/TicTacToeScene.js +1 -0
- package/lib/module/games/tile-home/TileHome.js +1 -1
- package/lib/module/games/tile-home/TileHomeConstants.js +1 -1
- package/lib/module/games/tile-home/TileHomeGame.js +1 -0
- package/lib/module/games/tile-home/TileHomeScene.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHunt.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntConstants.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntControls.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntGame.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntMeshes.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntModel.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntRules.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntScene.js +1 -0
- package/lib/module/games/whack-a-mole/WhackAMole.js +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleGame.js +1 -0
- package/lib/module/games/whack-a-mole/WhackAMoleScene.js +1 -0
- package/lib/module/games/word-search/WordSearch.js +1 -1
- package/lib/module/games/word-search/WordSearchWords.js +1 -0
- package/lib/module/helpers/GamePatternData.js +1 -0
- package/lib/module/helpers/GameSettingsModal.js +1 -1
- package/lib/module/helpers/GameTheme.js +1 -0
- package/lib/module/helpers/IconPaths.js +1 -0
- package/lib/module/helpers/index.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/services/GameAssetLoader.js +1 -0
- package/lib/module/services/GameAssets.js +1 -0
- package/lib/module/services/GameLoaders.js +1 -0
- package/lib/module/services/GamesConstants.js +1 -1
- package/lib/module/services/GamesMetadata.js +1 -1
- package/lib/module/services/GamesService.js +1 -1
- package/lib/module/services/HapticsService.js +1 -1
- package/lib/module/services/ScoringService.js +1 -1
- package/lib/module/services/SfxSources.js +1 -0
- package/lib/module/services/SoundsService.js +1 -1
- package/lib/module/services/ThemeService.js +1 -0
- package/lib/module/services/UtilsService.js +1 -1
- package/lib/module/services/index.js +1 -1
- package/lib/typescript/src/games/arrows/Arrows.d.ts +1 -3
- package/lib/typescript/src/games/arrows/ArrowsConstants.d.ts +48 -32
- package/lib/typescript/src/games/arrows/ArrowsGame.d.ts +60 -0
- package/lib/typescript/src/games/arrows/ArrowsScene.d.ts +67 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +1 -3
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +39 -131
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterGame.d.ts +57 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterPhysics.d.ts +16 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterScene.d.ts +31 -0
- package/lib/typescript/src/games/bike-racing/BikeMeshes.d.ts +14 -0
- package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +2 -1
- package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +38 -29
- package/lib/typescript/src/games/bike-racing/BikeRacingGame.d.ts +104 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingScene.d.ts +25 -0
- package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +1 -3
- package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +48 -30
- package/lib/typescript/src/games/block-blast/BlockBlastGame.d.ts +77 -0
- package/lib/typescript/src/games/block-blast/BlockBlastScene.d.ts +36 -0
- package/lib/typescript/src/games/block-breaker/BlockBreaker.d.ts +1 -3
- package/lib/typescript/src/games/block-breaker/BlockBreakerConstants.d.ts +88 -35
- package/lib/typescript/src/games/block-breaker/BlockBreakerGame.d.ts +82 -0
- package/lib/typescript/src/games/block-breaker/BlockBreakerScene.d.ts +48 -0
- package/lib/typescript/src/games/bluk/Bluk.d.ts +1 -3
- package/lib/typescript/src/games/bluk/BlukConstants.d.ts +65 -54
- package/lib/typescript/src/games/bluk/BlukGame.d.ts +65 -0
- package/lib/typescript/src/games/bluk/BlukRules.d.ts +51 -0
- package/lib/typescript/src/games/bluk/BlukScene.d.ts +54 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +1 -3
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +56 -24
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterGame.d.ts +70 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterScene.d.ts +26 -0
- package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +1 -3
- package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +63 -32
- package/lib/typescript/src/games/candy-crush/CandyCrushGame.d.ts +65 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushScene.d.ts +28 -0
- package/lib/typescript/src/games/car-racing/CarMeshes.d.ts +44 -0
- package/lib/typescript/src/games/car-racing/CarRacing.d.ts +2 -1
- package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +60 -29
- package/lib/typescript/src/games/car-racing/CarRacingFacade.d.ts +5 -0
- package/lib/typescript/src/games/car-racing/CarRacingGame.d.ts +96 -0
- package/lib/typescript/src/games/car-racing/CarRacingScene.d.ts +97 -0
- package/lib/typescript/src/games/car-racing/CarRacingScenery.d.ts +22 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRun.d.ts +1 -3
- package/lib/typescript/src/games/chameleon-run/ChameleonRunBackdrop.d.ts +14 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunConstants.d.ts +44 -42
- package/lib/typescript/src/games/chameleon-run/ChameleonRunGame.d.ts +60 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunMeshes.d.ts +20 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunRules.d.ts +52 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunScene.d.ts +44 -0
- package/lib/typescript/src/games/checkers/Checkers.d.ts +1 -3
- package/lib/typescript/src/games/checkers/CheckersAI.d.ts +11 -0
- package/lib/typescript/src/games/checkers/CheckersConstants.d.ts +32 -72
- package/lib/typescript/src/games/checkers/CheckersGame.d.ts +56 -0
- package/lib/typescript/src/games/checkers/CheckersRules.d.ts +48 -0
- package/lib/typescript/src/games/checkers/CheckersScene.d.ts +41 -0
- package/lib/typescript/src/games/color-switch/ColorSwitch.d.ts +1 -3
- package/lib/typescript/src/games/color-switch/ColorSwitchConstants.d.ts +27 -31
- package/lib/typescript/src/games/color-switch/ColorSwitchGame.d.ts +61 -0
- package/lib/typescript/src/games/color-switch/ColorSwitchScene.d.ts +43 -0
- package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts +1 -3
- package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts +37 -44
- package/lib/typescript/src/games/colors-sort/ColorsSortGame.d.ts +41 -0
- package/lib/typescript/src/games/colors-sort/ColorsSortScene.d.ts +33 -0
- package/lib/typescript/src/games/connect-em-all/ConnectEmAll.d.ts +1 -3
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllConstants.d.ts +43 -17
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllGame.d.ts +54 -0
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllScene.d.ts +49 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoad.d.ts +1 -3
- package/lib/typescript/src/games/crossy-road/CrossyRoadCamera.d.ts +14 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadConstants.d.ts +82 -50
- package/lib/typescript/src/games/crossy-road/CrossyRoadGame.d.ts +64 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadMeshes.d.ts +16 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadPerson.d.ts +10 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadRules.d.ts +36 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadScene.d.ts +38 -0
- package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +1 -3
- package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +48 -72
- package/lib/typescript/src/games/dino-jump/DinoJumpGame.d.ts +60 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpScene.d.ts +35 -0
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxes.d.ts +1 -3
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesConstants.d.ts +31 -36
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesGame.d.ts +44 -0
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesScene.d.ts +31 -0
- package/lib/typescript/src/games/falling-sticks/FallingSticks.d.ts +1 -3
- package/lib/typescript/src/games/falling-sticks/FallingSticksConstants.d.ts +31 -43
- package/lib/typescript/src/games/falling-sticks/FallingSticksGame.d.ts +42 -0
- package/lib/typescript/src/games/falling-sticks/FallingSticksRules.d.ts +36 -0
- package/lib/typescript/src/games/falling-sticks/FallingSticksScene.d.ts +26 -0
- package/lib/typescript/src/games/find-different-number/FindDifferentNumber.d.ts +1 -3
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberConstants.d.ts +33 -29
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberGame.d.ts +43 -0
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberRules.d.ts +8 -0
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberScene.d.ts +31 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +1 -3
- package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +39 -35
- package/lib/typescript/src/games/flappy-bird/FlappyBirdGame.d.ts +66 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdScene.d.ts +41 -0
- package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +1 -3
- package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +71 -44
- package/lib/typescript/src/games/fruit-merger/FruitMergerGame.d.ts +63 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerRules.d.ts +39 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerScene.d.ts +49 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +1 -3
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +51 -76
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaGame.d.ts +76 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaScene.d.ts +52 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaWorld.d.ts +8 -0
- package/lib/typescript/src/games/game-2048/Game2048.d.ts +1 -3
- package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +25 -120
- package/lib/typescript/src/games/game-2048/Game2048Game.d.ts +45 -0
- package/lib/typescript/src/games/game-2048/Game2048Rules.d.ts +32 -0
- package/lib/typescript/src/games/game-2048/Game2048Scene.d.ts +34 -0
- package/lib/typescript/src/games/knife-hit/KnifeHit.d.ts +1 -3
- package/lib/typescript/src/games/knife-hit/KnifeHitConstants.d.ts +41 -49
- package/lib/typescript/src/games/knife-hit/KnifeHitGame.d.ts +49 -0
- package/lib/typescript/src/games/knife-hit/KnifeHitScene.d.ts +37 -0
- package/lib/typescript/src/games/ludo-king/LudoKing.d.ts +1 -3
- package/lib/typescript/src/games/ludo-king/LudoKingConstants.d.ts +50 -28
- package/lib/typescript/src/games/ludo-king/LudoKingGame.d.ts +40 -0
- package/lib/typescript/src/games/ludo-king/LudoKingRules.d.ts +42 -0
- package/lib/typescript/src/games/ludo-king/LudoKingScene.d.ts +53 -0
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +1 -3
- package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +34 -10
- package/lib/typescript/src/games/maze-runner/MazeRunnerGame.d.ts +44 -0
- package/lib/typescript/src/games/maze-runner/MazeRunnerRules.d.ts +34 -0
- package/lib/typescript/src/games/maze-runner/MazeRunnerScene.d.ts +29 -0
- package/lib/typescript/src/games/memory-match/MemoryMatch.d.ts +1 -3
- package/lib/typescript/src/games/memory-match/MemoryMatchConstants.d.ts +42 -42
- package/lib/typescript/src/games/memory-match/MemoryMatchGame.d.ts +53 -0
- package/lib/typescript/src/games/memory-match/MemoryMatchRules.d.ts +14 -0
- package/lib/typescript/src/games/memory-match/MemoryMatchScene.d.ts +35 -0
- package/lib/typescript/src/games/mine-sweeper/MineSweeper.d.ts +1 -3
- package/lib/typescript/src/games/mine-sweeper/MineSweeperConstants.d.ts +43 -82
- package/lib/typescript/src/games/mine-sweeper/MineSweeperGame.d.ts +59 -0
- package/lib/typescript/src/games/mine-sweeper/MineSweeperRules.d.ts +18 -0
- package/lib/typescript/src/games/mine-sweeper/MineSweeperScene.d.ts +23 -0
- package/lib/typescript/src/games/mob-control/MobControl.d.ts +1 -3
- package/lib/typescript/src/games/mob-control/MobControlConstants.d.ts +99 -85
- package/lib/typescript/src/games/mob-control/MobControlGame.d.ts +45 -0
- package/lib/typescript/src/games/mob-control/MobControlMeshes.d.ts +2 -0
- package/lib/typescript/src/games/mob-control/MobControlRenderer.d.ts +20 -0
- package/lib/typescript/src/games/mob-control/MobControlRules.d.ts +68 -0
- package/lib/typescript/src/games/mob-control/MobControlScene.d.ts +58 -0
- package/lib/typescript/src/games/number-search/NumberSearch.d.ts +1 -3
- package/lib/typescript/src/games/number-search/NumberSearchNumbers.d.ts +1 -0
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBolts.d.ts +1 -3
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsConstants.d.ts +27 -79
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsGame.d.ts +56 -0
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsRules.d.ts +65 -0
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsScene.d.ts +48 -0
- package/lib/typescript/src/games/pac-man/PacMan.d.ts +1 -3
- package/lib/typescript/src/games/pac-man/PacManConstants.d.ts +66 -106
- package/lib/typescript/src/games/pac-man/PacManGame.d.ts +48 -0
- package/lib/typescript/src/games/pac-man/PacManRules.d.ts +52 -0
- package/lib/typescript/src/games/pac-man/PacManScene.d.ts +44 -0
- package/lib/typescript/src/games/paper-io/PaperIo.d.ts +1 -3
- package/lib/typescript/src/games/paper-io/PaperIoConstants.d.ts +60 -40
- package/lib/typescript/src/games/paper-io/PaperIoGame.d.ts +49 -0
- package/lib/typescript/src/games/paper-io/PaperIoMeshes.d.ts +13 -0
- package/lib/typescript/src/games/paper-io/PaperIoRules.d.ts +71 -0
- package/lib/typescript/src/games/paper-io/PaperIoScene.d.ts +39 -0
- package/lib/typescript/src/games/penguin-run/PenguinMeshes.d.ts +9 -0
- package/lib/typescript/src/games/penguin-run/PenguinModel.d.ts +42 -0
- package/lib/typescript/src/games/penguin-run/PenguinRun.d.ts +1 -0
- package/lib/typescript/src/games/penguin-run/PenguinRunConstants.d.ts +58 -0
- package/lib/typescript/src/games/penguin-run/PenguinRunGame.d.ts +64 -0
- package/lib/typescript/src/games/penguin-run/PenguinRunScene.d.ts +65 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +1 -3
- package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +23 -45
- package/lib/typescript/src/games/perfect-circle/PerfectCircleGame.d.ts +40 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleRules.d.ts +55 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleScene.d.ts +32 -0
- package/lib/typescript/src/games/pipe-connect/PipeConnect.d.ts +1 -3
- package/lib/typescript/src/games/pipe-connect/PipeConnectConstants.d.ts +36 -32
- package/lib/typescript/src/games/pipe-connect/PipeConnectGame.d.ts +40 -0
- package/lib/typescript/src/games/pipe-connect/PipeConnectRules.d.ts +16 -0
- package/lib/typescript/src/games/pipe-connect/PipeConnectScene.d.ts +28 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTua.d.ts +2 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaConstants.d.ts +64 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaGame.d.ts +34 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaModel.d.ts +9 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaScene.d.ts +13 -0
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +1 -4
- package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +25 -36
- package/lib/typescript/src/games/popit-fidget/PopitFidgetGame.d.ts +37 -0
- package/lib/typescript/src/games/popit-fidget/PopitFidgetScene.d.ts +19 -0
- package/lib/typescript/src/games/reversi/Reversi.d.ts +1 -3
- package/lib/typescript/src/games/reversi/ReversiConstants.d.ts +31 -62
- package/lib/typescript/src/games/reversi/ReversiGame.d.ts +54 -0
- package/lib/typescript/src/games/reversi/ReversiRules.d.ts +22 -0
- package/lib/typescript/src/games/reversi/ReversiScene.d.ts +27 -0
- package/lib/typescript/src/games/search-grid/SearchGrid.d.ts +20 -0
- package/lib/typescript/src/games/search-grid/SearchGridConstants.d.ts +60 -0
- package/lib/typescript/src/games/search-grid/SearchGridGame.d.ts +52 -0
- package/lib/typescript/src/games/search-grid/SearchGridScene.d.ts +43 -0
- package/lib/typescript/src/games/shared/BackdropCard.d.ts +2 -0
- package/lib/typescript/src/games/shared/EngineBackdrop.d.ts +19 -0
- package/lib/typescript/src/games/shared/EngineBlasts.d.ts +26 -0
- package/lib/typescript/src/games/shared/EngineBlocks.d.ts +19 -0
- package/lib/typescript/src/games/shared/EngineControlText.d.ts +2 -0
- package/lib/typescript/src/games/shared/EngineDice.d.ts +24 -0
- package/lib/typescript/src/games/shared/EngineFootprint.d.ts +17 -0
- package/lib/typescript/src/games/shared/EngineFruits.d.ts +27 -0
- package/lib/typescript/src/games/shared/EngineGameLoader.d.ts +4 -0
- package/lib/typescript/src/games/shared/EngineGameScreen.d.ts +48 -0
- package/lib/typescript/src/games/shared/EngineGameWidth.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineGameWidth.web.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineGlyphs.d.ts +15 -0
- package/lib/typescript/src/games/shared/EngineHud.d.ts +138 -0
- package/lib/typescript/src/games/shared/EngineLoading.d.ts +77 -0
- package/lib/typescript/src/games/shared/EngineMeadow.d.ts +90 -0
- package/lib/typescript/src/games/shared/EngineMeshCache.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineMeshes.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineRacingChase.d.ts +11 -0
- package/lib/typescript/src/games/shared/EngineRacingHandling.d.ts +15 -0
- package/lib/typescript/src/games/shared/EngineReadyContext.d.ts +2 -0
- package/lib/typescript/src/games/shared/EngineTilt.d.ts +19 -0
- package/lib/typescript/src/games/shared/EngineTouchSurface.d.ts +20 -0
- package/lib/typescript/src/games/shared/EngineUtils.d.ts +18 -0
- package/lib/typescript/src/games/shared/GameActivity.d.ts +3 -0
- package/lib/typescript/src/games/shared/GameLoading.d.ts +14 -0
- package/lib/typescript/src/games/shared/GameLoadingTransition.d.ts +9 -0
- package/lib/typescript/src/games/shared/ProceduralCacheVersion.d.ts +1 -0
- package/lib/typescript/src/games/shared/useEngineGame.d.ts +69 -0
- package/lib/typescript/src/games/shared/useGameResource.d.ts +2 -0
- package/lib/typescript/src/games/shared/useLiveState.d.ts +4 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +1 -3
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +32 -40
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersGame.d.ts +48 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersRules.d.ts +22 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersScene.d.ts +30 -0
- package/lib/typescript/src/games/snake-3d/Snake3D.d.ts +1 -3
- package/lib/typescript/src/games/snake-3d/Snake3DConstants.d.ts +31 -68
- package/lib/typescript/src/games/snake-3d/Snake3DGame.d.ts +42 -0
- package/lib/typescript/src/games/snake-3d/Snake3DMotion.d.ts +3 -0
- package/lib/typescript/src/games/snake-3d/Snake3DRules.d.ts +42 -0
- package/lib/typescript/src/games/snake-3d/Snake3DScene.d.ts +35 -0
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLadders.d.ts +1 -3
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersConstants.d.ts +58 -50
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersGame.d.ts +45 -0
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersScene.d.ts +50 -0
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +1 -3
- package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +33 -23
- package/lib/typescript/src/games/space-fighter/SpaceFighterGame.d.ts +58 -0
- package/lib/typescript/src/games/space-fighter/SpaceFighterScene.d.ts +51 -0
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaire.d.ts +1 -3
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireConstants.d.ts +52 -35
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireGame.d.ts +67 -0
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireRules.d.ts +39 -0
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireScene.d.ts +60 -0
- package/lib/typescript/src/games/stack-tower/StackTower.d.ts +1 -3
- package/lib/typescript/src/games/stack-tower/StackTowerConstants.d.ts +31 -23
- package/lib/typescript/src/games/stack-tower/StackTowerGame.d.ts +58 -0
- package/lib/typescript/src/games/stack-tower/StackTowerScene.d.ts +27 -0
- package/lib/typescript/src/games/sudoku/Sudoku.d.ts +1 -3
- package/lib/typescript/src/games/sudoku/SudokuConstants.d.ts +50 -55
- package/lib/typescript/src/games/sudoku/SudokuGame.d.ts +56 -0
- package/lib/typescript/src/games/sudoku/SudokuRules.d.ts +23 -0
- package/lib/typescript/src/games/sudoku/SudokuScene.d.ts +44 -0
- package/lib/typescript/src/games/tangram/Tangram.d.ts +1 -3
- package/lib/typescript/src/games/tangram/TangramConstants.d.ts +33 -52
- package/lib/typescript/src/games/tangram/TangramGame.d.ts +68 -0
- package/lib/typescript/src/games/tangram/TangramRules.d.ts +61 -0
- package/lib/typescript/src/games/tangram/TangramScene.d.ts +42 -0
- package/lib/typescript/src/games/tank-1990/Tank1990.d.ts +1 -3
- package/lib/typescript/src/games/tank-1990/Tank1990Constants.d.ts +44 -127
- package/lib/typescript/src/games/tank-1990/Tank1990Game.d.ts +50 -0
- package/lib/typescript/src/games/tank-1990/Tank1990Rules.d.ts +67 -0
- package/lib/typescript/src/games/tank-1990/Tank1990Scene.d.ts +38 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToe.d.ts +1 -3
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeConstants.d.ts +35 -72
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeGame.d.ts +54 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeRules.d.ts +10 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeScene.d.ts +26 -0
- package/lib/typescript/src/games/tile-home/TileHome.d.ts +1 -3
- package/lib/typescript/src/games/tile-home/TileHomeConstants.d.ts +72 -70
- package/lib/typescript/src/games/tile-home/TileHomeGame.d.ts +72 -0
- package/lib/typescript/src/games/tile-home/TileHomeScene.d.ts +28 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHunt.d.ts +3 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntConstants.d.ts +144 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntControls.d.ts +75 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntGame.d.ts +41 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntMeshes.d.ts +26 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntModel.d.ts +57 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntRules.d.ts +198 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntScene.d.ts +40 -0
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +1 -3
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +35 -45
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleGame.d.ts +51 -0
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleScene.d.ts +31 -0
- package/lib/typescript/src/games/word-search/WordSearch.d.ts +1 -3
- package/lib/typescript/src/games/word-search/WordSearchWords.d.ts +1 -0
- package/lib/typescript/src/helpers/GamePatternData.d.ts +46 -0
- package/lib/typescript/src/helpers/GameSettingsModal.d.ts +1 -1
- package/lib/typescript/src/helpers/GameTheme.d.ts +18 -0
- package/lib/typescript/src/helpers/IconPaths.d.ts +4 -0
- package/lib/typescript/src/helpers/index.d.ts +1 -19
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/services/GameAssetLoader.d.ts +32 -0
- package/lib/typescript/src/services/GameAssets.d.ts +11 -0
- package/lib/typescript/src/services/GameLoaders.d.ts +18 -0
- package/lib/typescript/src/services/GamesConstants.d.ts +11 -0
- package/lib/typescript/src/services/GamesMetadata.d.ts +2 -0
- package/lib/typescript/src/services/HapticsService.d.ts +1 -1
- package/lib/typescript/src/services/SfxSources.d.ts +79 -0
- package/lib/typescript/src/services/SoundsService.d.ts +487 -1566
- package/lib/typescript/src/services/ThemeService.d.ts +117 -0
- package/lib/typescript/src/services/UtilsService.d.ts +20 -2
- package/lib/typescript/src/services/index.d.ts +3 -0
- package/lib/web/assets/005ea2045b17-explorer.glb +0 -0
- package/lib/web/assets/01e2f0a0bbf6-hurt.wav +0 -0
- package/lib/web/assets/01fc0ecf658c-explorer-atlas.png +0 -0
- package/lib/web/assets/029329b2c7c0-asphalt.png +0 -0
- package/lib/web/assets/0376bda32be3-robot.wav +0 -0
- package/lib/web/assets/0719fb0bb38e-soft_glow.png +0 -0
- package/lib/web/assets/0b21278bffba-boing.wav +0 -0
- package/lib/web/assets/1333c9d1273c-flip_disc.wav +0 -0
- package/lib/web/assets/15785f62ee5f-time_up.wav +0 -0
- package/lib/web/assets/177f00502e08-bonus.wav +0 -0
- package/lib/web/assets/19e47dcfda1f-pling.wav +0 -0
- package/lib/web/assets/1a677e0f7f6c-laugh.wav +0 -0
- package/lib/web/assets/1ad2914478b1-eat.wav +0 -0
- package/lib/web/assets/1b0d703ddd1a-dance.wav +0 -0
- package/lib/web/assets/1e4330fddd74-chime.wav +0 -0
- package/lib/web/assets/2432a97b0af1-cannon.wav +0 -0
- package/lib/web/assets/2574370d6aa0-blocked.wav +0 -0
- package/lib/web/assets/2699065037ad-select.wav +0 -0
- package/lib/web/assets/28d30f53ad73-ladder.wav +0 -0
- package/lib/web/assets/2c1ec05270b2-point.wav +0 -0
- package/lib/web/assets/2e1dd99a0213-tick.wav +0 -0
- package/lib/web/assets/3084575cecdb-card_flip.wav +0 -0
- package/lib/web/assets/308bc31b6af5-engine.wav +0 -0
- package/lib/web/assets/336d63b739b5-combo.wav +0 -0
- package/lib/web/assets/3a369e2596e4-clash.wav +0 -0
- package/lib/web/assets/3a816e20212f-capture.wav +0 -0
- package/lib/web/assets/40240217810a-nitro.wav +0 -0
- package/lib/web/assets/46edaa54d1ea-crunch.wav +0 -0
- package/lib/web/assets/501994226995-coin.wav +0 -0
- package/lib/web/assets/5525d7f6a4b8-rotate.wav +0 -0
- package/lib/web/assets/5e816e1f0929-dice_roll.wav +0 -0
- package/lib/web/assets/60e2dec3cf41-deselect.wav +0 -0
- package/lib/web/assets/6ab86ea29e5c-six.wav +0 -0
- package/lib/web/assets/6da3b101926d-merge.wav +0 -0
- package/lib/web/assets/6e686dea513c-bark.jpg +0 -0
- package/lib/web/assets/6ff9a6a13714-limestone.jpg +0 -0
- package/lib/web/assets/735c4a1cd22e-invalid.wav +0 -0
- package/lib/web/assets/73f75c35ff5d-snake.wav +0 -0
- package/lib/web/assets/7506e3efe264-catch.wav +0 -0
- package/lib/web/assets/76493a2ada2d-ad_bolt.png +0 -0
- package/lib/web/assets/793abe620201-card_place.wav +0 -0
- package/lib/web/assets/7da09c57f52d-facade.png +0 -0
- package/lib/web/assets/7e1a902176f6-pine.png +0 -0
- package/lib/web/assets/7eb943b85c21-play-with-tua.glb +0 -0
- package/lib/web/assets/837d43c06dba-ad_bubbles.png +0 -0
- package/lib/web/assets/84f1a7dfa368-game_over.wav +0 -0
- package/lib/web/assets/850e26ce3b0a-flap.wav +0 -0
- package/lib/web/assets/854b31683cb2-draw.wav +0 -0
- package/lib/web/assets/8616150393b7-error.wav +0 -0
- package/lib/web/assets/87cc6d503ec6-river.jpg +0 -0
- package/lib/web/assets/88755845922c-hop.wav +0 -0
- package/lib/web/assets/8ec8f469492d-chomp_alt.wav +0 -0
- package/lib/web/assets/8f17f89b138c-pew.wav +0 -0
- package/lib/web/assets/9210a24472d1-place.wav +0 -0
- package/lib/web/assets/930d833ebf89-splash.wav +0 -0
- package/lib/web/assets/970f7c59265d-swoosh.wav +0 -0
- package/lib/web/assets/9900b8d1b6ad-flag.wav +0 -0
- package/lib/web/assets/9ab04403898b-clang.wav +0 -0
- package/lib/web/assets/9d8b97a10d45-drop.wav +0 -0
- package/lib/web/assets/9d9c02ddc7ed-boom.wav +0 -0
- package/lib/web/assets/9e1b5114d56d-pop_soft.wav +0 -0
- package/lib/web/assets/a01f22d6dbb3-thud.wav +0 -0
- package/lib/web/assets/a44a1cf1a1a8-bump.wav +0 -0
- package/lib/web/assets/a76940a48c68-hit.wav +0 -0
- package/lib/web/assets/a98ddb724460-leaves.png +0 -0
- package/lib/web/assets/aa0960e8bee6-footstep_run.wav +0 -0
- package/lib/web/assets/aa570c9d3e15-star.wav +0 -0
- package/lib/web/assets/aacb999f3c49-tock.wav +0 -0
- package/lib/web/assets/aae0c16c5e89-reveal.wav +0 -0
- package/lib/web/assets/ab37cd128509-click.wav +0 -0
- package/lib/web/assets/b0bc66f49005-warning.wav +0 -0
- package/lib/web/assets/b1edd756ac43-zap.wav +0 -0
- package/lib/web/assets/b3894545cf71-slice.wav +0 -0
- package/lib/web/assets/b3c6225d055a-meadow.jpg +0 -0
- package/lib/web/assets/b60ca65cdfcb-gate.wav +0 -0
- package/lib/web/assets/b8900bb2c5c7-win.wav +0 -0
- package/lib/web/assets/baff6feda846-lose.wav +0 -0
- package/lib/web/assets/bed31305d60d-ad_chevrons.png +0 -0
- package/lib/web/assets/c26f4a624e7d-shuffle.wav +0 -0
- package/lib/web/assets/c3a9edfad195-die.wav +0 -0
- package/lib/web/assets/c4aa9d773f2a-footstep_walk.wav +0 -0
- package/lib/web/assets/c5ab3ff0003f-crash.wav +0 -0
- package/lib/web/assets/c5eb07deddd4-start.wav +0 -0
- package/lib/web/assets/c6c58d9ae452-pop.wav +0 -0
- package/lib/web/assets/cea48c3cd9c7-balloon_pop.wav +0 -0
- package/lib/web/assets/d15591767778-tap.wav +0 -0
- package/lib/web/assets/d1781a52234f-slide.wav +0 -0
- package/lib/web/assets/d3bf2d9f793b-snap.wav +0 -0
- package/lib/web/assets/d8f59ebd3537-jump.wav +0 -0
- package/lib/web/assets/dafea2f28854-power_up.wav +0 -0
- package/lib/web/assets/e2e7f5ae2d1b-whoosh.wav +0 -0
- package/lib/web/assets/e2f90a23e1bd-chomp.wav +0 -0
- package/lib/web/assets/e454e56df89a-clack.wav +0 -0
- package/lib/web/assets/e8cbc2b88bc4-Inter-SemiBold.ttf +0 -0
- package/lib/web/assets/ed6496b891fc-land.wav +0 -0
- package/lib/web/assets/f21920200a81-thunk.wav +0 -0
- package/lib/web/assets/f753b43be89d-whack.wav +0 -0
- package/lib/web/assets/f798c4b5cf4d-miss.wav +0 -0
- package/lib/web/assets/fbe299716916-grass.png +0 -0
- package/lib/web/chunk-52ez2s9z.js +15 -0
- package/lib/web/chunk-8675t224.js +1 -0
- package/lib/web/index.js +2 -0
- package/lib/web/package.json +1 -0
- package/lib/web/services.js +2 -0
- package/package.json +94 -73
- package/src/assets/fonts/Inter-SemiBold.ttf +0 -0
- package/src/assets/models/explorer/explorer.glb +0 -0
- package/src/assets/models/explorer/params.json +51 -0
- package/src/assets/models/explorer/source.json +222 -0
- package/src/assets/models/play-with-tua/play-with-tua.glb +0 -0
- package/src/assets/models/play-with-tua/sources.json +141 -0
- package/src/assets/sfx/balloon_pop.wav +0 -0
- package/src/assets/sfx/blocked.wav +0 -0
- package/src/assets/sfx/boing.wav +0 -0
- package/src/assets/sfx/bonus.wav +0 -0
- package/src/assets/sfx/boom.wav +0 -0
- package/src/assets/sfx/bump.wav +0 -0
- package/src/assets/sfx/cannon.wav +0 -0
- package/src/assets/sfx/capture.wav +0 -0
- package/src/assets/sfx/card_flip.wav +0 -0
- package/src/assets/sfx/card_place.wav +0 -0
- package/src/assets/sfx/catch.wav +0 -0
- package/src/assets/sfx/chime.wav +0 -0
- package/src/assets/sfx/chomp.wav +0 -0
- package/src/assets/sfx/chomp_alt.wav +0 -0
- package/src/assets/sfx/clack.wav +0 -0
- package/src/assets/sfx/clang.wav +0 -0
- package/src/assets/sfx/clash.wav +0 -0
- package/src/assets/sfx/click.wav +0 -0
- package/src/assets/sfx/coin.wav +0 -0
- package/src/assets/sfx/combo.wav +0 -0
- package/src/assets/sfx/crash.wav +0 -0
- package/src/assets/sfx/crunch.wav +0 -0
- package/src/assets/sfx/dance.wav +0 -0
- package/src/assets/sfx/deselect.wav +0 -0
- package/src/assets/sfx/dice_roll.wav +0 -0
- package/src/assets/sfx/die.wav +0 -0
- package/src/assets/sfx/draw.wav +0 -0
- package/src/assets/sfx/drop.wav +0 -0
- package/src/assets/sfx/eat.wav +0 -0
- package/src/assets/sfx/engine.wav +0 -0
- package/src/assets/sfx/error.wav +0 -0
- package/src/assets/sfx/flag.wav +0 -0
- package/src/assets/sfx/flap.wav +0 -0
- package/src/assets/sfx/flip_disc.wav +0 -0
- package/src/assets/sfx/footstep_run.wav +0 -0
- package/src/assets/sfx/footstep_walk.wav +0 -0
- package/src/assets/sfx/game_over.wav +0 -0
- package/src/assets/sfx/gate.wav +0 -0
- package/src/assets/sfx/hit.wav +0 -0
- package/src/assets/sfx/hop.wav +0 -0
- package/src/assets/sfx/hurt.wav +0 -0
- package/src/assets/sfx/invalid.wav +0 -0
- package/src/assets/sfx/jump.wav +0 -0
- package/src/assets/sfx/ladder.wav +0 -0
- package/src/assets/sfx/land.wav +0 -0
- package/src/assets/sfx/laugh.wav +0 -0
- package/src/assets/sfx/lose.wav +0 -0
- package/src/assets/sfx/merge.wav +0 -0
- package/src/assets/sfx/miss.wav +0 -0
- package/src/assets/sfx/nitro.wav +0 -0
- package/src/assets/sfx/pew.wav +0 -0
- package/src/assets/sfx/place.wav +0 -0
- package/src/assets/sfx/pling.wav +0 -0
- package/src/assets/sfx/point.wav +0 -0
- package/src/assets/sfx/pop.wav +0 -0
- package/src/assets/sfx/pop_soft.wav +0 -0
- package/src/assets/sfx/power_up.wav +0 -0
- package/src/assets/sfx/reveal.wav +0 -0
- package/src/assets/sfx/robot.wav +0 -0
- package/src/assets/sfx/rotate.wav +0 -0
- package/src/assets/sfx/run_steps.wav +0 -0
- package/src/assets/sfx/select.wav +0 -0
- package/src/assets/sfx/shuffle.wav +0 -0
- package/src/assets/sfx/six.wav +0 -0
- package/src/assets/sfx/slice.wav +0 -0
- package/src/assets/sfx/slide.wav +0 -0
- package/src/assets/sfx/snake.wav +0 -0
- package/src/assets/sfx/snap.wav +0 -0
- package/src/assets/sfx/splash.wav +0 -0
- package/src/assets/sfx/star.wav +0 -0
- package/src/assets/sfx/start.wav +0 -0
- package/src/assets/sfx/swoosh.wav +0 -0
- package/src/assets/sfx/tap.wav +0 -0
- package/src/assets/sfx/thud.wav +0 -0
- package/src/assets/sfx/thunk.wav +0 -0
- package/src/assets/sfx/tick.wav +0 -0
- package/src/assets/sfx/time_up.wav +0 -0
- package/src/assets/sfx/tock.wav +0 -0
- package/src/assets/sfx/walk_steps.wav +0 -0
- package/src/assets/sfx/warning.wav +0 -0
- package/src/assets/sfx/whack.wav +0 -0
- package/src/assets/sfx/whoosh.wav +0 -0
- package/src/assets/sfx/win.wav +0 -0
- package/src/assets/sfx/zap.wav +0 -0
- package/src/assets/textures/ad_bolt.png +0 -0
- package/src/assets/textures/ad_bubbles.png +0 -0
- package/src/assets/textures/ad_chevrons.png +0 -0
- package/src/assets/textures/asphalt.png +0 -0
- package/src/assets/textures/bark.jpg +0 -0
- package/src/assets/textures/explorer-atlas.png +0 -0
- package/src/assets/textures/facade.png +0 -0
- package/src/assets/textures/grass.png +0 -0
- package/src/assets/textures/leaves.png +0 -0
- package/src/assets/textures/limestone.jpg +0 -0
- package/src/assets/textures/meadow.jpg +0 -0
- package/src/assets/textures/nature-sources.json +87 -0
- package/src/assets/textures/pine.png +0 -0
- package/src/assets/textures/river.jpg +0 -0
- package/src/assets/textures/soft_glow.png +0 -0
- package/src/games/arrows/Arrows.tsx +69 -0
- package/src/games/arrows/ArrowsConstants.ts +107 -0
- package/src/games/arrows/ArrowsGame.ts +735 -0
- package/src/games/arrows/ArrowsScene.ts +395 -0
- package/src/games/balloon-blaster/BalloonBlaster.tsx +75 -0
- package/src/games/balloon-blaster/BalloonBlasterConstants.ts +79 -0
- package/src/games/balloon-blaster/BalloonBlasterGame.ts +287 -0
- package/src/games/balloon-blaster/BalloonBlasterPhysics.ts +95 -0
- package/src/games/balloon-blaster/BalloonBlasterScene.ts +225 -0
- package/src/games/bike-racing/BikeMeshes.ts +273 -0
- package/src/games/bike-racing/BikeRacing.tsx +211 -0
- package/src/games/bike-racing/BikeRacingConstants.ts +103 -0
- package/src/games/bike-racing/BikeRacingGame.ts +557 -0
- package/src/games/bike-racing/BikeRacingScene.ts +119 -0
- package/src/games/block-blast/BlockBlast.tsx +73 -0
- package/src/games/block-blast/BlockBlastConstants.ts +179 -0
- package/src/games/block-blast/BlockBlastGame.ts +471 -0
- package/src/games/block-blast/BlockBlastScene.ts +156 -0
- package/src/games/block-breaker/BlockBreaker.tsx +79 -0
- package/src/games/block-breaker/BlockBreakerConstants.ts +139 -0
- package/src/games/block-breaker/BlockBreakerGame.ts +459 -0
- package/src/games/block-breaker/BlockBreakerScene.ts +257 -0
- package/src/games/bluk/Bluk.tsx +82 -0
- package/src/games/bluk/BlukConstants.ts +121 -0
- package/src/games/bluk/BlukGame.ts +323 -0
- package/src/games/bluk/BlukRules.ts +154 -0
- package/src/games/bluk/BlukScene.ts +514 -0
- package/src/games/bubble-shooter/BubbleShooter.tsx +76 -0
- package/src/games/bubble-shooter/BubbleShooterConstants.ts +103 -0
- package/src/games/bubble-shooter/BubbleShooterGame.ts +459 -0
- package/src/games/bubble-shooter/BubbleShooterScene.ts +158 -0
- package/src/games/candy-crush/CandyCrush.tsx +77 -0
- package/src/games/candy-crush/CandyCrushConstants.ts +94 -0
- package/src/games/candy-crush/CandyCrushGame.ts +477 -0
- package/src/games/candy-crush/CandyCrushScene.ts +209 -0
- package/src/games/car-racing/CarMeshes.ts +440 -0
- package/src/games/car-racing/CarRacing.tsx +211 -0
- package/src/games/car-racing/CarRacingConstants.ts +167 -0
- package/src/games/car-racing/CarRacingFacade.ts +40 -0
- package/src/games/car-racing/CarRacingGame.ts +539 -0
- package/src/games/car-racing/CarRacingScene.ts +1026 -0
- package/src/games/car-racing/CarRacingScenery.ts +265 -0
- package/src/games/chameleon-run/ChameleonRun.tsx +96 -0
- package/src/games/chameleon-run/ChameleonRunBackdrop.ts +186 -0
- package/src/games/chameleon-run/ChameleonRunConstants.ts +47 -0
- package/src/games/chameleon-run/ChameleonRunGame.ts +309 -0
- package/src/games/chameleon-run/ChameleonRunMeshes.ts +305 -0
- package/src/games/chameleon-run/ChameleonRunRules.ts +252 -0
- package/src/games/chameleon-run/ChameleonRunScene.ts +310 -0
- package/src/games/checkers/Checkers.tsx +83 -0
- package/src/games/checkers/CheckersAI.ts +255 -0
- package/src/games/checkers/CheckersConstants.ts +68 -0
- package/src/games/checkers/CheckersGame.ts +322 -0
- package/src/games/checkers/CheckersRules.ts +167 -0
- package/src/games/checkers/CheckersScene.ts +308 -0
- package/src/games/color-switch/ColorSwitch.tsx +75 -0
- package/src/games/color-switch/ColorSwitchConstants.ts +61 -0
- package/src/games/color-switch/ColorSwitchGame.ts +329 -0
- package/src/games/color-switch/ColorSwitchScene.ts +220 -0
- package/src/games/colors-sort/ColorsSort.tsx +82 -0
- package/src/games/colors-sort/ColorsSortConstants.ts +119 -0
- package/src/games/colors-sort/ColorsSortGame.ts +246 -0
- package/src/games/colors-sort/ColorsSortScene.ts +315 -0
- package/src/games/connect-em-all/ConnectEmAll.tsx +70 -0
- package/src/games/connect-em-all/ConnectEmAllConstants.ts +77 -0
- package/src/games/connect-em-all/ConnectEmAllGame.ts +401 -0
- package/src/games/connect-em-all/ConnectEmAllScene.ts +235 -0
- package/src/games/crossy-road/CrossyRoad.tsx +74 -0
- package/src/games/crossy-road/CrossyRoadCamera.ts +59 -0
- package/src/games/crossy-road/CrossyRoadConstants.ts +132 -0
- package/src/games/crossy-road/CrossyRoadGame.ts +293 -0
- package/src/games/crossy-road/CrossyRoadMeshes.ts +195 -0
- package/src/games/crossy-road/CrossyRoadPerson.ts +198 -0
- package/src/games/crossy-road/CrossyRoadRules.ts +99 -0
- package/src/games/crossy-road/CrossyRoadScene.ts +355 -0
- package/src/games/dino-jump/DinoJump.tsx +77 -0
- package/src/games/dino-jump/DinoJumpConstants.ts +80 -0
- package/src/games/dino-jump/DinoJumpGame.ts +344 -0
- package/src/games/dino-jump/DinoJumpScene.ts +686 -0
- package/src/games/dots-and-boxes/DotsAndBoxes.tsx +83 -0
- package/src/games/dots-and-boxes/DotsAndBoxesConstants.ts +77 -0
- package/src/games/dots-and-boxes/DotsAndBoxesGame.ts +271 -0
- package/src/games/dots-and-boxes/DotsAndBoxesScene.ts +249 -0
- package/src/games/falling-sticks/FallingSticks.tsx +72 -0
- package/src/games/falling-sticks/FallingSticksConstants.ts +62 -0
- package/src/games/falling-sticks/FallingSticksGame.ts +220 -0
- package/src/games/falling-sticks/FallingSticksRules.ts +145 -0
- package/src/games/falling-sticks/FallingSticksScene.ts +245 -0
- package/src/games/find-different-number/FindDifferentNumber.tsx +74 -0
- package/src/games/find-different-number/FindDifferentNumberConstants.ts +74 -0
- package/src/games/find-different-number/FindDifferentNumberGame.ts +174 -0
- package/src/games/find-different-number/FindDifferentNumberRules.ts +43 -0
- package/src/games/find-different-number/FindDifferentNumberScene.ts +193 -0
- package/src/games/flappy-bird/FlappyBird.tsx +73 -0
- package/src/games/flappy-bird/FlappyBirdConstants.ts +95 -0
- package/src/games/flappy-bird/FlappyBirdGame.ts +375 -0
- package/src/games/flappy-bird/FlappyBirdScene.ts +630 -0
- package/src/games/fruit-merger/FruitMerger.tsx +73 -0
- package/src/games/fruit-merger/FruitMergerConstants.ts +102 -0
- package/src/games/fruit-merger/FruitMergerGame.ts +285 -0
- package/src/games/fruit-merger/FruitMergerRules.ts +286 -0
- package/src/games/fruit-merger/FruitMergerScene.ts +498 -0
- package/src/games/fruit-ninja/FruitNinja.tsx +129 -0
- package/src/games/fruit-ninja/FruitNinjaConstants.ts +107 -0
- package/src/games/fruit-ninja/FruitNinjaGame.ts +391 -0
- package/src/games/fruit-ninja/FruitNinjaScene.ts +319 -0
- package/src/games/fruit-ninja/FruitNinjaWorld.ts +17 -0
- package/src/games/game-2048/Game2048.tsx +84 -0
- package/src/games/game-2048/Game2048Constants.ts +68 -0
- package/src/games/game-2048/Game2048Game.ts +181 -0
- package/src/games/game-2048/Game2048Rules.ts +101 -0
- package/src/games/game-2048/Game2048Scene.ts +206 -0
- package/src/games/knife-hit/KnifeHit.tsx +78 -0
- package/src/games/knife-hit/KnifeHitConstants.ts +89 -0
- package/src/games/knife-hit/KnifeHitGame.ts +264 -0
- package/src/games/knife-hit/KnifeHitScene.ts +360 -0
- package/src/games/ludo-king/LudoKing.tsx +86 -0
- package/src/games/ludo-king/LudoKingConstants.ts +212 -0
- package/src/games/ludo-king/LudoKingGame.ts +326 -0
- package/src/games/ludo-king/LudoKingRules.ts +143 -0
- package/src/games/ludo-king/LudoKingScene.ts +397 -0
- package/src/games/maze-runner/MazeRunner.tsx +88 -0
- package/src/games/maze-runner/MazeRunnerConstants.ts +65 -0
- package/src/games/maze-runner/MazeRunnerGame.ts +176 -0
- package/src/games/maze-runner/MazeRunnerRules.ts +161 -0
- package/src/games/maze-runner/MazeRunnerScene.ts +245 -0
- package/src/games/memory-match/MemoryMatch.tsx +77 -0
- package/src/games/memory-match/MemoryMatchConstants.ts +105 -0
- package/src/games/memory-match/MemoryMatchGame.ts +222 -0
- package/src/games/memory-match/MemoryMatchRules.ts +38 -0
- package/src/games/memory-match/MemoryMatchScene.ts +268 -0
- package/src/games/mine-sweeper/MineSweeper.tsx +77 -0
- package/src/games/mine-sweeper/MineSweeperConstants.ts +94 -0
- package/src/games/mine-sweeper/MineSweeperGame.ts +234 -0
- package/src/games/mine-sweeper/MineSweeperRules.ts +67 -0
- package/src/games/mine-sweeper/MineSweeperScene.ts +262 -0
- package/src/games/mob-control/MobControl.tsx +73 -0
- package/src/games/mob-control/MobControlConstants.ts +106 -0
- package/src/games/mob-control/MobControlGame.ts +176 -0
- package/src/games/mob-control/MobControlMeshes.ts +85 -0
- package/src/games/mob-control/MobControlRenderer.ts +108 -0
- package/src/games/mob-control/MobControlRules.ts +522 -0
- package/src/games/mob-control/MobControlScene.ts +399 -0
- package/src/games/number-search/NumberSearch.tsx +18 -0
- package/src/games/number-search/NumberSearchNumbers.ts +623 -0
- package/src/games/nuts-and-bolts/NutsAndBolts.tsx +85 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsConstants.ts +75 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsGame.ts +298 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsRules.ts +474 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsScene.ts +498 -0
- package/src/games/pac-man/PacMan.tsx +86 -0
- package/src/games/pac-man/PacManConstants.ts +169 -0
- package/src/games/pac-man/PacManGame.ts +406 -0
- package/src/games/pac-man/PacManRules.ts +255 -0
- package/src/games/pac-man/PacManScene.ts +387 -0
- package/src/games/paper-io/PaperIo.tsx +91 -0
- package/src/games/paper-io/PaperIoConstants.ts +86 -0
- package/src/games/paper-io/PaperIoGame.ts +193 -0
- package/src/games/paper-io/PaperIoMeshes.ts +233 -0
- package/src/games/paper-io/PaperIoRules.ts +315 -0
- package/src/games/paper-io/PaperIoScene.ts +310 -0
- package/src/games/penguin-run/PenguinMeshes.ts +269 -0
- package/src/games/penguin-run/PenguinModel.ts +712 -0
- package/src/games/penguin-run/PenguinRun.tsx +77 -0
- package/src/games/penguin-run/PenguinRunConstants.ts +69 -0
- package/src/games/penguin-run/PenguinRunGame.ts +406 -0
- package/src/games/penguin-run/PenguinRunScene.ts +949 -0
- package/src/games/perfect-circle/PerfectCircle.tsx +74 -0
- package/src/games/perfect-circle/PerfectCircleConstants.ts +52 -0
- package/src/games/perfect-circle/PerfectCircleGame.ts +153 -0
- package/src/games/perfect-circle/PerfectCircleRules.ts +111 -0
- package/src/games/perfect-circle/PerfectCircleScene.ts +176 -0
- package/src/games/pipe-connect/PipeConnect.tsx +69 -0
- package/src/games/pipe-connect/PipeConnectConstants.ts +101 -0
- package/src/games/pipe-connect/PipeConnectGame.ts +179 -0
- package/src/games/pipe-connect/PipeConnectRules.ts +326 -0
- package/src/games/pipe-connect/PipeConnectScene.ts +271 -0
- package/src/games/play-with-tua/PlayWithTua.tsx +123 -0
- package/src/games/play-with-tua/PlayWithTuaConstants.ts +70 -0
- package/src/games/play-with-tua/PlayWithTuaGame.ts +167 -0
- package/src/games/play-with-tua/PlayWithTuaModel.ts +42 -0
- package/src/games/play-with-tua/PlayWithTuaScene.ts +36 -0
- package/src/games/popit-fidget/PopitFidget.tsx +72 -0
- package/src/games/popit-fidget/PopitFidgetConstants.ts +71 -0
- package/src/games/popit-fidget/PopitFidgetGame.ts +148 -0
- package/src/games/popit-fidget/PopitFidgetScene.ts +242 -0
- package/src/games/reversi/Reversi.tsx +94 -0
- package/src/games/reversi/ReversiConstants.ts +67 -0
- package/src/games/reversi/ReversiGame.ts +266 -0
- package/src/games/reversi/ReversiRules.ts +176 -0
- package/src/games/reversi/ReversiScene.ts +240 -0
- package/src/games/search-grid/SearchGrid.tsx +92 -0
- package/src/games/search-grid/SearchGridConstants.ts +178 -0
- package/src/games/search-grid/SearchGridGame.ts +209 -0
- package/src/games/search-grid/SearchGridScene.ts +301 -0
- package/src/games/shared/BackdropCard.tsx +54 -0
- package/src/games/shared/EngineBackdrop.ts +300 -0
- package/src/games/shared/EngineBlasts.ts +136 -0
- package/src/games/shared/EngineBlocks.ts +91 -0
- package/src/games/shared/EngineControlText.ts +17 -0
- package/src/games/shared/EngineDice.ts +250 -0
- package/src/games/shared/EngineFootprint.ts +35 -0
- package/src/games/shared/EngineFruits.ts +1435 -0
- package/src/games/shared/EngineGameLoader.tsx +88 -0
- package/src/games/shared/EngineGameScreen.tsx +325 -0
- package/src/games/shared/EngineGameWidth.ts +3 -0
- package/src/games/shared/EngineGameWidth.web.ts +3 -0
- package/src/games/shared/EngineGlyphs.ts +178 -0
- package/src/games/shared/EngineHud.ts +815 -0
- package/src/games/shared/EngineLoading.ts +477 -0
- package/src/games/shared/EngineMeadow.ts +725 -0
- package/src/games/shared/EngineMeshCache.ts +15 -0
- package/src/games/shared/EngineMeshes.ts +10 -0
- package/src/games/shared/EngineRacingChase.ts +21 -0
- package/src/games/shared/EngineRacingHandling.ts +48 -0
- package/src/games/shared/EngineReadyContext.ts +4 -0
- package/src/games/shared/EngineTilt.ts +44 -0
- package/src/games/shared/EngineTouchSurface.tsx +103 -0
- package/src/games/shared/EngineUtils.ts +52 -0
- package/src/games/shared/GameActivity.ts +13 -0
- package/src/games/shared/GameLoading.tsx +202 -0
- package/src/games/shared/GameLoadingTransition.tsx +61 -0
- package/src/games/shared/ProceduralCacheVersion.ts +2 -0
- package/src/games/shared/useEngineGame.ts +240 -0
- package/src/games/shared/useGameResource.ts +21 -0
- package/src/games/shared/useLiveState.ts +58 -0
- package/src/games/sliding-numbers/SlidingNumbers.tsx +71 -0
- package/src/games/sliding-numbers/SlidingNumbersConstants.ts +65 -0
- package/src/games/sliding-numbers/SlidingNumbersGame.ts +192 -0
- package/src/games/sliding-numbers/SlidingNumbersRules.ts +79 -0
- package/src/games/sliding-numbers/SlidingNumbersScene.ts +193 -0
- package/src/games/snake-3d/Snake3D.tsx +76 -0
- package/src/games/snake-3d/Snake3DConstants.ts +61 -0
- package/src/games/snake-3d/Snake3DGame.ts +192 -0
- package/src/games/snake-3d/Snake3DMotion.ts +22 -0
- package/src/games/snake-3d/Snake3DRules.ts +116 -0
- package/src/games/snake-3d/Snake3DScene.ts +322 -0
- package/src/games/snakes-and-ladders/SnakesAndLadders.tsx +87 -0
- package/src/games/snakes-and-ladders/SnakesAndLaddersConstants.ts +136 -0
- package/src/games/snakes-and-ladders/SnakesAndLaddersGame.ts +310 -0
- package/src/games/snakes-and-ladders/SnakesAndLaddersScene.ts +515 -0
- package/src/games/space-fighter/SpaceFighter.tsx +74 -0
- package/src/games/space-fighter/SpaceFighterConstants.ts +86 -0
- package/src/games/space-fighter/SpaceFighterGame.ts +292 -0
- package/src/games/space-fighter/SpaceFighterScene.ts +550 -0
- package/src/games/spider-solitaire/SpiderSolitaire.tsx +80 -0
- package/src/games/spider-solitaire/SpiderSolitaireConstants.ts +107 -0
- package/src/games/spider-solitaire/SpiderSolitaireGame.ts +387 -0
- package/src/games/spider-solitaire/SpiderSolitaireRules.ts +123 -0
- package/src/games/spider-solitaire/SpiderSolitaireScene.ts +352 -0
- package/src/games/stack-tower/StackTower.tsx +76 -0
- package/src/games/stack-tower/StackTowerConstants.ts +74 -0
- package/src/games/stack-tower/StackTowerGame.ts +236 -0
- package/src/games/stack-tower/StackTowerScene.ts +186 -0
- package/src/games/sudoku/Sudoku.tsx +73 -0
- package/src/games/sudoku/SudokuConstants.ts +127 -0
- package/src/games/sudoku/SudokuGame.ts +250 -0
- package/src/games/sudoku/SudokuRules.ts +125 -0
- package/src/games/sudoku/SudokuScene.ts +304 -0
- package/src/games/tangram/Tangram.tsx +79 -0
- package/src/games/tangram/TangramConstants.ts +64 -0
- package/src/games/tangram/TangramGame.ts +356 -0
- package/src/games/tangram/TangramRules.ts +409 -0
- package/src/games/tangram/TangramScene.ts +203 -0
- package/src/games/tank-1990/Tank1990.tsx +78 -0
- package/src/games/tank-1990/Tank1990Constants.ts +81 -0
- package/src/games/tank-1990/Tank1990Game.ts +331 -0
- package/src/games/tank-1990/Tank1990Rules.ts +390 -0
- package/src/games/tank-1990/Tank1990Scene.ts +434 -0
- package/src/games/tic-tac-toe/TicTacToe.tsx +98 -0
- package/src/games/tic-tac-toe/TicTacToeConstants.ts +69 -0
- package/src/games/tic-tac-toe/TicTacToeGame.ts +200 -0
- package/src/games/tic-tac-toe/TicTacToeRules.ts +103 -0
- package/src/games/tic-tac-toe/TicTacToeScene.ts +245 -0
- package/src/games/tile-home/TileHome.tsx +92 -0
- package/src/games/tile-home/TileHomeConstants.ts +139 -0
- package/src/games/tile-home/TileHomeGame.ts +435 -0
- package/src/games/tile-home/TileHomeScene.ts +154 -0
- package/src/games/treasure-hunt/TreasureHunt.tsx +206 -0
- package/src/games/treasure-hunt/TreasureHuntConstants.ts +266 -0
- package/src/games/treasure-hunt/TreasureHuntControls.ts +280 -0
- package/src/games/treasure-hunt/TreasureHuntGame.ts +402 -0
- package/src/games/treasure-hunt/TreasureHuntMeshes.ts +422 -0
- package/src/games/treasure-hunt/TreasureHuntModel.ts +506 -0
- package/src/games/treasure-hunt/TreasureHuntRules.ts +1210 -0
- package/src/games/treasure-hunt/TreasureHuntScene.ts +586 -0
- package/src/games/whack-a-mole/WhackAMole.tsx +79 -0
- package/src/games/whack-a-mole/WhackAMoleConstants.ts +94 -0
- package/src/games/whack-a-mole/WhackAMoleGame.ts +233 -0
- package/src/games/whack-a-mole/WhackAMoleScene.ts +349 -0
- package/src/games/word-search/WordSearch.tsx +18 -0
- package/src/games/word-search/WordSearchWords.ts +1642 -0
- package/src/helpers/GamePatternData.ts +120 -0
- package/src/helpers/GameSettingsModal.tsx +384 -0
- package/src/helpers/GameTheme.tsx +37 -0
- package/src/helpers/IconPaths.ts +6 -0
- package/src/helpers/index.ts +2 -0
- package/src/index.tsx +60 -0
- package/src/services/GameAssetLoader.ts +111 -0
- package/src/services/GameAssets.ts +149 -0
- package/src/services/GameLoaders.ts +93 -0
- package/src/services/GamesConstants.ts +193 -0
- package/src/services/GamesMetadata.ts +711 -0
- package/src/services/GamesService.ts +116 -0
- package/src/services/HapticsService.ts +48 -0
- package/src/services/ScoringService.ts +19 -0
- package/src/services/SfxSources.ts +81 -0
- package/src/services/SoundsService.ts +582 -0
- package/src/services/ThemeService.ts +281 -0
- package/src/services/UtilsService.ts +134 -0
- package/src/services/index.ts +6 -0
- package/lib/module/games/arrows/ArrowsService.js +0 -1
- package/lib/module/games/arrows/ArrowsStore.js +0 -1
- package/lib/module/games/arrows/components/ArrowsGrid.js +0 -1
- package/lib/module/games/arrows/components/ScoreBoard.js +0 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js +0 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +0 -1
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js +0 -1
- package/lib/module/games/balloon-blaster/components/GameArea.js +0 -1
- package/lib/module/games/balloon-blaster/components/GameBackground.js +0 -1
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js +0 -1
- package/lib/module/games/bike-racing/BikeRacingService.js +0 -1
- package/lib/module/games/bike-racing/BikeRacingStore.js +0 -1
- package/lib/module/games/bike-racing/components/BikeComponent.js +0 -1
- package/lib/module/games/bike-racing/components/GameBackground.js +0 -1
- package/lib/module/games/bike-racing/components/ScoreBoard.js +0 -1
- package/lib/module/games/block-blast/BlockBlastService.js +0 -1
- package/lib/module/games/block-blast/BlockBlastStore.js +0 -1
- package/lib/module/games/block-blast/components/BlockPieceComponent.js +0 -1
- package/lib/module/games/block-blast/components/GameArea.js +0 -1
- package/lib/module/games/block-blast/components/GridComponent.js +0 -1
- package/lib/module/games/block-blast/components/ScoreBoard.js +0 -1
- package/lib/module/games/block-breaker/BlockBreakerService.js +0 -1
- package/lib/module/games/block-breaker/BlockBreakerStore.js +0 -1
- package/lib/module/games/block-breaker/components/BlastAnimation.js +0 -1
- package/lib/module/games/block-breaker/components/GameArea.js +0 -1
- package/lib/module/games/block-breaker/components/ScoreBoard.js +0 -1
- package/lib/module/games/bluk/BlukService.js +0 -1
- package/lib/module/games/bluk/BlukStore.js +0 -1
- package/lib/module/games/bluk/components/GameArea.js +0 -1
- package/lib/module/games/bluk/components/GameBackground.js +0 -1
- package/lib/module/games/bluk/components/ScoreBoard.js +0 -1
- package/lib/module/games/bubble-shooter/BubbleShooterService.js +0 -1
- package/lib/module/games/bubble-shooter/BubbleShooterStore.js +0 -1
- package/lib/module/games/bubble-shooter/components/GameArea.js +0 -1
- package/lib/module/games/bubble-shooter/components/ScoreBoard.js +0 -1
- package/lib/module/games/candy-crush/CandyCrushService.js +0 -1
- package/lib/module/games/candy-crush/CandyCrushStore.js +0 -1
- package/lib/module/games/candy-crush/components/CandyItem.js +0 -1
- package/lib/module/games/candy-crush/components/GameGrid.js +0 -1
- package/lib/module/games/candy-crush/components/ScoreBoard.js +0 -1
- package/lib/module/games/car-racing/CarRacingService.js +0 -1
- package/lib/module/games/car-racing/CarRacingStore.js +0 -1
- package/lib/module/games/car-racing/components/CarComponent.js +0 -1
- package/lib/module/games/car-racing/components/GameBackground.js +0 -1
- package/lib/module/games/car-racing/components/ScoreBoard.js +0 -1
- package/lib/module/games/chameleon-run/ChameleonRunService.js +0 -1
- package/lib/module/games/chameleon-run/ChameleonRunStore.js +0 -1
- package/lib/module/games/chameleon-run/components/GameArea.js +0 -1
- package/lib/module/games/chameleon-run/components/GameBackground.js +0 -1
- package/lib/module/games/chameleon-run/components/ScoreBoard.js +0 -1
- package/lib/module/games/checkers/CheckersService.js +0 -1
- package/lib/module/games/checkers/CheckersStore.js +0 -1
- package/lib/module/games/checkers/components/GameBoard.js +0 -1
- package/lib/module/games/checkers/components/ScoreBoard.js +0 -1
- package/lib/module/games/color-switch/ColorSwitchService.js +0 -1
- package/lib/module/games/color-switch/ColorSwitchStore.js +0 -1
- package/lib/module/games/color-switch/components/GameArea.js +0 -1
- package/lib/module/games/color-switch/components/ScoreBoard.js +0 -1
- package/lib/module/games/colors-sort/ColorsSortService.js +0 -1
- package/lib/module/games/colors-sort/ColorsSortStore.js +0 -1
- package/lib/module/games/colors-sort/components/ColorContainer.js +0 -1
- package/lib/module/games/colors-sort/components/ScoreBoard.js +0 -1
- package/lib/module/games/connect-em-all/ConnectEmAllService.js +0 -1
- package/lib/module/games/connect-em-all/ConnectEmAllStore.js +0 -1
- package/lib/module/games/connect-em-all/components/GameBoard.js +0 -1
- package/lib/module/games/connect-em-all/components/ScoreBoard.js +0 -1
- package/lib/module/games/crossy-road/CrossyRoadService.js +0 -1
- package/lib/module/games/crossy-road/CrossyRoadStore.js +0 -1
- package/lib/module/games/crossy-road/components/GameArea.js +0 -1
- package/lib/module/games/crossy-road/components/ScoreBoard.js +0 -1
- package/lib/module/games/dino-jump/DinoJumpService.js +0 -1
- package/lib/module/games/dino-jump/DinoJumpStore.js +0 -1
- package/lib/module/games/dino-jump/components/DinoSprite.js +0 -1
- package/lib/module/games/dino-jump/components/GameArea.js +0 -1
- package/lib/module/games/dino-jump/components/GameBackground.js +0 -1
- package/lib/module/games/dino-jump/components/ObstacleSprite.js +0 -1
- package/lib/module/games/dino-jump/components/ScoreBoard.js +0 -1
- package/lib/module/games/dino-jump/components/StarSprite.js +0 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesService.js +0 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesStore.js +0 -1
- package/lib/module/games/dots-and-boxes/components/GameBoard.js +0 -1
- package/lib/module/games/dots-and-boxes/components/ScoreBoard.js +0 -1
- package/lib/module/games/falling-sticks/FallingSticksService.js +0 -1
- package/lib/module/games/falling-sticks/FallingSticksStore.js +0 -1
- package/lib/module/games/falling-sticks/components/GameArea.js +0 -1
- package/lib/module/games/falling-sticks/components/GameBackground.js +0 -1
- package/lib/module/games/falling-sticks/components/ScoreBoard.js +0 -1
- package/lib/module/games/find-different-number/FindDifferentNumberService.js +0 -1
- package/lib/module/games/find-different-number/FindDifferentNumberStore.js +0 -1
- package/lib/module/games/find-different-number/components/GameGrid.js +0 -1
- package/lib/module/games/find-different-number/components/ScoreBoard.js +0 -1
- package/lib/module/games/flappy-bird/FlappyBirdStore.js +0 -1
- package/lib/module/games/flappy-bird/components/Bird.js +0 -1
- package/lib/module/games/flappy-bird/components/GameArea.js +0 -1
- package/lib/module/games/flappy-bird/components/GameBackground.js +0 -1
- package/lib/module/games/flappy-bird/components/Pipes.js +0 -1
- package/lib/module/games/flappy-bird/components/ScoreBoard.js +0 -1
- package/lib/module/games/fruit-merger/FruitMergerService.js +0 -1
- package/lib/module/games/fruit-merger/FruitMergerStore.js +0 -1
- package/lib/module/games/fruit-merger/components/FruitItem.js +0 -1
- package/lib/module/games/fruit-merger/components/GameArea.js +0 -1
- package/lib/module/games/fruit-merger/components/ScoreBoard.js +0 -1
- package/lib/module/games/fruit-ninja/FruitNinjaService.js +0 -1
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js +0 -1
- package/lib/module/games/fruit-ninja/components/FruitComponent.js +0 -1
- package/lib/module/games/fruit-ninja/components/GameArea.js +0 -1
- package/lib/module/games/fruit-ninja/components/GameBackground.js +0 -1
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js +0 -1
- package/lib/module/games/game-2048/Game2048Service.js +0 -1
- package/lib/module/games/game-2048/Game2048Store.js +0 -1
- package/lib/module/games/game-2048/components/GameGrid.js +0 -1
- package/lib/module/games/game-2048/components/ScoreBoard.js +0 -1
- package/lib/module/games/knife-hit/KnifeHitService.js +0 -1
- package/lib/module/games/knife-hit/KnifeHitStore.js +0 -1
- package/lib/module/games/knife-hit/components/GameArea.js +0 -1
- package/lib/module/games/knife-hit/components/ScoreBoard.js +0 -1
- package/lib/module/games/ludo-king/LudoKingService.js +0 -1
- package/lib/module/games/ludo-king/LudoKingStore.js +0 -1
- package/lib/module/games/ludo-king/components/Dice.js +0 -1
- package/lib/module/games/ludo-king/components/GameBoard.js +0 -1
- package/lib/module/games/ludo-king/components/ScoreBoard.js +0 -1
- package/lib/module/games/maze-runner/MazeRunnerStore.js +0 -1
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +0 -1
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js +0 -1
- package/lib/module/games/maze-runner/components/ScoreBoard.js +0 -1
- package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +0 -1
- package/lib/module/games/maze-runner/components/WallComponent.js +0 -1
- package/lib/module/games/memory-match/MemoryMatchService.js +0 -1
- package/lib/module/games/memory-match/MemoryMatchStore.js +0 -1
- package/lib/module/games/memory-match/components/Card.js +0 -1
- package/lib/module/games/memory-match/components/GameBoard.js +0 -1
- package/lib/module/games/memory-match/components/ScoreBoard.js +0 -1
- package/lib/module/games/mine-sweeper/MineSweeperService.js +0 -1
- package/lib/module/games/mine-sweeper/MineSweeperStore.js +0 -1
- package/lib/module/games/mine-sweeper/components/GameArea.js +0 -1
- package/lib/module/games/mine-sweeper/components/ScoreBoard.js +0 -1
- package/lib/module/games/mob-control/MobControlService.js +0 -1
- package/lib/module/games/mob-control/MobControlStore.js +0 -1
- package/lib/module/games/mob-control/components/GameArea.js +0 -1
- package/lib/module/games/mob-control/components/ScoreBoard.js +0 -1
- package/lib/module/games/number-search/NumberSearchConstants.js +0 -1
- package/lib/module/games/number-search/NumberSearchService.js +0 -1
- package/lib/module/games/number-search/NumberSearchStore.js +0 -1
- package/lib/module/games/number-search/components/GameBoard.js +0 -1
- package/lib/module/games/number-search/components/NumberList.js +0 -1
- package/lib/module/games/number-search/components/ScoreBoard.js +0 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsService.js +0 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsStore.js +0 -1
- package/lib/module/games/nuts-and-bolts/components/GameBoard.js +0 -1
- package/lib/module/games/nuts-and-bolts/components/ScoreBoard.js +0 -1
- package/lib/module/games/pac-man/PacManService.js +0 -1
- package/lib/module/games/pac-man/PacManStore.js +0 -1
- package/lib/module/games/pac-man/components/GameCanvas.js +0 -1
- package/lib/module/games/pac-man/components/ScoreBoard.js +0 -1
- package/lib/module/games/paper-io/PaperIoService.js +0 -1
- package/lib/module/games/paper-io/PaperIoStore.js +0 -1
- package/lib/module/games/paper-io/components/GameArea.js +0 -1
- package/lib/module/games/paper-io/components/ScoreBoard.js +0 -1
- package/lib/module/games/perfect-circle/PerfectCircleService.js +0 -1
- package/lib/module/games/perfect-circle/PerfectCircleStore.js +0 -1
- package/lib/module/games/perfect-circle/components/DrawingCanvas.js +0 -1
- package/lib/module/games/perfect-circle/components/ScoreBoard.js +0 -1
- package/lib/module/games/pipe-connect/PipeConnectService.js +0 -1
- package/lib/module/games/pipe-connect/PipeConnectStore.js +0 -1
- package/lib/module/games/pipe-connect/components/GameArea.js +0 -1
- package/lib/module/games/pipe-connect/components/ScoreBoard.js +0 -1
- package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -1
- package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -1
- package/lib/module/games/popit-fidget/components/BubbleComponent.js +0 -1
- package/lib/module/games/popit-fidget/components/FidgetGrid.js +0 -1
- package/lib/module/games/popit-fidget/components/ScoreBoard.js +0 -1
- package/lib/module/games/reversi/ReversiStore.js +0 -1
- package/lib/module/games/reversi/components/GameBoard.js +0 -1
- package/lib/module/games/reversi/components/ScoreBoard.js +0 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersService.js +0 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +0 -1
- package/lib/module/games/sliding-numbers/components/NumbersGrid.js +0 -1
- package/lib/module/games/sliding-numbers/components/ScoreBoard.js +0 -1
- package/lib/module/games/snake-3d/Snake3DService.js +0 -1
- package/lib/module/games/snake-3d/Snake3DStore.js +0 -1
- package/lib/module/games/snake-3d/components/GameGrid.js +0 -1
- package/lib/module/games/snake-3d/components/ScoreBoard.js +0 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersService.js +0 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersStore.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/Dice.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/GameBoard.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/ScoreBoard.js +0 -1
- package/lib/module/games/space-fighter/SpaceFighterService.js +0 -1
- package/lib/module/games/space-fighter/SpaceFighterStore.js +0 -1
- package/lib/module/games/space-fighter/components/AsteroidComponent.js +0 -1
- package/lib/module/games/space-fighter/components/GameArea.js +0 -1
- package/lib/module/games/space-fighter/components/GameBackground.js +0 -1
- package/lib/module/games/space-fighter/components/ScoreBoard.js +0 -1
- package/lib/module/games/space-fighter/components/Spacecraft3D.js +0 -1
- package/lib/module/games/space-fighter/components/SpacecraftPath.js +0 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireService.js +0 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireStore.js +0 -1
- package/lib/module/games/spider-solitaire/components/Card.js +0 -1
- package/lib/module/games/spider-solitaire/components/CardPile.js +0 -1
- package/lib/module/games/spider-solitaire/components/ScoreBoard.js +0 -1
- package/lib/module/games/stack-tower/StackTowerService.js +0 -1
- package/lib/module/games/stack-tower/StackTowerStore.js +0 -1
- package/lib/module/games/stack-tower/components/GameArea.js +0 -1
- package/lib/module/games/stack-tower/components/ScoreBoard.js +0 -1
- package/lib/module/games/sudoku/SudokuService.js +0 -1
- package/lib/module/games/sudoku/SudokuStore.js +0 -1
- package/lib/module/games/sudoku/components/GameArea.js +0 -1
- package/lib/module/games/sudoku/components/ScoreBoard.js +0 -1
- package/lib/module/games/tangram/TangramService.js +0 -1
- package/lib/module/games/tangram/TangramStore.js +0 -1
- package/lib/module/games/tangram/components/GameBoard.js +0 -1
- package/lib/module/games/tangram/components/ScoreBoard.js +0 -1
- package/lib/module/games/tank-1990/Tank1990Service.js +0 -1
- package/lib/module/games/tank-1990/Tank1990Store.js +0 -1
- package/lib/module/games/tank-1990/components/Controls.js +0 -1
- package/lib/module/games/tank-1990/components/GameBoard.js +0 -1
- package/lib/module/games/tank-1990/components/ScoreBoard.js +0 -1
- package/lib/module/games/tic-tac-toe/TicTacToeService.js +0 -1
- package/lib/module/games/tic-tac-toe/TicTacToeStore.js +0 -1
- package/lib/module/games/tic-tac-toe/components/GameBoard.js +0 -1
- package/lib/module/games/tic-tac-toe/components/ScoreBoard.js +0 -1
- package/lib/module/games/tile-home/TileHomeService.js +0 -1
- package/lib/module/games/tile-home/TileHomeStore.js +0 -1
- package/lib/module/games/tile-home/components/AnimatingTile.js +0 -1
- package/lib/module/games/tile-home/components/FlyingTile.js +0 -1
- package/lib/module/games/tile-home/components/GameBoard.js +0 -1
- package/lib/module/games/tile-home/components/ScoreBoard.js +0 -1
- package/lib/module/games/tile-home/components/TileItem.js +0 -1
- package/lib/module/games/tile-home/components/TileSlot.js +0 -1
- package/lib/module/games/whack-a-mole/WhackAMoleService.js +0 -1
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameBackground.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameGrid.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameHole.js +0 -1
- package/lib/module/games/whack-a-mole/components/MoleCharacter.js +0 -1
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js +0 -1
- package/lib/module/games/word-search/WordSearchConstants.js +0 -1
- package/lib/module/games/word-search/WordSearchService.js +0 -1
- package/lib/module/games/word-search/WordSearchStore.js +0 -1
- package/lib/module/games/word-search/components/GameBoard.js +0 -1
- package/lib/module/games/word-search/components/ScoreBoard.js +0 -1
- package/lib/module/games/word-search/components/WordList.js +0 -1
- package/lib/module/helpers/AnimatedScore.js +0 -1
- package/lib/module/helpers/AnimationFrame.js +0 -1
- package/lib/module/helpers/AnimationTracker.js +0 -1
- package/lib/module/helpers/BlastAnimation.js +0 -1
- package/lib/module/helpers/ErrorHandler.js +0 -1
- package/lib/module/helpers/GameBackgroundPattern.js +0 -1
- package/lib/module/helpers/GameControlButton.js +0 -1
- package/lib/module/helpers/GameOverModal.js +0 -1
- package/lib/module/helpers/GameTimer.js +0 -1
- package/lib/module/helpers/Icons.js +0 -1
- package/lib/module/helpers/ParticleBlast.js +0 -1
- package/lib/module/helpers/ScoreBoardContainer.js +0 -1
- package/lib/module/helpers/assets/apple-fruit.js +0 -1
- package/lib/module/helpers/assets/avocado-item.js +0 -1
- package/lib/module/helpers/assets/banana-fruit.js +0 -1
- package/lib/module/helpers/assets/bomb-item.js +0 -1
- package/lib/module/helpers/assets/broccoli-item.js +0 -1
- package/lib/module/helpers/assets/cherries-fruit.js +0 -1
- package/lib/module/helpers/assets/donut-item.js +0 -1
- package/lib/module/helpers/assets/dragonfruit-item.js +0 -1
- package/lib/module/helpers/assets/fries-item.js +0 -1
- package/lib/module/helpers/assets/fruit-helpers.js +0 -1
- package/lib/module/helpers/assets/grapes-fruit.js +0 -1
- package/lib/module/helpers/assets/icecream-item.js +0 -1
- package/lib/module/helpers/assets/index.js +0 -1
- package/lib/module/helpers/assets/kiwi-fruit.js +0 -1
- package/lib/module/helpers/assets/mango-fruit.js +0 -1
- package/lib/module/helpers/assets/orange-fruit.js +0 -1
- package/lib/module/helpers/assets/papaya-fruit.js +0 -1
- package/lib/module/helpers/assets/papaya-full-fruit.js +0 -1
- package/lib/module/helpers/assets/peach-fruit.js +0 -1
- package/lib/module/helpers/assets/pineapple-fruit.js +0 -1
- package/lib/module/helpers/assets/pomegranate-fruit.js +0 -1
- package/lib/module/helpers/assets/pumpkin-fruit.js +0 -1
- package/lib/module/helpers/assets/raspberry-item.js +0 -1
- package/lib/module/helpers/assets/star-item.js +0 -1
- package/lib/module/helpers/assets/strawberry-fruit.js +0 -1
- package/lib/module/helpers/assets/watermelon-fruit.js +0 -1
- package/lib/module/types.d.js +0 -1
- package/lib/typescript/src/games/arrows/ArrowsService.d.ts +0 -6
- package/lib/typescript/src/games/arrows/ArrowsStore.d.ts +0 -51
- package/lib/typescript/src/games/arrows/components/ArrowsGrid.d.ts +0 -13
- package/lib/typescript/src/games/arrows/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -80
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +0 -30
- package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts +0 -9
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +0 -9
- package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +0 -44
- package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +0 -68
- package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +0 -12
- package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +0 -16
- package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +0 -70
- package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +0 -11
- package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +0 -11
- package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +0 -8
- package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/block-breaker/BlockBreakerService.d.ts +0 -88
- package/lib/typescript/src/games/block-breaker/BlockBreakerStore.d.ts +0 -47
- package/lib/typescript/src/games/block-breaker/components/BlastAnimation.d.ts +0 -15
- package/lib/typescript/src/games/block-breaker/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/block-breaker/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bluk/BlukService.d.ts +0 -71
- package/lib/typescript/src/games/bluk/BlukStore.d.ts +0 -52
- package/lib/typescript/src/games/bluk/components/GameArea.d.ts +0 -17
- package/lib/typescript/src/games/bluk/components/GameBackground.d.ts +0 -9
- package/lib/typescript/src/games/bluk/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +0 -35
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +0 -63
- package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +0 -37
- package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +0 -53
- package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +0 -11
- package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +0 -5
- package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +0 -44
- package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +0 -68
- package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +0 -12
- package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/chameleon-run/ChameleonRunService.d.ts +0 -76
- package/lib/typescript/src/games/chameleon-run/ChameleonRunStore.d.ts +0 -48
- package/lib/typescript/src/games/chameleon-run/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/chameleon-run/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/chameleon-run/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/checkers/CheckersService.d.ts +0 -6
- package/lib/typescript/src/games/checkers/CheckersStore.d.ts +0 -48
- package/lib/typescript/src/games/checkers/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/checkers/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/color-switch/ColorSwitchService.d.ts +0 -63
- package/lib/typescript/src/games/color-switch/ColorSwitchStore.d.ts +0 -43
- package/lib/typescript/src/games/color-switch/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/color-switch/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts +0 -61
- package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts +0 -56
- package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts +0 -7
- package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllService.d.ts +0 -20
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllStore.d.ts +0 -48
- package/lib/typescript/src/games/connect-em-all/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/connect-em-all/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/crossy-road/CrossyRoadService.d.ts +0 -89
- package/lib/typescript/src/games/crossy-road/CrossyRoadStore.d.ts +0 -39
- package/lib/typescript/src/games/crossy-road/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/crossy-road/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +0 -39
- package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +0 -97
- package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +0 -2
- package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +0 -8
- package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +0 -2
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesService.d.ts +0 -45
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesStore.d.ts +0 -37
- package/lib/typescript/src/games/dots-and-boxes/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/dots-and-boxes/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/falling-sticks/FallingSticksService.d.ts +0 -38
- package/lib/typescript/src/games/falling-sticks/FallingSticksStore.d.ts +0 -31
- package/lib/typescript/src/games/falling-sticks/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/falling-sticks/components/GameBackground.d.ts +0 -6
- package/lib/typescript/src/games/falling-sticks/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberService.d.ts +0 -6
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberStore.d.ts +0 -36
- package/lib/typescript/src/games/find-different-number/components/GameGrid.d.ts +0 -7
- package/lib/typescript/src/games/find-different-number/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +0 -68
- package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +0 -2
- package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +0 -8
- package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +0 -3
- package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +0 -66
- package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +0 -8
- package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +0 -73
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +0 -38
- package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts +0 -8
- package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +0 -102
- package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +0 -44
- package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/knife-hit/KnifeHitService.d.ts +0 -48
- package/lib/typescript/src/games/knife-hit/KnifeHitStore.d.ts +0 -41
- package/lib/typescript/src/games/knife-hit/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/knife-hit/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/ludo-king/LudoKingService.d.ts +0 -33
- package/lib/typescript/src/games/ludo-king/LudoKingStore.d.ts +0 -34
- package/lib/typescript/src/games/ludo-king/components/Dice.d.ts +0 -7
- package/lib/typescript/src/games/ludo-king/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/ludo-king/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/maze-runner/MazeRunnerStore.d.ts +0 -62
- package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts +0 -10
- package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts +0 -33
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +0 -24
- package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts +0 -24
- package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts +0 -9
- package/lib/typescript/src/games/memory-match/MemoryMatchService.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/MemoryMatchStore.d.ts +0 -42
- package/lib/typescript/src/games/memory-match/components/Card.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/mine-sweeper/MineSweeperService.d.ts +0 -22
- package/lib/typescript/src/games/mine-sweeper/MineSweeperStore.d.ts +0 -73
- package/lib/typescript/src/games/mine-sweeper/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/mine-sweeper/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/mob-control/MobControlService.d.ts +0 -74
- package/lib/typescript/src/games/mob-control/MobControlStore.d.ts +0 -66
- package/lib/typescript/src/games/mob-control/components/GameArea.d.ts +0 -11
- package/lib/typescript/src/games/mob-control/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/number-search/NumberSearchConstants.d.ts +0 -63
- package/lib/typescript/src/games/number-search/NumberSearchService.d.ts +0 -34
- package/lib/typescript/src/games/number-search/NumberSearchStore.d.ts +0 -70
- package/lib/typescript/src/games/number-search/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/number-search/components/NumberList.d.ts +0 -2
- package/lib/typescript/src/games/number-search/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsService.d.ts +0 -67
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsStore.d.ts +0 -45
- package/lib/typescript/src/games/nuts-and-bolts/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/nuts-and-bolts/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/pac-man/PacManService.d.ts +0 -73
- package/lib/typescript/src/games/pac-man/PacManStore.d.ts +0 -89
- package/lib/typescript/src/games/pac-man/components/GameCanvas.d.ts +0 -2
- package/lib/typescript/src/games/pac-man/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/paper-io/PaperIoService.d.ts +0 -70
- package/lib/typescript/src/games/paper-io/PaperIoStore.d.ts +0 -51
- package/lib/typescript/src/games/paper-io/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/paper-io/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +0 -15
- package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +0 -55
- package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +0 -8
- package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/pipe-connect/PipeConnectService.d.ts +0 -17
- package/lib/typescript/src/games/pipe-connect/PipeConnectStore.d.ts +0 -31
- package/lib/typescript/src/games/pipe-connect/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/pipe-connect/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -30
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +0 -33
- package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +0 -10
- package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +0 -10
- package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/reversi/ReversiStore.d.ts +0 -46
- package/lib/typescript/src/games/reversi/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/reversi/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +0 -6
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +0 -38
- package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +0 -7
- package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/snake-3d/Snake3DService.d.ts +0 -29
- package/lib/typescript/src/games/snake-3d/Snake3DStore.d.ts +0 -49
- package/lib/typescript/src/games/snake-3d/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/snake-3d/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersService.d.ts +0 -22
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersStore.d.ts +0 -40
- package/lib/typescript/src/games/snakes-and-ladders/components/Dice.d.ts +0 -7
- package/lib/typescript/src/games/snakes-and-ladders/components/GameBoard.d.ts +0 -2
- package/lib/typescript/src/games/snakes-and-ladders/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts +0 -117
- package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts +0 -54
- package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts +0 -11
- package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts +0 -9
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireService.d.ts +0 -23
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireStore.d.ts +0 -71
- package/lib/typescript/src/games/spider-solitaire/components/Card.d.ts +0 -10
- package/lib/typescript/src/games/spider-solitaire/components/CardPile.d.ts +0 -12
- package/lib/typescript/src/games/spider-solitaire/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/stack-tower/StackTowerService.d.ts +0 -51
- package/lib/typescript/src/games/stack-tower/StackTowerStore.d.ts +0 -52
- package/lib/typescript/src/games/stack-tower/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/stack-tower/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/sudoku/SudokuService.d.ts +0 -24
- package/lib/typescript/src/games/sudoku/SudokuStore.d.ts +0 -65
- package/lib/typescript/src/games/sudoku/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/sudoku/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tangram/TangramService.d.ts +0 -6
- package/lib/typescript/src/games/tangram/TangramStore.d.ts +0 -34
- package/lib/typescript/src/games/tangram/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/tangram/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tank-1990/Tank1990Service.d.ts +0 -80
- package/lib/typescript/src/games/tank-1990/Tank1990Store.d.ts +0 -48
- package/lib/typescript/src/games/tank-1990/components/Controls.d.ts +0 -2
- package/lib/typescript/src/games/tank-1990/components/GameBoard.d.ts +0 -2
- package/lib/typescript/src/games/tank-1990/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeService.d.ts +0 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeStore.d.ts +0 -51
- package/lib/typescript/src/games/tic-tac-toe/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/tic-tac-toe/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tile-home/TileHomeService.d.ts +0 -1
- package/lib/typescript/src/games/tile-home/TileHomeStore.d.ts +0 -57
- package/lib/typescript/src/games/tile-home/components/AnimatingTile.d.ts +0 -9
- package/lib/typescript/src/games/tile-home/components/FlyingTile.d.ts +0 -16
- package/lib/typescript/src/games/tile-home/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/tile-home/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tile-home/components/TileItem.d.ts +0 -11
- package/lib/typescript/src/games/tile-home/components/TileSlot.d.ts +0 -7
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +0 -32
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +0 -39
- package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts +0 -10
- package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts +0 -11
- package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +0 -6
- package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/word-search/WordSearchConstants.d.ts +0 -63
- package/lib/typescript/src/games/word-search/WordSearchService.d.ts +0 -34
- package/lib/typescript/src/games/word-search/WordSearchStore.d.ts +0 -70
- package/lib/typescript/src/games/word-search/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/word-search/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/word-search/components/WordList.d.ts +0 -2
- package/lib/typescript/src/helpers/AnimatedScore.d.ts +0 -36
- package/lib/typescript/src/helpers/AnimationFrame.d.ts +0 -40
- package/lib/typescript/src/helpers/AnimationTracker.d.ts +0 -44
- package/lib/typescript/src/helpers/BlastAnimation.d.ts +0 -16
- package/lib/typescript/src/helpers/ErrorHandler.d.ts +0 -123
- package/lib/typescript/src/helpers/GameBackgroundPattern.d.ts +0 -7
- package/lib/typescript/src/helpers/GameControlButton.d.ts +0 -11
- package/lib/typescript/src/helpers/GameOverModal.d.ts +0 -15
- package/lib/typescript/src/helpers/GameTimer.d.ts +0 -26
- package/lib/typescript/src/helpers/Icons.d.ts +0 -12
- package/lib/typescript/src/helpers/ParticleBlast.d.ts +0 -11
- package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +0 -85
- package/lib/typescript/src/helpers/assets/apple-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/avocado-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/banana-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/bomb-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/broccoli-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/cherries-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/donut-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/dragonfruit-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/fries-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/fruit-helpers.d.ts +0 -154
- package/lib/typescript/src/helpers/assets/grapes-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/icecream-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/index.d.ts +0 -31
- package/lib/typescript/src/helpers/assets/kiwi-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/mango-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/orange-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/papaya-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/papaya-full-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/peach-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pineapple-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pomegranate-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pumpkin-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/raspberry-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/star-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/strawberry-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/watermelon-fruit.d.ts +0 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,quat}from"@nayan-ui/engine";import{popAndBurst}from"../shared/EngineBlasts.js";import{sceneryTint}from"../shared/EngineMeadow.js";import{toColor}from"../shared/EngineUtils.js";import{removeBackdrop,spawnBackdrop}from"./ChameleonRunBackdrop.js";import{COLORS,RUN_COLORS,TRACK_LENGTH}from"./ChameleonRunConstants.js";import{bodyMesh,detailsMesh,eyeDetailsMesh,eyeMesh,legMesh,LIMBS,starMesh,tailMesh}from"./ChameleonRunMeshes.js";import{platformUnder}from"./ChameleonRunRules.js";const FORWARD=quat.y(Math.PI/2),WHITE=[1,1,1,1],NEUTRAL=toColor(COLORS.NEUTRAL),shade=(o,e)=>[o[0]*e[0],o[1]*e[1],o[2]*e[2],o[3]??1],surfaceColor=o=>o.color?toColor(RUN_COLORS[o.color]):NEUTRAL;export const starPosition=(o,e)=>[0,o.height+1.05,e-(o.start+o.end)/2];export function frameCamera(o,e,t=0){o.eye=[0,3.1+t,5.4],o.target=[0,1.1+t,-6],o.fov=e.width/Math.max(1,e.height)<.7?1:.85}export function buildScene(o,e){const t=spawnBackdrop(o,e),n=sceneryTint(e),s=o.spawn({mesh:"none",pickable:!1}),a=o.spawn({mesh:"none",rotation:FORWARD,pickable:!1}),r=toColor(RUN_COLORS.yellow),i=bodyMesh(),l=o.spawn({mesh:i,parent:a,color:r,bob:{amplitude:[0,.004,0],speed:2.2},pickable:!1});o.spawn({mesh:detailsMesh(),parent:a,pickable:!1});const p=tailMesh(),d=o.spawn({mesh:p,parent:a,position:[-.5,-.015,0],color:r,pickable:!1}),h=[];for(const e of[-1,1]){const t=e>0?.27:Math.PI-.27,n=o.spawn({mesh:"none",parent:a,position:[.575,.205,.125*e],rotation:quat.y(t),pickable:!1}),s=eyeMesh(),i=o.spawn({mesh:s,parent:n,color:r,pickable:!1});h.push(i),o.spawn({mesh:eyeDetailsMesh(),parent:n,pickable:!1}),o.animate(n,{rotation:quat.y(t+.13*e)},{duration:e>0?2.7:3.4,repeat:"forever",yoyo:!0,easing:"easeInOut"})}const f=[];for(const e of LIMBS){const t=legMesh(e.side,e.hind),n=o.spawn({mesh:t,parent:a,position:[e.x,e.y,.13*e.side],color:r,pickable:!1});f.push(n)}const m=o.spawn({mesh:"sphere",scale:[.72,.012,1.8],color:[.12,.19,.25,.22],pickable:!1});return{backdrop:t,field:s,chameleon:a,skin:[l,d,...f,...h],legs:f,tail:d,shadow:m,platforms:new Map,tint:n,color:"yellow",stride:!1}}export function removeScene(o,e){removeBackdrop(o,e.backdrop);for(const t of[e.field,e.chameleon,e.shadow])o.despawn(t)}export function syncPlatforms(o,e,t,n){const s=n[0]?.id,a=n[n.length-1]?.id;if(t.syncedFirst===s&&t.syncedLast===a&&t.syncedCount===n.length)return;t.syncedFirst=s,t.syncedLast=a,t.syncedCount=n.length;const r=new Set(n.map(o=>o.id));for(const s of n){if(t.platforms.has(s.id))continue;const n=s.end-s.start,a=o.spawn({mesh:"none",parent:t.field,position:[0,s.height,-(s.start+s.end)/2],pickable:!1}),r=(e,n,s,r,i)=>o.spawn({mesh:e,parent:a,position:n,scale:s,color:shade(r,t.tint),rotation:i,pickable:!1});r("roundedBox",[0,-.65,0],[e.trackWidth,1.2,n],toColor(COLORS.STONE)),r("roundedBox",[0,-1.4,0],[.8*e.trackWidth,.7,.94*n],toColor(COLORS.STONE_DARK)),r("roundedBox",[0,-.105,0],[e.trackWidth+.08,.21,n+.025],surfaceColor(s));for(const o of[-1,1])r("roundedBox",[o*(e.trackWidth/2-.08),-.22,0],[.08,.08,n],toColor(COLORS.RIM));const i=Math.max(2,Math.floor(n/1.5));for(let o=0;o<i;o++){const t=-n/2+.75+1.5*o;if("yellow"===s.color&&r("roundedBox",[.32*-e.trackWidth,.012,t],[.55,.018,.12],[1,.98,.8]),"pink"===s.color)for(const o of[-.16,.16])r("sphere",[.32*-e.trackWidth+o,.018,t],[.16,.025,.16],[1,.85,.96])}r("roundedBox",[0,.015,-n/2+.35],[.8*e.trackWidth,.018,.09],WHITE);for(const o of[-1,1])r("roundedBox",[.18*o,.018,n/2-1.2],[.1,.025,.55],WHITE,quat.y(-.65*o));let l=null;if(s.star&&!s.starCollected&&(l=o.spawn({mesh:starMesh(),parent:a,position:[0,1.05,0],scale:.68,color:[1.6,1.35,.48,1],spin:[0,2.2,0],bob:{amplitude:[0,.09,0],speed:3.2},pickable:!1})),s.end>TRACK_LENGTH){const o=(s.start+s.end)/2-TRACK_LENGTH;for(const t of[-1,1])r("roundedBox",[t*(e.trackWidth/2+.1),1.7,o],[.22,3.4,.3],WHITE);r("roundedBox",[0,3.25,o],[e.trackWidth+.5,.55,.3],toColor("#20354A"));for(let e=0;e<10;e++)r("cube",[.36*(e-4.5),3.25,o+.16],[.35,.36,.02],e%2?WHITE:toColor("#20354A"))}t.platforms.set(s.id,{root:a,star:l})}for(const[e,n]of t.platforms)!r.has(e)&&(o.despawn(n.root),t.platforms.delete(e))}export function drawScene(o,e,t,n){const s=o.transforms;s.position(t.field,0,0,n.distance),s.position(t.chameleon,0,n.y+.5,0);const a=platformUnder(n),r=a?Math.max(0,n.y-a.height):0;s.position(t.shadow,0,(a?.height??-10)+.018,.15),s.scale(t.shadow,.72+.08*r,.012,1.8+.12*r),s.color(t.shadow,.12,.19,.25,a?.2/(1+r):0),s.flush(),syncPlatforms(o,e,t,n.platforms)}export function setStride(o,e,t){e.stride!==t&&(e.stride=t,o.set(e.chameleon,{bob:t?{amplitude:[0,.009,0],speed:16}:null}),e.legs.forEach((e,n)=>{o.stopAnimation(e);const s=0===n||3===n?1:-1;t?(o.set(e,{rotation:quat.z(-.28*s)}),o.animate(e,{rotation:quat.z(.28*s)},{duration:.2,easing:"easeInOut",repeat:"forever",yoyo:!0})):o.animate(e,{rotation:quat.z(.18*s)},{duration:.12})}),o.stopAnimation(e.tail),o.animate(e.tail,{rotation:quat.x(t?.1:.035)},{duration:.32,repeat:"forever",yoyo:!0,easing:"easeInOut"}))}export function tintChameleon(o,e,t,n=0){if(t!==e.color){e.color=t;for(const n of e.skin)o.set(n,{color:toColor(RUN_COLORS[t])});effects.sparkle(o,{position:[0,n+.65,0],colors:toColor(RUN_COLORS[t]),size:.06,speed:1.3,count:7,lifetime:.22,flash:!1})}}export function hop(o,e,t){o.animate(e.chameleon,[{scale:[.97,1.06,.97],at:.3},{scale:1}],{duration:.25}),t&&(o.set(e.chameleon,{rotation:FORWARD}),o.animate(e.chameleon,{turn:[0,0,2*-Math.PI]},{duration:.4,easing:"easeOut"}))}export function land(o,e,t){o.stopAnimation(e.chameleon),o.set(e.chameleon,{rotation:FORWARD,scale:1}),o.animate(e.chameleon,[{scale:[1.04,.94,1.03],at:.25},{scale:1}],{duration:.2}),effects.dust(o,{position:[0,t.height+.05,0],count:7,size:.13,speed:1.5,lifetime:.3,color:[.85,.93,1,.45],endSize:1.8,direction:[0,1,0],spread:1.4})}export function collectStar(o,e,t,n){const s=e.platforms.get(t.id);if(null==s?.star)return;const a=s.star;s.star=null;const r=starPosition(t,n);o.set(a,{parent:null,position:r,bob:null,spin:[0,0,0]}),popAndBurst(o,a,{scale:.68,color:[1.6,1.35,.48,1],duration:.3},{position:r,size:.5,color:toColor(COLORS.STAR),count:12}).then(()=>{o.has(a)&&o.despawn(a)})}export function stumble(o,e,t){o.animate(e.chameleon,{shake:.12},{duration:.4}),effects.sparkle(o,{position:[0,t.y+.4,0],colors:[toColor(RUN_COLORS[t.color]),WHITE],size:.08,speed:2,count:10,lifetime:.35})}export function tumble(o,e,t){setStride(o,e,!1),o.animate(e.chameleon,{moveBy:[0,-2.8,0],turn:[1.2,0,.7],scale:.25},{duration:.65,easing:"easeIn"}),"color"===t.failure&&effects.sparkle(o,{position:[0,t.y+.4,0],colors:[toColor(RUN_COLORS[t.color]),WHITE],size:.1,speed:3.2,count:20,lifetime:.45})}export function cheer(o,e,t){setStride(o,e,!1),effects.confetti(o,{position:[0,t.y+1,0],colors:[toColor(RUN_COLORS.pink),toColor(RUN_COLORS.yellow),WHITE],count:55,size:.1,speed:4,gravity:-3,lifetime:1.6}),o.animate(e.chameleon,[{moveBy:[0,.35,0],at:.5},{moveBy:[0,0,0]}],{duration:.65,repeat:3}),o.animate(e.chameleon,{rotation:quat.y(-Math.PI/2)},{duration:.5,delay:.5,easing:"easeInOut"})}export function clearPlatforms(o,e){for(const t of e.platforms.values())o.despawn(t.root);e.platforms.clear(),e.syncedCount=void 0}export function resetChameleon(o,e){o.stopAnimation(e.chameleon),setStride(o,e,!1),o.set(e.chameleon,{scale:1,rotation:FORWARD,bob:null}),e.color="yellow";for(const t of e.skin)o.stopAnimation(t),o.set(t,{color:toColor(RUN_COLORS.yellow)})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,textColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{BOARD_BORDER_WIDTH,GAME_DURATION,getLayout,LIGHT}from"./CheckersConstants.js";import{createGame,dispose,drag,reset,setLayout,setTheme,start,tick}from"./CheckersGame.js";import{HUMAN,PIECES_PER_SIDE}from"./CheckersRules.js";import{jsx as _0x16cc56}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.CHECKERS,FEEDBACK={select:{sound:SOUNDS.SELECT,haptic:HapticType.LIGHT},move:{sound:SOUNDS.MOVE,haptic:HapticType.LIGHT},capture:{sound:SOUNDS.CAPTURE,haptic:HapticType.MEDIUM},king:{sound:SOUNDS.KING},win:{sound:SOUNDS.WIN,haptic:HapticType.SUCCESS},lose:{sound:SOUNDS.LOSE,haptic:HapticType.ERROR}};export const Checkers=engineGame(GAME_IDS.CHECKERS,e=>{const[t,s]=useLiveState(0),[r,o]=useLiveState(0),[i,a]=useLiveState(GAME_DURATION),{game:n,theme:m,status:S,screen:E,gameOver:u}=useEngineGame(e,{gameId:GAME_IDS.CHECKERS,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,r)=>{const o=getLayout(t,s,r);return setLayout(e,o),o.size+2*BOARD_BORDER_WIDTH},drag:drag,outcome:e=>e.winner===HUMAN?"win":"lose",sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),onOver:(e,t,s)=>{s.timedOut&&e(SOUNDS.TIME_UP,HapticType.ERROR)},wire:(e,t)=>{e.onScore=s,e.onCaptured=o,e.onTime=a,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}}),p=n.timedOut;return _0x16cc56(EngineGameScreen,{...E,light:LIGHT,columns:[scoreColumn(t),textColumn("CAPTURED",r+"/"+PIECES_PER_SIDE),timerColumn(i,m)],subtext:"Capture the robot's pieces!",gameOver:u({title:"win"===S?"YOU WON!":p?"TIME UP!":"YOU LOST!",message:"win"===S?"You beat the robot!":p?"You ran out of time!":"The robot wins this round!",scoreLabel:"Score",score:t,buttonText:"Play Again!"})})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";const BOARD_N=8,SQUARES=64,LAST_ROW_START=56,AI_SIDE=1,HUMAN_SIDE=-1,DIR_R=[-1,-1,1,1],DIR_C=[-1,1,-1,1],STEP=new Int8Array(256),JUMP=new Int8Array(256);for(let o=0;o<64;o++){const r=Math.floor(o/8),e=o%8;for(let t=0;t<4;t++){const n=r+DIR_R[t],a=e+DIR_C[t],f=r+2*DIR_R[t],s=e+2*DIR_C[t];STEP[4*o+t]=n>=0&&n<8&&a>=0&&a<8?8*n+a:-1,JUMP[4*o+t]=f>=0&&f<8&&s>=0&&s<8?8*f+s:-1}}const dirLo=o=>1===o?2:0,dirHi=o=>-1===o?2:4,promotes=(o,r)=>1===o&&r>=56||-1===o&&r<8,MAN_VALUE=100,KING_VALUE=175,EVAL=new Int16Array(320);for(let o=0;o<64;o++){const r=Math.floor(o/8);EVAL[192+o]=100+2*r,EVAL[256+o]=175,EVAL[64+o]=-(100+2*(7-r)),EVAL[0+o]=-175}const MAX_CAPTURES=12,STRIDE=28,board=new Int8Array(64),plyBuffers=[];let genBuf=[],genCount=0;const capSq=new Int8Array(12),capCode=new Int8Array(12),record=(o,r,e,t)=>{let n=28*genCount;genBuf[n++]=o,genBuf[n++]=r,genBuf[n++]=e?1:0,genBuf[n++]=t;for(let o=0;o<t;o++)genBuf[n++]=capSq[o],genBuf[n++]=capCode[o];genCount++},expandJumps=(o,r,e,t,n,a,f)=>{let s=!1;for(let u=a;u<f;u++){const d=JUMP[4*r+u];if(d<0||0!==board[d])continue;const i=STEP[4*r+u],l=board[i];l*t>=0||(s=!0,board[r]=0,board[i]=0,board[d]=e,capSq[n]=i,capCode[n]=l,promotes(e,d)?record(o,d,!0,n+1):expandJumps(o,d,e,t,n+1,a,f),board[d]=0,board[i]=l,board[r]=e)}!s&&n>0&&record(o,r,!1,n)},generateMoves=(o,r)=>{genBuf=r,genCount=0;for(let r=0;r<64;r++){const e=board[r];e*o>0&&expandJumps(r,r,e,o,0,dirLo(e),dirHi(e))}if(genCount>0)return genCount;for(let r=0;r<64;r++){const e=board[r];if(e*o<=0)continue;const t=dirHi(e);for(let o=dirLo(e);o<t;o++){const t=STEP[4*r+o];t>=0&&0===board[t]&&record(r,t,promotes(e,t),0)}}return genCount},hasAnyMove=o=>{for(let r=0;r<64;r++){const e=board[r];if(e*o<=0)continue;const t=dirHi(e);for(let n=dirLo(e);n<t;n++){const e=STEP[4*r+n];if(e<0)continue;const t=board[e];if(0===t)return!0;if(t*o<0){const o=JUMP[4*r+n];if(o>=0&&0===board[o])return!0}}}return!1},evaluate=()=>{let o=0;for(let r=0;r<64;r++){const e=board[r];0!==e&&(o+=EVAL[64*(e+2)+r])}return o},makeMove=(o,r)=>{const e=o[r],t=board[e];board[e]=0;const n=o[r+3];for(let e=0;e<n;e++)board[o[r+4+2*e]]=0;board[o[r+1]]=o[r+2]?2*t:t},unmakeMove=(o,r)=>{const e=o[r+1],t=o[r+2]?board[e]/2:board[e];board[e]=0;const n=o[r+3];for(let e=0;e<n;e++)board[o[r+4+2*e]]=o[r+5+2*e];board[o[r]]=t},minimax=(o,r,e,t,n)=>{const a=r?1:-1;if(0===o)return hasAnyMove(a)?evaluate():r?-1e5:1e5;const f=plyBuffers[n]??(plyBuffers[n]=[]),s=generateMoves(a,f);if(0===s)return r?-1e5+o:1e5-o;if(r){let r=-1/0;for(let a=0;a<s;a++){makeMove(f,28*a);const s=minimax(o-1,!1,e,t,n+1);if(unmakeMove(f,28*a),s>r&&(r=s),r>e&&(e=r),t<=e)break}return r}let u=1/0;for(let r=0;r<s;r++){makeMove(f,28*r);const a=minimax(o-1,!0,e,t,n+1);if(unmakeMove(f,28*r),a<u&&(u=a),u<t&&(t=u),t<=e)break}return u},rootBuf=[];export const bestAIMoves=(o,r,e)=>{for(let r=0;r<64;r++){const e=o[r];board[r]=e?("black"===e.player?1:-1)*(e.king?2:1):0}let t=-1/0,n=[];for(const o of r){const r=o.steps[o.steps.length-1];let a=0;for(const r of o.steps)null!==r.captured&&(rootBuf[4+2*a]=r.captured,rootBuf[5+2*a]=board[r.captured],a++);rootBuf[0]=o.from,rootBuf[1]=r.to,rootBuf[2]=promotes(board[o.from],r.to)?1:0,rootBuf[3]=a,makeMove(rootBuf,0);const f=minimax(e-1,!1,t-1,1/0,0);unmakeMove(rootBuf,0),f>t?(t=f,n=[o]):f===t&&n.push(o)}return n};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GAME_DURATION=300;export const POINTS_PER_CAPTURE=500;export const KING_BONUS=500;export const WIN_BONUS=5e3;export const AI_MOVE_DELAY=.55;export const SLIDE_TIME=.22;export const HOP_TIME=.3;export const COLORS={LIGHT_SQ:"#EED9B6",DARK_SQ:"#A9744F",BOARD_BORDER:"#61412E",RED:"#E53935",BLACK:"#37474F",GOLD:"#FFC107",SELECT:"#FFD54F",MOVE:"#4CAF50",CAPTURE:"#F44336"};export const TILT=0;export const BOARD_BORDER_WIDTH=3;export const LIGHT=frontLight([-.4,.5,1],.45);export const PIECE_HEIGHT=.16;const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=120;export function getLayout(t,o,e){const r=getScoreBoardTop(e)+82,n=Math.max(200,o-r-120),s=Math.min(gameWidthFor(t),n/Math.cos(0)-20),E=Math.max(16,Math.floor((s-6)/8));return{width:t,height:o,tilt:0,centerY:r+n/2,cell:E,size:8*E}}export const squareCentre=(t,o)=>[(o%8-3.5)*t.cell,(3.5-Math.floor(o/8))*t.cell];export function squareAt(t,o,e){const r=Math.floor(o/t.cell+4),n=Math.floor(4-e/t.cell);return r<0||r>7||n<0||n>7?-1:8*n+r}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{aimTilted,unproject}from"../shared/EngineTilt.js";import{AI_MOVE_DELAY,GAME_DURATION,KING_BONUS,PIECE_HEIGHT,POINTS_PER_CAPTURE,squareAt,WIN_BONUS}from"./CheckersConstants.js";import{AI,allSteps,applyFullMove,applyStep,chooseAIMove,countPieces,createInitialBoard,generateMoves,HUMAN,playerHasCapture,singleJumps,singleSlides}from"./CheckersRules.js";import{buildScene,celebrate,lift,movePiece,removeScene,resetPieces,setSceneTheme,showHints,stepScene}from"./CheckersScene.js";const WORLD_CAPACITY=300,TAP_SLOP=12;export function createGame(e){const t=new World(300),o={world:t,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",board:createInitialBoard(),turn:HUMAN,selected:-1,targets:[],captures:[],mustContinueFrom:-1,winner:null,timedOut:!1,redCaptured:0,blackCaptured:0,get score(){return t.scoreboard.score},moves:0,get timeLeft(){return t.scoreboard.shownSeconds},press:null,onPhase:e=>{},onScore:e=>{},onCaptured:e=>{},onTime:e=>{},onEvent:e=>{}};return t.scoreboard.reset(0,GAME_DURATION),t.scoreboard.handlers={onSecond:e=>o.onTime(e),onTimeUp:()=>{"playing"===o.phase&&(o.timedOut=!0,o.winner=AI,end(o))}},o}export function setLayout(e,t){e.scene&&removeScene(e.world,e.scene),e.layout=t,aimTilted(e.camera,t),e.scene=buildScene(e.world,t,e.theme,e.board),hints(e)}export function setTheme(e,t){e.theme=t,e.layout&&e.scene&&setSceneTheme(e.world,e.layout,e.scene,t)}function hints(e){e.layout&&e.scene&&showHints(e.world,e.layout,e.scene,e.selected,e.targets,e.captures)}function setSelection(e,t,o,r){const{layout:n,scene:s}=e;n&&s&&e.selected!==t&&(e.selected>=0&&e.board[e.selected]&&lift(e.world,n,s,e.selected,!1),t>=0&&lift(e.world,n,s,t,!0)),e.selected=t,e.targets=o,e.captures=r,hints(e)}function fresh(e){e.world.cancelTimers(),e.board=createInitialBoard(),e.turn=HUMAN,e.selected=-1,e.targets=[],e.captures=[],e.mustContinueFrom=-1,e.winner=null,e.timedOut=!1,e.redCaptured=0,e.blackCaptured=0,e.world.scoreboard.reset(0,GAME_DURATION),e.moves=0,e.press=null,e.layout&&e.scene&&resetPieces(e.world,e.layout,e.scene,e.board),hints(e),e.onScore(0),e.onCaptured(0),e.onTime(GAME_DURATION)}export function start(e){"ready"===e.phase&&(fresh(e),e.world.scoreboard.startCountdown(GAME_DURATION),e.phase="playing",e.onPhase("playing"))}export function reset(e){fresh(e),e.phase="ready",e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,t){e.world.isDisposed||(e.scene&&stepScene(e.scene,t),e.world.update(t))}function end(e){e.world.cancelTimers(),e.world.scoreboard.stop(),setSelection(e,-1,[],[]),e.mustContinueFrom=-1,e.phase="over",e.onPhase("over")}function finish(e,t){e.winner=t,t===HUMAN&&(e.onScore(e.world.scoreboard.add(WIN_BONUS)),e.layout&&e.scene&&celebrate(e.world,e.layout,e.scene,e.board)),e.onEvent(t===HUMAN?"win":"lose"),end(e)}export function select(e,t){if("playing"!==e.phase||e.turn!==HUMAN)return;const o=e.board;if(e.mustContinueFrom>=0)return void(t!==e.mustContinueFrom&&e.targets.includes(t)&&playerStep(e,e.mustContinueFrom,t));if(e.selected>=0&&e.targets.includes(t))return playerStep(e,e.selected,t);const r=o[t];if(r&&r.player===HUMAN){const n=playerHasCapture(o,HUMAN)?singleJumps(o,t,HUMAN,r.king):allSteps(o,t,HUMAN,r.king);return 0===n.length?setSelection(e,-1,[],[]):(setSelection(e,t,n.map(e=>e.to),n.filter(e=>null!==e.captured).map(e=>e.to)),void e.onEvent("select"))}e.selected>=0&&setSelection(e,-1,[],[])}function playerStep(e,t,o){const r=e.board,n=r[t];if(!n)return;const s=singleJumps(r,t,n.player,n.king).find(e=>e.to===o)??singleSlides(r,t,n.player,n.king).find(e=>e.to===o);if(!s)return;const a=applyStep(r,t,s,n.player),l=null!==s.captured,i=l&&!0===r[s.captured]?.king,u=a.board[o],d=l&&!a.promoted&&singleJumps(a.board,o,n.player,u.king).length>0;if(e.layout&&e.scene&&movePiece(e.world,e.layout,e.scene,t,[o],l?[s.captured]:[],a.promoted?u:null),e.board=a.board,e.selected=-1,l&&(e.redCaptured+=1,e.onScore(e.world.scoreboard.add(POINTS_PER_CAPTURE+(i?KING_BONUS:0))),e.onCaptured(e.redCaptured)),d){const t=singleJumps(a.board,o,n.player,u.king).map(e=>e.to);e.mustContinueFrom=o,e.selected=o,e.targets=t,e.captures=t.slice(),hints(e)}else e.moves+=1,e.mustContinueFrom=-1,setSelection(e,-1,[],[]),e.turn=AI;return e.onEvent(l?"capture":"move"),a.promoted&&e.onEvent("king"),d?void 0:0===countPieces(a.board,AI)||0===generateMoves(a.board,AI).length?finish(e,HUMAN):void e.world.after(AI_MOVE_DELAY,()=>robotMove(e))}function robotMove(e){if("playing"!==e.phase||e.turn!==AI)return;const t=chooseAIMove(e.board);if(!t)return finish(e,HUMAN);const o=e.board,r=applyFullMove(o,t),n=t.steps.filter(e=>null!==e.captured).map(e=>e.captured),s=t.steps[t.steps.length-1].to,a=!o[t.from].king&&r[s].king;e.layout&&e.scene&&movePiece(e.world,e.layout,e.scene,t.from,t.steps.map(e=>e.to),n,a?r[s]:null),e.board=r,e.blackCaptured+=n.length,e.moves+=1,e.turn=HUMAN,e.mustContinueFrom=-1,setSelection(e,-1,[],[]),e.onEvent(n.length?"capture":"move"),0!==countPieces(r,HUMAN)&&0!==generateMoves(r,HUMAN).length||finish(e,AI)}export function squareUnder(e,t,o){const r=e.layout;if(!r)return-1;const[n,s]=unproject(r,t,o,1.2+r.cell*PIECE_HEIGHT*.6);return squareAt(r,n,s)}export function drag(e,{phase:t,x:o,y:r}){if("start"===t)return void(e.press={x:o,y:r});const n=e.press;if(!n)return;if(Math.hypot(o-n.x,r-n.y)>12)return void(e.press=null);if("end"!==t)return;e.press=null;const s=squareUnder(e,o,r);s>=0&&select(e,s)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{bestAIMoves}from"./CheckersAI.js";export const BOARD_N=8;export const PIECES_PER_SIDE=12;export const AI_DEPTH=5;export const HUMAN="red";export const AI="black";export const rc=t=>({row:Math.floor(t/8),col:t%8});export const idx=(t,o)=>8*t+o;export const inBounds=(t,o)=>t>=0&&t<8&&o>=0&&o<8;export const isPlayable=(t,o)=>(t+o)%2==1;export function createInitialBoard(){const t=new Array(64).fill(null);for(let o=0;o<8;o++)for(let e=0;e<8;e++)isPlayable(o,e)&&(o<3?t[idx(o,e)]={player:AI,king:!1}:o>4&&(t[idx(o,e)]={player:"red",king:!1}));return t}const KING_DIRS=[[-1,-1],[-1,1],[1,-1],[1,1]],HUMAN_DIRS=[[-1,-1],[-1,1]],AI_DIRS=[[1,-1],[1,1]],dirsFor=(t,o)=>o?KING_DIRS:"red"===t?HUMAN_DIRS:AI_DIRS;export function singleJumps(t,o,e,n){const{row:r,col:s}=rc(o),l=[];for(const[o,p]of dirsFor(e,n)){const n=r+2*o,u=s+2*p;if(!inBounds(n,u))continue;const i=idx(n,u);if(null!==t[i])continue;const f=idx(r+o,s+p),a=t[f];a&&a.player!==e&&l.push({to:i,captured:f})}return l}export function singleSlides(t,o,e,n){const{row:r,col:s}=rc(o),l=[];for(const[o,p]of dirsFor(e,n)){const e=r+o,n=s+p;if(!inBounds(e,n))continue;const u=idx(e,n);null===t[u]&&l.push({to:u,captured:null})}return l}export function applyStep(t,o,e,n){const r=t.slice(),s=r[o];r[o]=null,null!==e.captured&&(r[e.captured]=null);const{row:l}=rc(e.to),p=!s.king&&("red"===n&&0===l||n===AI&&7===l);return r[e.to]=p?{player:n,king:!0}:s,{board:r,promoted:p}}export function playerHasCapture(t,o){for(let e=0;e<t.length;e++){const n=t[e];if(n&&n.player===o&&singleJumps(t,e,n.player,n.king).length>0)return!0}return!1}function captureSequences(t,o,e,n,r,s){const l=singleJumps(t,e,n,r);if(0===l.length)return s.length?[{from:o,steps:s}]:[];const p=[];for(const u of l){const l=applyStep(t,e,u,n),i=[...s,u];l.promoted?p.push({from:o,steps:i}):p.push(...captureSequences(l.board,o,u.to,n,r,i))}return p}export function generateMoves(t,o){const e=[];for(let n=0;n<t.length;n++){const r=t[n];if(!r||r.player!==o)continue;const s=captureSequences(t,n,n,o,r.king,[]);s.length&&e.push(...s)}if(e.length)return e;const n=[];for(let e=0;e<t.length;e++){const r=t[e];if(r&&r.player===o)for(const s of singleSlides(t,e,o,r.king))n.push({from:e,steps:[s]})}return n}export function applyFullMove(t,o){const e=t[o.from].player;let n=t,r=o.from;for(const t of o.steps)n=applyStep(n,r,t,e).board,r=t.to;return n}export const allSteps=(t,o,e,n)=>[...singleJumps(t,o,e,n),...singleSlides(t,o,e,n)];export function countPieces(t,o){let e=0;for(const n of t)n&&n.player===o&&e++;return e}export function chooseAIMove(t){const o=generateMoves(t,AI);if(0===o.length)return null;if(1===o.length)return o[0];const e=bestAIMoves(t,o,5);return e[Math.floor(Math.random()*e.length)]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,extrude,lathe,merge,Path,quat}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{cacheGameAsset,createGameMesh as _0x1828fd}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{BOARD_BORDER_WIDTH,COLORS,HOP_TIME,PIECE_HEIGHT,SLIDE_TIME,squareCentre}from"./CheckersConstants.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("checkers/CheckersScene:"+e,o),meshes.set(e,t)),t},STAND_UP=quat.x(Math.PI/2),BACKDROP_DEPTH=30,SURFACE=.2,HINTS=4,pieceMesh=()=>cached("ck-piece",()=>{const e=PIECE_HEIGHT,o=lathe([[.001,e],[.14,e],[.155,e-.012],[.17,e],[.27,e],[.285,e-.014],[.3,e],[.36,e],[.395,e-.02],[.41,.55*e],[.4,.18*e],[.37,0],[.001,0]],{segments:36,color:({position:[o,t,s]})=>{const n=Math.hypot(o,s),r=t<e-.004?n>.38?.78:.88:1;return[r,r,r,1]}});return _0x1828fd(merge([{geometry:o,rotation:STAND_UP}]),{center:!1,shine:.55})}),crownMesh=()=>cached("ck-crown",()=>{const e=(new Path).addPolygon([[-.2,.1],[-.2,-.06],[-.12,.02],[-.06,-.12],[0,0],[.06,-.12],[.12,.02],[.2,-.06],[.2,.1]]);return _0x1828fd(extrude(e,{depth:.04}),{center:!1,shine:.8})}),ringMesh=()=>cached("ck-ring",()=>_0x1828fd(extrude((new Path).addCircle(0,0,.4).addCircle(0,0,.33),{depth:0,fillRule:"evenodd"}),{center:!1})),discMesh=()=>cached("ck-disc",()=>_0x1828fd(extrude((new Path).addCircle(0,0,.5),{depth:0}),{center:!1})),panelMesh=(e,o)=>cached("ck-flat-panel:"+e+":"+o,()=>_0x1828fd(extrude((new Path).addRoundedRect(-e/2,-e/2,e,e,o),{depth:0}))),pieceColor=e=>toColor("red"===e.player?COLORS.RED:COLORS.BLACK),at=(e,o,t=.2)=>{const[s,n]=squareCentre(e,o);return[s,n,t]};function spawnBoard(e,o){const t=[],s=o=>t.push(e.spawn({pickable:!1,...o}));for(let e=0;e<64;e++){const t=(Math.floor(e/8)+e)%2==1,[n,r]=squareCentre(o,e);s({mesh:panelMesh(1,0),position:[n,r,.2],scale:[o.cell,o.cell,1],color:toColor(t?COLORS.DARK_SQ:COLORS.LIGHT_SQ)})}const n=BOARD_BORDER_WIDTH,r=toColor(COLORS.BOARD_BORDER);for(const e of[-1,1])s({mesh:panelMesh(1,0),position:[0,e*(o.size+n)/2,.2],scale:[o.size+2*n,n,1],color:r}),s({mesh:panelMesh(1,0),position:[e*(o.size+n)/2,0,.2],scale:[n,o.size,1],color:r});return t}function spawnPiece(e,o,t,s,n){const r={root:e.spawn({mesh:pieceMesh(),position:at(o,s),scale:o.cell,color:pieceColor(n),pickable:!1}),crown:null};t.pieces.set(s,r),n.king&&crown(e,r,n,!1)}function crown(e,o,t,s){if(null!=o.crown)return;const n=e.spawn({mesh:pieceMesh(),parent:o.root,position:[0,0,.95*PIECE_HEIGHT],color:pieceColor(t),pickable:!1});e.spawn({mesh:crownMesh(),parent:n,position:[0,.02,PIECE_HEIGHT+.025],color:toColor(COLORS.GOLD),pickable:!1}),o.crown=n,s&&(e.set(n,{position:[0,0,4*PIECE_HEIGHT]}),e.animate(n,{position:[0,0,.95*PIECE_HEIGHT]},{duration:.35,delay:SLIDE_TIME,easing:"bounce"}))}export function buildScene(e,o,t,s){const n=spawnBackdrop(e,o.width,o.height,-30,t);placeTiltedBackdrop(e,n,o,30);const r=(o,t,s)=>e.spawn({mesh:o,scale:0,color:toColor(t,s),pickable:!1}),a={backdrop:n,board:spawnBoard(e,o),pieces:new Map,select:e.spawn({mesh:panelMesh(1,0),scale:0,color:toColor(COLORS.SELECT,.55),pickable:!1}),dots:Array.from({length:4},()=>r(discMesh(),COLORS.MOVE,.9)),rings:Array.from({length:4},()=>r(ringMesh(),COLORS.CAPTURE,.95)),queue:[],time:0};return s.forEach((t,s)=>t&&spawnPiece(e,o,a,s,t)),a}export function removeScene(e,o){for(const t of[o.backdrop,...o.board,...Array.from(o.pieces.values(),e=>e.root),o.select,...o.dots,...o.rings])e.despawn(t)}export function setSceneTheme(e,o,t,s){setBackdropTheme(e,t.backdrop,s);for(const o of t.board)e.despawn(o);t.board=spawnBoard(e,o)}export function resetPieces(e,o,t,s){for(const o of t.pieces.values())e.despawn(o.root);t.pieces.clear(),t.queue=[],s.forEach((s,n)=>s&&spawnPiece(e,o,t,n,s))}export function showHints(e,o,t,s,n,r){const a=e.transforms;if(s>=0){const[e,n]=squareCentre(o,s);a.position(t.select,e,n,.25),a.scale(t.select,o.cell,o.cell,1)}else a.scale(t.select,0);let i=0,l=0;for(const e of n){const s=r.includes(e),n=s?t.rings[l++]:t.dots[i++];if(null==n)continue;const[p,u]=squareCentre(o,e);a.position(n,p,u,.32),a.scale(n,s?o.cell:.32*o.cell)}for(;i<4;i++)a.scale(t.dots[i],0);for(;l<4;l++)a.scale(t.rings[l],0);a.flush()}export function lift(e,o,t,s,n){const r=t.pieces.get(s);r&&e.animate(r.root,{position:at(o,s,.2+(n?.12*o.cell:0))},{duration:.12})}export function movePiece(e,o,t,s,n,r,a,i=0){const l=t.pieces.get(s);if(!l)return;t.pieces.delete(s);const p=r.length>0,u=p?HOP_TIME:SLIDE_TIME,d=[];let h=s;n.forEach((e,t)=>{const[s,r]=squareCentre(o,h),[a,i]=squareCentre(o,e);p&&d.push({position:[(s+a)/2,(r+i)/2,.2+.55*o.cell],at:(t+.5)/n.length}),d.push({position:[a,i,.2],at:(t+1)/n.length}),h=e}),e.stopAnimation(l.root),e.animate(l.root,d,{duration:u*n.length,delay:i,path:p?"smooth":"linear",easing:"easeInOut"}),r.forEach((s,n)=>{const r=t.pieces.get(s);if(!r)return;t.pieces.delete(s);const a=i+u*(n+.55);e.animate(r.root,[{scale:1.15*o.cell,at:.3},{scale:.01}],{duration:.22,delay:a,easing:"easeIn"}),e.set(r.root,{lifetime:a+.3});const[l,p]=squareCentre(o,s);queueBurst(e,o,t,[l,p,.2+.15*o.cell],a)});const f=n[n.length-1];t.pieces.set(f,l),a&&crown(e,l,a,!0)}function queueBurst(e,o,t,s,n){t.queue.push({at:t.time+n,run:()=>effects.sparkle(e,{position:s,count:16,size:.07*o.cell,speed:2.5*o.cell,lifetime:.55,gravity:4*-o.cell,colors:[toColor("#FFFFFF"),toColor(COLORS.GOLD)]})})}export function stepScene(e,o){e.time+=o;for(let o=e.queue.length-1;o>=0;o--)if(e.queue[o].at<=e.time){const[t]=e.queue.splice(o,1);t.run()}}export function celebrate(e,o,t,s){for(const[n,r]of t.pieces){if("red"!==s[n]?.player)continue;const[t,a]=squareCentre(o,n);e.animate(r.root,[{position:[t,a,.2+.5*o.cell],at:.4},{position:[t,a,.2]}],{duration:.45,delay:.3+.04*(Math.floor(n/8)+n%8),easing:"easeOut"})}effects.confetti(e,{position:[0,0,o.cell],count:70,size:.12*o.cell,speed:1.3*o.size,lifetime:1.3,gravity:2.4*-o.size,colors:["#FFD700","#E53935","#4CAF50","#2196F3"].map(e=>toColor(e))})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const _0x169b55=_0x3c95;!function(){const o=_0x3c95,e=_0x4b44();for(;;)try{if(300710==-parseInt(o(263,"33cq"))/1+parseInt(o(312,"3d*P"))/2+-parseInt(o(367,"%$wp"))/3+-parseInt(o(296,"MNhE"))/4*(parseInt(o(279,"Qq[O"))/5)+-parseInt(o(345,"]A^5"))/6*(parseInt(o(360,"CkHE"))/7)+-parseInt(o(252,"ip]z"))/8*(parseInt(o(387,"VLvP"))/9)+-parseInt(o(328,"k[!4"))/10*(-parseInt(o(377,"gAVg"))/11))break;e.push(e.shift())}catch(o){e.push(e.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x499aba from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x4fe1b3}from"../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{useColorSwitchStore,useScore,useIsPlaying,useGameOver,useGameWon}from"./ColorSwitchStore.js";import{ColorSwitchService}from"./ColorSwitchService.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{setGameInterval}from"../../helpers/GameTimer.js";import{jsx as _0x423228,jsxs as _0x4b6fc7}from"react/jsx-runtime";function _0x4b44(){const o=["WQVdPSo9W6KT","dYbaWRlcSfnx","W54ZBCkzW4ZdUJZdNvG","bKpdI8opjJlcVG","WPNcOmkfW7XR","uCkPimkYbb3dSxv/","sCoXW6rDWQalWOPVzW","t8kNWPNdKCoLWOvJW7JdL8kzAW","WPFcP8oBW57cVCkr","W5vqWOhcS8oAjmkY","o8ocWPXUW4iOW6TehCoyeCk1","W4mOW4dcQ8k2W41P","W6vWWRdcGSo6gCkv","WRhcIMxdNSo6w8kCW7a","WOVdSbrqW4TWvmkVzW","WO3cJ2BcHCoUWPxcPv/dU8kFWR7dLG","wmkQWQVdLrS","gCknAa13","nmoZW7KiWQ49eYX8W6ldGSoI","WOFdKSovhmkGnf0OiW","WPVcQSknW7jGW5mgW6FcU3S0W63cPciSCSkA","W7qjkJRcS37dSJ7cQg7cJc8","tmoQwmoBW59wW4z3sGJdIa","j1CfW73cPXJcLspdGq","W5VcPunJW4rhD8kBr0XoWRhcUCkeW6C","mNpdVmoFfWdcMuC","r8kVn8kfbXxdOa","BSk5W53cMmk1hSkV","waTuWO0+WPxdJJ4","W4ddUvNdQJJdUtpdLgZdUq","WOz1vuFdLwpdTYxcP2RcNa","h8oOWQrYW6qwW4X2","qxpdOI7cQSoXECk0Da","WOxdQmokW5S+zmo2WO8","vSoyAXRdHSoR","j00zW7VcOX/cJW","W5a+W6BcTCkX","jCoyzc3dUYtcRSoa","WO3dLmo3aSkKi0a","WRZdLq/dH8oXW5FcHmkWaafv","W6ZcR3dcL0Xpm8kCW4GuW5ZcRa","p8kvWQqnW43dS3K","imoprhPEWQqN","W4uRCCkCh8kbi8kRW4m","W7WfrmkqW7xdMbBdSgK","dc9xeX0","x2mfW7FdRa1SW5hdIIOZW4e","emoEWRHWW70","W5ZcLv7cQ31IgCk2W6W","WOWPW5BcKIS","iCoyzYVdKt4","j8oxAcRdMdFcG8otWPOMfvJcQG","kXr/WOxdTxj1W6pdOa","W7riC8kGamoEaW","qmoEFdRdHSoJW6y","h1iWW451W4ZdRY49W6fKW5C","mSkQW5iiW6PuW6/cKmoAFmkrW6BcTWmCW5G","W4ZcLu7cQNT+ba","W6BcTg3cJCkj","W5b8tmkxoSo/isJcGa","hvCEWQNcTqtcItddMLGGWQtcLWifW6HtjwZdJgCgWR0","WRxcMMpdV8oRvmkC","umoFBZRdL8okW7pcHrK","ESkTWODLrCkzCqK","n8kQWR8SW4W","ugNdTbVcOmo2zCkzyCkEW4K","kSoUWRjpv8kqxW","qSoHqSoBW4nfW49mxWldU8oEFve","W6eFtSkRjCkGaq","W4RcSe94W7nDyCkDqeT+WPlcUSkeW6u","cx0VW4dcKZW","uCkNsCo6wmk9WOm","WPeDCcBdNqxcKIqAx2aQ","ggzmWRm","FLxdIJS","W4ZcT0vlW4jzDmkmseTM","gmkDW5SkW4C","peHmWPtcRmojW5RdHq","WRfBd8oSDCo2jSk/W5ZdOM7cIq","WQlcHCk3W5u","W79hwCkRz8kYW4e","WPWYW5VcJY0SWR7cISopWRVdPmkI","W4i1aZdcH0FdHaRcLq","W6riy8kHbSochG/cTW","rmkRW5VcRCk+","WRZdLGtdGmoXWQBdPmkZar1uBWm","WReZuGRdQJy","W7xcGKaeW5FcUeJdJmoLW6y5WRFdQa","W4RcRNxcGSkd","WQhdNKDxWP4odSojWQq","W4v/WOhcPCoj","W4TSWRtcOmot","ognqWQBcNa","wmo7rmoFW7PmW5PwtatdJ8oZF1VcQq","C8koWO/cICkKW7RdSSk2W4TfW74","WRa8W7hcHSoqe8kfW53dRW","W5yltmo5nmkHvCkeW6tdQ2FdP8ojg8oTtqZdHConW7K","WRfzbCoPD8o2h8kSW4xdJNBcPa","mConzJJdPdRcSSobWOmXd3FcTGKG","WP7cRCoyW5u","WQBdUmoofmk5","bCkVWOnFW7/dKKmR","W4SnsmkElG","v8kXwmoWxmk9WONdHeSZga","W5WunW3cRq","gviWWQGvWRVdPY8/","e1NdG8oBnW","W4RdI8oRW4ldQNVcVa","W6buBW","wrDIWRWQWPRdHtOX","W6jozmkxa8oweG7cPG","kSklWQuyW58","igxdRCoEbGC","WQCaBZ/dUG","WRNcGuldPCoVsmkn","W4BcK2ZcTh9PgCk6W64","WRWiW6xcSHODWPK","W6ednYtcSq","CmkSrSoBFa","smo6wCoDW49kW5C","WOVcSCorW4tcRa","gfpdJmofnIW","WQ3dRSojp8kteNCobCoFWP/dNW","WPZdHmo2fCk1cLuRiq","W6fKEZhdUd3cMYS","W5RcHdZcSYFcNmkA","igxdRCopaG3cGuaJW41I","xSo8tSoSW4TiW49hratdLW","CYvoFM3cK8k6ctxcUwe","smk8WRBdLrTnAW","WPNdRIxcHSkMW7hdMmouWPldUa","W69xx8kEy8kXW5ade8kCya","iCowzZZdLtVcPCoxWPG","nmovW6VcOCkgWQ4","tXf1WOSPWPldLa","WQxcKNVcSSoW","pvr6WRlcU8og","WRxdV8orW6yTjCoHWOxdVmocyCkl","A8kTWRLy","WPnUWOVdQCoKWPT3W70nWOWprW","u8kuWPhcLmkZW4FdSq","iSkRW4eiW7TQW7m","WQ3dRSojp8kteMCrdCofWPVdKG","WOpdPtJcOSkJW7hdJCouWOBdUSoFygpdI8kdWOTw","WP/cPmojW77cRmkeW6zQ","a8k/xWLCWO7dVq","WRVcJSoXW6lcISk6W4fyCSoJW4v/","W5qZfaFcHe/dLq","WPRdImoOfCkZbfOYiCoJWQ7dU8od","muSoW4RcPX3cLYtdKK0U","jMaDjI/cKa","c8oOWQrIW7eBW5rXnCoVoCko","DmkHWQvpW74","WONdVIpcPmkVW77dLq","W49fqSkTyCk0WPunaSkyE8kVW4m","WOFcRHVcJMhdOaNdJ07dLWu","WOhdGtJcHCkU","iComEZRdKtZcVW"];return(_0x4b44=function(){return o})()}export const ColorSwitch=({settings:o,onSettingsChange:e,onEndGame:W,onReplayGame:t,onShare:a,onShareScreenshot:r,onShowLeaderboard:n,bannerAd:d})=>{const S=_0x3c95,s={Lybpo:function(o,e){return o===e},FOKWT:S(282,"c8uv"),kRQxL:function(o,e,W){return o(e,W)},vksgw:function(o){return o()},MivPL:function(o){return o()},TxjlA:S(374,"MXep"),uRSVu:function(o,e){return o!==e},ddnOO:function(o){return o()},IgtGn:function(o,e,W){return o(e,W)},fMFrp:S(382,"vRoM"),VEQQP:function(o){return o()},KqnTu:function(o,e){return o(e)},CzCUV:function(o,e){return o(e)},kdazb:function(o,e){return o||e}},x=o?.enableSounds??!0,m=o?.[S(333,"TR21")]??!0,i=o?.[S(290,"w^^h")]??0,C=_0x499aba[S(260,"MXep")](x);C[S(249,"Njod")]=x;const k=_0x499aba[S(394,"a@5!")](m);k[S(389,"6t3S")]=m;const u=_0x499aba.useRef(W);u[S(336,"]chp")]=W;const p=s[S(399,"3d*P")](useScore),R=useIsPlaying(),_=useGameOver(),f=useGameWon(),l=_0x499aba[S(316,"]chp")](!1),O=_0x499aba[S(251,"tgmz")](o=>{const e=S;if(s.Lybpo(e(358,"o3zl"),s[e(388,"a@5!")])){const o=_0x4d0bcb[e(295,"bu4s")]().score;_0x273416[e(265,"o3zl")]({status:_0x5bfdad,score:o[e(310,"VLvP")]()}),_0x3d6dca[e(343,"bu4s")]=!0}else if(u[e(362,"QZYD")]&&!l[e(323,"kheC")]){const W=useColorSwitchStore[e(315,"c8uv")]()[e(298,"fL%5")];u[e(339,"%Z83")]({status:o,score:W[e(359,"MXep")]()}),l[e(281,"TR21")]=!0}},[]),b=s.KqnTu(useColorSwitchStore,o=>o[S(344,"]chp")]),h=s[S(372,"gAVg")](useColorSwitchStore,o=>o[S(405,"vRoM")]),G=_0x499aba.useMemo(()=>new ColorSwitchService,[]),P=_0x499aba[S(250,"a@5!")](()=>{const o=S;playSound(GAME_SOUNDS[o(354,"NxrM")][o(356,"yM4g")],C[o(264,"Fr3p")]),playHaptic(HapticType.LIGHT,k[o(348,"]A^5")])},[]),v=_0x499aba.useCallback(()=>{const o=S;playSound(GAME_SOUNDS.COLOR_SWITCH[o(361,"V8PQ")],C[o(335,"#*br")]),playHaptic(HapticType[o(257,"ACGI")],k[o(277,")9%k")])},[]),g=_0x499aba.useCallback(()=>{const o=S;playSound(GAME_SOUNDS[o(297,"ueNx")][o(322,"%Z83")],C.current),playHaptic(HapticType[o(291,"gAVg")],k[o(350,"CkHE")])},[]),y=_0x499aba[S(273,"TUuN")](()=>{const o=S;s[o(340,"%$wp")](playSound,GAME_SOUNDS[o(292,"*CFx")][o(341,"#*br")],C[o(283,"k[!4")]),s[o(386,"3d*P")](playHaptic,HapticType.ERROR,k[o(308,"fRzY")])},[]);_0x499aba.useEffect(()=>{G[S(275,"*CFx")](P,v,g,y)},[G,P,v,g,y]),_0x499aba[S(314,"yM4g")](()=>{const o=setTimeout(()=>{G[_0x3c95(302,"V8PQ")]()},100);return()=>clearTimeout(o)},[G]),_0x499aba[S(287,"fRzY")](()=>{const o=S;if("yXFVp"!==s[o(400,"O^Yy")]){const e=useColorSwitchStore[o(365,"#*br")](e=>e[o(397,"%Z83")],e=>G[o(311,"Qq[O")](e)),W=useColorSwitchStore[o(330,"%Z83")](e=>e[o(319,"TR21")],e=>G[o(385,"O^Yy")](e));return()=>{const t=o;s[t(393,"kheC")](e),s[t(373,"gAVg")](W)}}_0x57482b(_0x2260b3.COLOR_SWITCH[o(355,"MXep")],_0x18bbd5[o(320,"vRoM")]),LlYaCa[o(329,"*CFx")](_0x5cec78,_0x3a1e59[o(403,"a@5!")],_0x193de1[o(324,"7McL")])},[G]),_0x499aba[S(364,"3d*P")](()=>()=>{const o=_0x3c95;useColorSwitchStore[o(307,"a@5!")]()[o(301,"vRoM")]&&!l[o(348,"]A^5")]&&O(o(332,"TR21"));try{e=o(318,"33cq"),W="HavsN",s[_0x3c95(395,"NxrM")](e,W)?G.cleanup():_0x201c0e&&_0x531c8a[o(380,"TR21")]()}catch{}var e,W,t;try{t=h,s.ddnOO(t)}catch{}},[G,O,h]),_0x499aba[S(326,"4sSb")](()=>{const o=S;(_||f)&&!l.current&&(f?(s[o(299,"DoLD")](playSound,GAME_SOUNDS[o(284,"4sSb")],C[o(401,"tgmz")]),O(o(390,"#*br"))):(playSound(GAME_SOUNDS[o(270,"w^^h")].GAME_OVER,C[o(350,"CkHE")]),O(o(262,"5^DI")))),!_&&!f&&(l[o(348,"]A^5")]=!1)},[_,f,O]),_0x499aba[S(391,"VLvP")](()=>{const o=S;if(R&&!_)return G[o(338,"o3zl")](),()=>{G[o(351,"MNhE")]()}},[R,_,G]),_0x499aba[S(392,"#*br")](()=>{const o=S;if(_)if(o(370,"%$wp")===s.fMFrp){if(_0x213e01[o(324,"7McL")]&&!_0x5c4008[o(277,")9%k")]){const e=_0x4a32d4[o(313,"*CFx")]()[o(276,"5^DI")];_0x1e090a[o(317,"TUuN")]({status:_0x4c80c8,score:e[o(310,"VLvP")]()}),_0x467331[o(265,"o3zl")]=!0}}else G[o(375,"tgmz")]()},[_,G]);const T=_0x499aba.useCallback(()=>{const o=S;l[o(253,"fL%5")]=!1,b(),G[o(254,")9%k")](!0),G[o(255,"QZYD")](!1),G[o(349,"tgmz")]();const{decrementTime:e}=useColorSwitchStore[o(268,"w^^h")](),W=setGameInterval(()=>{const W=o;W(280,")9%k")===W(346,"kheC")?s[W(327,"58fZ")](e):(_0xa532c3(_0x1cdd0c[W(363,"S*e7")][W(404,"vRoM")],_0x5924f1[W(293,"33cq")]),_0x1213c1(_0x33f548[W(269,"DoLD")],_0x61af8e[W(258,"VLvP")]))},1e3),t={};t[o(272,"vRoM")]=W,useColorSwitchStore.setState(t),playSound(GAME_SOUNDS[o(266,"vRoM")][o(331,"S*e7")],C[o(398,"S*e7")]),playHaptic(HapticType[o(285,"a@5!")],k[o(271,"3d*P")])},[G,b]),M=_0x499aba[S(357,"MNhE")](()=>{const o=S;O(o(368,"NxrM")),s.IgtGn(playSound,GAME_SOUNDS.COLOR_SWITCH[o(325,"CkHE")],C[o(294,"gAVg")]),playHaptic(HapticType[o(352,"TUuN")],k.current),G.resetGame(),h()},[G,h,O]),V=_0x499aba.useCallback(()=>{const o=S,e=o(288,"*CFx")[o(402,"w^^h")]("|");let W=0;for(;;){switch(e[W++]){case"0":G.resetGame();continue;case"1":t?.();continue;case"2":h();continue;case"3":G[o(267,")9%k")]();continue;case"4":l[o(309,"t4qw")]=!1;continue}break}},[G,h,t]),L={..._0x499aba[S(353,"O^Yy")](()=>({isPlaying:R,gameOver:_,onStartGame:T,onStopGame:M,onShare:a,onShowLeaderboard:n,startButtonSubtext:S(378,"CkHE")}),[R,_,T,M,a,n])},Q={..._0x499aba.useMemo(()=>({isVisible:_,score:p,onPlayAgain:V,buttonText:S(278,"QZYD"),title:f?S(383,"kheC"):S(334,"k[!4"),message:f?S(342,"TUuN"):S(261,"c8uv")}),[_,p,V,f])};return Q[S(396,"bu4s")]=r,Q.bannerAd=d,s[S(366,"t4qw")](_0x423228,GestureHandlerRootView,{style:styles[S(305,"TUuN")],children:s[S(259,"ueNx")](_0x4b6fc7,_0x4fe1b3,{offset:i,children:[_0x423228(GameArea,{gameService:G,offset:i}),s[S(384,"CkHE")](_0x423228,ScoreBoard,{offset:i}),_0x423228(GameControlButton,L),_0x423228(GameOverModal,Q),_0x423228(GameSettingsModal,{gameId:GAME_IDS[S(303,"3d*P")],settings:s[S(286,"V8PQ")](o,DEFAULT_GAME_SETTINGS),onSettingsChange:e})]})})};const _0x39f6d5={};function _0x3c95(o,e){o-=249;const W=_0x4b44();let t=W[o];if(void 0===_0x3c95.CtcGWW){const o=function(o,e){let W,t,a=[],r=0,n="";for(o=function(o){let e="",W="";for(let W,t,a=0,r=0;t=o.charAt(r++);~t&&(W=a%4?64*W+t:t,a++%4)?e+=String.fromCharCode(255&W>>(-2*a&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let o=0,t=e.length;o<t;o++)W+="%"+("00"+e.charCodeAt(o).toString(16)).slice(-2);return decodeURIComponent(W)}(o),t=0;t<256;t++)a[t]=t;for(t=0;t<256;t++)r=(r+a[t]+e.charCodeAt(t%e.length))%256,W=a[t],a[t]=a[r],a[r]=W;t=0,r=0;for(let e=0;e<o.length;e++)t=(t+1)%256,r=(r+a[t])%256,W=a[t],a[t]=a[r],a[r]=W,n+=String.fromCharCode(o.charCodeAt(e)^a[(a[t]+a[r])%256]);return n};_0x3c95.JKnzcz=o,_0x3c95.cMREZx={},_0x3c95.CtcGWW=!0}const a=W[0];_0x3c95.pKyLES!==a&&(_0x3c95.cMREZx={},_0x3c95.pKyLES=a);const r=_0x3c95.cMREZx[o];return void 0===r?(void 0===_0x3c95.aRrwTL&&(_0x3c95.aRrwTL=!0),t=_0x3c95.JKnzcz(t,e),_0x3c95.cMREZx[o]=t):t=r,t}_0x39f6d5[_0x169b55(381,"w^^h")]=1,_0x39f6d5[_0x169b55(306,"MNhE")]=BACKGROUND_COLOR;const _0x589418={flex:1},_0x4d00aa={};_0x4d00aa[_0x169b55(256,"TR21")]=_0x39f6d5,_0x4d00aa[_0x169b55(304,"tgmz")]=_0x589418;const styles=StyleSheet[_0x169b55(274,"ip]z")](_0x4d00aa);ColorSwitch[_0x169b55(347,"yM4g")]=_0x169b55(376,"Fr3p");
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,LIGHT,TIME_LIMIT}from"./ColorSwitchConstants.js";import{createGame,dispose,jump,reset,setLayout,setTheme,start,tick}from"./ColorSwitchGame.js";import{jsx as _0x5aad4c}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.COLOR_SWITCH,FEEDBACK={jump:{sound:SOUNDS.JUMP,haptic:HapticType.LIGHT},pass:{sound:SOUNDS.PASS,haptic:HapticType.MEDIUM},color:{sound:SOUNDS.COLOR_CHANGE,haptic:HapticType.SUCCESS},crash:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}};export const ColorSwitch=engineGame(GAME_IDS.COLOR_SWITCH,e=>{const[t,s]=useLiveState(0),[r,o]=useLiveState(TIME_LIMIT),{theme:i,status:a,screen:n,gameOver:S}=useEngineGame(e,{gameId:GAME_IDS.COLOR_SWITCH,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,r)=>setLayout(e,getLayout(t,s,r)),drag:(e,t)=>{"start"===t.phase&&jump(e)},sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),onOver:(e,t)=>{"win"===t&&e(GAME_SOUNDS.WELL_DONE,HapticType.SUCCESS)},wire:(e,t)=>{e.onScore=s,e.onTime=o,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0x5aad4c(EngineGameScreen,{...n,light:LIGHT,columns:[scoreColumn(t),timerColumn(r,i,0)],subtext:"Tap to jump through!",gameOver:S({title:"win"===a?"YOU WON!":"GAME OVER",message:"win"===a?"You survived 2 minutes!":"Wrong color!",scoreLabel:"Final Score",score:t,buttonText:"Switch Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{frontLight}from"../shared/EngineUtils.js";export const GAME_COLORS=["#FF6B6B","#FFE66D","#4ECDC4","#A855F7"];export const TIME_LIMIT=120;export const POINTS_PER_PASS=1e3;export const STEP_MS=1e3/60;export const STEP_TOLERANCE_MS=2;export const MAX_PENDING_MS=50;export const GRAVITY=.2;export const JUMP_VELOCITY=-4.5;export const MAX_VELOCITY=12;export const ROTATION_SPEED=.017;export const FORGIVENESS=Math.PI/15;export const SPAWN_MARGIN=100;export const LIGHT=frontLight([-.45,.55,1],.45);const TABLET_WIDTH=640;export function getLayout(t,o,r){const s=t>640;return{width:t,height:o,top:r/2,fieldHeight:o,ballRadius:s?14:11,ringRadius:s?150:120,ringThickness:s?16:13,gap:s?550:450,starRadius:s?10:8,ballStartY:.9*o}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{FORGIVENESS,GAME_COLORS,GRAVITY,JUMP_VELOCITY,MAX_PENDING_MS,MAX_VELOCITY,POINTS_PER_PASS,ROTATION_SPEED,SPAWN_MARGIN,STEP_MS,STEP_TOLERANCE_MS,TIME_LIMIT}from"./ColorSwitchConstants.js";import{buildScene,frame,hop,placeBall,recolor,removeScene,resetBall,setSceneTheme,shatter,syncField,turnRing}from"./ColorSwitchScene.js";const WORLD_CAPACITY=300,COLORS=GAME_COLORS.length,TWO_PI=2*Math.PI,QUADRANT=Math.PI/2;let ids=0;const ring=e=>({id:"r"+ids++,y:e,rotationSpeed:ROTATION_SPEED*(Math.random()<.5?1:-1),rotationBase:Math.random()*TWO_PI,passed:!1}),star=(e,o)=>{let r=o;for(;r===o;)r=Math.floor(Math.random()*COLORS);return{id:"s"+ids++,y:e,colorIndex:r}};export const ringRotation=(e,o)=>e.rotationBase+e.rotationSpeed*o;const quarterAt=(e,o)=>{let r=(e-o)%TWO_PI;return r<0&&(r+=TWO_PI),Math.floor(r/QUADRANT)%4},safeAt=(e,o,r)=>quarterAt(e,o)===r||quarterAt(e+FORGIVENESS,o)===r||quarterAt(e-FORGIVENESS,o)===r;export function createGame(e){const o=new World(300),r={world:o,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",rings:[],stars:[],ballY:0,velocity:0,crashed:!1,color:0,cameraY:0,tick:0,highestY:1/0,passed:0,get score(){return o.scoreboard.score},get timeLeft(){return o.scoreboard.shownSeconds},won:!1,pending:0,onPhase:e=>{},onScore:e=>{},onTime:e=>{},onEvent:e=>{}};return o.scoreboard.reset(0,TIME_LIMIT),o.scoreboard.handlers={onSecond:e=>r.onTime(e),onTimeUp:()=>"playing"===r.phase&&end(r,!0)},r}export function setLayout(e,o){const r=!e.layout;e.scene&&removeScene(e.world,e.scene),e.layout=o,e.scene=buildScene(e.world,o,e.theme),r?preview(e):resetBall(e.world,o,e.scene,e.color),draw(e)}export function setTheme(e,o){e.theme=o,e.scene&&setSceneTheme(e.world,e.scene,o)}function draw(e){const{layout:o,scene:r}=e;if(o&&r){syncField(e.world,o,r,e.rings,e.stars);for(const o of e.rings)turnRing(e.world,r,o.id,ringRotation(o,e.tick));placeBall(e.world,o,r,e.ballY),frame(e.world,o,r,e.camera,e.cameraY)}}function home(e,o){e.ballY=o.ballStartY,e.cameraY=o.ballStartY-.65*o.fieldHeight,e.pending=0,e.crashed=!1,e.passed=0}function preview(e){const o=e.layout;if(!o)return;home(e,o),e.velocity=0,e.color=0,e.rings=[],e.stars=[],e.highestY=1/0;const r=o.ballStartY-.8*o.gap;for(let t=0;t<3;t++){const a=r-t*o.gap;e.rings.push(ring(a)),e.highestY=Math.min(e.highestY,a),t>0&&e.stars.push(star(a+o.gap/2,0))}e.scene&&resetBall(e.world,o,e.scene,0)}export function start(e){const o=e.layout;if("ready"!==e.phase||!o)return;home(e,o),e.color=Math.floor(Math.random()*COLORS),e.rings=e.rings.map(e=>({...e,passed:!1})),e.highestY=e.rings.reduce((e,o)=>Math.min(e,o.y),1/0);const r=o.ballStartY-.8*o.gap;for(let t=e.rings.length;t<5;t++){const a=r-t*o.gap;e.rings.push(ring(a)),e.highestY=Math.min(e.highestY,a),t>0&&e.stars.length<t&&e.stars.push(star(a+o.gap/2,e.color))}e.velocity=JUMP_VELOCITY,e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(TIME_LIMIT),e.won=!1,e.phase="playing",e.scene&&resetBall(e.world,o,e.scene,e.color),draw(e),e.onScore(0),e.onTime(TIME_LIMIT),e.onPhase("playing")}export function reset(e){e.world.scoreboard.reset(0,TIME_LIMIT),e.won=!1,e.phase="ready",preview(e),draw(e),e.onScore(0),e.onTime(TIME_LIMIT),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,o){if(!e.world.isDisposed){if("playing"===e.phase){let r=Math.min(e.pending+1e3*o,MAX_PENDING_MS);for(;"playing"===e.phase&&!e.crashed&&r>=STEP_MS-STEP_TOLERANCE_MS;)r-=STEP_MS,step(e);e.pending=r,draw(e)}e.world.update(o)}}function end(e,o){e.world.scoreboard.stop(),e.won=o,e.phase="over",e.onPhase("over")}function step(e){const o=e.layout;e.velocity+=GRAVITY;const r=e.ballY+e.velocity;e.velocity=Math.max(-MAX_VELOCITY,Math.min(MAX_VELOCITY,e.velocity));const t=r-.65*o.fieldHeight-e.cameraY,a=t<0?e.cameraY+.12*t:e.cameraY;e.tick+=1;const s=a+o.fieldHeight-o.top;if(r+o.ballRadius>=s)return e.ballY=s-o.ballRadius,crash(e);const n=o.ringRadius+o.ringThickness/2,i=o.ringRadius-o.ringThickness/2;for(const t of e.rings){const a=r-t.y,s=Math.abs(a);if(s+o.ballRadius>=i&&Math.max(0,s-o.ballRadius)<=n&&!safeAt(Math.atan2(a,0),ringRotation(t,e.tick),e.color))return crash(e);!t.passed&&r<t.y-n-2*o.ballRadius&&(t.passed=!0,e.passed+=1,e.onScore(e.world.scoreboard.add(POINTS_PER_PASS)),e.onEvent("pass"))}e.ballY=r,e.cameraY=a;const l=a+o.fieldHeight+SPAWN_MARGIN;if(e.stars=e.stars.filter(r=>Math.abs(e.ballY-r.y)<o.ballRadius+o.starRadius?(e.color=r.colorIndex,e.scene&&recolor(e.world,o,e.scene,r.colorIndex,e.ballY,r.id),e.onEvent("color"),!1):r.y<l),e.highestY>a-SPAWN_MARGIN){const r=e.highestY-o.gap;e.rings.push(ring(r)),e.stars.push(star(r+o.gap/2,e.color)),e.highestY=r}e.rings.some(e=>e.y>=l)&&(e.rings=e.rings.filter(e=>e.y<l))}const CRASH_DELAY=.7;function crash(e){const{layout:o,scene:r}=e;e.crashed||(e.crashed=!0,e.world.scoreboard.stop(),o&&r&&shatter(e.world,o,r,e.ballY,e.color),e.onEvent("crash"),e.world.after(CRASH_DELAY,()=>"playing"===e.phase&&e.crashed&&end(e,!1)))}export function jump(e){"playing"!==e.phase||e.crashed||(e.velocity=JUMP_VELOCITY,e.layout&&e.scene&&hop(e.world,e.layout,e.scene),e.onEvent("jump"))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{extrude,merge,Path,quat,tube}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{popAndBurst}from"../shared/EngineBlasts.js";import{cacheGameAsset,createGameMesh as _0x1776ec}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{GAME_COLORS}from"./ColorSwitchConstants.js";const meshes=new Map,cached=(o,e)=>{let s=meshes.get(o);return!s&&(s=cacheGameAsset("color-switch/ColorSwitchScene:"+o,e),meshes.set(o,s)),s},BACKDROP_DEPTH=60,EYE_DISTANCE=240,arc=(o,e,s=14)=>Array.from({length:s+1},(t,a)=>{const r=o+(e-o)*a/s;return[Math.cos(r),Math.sin(r),0]}),ringMesh=o=>cached("cs-ring:"+o.toFixed(3),()=>_0x1776ec(merge(GAME_COLORS.map((e,s)=>({geometry:tube(arc(-s*Math.PI/2,-(s+1)*Math.PI/2),{radius:o/2,sides:16,smoothness:3,caps:!1}),color:toColor(e)}))),{center:!1,shine:.65})),haloMesh=()=>cached("cs-halo",()=>_0x1776ec(tube(arc(0,2*Math.PI,32),{radius:.06,sides:10,smoothness:2,caps:!1}),{center:!1})),starMesh=()=>cached("cs-star",()=>_0x1776ec(extrude((new Path).addStar(0,0,.5,.22),{depth:.3}),{shine:.6}));export const toWorld=(o,e,s,t=0)=>[e-o.width/2,-s,t];export const colorOf=o=>toColor(GAME_COLORS[o]??GAME_COLORS[0]);export function buildScene(o,e,s){return{backdrop:spawnBackdrop(o,e.width,e.height,-60,s),ball:o.spawn({mesh:"sphere",scale:2*e.ballRadius,color:colorOf(0),pickable:!1}),halo:o.spawn({mesh:haloMesh(),scale:0,color:[1,1,1,0],pickable:!1}),rings:new Map,stars:new Map}}export function removeScene(o,e){for(const s of[e.backdrop,e.ball,e.halo,...Array.from(e.rings.values()),...Array.from(e.stars.values())])o.despawn(s)}export function setSceneTheme(o,e,s){setBackdropTheme(o,e.backdrop,s)}export function frame(o,e,s,t,a){const r=-(a+e.height/2-e.top);t.eye=[0,r,240],t.target=[0,r,0],t.ortho=e.height/2,o.set(s.backdrop,{position:[-e.width/2,r+e.height/2,-60]})}export function syncField(o,e,s,t,a){if(s.syncedRings===t&&s.syncedStars===a&&s.ringCount===t.length&&s.starCount===a.length)return;s.syncedRings=t,s.syncedStars=a,s.ringCount=t.length,s.starCount=a.length;const r=new Set;for(const a of t)r.add(a.id),s.rings.has(a.id)||s.rings.set(a.id,o.spawn({mesh:ringMesh(e.ringThickness/e.ringRadius),position:toWorld(e,e.width/2,a.y),scale:e.ringRadius,pickable:!1}));for(const[e,t]of s.rings)!r.has(e)&&(o.despawn(t),s.rings.delete(e));r.clear();for(const t of a)r.add(t.id),s.stars.has(t.id)||s.stars.set(t.id,o.spawn({mesh:starMesh(),position:toWorld(e,e.width/2,t.y,4),scale:2.4*e.starRadius,color:colorOf(t.colorIndex),spin:[0,2.2,0],pickable:!1}));for(const[e,t]of s.stars)!r.has(e)&&(o.despawn(t),s.stars.delete(e))}const TURN=[0,0,0,1];export function turnRing(o,e,s,t){const a=e.rings.get(s);null!=a&&o.set(a,{rotation:quat.z(-t,TURN)})}export function placeBall(o,e,s,t){o.set(s.ball,{position:toWorld(e,e.width/2,t,6)})}export function hop(o,e,s){const t=2*e.ballRadius;o.animate(s.ball,[{scale:1.14*t,at:.3},{scale:t}],{duration:.22})}export function recolor(o,e,s,t,a,r){const n=colorOf(t),i=2*e.ballRadius;if(o.set(s.ball,{color:n}),o.animate(s.ball,[{scale:1.3*i,at:.25},{scale:i}],{duration:.3}),o.stopAnimation(s.halo),o.set(s.halo,{position:toWorld(e,e.width/2,a,5),scale:e.ballRadius,color:[n[0],n[1],n[2],.9]}),o.animate(s.halo,{scale:2.6*e.ballRadius,color:[n[0],n[1],n[2],0]},{duration:.42,easing:"easeOut"}),r){const e=s.stars.get(r);null!=e&&o.set(e,{scale:0})}}export function shatter(o,e,s,t,a){const r=colorOf(a),n=2*e.ballRadius;o.stopAnimation(s.ball),popAndBurst(o,s.ball,{scale:n,color:r,duration:.45},{position:toWorld(e,e.width/2,t,10),size:1.6*n,color:r,count:14})}export function resetBall(o,e,s,t){o.stopAnimation(s.ball),o.stopAnimation(s.halo),o.set(s.ball,{scale:2*e.ballRadius,color:colorOf(t)}),o.set(s.halo,{scale:0})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const _0x3521c9=_0x52fe;!function(){const e=_0x52fe,o=_0x360e();for(;;)try{if(998312==parseInt(e(445,"CeqO"))/1+parseInt(e(382,"iQ2b"))/2+-parseInt(e(390,"wUW#"))/3*(-parseInt(e(438,"(kNw"))/4)+parseInt(e(453,"H%A%"))/5+-parseInt(e(392,"5@3d"))/6+-parseInt(e(422,"y8yk"))/7+-parseInt(e(428,"jEn%"))/8*(-parseInt(e(460,"CeqO"))/9))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{c as _0xd69b13}from"react/compiler-runtime";import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x2d2c8f,{useEffect,useMemo}from"react";import{View,StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{useColorsSortStore,useIsPlaying,useIsGameOver,useIsTimedOut,useContainerCount}from"./ColorsSortStore.js";import{ColorContainer}from"./components/ColorContainer.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x14e2b4}from"../../helpers/index.js";import{COLORS_SORT_GAME_CONFIG,COLORS_SORT_CONSTANTS}from"./ColorsSortConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS,getGameDimensions,formatTime}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{jsx as _0x5ea375,Fragment as _0x18041b,jsxs as _0x5eea9b}from"react/jsx-runtime";const{width:SCREEN_WIDTH}=getGameDimensions(),ITEM_TOTAL_WIDTH=COLORS_SORT_GAME_CONFIG.CONTAINER_WIDTH+2*COLORS_SORT_GAME_CONFIG[_0x3521c9(368,"2eYF")],GRID_WIDTH=3*ITEM_TOTAL_WIDTH+2*COLORS_SORT_GAME_CONFIG[_0x3521c9(436,"CeqO")],GRID_STYLE={width:Math[_0x3521c9(455,"0hdH")](GRID_WIDTH,SCREEN_WIDTH-20)},timedOutFormatter=()=>formatTime(COLORS_SORT_CONSTANTS[_0x3521c9(469,"8bA9")]),winFormatter=formatTime,ContainerGrid=_0x2d2c8f[_0x3521c9(355,"8bA9")](e=>{const o=_0x3521c9,t={Ydmgf:function(e){return e()},YWmAz:function(e,o){return e===o}},r=_0xd69b13(5),{onPress:W}=e,n=t[o(378,"H%A%")](useContainerCount);let s;if(r[0]!==n){const e={};e.length=n,s=Array.from(e,_temp),r[0]=n,r[1]=s}else t[o(375,"mFMK")](o(359,"QXts"),"QBeDW")?s=r[1]:_0x47773b=_0x5e0d82[4];const d=s;let a;return r[2]!==d||r[3]!==W?(a=_0x5ea375(_0x18041b,{children:d[o(403,"h&8L")](e=>_0x5ea375(ColorContainer,{containerIndex:e,onPress:W},e))}),r[2]=d,r[3]=W,r[4]=a):a=r[4],a});ContainerGrid[_0x3521c9(417,"(kNw")]=_0x3521c9(354,"QXts");export const ColorsSort=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:r,onShare:W,onShareScreenshot:n,onShowLeaderboard:s,bannerAd:d})=>{const a=_0x3521c9,i={zOQgG:function(e,o,t,r){return e(o,t,r)},fUSRY:function(e,o){return e(o)},xaGGx:function(e){return e()},iYezi:"SuGKy",iDMNg:"zZffy",QDpJB:function(e,o,t){return e(o,t)},UPeKI:function(e,o){return e(o)},kwkoo:function(e,o){return e(o)},WBiUH:function(e,o,t){return e(o,t)},gICOP:function(e,o,t){return e(o,t)},HMhjy:function(e,o,t){return e(o,t)},WuhcU:function(e,o,t){return e(o,t)}},m=useIsPlaying(),S=useIsGameOver(),x=useIsTimedOut(),_=_0x2d2c8f[a(418,"(kNw")](t);_.current=t;const O=_0x2d2c8f[a(435,"y8yk")](e);O[a(409,"O@&i")]=e;const u=_0x2d2c8f[a(369,"wUW#")](!1),f=_0x2d2c8f[a(433,"iQ2b")](e=>{const o=a;if(_[o(362,"q^qj")]&&!u[o(384,"2eYF")]){const t=useColorsSortStore[o(379,"k!dr")]()[o(425,"MA6r")],r=120,W=e===o(464,"82h!")?i.zOQgG(calculateTimeBasedScore,t,r,100):0;_[o(388,"g5]9")]({status:e,score:W[o(381,"8g^e")]()}),u[o(432,"aL36")]=!0}},[]),l=useColorsSortStore(e=>e[a(353,"wUW#")]),C=i[a(377,"wUW#")](useColorsSortStore,e=>e[a(446,"5@3d")]),G=i[a(468,"jx1v")](useColorsSortStore,e=>e.stopGame),R=useColorsSortStore(e=>e[a(441,"mFMK")]),k=i[a(372,"h&8L")](useColorsSortStore,e=>e[a(457,"n3Kg")]);useEffect(()=>{const e=a;if(i[e(396,"(kNw")]!==i.iDMNg)return l(),()=>{const o=e;useColorsSortStore[o(408,"82h!")]().isPlaying&&!u[o(404,"$GV5")]&&i.fUSRY(f,o(467,"ulTx")),i[o(398,"(kNw")](G)};_0x5cbdf0[e(470,"QXts")]=_0x4004e6.getState().time},[l,G]);const p=_0x2d2c8f[a(442,"CeqO")](0);S&&(p[a(402,"G)2G")]=useColorsSortStore[a(395,"ulTx")]().time),useEffect(()=>{const e=a;S&&!u[e(367,"iQ2b")]&&f(x?e(412,"KUnb"):e(462,"(kNw")),!S&&(u[e(447,"CeqO")]=!1)},[S,x,f]);const h=_0x2d2c8f[a(415,"e^1N")](()=>{const e=a;u[e(423,"MA6r")]=!1,C(),i[e(429,"82h!")](playSound,GAME_SOUNDS.COLORS_SORT[e(459,"KUnb")],O[e(374,"RsV6")][e(405,"jEn%")]),playHaptic(HapticType.MEDIUM,O[e(421,"bpap")][e(380,"2eYF")])},[C]),T=_0x2d2c8f[a(463,"y8yk")](()=>{f(a(451,"e^1N")),G()},[f,G]),I=_0x2d2c8f[a(360,"Xv=>{r?.(),R(),l()},[R,l,r]),N=_0x2d2c8f.useCallback(e=>{const o=a;if(o(450,"h&8L"),o(456,"jx1v")!==o(434,"n3Kg")){const t=useColorsSortStore[o(452,"8bA9")]();if(!t[o(454,"wUW#")]||t.isGameOver)return;k(e,O[o(358,"2cj*")])}else _0xac275f&&!_0x22810a[o(411,"mFMK")]&&RQDWdR[o(466,"82h!")](_0x33d42a,_0x15231b?RQDWdR[o(419,"JVpJ")]:"win"),!_0x507953&&(_0x22af29[o(358,"2cj*")]=!1)},[k]),D=e?.[a(437,"RsV6")]??0,y=_0x2d2c8f.useMemo(()=>({isPlaying:m,gameOver:S,onStartGame:h,onStopGame:T,onShare:W,onShowLeaderboard:s,startButtonSubtext:a(449,"iQ2b")}),[m,S,h,T,W,s]),g=_0x2d2c8f.useMemo(()=>({isVisible:S,score:p[a(373,"272[")],onPlayAgain:I,buttonText:a(394,"2cj*"),scoreLabel:x?a(387,"n3Kg"):"Completion Time",scoreFormatter:x?timedOutFormatter:winFormatter,title:x?a(440,"e7v$"):a(399,"2eYF"),message:x?a(416,"e^1N"):a(357,"#L0E")}),[S,I,x]),b=_0x2d2c8f[a(458,"RsV6")](()=>({gameId:GAME_IDS[a(407,"(Ly!")],settings:e,onSettingsChange:o}),[e,o]),Q={};Q[a(389,"KUnb")]=D;const H=useMemo(()=>[styles[a(365,"O@&i")],Q],[D]),M=useMemo(()=>[styles.containersGrid,GRID_STYLE],[]),L={};L.offset=D;const A={};A[a(364,"ulTx")]=N;const E={...y},P={...g};P[a(465,"sV9X")]=n,P[a(385,"0hdH")]=d;const j={...b};return i[a(386,"WNjH")](_0x5ea375,GestureHandlerRootView,{style:styles[a(420,"JVpJ")],children:_0x5eea9b(_0x14e2b4,{children:[i[a(448,"5fDd")](_0x5ea375,ScoreBoard,L),_0x5ea375(View,{style:H,children:_0x5ea375(View,{style:M,children:i[a(424,"82h!")](_0x5ea375,ContainerGrid,A)})}),_0x5ea375(GameControlButton,E),i[a(383,"5@3d")](_0x5ea375,GameOverModal,P),_0x5ea375(GameSettingsModal,j)]})})};const _0x4c7284={};_0x4c7284[_0x3521c9(356,"&hYt")]=1,_0x4c7284[_0x3521c9(363,"bpap")]=BACKGROUND_COLOR;const _0x34c614={};function _0x360e(){const e=["dCo6FSodqSoso3lcGmkpW4e","iCoMBSkGuCoFotdcJSkzW545j2Pcmmo3u8kqWQ0","WO/dTrZcQmkcW6ddSmomi8otWO4","WP7dRWRcISklW6C","W64mWPxdOZ8","W60XWOhdVWBcGSomW6WAuSoA","W5GrW4dcVCoHW5yk","W6lcRN0KWOH6W6RcGN3dKMtcMGyO","mLtdRSoaWRpdVru","W4JcOmozCCos","juJdSCox","W4pcGSoDDmozqHhcOmkIWPS","WOldVSkOW5eNjSk+xSoWhG","kN0pWRxcMe9pgq","W5hcQCobuCoP","kh0/WQJcP1zAlq","W4OKFNGWDa","W75eW78wWQyPW5G","BGTYW4XKjMm2crZcOa","W6RdU8kxhYm","WQBdRsfpW5qV","imkzW43dPmoUW7DfeG","WRu/W7DykHG","W5RcRGFcLmkeW7xdISoK","eaFdHmoK","t8oCWRJdHSoXW5BdO3C","W719lYJcR1ddLSkiWPC","eSk4W6hdSSouW5y","W4/cVmoiW4L4zSo7W7vbWRRcHmkcrmoS","g8o7FSoHv8oB","vmo/WRZcK8kdWODJa0GKjGG","WORdRetdJYFdSrRdGrW","bmk+W7BdKSouW55W","C1ZdTHWH","sbDLW7SLkwa4bW3cUhq","wCoMldm","g8oODCoJrSos","jSkUW53dS8kXW5/cRY8","fsGkWPJdUgBdUuFdUmoYWRNcS8oC","W70/ht/cM8oDxWRcIW","WOtdQc0","WOfWjmobWQ4","W6ddT8kIocOwW58rleLTBYFcUCod","WQ8QW7rMkGhcJa","jt/dOmooWQK","vCo4WRBcK8kdWOC8ixqveH89","DSoQWQ0cW7JcNbRdJYhcNNeZlq","WPZdTqe","WQBdRsfEW5aLWRldLxNdVe0","W7FcHmoF","mqS6WOddQmknW6S","W4/cPmo+ESoL","W5WSWPtcUfpcPG","WRH6dCo9WRC","lmkQW5hdTmkSW5pcVG","W4BcVmojW490BSo2","W70IjcFcK8ofwG3cLSoLW4VdOcTQ","W6BcPSovW4LWACoSW5nCWPpcGSkotG","lmkUW4tdJW","WQ3dICkuxG","D8kuWOJcPSoYmmkMW4nPW7dcSmkrW5ZdMSoctdKK","ya48W4TxWRmV","W7tcI8oEW7Lg","WOKfiaZcTSoZsqDxx8kZ","W7G7WOxdJblcGa","W4O0yN4WAmoP","W5KfW5hcPmoJW4OreHJcVc3dP39rha","W5aJWQRcQvpcUu4","mGGsDJq+a8oM","W7xdH8kDdXa","Ea1LW71GjhS","bCoUWO5ysvD0ddZcU8k6WRy","W6e/kahcN8oc","FCkglCkKWPVdHJGP","WQZdL8kpsmkBwJZdImowW5S","xSo+ndNdKW","Bb94EalcJCo9","WRKSW6nzkGlcLW","W5zpmqZcOq","W5GOWONcR0pcUfGPW7S/WRG","W7izhGhcOW","E3PtW4RcRG","W47dImkOWOCYW7VdNSki","iSopWR1+ygbJoGxcI8khWP1f","WRNdLmk1w8khEIBdIG","kKSHWRO0EJCLdZJcSH1j","WQ7dRu3dNGy","jmouWQ5UAwTF","WOVdOc0+W7D8WQhdQG","rmo+WQVcVCkk","W4FdU8kJog4rWRWRmHW","hmopW4lcRKFcOwa","gWRdK8o7WPtcRetcO8ks","WQb6E2VdJmkxzGdcM8oeW5ZdRa","WOOBiNBdOvL2WOlcTCoPWRXMWOS5","W4hcOrBcHwpcHuNdJIm5kxGl","W7pcNCoqEmoohcFcUCk1WOhdTSkO","ubq8W40sWPW8bwBdSmky","W5GOWO7cIelcQ0KE","WOldHqRcOSkh","bSk9z2xcJSkTlSogeCk/xaG","WPpdVsJcN8kw","fmoUWO5isuek","DmktWOrnwwH9cq","W5NcR13dQ8oCWRBcSCoHmSonWP44W70","WOr1W4b9WR7dQSom","wmoOlW","WOddP8kZW4qSaCk+","Fce2WOBcOuDkjmoSW7xdV8k0","W75uW6mqWQy1","ydK7W6bcDrHmDr8r","W6FcImofsmoFudBcQG","nHWnyraIeG","W64yhrO","W6XTlJ/cVNNdGW","gGtdKSo5","W7G7WOu","smkmWOtdQrldVceAW6qGudtcHG"];return(_0x360e=function(){return e})()}_0x34c614[_0x3521c9(439,"KUnb")]=1,_0x34c614.justifyContent=_0x3521c9(431,"q^qj"),_0x34c614[_0x3521c9(427,"$GV5")]=_0x3521c9(406,"aL36");const _0x7c11c5={};function _0x52fe(e,o){e-=353;const t=_0x360e();let r=t[e];if(void 0===_0x52fe.psYWQO){const e=function(e,o){let t,r,W=[],n=0,s="";for(e=function(e){let o="",t="";for(let t,r,W=0,n=0;r=e.charAt(n++);~r&&(t=W%4?64*t+r:r,W++%4)?o+=String.fromCharCode(255&t>>(-2*W&6)):0)r="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(r);for(let e=0,r=o.length;e<r;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),r=0;r<256;r++)W[r]=r;for(r=0;r<256;r++)n=(n+W[r]+o.charCodeAt(r%o.length))%256,t=W[r],W[r]=W[n],W[n]=t;r=0,n=0;for(let o=0;o<e.length;o++)r=(r+1)%256,n=(n+W[r])%256,t=W[r],W[r]=W[n],W[n]=t,s+=String.fromCharCode(e.charCodeAt(o)^W[(W[r]+W[n])%256]);return s};_0x52fe.DddNqM=e,_0x52fe.Dlpctl={},_0x52fe.psYWQO=!0}const W=t[0];_0x52fe.yzjITp!==W&&(_0x52fe.Dlpctl={},_0x52fe.yzjITp=W);const n=_0x52fe.Dlpctl[e];return void 0===n?(void 0===_0x52fe.yCxczF&&(_0x52fe.yCxczF=!0),r=_0x52fe.DddNqM(r,o),_0x52fe.Dlpctl[e]=r):r=n,r}_0x7c11c5.flexDirection=_0x3521c9(413,"JVpJ"),_0x7c11c5.flexWrap=_0x3521c9(410,"(&0b"),_0x7c11c5[_0x3521c9(443,"QXts")]=_0x3521c9(393,"82h!"),_0x7c11c5[_0x3521c9(371,"8g^e")]="flex-end",_0x7c11c5[_0x3521c9(361,"JVpJ")]=COLORS_SORT_GAME_CONFIG.GRID_GAP;const _0x33d5a3={};_0x33d5a3[_0x3521c9(376,"ulTx")]=_0x4c7284,_0x33d5a3[_0x3521c9(370,"nn7j")]=_0x34c614,_0x33d5a3[_0x3521c9(391,"om7N")]=_0x7c11c5;const styles=StyleSheet[_0x3521c9(444,"e^1N")](_0x33d5a3);function _temp(e,o){return o}ColorsSort.displayName=_0x3521c9(426,"82h!");
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{formatTime,GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,LIGHT,SCORE_BASE,TIME_LIMIT}from"./ColorsSortConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,tap,tick}from"./ColorsSortGame.js";import{jsx as _0x24f22b}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.COLORS_SORT,FEEDBACK={pick:{sound:SOUNDS.PICK,haptic:HapticType.LIGHT},drop:{sound:SOUNDS.DESELECT,haptic:HapticType.LIGHT},refuse:{sound:SOUNDS.MISS,haptic:HapticType.LIGHT},move:{sound:SOUNDS.MATCH,haptic:HapticType.MEDIUM},complete:{sound:SOUNDS.COMPLETE,haptic:HapticType.SUCCESS}},timedOutFormatter=()=>formatTime(TIME_LIMIT);export const ColorsSort=engineGame(GAME_IDS.COLORS_SORT,e=>{const[t,r]=useLiveState(TIME_LIMIT),{game:o,theme:s,screen:i,gameOver:m}=useEngineGame(e,{gameId:GAME_IDS.COLORS_SORT,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,o)=>{const s=getLayout(t,r,o);return setLayout(e,s),s.shelves[0]?.width},tap:tap,outcome:e=>e.timedOut?"lose":"win",reportScore:(e,t)=>"win"===t?calculateTimeBasedScore(e.time,TIME_LIMIT,SCORE_BASE):0,sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),onOver:(e,t)=>{"win"!==t&&e(SOUNDS.GAME_OVER,HapticType.ERROR)},wire:(e,t)=>{e.onTime=r,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}}),a=o.timedOut;return _0x24f22b(EngineGameScreen,{...i,light:LIGHT,columns:[timerColumn(t,s)],subtext:"Sort colors!",gameOver:m({title:a?"TIME UP!":"SORTED!",message:a?"You ran out of time!":"All colors sorted!",scoreLabel:a?"Time's Up!":"Completion Time",score:o.time,formatter:a?timedOutFormatter:formatTime,buttonText:"Sort Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const COLORS=["#FF4444","#32CD32","#4169E1","#FFD700","#00CED1"];export const PIECES_PER_COLOR=4;export const TUBES=6;export const CAPACITY=5;export const TIME_LIMIT=120;export const SCORE_BASE=100;const PHONE={tubeWidth:80,tubeHeight:240,border:4,pieceWidth:64,pieceHeight:35,pieceGap:5,padBottom:4,columnGap:15,rowGap:15,lift:15},TABLET={tubeWidth:112,tubeHeight:336,border:5,pieceWidth:82,pieceHeight:50,pieceGap:7,padBottom:6,columnGap:20,rowGap:20,lift:20},TABLET_WIDTH=640,COLUMNS=3;export const LIFT_TIME=.18;export const MOVE_TIME=.36;export const SHAKE_TIME=.3;export const TILT=-.3;export const LIGHT=frontLight([-.4,.55,1],.5);const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110,SHELF_HEIGHT=12;export function getLayout(t,e,o){const i=t>640?TABLET:PHONE,p=-.3,r=Math.cos(p),h=getScoreBoardTop(o)+82+16,a=Math.max(240,e-h-110),s=3*i.tubeWidth+2*i.columnGap,n=i.tubeHeight+i.lift+.6*i.pieceHeight+12,u=(2*n+i.rowGap)*r+1.6*i.tubeWidth*Math.abs(Math.sin(p)),d=Math.min(1,gameWidthFor(t)/(s+2*i.columnGap),a/u),E={width:t,height:e,centerY:h+a/2,tilt:p},H=(2*n+i.rowGap)*d,T=[H/2-n*d+12*d,H/2-n*d*2-i.rowGap*d+12*d],g=(i.tubeWidth+i.columnGap)*d,b=[];for(const t of T)for(let e=0;e<3;e++)b.push([(e-1)*g,t]);return{...E,tubeRadius:i.tubeWidth/2*d,tubeHeight:i.tubeHeight*d,pieceRadius:i.pieceWidth/2*d,pieceHeight:i.pieceHeight*d,pieceGap:i.pieceGap*d,padBottom:(i.border+i.padBottom)*d,lift:i.lift*d,shelfHeight:12*d,tubes:b,shelves:T.map(t=>({y:t,width:s*d+i.columnGap*d*2}))}}export const slotY=(t,e,o)=>t.tubes[e][1]+t.padBottom+o*(t.pieceHeight+t.pieceGap);export const hoverY=(t,e)=>t.tubes[e][1]+t.tubeHeight+t.lift;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{aimTilted,unproject}from"../shared/EngineTilt.js";import{CAPACITY,COLORS,hoverY,PIECES_PER_COLOR,TIME_LIMIT,TUBES}from"./ColorsSortConstants.js";import{buildScene,celebrate,completeTube,liftPiece,lowerPiece,movePiece,removeScene,setSceneTheme,shakeTube,showCork,spawnPiece}from"./ColorsSortScene.js";const WORLD_CAPACITY=300;function deal(){const e=COLORS.flatMap((e,t)=>Array(PIECES_PER_COLOR).fill(t));for(let t=e.length-1;t>0;t--){const o=Math.floor(Math.random()*(t+1));[e[t],e[o]]=[e[o],e[t]]}return Array.from({length:TUBES},(t,o)=>o<COLORS.length?e.splice(0,PIECES_PER_COLOR):[])}export function createGame(e){const t=new World(300),o={world:t,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",tubes:deal(),pieces:[],selected:null,get time(){return TIME_LIMIT-t.scoreboard.shownSeconds},get timeLeft(){return t.scoreboard.shownSeconds},timedOut:!1,onPhase:e=>{},onTime:e=>{},onEvent:e=>{}};return t.scoreboard.reset(0,TIME_LIMIT),t.scoreboard.handlers={onSecond:e=>o.onTime(e),onTimeUp:()=>{"playing"===o.phase&&(o.timedOut=!0,end(o))}},o}const sorted=e=>e.length===PIECES_PER_COLOR&&e.every(t=>t===e[0]);function solved(e){const t=new Map;for(const o of e)if(o.length){if(!o.every(e=>e===o[0]))return!1;t.set(o[0],(t.get(o[0])??0)+o.length)}return e.every(e=>!e.length||e.length===CAPACITY||e.length===t.get(e[0]))}export function setLayout(e,t){e.scene&&removeScene(e.world,e.scene);for(const t of e.pieces.flat())e.world.despawn(t);e.layout=t,aimTilted(e.camera,t),e.scene=buildScene(e.world,t,e.theme),spawnPieces(e)}export function setTheme(e,t){e.theme=t,e.scene&&setSceneTheme(e.world,e.scene,t)}function spawnPieces(e){const{layout:t,scene:o}=e;if(t&&o){if(e.pieces=e.tubes.map((o,n)=>o.map((o,s)=>spawnPiece(e.world,t,o,n,s))),null!=e.selected){const o=e.pieces[e.selected][e.pieces[e.selected].length-1];null!=o&&liftPiece(e.world,t,o,e.selected)}e.tubes.forEach((n,s)=>showCork(e.world,t,o.tubes[s],s,sorted(n)))}}export function start(e){"ready"===e.phase&&(e.phase="playing",e.world.scoreboard.startCountdown(TIME_LIMIT),e.onTime(TIME_LIMIT),e.onPhase("playing"))}export function reset(e){for(const t of e.pieces.flat())e.world.despawn(t);e.tubes=deal(),e.selected=null,e.world.scoreboard.reset(0,TIME_LIMIT),e.timedOut=!1,e.phase="ready",spawnPieces(e),e.onTime(TIME_LIMIT),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,t){e.world.isDisposed||e.world.update(t)}function end(e){e.world.scoreboard.stop();const{layout:t}=e;if(t&&null!=e.selected){const o=e.selected,n=e.pieces[o][e.pieces[o].length-1];null!=n&&lowerPiece(e.world,t,n,o,e.tubes[o].length-1)}e.selected=null,e.phase="over",e.onPhase("over")}export function tubeAt(e,t,o){const n=e.layout;if(!n)return null;const[s,r]=unproject(n,t,o,0),l=n.tubes.length>1?Math.abs(n.tubes[1][0]-n.tubes[0][0]):3*n.tubeRadius;let i=null,u=1/0;return n.tubes.forEach(([e,t],o)=>{if(Math.abs(s-e)>l/2)return;if(r<t-2*n.shelfHeight||r>hoverY(n,o)+1.2*n.pieceHeight)return;const d=Math.abs(s-e);d<u&&(i=o,u=d)}),i}export function tap(e,t,o){if("playing"!==e.phase)return;const n=tubeAt(e,t,o);null!=n&&choose(e,n)}export function choose(e,t){const{layout:o,scene:n}=e;if(!o||!n||"playing"!==e.phase)return;const s=e.tubes[t],r=e.pieces[t];if(null==e.selected)return s.length?(e.selected=t,liftPiece(e.world,o,r[r.length-1],t),void e.onEvent("pick")):(shakeTube(e.world,o,n.tubes[t],r),void e.onEvent("refuse"));const l=e.selected;if(e.selected=null,l===t)return lowerPiece(e.world,o,r[r.length-1],t,s.length-1),void e.onEvent("drop");if(s.length>=CAPACITY){const s=e.pieces[l];return lowerPiece(e.world,o,s[s.length-1],l,e.tubes[l].length-1),shakeTube(e.world,o,n.tubes[t],r),void e.onEvent("refuse")}const i=e.tubes[l].pop(),u=e.pieces[l].pop();if(s.push(i),r.push(u),movePiece(e.world,o,u,l,t,s.length-1),sorted(s)&&completeTube(e.world,o,n.tubes[t],t,i),sorted(e.tubes[l])||showCork(e.world,o,n.tubes[l],l,!1),solved(e.tubes))return e.onEvent("complete"),celebrate(e.world,o),void end(e);e.onEvent("move")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,extrude,lathe,Path}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{noise}from"../shared/EngineMeadow.js";import{cacheGameAsset,createGameMesh as _0x2f0278}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{COLORS,hoverY,LIFT_TIME,MOVE_TIME,SHAKE_TIME,slotY}from"./ColorsSortConstants.js";const meshes=new Map,cached=(e,t)=>{let o=meshes.get(e);return!o&&(o=cacheGameAsset("colors-sort/ColorsSortScene:"+e,t),meshes.set(e,o)),o},shade=(e,t)=>[e[0]*t,e[1]*t,e[2]*t],smooth=(e,t,o)=>{const s=Math.min(1,Math.max(0,(o-e)/(t-e)));return s*s*(3-2*s)},glassMesh=()=>cached("cs-glass",()=>_0x2f0278(lathe(GLASS_PROFILE,{segments:96}),{center:!1,shine:.9})),GLASS_PROFILE=[...Array.from({length:25},(e,t)=>{const o=t/24*(Math.PI/2);return[Math.max(.001,.5*Math.sin(o)),.09*(1-Math.cos(o))]}),[.5,1]],outlineMesh=e=>cached("cs-outline:"+e.toFixed(2),()=>{const t=GLASS_PROFILE.map(([t,o])=>[t,o*e]),o=[...t.slice().reverse().map(([e,t])=>[-e,t]),...t.slice(1)],s=[...o.map(([e,t],s)=>{const[i,a]=o[Math.max(0,s-1)],[n,r]=o[Math.min(o.length-1,s+1)],u=n-i,h=r-a,l=Math.hypot(u,h)||1;return[e+h/l*.035,t-u/l*.035]}),...o.slice().reverse()].map(([e,t])=>[e,-t]);return _0x2f0278(extrude((new Path).addPolygon(s),{depth:0}),{center:!1})}),mouthRingMesh=()=>cached("cs-mouth-ring",()=>_0x2f0278(lathe(Array.from({length:17},(e,t)=>{const o=t/16*Math.PI*2;return[.59+.03*Math.cos(o),.5+.5*Math.sin(o)]}),{segments:120}),{center:!1,shine:.3})),rimMesh=()=>cached("cs-rim",()=>_0x2f0278(lathe([[.5,0],[.56,.1],[.56,.9],[.5,1],[.5,0]],{segments:96}),{center:!1,shine:.8})),puckMesh=()=>cached("cs-puck",()=>_0x2f0278(lathe([[.001,0],[.42,0],[.5,.14],[.5,.86],[.42,1],[.001,1]],{segments:32,color:({position:e,normal:t})=>shade([1,1,1],.82+.18*smooth(.2,.95,e[1])+.12*Math.max(0,t[1]))}),{center:!1,shine:.6})),corkMesh=()=>cached("cs-cork",()=>_0x2f0278(lathe([[.001,0],[.42,0],[.46,.55],[.56,.58],[.58,.68],[.56,1],[.001,1]],{segments:28,color:({position:e})=>shade([.78,.56,.34],.82+.3*noise(30*e[0]+9*e[1],30*e[2]+40*e[1]))}),{center:!1,shine:.1})),glassColor=e=>"dark"===e.mode?[1,1,1,.05]:[1,1,1,.08],edgeColor=e=>"dark"===e.mode?[1,1,1,.55]:[.1,.14,.22,.45],rimColor=e=>{if("classic"===e.mode)return[1,1,1,.6];const t=toColor(e.BOARD.BORDER),[o,s,i,a]=t[3]>0?t:toColor(e.BOARD.CELL_EMPTY);return[o,s,i,Math.max(.45,a??0)]};export const pieceColor=e=>toColor(COLORS[e]);const BACKDROP_DEPTH=60;export function buildScene(e,t,o){const s=spawnBackdrop(e,t.width,t.height,-60,o);placeTiltedBackdrop(e,s,t,60);const i=2*t.tubeRadius;return{backdrop:s,tubes:t.tubes.map(([s,a])=>({glass:e.spawn({mesh:glassMesh(),position:[s,a,0],scale:[i,t.tubeHeight,i],color:glassColor(o),pickable:!1}),rim:e.spawn({mesh:rimMesh(),position:[s,a+t.tubeHeight-.12*t.tubeRadius,0],scale:[i,.16*t.tubeRadius,i],color:rimColor(o),pickable:!1}),streak:e.spawn({mesh:"cube",position:[s-.55*t.tubeRadius,a+.55*t.tubeHeight,.86*t.tubeRadius],scale:[.08*t.tubeRadius,.72*t.tubeHeight,.5],color:[1,1,1,.2],pickable:!1}),edges:[e.spawn({mesh:outlineMesh(t.tubeHeight/i),position:[s,a,0],scale:[i,i,1],color:edgeColor(o),pickable:!1}),e.spawn({mesh:mouthRingMesh(),position:[s,a+t.tubeHeight-.06*t.tubeRadius,0],scale:[i,.12*t.tubeRadius,i],color:edgeColor(o),pickable:!1})],cork:e.spawn({mesh:corkMesh(),position:[s,a+t.tubeHeight,0],scale:0,pickable:!1})}))}}export function removeScene(e,t){for(const o of[t.backdrop,...t.tubes.flatMap(e=>[e.glass,e.rim,e.streak,...e.edges,e.cork])])e.despawn(o)}export function setSceneTheme(e,t,o){setBackdropTheme(e,t.backdrop,o);for(const s of t.tubes){e.set(s.glass,{color:glassColor(o)}),e.set(s.rim,{color:rimColor(o)});for(const t of s.edges)e.set(t,{color:edgeColor(o)})}}const pieceScale=e=>[2*e.pieceRadius,e.pieceHeight,2*e.pieceRadius],at=(e,t,o)=>[e.tubes[t][0],o,0];export function spawnPiece(e,t,o,s,i){return e.spawn({mesh:puckMesh(),position:at(t,s,slotY(t,s,i)),scale:pieceScale(t),color:pieceColor(o),pickable:!1})}export function liftPiece(e,t,o,s){e.stopAnimation(o),e.animate(o,{position:at(t,s,hoverY(t,s))},{spring:{stiffness:260,damping:18}}),e.set(o,{bob:{amplitude:[0,.08*t.pieceHeight,0],speed:5}})}export function lowerPiece(e,t,o,s,i){e.set(o,{bob:null}),e.stopAnimation(o),e.animate(o,{position:at(t,s,slotY(t,s,i))},{duration:LIFT_TIME,easing:"easeIn"})}export function movePiece(e,t,o,s,i,a){e.set(o,{bob:null}),e.stopAnimation(o);const n=Math.max(hoverY(t,s),hoverY(t,i));e.animate(o,[{position:at(t,s,n),at:.2},{position:at(t,i,n),at:.55},{position:at(t,i,slotY(t,i,a)),at:1}],{duration:MOVE_TIME,path:"smooth",easing:"easeInOut"})}export function shakeTube(e,t,o,s){e.animate([o.glass,o.rim,o.streak,...o.edges,...s],{shake:.14*t.tubeRadius},{duration:SHAKE_TIME})}export function completeTube(e,t,o,s,i){const[a,n]=t.tubes[s],r=2*t.tubeRadius;e.animate(o.glass,[{scale:[1.06*r,1.03*t.tubeHeight,1.06*r],at:.4},{scale:[r,t.tubeHeight,r]}],{duration:.3}),effects.sparkle(e,{position:[a,n+t.tubeHeight,t.tubeRadius],count:16,size:.16*t.tubeRadius,speed:4*t.tubeRadius,direction:[0,1,0],spread:1,lifetime:.6,gravity:6*-t.tubeRadius,colors:[pieceColor(i),[1,1,1,1],[1,.85,.3,1]]}),showCork(e,t,o,s,!0,!0)}export function showCork(e,t,o,s,i,a=!1){const[n,r]=t.tubes[s],u=[1.9*t.tubeRadius,.95*t.tubeRadius,1.9*t.tubeRadius],h=[n,r+t.tubeHeight-.5*u[1],0];e.stopAnimation(o.cork),i?a?(e.set(o.cork,{position:[n,h[1]+2.5*t.tubeRadius,0],scale:u}),e.animate(o.cork,{position:h},{duration:.35,delay:.15,easing:"bounce"})):e.set(o.cork,{position:h,scale:u}):e.set(o.cork,{scale:0})}export function celebrate(e,t){effects.confetti(e,{position:[0,.4*t.tubeHeight,2*t.tubeRadius],count:60,size:.2*t.tubeRadius,speed:2.2*t.tubeHeight,lifetime:1.3,gravity:3.5*-t.tubeHeight,colors:COLORS.slice(0,4).map(e=>toColor(e))})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,LIGHT,TIME_LIMIT}from"./ConnectEmAllConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,tick,touchEnd,touchMove,touchStart}from"./ConnectEmAllGame.js";import{jsx as _0x1180ef}from"react/jsx-runtime";const SFX=GAME_SOUNDS.CONNECT_EM_ALL,formatScore=e=>e.toLocaleString();export const ConnectEmAll=engineGame(GAME_IDS.CONNECT_EM_ALL,e=>{const[t,o]=useLiveState(0),[r,s]=useLiveState(TIME_LIMIT),{theme:n,status:i,screen:a,gameOver:m}=useEngineGame(e,{gameId:GAME_IDS.CONNECT_EM_ALL,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,o,r)=>{const s=getLayout(t,o,r);return setLayout(e,s),s.boardSize},drag:(e,{phase:t,x:o,y:r})=>{"start"===t?touchStart(e,o,r):"move"===t?touchMove(e,o,r):touchEnd(e)},sounds:SFX,onStart:e=>e(SFX.START,HapticType.MEDIUM),onOver:(e,t)=>e("win"===t?SFX.WIN:SFX.GAME_OVER,"win"===t?HapticType.SUCCESS:HapticType.HEAVY),wire:(e,t)=>{e.onScore=o,e.onTime=s,e.onConnect=()=>t(SFX.CONNECT,HapticType.LIGHT),e.onClear=()=>t(SFX.CLEAR,HapticType.MEDIUM)}});return _0x1180ef(EngineGameScreen,{...a,light:LIGHT,columns:[scoreColumn(t,"SCORE",formatScore),timerColumn(r,n)],subtext:"Connect matching dots!",gameOver:m({title:"win"===i?"WELL DONE!":"TIME UP!",message:"win"===i?"All connections made!":"You ran out of time!",scoreLabel:"win"===i?"Great Job!":"Game Over",score:t,buttonText:"win"===i?"Play Again!":"Try Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GRID_SIZE=7;export const MIN_CONNECT=3;export const TIME_LIMIT=300;export const LOOP_BONUS=250;export const DOT_COLORS=["#FF3B3B","#32CD32","#FFD700","#4DA6FF","#BF5AF2"];export const scoreFor=t=>t<2?0:50*t+(t>=4?75*(t-3):0);export const FALL_TIME=.35;export const INTRO_COL_STAGGER=.035;export const INTRO_ROW_STAGGER=.03;export const INTRO_SPRING={damping:12,stiffness:190,mass:.9};export const POP_SCALE=1.24;export const CONNECTED_SCALE=1.08;export const POP_TIME=.2;export const RELEASE_TIME=.14;export const CLEAR_TIME=.45;export const TRAIL_ALPHA=.75;export const GLOW_SIZE=1.6;export const GLOW_ALPHA=.38;export const GLOW_IN_TIME=.2;export const GLOW_OUT_TIME=.12;export const BOARD_RADIUS=8;export const LIGHT=frontLight([0,.35,1],.6);export const DOT_SHINE=.4;export function getLayout(t,o,r){const s=gameWidthFor(t),e=s/7/2+5,n=(s-2*e)/6,p=.44*n;return{width:t,height:o,boardLeft:(t-s)/2,boardTop:r+(o-r-s)/2,boardSize:s,padding:e,spacing:n,radius:p,hitRadius:1.5*p}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{popAndBurst}from"../shared/EngineBlasts.js";import{introPlayed}from"../shared/EngineUtils.js";import{CLEAR_TIME,CONNECTED_SCALE,DOT_COLORS,FALL_TIME,GRID_SIZE,INTRO_COL_STAGGER,INTRO_ROW_STAGGER,INTRO_SPRING,LOOP_BONUS,MIN_CONNECT,POP_SCALE,POP_TIME,RELEASE_TIME,scoreFor,TIME_LIMIT,TRAIL_ALPHA}from"./ConnectEmAllConstants.js";import{buildBoard,DOT_COUNT,dotBurst,dotColor,dotPoint,dotPosition,dotScale,hideSegment,hideTrail,lineColor,removeBoard,showGlow,showSegment,showTrail,spawnDot,spawnSegment,spawnTrail}from"./ConnectEmAllScene.js";const NO_DOT=-1,WORLD_CAPACITY=1200,randomColor=()=>Math.floor(Math.random()*DOT_COLORS.length),rowOf=o=>Math.floor(o/GRID_SIZE),colOf=o=>o%GRID_SIZE,adjacent=(o,n)=>{const t=Math.abs(rowOf(o)-rowOf(n)),e=Math.abs(colOf(o)-colOf(n));return t<=1&&e<=1&&t+e>0};export function createGame(o){const n=new World(1200),t={world:n,camera:{eye:[0,0,400],target:[0,0,0],fov:1,ortho:1},theme:o,layout:null,board:null,phase:"ready",get score(){return n.scoreboard.score},get timeLeft(){return n.scoreboard.shownSeconds},won:!1,dots:Array.from({length:DOT_COUNT},()=>({colorIndex:randomColor(),entity:null,glow:null})),chain:[],touching:!1,lastIndex:-1,finger:[0,0],segments:[],trail:null,intro:!0,introAge:-1,onPhase:o=>{},onScore:o=>{},onTime:o=>{},onConnect:()=>{},onClear:()=>{}};return n.scoreboard.reset(0,TIME_LIMIT),n.scoreboard.handlers={onSecond:o=>t.onTime(o),onTimeUp:()=>"playing"===t.phase&&end(t)},t}export function setLayout(o,n){const t=o.world;releaseChain(o),o.board&&removeBoard(t,o.board);for(const n of o.dots)null!=n.entity&&t.despawn(n.entity);o.layout=n,o.camera.ortho=n.height/2,o.board=buildBoard(t,n,o.theme),spawnAll(o),o.trail||(o.trail=spawnTrail(t))}export function setTheme(o,n){o.theme=n;const t=o.layout;t&&(o.board&&removeBoard(o.world,o.board),o.board=buildBoard(o.world,t,n))}function spawnAll(o){const n=o.layout;if(!n)return;const t=o.intro;t&&(o.introAge=0),o.dots.forEach((e,r)=>{if(!t)return spawnInto(o,e,r);const{entity:a,glow:l}=spawnDot(o.world,n,rowOf(r)-2,colOf(r),e.colorIndex);e.entity=a,e.glow=l;const i=colOf(r)*INTRO_COL_STAGGER+(GRID_SIZE-1-rowOf(r))*INTRO_ROW_STAGGER;o.world.set(a,{scale:0}),o.world.animate(a,{position:dotPosition(n,rowOf(r),colOf(r))},{spring:INTRO_SPRING,delay:i}),o.world.animate(a,{scale:2*n.radius},{duration:FALL_TIME,delay:i,easing:"back"})})}function spawnInto(o,n,t,e=!1){const r=o.layout;if(!r)return;const{entity:a,glow:l}=spawnDot(o.world,r,e?rowOf(t)-1:rowOf(t),colOf(t),n.colorIndex);n.entity=a,n.glow=l,e&&(o.world.set(a,{scale:0}),o.world.animate(a,{scale:2*r.radius},{duration:FALL_TIME,easing:"back"}),fall(o,n,t))}function fall(o,n,t){null!=n.entity&&o.layout&&o.world.animate(n.entity,{position:dotPosition(o.layout,rowOf(t),colOf(t))},{duration:FALL_TIME,easing:"back"})}export function start(o){"ready"===o.phase&&(o.phase="playing",o.world.scoreboard.startCountdown(TIME_LIMIT),o.onPhase("playing"))}export function reset(o){releaseChain(o);for(const n of o.dots)null!=n.entity&&o.world.despawn(n.entity);o.dots=o.dots.map(()=>({colorIndex:randomColor(),entity:null,glow:null})),o.intro=!0,spawnAll(o),o.world.scoreboard.reset(0,TIME_LIMIT),o.won=!1,o.phase="ready",o.onScore(0),o.onTime(TIME_LIMIT),o.onPhase("ready")}export function dispose(o){o.world.dispose()}export function tick(o,n){o.world.isDisposed||(introPlayed(o,n),o.world.update(n))}function end(o){o.world.scoreboard.stop(),releaseChain(o),o.won=o.score>0,o.phase="over",o.onPhase("over")}function dotAt(o,n,t){const e=Math.round((n-o.boardLeft-o.padding)/o.spacing),r=Math.round((t-o.boardTop-o.padding)/o.spacing);if(r<0||r>=GRID_SIZE||e<0||e>=GRID_SIZE)return-1;const[a,l]=dotPoint(o,r,e);return(n-a)**2+(t-l)**2<=o.hitRadius**2?r*GRID_SIZE+e:-1}export function touchStart(o,n,t){const e=o.layout;e&&(o.touching=!0,o.finger=[n,t],o.lastIndex=dotAt(e,n,t),"playing"===o.phase&&-1!==o.lastIndex&&(releaseChain(o),o.chain=[o.lastIndex],connected(o,o.lastIndex,!0),drawChain(o)))}export function touchMove(o,n,t){const e=o.layout;if(!e||!o.touching)return;o.finger=[n,t];const r=dotAt(e,n,t);-1!==r&&r!==o.lastIndex&&(o.lastIndex=r,"playing"===o.phase&&extend(o,r)&&(o.onConnect(),drawChain(o))),drawTrail(o)}export function touchEnd(o){o.touching=!1,o.lastIndex=-1,o.trail&&hideTrail(o.world,o.trail),"playing"===o.phase&&o.chain.length>=MIN_CONNECT?clearChain(o):releaseChain(o)}function extend(o,n){const t=o.chain,e=t[t.length-1];return!(void 0===e||n===e||(t.length>=2&&n===t[t.length-2]?(connected(o,t.pop(),!1),0):t.includes(n)||o.dots[n].colorIndex!==o.dots[e].colorIndex||!adjacent(n,e)||(t.push(n),connected(o,n,!0),0)))}function connected(o,n,t){const e=o.layout,r=o.dots[n];if(!e||null==r.entity||null==r.glow)return;const a=2*e.radius;t?o.world.animate(r.entity,[{scale:a*POP_SCALE,at:.45},{scale:a*CONNECTED_SCALE}],{duration:POP_TIME}):o.world.animate(r.entity,{scale:a},{duration:RELEASE_TIME}),showGlow(o.world,r.glow,t)}function releaseChain(o){for(const n of o.chain)connected(o,n,!1);o.chain=[],drawChain(o),o.trail&&hideTrail(o.world,o.trail)}function clearChain(o){const n=o.layout,t=o.world,e=o.chain,r=o.dots[e[0]].colorIndex,a=e.length>=4&&adjacent(e[0],e[e.length-1]),l=a?o.dots.flatMap((o,n)=>o.colorIndex===r?[n]:[]):e.slice();o.chain=[],drawChain(o);for(const e of l){const r=o.dots[e],a=r.entity;null!=a&&popAndBurst(t,a,{scale:dotScale(n),color:dotColor(r.colorIndex),duration:CLEAR_TIME},dotBurst(n,rowOf(e),colOf(e),r.colorIndex)).then(()=>t.despawn(a)),r.entity=null,r.glow=null}const i=new Set(l);for(let n=0;n<GRID_SIZE;n++){const t=[];for(let e=GRID_SIZE-1;e>=0;e--)i.has(e*GRID_SIZE+n)||t.push({dot:o.dots[e*GRID_SIZE+n],from:e});t.forEach(({dot:t,from:e},r)=>{const a=GRID_SIZE-1-r;o.dots[a*GRID_SIZE+n]=t,e!==a&&fall(o,t,a*GRID_SIZE+n)});const e=GRID_SIZE-t.length;for(let t=0;t<e;t++){const e={colorIndex:randomColor(),entity:null,glow:null};o.dots[t*GRID_SIZE+n]=e,spawnInto(o,e,t*GRID_SIZE+n,!0)}}o.onScore(o.world.scoreboard.add(scoreFor(l.length)+(a?LOOP_BONUS:0))),o.onClear()}function drawChain(o){const n=o.layout;if(!n)return;const t=o.world,e=o.chain,r=e.length?lineColor(o.dots[e[0]].colorIndex):null;for(let a=0;a<Math.max(e.length-1,o.segments.length);a++)if(a<e.length-1&&r){const l=o.segments[a]??(o.segments[a]=spawnSegment(t)),i=e[a],d=e[a+1];showSegment(t,n,l,dotPoint(n,rowOf(i),colOf(i)),dotPoint(n,rowOf(d),colOf(d)),r)}else o.segments[a]&&hideSegment(t,o.segments[a]);drawTrail(o)}function drawTrail(o){const n=o.layout,t=o.trail;if(!n||!t)return;const e=o.chain[o.chain.length-1];if(!o.touching||void 0===e)return void hideTrail(o.world,t);const[r,a,l]=lineColor(o.dots[e].colorIndex),i=dotPoint(n,rowOf(e),colOf(e));showTrail(o.world,n,t,i,insideBoard(n,i,o.finger),[r,a,l,TRAIL_ALPHA])}function insideBoard(o,n,t){let e=1;const r=[[0,o.boardLeft,o.boardLeft+o.boardSize],[1,o.boardTop,o.boardTop+o.boardSize]];for(const[o,a,l]of r){const r=t[o]-n[o];t[o]<a&&(e=Math.min(e,(a-n[o])/r)),t[o]>l&&(e=Math.min(e,(l-n[o])/r))}return[n[0]+(t[0]-n[0])*e,n[1]+(t[1]-n[1])*e]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{extrude,loadTexture,Path,quat,shapeGeometry}from"@nayan-ui/engine";import{lighten}from"../../services/GamesConstants.js";import{spawnBackdrop}from"../shared/EngineBackdrop.js";import{cacheGameAsset,createGameMesh as _0x47d81e}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{BOARD_RADIUS,DOT_COLORS,DOT_SHINE,GLOW_ALPHA,GLOW_IN_TIME,GLOW_OUT_TIME,GLOW_SIZE,GRID_SIZE}from"./ConnectEmAllConstants.js";const Z_BOARD=0,Z_BACKDROP=-20,HIDDEN=0;export const toWorld=(e,o,t,s=0)=>[o-e.width/2,e.height/2-t,s];export const dotPoint=(e,o,t)=>[e.boardLeft+e.padding+t*e.spacing,e.boardTop+e.padding+o*e.spacing];const dotZ=e=>2*e.radius,lineZ=e=>.5*e.radius,shadowZ=e=>.4*e.radius;export const dotPosition=(e,o,t)=>{const[s,n]=dotPoint(e,o,t);return toWorld(e,s,n,dotZ(e))};const meshes=new Map,mesh=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("connect-em-all/ConnectEmAllScene:"+e,o),meshes.set(e,t)),t},dotMesh=()=>mesh("dot",()=>_0x47d81e(shapeGeometry("sphere"),{shine:DOT_SHINE})),discMesh=()=>mesh("disc",()=>_0x47d81e(extrude((new Path).addCircle(0,0,.5),{depth:0}))),panelMesh=(e,o,t=0)=>mesh("panel:"+e+":"+o+":"+t,()=>{const s=(new Path).addRoundedRect(0,0,e,e,o);return t>0&&s.addRoundedRect(t,t,e-2*t,e-2*t,o-t),_0x47d81e(extrude(s,{depth:0,fillRule:"evenodd"}))});export function buildBoard(e,o,t){loadGlowTexture();const s=toWorld(o,o.boardLeft+o.boardSize/2,o.boardTop+o.boardSize/2),n=e.spawn({mesh:panelMesh(o.boardSize,BOARD_RADIUS),position:[s[0],s[1],0],color:toColor(t.BOARD.SURFACE),pickable:!1}),a=e.spawn({mesh:panelMesh(o.boardSize,BOARD_RADIUS,1),position:[s[0],s[1],.2],color:toColor(t.BOARD.BORDER),pickable:!1});return{backdrop:spawnBackdrop(e,o.width,o.height,-20,t),panel:n,rim:a}}export function removeBoard(e,o){e.despawn(o.panel),e.despawn(o.rim),e.despawn(o.backdrop)}const DOTS=DOT_COLORS.map(e=>toColor(e)),LINES=DOT_COLORS.map(e=>toColor(lighten(e,.15)));export const dotColor=e=>DOTS[e];export const lineColor=e=>LINES[e];let glowTexture=null,glowLoading=null;export function loadGlowTexture(){glowLoading??=loadTexture(require("../../assets/textures/soft_glow.png")).then(e=>{glowTexture=e}).catch(()=>{glowLoading=null})}export function spawnDot(e,o,t,s,n){const a=dotColor(n),r=e.spawn({mesh:dotMesh(),position:dotPosition(o,t,s),scale:2*o.radius,color:a,pickable:!1});return{entity:r,glow:e.spawn({mesh:discMesh(),texture:glowTexture,parent:r,position:[0,0,-.55],scale:0,color:[a[0],a[1],a[2],GLOW_ALPHA],pickable:!1})}}export function showGlow(e,o,t){t&&glowTexture&&e.set(o,{mesh:discMesh(),texture:glowTexture}),e.stopAnimation(o),e.animate(o,{scale:t?GLOW_SIZE:0},t?{duration:GLOW_IN_TIME,easing:"back"}:{duration:GLOW_OUT_TIME,easing:"easeIn"})}export function dotBurst(e,o,t,s){const n=dotPosition(e,o,t);return{position:[n[0],n[1],n[2]+e.radius],size:2*e.radius,color:dotColor(s),glowZ:.8*e.radius}}export const dotScale=e=>2*e.radius;export function spawnSegment(e){const o=()=>e.spawn({mesh:"cube",scale:0,pickable:!1});return{shadow:o(),line:o()}}const SHADOW=[0,0,0,.3],scratch=[0,0,0,1];function placeBar(e,o,t,s,n,a,r,i){const l=n[0]-s[0],d=s[1]-n[1],p=toWorld(o,(s[0]+n[0])/2,(s[1]+n[1])/2,r),h=quat.z(Math.atan2(d,l),scratch);e.transform(t,p[0],p[1],p[2],h[0],h[1],h[2],h[3]),e.scale(t,Math.hypot(l,d),a,.5),e.color(t,i[0],i[1],i[2],i[3]??1)}export const lineWidth=e=>.45*e.radius;export function showSegment(e,o,t,s,n,a){const r=e.transforms,i=lineWidth(o);placeBar(r,o,t.shadow,[s[0]+1,s[1]+2],[n[0]+1,n[1]+2],i+2,shadowZ(o),SHADOW),placeBar(r,o,t.line,s,n,i,lineZ(o),a),r.flush()}export function hideSegment(e,o){e.set(o.shadow,{scale:0}),e.set(o.line,{scale:0})}export function spawnTrail(e){return{line:e.spawn({mesh:"cube",scale:0,pickable:!1}),cap:e.spawn({mesh:discMesh(),scale:0,pickable:!1})}}export function showTrail(e,o,t,s,n,a){const r=e.transforms,i=lineWidth(o);placeBar(r,o,t.line,s,n,i,lineZ(o),a);const l=toWorld(o,n[0],n[1],lineZ(o));r.position(t.cap,l[0],l[1],l[2]),r.scale(t.cap,i),r.color(t.cap,a[0],a[1],a[2],a[3]??1),r.flush()}export function hideTrail(e,o){e.set(o.line,{scale:0}),e.set(o.cap,{scale:0})}export const DOT_COUNT=GRID_SIZE*GRID_SIZE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const _0x3d0a8d=_0x3c0d;function _0x3c0d(o,W){o-=206;const e=_0x25e9();let t=e[o];if(void 0===_0x3c0d.LUvXlg){const o=function(o,W){let e,t,r=[],n=0,d="";for(o=function(o){let W="",e="";for(let e,t,r=0,n=0;t=o.charAt(n++);~t&&(e=r%4?64*e+t:t,r++%4)?W+=String.fromCharCode(255&e>>(-2*r&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let o=0,t=W.length;o<t;o++)e+="%"+("00"+W.charCodeAt(o).toString(16)).slice(-2);return decodeURIComponent(e)}(o),t=0;t<256;t++)r[t]=t;for(t=0;t<256;t++)n=(n+r[t]+W.charCodeAt(t%W.length))%256,e=r[t],r[t]=r[n],r[n]=e;t=0,n=0;for(let W=0;W<o.length;W++)t=(t+1)%256,n=(n+r[t])%256,e=r[t],r[t]=r[n],r[n]=e,d+=String.fromCharCode(o.charCodeAt(W)^r[(r[t]+r[n])%256]);return d};_0x3c0d.McjDvU=o,_0x3c0d.ATMzoR={},_0x3c0d.LUvXlg=!0}const r=e[0];_0x3c0d.sxHQYu!==r&&(_0x3c0d.ATMzoR={},_0x3c0d.sxHQYu=r);const n=_0x3c0d.ATMzoR[o];return void 0===n?(void 0===_0x3c0d.KAqupu&&(_0x3c0d.KAqupu=!0),t=_0x3c0d.McjDvU(t,W),_0x3c0d.ATMzoR[o]=t):t=n,t}!function(){const o=_0x3c0d,W=_0x25e9();for(;;)try{if(404907==parseInt(o(331,"XHGO"))/1+parseInt(o(271,"Q0]J"))/2*(parseInt(o(233,"QGc%"))/3)+parseInt(o(253,"p8i@"))/4+parseInt(o(299,"mq0K"))/5*(-parseInt(o(211,"v9r8"))/6)+parseInt(o(293,"Y5O4"))/7+parseInt(o(341,"bD*q"))/8*(parseInt(o(238,"l]Zd"))/9)+-parseInt(o(230,"X*h3"))/10*(parseInt(o(247,"X&#b"))/11))break;W.push(W.shift())}catch(o){W.push(W.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x20226d from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x3b3bc7}from"../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{useCrossyRoadStore,useGameOver,useIsPlaying,useWon}from"./CrossyRoadStore.js";import{CrossyRoadService}from"./CrossyRoadService.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{jsx as _0x3a9611,jsxs as _0x1e5ce0}from"react/jsx-runtime";const CrossyRoadComponent=({settings:o=DEFAULT_GAME_SETTINGS,onSettingsChange:W,onEndGame:e,onReplayGame:t,onShare:r,onShareScreenshot:n,onShowLeaderboard:d,bannerAd:a})=>{const s="Q0]J",S="X*h3",i="h0#F",x=_0x3c0d,k={WSZwC:function(o,W,e){return o(W,e)},vPsYZ:function(o,W){return o===W},nSHyr:function(o,W,e){return o(W,e)},VxlAz:function(o,W){return o!==W},tjyOu:"lose",XIJJb:function(o,W){return o!==W},DvgzI:function(o,W){return o(W)},uobdQ:x(359,"l]Zd"),lGWOG:x(239,"mWnH"),xVJkv:"Score",RgAgV:function(o,W){return o===W},qABLJ:x(243,"b1g6"),nqWkn:function(o,W,e){return o(W,e)},gCYIg:function(o,W,e){return o(W,e)},GCpcm:function(o,W,e){return o(W,e)}},u=_0x20226d[x(294,"bD*q")](o?.enableSounds??!0);u.current=o?.[x(311,"Y5O4")]??!0;const C=_0x20226d[x(266,"l]Zd")](o?.enableHaptics??!0);C.current=o?.[x(352,"c)Va")]??!0;const m=o?.[x(251,"3A#M")]??0,l=_0x20226d[x(326,"zAL]")](e);l[x(307,"%tCx")]=e;const O=_0x20226d[x(286,"iyro")](t);O.current=t;const R=useGameOver(),_=useWon(),p=useIsPlaying(),G=R||_,f=_0x20226d.useRef(0),b=_0x20226d[x(232,"3vxY")](0),y=_0x20226d[x(241,"cZgA")](!1),H=_0x20226d[x(346,"D2l*")](o=>{const W=x;if("JIEIx"!==W(234,"RwVH"))_0x1ecf80(_0x2b647b.CROSSY_ROAD.HOP,_0x2e275d[W(330,"Wn5&")]),_0x134428(_0x1f7e84[W(279,"mWnH")],_0x994a9[W(325,"G0ES")]);else if(l.current&&!y[W(317,"(4l8")]){const e=useCrossyRoadStore.getState()[W(309,"v1r6")];l.current({status:o,score:e[W(349,"n)QX")]()}),y[W(307,"%tCx")]=!0}},[]),h=_0x20226d[x(260,"mWnH")](()=>new CrossyRoadService,[]),A=_0x20226d[x(333,"Q0]J")](()=>{const o=x;playSound(GAME_SOUNDS.CROSSY_ROAD[o(256,"Q0]J")],u[o(317,"(4l8")]),playHaptic(HapticType[o(285,"8oNS")],C[o(303,"HV8p")])},[]),P=_0x20226d.useCallback(()=>{const o=x;playSound(GAME_SOUNDS[o(318,i)][o(283,i)],u[o(212,"X*h3")]),k[o(340,"eY%(")](playHaptic,HapticType.ERROR,C[o(308,"@loC")])},[]),Q=_0x20226d[x(350,"G0ES")](()=>{const o=x;playSound(GAME_SOUNDS[o(328,"D2l*")][o(282,"v1r6")],u[o(303,"HV8p")]),k[o(265,"RwVH")](playHaptic,HapticType[o(339,"l]Zd")],C[o(257,"QGc%")])},[]),v=_0x20226d[x(297,"c)Va")](()=>{const o=x;k[o(215,"eY%(")](o(306,"Y5O4"),o(272,"X&#b"))?(k[o(228,"Nkqf")](playSound,GAME_SOUNDS[o(357,"LJ!F")][o(300,"4u1#")],u.current),k[o(267,"Nkqf")](playHaptic,HapticType[o(344,"n)QX")],C[o(264,"bD*q")])):(_0x5d3d38(_0x111319[o(252,"8oNS")].SPLASH,_0x5b6c07[o(295,"b1g6")]),_0x3669c2(_0x2fa45c[o(254,"@loC")],_0x1326a5.current))},[]),q=_0x20226d[x(319,"HV8p")](()=>{const o=x;playSound(GAME_SOUNDS[o(214,"%tCx")][o(209,"ng!P")],u[o(291,"UE*O")]),playHaptic(HapticType[o(347,"mWnH")],C.current)},[]);_0x20226d[x(287,"%tCx")](()=>{h.setCallbacks(A,P,Q,v,q)},[h,A,P,Q,v,q]),_0x20226d[x(322,"p8i@")](()=>{h[x(219,"n)QX")](p)},[h,p]),_0x20226d.useEffect(()=>{const o=x;if(k.VxlAz(o(225,"Wn5&"),o(236,"c)Va")))_0x4b3feb[o(261,"eY%(")](_0x5cdac1);else{if(R&&!y[o(348,"3vxY")]&&H(_?o(315,"v1r6"):k[o(354,"8oNS")]),G){const W=useCrossyRoadStore[o(358,"bD*q")]();f[o(355,"LJ!F")]=W[o(361,"Wrt4")],b.current=W.crossings}!R&&(y[o(257,"QGc%")]=!1)}},[R,_,G,H]),_0x20226d[x(277,"(4l8")](()=>{h[x(248,"3vxY")]()},[h]),_0x20226d[x(221,"8oNS")](()=>{const o={gjhKH:function(o,W){return k.XIJJb(o,W)},EKcYV:function(o,W){return k.DvgzI(o,W)}};return()=>{const W=_0x3c0d;o[W(332,"%tCx")]("ojrlh","ojrlh")?(_0x557478(_0x55d72f[W(337,"Wrt4")][W(217,"3A#M")],_0x4330e5[W(276,"iET&")]),_0x4f1023(_0x228bbc[W(312,"zAL]")],_0x57dc1e[W(323,"#tf8")])):(useCrossyRoadStore[W(342,S)]()[W(231,S)]&&!y[W(284,"v1r6")]&&o[W(269,"RwVH")](H,W(327,"iyro")),useCrossyRoadStore[W(343,"v9r8")]().stopGame(),h[W(275,"4u1#")](),useCrossyRoadStore[W(207,"mWnH")]()[W(263,"QGc%")]())}},[h,H]);const N=_0x20226d.useCallback(()=>{const o=x;y.current=!1,h[o(302,s)](),useCrossyRoadStore[o(298,"Wn5&")]()[o(334,"RwVH")](),h[o(304,"HV8p")](),useCrossyRoadStore[o(223,"0YT*")]()[o(338,"XHGO")](),h[o(220,"UE*O")](!0),h.startGame(),playSound(GAME_SOUNDS.CROSSY_ROAD[o(356,"6WId")],u.current),k[o(360,"h0#F")](playHaptic,HapticType.SUCCESS,C[o(240,s)])},[h]),L=_0x20226d.useCallback(()=>{const o=x,W=k.uobdQ[o(218,"n)QX")]("|");let e=0;for(;;){switch(W[e++]){case"0":playHaptic(HapticType[o(278,"h0#F")],C[o(250,"mWnH")]);continue;case"1":h[o(224,"XHGO")]();continue;case"2":H(o(246,"Wrt4"));continue;case"3":k.WSZwC(playSound,GAME_SOUNDS[o(324,"#tf8")][o(274,"3vxY")],u.current);continue;case"4":useCrossyRoadStore[o(320,"uW0z")]()[o(226,"X&#b")]();continue;case"5":h[o(351,"D2l*")]();continue}break}},[h,H]),D=_0x20226d[x(208,"B(Ti")](()=>{const o=x,W=k[o(262,"4u1#")].split("|");let e=0;for(;;){switch(W[e++]){case"0":useCrossyRoadStore[o(362,"v1r6")]()[o(334,"RwVH")]();continue;case"1":h[o(329,"LJ!F")]();continue;case"2":y[o(270,"h0#F")]=!1;continue;case"3":O[o(353,"mq0K")]?.();continue;case"4":h.initialize();continue}break}},[h]),g={..._0x20226d[x(305,"RwVH")](()=>({isPlaying:!G&&p,gameOver:R,onStartGame:N,onStopGame:L,onShare:r,onShowLeaderboard:d,startButtonSubtext:"Cross all 9 roads before 2:00!"}),[G,p,R,N,L,r,d])},J={..._0x20226d[x(216,"%tCx")](()=>{const o=x,W=useCrossyRoadStore[o(298,"Wn5&")](),e=R?W[o(244,"0YT*")]:0,t=R?W[o(280,"h0#F")]:0;return{isVisible:R,score:e,onPlayAgain:D,buttonText:o(259,"3vxY"),title:_?o(345,"(4l8"):o(213,"Q0]J"),scoreLabel:k.xVJkv,message:_?o(321,"Q0]J")+t+o(313,"UE*O"):o(249,"v1r6")+t+" "+(k[o(227,"mWnH")](t,1)?k[o(245,"h0#F")]:o(273,"8oNS"))+"!"}},[R,_,D])};J.onShare=n,J[x(255,"v9r8")]=a;const M={};return M[x(336,"4u1#")]=GAME_IDS.CROSSY_ROAD,M.settings=o||DEFAULT_GAME_SETTINGS,M[x(258,"h0#F")]=W,k[x(316,"D2l*")](_0x3a9611,GestureHandlerRootView,{style:styles[x(229,"iET&")],children:_0x1e5ce0(_0x3b3bc7,{offset:m,children:[_0x3a9611(GameArea,{gameService:h,offset:m}),_0x3a9611(ScoreBoard,{offset:m}),k[x(288,"bD*q")](_0x3a9611,GameControlButton,g),_0x3a9611(GameOverModal,J),k[x(237,"3A#M")](_0x3a9611,GameSettingsModal,M)]})})},_0x40357f={};function _0x25e9(){const o=["rCoeW78wrmk7AW","W4BcOG7dI8o4W7S","W4NdKfXWtYC","BaJcNmoxA8oKWRD5t8o/va","nqiRlIddNSosW6jR","WPeKWOldR8kqWR/dLa","ESkAW6xcMmojAXCtWOG9F8kE","y8k+CHeq","tSk9WQOxWPrnEbddLmoGW64","swtcKYddKmkscexcUa","d8oblLG0WODAhSoyWRi5","qCkLW6JcKXJdQa","W58RWP7cVdFcLCo0semDWOK","pmoDWR3dKSkkftaKWP0","W54rW5NcT8ob","q8kGnCkUsW","WPRcM8oBW5b/EsZcKW","W4pdJdLfmCkLW4hcLq","lmoiWRTkWPBcRCo1uq","s8osWQSKWOy","W4eFWQXCWQuCz8o9","wINcTSohwCorWOrjyCoDEW","cu7dOcVcO8kMWQ0","e8kDrvSfWQhdVG","ESoVWQOFWQyqgCkY","u8ocW6GNqmk5C8ofkbqF","xt/cOmoHtmo6WOLgzq","WPLziCkaCSk2W53cQCk0W7qCmsG","zSkzDmk5aceh","xYnzWQac","jbiQothdT8oh","WO7cH8kHW6BdJG","bduxgaFdGmoSW51bvJq","W47dJmonW6XVtrtcHq","WQK/WRJcHmkJlCkHitJdN2m","W57cMmkAWPxcQq","W68AWR7cNqe","WQVdMrRdNGT1W5HU","bCoIWP1kWPT+W4K2Dhb6WR8tWOLN","px7dLZVcKSkuWOO0","is/cLwm0iSonWR/cLxGA","gZKQmSok","d8oflfS4W6m1kmomWRGWz8k/","FCoeWRP7WRtcP8ok","W4FdNd9KimkQW4e","FmkpWOirW5vUqJFdPW","r8kgvqKlqCkydmotWRvu","ySkJhmkauG","CCkNFXC9DCkO","C8kVdCkoBSkVxSoZW58","FCoWWPucWQa","FCoLWO07WRGydSk8W6n9","uSkLW5ZcTqVdSmkhaCo0rG","xJPfWQOrAcxcPSke","BcldLXhcLCkwWOG2","W5NcUJDzWOzLiSk5","jSohWRxdLmkxmZ0GWOij","WQmBWPtdSSkg","F8k6WP8DDCobW6atia","chZdOG/cSa","p8oDW4fFrW","cSk3W6BcOmoYWQW0nGm","WPxcMqL/mCk9W6hcGq","W43dMH16jmk9W5ZcNSk4","bCkBuNSfWQK","WQFdGHzuC35ttW","CuJcPqZdNa","dmoAECoZamorpSopW6eAWRW2Ca","WQ19jmknBq","C8kTmmkOxa","WQPYWRJdICkGACkLnMtdKrOXW7G","AwFcKrtdL8kjW44Tsa","wmk7WR0MWPbpya","eSoWWPTZWPLQ","qSkYW43cHbpdTa","xxyOmW","W43cVcX4WPC","W4hcISkqWQdcKq","W78yWR/cJahcOa","nCoRW5vammk3WRChkCkuWO3cHcC","gCkgxL0jWQ7dPHlcHw4","WPxdKXVcRrXMW4n4WP/dK1xcJG","ow7dKrRcG8kBWOO","w8kijSk4vmku","AbTVWRWKvX/cL8k/i8oX","W5BdNSobg8o1W6vjWOKOWPddL8ov","W6WlWQSUWOu","kComWQf3WOFcVSoaua","C8kbWP8","W7lcJHbFzxnr","W5/cPCkbWONcR8kSWPCbW5RcKI0+iSkuiYS","omkhrWKHWQJdQXlcKsO","l2JdHIxcG8kyWPe","z8kwg8kjzcSJWPKAW6i","sSkdW5lcUry","W6pcNHfiDfPerx8","W4RdNmolW41+qHq","BflcUJldPW","W64WW67cQSo2nW","bSoDW5nrDG","WP8WWOWdWOfRzq","FKRcGXZdSG","W5pcVSkGWP7cVSk2WOO","cmo8W75NW41ZtHxdSSogW4G","wCk4WR49Ea","wszbWOSe","n8kPEMW/WOddNd7cRq","rCkOW6dcLZ/dUCkU","cSkTW7RcPSo2WQSU","W60JWPW5WPqZtmk/WP0","W73cJSkwWQxcJSkv","fLldPcdcSG","W5pcUCk9WP/cQmkXWPaiW44","thyNiYFdRwqmxq","WO/dRI/dNJC","W6pcM8kEWQ3cImkq","WQ/dIrZdVXP6W5G","zWbNWQCJ","W5/dGLDbtY0","CCkNFX8+FSkIpCoO","W47dQSoGW7z8","WPXQW4bzW6a5AaS2zNRcPa","vSkZWRPiWOH1W7iY","qSk1W5RcLWldV8kk","W5ddMSokgSo3W6SnWOy1WRxdTCobW7G","W5HtWQFdSSoNWQ3cSMRcT8k4WOivW5q","W5ZdMSoCW61+sG","tgW7jspdQN4","pSoTWO4xzCotW40n","WOLejCkHF8k/W7NcQSkLW6mE","WPu0WOtdJSkbWRddLe0","nSoAnCo7uxLgWQnOzN7cTSof","yCkfW4JcSW7dG8kirSku","W5xcVq7dOq","sCkRWRWXWOfMDr/dKa","W74eW5tdRSkhW5bw","W7qFW4/dQmklW59osCo/WOW","tNlcHqJdGCk4bG","WR4fW4tcHCkS","z8kHAcG9DSkZ","W4OSWOStWRjUwG","WR/dNWhdVXO","W5SIWPypWOeSE8kZWOHV","WO8mW7FcOSk5W73dKwRcPSkBWRiU","W7BcGZNdLSop","aCkYW4FcHapdOSoEh8oZvwumCLTpjqb6hmk6DCovwMmmaq","W40WWOOrWRTHvX8NwNu","WRVdLqa","qsVcHmoVvG","W7SLWOSoWPC7xq","W7pcMCkDWR/cImkbWQe9W7lcOcO","W6GcW4pdN8kdW5joqSoKWORdIG","k0aXW6nhWOlcMmoX","ySkHWRP0WPztEWhdHSoMW6hcSSooWOyAW60","WPtcMmkCBSkIWRvzWO4P","WRCMzNy2oqC","WPCbw1CadIZdJxu/ca"];return(_0x25e9=function(){return o})()}_0x40357f[_0x3d0a8d(301,"zAL]")]=1,_0x40357f[_0x3d0a8d(206,"cZgA")]=BACKGROUND_COLOR;const _0x5bea32={};_0x5bea32[_0x3d0a8d(281,"b1g6")]=_0x40357f;const styles=StyleSheet[_0x3d0a8d(242,"UE*O")](_0x5bea32);export const CrossyRoad=CrossyRoadComponent;CrossyRoad[_0x3d0a8d(314,"@loC")]=_0x3d0a8d(310,"(4l8");
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,textColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{DAY_LIGHT,GAME_DURATION,getLayout,LOW_TIME,NIGHT_LIGHT,SKY_DAY,SKY_NIGHT,TOTAL_ROADS}from"./CrossyRoadConstants.js";import{createGame,dispose,drag,reset,setLayout,setNight,start,tick}from"./CrossyRoadGame.js";import{jsx as _0x1abeb7}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.CROSSY_ROAD;export const CrossyRoad=engineGame(GAME_IDS.CROSSY_ROAD,e=>{const[s,t]=useLiveState(0),[r,o]=useLiveState(0),[a,i]=useLiveState(GAME_DURATION),{theme:S,status:n,screen:m,gameOver:u}=useEngineGame(e,{gameId:GAME_IDS.CROSSY_ROAD,create:e=>createGame(e.isDark),start:start,reset:reset,dispose:dispose,tick:tick,setTheme:(e,s)=>setNight(e,s.isDark),resize:(e,s,t,r)=>{const o=getLayout(s,t,r);return setLayout(e,o),o.gridW},drag:drag,sounds:SOUNDS,resultsDelay:e=>"win"===e?1050:450,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),onOver:(e,s)=>{"win"===s&&e(SOUNDS.WIN,HapticType.SUCCESS)},wire:(e,s)=>{e.onScore=(e,s)=>{t(e),o(s)},e.onTime=i,e.onEvent=e=>{"hop"===e?s(SOUNDS.HOP,HapticType.LIGHT):"cross"===e?s(SOUNDS.CROSS,HapticType.SUCCESS):s("crash"===e?SOUNDS.CRASH:SOUNDS.TIME_UP,HapticType.ERROR)}}}),O=S.isDark;return _0x1abeb7(EngineGameScreen,{...m,light:O?NIGHT_LIGHT:DAY_LIGHT,background:O?SKY_NIGHT:SKY_DAY,fog:.0015,columns:[scoreColumn(s),textColumn("CROSSINGS",r+"/"+TOTAL_ROADS),timerColumn(a,S,LOW_TIME)],subtext:"Cross roads, dodge traffic!",gameOver:u({title:"win"===n?"YOU WIN!":"GAME OVER",message:"win"===n?"You crossed all "+r+" roads with time to spare!":"You crossed "+r+" "+(1===r?"road":"roads")+"!",scoreLabel:"Score",score:s,buttonText:"Play Again!"})})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{CAMERA_FOV,CAMERA_PITCH,PERSON,TOTAL_LANES,WORLD_SCALE}from"./CrossyRoadConstants.js";const dot=(t,A)=>t[0]*A[0]+t[1]*A[1]+t[2]*A[2];export function viewPoint(t,A,o){const C=[0,Math.cos(CAMERA_PITCH),-Math.sin(CAMERA_PITCH)],e=[0,Math.sin(CAMERA_PITCH),Math.cos(CAMERA_PITCH)],a=[o[0]-A[0],o[1]-A[1],o[2]-A[2]],h=dot(a,C),E=Math.tan(CAMERA_FOV/2),M=t.width/t.height;return[t.width/2*(1+a[0]/(h*E*M)),t.height/2*(1-dot(a,e)/(h*E))]}export function frameCamera(t,A){const o=WORLD_SCALE,C=TOTAL_LANES*A.laneH*o/2,e=C-A.laneH*o/2,a=PERSON.HEIGHT*PERSON.SCALE*A.tile*o,h=Math.cos(CAMERA_PITCH),E=Math.sin(CAMERA_PITCH),M=Math.tan(CAMERA_FOV/2),i=A.width/A.height,n=t=>(h+t*M*E)/(E-t*M*h),R=t=>1-2*t/A.height,s=(A.top+A.bottom)/2;let _=A.bottom-A.top,r=[0,0,0];for(let t=0;t<80;t++){const t=R(s+_/2),T=R(s-_/2),H=(e+C+a*n(T))/(n(T)-n(t)),P=-C-H*n(t);if(r=[0,P,H],((-C-P)*h+H*E)*M*i>=(A.gridW/2+.3*A.tile)*o)break;_*=.97}t.eye=r,t.target=[0,r[1]+r[2]/Math.tan(CAMERA_PITCH),0],t.fov=CAMERA_FOV,delete t.ortho}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{isTablet}from"../../services/UtilsService.js";import{getScoreBoardTop}from"../shared/EngineHud.js";import{gameWidthFor}from"../shared/EngineUtils.js";export const COLS=9;export const TOTAL_ROADS=9;const ROADS_PER_REST=3;export const LANE_TYPES=(()=>{const t=["grass"];let o=0,e=0;for(;o<9;)t.push("road"),o++,e++,3===e&&o<9&&(t.push("grass"),e=0);return t.push("grass"),t})();export const TOTAL_LANES=LANE_TYPES.length;export const GOAL_ROW=TOTAL_LANES-1;export const GAME_DURATION=120;export const SCORE_PER_CROSS=2e3;export const LOW_TIME=10;export const CAR_SPEED_MIN=isTablet?2:1.55;export const CAR_SPEED_MAX=isTablet?4.15:3.25;export const STEP_MS=1e3/60;export const MAX_PENDING_MS=50;export const speedScale=t=>Math.min(1+.065*t,1.9);export const MOVE_TIME=.2;export const SWIPE=18;export const TAP_MAX=.25;export const COLORS={GRASS_LIGHT:"#95CF69",GRASS_DARK:"#83BF5C",GRASS_TUFT:"#4E9A2E",ROAD:"#4B5667",ROAD_EDGE:"#3C3C46",ROAD_LINE:"#C9C9CF",CAR_COLORS:["#FF5C5C","#FFD93D","#6BCB77","#A66CFF","#FF9F45","#4D96FF","#37C7C2","#F2EEE2","#EF7CAB"],WHEEL:"#15151A",WINDOW:"#2A3442",PLAYER:"#3B82C4",TRUNK:"#7A4E2D",LEAVES:"#3FA34D",FLOWERS:["#FFFFFF","#FFD1EC","#C7B3FF","#FFF2B0"],CURB:"#C9C6BE",LINE:"#F2F2EE",BUSH:"#3E8E3A",ROCK:"#8E8C88"};export const PERSON={SCALE:.82,HEIGHT:1.817,STRIDE:.5};export const PERSON_COLORS={SKIN:"#DCA67D",JACKET:COLORS.PLAYER,PANTS:"#3B4558",HAIR:"#352B27",SHOE:"#39434C",SOLE:"#F0ECE1",BACKPACK:"#CE8248",STRAP:"#72513A"};export const WORLD_SCALE=.1;export const CAMERA_PITCH=.92;export const CAMERA_FOV=.7;export const SKY_DAY=[.62,.78,.95];export const SKY_NIGHT=[.227,.192,.376];export const DAY_LIGHT={direction:[-.45,-.55,1],ambient:.5,shadowExtent:40};export const NIGHT_LIGHT={direction:[-.3,-.5,1],ambient:.66,shadowExtent:40,color:[.84,.88,1]};const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110;export function getLayout(t,o,e){const E=gameWidthFor(t),r=Math.floor(E/9),s=9*r,A=getScoreBoardTop(e)+82,n=Math.max(A+200,o-110);return{width:t,height:o,tile:r,laneH:1.25*r,gridW:s,gridLeft:Math.round((t-s)/2),top:A,bottom:n}}export const colX=(t,o)=>t.gridLeft+o*t.tile+t.tile/2;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{frameCamera}from"./CrossyRoadCamera.js";import{GAME_DURATION,MAX_PENDING_MS,MOVE_TIME,SCORE_PER_CROSS,STEP_MS,SWIPE,TAP_MAX}from"./CrossyRoadConstants.js";import{crossyMeshes}from"./CrossyRoadMeshes.js";import{buildTraffic,hit,hopBack,hopForward,hopSide,moveTraffic,playerX,scaleFor,startPlayer}from"./CrossyRoadRules.js";import{buildScene,celebrate,hop,placePlayer,placeVehicles,removeScene,setTraffic,stumble}from"./CrossyRoadScene.js";const WORLD_CAPACITY=1600;export function createGame(e){const o=new World(1600),r={world:o,camera:{eye:[0,-60,60],target:[0,0,0],fov:.7},assets:crossyMeshes(),night:e,layout:null,scene:null,phase:"ready",traffic:[],nextId:0,player:startPlayer(),hopping:null,queuedHop:null,alive:!0,won:!1,get score(){return o.scoreboard.score},timeLeft:GAME_DURATION,pending:0,clock:0,press:null,onPhase:e=>{},onScore:(e,o)=>{},onTime:e=>{},onEvent:e=>{}};return o.scoreboard.reset(0,GAME_DURATION),o.scoreboard.handlers={onSecond:e=>{r.timeLeft=e,r.onTime(e)},onTimeUp:()=>"playing"===r.phase&&r.alive&&timeUp(r)},r}export function setLayout(e,o){const r=e.layout,t=!e.layout||e.layout.width!==o.width||e.layout.tile!==o.tile;if(e.scene&&removeScene(e.world,e.scene),e.layout=o,frameCamera(e.camera,o),t&&"playing"!==e.phase)e.traffic=buildTraffic(o,e.nextId),e.nextId+=e.traffic.length;else if(t&&r){const t=o.tile/r.tile;for(const s of e.traffic)s.x=o.gridLeft+(s.x-r.gridLeft)*t,s.width*=t,s.speed*=t}if(e.scene=buildScene(e.world,o,e.assets,e.night,e.traffic),placePlayer(e.world,o,e.scene,e.player.row,e.player.col),e.hopping){const r=e.hopping;r.elapsed=0,hop(e.world,o,e.scene,[r.from.row,r.from.col],[r.to.row,r.to.col],r.direction)}}export function setNight(e,o){o!==e.night&&(e.night=o,e.layout&&setLayout(e,e.layout))}function deal(e){const o=e.layout;e.player=startPlayer(),e.hopping=null,e.queuedHop=null,e.alive=!0,e.won=!1,e.world.scoreboard.reset(0,GAME_DURATION),e.timeLeft=GAME_DURATION,e.pending=0,e.press=null,o&&(e.traffic=buildTraffic(o,e.nextId),e.nextId+=e.traffic.length,e.scene&&(setTraffic(e.world,o,e.assets,e.scene,e.traffic),placePlayer(e.world,o,e.scene,0,e.player.col))),e.onScore(0,0),e.onTime(GAME_DURATION)}export function start(e){"playing"!==e.phase&&(deal(e),e.world.scoreboard.startCountdown(GAME_DURATION),e.phase="playing",e.onPhase("playing"))}export function reset(e){deal(e),e.phase="ready",e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,o){if(e.world.isDisposed)return;const r=Math.max(0,Math.min(o,MAX_PENDING_MS/1e3));e.clock+=r;const t=e.layout;let s=!1;if(t&&"playing"===e.phase&&e.alive){let o=Math.min(e.pending+1e3*r,MAX_PENDING_MS);for(;e.alive&&o>=STEP_MS;){o-=STEP_MS,moveTraffic(t,e.traffic,scaleFor(e.player)),s=!0;const r=e.hopping;r&&(r.elapsed=Math.min(MOVE_TIME,r.elapsed+STEP_MS/1e3));const n=r?r.elapsed/MOVE_TIME:0,a=r?r.from.row+(r.to.row-r.from.row)*n:e.player.row,l=r?r.from.col+(r.to.col-r.from.col)*n:e.player.col,i=playerX(t,e.player)+(l-e.player.col)*t.tile;hit(t,e.traffic,a,i)?crash(e,a,l):r&&r.elapsed+1e-6>=MOVE_TIME&&land(e,r)}e.pending=o}s&&t&&e.scene&&placeVehicles(e.world,t,e.scene,e.traffic),e.world.update(r)}function end(e,o){e.world.scoreboard.stop(),e.alive=!1,e.won=o,e.press=null,e.hopping=null,e.queuedHop=null,e.phase="over",e.onPhase("over")}function crash(e,o,r){const{layout:t,scene:s}=e;t&&s&&(placePlayer(e.world,t,s,o,r),stumble(e.world,t,s,o,r)),e.onEvent("crash"),end(e,!1)}function timeUp(e){e.timeLeft=0,e.onTime(0),e.onEvent("timeUp"),end(e,!1)}export function hopTo(e,o){const{layout:r,scene:t}=e;if("playing"!==e.phase||!e.alive||!r)return;if(e.hopping)return void(e.queuedHop=o);const s={...e.player},n=[s.row,s.col],a="up"===o?hopForward(s):"down"===o?hopBack(s):hopSide(s,"left"===o?-1:1);a.moved&&(e.hopping={from:{...e.player},to:s,result:a,elapsed:0,direction:o},t&&hop(e.world,r,t,n,[s.row,s.col],o),e.onEvent("hop"))}function land(e,o){e.player=o.to,e.hopping=null;const r=e.player,t=o.result,{layout:s,scene:n}=e;if(t.crossed&&(e.world.scoreboard.set(r.crossings*SCORE_PER_CROSS),e.onScore(e.score,r.crossings),e.onEvent("cross")),t.goal){const o=Math.floor(Math.max(0,e.world.scoreboard.seconds));return e.timeLeft=o,e.world.scoreboard.set(calculateTimeBasedScore(GAME_DURATION-o,GAME_DURATION,r.crossings*SCORE_PER_CROSS)),e.onTime(o),e.onScore(e.score,r.crossings),n&&s&&celebrate(e.world,s,n,r.row,r.col),void end(e,!0)}const a=e.queuedHop;e.queuedHop=null,a&&hopTo(e,a)}export function drag(e,{phase:o,x:r,y:t,cancelled:s}){if(s)return void(e.press=null);if("start"===o)return void(e.press={x:r,y:t,at:e.clock,swiped:!1});const n=e.press;if(!n)return;const a=r-n.x,l=t-n.y;!n.swiped&&Math.hypot(a,l)>=SWIPE&&(n.swiped=!0,hopTo(e,Math.abs(a)>=Math.abs(l)?a>0?"right":"left":l>0?"down":"up")),"end"===o&&(e.press=null,!n.swiped&&e.clock-n.at<=TAP_MAX&&hopTo(e,"up"))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{merge}from"@nayan-ui/engine";import{cacheGameAsset,createGameMesh as _0x3cf61a}from"../shared/EngineMeshes.js";const WHITE=[1,1,1,1],GLASS=[.18,.34,.42,1],TYRE=[.11,.13,.17,1],CHROME=[.75,.81,.82,1],CREAM=[.94,.94,.86,1];function solid(o,e){const s=[],r=[],t=[0,1,2].map(e=>o.reduce((o,s)=>o+s[e],0)/o.length);for(const n of e){const[e,h,u]=n.map(e=>o[e]),a=h.map((o,s)=>o-e[s]),i=u.map((o,s)=>o-e[s]);let p=[a[1]*i[2]-a[2]*i[1],a[2]*i[0]-a[0]*i[2],a[0]*i[1]-a[1]*i[0]];const l=[0,1,2].map(e=>n.reduce((s,r)=>s+o[r][e],0)/n.length),f=p.reduce((o,e,s)=>o+e*(l[s]-t[s]),0)<0;f&&(p=p.map(o=>-o));const m=Math.hypot(...p)||1,b=s.length/11;for(const e of n)s.push(...o[e],...p.map(o=>o/m),1,1,1,0,0);for(let o=1;o<n.length-1;o++)r.push(b,b+(f?o+1:o),b+(f?o:o+1))}return{vertices:Float32Array.from(s),indices:Uint32Array.from(r)}}const FACES=[[0,1,2,3],[4,5,6,7],[0,1,5,4],[1,2,6,5],[2,3,7,6],[3,0,4,7]],cube=solid([[-.5,-.5,-.5],[.5,-.5,-.5],[.5,.5,-.5],[-.5,.5,-.5],[-.5,-.5,.5],[.5,-.5,.5],[.5,.5,.5],[-.5,.5,.5]],FACES),box=(o,e,s=WHITE)=>({geometry:cube,position:o,scale:e,color:s}),model=o=>_0x3cf61a(merge(o),{center:!1});function cabin(o,e,s,r){return solid([[o,-.44,s],[e,-.44,s],[e,.44,s],[o,.44,s],[o+.07,-.36,r],[e-.1,-.36,r],[e-.1,.36,r],[o+.07,.36,r]],FACES)}const wheel=(()=>{const o=[];for(const e of[-1,1])for(let s=0;s<8;s++){const r=s*Math.PI/4;o.push([.13*Math.cos(r),.065*e,.13*Math.sin(r)])}return solid(o,[Array.from({length:8},(o,e)=>e),Array.from({length:8},(o,e)=>e+8),...Array.from({length:8},(o,e)=>[e,(e+1)%8,(e+1)%8+8,e+8])])})();function vehicle(o){const e="bus"===o,s="pickup"===o,r="taxi"===o,t=e?2.4:s?1.7:r?1.5:1.4,n=[box([0,0,.3],[.96,.94,.26])],h=[box([0,0,.17],[.88,.82,.07],TYRE)];if(e){h.push(box([0,0,.65],[.94,.91,.48],CREAM)),n.push(box([0,0,.91],[.96,.94,.06]));for(const o of[-1,1]){for(let e=0;e<6;e++)h.push(box([.147*e-.375,.462*o,.69],[.118,.015,.24],GLASS));h.push(box([.2,.475*o,.36],[.52,.018,.055],CREAM))}h.push(box([.478,0,.69],[.02,.78,.29],GLASS),box([-.478,0,.69],[.02,.71,.22],GLASS)),h.push(box([.483,0,.87],[.025,.48,.075],TYRE),box([.49,0,.87],[.025,.3,.024],[1,.78,.3,1])),h.push(box([-.08,0,.97],[.25,.5,.07],CHROME))}else{const o=s?-.04:-.3,e=.28;h.push({geometry:cabin(o,e,.43,.73),color:GLASS}),n.push(box([(o+e-.03)/2,0,.745],[e-o-.13,.76,.055]));for(const o of[-1,1])n.push(box([.035,.44*o,.57],[.034,.04,.29])),h.push(box([.14,.48*o,.42],[.065,.015,.022],CHROME));if(s){h.push(box([-.28,0,.438],[.35,.7,.018],TYRE));for(const o of[-1,1])n.push(box([-.28,.42*o,.49],[.38,.07,.15]));h.push(box([-.31,0,.51],[.15,.28,.14],[.66,.44,.25,1]))}if(r){h.push(box([-.04,0,.82],[.16,.38,.1],[1,.83,.23,1]));for(const o of[-1,1])for(let e=0;e<5;e++)h.push(box([.11*e-.28,.477*o,.32],[.055,.015,.055],TYRE))}}for(const o of[-.31,.3])for(const e of[-1,1])h.push({geometry:wheel,position:[o,.46*e,.13],scale:[1/t,1,1],color:TYRE}),h.push(box([o,.529*e,.13],[.11/t,.012,.11],CHROME));h.push(box([.485,0,.22],[.035,.8,.07],CHROME),box([-.485,0,.22],[.035,.8,.07],CHROME)),h.push(box([.485,0,.33],[.028,.35,.08],TYRE));const u=[];for(const o of[-1,1])u.push(box([.49,.34*o,.35],[.03,.18,.09],[1,.94,.68,1])),u.push(box([-.49,.34*o,.35],[.03,.14,.09],[1,.12,.08,1]));return{body:model(n),details:model(h),lights:model(u)}}function pyramid(o,e,s){const r=o/2;return solid([[-r,-r,e],[r,-r,e],[r,r,e],[-r,r,e],[0,0,s]],[[0,1,2,3],[0,1,4],[1,2,4],[2,3,4],[3,0,4]])}let cached=null;export function crossyMeshes(){return cacheGameAsset("crossy-road/CrossyRoadMeshes:crossyMeshes",()=>crossyMeshesUncached())}function crossyMeshesUncached(){return cached||(cached={vehicles:{compact:vehicle("compact"),taxi:vehicle("taxi"),pickup:vehicle("pickup"),bus:vehicle("bus")},tree:model([box([0,0,.3],[.14,.14,.6],[.45,.28,.16,1]),{geometry:pyramid(.9,.35,1.1),color:[.2,.48,.3,1]},{geometry:pyramid(.7,.75,1.4),color:[.26,.59,.34,1]},{geometry:pyramid(.5,1.1,1.65),color:[.34,.67,.4,1]}]),bush:model([box([-.23,0,.22],[.44,.6,.44]),box([.12,.03,.3],[.6,.65,.6]),box([.4,-.03,.18],[.3,.45,.36])]),rock:model([{geometry:cabin(-.4,.4,0,.4)}])},cached)}export function*warmAssets(){yield crossyMeshes}
|