@nayan-ui/games 1.19.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -40
- 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";
|
|
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 _0x1de36d=_0x4680;!function(){const e=_0x4680,o=_0x4bfc();for(;;)try{if(757135==parseInt(e(412,"2xtb"))/1+-parseInt(e(435,"t5si"))/2*(-parseInt(e(461,"8klx"))/3)+-parseInt(e(453,"8klx"))/4*(parseInt(e(449,"xBV^"))/5)+parseInt(e(459,"Y!vL"))/6+parseInt(e(405,"t5si"))/7*(-parseInt(e(411,"Y!vL"))/8)+parseInt(e(434,"MbWp"))/9*(parseInt(e(413,"sxmY"))/10)+-parseInt(e(418,"t5si"))/11)break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{c as _0x23bb23}from"react/compiler-runtime";import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x1640b8,{useEffect,useMemo}from"react";import{View,StyleSheet}from"react-native";function _0x4bfc(){const e=["W4CLW6CfW5uX","WQzDxmk8zq","v8kDimoY","hY/dJ21sW6alva","W71UW4udctFdLSkdquJdSXZcIq","mSk1WOLrj8kyD8kNCCoBW60","t2BdMSo1W6S","csFcP8osx10","uxi0lqhcRcVdSq","zCkZW7pcR0VdLc0","WO7cMSo3WPRdTW","i8k6ySkPW6lcQCko","W5e/sMj4mGK","p2xcMgjpW5u","rCodW5hdM8k1WR8qwhuBW50","W4ldT8oMrmksc0eRWQr3","WQFcUmo2WRFdSb7cK8ocj0FcRa","hdxdNLeumtK","W5e4xxfPoq","k8oaixSEzGRdT8oeWOddV1PEtmoy","BthdHZazWO/dKuNcJ8o0WOhdPHJcUW","y8oFW4BdVCoWWPG","i8k6qmoHW5BcM8kBW6CSW4tdUConCbtdJGVcQx4","E1FdR8o0W4TwWR7cPG","kSoumgiCEHe","W7uyCvrcgZZdGW","W5S5F3fWotldPCkcgW","jmkUACkjW6lcOSksmSkHs8ktWQhdQMe","W5jbW6qXWRi2zmkcW4Pf","E1/cRW","dCk0DmkjW6RcRCkffmk8ySkvWQ3dOa","p8kZW6NdLrS","W4/cQHyj","iHVdVa","W6RdKSohE8ks","WQtdUq0","WQhcU8k7WQea","y8khW43dMKaHW5eT","yCoMW6/cU8kcWRGPWONdMWO4WRuWWPaY","bmkbWQhdNmoHxSoEW4T2","cGhdM0HJ","mCk5WOLvpSklA8k7F8ozW7W","oGxcQquHWOKHnG","W47cSb4VW4dcUg17WRuvWRu","jCk6WRBdPSovW79EWP/dSJCGWPG6","hcNcVCoWF1/cQmo2","b8k4tCkJW5NcKCkKW6CRW5NcVCon","o8kOF8kVW67cOG","WPz1WR1wWOHSWPVcQ03cU8kiWRXZ","W5yffSo1amk/F0NcVCkrWOxcQW","WOiyWRXNW69jjSoxW4L6ccpcHIK","kCogWPRcMtbZW70+W7WVh8kr","WOLCs8k+","BLxcQZuZWPewaXvHWRC","nSkzW7hdSqOrW7lcTq","pGNdRxLYW5bhkd1hWRRcKdq","ngyZWOGyWQaEaqxcNa4","W7RdQmkThgK","W5DhWOJdT1NcI8ojvmo2","W5biW6mIWRKn","nSoxW4qMwmk3va","WP3dUq7dQsKKfaqFCa","WPDwuu3dJX4","fqzJWQX9W67cSCoj","aCkJxSkZW5dcMSkd","W54VvNDPna","bmkJrmkXBhW","w8orW6FcI8kWaCk8W4bsW6/dS2ldIW","kG5fWQL/","C8kgW5ddMgiUW4G","W5G/s2r0oGtdKmkibWenbCk+","WOlcPJGDW7NcSwC","oaJdRxH1W5TffqTSWQ7cMWq","mgVcHwq","WOpdV2RdP8ofWPJcRG","umoNfCo4WOddH8odW7azW43cTSoNvq","W4BdS8kAfWBdO1i8","EmkGW7nMDCoXqCoFW4JdLmou","wCkUfCogW70","mSknW67dPI4nW6m","whxdRv1hW6m3va","a8o3mxOX","E8k5W6/dUNu","omkwW7xdOcicW7VcVCkWWRddLSkGW5JcKG","WRPkvSkFwq","WRZcV8kBW7ubWQ0ZW5yvW5/cS8klW6hcHmoVymklzK/dIW","wNddTKfkW7amAW","jJvoWOPJ","DCk6W5b6EmoPuCo/W44","bXbYWRXOW6pcQCoobwNdIq","W4KidGRcNvZcSe/cM0CWwmkF","qZyFmXuXrJ9Sja/cGq","WQFcUmo0WQZdOWtcGSouoKRcR8k2gK3dVa","C1ZdI8ovW5PeWRK","eH7dIt94jcW","cSkfWR3dJ8oTqG","WPz1WRbFWOvUWPNcT17cSCkIWQXa","W59fW5WAWO8","W4TZFgNdPZddTG","zL7cIYKNWPew","DJuip2iGscm","dJVcTCowx0hcOCo1jI/cLG","o2hcGLjEW5JcKXW","DSkSW7pcMMRdKdb2WORcO8o9W7fO","WRhcMCkJWPbtWPKnW5C","aLOAWOOVWP4U","nSonW5GGxmkWtMnDpmknlmkWWPS","qf3cQJSu","aHVdMI54zZ1NW5ZdJttcHW","h8ozyavD","fmomsa0","bIpdScno","W5BcK8kLWOi+WPyV"];return(_0x4bfc=function(){return e})()}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 _0xaf5dd9}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 _0x13a7de,Fragment as _0x59562b,jsxs as _0x47c17a}from"react/jsx-runtime";const{width:SCREEN_WIDTH}=getGameDimensions(),ITEM_TOTAL_WIDTH=COLORS_SORT_GAME_CONFIG[_0x1de36d(455,"f!xJ")]+2*COLORS_SORT_GAME_CONFIG.BORDER_WIDTH,GRID_WIDTH=3*ITEM_TOTAL_WIDTH+2*COLORS_SORT_GAME_CONFIG[_0x1de36d(388,"sm6f")],GRID_STYLE={width:Math[_0x1de36d(398,"Tnlw")](GRID_WIDTH,SCREEN_WIDTH-20)},timedOutFormatter=()=>formatTime(COLORS_SORT_CONSTANTS[_0x1de36d(487,"WU1z")]),winFormatter=formatTime,ContainerGrid=_0x1640b8.memo(e=>{const o=_0x1de36d,t={lhQLS:function(e,o){return e(o)},XmRVv:function(e,o){return e!==o},aAGQC:function(e,o){return e!==o},TVYuj:function(e,o){return e!==o}},r=_0x23bb23(5),{onPress:n}=e,W=useContainerCount();let d;if(t[o(431,"YCQd")](r[0],W)){const e={};e[o(428,"sm6f")]=W,d=Array.from(e,_temp),r[0]=W,r[1]=d}else d=r[1];const s=d;let a;return t[o(403,"xBV^")](r[2],s)||r[3]!==n?(a=_0x13a7de(_0x59562b,{children:s[o(396,"CoOh")](e=>_0x13a7de(ColorContainer,{containerIndex:e,onPress:n},e))}),r[2]=s,r[3]=n,r[4]=a):t[o(450,"YCQd")](o(399,"ltJX"),o(486,"f!xJ"))?a=r[4]:(t[o(460,"sxmY")](_0x2dd3d3,"cancel"),_0x1741b9()),a});ContainerGrid[_0x1de36d(404,"DLoU")]=_0x1de36d(393,"WU1z");export const ColorsSort=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:r,onShare:n,onShareScreenshot:W,onShowLeaderboard:d,bannerAd:s})=>{const a="t5si",x=_0x1de36d,i={kJMPr:"win",wHKnS:function(e,o,t,r){return e(o,t,r)},nKuAP:function(e){return e()},myMpr:function(e){return e()},ZwRsB:function(e,o){return e(o)},zZXQt:function(e,o){return e(o)},ImrzR:function(e,o,t){return e(o,t)},UzxYn:function(e,o,t){return e(o,t)}},m=useIsPlaying(),_=useIsGameOver(),S=useIsTimedOut(),u=_0x1640b8[x(429,"SsTF")](t);u[x(437,"W5eF")]=t;const C=_0x1640b8[x(410,"WU1z")](e);C[x(442,"I92B")]=e;const l=_0x1640b8.useRef(!1),f=_0x1640b8.useCallback(e=>{const o=x;if(u.current&&!l[o(488,"sm6f")]){const t=useColorsSortStore[o(465,"38ys")]()[o(395,"MbWp")],r=120,n=e===i[o(445,"37B8")]?i[o(474,"JvT]")](calculateTimeBasedScore,t,r,100):0;u.current({status:e,score:n[o(479,"xBV^")]()}),l[o(457,"JvT]")]=!0}},[]),k=i[x(420,"Nq35")](useColorsSortStore,e=>e[x(446,"I92B")]),O=i[x(420,"Nq35")](useColorsSortStore,e=>e.startGame),R=useColorsSortStore(e=>e[x(400,"37B8")]),G=i[x(441,"egNg")](useColorsSortStore,e=>e[x(421,"yM^t")]),b=useColorsSortStore(e=>e[x(401,"Z!1@")]);useEffect(()=>{const e=x;return i[e(394,"I92B")](k),()=>{const o=e;useColorsSortStore.getState()[o(451,"$jcf")]&&!l[o(488,"sm6f")]&&f(o(476,"Y!vL")),R()}},[k,R]);const p=_0x1640b8[x(384,"mJ7x")](0);_&&(p.current=useColorsSortStore[x(426,"YCQd")]()[x(478,"egNg")]),useEffect(()=>{const e=x;_&&!l.current&&f(S?e(436,"38ys"):i[e(397,"qN]j")]),!_&&(l[e(387,"]L$i")]=!1)},[_,S,f]);const T=_0x1640b8[x(406,"MbWp")](()=>{const e=x;l.current=!1,O(),playSound(GAME_SOUNDS[e(419,"U7#U")][e(482,"R6Fx")],C[e(427,"W#mQ")][e(409,"W#mQ")]),playHaptic(HapticType.MEDIUM,C[e(423,"^byU")].enableHaptics)},[O]),I=_0x1640b8[x(464,"Ubg9")](()=>{f(x(489,"38ys")),R()},[f,R]),h=_0x1640b8[x(452,"YCQd")](()=>{const e=x;r?.(),i[e(472,"4%yC")](G),k()},[G,k,r]),y=_0x1640b8.useCallback(e=>{const o=x,t=useColorsSortStore[o(386,"R6Fx")]();t.isPlaying&&!t[o(389,"sm6f")]&&b(e,C[o(432,"37B8")])},[b]),M=e?.offset??0,N=_0x1640b8[x(485,"0xFa")](()=>({isPlaying:m,gameOver:_,onStartGame:T,onStopGame:I,onShare:n,onShowLeaderboard:d,startButtonSubtext:x(454,"in%%")}),[m,_,T,I,n,d]),g=_0x1640b8[x(468,"U7#U")](()=>({isVisible:_,score:p.current,onPlayAgain:h,buttonText:x(490,"mJ7x"),scoreLabel:S?x(424,"Tnlw"):"Completion Time",scoreFormatter:S?timedOutFormatter:winFormatter,title:S?x(467,"ltJX"):x(493,"CoOh"),message:S?x(448,"ltJX"):x(385,"W#mQ")}),[_,h,S]),P=_0x1640b8.useMemo(()=>({gameId:GAME_IDS[x(492,"f!xJ")],settings:e,onSettingsChange:o}),[e,o]),v={};v[x(402,"EbH4")]=M;const L=useMemo(()=>[styles[x(408,"Ubg9")],v],[M]),E=useMemo(()=>[styles.containersGrid,GRID_STYLE],[]),U={};U[x(425,"8klx")]=M;const F={};F[x(456,"R6Fx")]=y;const Q={...N},j={...g};j[x(462,a)]=W,j[x(484,"pF9t")]=s;const D={...P};return _0x13a7de(GestureHandlerRootView,{style:styles[x(481,"DLoU")],children:_0x47c17a(_0xaf5dd9,{children:[i[x(470,a)](_0x13a7de,ScoreBoard,U),_0x13a7de(View,{style:L,children:i[x(477,"2xtb")](_0x13a7de,View,{style:E,children:i[x(447,"2xtb")](_0x13a7de,ContainerGrid,F)})}),_0x13a7de(GameControlButton,Q),_0x13a7de(GameOverModal,j),i[x(444,"YjOh")](_0x13a7de,GameSettingsModal,D)]})})};const _0x4ccc4b={};_0x4ccc4b[_0x1de36d(473,"4%yC")]=1,_0x4ccc4b[_0x1de36d(495,"]L$i")]=BACKGROUND_COLOR;const _0x70cb6a={};_0x70cb6a[_0x1de36d(415,"2xtb")]=1,_0x70cb6a[_0x1de36d(433,"sm6f")]=_0x1de36d(458,"EbH4"),_0x70cb6a[_0x1de36d(391,"sxmY")]=_0x1de36d(422,"sxmY");const _0x4d19c9={};_0x4d19c9[_0x1de36d(466,"0xFa")]=_0x1de36d(392,"t5si"),_0x4d19c9[_0x1de36d(463,"in%%")]="wrap",_0x4d19c9[_0x1de36d(390,"WU1z")]=_0x1de36d(471,"JvT]"),_0x4d19c9[_0x1de36d(391,"sxmY")]=_0x1de36d(439,"Nq35"),_0x4d19c9[_0x1de36d(483,"Ubg9")]=COLORS_SORT_GAME_CONFIG.GRID_GAP;const _0x19f120={};function _0x4680(e,o){e-=383;const t=_0x4bfc();let r=t[e];if(void 0===_0x4680.kzqQWo){const e=function(e,o){let t,r,n=[],W=0,d="";for(e=function(e){let o="",t="";for(let t,r,n=0,W=0;r=e.charAt(W++);~r&&(t=n%4?64*t+r:r,n++%4)?o+=String.fromCharCode(255&t>>(-2*n&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++)n[r]=r;for(r=0;r<256;r++)W=(W+n[r]+o.charCodeAt(r%o.length))%256,t=n[r],n[r]=n[W],n[W]=t;r=0,W=0;for(let o=0;o<e.length;o++)r=(r+1)%256,W=(W+n[r])%256,t=n[r],n[r]=n[W],n[W]=t,d+=String.fromCharCode(e.charCodeAt(o)^n[(n[r]+n[W])%256]);return d};_0x4680.Elcvep=e,_0x4680.xZlLwN={},_0x4680.kzqQWo=!0}const n=t[0];_0x4680.YyUunm!==n&&(_0x4680.xZlLwN={},_0x4680.YyUunm=n);const W=_0x4680.xZlLwN[e];return void 0===W?(void 0===_0x4680.YykjuI&&(_0x4680.YykjuI=!0),r=_0x4680.Elcvep(r,o),_0x4680.xZlLwN[e]=r):r=W,r}_0x19f120[_0x1de36d(416,"t5si")]=_0x4ccc4b,_0x19f120[_0x1de36d(417,"I92B")]=_0x70cb6a,_0x19f120[_0x1de36d(469,"^byU")]=_0x4d19c9;const styles=StyleSheet[_0x1de36d(494,"sm6f")](_0x19f120);function _temp(e,o){return o}ColorsSort[_0x1de36d(440,"$jcf")]=_0x1de36d(491,"qN]j");
|
|
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 _0xb019b0=_0x20dc;!function(){const o=_0x20dc,W=_0x1967();for(;;)try{if(150014==parseInt(o(471,")4z!"))/1+-parseInt(o(553,"v][O"))/2+parseInt(o(540,"E9o["))/3+parseInt(o(560,"VTUV"))/4+parseInt(o(486,"KJIF"))/5+-parseInt(o(517,"CbvL"))/6*(parseInt(o(492,"&F)d"))/7)+-parseInt(o(496,"bE94"))/8*(parseInt(o(507,")4z!"))/9))break;W.push(W.shift())}catch(o){W.push(W.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x1a124b from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x4311a0}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";function _0x20dc(o,W){o-=445;const e=_0x1967();let t=e[o];if(void 0===_0x20dc.dAQVCT){const o=function(o,W){let e,t,a=[],r=0,s="";for(o=function(o){let W="",e="";for(let e,t,a=0,r=0;t=o.charAt(r++);~t&&(e=a%4?64*e+t:t,a++%4)?W+=String.fromCharCode(255&e>>(-2*a&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++)a[t]=t;for(t=0;t<256;t++)r=(r+a[t]+W.charCodeAt(t%W.length))%256,e=a[t],a[t]=a[r],a[r]=e;t=0,r=0;for(let W=0;W<o.length;W++)t=(t+1)%256,r=(r+a[t])%256,e=a[t],a[t]=a[r],a[r]=e,s+=String.fromCharCode(o.charCodeAt(W)^a[(a[t]+a[r])%256]);return s};_0x20dc.lZfdVN=o,_0x20dc.uRWzJm={},_0x20dc.dAQVCT=!0}const a=e[0];_0x20dc.xwtKpX!==a&&(_0x20dc.uRWzJm={},_0x20dc.xwtKpX=a);const r=_0x20dc.uRWzJm[o];return void 0===r?(void 0===_0x20dc.LkCIRT&&(_0x20dc.LkCIRT=!0),t=_0x20dc.lZfdVN(t,W),_0x20dc.uRWzJm[o]=t):t=r,t}import{GameArea}from"./components/GameArea.js";import{jsx as _0x47a296,jsxs as _0x4b5dac}from"react/jsx-runtime";const CrossyRoadComponent=({settings:o=DEFAULT_GAME_SETTINGS,onSettingsChange:W,onEndGame:e,onReplayGame:t,onShare:a,onShareScreenshot:r,onShowLeaderboard:s,bannerAd:d})=>{const n="X1pv",S="5Y@s",i="pVlD",u=_0x20dc,m={BqlfG:function(o,W,e){return o(W,e)},Sqqoy:function(o,W){return o(W)},DEzIq:u(501,"v][O"),VjOau:u(534,"FV#i"),AYIhK:u(445,"n7xA"),iJEAP:function(o){return o()},jwKny:function(o,W,e){return o(W,e)}},k=_0x1a124b[u(476,"voP[")](o?.[u(493,"jL%R")]??!0);k[u(533,"63oD")]=o?.enableSounds??!0;const x=_0x1a124b[u(531,"FH(i")](o?.[u(528,"g7S@")]??!0);x[u(556,n)]=o?.enableHaptics??!0;const p=o?.[u(473,"RWfk")]??0,R=_0x1a124b.useRef(e);R.current=e;const C=_0x1a124b[u(562,"(DKK")](t);C.current=t;const l=m[u(536,n)](useGameOver),_=useWon(),G=m[u(581,"8l50")](useIsPlaying),b=l||_,y=_0x1a124b[u(509,"63oD")](0),f=_0x1a124b[u(489,"3I7h")](0),O=_0x1a124b[u(484,"pVlD")](!1),v=_0x1a124b[u(519,"U3XK")](o=>{const W=u;if(R[W(556,"X1pv")]&&!O.current){const e=useCrossyRoadStore[W(524,"CbvL")]()[W(575,"PRfg")];R[W(499,")4z!")]({status:o,score:e.toString()}),O[W(482,"v][O")]=!0}},[]),H=_0x1a124b[u(452,"5IS(")](()=>new CrossyRoadService,[]),h=_0x1a124b[u(472,"J1[t")](()=>{const o=u;playSound(GAME_SOUNDS[o(566,"uf1h")][o(573,"pZ^O")],k[o(569,"Y(6w")]),playHaptic(HapticType[o(571,"P2cM")],x[o(456,"RHsU")])},[]),I=_0x1a124b[u(519,"U3XK")](()=>{const o=u;m[o(525,"KJIF")](playSound,GAME_SOUNDS[o(468,"63oD")][o(502,"uf1h")],k[o(578,"U3XK")]),playHaptic(HapticType[o(480,"!h1E")],x[o(561,"uK4s")])},[]),P=_0x1a124b[u(475,"^6Sq")](()=>{const o=u;playSound(GAME_SOUNDS[o(515,"FaW&")].CRASH,k.current),playHaptic(HapticType[o(551,"8l50")],x[o(578,"U3XK")])},[]),E=_0x1a124b[u(508,"u65L")](()=>{const o=u;playSound(GAME_SOUNDS[o(539,"CbvL")][o(523,"1Bx0")],k.current),playHaptic(HapticType.ERROR,x[o(463,"!h1E")])},[]),A=_0x1a124b[u(547,"VTUV")](()=>{const o=u;playSound(GAME_SOUNDS.CROSSY_ROAD[o(564,"J1[t")],k[o(450,"g7S@")]),playHaptic(HapticType[o(565,"WsHC")],x[o(538,"WJsP")])},[]);_0x1a124b[u(466,"voP[")](()=>{H[u(503,"P2yN")](h,I,P,E,A)},[H,h,I,P,E,A]),_0x1a124b[u(506,"uf1h")](()=>{H[u(510,"!h1E")](G)},[H,G]),_0x1a124b.useEffect(()=>{const o=u;if(l&&!O[o(578,"U3XK")]&&m[o(458,"3I7h")](v,_?o(446,"(DKK"):o(453,"3I7h")),b){const W=useCrossyRoadStore.getState();y[o(563,"voP[")]=W[o(541,"WsHC")],f[o(526,"m*Xg")]=W[o(464,"jL%R")]}!l&&(O[o(495,"FV#i")]=!1)},[l,_,b,v]),_0x1a124b[u(459,"P2yN")](()=>{H[u(543,"1mM9")]()},[H]),_0x1a124b[u(465,")4z!")](()=>()=>{const o=_0x20dc;useCrossyRoadStore[o(572,"@VoN")]()[o(514,"!h1E")]&&!O[o(558,"CbvL")]&&m.Sqqoy(v,m[o(567,"tXy@")]),useCrossyRoadStore[o(461,"63oD")]()[o(512,"E9o[")](),H.cleanup(),useCrossyRoadStore.getState()[o(554,"FaW&")]()},[H,v]);const N=_0x1a124b[u(513,"!h1E")](()=>{const o=u;O[o(568,"8l50")]=!1,H.resetGame(),useCrossyRoadStore[o(447,"3I7h")]().resetGame(),H[o(520,"jL%R")](),useCrossyRoadStore[o(454,"uf1h")]().startGame(),H[o(455,"voP[")](!0),H[o(580,"8l50")](),playSound(GAME_SOUNDS.CROSSY_ROAD.START,k[o(478,"P2yN")]),playHaptic(HapticType.SUCCESS,x[o(481,"qI8L")])},[H]),L=_0x1a124b[u(574,"5IS(")](()=>{const o=u;v(m.DEzIq),playSound(GAME_SOUNDS.CROSSY_ROAD[o(518,")4z!")],k.current),playHaptic(HapticType.MEDIUM,x[o(548,i)]),H[o(554,"FaW&")](),useCrossyRoadStore[o(521,i)]()[o(467,"v][O")](),H.initialize()},[H,v]),U=_0x1a124b.useCallback(()=>{const o=u,W=o(460,"Y@Mv")[o(542,"RWfk")]("|");let e=0;for(;;){switch(W[e++]){case"0":useCrossyRoadStore[o(546,"J1[t")]()[o(570,"5Y@s")]();continue;case"1":H[o(500,"u65L")]();continue;case"2":O[o(505,"2Ceg")]=!1;continue;case"3":C[o(558,"CbvL")]?.();continue;case"4":H.initialize();continue}break}},[H]),M={..._0x1a124b[u(529,"g7S@")](()=>({isPlaying:!b&&G,gameOver:l,onStartGame:N,onStopGame:L,onShare:a,onShowLeaderboard:s,startButtonSubtext:u(504,"u65L")}),[b,G,l,N,L,a,s])},Q={..._0x1a124b[u(535,"jL%R")](()=>{const o=u,W=useCrossyRoadStore[o(550,"Y@Mv")](),e=l?W[o(469,"5Y@s")]:0,t=l?W[o(497,S)]:0,a={};return a.isVisible=l,a[o(490,"FaW&")]=e,a[o(451,"FaW&")]=U,a[o(449,"P2yN")]=o(544,"E9o["),a[o(448,"uK4s")]=_?m[o(530,"U3XK")]:m[o(549,"VTUV")],a[o(545,"RHsU")]=o(479,"tXy@"),a[o(494,"O5Z(")]=_?o(511,"*sA2")+t+o(470,"RHsU"):o(483,"voP[")+t+" "+(1===t?o(537,S):"roads")+"!",a},[l,_,U])};Q[u(579,"1mM9")]=r,Q[u(491,"jL%R")]=d;const T={};return T.gameId=GAME_IDS[u(477,"v][O")],T[u(532,"jL%R")]=o||DEFAULT_GAME_SETTINGS,T[u(462,"&F)d")]=W,m[u(555,"X1pv")](_0x47a296,GestureHandlerRootView,{style:styles[u(557,"jL%R")],children:_0x4b5dac(_0x4311a0,{offset:p,children:[m[u(522,"5Y@s")](_0x47a296,GameArea,{gameService:H,offset:p}),m.BqlfG(_0x47a296,ScoreBoard,{offset:p}),_0x47a296(GameControlButton,M),m[u(457,"CbvL")](_0x47a296,GameOverModal,Q),_0x47a296(GameSettingsModal,T)]})})},_0x4c9118={flex:1};_0x4c9118[_0xb019b0(498,"X1pv")]=BACKGROUND_COLOR;const _0x1bd7ca={};function _0x1967(){const o=["dXFdKa7cQSkHlCkBw1iJ","eL1fW6VdHSkZwhRcL1Hy","W4nTW7hdOYq/WPFcTCk8nfVdMa","W7Swu1u8WP7cMmkQW7G","W7SxW7/cMCkalWGTWOjFAa","W7BcHrHQkSkgsrytWOi","vsOHaSoJW5TvWQe","W7inaSo6ma","fmkpW69VW4y4W6pcONy","WPiWWRlcHgjUWQFcVa","W5ujA8oVWRS","W40RW67dHSk4qSkO","r29wemkYzG","sNNdGthdN8kfBM/dTM90WOrd","wMtdHr7dLSknsq","W5GoW5xcU8ku","W4yNrSoiDCko","W6ZcJGvQkSkjqGW","BSoVW7iuvCofWQu","W6FdSYFdUmoPWQ3cLXK","W6RcMbrtjSkksG","j8oIW6rAca","W4itd8o4","xSkXDrNdLZ/cLG","WRyhWONcHevwWOZcI8kAfKy","t8oRcmk2k2qsW69xcuVdIG","pu1bWORcSW","sLbGWQ/dIW","sSkeW6vOWRldPJtdL8oKuq","p8kXqmkMxZqgW6DUsq","W5uGW6JdIYfpdvJdGSoG","WOJdN8kKaXL0W6yo","W7Xltv/dNmo+WPxdNmkFB8o5","utONi8oYW5rv","W4HHyxtdTG","evfcW4JdNSkZvve","W7HrsmkQWO8","dri9W7dcJSkYh8kZpwSUzq","W41tWRyzpxXjWR/dVSkQW70K","pIddRdJcJCk/e8kKCq","dmozW419hW","lCoDW5nPpCoElq","W7ZcHb9QiSkosXOB","WPyGWRtcPxnHWQC","bCkBowhdVsTWnSoF","WRGihYVcJmkGWO/dHmkjrmogoq","FSk7lrSIWROc","W4dcLcNdQd4x","WPjlEdagW5ldGG","WQZdQmkFaZ4","hxTTWRVcK8knoa","WORdRSk7uCodW7ddPrhcR0XE","W71kvJqZ","W552AmkxWRGmia","W4DGEZSqmmke","W4izhCo5a8oQaCk5WP0","WRTMWPiema","W5tcRSoEvSknWOddO8o8","WQDmra","W57cHb1kbSksWOCfumkhzW","W4FcTSo6WQ56","W48AW618us7dOX/cRmoJW5pcHq","W4fTWPhcPfPHWP7cJq","W60rW6JcQmkelra","tmkeW590WRRdTt0","W453E8kxWQKLnxldVa","W5rjx8kKWO0","d8okFvdcQrjfW6ed","W4lcJIi","W7bGFgRdIfuUW6e","ACkNkWuI","bmkbi2hdSYXknSovW7m","tgldKIhdLSkouG","iYVdJZhcMmkbm8kUDxOj","W57cHb1eaSktWOq","W7TQE1W","WQ7dMCkauCoKW4JdJIy","WOjBFHipW53dJ8kivXe","W4u2W7xdIYfTga","WP8IWO3cUw8","W4r0EvBdHq","e8khmLddUIr7mmoz","ruGeW6FcM8kUeuJdGG","ASo/W7q1rmokWQxcLG","W5aOfrf6W7WECCosWQPPW5u6WR3dN8os","W43cHbtcPCkJkmo5","W7ZcMr5TmmkosXGA","W4KKE1ufWRFcQ8kmW54","WOrnBWCfW5RdK8kctq","WOSeW7rkEa9QWRtdKG","tSoiW481y8oYWO7cOtNdGSod","W4mFaCoUeG","WOyXW6JdMcbWte3dJSo4pxldHmkFW7KEW7ddIaVcQ8orWRHzW4H2yG","WO5IlcDxW6xcU8kmW6WpWRtcTW","WPRdICk1eWX5W74jW6FdICkt","vKzQWRxdMSoY","gcxcMwBcGSoqC3tdS2P6WPm","eI1eW4VcKXZcLWTaWOe7","WOrnBXagW5O","WROZW4H8xXfuWOVdUmkjW4K","bCkbjwFdUsXQ","W6PSqW8N","W6VcOZtcMmku","usGXhSoyW7FcNG","WPOuW7vDAsz/","WQHrF2iaW47dMCkssHm6uq","rZWWa8oYW5W","WQT6WRvyW5hcNSklEby5DCoD","WQbkpSk8W41/uZbNW7tdMte","W7dcUCofDSkkWPJdHCo2W4u3","WQ7dM0yPCSovuWuEWQ9bWQS","W6j2BwVdMvi","pYBdSc/cNa","W73cIH9WjSkvzbS","WOG1lGnHW4q1","W7RcHrb8l8kcDHaCWOLXWP0","W7uQW7iyWOddISk/","W53dIqdcQSoBWORcRq","W6ddRhWymmo2WRVcHq","W5moaCoVbmoedSkZWOS","lmojW4jWp8ocnSoLCtJdPCoQzIWp","W58IBgigWR/cUG","u8kckmoYzvikWPvM","WPOaW6LmAsq","WPRdRmk4q8odW6e","fCkri1BdVs5YmComW6tdSmkE","ySkvnmoKyJukWPrVW6mtesFdU8kqW7ZcUCk5WPH9W7/cVSoTWRirl8ofFCkeWRS","AmoPjxZdVGdcNa","WRZdJ8krr8o2W4/dNYdcLa","WO9IkIntW6lcN8kFW6CjWP7cQq","vmkupSouChKhWPPIWQbb","EmoPW6u0vCon","W53cLblcH8kQj8o0l8oeeG","FxjguCkLCCoFWQldGHldGYTFW71gdW","bmkQx8o2wtikW6S","W5VcGGpcLmkNkSoHjmolfNq","W4FcGJBcU8kNp8oKkmon"];return(_0x1967=function(){return o})()}_0x1bd7ca[_0xb019b0(559,"P2yN")]=_0x4c9118;const styles=StyleSheet[_0xb019b0(527,"*sA2")](_0x1bd7ca);export const CrossyRoad=CrossyRoadComponent;CrossyRoad[_0xb019b0(516,"Y@Mv")]=_0xb019b0(487,"@VoN");
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,textColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{DAY_LIGHT,GAME_DURATION,getLayout,LOW_TIME,NIGHT_LIGHT,SKY_DAY,SKY_NIGHT,TOTAL_ROADS}from"./CrossyRoadConstants.js";import{createGame,dispose,drag,reset,setLayout,setNight,start,tick}from"./CrossyRoadGame.js";import{jsx as _0x1abeb7}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.CROSSY_ROAD;export const CrossyRoad=engineGame(GAME_IDS.CROSSY_ROAD,e=>{const[s,t]=useLiveState(0),[r,o]=useLiveState(0),[a,i]=useLiveState(GAME_DURATION),{theme:S,status:n,screen:m,gameOver:u}=useEngineGame(e,{gameId:GAME_IDS.CROSSY_ROAD,create:e=>createGame(e.isDark),start:start,reset:reset,dispose:dispose,tick:tick,setTheme:(e,s)=>setNight(e,s.isDark),resize:(e,s,t,r)=>{const o=getLayout(s,t,r);return setLayout(e,o),o.gridW},drag:drag,sounds:SOUNDS,resultsDelay:e=>"win"===e?1050:450,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),onOver:(e,s)=>{"win"===s&&e(SOUNDS.WIN,HapticType.SUCCESS)},wire:(e,s)=>{e.onScore=(e,s)=>{t(e),o(s)},e.onTime=i,e.onEvent=e=>{"hop"===e?s(SOUNDS.HOP,HapticType.LIGHT):"cross"===e?s(SOUNDS.CROSS,HapticType.SUCCESS):s("crash"===e?SOUNDS.CRASH:SOUNDS.TIME_UP,HapticType.ERROR)}}}),O=S.isDark;return _0x1abeb7(EngineGameScreen,{...m,light:O?NIGHT_LIGHT:DAY_LIGHT,background:O?SKY_NIGHT:SKY_DAY,fog:.0015,columns:[scoreColumn(s),textColumn("CROSSINGS",r+"/"+TOTAL_ROADS),timerColumn(a,S,LOW_TIME)],subtext:"Cross roads, dodge traffic!",gameOver:u({title:"win"===n?"YOU WIN!":"GAME OVER",message:"win"===n?"You crossed all "+r+" roads with time to spare!":"You crossed "+r+" "+(1===r?"road":"roads")+"!",scoreLabel:"Score",score:s,buttonText:"Play Again!"})})});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{CAMERA_FOV,CAMERA_PITCH,PERSON,TOTAL_LANES,WORLD_SCALE}from"./CrossyRoadConstants.js";const dot=(t,A)=>t[0]*A[0]+t[1]*A[1]+t[2]*A[2];export function viewPoint(t,A,o){const C=[0,Math.cos(CAMERA_PITCH),-Math.sin(CAMERA_PITCH)],e=[0,Math.sin(CAMERA_PITCH),Math.cos(CAMERA_PITCH)],a=[o[0]-A[0],o[1]-A[1],o[2]-A[2]],h=dot(a,C),E=Math.tan(CAMERA_FOV/2),M=t.width/t.height;return[t.width/2*(1+a[0]/(h*E*M)),t.height/2*(1-dot(a,e)/(h*E))]}export function frameCamera(t,A){const o=WORLD_SCALE,C=TOTAL_LANES*A.laneH*o/2,e=C-A.laneH*o/2,a=PERSON.HEIGHT*PERSON.SCALE*A.tile*o,h=Math.cos(CAMERA_PITCH),E=Math.sin(CAMERA_PITCH),M=Math.tan(CAMERA_FOV/2),i=A.width/A.height,n=t=>(h+t*M*E)/(E-t*M*h),R=t=>1-2*t/A.height,s=(A.top+A.bottom)/2;let _=A.bottom-A.top,r=[0,0,0];for(let t=0;t<80;t++){const t=R(s+_/2),T=R(s-_/2),H=(e+C+a*n(T))/(n(T)-n(t)),P=-C-H*n(t);if(r=[0,P,H],((-C-P)*h+H*E)*M*i>=(A.gridW/2+.3*A.tile)*o)break;_*=.97}t.eye=r,t.target=[0,r[1]+r[2]/Math.tan(CAMERA_PITCH),0],t.fov=CAMERA_FOV,delete t.ortho}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const
|
|
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}
|