@nayan-ui/games 1.18.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -191
- package/lib/module/assets/fonts/Inter-SemiBold.ttf +0 -0
- package/lib/module/assets/models/explorer/explorer.glb +0 -0
- package/lib/module/assets/models/explorer/params.json +51 -0
- package/lib/module/assets/models/explorer/source.json +222 -0
- package/lib/module/assets/models/play-with-tua/play-with-tua.glb +0 -0
- package/lib/module/assets/models/play-with-tua/sources.json +141 -0
- package/lib/module/assets/sfx/balloon_pop.wav +0 -0
- package/lib/module/assets/sfx/blocked.wav +0 -0
- package/lib/module/assets/sfx/boing.wav +0 -0
- package/lib/module/assets/sfx/bonus.wav +0 -0
- package/lib/module/assets/sfx/boom.wav +0 -0
- package/lib/module/assets/sfx/bump.wav +0 -0
- package/lib/module/assets/sfx/cannon.wav +0 -0
- package/lib/module/assets/sfx/capture.wav +0 -0
- package/lib/module/assets/sfx/card_flip.wav +0 -0
- package/lib/module/assets/sfx/card_place.wav +0 -0
- package/lib/module/assets/sfx/catch.wav +0 -0
- package/lib/module/assets/sfx/chime.wav +0 -0
- package/lib/module/assets/sfx/chomp.wav +0 -0
- package/lib/module/assets/sfx/chomp_alt.wav +0 -0
- package/lib/module/assets/sfx/clack.wav +0 -0
- package/lib/module/assets/sfx/clang.wav +0 -0
- package/lib/module/assets/sfx/clash.wav +0 -0
- package/lib/module/assets/sfx/click.wav +0 -0
- package/lib/module/assets/sfx/coin.wav +0 -0
- package/lib/module/assets/sfx/combo.wav +0 -0
- package/lib/module/assets/sfx/crash.wav +0 -0
- package/lib/module/assets/sfx/crunch.wav +0 -0
- package/lib/module/assets/sfx/dance.wav +0 -0
- package/lib/module/assets/sfx/deselect.wav +0 -0
- package/lib/module/assets/sfx/dice_roll.wav +0 -0
- package/lib/module/assets/sfx/die.wav +0 -0
- package/lib/module/assets/sfx/draw.wav +0 -0
- package/lib/module/assets/sfx/drop.wav +0 -0
- package/lib/module/assets/sfx/eat.wav +0 -0
- package/lib/module/assets/sfx/engine.wav +0 -0
- package/lib/module/assets/sfx/error.wav +0 -0
- package/lib/module/assets/sfx/flag.wav +0 -0
- package/lib/module/assets/sfx/flap.wav +0 -0
- package/lib/module/assets/sfx/flip_disc.wav +0 -0
- package/lib/module/assets/sfx/footstep_run.wav +0 -0
- package/lib/module/assets/sfx/footstep_walk.wav +0 -0
- package/lib/module/assets/sfx/game_over.wav +0 -0
- package/lib/module/assets/sfx/gate.wav +0 -0
- package/lib/module/assets/sfx/hit.wav +0 -0
- package/lib/module/assets/sfx/hop.wav +0 -0
- package/lib/module/assets/sfx/hurt.wav +0 -0
- package/lib/module/assets/sfx/invalid.wav +0 -0
- package/lib/module/assets/sfx/jump.wav +0 -0
- package/lib/module/assets/sfx/ladder.wav +0 -0
- package/lib/module/assets/sfx/land.wav +0 -0
- package/lib/module/assets/sfx/laugh.wav +0 -0
- package/lib/module/assets/sfx/lose.wav +0 -0
- package/lib/module/assets/sfx/merge.wav +0 -0
- package/lib/module/assets/sfx/miss.wav +0 -0
- package/lib/module/assets/sfx/nitro.wav +0 -0
- package/lib/module/assets/sfx/pew.wav +0 -0
- package/lib/module/assets/sfx/place.wav +0 -0
- package/lib/module/assets/sfx/pling.wav +0 -0
- package/lib/module/assets/sfx/point.wav +0 -0
- package/lib/module/assets/sfx/pop.wav +0 -0
- package/lib/module/assets/sfx/pop_soft.wav +0 -0
- package/lib/module/assets/sfx/power_up.wav +0 -0
- package/lib/module/assets/sfx/reveal.wav +0 -0
- package/lib/module/assets/sfx/robot.wav +0 -0
- package/lib/module/assets/sfx/rotate.wav +0 -0
- package/lib/module/assets/sfx/run_steps.wav +0 -0
- package/lib/module/assets/sfx/select.wav +0 -0
- package/lib/module/assets/sfx/shuffle.wav +0 -0
- package/lib/module/assets/sfx/six.wav +0 -0
- package/lib/module/assets/sfx/slice.wav +0 -0
- package/lib/module/assets/sfx/slide.wav +0 -0
- package/lib/module/assets/sfx/snake.wav +0 -0
- package/lib/module/assets/sfx/snap.wav +0 -0
- package/lib/module/assets/sfx/splash.wav +0 -0
- package/lib/module/assets/sfx/star.wav +0 -0
- package/lib/module/assets/sfx/start.wav +0 -0
- package/lib/module/assets/sfx/swoosh.wav +0 -0
- package/lib/module/assets/sfx/tap.wav +0 -0
- package/lib/module/assets/sfx/thud.wav +0 -0
- package/lib/module/assets/sfx/thunk.wav +0 -0
- package/lib/module/assets/sfx/tick.wav +0 -0
- package/lib/module/assets/sfx/time_up.wav +0 -0
- package/lib/module/assets/sfx/tock.wav +0 -0
- package/lib/module/assets/sfx/walk_steps.wav +0 -0
- package/lib/module/assets/sfx/warning.wav +0 -0
- package/lib/module/assets/sfx/whack.wav +0 -0
- package/lib/module/assets/sfx/whoosh.wav +0 -0
- package/lib/module/assets/sfx/win.wav +0 -0
- package/lib/module/assets/sfx/zap.wav +0 -0
- package/lib/module/assets/textures/ad_bolt.png +0 -0
- package/lib/module/assets/textures/ad_bubbles.png +0 -0
- package/lib/module/assets/textures/ad_chevrons.png +0 -0
- package/lib/module/assets/textures/asphalt.png +0 -0
- package/lib/module/assets/textures/bark.jpg +0 -0
- package/lib/module/assets/textures/explorer-atlas.png +0 -0
- package/lib/module/assets/textures/facade.png +0 -0
- package/lib/module/assets/textures/grass.png +0 -0
- package/lib/module/assets/textures/leaves.png +0 -0
- package/lib/module/assets/textures/limestone.jpg +0 -0
- package/lib/module/assets/textures/meadow.jpg +0 -0
- package/lib/module/assets/textures/nature-sources.json +87 -0
- package/lib/module/assets/textures/pine.png +0 -0
- package/lib/module/assets/textures/river.jpg +0 -0
- package/lib/module/assets/textures/soft_glow.png +0 -0
- package/lib/module/games/arrows/Arrows.js +1 -1
- package/lib/module/games/arrows/ArrowsConstants.js +1 -1
- package/lib/module/games/arrows/ArrowsGame.js +1 -0
- package/lib/module/games/arrows/ArrowsScene.js +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterGame.js +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterPhysics.js +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterScene.js +1 -0
- package/lib/module/games/bike-racing/BikeMeshes.js +1 -0
- package/lib/module/games/bike-racing/BikeRacing.js +1 -1
- package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -1
- package/lib/module/games/bike-racing/BikeRacingGame.js +1 -0
- package/lib/module/games/bike-racing/BikeRacingScene.js +1 -0
- package/lib/module/games/block-blast/BlockBlast.js +1 -1
- package/lib/module/games/block-blast/BlockBlastConstants.js +1 -1
- package/lib/module/games/block-blast/BlockBlastGame.js +1 -0
- package/lib/module/games/block-blast/BlockBlastScene.js +1 -0
- package/lib/module/games/block-breaker/BlockBreaker.js +1 -1
- package/lib/module/games/block-breaker/BlockBreakerConstants.js +1 -1
- package/lib/module/games/block-breaker/BlockBreakerGame.js +1 -0
- package/lib/module/games/block-breaker/BlockBreakerScene.js +1 -0
- package/lib/module/games/bluk/Bluk.js +1 -1
- package/lib/module/games/bluk/BlukConstants.js +1 -1
- package/lib/module/games/bluk/BlukGame.js +1 -0
- package/lib/module/games/bluk/BlukRules.js +1 -0
- package/lib/module/games/bluk/BlukScene.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -1
- package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -1
- package/lib/module/games/bubble-shooter/BubbleShooterGame.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterScene.js +1 -0
- package/lib/module/games/candy-crush/CandyCrush.js +1 -1
- package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -1
- package/lib/module/games/candy-crush/CandyCrushGame.js +1 -0
- package/lib/module/games/candy-crush/CandyCrushScene.js +1 -0
- package/lib/module/games/car-racing/CarMeshes.js +1 -0
- package/lib/module/games/car-racing/CarRacing.js +1 -1
- package/lib/module/games/car-racing/CarRacingConstants.js +1 -1
- package/lib/module/games/car-racing/CarRacingFacade.js +1 -0
- package/lib/module/games/car-racing/CarRacingGame.js +1 -0
- package/lib/module/games/car-racing/CarRacingScene.js +1 -0
- package/lib/module/games/car-racing/CarRacingScenery.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRun.js +1 -1
- package/lib/module/games/chameleon-run/ChameleonRunBackdrop.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunConstants.js +1 -1
- package/lib/module/games/chameleon-run/ChameleonRunGame.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunMeshes.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunRules.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunScene.js +1 -0
- package/lib/module/games/checkers/Checkers.js +1 -1
- package/lib/module/games/checkers/CheckersAI.js +1 -0
- package/lib/module/games/checkers/CheckersConstants.js +1 -1
- package/lib/module/games/checkers/CheckersGame.js +1 -0
- package/lib/module/games/checkers/CheckersRules.js +1 -0
- package/lib/module/games/checkers/CheckersScene.js +1 -0
- package/lib/module/games/color-switch/ColorSwitch.js +1 -1
- package/lib/module/games/color-switch/ColorSwitchConstants.js +1 -1
- package/lib/module/games/color-switch/ColorSwitchGame.js +1 -0
- package/lib/module/games/color-switch/ColorSwitchScene.js +1 -0
- package/lib/module/games/colors-sort/ColorsSort.js +1 -1
- package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -1
- package/lib/module/games/colors-sort/ColorsSortGame.js +1 -0
- package/lib/module/games/colors-sort/ColorsSortScene.js +1 -0
- package/lib/module/games/connect-em-all/ConnectEmAll.js +1 -1
- package/lib/module/games/connect-em-all/ConnectEmAllConstants.js +1 -1
- package/lib/module/games/connect-em-all/ConnectEmAllGame.js +1 -0
- package/lib/module/games/connect-em-all/ConnectEmAllScene.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoad.js +1 -1
- package/lib/module/games/crossy-road/CrossyRoadCamera.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadConstants.js +1 -1
- package/lib/module/games/crossy-road/CrossyRoadGame.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadMeshes.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadPerson.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadRules.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadScene.js +1 -0
- package/lib/module/games/dino-jump/DinoJump.js +1 -1
- package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -1
- package/lib/module/games/dino-jump/DinoJumpGame.js +1 -0
- package/lib/module/games/dino-jump/DinoJumpScene.js +1 -0
- package/lib/module/games/dots-and-boxes/DotsAndBoxes.js +1 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesConstants.js +1 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesGame.js +1 -0
- package/lib/module/games/dots-and-boxes/DotsAndBoxesScene.js +1 -0
- package/lib/module/games/falling-sticks/FallingSticks.js +1 -1
- package/lib/module/games/falling-sticks/FallingSticksConstants.js +1 -1
- package/lib/module/games/falling-sticks/FallingSticksGame.js +1 -0
- package/lib/module/games/falling-sticks/FallingSticksRules.js +1 -0
- package/lib/module/games/falling-sticks/FallingSticksScene.js +1 -0
- package/lib/module/games/find-different-number/FindDifferentNumber.js +1 -1
- package/lib/module/games/find-different-number/FindDifferentNumberConstants.js +1 -1
- package/lib/module/games/find-different-number/FindDifferentNumberGame.js +1 -0
- package/lib/module/games/find-different-number/FindDifferentNumberRules.js +1 -0
- package/lib/module/games/find-different-number/FindDifferentNumberScene.js +1 -0
- package/lib/module/games/flappy-bird/FlappyBird.js +1 -1
- package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -1
- package/lib/module/games/flappy-bird/FlappyBirdGame.js +1 -0
- package/lib/module/games/flappy-bird/FlappyBirdScene.js +1 -0
- package/lib/module/games/fruit-merger/FruitMerger.js +1 -1
- package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -1
- package/lib/module/games/fruit-merger/FruitMergerGame.js +1 -0
- package/lib/module/games/fruit-merger/FruitMergerRules.js +1 -0
- package/lib/module/games/fruit-merger/FruitMergerScene.js +1 -0
- package/lib/module/games/fruit-ninja/FruitNinja.js +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaGame.js +1 -0
- package/lib/module/games/fruit-ninja/FruitNinjaScene.js +1 -0
- package/lib/module/games/fruit-ninja/FruitNinjaWorld.js +1 -0
- package/lib/module/games/game-2048/Game2048.js +1 -1
- package/lib/module/games/game-2048/Game2048Constants.js +1 -1
- package/lib/module/games/game-2048/Game2048Game.js +1 -0
- package/lib/module/games/game-2048/Game2048Rules.js +1 -0
- package/lib/module/games/game-2048/Game2048Scene.js +1 -0
- package/lib/module/games/knife-hit/KnifeHit.js +1 -1
- package/lib/module/games/knife-hit/KnifeHitConstants.js +1 -1
- package/lib/module/games/knife-hit/KnifeHitGame.js +1 -0
- package/lib/module/games/knife-hit/KnifeHitScene.js +1 -0
- package/lib/module/games/ludo-king/LudoKing.js +1 -1
- package/lib/module/games/ludo-king/LudoKingConstants.js +1 -1
- package/lib/module/games/ludo-king/LudoKingGame.js +1 -0
- package/lib/module/games/ludo-king/LudoKingRules.js +1 -0
- package/lib/module/games/ludo-king/LudoKingScene.js +1 -0
- package/lib/module/games/maze-runner/MazeRunner.js +1 -1
- package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -1
- package/lib/module/games/maze-runner/MazeRunnerGame.js +1 -0
- package/lib/module/games/maze-runner/MazeRunnerRules.js +1 -0
- package/lib/module/games/maze-runner/MazeRunnerScene.js +1 -0
- package/lib/module/games/memory-match/MemoryMatch.js +1 -1
- package/lib/module/games/memory-match/MemoryMatchConstants.js +1 -1
- package/lib/module/games/memory-match/MemoryMatchGame.js +1 -0
- package/lib/module/games/memory-match/MemoryMatchRules.js +1 -0
- package/lib/module/games/memory-match/MemoryMatchScene.js +1 -0
- package/lib/module/games/mine-sweeper/MineSweeper.js +1 -1
- package/lib/module/games/mine-sweeper/MineSweeperConstants.js +1 -1
- package/lib/module/games/mine-sweeper/MineSweeperGame.js +1 -0
- package/lib/module/games/mine-sweeper/MineSweeperRules.js +1 -0
- package/lib/module/games/mine-sweeper/MineSweeperScene.js +1 -0
- package/lib/module/games/mob-control/MobControl.js +1 -1
- package/lib/module/games/mob-control/MobControlConstants.js +1 -1
- package/lib/module/games/mob-control/MobControlGame.js +1 -0
- package/lib/module/games/mob-control/MobControlMeshes.js +1 -0
- package/lib/module/games/mob-control/MobControlRenderer.js +1 -0
- package/lib/module/games/mob-control/MobControlRules.js +1 -0
- package/lib/module/games/mob-control/MobControlScene.js +1 -0
- package/lib/module/games/number-search/NumberSearch.js +1 -1
- package/lib/module/games/number-search/NumberSearchNumbers.js +1 -0
- package/lib/module/games/nuts-and-bolts/NutsAndBolts.js +1 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsConstants.js +1 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsGame.js +1 -0
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsRules.js +1 -0
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsScene.js +1 -0
- package/lib/module/games/pac-man/PacMan.js +1 -1
- package/lib/module/games/pac-man/PacManConstants.js +1 -1
- package/lib/module/games/pac-man/PacManGame.js +1 -0
- package/lib/module/games/pac-man/PacManRules.js +1 -0
- package/lib/module/games/pac-man/PacManScene.js +1 -0
- package/lib/module/games/paper-io/PaperIo.js +1 -1
- package/lib/module/games/paper-io/PaperIoConstants.js +1 -1
- package/lib/module/games/paper-io/PaperIoGame.js +1 -0
- package/lib/module/games/paper-io/PaperIoMeshes.js +1 -0
- package/lib/module/games/paper-io/PaperIoRules.js +1 -0
- package/lib/module/games/paper-io/PaperIoScene.js +1 -0
- package/lib/module/games/penguin-run/PenguinMeshes.js +1 -0
- package/lib/module/games/penguin-run/PenguinModel.js +1 -0
- package/lib/module/games/penguin-run/PenguinRun.js +1 -0
- package/lib/module/games/penguin-run/PenguinRunConstants.js +1 -0
- package/lib/module/games/penguin-run/PenguinRunGame.js +1 -0
- package/lib/module/games/penguin-run/PenguinRunScene.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircle.js +1 -1
- package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -1
- package/lib/module/games/perfect-circle/PerfectCircleGame.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleRules.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleScene.js +1 -0
- package/lib/module/games/pipe-connect/PipeConnect.js +1 -1
- package/lib/module/games/pipe-connect/PipeConnectConstants.js +1 -1
- package/lib/module/games/pipe-connect/PipeConnectGame.js +1 -0
- package/lib/module/games/pipe-connect/PipeConnectRules.js +1 -0
- package/lib/module/games/pipe-connect/PipeConnectScene.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTua.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaConstants.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaGame.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaModel.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaScene.js +1 -0
- package/lib/module/games/popit-fidget/PopitFidget.js +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetGame.js +1 -0
- package/lib/module/games/popit-fidget/PopitFidgetScene.js +1 -0
- package/lib/module/games/reversi/Reversi.js +1 -1
- package/lib/module/games/reversi/ReversiConstants.js +1 -1
- package/lib/module/games/reversi/ReversiGame.js +1 -0
- package/lib/module/games/reversi/ReversiRules.js +1 -0
- package/lib/module/games/reversi/ReversiScene.js +1 -0
- package/lib/module/games/search-grid/SearchGrid.js +1 -0
- package/lib/module/games/search-grid/SearchGridConstants.js +1 -0
- package/lib/module/games/search-grid/SearchGridGame.js +1 -0
- package/lib/module/games/search-grid/SearchGridScene.js +1 -0
- package/lib/module/games/shared/BackdropCard.js +1 -0
- package/lib/module/games/shared/EngineBackdrop.js +1 -0
- package/lib/module/games/shared/EngineBlasts.js +1 -0
- package/lib/module/games/shared/EngineBlocks.js +1 -0
- package/lib/module/games/shared/EngineControlText.js +1 -0
- package/lib/module/games/shared/EngineDice.js +1 -0
- package/lib/module/games/shared/EngineFootprint.js +1 -0
- package/lib/module/games/shared/EngineFruits.js +1 -0
- package/lib/module/games/shared/EngineGameLoader.js +1 -0
- package/lib/module/games/shared/EngineGameScreen.js +1 -0
- package/lib/module/games/shared/EngineGameWidth.js +1 -0
- package/lib/module/games/shared/EngineGameWidth.web.js +1 -0
- package/lib/module/games/shared/EngineGlyphs.js +1 -0
- package/lib/module/games/shared/EngineHud.js +1 -0
- package/lib/module/games/shared/EngineLoading.js +1 -0
- package/lib/module/games/shared/EngineMeadow.js +1 -0
- package/lib/module/games/shared/EngineMeshCache.js +1 -0
- package/lib/module/games/shared/EngineMeshes.js +1 -0
- package/lib/module/games/shared/EngineRacingChase.js +1 -0
- package/lib/module/games/shared/EngineRacingHandling.js +1 -0
- package/lib/module/games/shared/EngineReadyContext.js +1 -0
- package/lib/module/games/shared/EngineTilt.js +1 -0
- package/lib/module/games/shared/EngineTouchSurface.js +1 -0
- package/lib/module/games/shared/EngineUtils.js +1 -0
- package/lib/module/games/shared/GameActivity.js +1 -0
- package/lib/module/games/shared/GameLoading.js +1 -0
- package/lib/module/games/shared/GameLoadingTransition.js +1 -0
- package/lib/module/games/shared/ProceduralCacheVersion.js +1 -0
- package/lib/module/games/shared/useEngineGame.js +1 -0
- package/lib/module/games/shared/useGameResource.js +1 -0
- package/lib/module/games/shared/useLiveState.js +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersGame.js +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersRules.js +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersScene.js +1 -0
- package/lib/module/games/snake-3d/Snake3D.js +1 -1
- package/lib/module/games/snake-3d/Snake3DConstants.js +1 -1
- package/lib/module/games/snake-3d/Snake3DGame.js +1 -0
- package/lib/module/games/snake-3d/Snake3DMotion.js +1 -0
- package/lib/module/games/snake-3d/Snake3DRules.js +1 -0
- package/lib/module/games/snake-3d/Snake3DScene.js +1 -0
- package/lib/module/games/snakes-and-ladders/SnakesAndLadders.js +1 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersConstants.js +1 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersGame.js +1 -0
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersScene.js +1 -0
- package/lib/module/games/space-fighter/SpaceFighter.js +1 -1
- package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -1
- package/lib/module/games/space-fighter/SpaceFighterGame.js +1 -0
- package/lib/module/games/space-fighter/SpaceFighterScene.js +1 -0
- package/lib/module/games/spider-solitaire/SpiderSolitaire.js +1 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireConstants.js +1 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireGame.js +1 -0
- package/lib/module/games/spider-solitaire/SpiderSolitaireRules.js +1 -0
- package/lib/module/games/spider-solitaire/SpiderSolitaireScene.js +1 -0
- package/lib/module/games/stack-tower/StackTower.js +1 -1
- package/lib/module/games/stack-tower/StackTowerConstants.js +1 -1
- package/lib/module/games/stack-tower/StackTowerGame.js +1 -0
- package/lib/module/games/stack-tower/StackTowerScene.js +1 -0
- package/lib/module/games/sudoku/Sudoku.js +1 -1
- package/lib/module/games/sudoku/SudokuConstants.js +1 -1
- package/lib/module/games/sudoku/SudokuGame.js +1 -0
- package/lib/module/games/sudoku/SudokuRules.js +1 -0
- package/lib/module/games/sudoku/SudokuScene.js +1 -0
- package/lib/module/games/tangram/Tangram.js +1 -1
- package/lib/module/games/tangram/TangramConstants.js +1 -1
- package/lib/module/games/tangram/TangramGame.js +1 -0
- package/lib/module/games/tangram/TangramRules.js +1 -0
- package/lib/module/games/tangram/TangramScene.js +1 -0
- package/lib/module/games/tank-1990/Tank1990.js +1 -1
- package/lib/module/games/tank-1990/Tank1990Constants.js +1 -1
- package/lib/module/games/tank-1990/Tank1990Game.js +1 -0
- package/lib/module/games/tank-1990/Tank1990Rules.js +1 -0
- package/lib/module/games/tank-1990/Tank1990Scene.js +1 -0
- package/lib/module/games/tic-tac-toe/TicTacToe.js +1 -1
- package/lib/module/games/tic-tac-toe/TicTacToeConstants.js +1 -1
- package/lib/module/games/tic-tac-toe/TicTacToeGame.js +1 -0
- package/lib/module/games/tic-tac-toe/TicTacToeRules.js +1 -0
- package/lib/module/games/tic-tac-toe/TicTacToeScene.js +1 -0
- package/lib/module/games/tile-home/TileHome.js +1 -1
- package/lib/module/games/tile-home/TileHomeConstants.js +1 -1
- package/lib/module/games/tile-home/TileHomeGame.js +1 -0
- package/lib/module/games/tile-home/TileHomeScene.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHunt.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntConstants.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntControls.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntGame.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntMeshes.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntModel.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntRules.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntScene.js +1 -0
- package/lib/module/games/whack-a-mole/WhackAMole.js +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleGame.js +1 -0
- package/lib/module/games/whack-a-mole/WhackAMoleScene.js +1 -0
- package/lib/module/games/word-search/WordSearch.js +1 -1
- package/lib/module/games/word-search/WordSearchWords.js +1 -0
- package/lib/module/helpers/GamePatternData.js +1 -0
- package/lib/module/helpers/GameSettingsModal.js +1 -1
- package/lib/module/helpers/GameTheme.js +1 -0
- package/lib/module/helpers/IconPaths.js +1 -0
- package/lib/module/helpers/index.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/services/GameAssetLoader.js +1 -0
- package/lib/module/services/GameAssets.js +1 -0
- package/lib/module/services/GameLoaders.js +1 -0
- package/lib/module/services/GamesConstants.js +1 -1
- package/lib/module/services/GamesMetadata.js +1 -1
- package/lib/module/services/GamesService.js +1 -1
- package/lib/module/services/HapticsService.js +1 -1
- package/lib/module/services/ScoringService.js +1 -1
- package/lib/module/services/SfxSources.js +1 -0
- package/lib/module/services/SoundsService.js +1 -1
- package/lib/module/services/ThemeService.js +1 -0
- package/lib/module/services/UtilsService.js +1 -1
- package/lib/module/services/index.js +1 -1
- package/lib/typescript/src/games/arrows/Arrows.d.ts +1 -3
- package/lib/typescript/src/games/arrows/ArrowsConstants.d.ts +48 -32
- package/lib/typescript/src/games/arrows/ArrowsGame.d.ts +60 -0
- package/lib/typescript/src/games/arrows/ArrowsScene.d.ts +67 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +1 -3
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +39 -131
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterGame.d.ts +57 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterPhysics.d.ts +16 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterScene.d.ts +31 -0
- package/lib/typescript/src/games/bike-racing/BikeMeshes.d.ts +14 -0
- package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +2 -1
- package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +38 -29
- package/lib/typescript/src/games/bike-racing/BikeRacingGame.d.ts +104 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingScene.d.ts +25 -0
- package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +1 -3
- package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +48 -30
- package/lib/typescript/src/games/block-blast/BlockBlastGame.d.ts +77 -0
- package/lib/typescript/src/games/block-blast/BlockBlastScene.d.ts +36 -0
- package/lib/typescript/src/games/block-breaker/BlockBreaker.d.ts +1 -3
- package/lib/typescript/src/games/block-breaker/BlockBreakerConstants.d.ts +88 -35
- package/lib/typescript/src/games/block-breaker/BlockBreakerGame.d.ts +82 -0
- package/lib/typescript/src/games/block-breaker/BlockBreakerScene.d.ts +48 -0
- package/lib/typescript/src/games/bluk/Bluk.d.ts +1 -3
- package/lib/typescript/src/games/bluk/BlukConstants.d.ts +65 -54
- package/lib/typescript/src/games/bluk/BlukGame.d.ts +65 -0
- package/lib/typescript/src/games/bluk/BlukRules.d.ts +51 -0
- package/lib/typescript/src/games/bluk/BlukScene.d.ts +54 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +1 -3
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +56 -24
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterGame.d.ts +70 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterScene.d.ts +26 -0
- package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +1 -3
- package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +63 -32
- package/lib/typescript/src/games/candy-crush/CandyCrushGame.d.ts +65 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushScene.d.ts +28 -0
- package/lib/typescript/src/games/car-racing/CarMeshes.d.ts +44 -0
- package/lib/typescript/src/games/car-racing/CarRacing.d.ts +2 -1
- package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +60 -29
- package/lib/typescript/src/games/car-racing/CarRacingFacade.d.ts +5 -0
- package/lib/typescript/src/games/car-racing/CarRacingGame.d.ts +96 -0
- package/lib/typescript/src/games/car-racing/CarRacingScene.d.ts +97 -0
- package/lib/typescript/src/games/car-racing/CarRacingScenery.d.ts +22 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRun.d.ts +1 -3
- package/lib/typescript/src/games/chameleon-run/ChameleonRunBackdrop.d.ts +14 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunConstants.d.ts +44 -42
- package/lib/typescript/src/games/chameleon-run/ChameleonRunGame.d.ts +60 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunMeshes.d.ts +20 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunRules.d.ts +52 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunScene.d.ts +44 -0
- package/lib/typescript/src/games/checkers/Checkers.d.ts +1 -3
- package/lib/typescript/src/games/checkers/CheckersAI.d.ts +11 -0
- package/lib/typescript/src/games/checkers/CheckersConstants.d.ts +32 -72
- package/lib/typescript/src/games/checkers/CheckersGame.d.ts +56 -0
- package/lib/typescript/src/games/checkers/CheckersRules.d.ts +48 -0
- package/lib/typescript/src/games/checkers/CheckersScene.d.ts +41 -0
- package/lib/typescript/src/games/color-switch/ColorSwitch.d.ts +1 -3
- package/lib/typescript/src/games/color-switch/ColorSwitchConstants.d.ts +27 -31
- package/lib/typescript/src/games/color-switch/ColorSwitchGame.d.ts +61 -0
- package/lib/typescript/src/games/color-switch/ColorSwitchScene.d.ts +43 -0
- package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts +1 -3
- package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts +37 -44
- package/lib/typescript/src/games/colors-sort/ColorsSortGame.d.ts +41 -0
- package/lib/typescript/src/games/colors-sort/ColorsSortScene.d.ts +33 -0
- package/lib/typescript/src/games/connect-em-all/ConnectEmAll.d.ts +1 -3
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllConstants.d.ts +43 -17
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllGame.d.ts +54 -0
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllScene.d.ts +49 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoad.d.ts +1 -3
- package/lib/typescript/src/games/crossy-road/CrossyRoadCamera.d.ts +14 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadConstants.d.ts +82 -50
- package/lib/typescript/src/games/crossy-road/CrossyRoadGame.d.ts +64 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadMeshes.d.ts +16 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadPerson.d.ts +10 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadRules.d.ts +36 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadScene.d.ts +38 -0
- package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +1 -3
- package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +48 -72
- package/lib/typescript/src/games/dino-jump/DinoJumpGame.d.ts +60 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpScene.d.ts +35 -0
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxes.d.ts +1 -3
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesConstants.d.ts +31 -36
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesGame.d.ts +44 -0
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesScene.d.ts +31 -0
- package/lib/typescript/src/games/falling-sticks/FallingSticks.d.ts +1 -3
- package/lib/typescript/src/games/falling-sticks/FallingSticksConstants.d.ts +31 -43
- package/lib/typescript/src/games/falling-sticks/FallingSticksGame.d.ts +42 -0
- package/lib/typescript/src/games/falling-sticks/FallingSticksRules.d.ts +36 -0
- package/lib/typescript/src/games/falling-sticks/FallingSticksScene.d.ts +26 -0
- package/lib/typescript/src/games/find-different-number/FindDifferentNumber.d.ts +1 -3
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberConstants.d.ts +33 -29
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberGame.d.ts +43 -0
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberRules.d.ts +8 -0
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberScene.d.ts +31 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +1 -3
- package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +39 -35
- package/lib/typescript/src/games/flappy-bird/FlappyBirdGame.d.ts +66 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdScene.d.ts +41 -0
- package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +1 -3
- package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +71 -44
- package/lib/typescript/src/games/fruit-merger/FruitMergerGame.d.ts +63 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerRules.d.ts +39 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerScene.d.ts +49 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +1 -3
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +51 -76
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaGame.d.ts +76 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaScene.d.ts +52 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaWorld.d.ts +8 -0
- package/lib/typescript/src/games/game-2048/Game2048.d.ts +1 -3
- package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +25 -120
- package/lib/typescript/src/games/game-2048/Game2048Game.d.ts +45 -0
- package/lib/typescript/src/games/game-2048/Game2048Rules.d.ts +32 -0
- package/lib/typescript/src/games/game-2048/Game2048Scene.d.ts +34 -0
- package/lib/typescript/src/games/knife-hit/KnifeHit.d.ts +1 -3
- package/lib/typescript/src/games/knife-hit/KnifeHitConstants.d.ts +41 -49
- package/lib/typescript/src/games/knife-hit/KnifeHitGame.d.ts +49 -0
- package/lib/typescript/src/games/knife-hit/KnifeHitScene.d.ts +37 -0
- package/lib/typescript/src/games/ludo-king/LudoKing.d.ts +1 -3
- package/lib/typescript/src/games/ludo-king/LudoKingConstants.d.ts +50 -28
- package/lib/typescript/src/games/ludo-king/LudoKingGame.d.ts +40 -0
- package/lib/typescript/src/games/ludo-king/LudoKingRules.d.ts +42 -0
- package/lib/typescript/src/games/ludo-king/LudoKingScene.d.ts +53 -0
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +1 -3
- package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +34 -10
- package/lib/typescript/src/games/maze-runner/MazeRunnerGame.d.ts +44 -0
- package/lib/typescript/src/games/maze-runner/MazeRunnerRules.d.ts +34 -0
- package/lib/typescript/src/games/maze-runner/MazeRunnerScene.d.ts +29 -0
- package/lib/typescript/src/games/memory-match/MemoryMatch.d.ts +1 -3
- package/lib/typescript/src/games/memory-match/MemoryMatchConstants.d.ts +42 -42
- package/lib/typescript/src/games/memory-match/MemoryMatchGame.d.ts +53 -0
- package/lib/typescript/src/games/memory-match/MemoryMatchRules.d.ts +14 -0
- package/lib/typescript/src/games/memory-match/MemoryMatchScene.d.ts +35 -0
- package/lib/typescript/src/games/mine-sweeper/MineSweeper.d.ts +1 -3
- package/lib/typescript/src/games/mine-sweeper/MineSweeperConstants.d.ts +43 -82
- package/lib/typescript/src/games/mine-sweeper/MineSweeperGame.d.ts +59 -0
- package/lib/typescript/src/games/mine-sweeper/MineSweeperRules.d.ts +18 -0
- package/lib/typescript/src/games/mine-sweeper/MineSweeperScene.d.ts +23 -0
- package/lib/typescript/src/games/mob-control/MobControl.d.ts +1 -3
- package/lib/typescript/src/games/mob-control/MobControlConstants.d.ts +99 -85
- package/lib/typescript/src/games/mob-control/MobControlGame.d.ts +45 -0
- package/lib/typescript/src/games/mob-control/MobControlMeshes.d.ts +2 -0
- package/lib/typescript/src/games/mob-control/MobControlRenderer.d.ts +20 -0
- package/lib/typescript/src/games/mob-control/MobControlRules.d.ts +68 -0
- package/lib/typescript/src/games/mob-control/MobControlScene.d.ts +58 -0
- package/lib/typescript/src/games/number-search/NumberSearch.d.ts +1 -3
- package/lib/typescript/src/games/number-search/NumberSearchNumbers.d.ts +1 -0
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBolts.d.ts +1 -3
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsConstants.d.ts +27 -79
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsGame.d.ts +56 -0
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsRules.d.ts +65 -0
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsScene.d.ts +48 -0
- package/lib/typescript/src/games/pac-man/PacMan.d.ts +1 -3
- package/lib/typescript/src/games/pac-man/PacManConstants.d.ts +66 -106
- package/lib/typescript/src/games/pac-man/PacManGame.d.ts +48 -0
- package/lib/typescript/src/games/pac-man/PacManRules.d.ts +52 -0
- package/lib/typescript/src/games/pac-man/PacManScene.d.ts +44 -0
- package/lib/typescript/src/games/paper-io/PaperIo.d.ts +1 -3
- package/lib/typescript/src/games/paper-io/PaperIoConstants.d.ts +60 -40
- package/lib/typescript/src/games/paper-io/PaperIoGame.d.ts +49 -0
- package/lib/typescript/src/games/paper-io/PaperIoMeshes.d.ts +13 -0
- package/lib/typescript/src/games/paper-io/PaperIoRules.d.ts +71 -0
- package/lib/typescript/src/games/paper-io/PaperIoScene.d.ts +39 -0
- package/lib/typescript/src/games/penguin-run/PenguinMeshes.d.ts +9 -0
- package/lib/typescript/src/games/penguin-run/PenguinModel.d.ts +42 -0
- package/lib/typescript/src/games/penguin-run/PenguinRun.d.ts +1 -0
- package/lib/typescript/src/games/penguin-run/PenguinRunConstants.d.ts +58 -0
- package/lib/typescript/src/games/penguin-run/PenguinRunGame.d.ts +64 -0
- package/lib/typescript/src/games/penguin-run/PenguinRunScene.d.ts +65 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +1 -3
- package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +23 -45
- package/lib/typescript/src/games/perfect-circle/PerfectCircleGame.d.ts +40 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleRules.d.ts +55 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleScene.d.ts +32 -0
- package/lib/typescript/src/games/pipe-connect/PipeConnect.d.ts +1 -3
- package/lib/typescript/src/games/pipe-connect/PipeConnectConstants.d.ts +36 -32
- package/lib/typescript/src/games/pipe-connect/PipeConnectGame.d.ts +40 -0
- package/lib/typescript/src/games/pipe-connect/PipeConnectRules.d.ts +16 -0
- package/lib/typescript/src/games/pipe-connect/PipeConnectScene.d.ts +28 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTua.d.ts +2 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaConstants.d.ts +64 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaGame.d.ts +34 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaModel.d.ts +9 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaScene.d.ts +13 -0
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +1 -4
- package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +25 -36
- package/lib/typescript/src/games/popit-fidget/PopitFidgetGame.d.ts +37 -0
- package/lib/typescript/src/games/popit-fidget/PopitFidgetScene.d.ts +19 -0
- package/lib/typescript/src/games/reversi/Reversi.d.ts +1 -3
- package/lib/typescript/src/games/reversi/ReversiConstants.d.ts +31 -62
- package/lib/typescript/src/games/reversi/ReversiGame.d.ts +54 -0
- package/lib/typescript/src/games/reversi/ReversiRules.d.ts +22 -0
- package/lib/typescript/src/games/reversi/ReversiScene.d.ts +27 -0
- package/lib/typescript/src/games/search-grid/SearchGrid.d.ts +20 -0
- package/lib/typescript/src/games/search-grid/SearchGridConstants.d.ts +60 -0
- package/lib/typescript/src/games/search-grid/SearchGridGame.d.ts +52 -0
- package/lib/typescript/src/games/search-grid/SearchGridScene.d.ts +43 -0
- package/lib/typescript/src/games/shared/BackdropCard.d.ts +2 -0
- package/lib/typescript/src/games/shared/EngineBackdrop.d.ts +19 -0
- package/lib/typescript/src/games/shared/EngineBlasts.d.ts +26 -0
- package/lib/typescript/src/games/shared/EngineBlocks.d.ts +19 -0
- package/lib/typescript/src/games/shared/EngineControlText.d.ts +2 -0
- package/lib/typescript/src/games/shared/EngineDice.d.ts +24 -0
- package/lib/typescript/src/games/shared/EngineFootprint.d.ts +17 -0
- package/lib/typescript/src/games/shared/EngineFruits.d.ts +27 -0
- package/lib/typescript/src/games/shared/EngineGameLoader.d.ts +4 -0
- package/lib/typescript/src/games/shared/EngineGameScreen.d.ts +48 -0
- package/lib/typescript/src/games/shared/EngineGameWidth.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineGameWidth.web.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineGlyphs.d.ts +15 -0
- package/lib/typescript/src/games/shared/EngineHud.d.ts +138 -0
- package/lib/typescript/src/games/shared/EngineLoading.d.ts +77 -0
- package/lib/typescript/src/games/shared/EngineMeadow.d.ts +90 -0
- package/lib/typescript/src/games/shared/EngineMeshCache.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineMeshes.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineRacingChase.d.ts +11 -0
- package/lib/typescript/src/games/shared/EngineRacingHandling.d.ts +15 -0
- package/lib/typescript/src/games/shared/EngineReadyContext.d.ts +2 -0
- package/lib/typescript/src/games/shared/EngineTilt.d.ts +19 -0
- package/lib/typescript/src/games/shared/EngineTouchSurface.d.ts +20 -0
- package/lib/typescript/src/games/shared/EngineUtils.d.ts +18 -0
- package/lib/typescript/src/games/shared/GameActivity.d.ts +3 -0
- package/lib/typescript/src/games/shared/GameLoading.d.ts +14 -0
- package/lib/typescript/src/games/shared/GameLoadingTransition.d.ts +9 -0
- package/lib/typescript/src/games/shared/ProceduralCacheVersion.d.ts +1 -0
- package/lib/typescript/src/games/shared/useEngineGame.d.ts +69 -0
- package/lib/typescript/src/games/shared/useGameResource.d.ts +2 -0
- package/lib/typescript/src/games/shared/useLiveState.d.ts +4 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +1 -3
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +32 -40
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersGame.d.ts +48 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersRules.d.ts +22 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersScene.d.ts +30 -0
- package/lib/typescript/src/games/snake-3d/Snake3D.d.ts +1 -3
- package/lib/typescript/src/games/snake-3d/Snake3DConstants.d.ts +31 -68
- package/lib/typescript/src/games/snake-3d/Snake3DGame.d.ts +42 -0
- package/lib/typescript/src/games/snake-3d/Snake3DMotion.d.ts +3 -0
- package/lib/typescript/src/games/snake-3d/Snake3DRules.d.ts +42 -0
- package/lib/typescript/src/games/snake-3d/Snake3DScene.d.ts +35 -0
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLadders.d.ts +1 -3
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersConstants.d.ts +58 -50
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersGame.d.ts +45 -0
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersScene.d.ts +50 -0
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +1 -3
- package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +33 -23
- package/lib/typescript/src/games/space-fighter/SpaceFighterGame.d.ts +58 -0
- package/lib/typescript/src/games/space-fighter/SpaceFighterScene.d.ts +51 -0
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaire.d.ts +1 -3
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireConstants.d.ts +52 -35
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireGame.d.ts +67 -0
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireRules.d.ts +39 -0
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireScene.d.ts +60 -0
- package/lib/typescript/src/games/stack-tower/StackTower.d.ts +1 -3
- package/lib/typescript/src/games/stack-tower/StackTowerConstants.d.ts +31 -23
- package/lib/typescript/src/games/stack-tower/StackTowerGame.d.ts +58 -0
- package/lib/typescript/src/games/stack-tower/StackTowerScene.d.ts +27 -0
- package/lib/typescript/src/games/sudoku/Sudoku.d.ts +1 -3
- package/lib/typescript/src/games/sudoku/SudokuConstants.d.ts +50 -55
- package/lib/typescript/src/games/sudoku/SudokuGame.d.ts +56 -0
- package/lib/typescript/src/games/sudoku/SudokuRules.d.ts +23 -0
- package/lib/typescript/src/games/sudoku/SudokuScene.d.ts +44 -0
- package/lib/typescript/src/games/tangram/Tangram.d.ts +1 -3
- package/lib/typescript/src/games/tangram/TangramConstants.d.ts +33 -52
- package/lib/typescript/src/games/tangram/TangramGame.d.ts +68 -0
- package/lib/typescript/src/games/tangram/TangramRules.d.ts +61 -0
- package/lib/typescript/src/games/tangram/TangramScene.d.ts +42 -0
- package/lib/typescript/src/games/tank-1990/Tank1990.d.ts +1 -3
- package/lib/typescript/src/games/tank-1990/Tank1990Constants.d.ts +44 -127
- package/lib/typescript/src/games/tank-1990/Tank1990Game.d.ts +50 -0
- package/lib/typescript/src/games/tank-1990/Tank1990Rules.d.ts +67 -0
- package/lib/typescript/src/games/tank-1990/Tank1990Scene.d.ts +38 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToe.d.ts +1 -3
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeConstants.d.ts +35 -72
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeGame.d.ts +54 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeRules.d.ts +10 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeScene.d.ts +26 -0
- package/lib/typescript/src/games/tile-home/TileHome.d.ts +1 -3
- package/lib/typescript/src/games/tile-home/TileHomeConstants.d.ts +72 -70
- package/lib/typescript/src/games/tile-home/TileHomeGame.d.ts +72 -0
- package/lib/typescript/src/games/tile-home/TileHomeScene.d.ts +28 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHunt.d.ts +3 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntConstants.d.ts +144 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntControls.d.ts +75 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntGame.d.ts +41 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntMeshes.d.ts +26 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntModel.d.ts +57 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntRules.d.ts +198 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntScene.d.ts +40 -0
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +1 -3
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +35 -45
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleGame.d.ts +51 -0
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleScene.d.ts +31 -0
- package/lib/typescript/src/games/word-search/WordSearch.d.ts +1 -3
- package/lib/typescript/src/games/word-search/WordSearchWords.d.ts +1 -0
- package/lib/typescript/src/helpers/GamePatternData.d.ts +46 -0
- package/lib/typescript/src/helpers/GameSettingsModal.d.ts +1 -1
- package/lib/typescript/src/helpers/GameTheme.d.ts +18 -0
- package/lib/typescript/src/helpers/IconPaths.d.ts +4 -0
- package/lib/typescript/src/helpers/index.d.ts +1 -19
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/services/GameAssetLoader.d.ts +32 -0
- package/lib/typescript/src/services/GameAssets.d.ts +11 -0
- package/lib/typescript/src/services/GameLoaders.d.ts +18 -0
- package/lib/typescript/src/services/GamesConstants.d.ts +11 -0
- package/lib/typescript/src/services/GamesMetadata.d.ts +2 -0
- package/lib/typescript/src/services/HapticsService.d.ts +1 -1
- package/lib/typescript/src/services/SfxSources.d.ts +79 -0
- package/lib/typescript/src/services/SoundsService.d.ts +487 -1566
- package/lib/typescript/src/services/ThemeService.d.ts +117 -0
- package/lib/typescript/src/services/UtilsService.d.ts +20 -2
- package/lib/typescript/src/services/index.d.ts +3 -0
- package/lib/web/assets/005ea2045b17-explorer.glb +0 -0
- package/lib/web/assets/01e2f0a0bbf6-hurt.wav +0 -0
- package/lib/web/assets/01fc0ecf658c-explorer-atlas.png +0 -0
- package/lib/web/assets/029329b2c7c0-asphalt.png +0 -0
- package/lib/web/assets/0376bda32be3-robot.wav +0 -0
- package/lib/web/assets/0719fb0bb38e-soft_glow.png +0 -0
- package/lib/web/assets/0b21278bffba-boing.wav +0 -0
- package/lib/web/assets/1333c9d1273c-flip_disc.wav +0 -0
- package/lib/web/assets/15785f62ee5f-time_up.wav +0 -0
- package/lib/web/assets/177f00502e08-bonus.wav +0 -0
- package/lib/web/assets/19e47dcfda1f-pling.wav +0 -0
- package/lib/web/assets/1a677e0f7f6c-laugh.wav +0 -0
- package/lib/web/assets/1ad2914478b1-eat.wav +0 -0
- package/lib/web/assets/1b0d703ddd1a-dance.wav +0 -0
- package/lib/web/assets/1e4330fddd74-chime.wav +0 -0
- package/lib/web/assets/2432a97b0af1-cannon.wav +0 -0
- package/lib/web/assets/2574370d6aa0-blocked.wav +0 -0
- package/lib/web/assets/2699065037ad-select.wav +0 -0
- package/lib/web/assets/28d30f53ad73-ladder.wav +0 -0
- package/lib/web/assets/2c1ec05270b2-point.wav +0 -0
- package/lib/web/assets/2e1dd99a0213-tick.wav +0 -0
- package/lib/web/assets/3084575cecdb-card_flip.wav +0 -0
- package/lib/web/assets/308bc31b6af5-engine.wav +0 -0
- package/lib/web/assets/336d63b739b5-combo.wav +0 -0
- package/lib/web/assets/3a369e2596e4-clash.wav +0 -0
- package/lib/web/assets/3a816e20212f-capture.wav +0 -0
- package/lib/web/assets/40240217810a-nitro.wav +0 -0
- package/lib/web/assets/46edaa54d1ea-crunch.wav +0 -0
- package/lib/web/assets/501994226995-coin.wav +0 -0
- package/lib/web/assets/5525d7f6a4b8-rotate.wav +0 -0
- package/lib/web/assets/5e816e1f0929-dice_roll.wav +0 -0
- package/lib/web/assets/60e2dec3cf41-deselect.wav +0 -0
- package/lib/web/assets/6ab86ea29e5c-six.wav +0 -0
- package/lib/web/assets/6da3b101926d-merge.wav +0 -0
- package/lib/web/assets/6e686dea513c-bark.jpg +0 -0
- package/lib/web/assets/6ff9a6a13714-limestone.jpg +0 -0
- package/lib/web/assets/735c4a1cd22e-invalid.wav +0 -0
- package/lib/web/assets/73f75c35ff5d-snake.wav +0 -0
- package/lib/web/assets/7506e3efe264-catch.wav +0 -0
- package/lib/web/assets/76493a2ada2d-ad_bolt.png +0 -0
- package/lib/web/assets/793abe620201-card_place.wav +0 -0
- package/lib/web/assets/7da09c57f52d-facade.png +0 -0
- package/lib/web/assets/7e1a902176f6-pine.png +0 -0
- package/lib/web/assets/7eb943b85c21-play-with-tua.glb +0 -0
- package/lib/web/assets/837d43c06dba-ad_bubbles.png +0 -0
- package/lib/web/assets/84f1a7dfa368-game_over.wav +0 -0
- package/lib/web/assets/850e26ce3b0a-flap.wav +0 -0
- package/lib/web/assets/854b31683cb2-draw.wav +0 -0
- package/lib/web/assets/8616150393b7-error.wav +0 -0
- package/lib/web/assets/87cc6d503ec6-river.jpg +0 -0
- package/lib/web/assets/88755845922c-hop.wav +0 -0
- package/lib/web/assets/8ec8f469492d-chomp_alt.wav +0 -0
- package/lib/web/assets/8f17f89b138c-pew.wav +0 -0
- package/lib/web/assets/9210a24472d1-place.wav +0 -0
- package/lib/web/assets/930d833ebf89-splash.wav +0 -0
- package/lib/web/assets/970f7c59265d-swoosh.wav +0 -0
- package/lib/web/assets/9900b8d1b6ad-flag.wav +0 -0
- package/lib/web/assets/9ab04403898b-clang.wav +0 -0
- package/lib/web/assets/9d8b97a10d45-drop.wav +0 -0
- package/lib/web/assets/9d9c02ddc7ed-boom.wav +0 -0
- package/lib/web/assets/9e1b5114d56d-pop_soft.wav +0 -0
- package/lib/web/assets/a01f22d6dbb3-thud.wav +0 -0
- package/lib/web/assets/a44a1cf1a1a8-bump.wav +0 -0
- package/lib/web/assets/a76940a48c68-hit.wav +0 -0
- package/lib/web/assets/a98ddb724460-leaves.png +0 -0
- package/lib/web/assets/aa0960e8bee6-footstep_run.wav +0 -0
- package/lib/web/assets/aa570c9d3e15-star.wav +0 -0
- package/lib/web/assets/aacb999f3c49-tock.wav +0 -0
- package/lib/web/assets/aae0c16c5e89-reveal.wav +0 -0
- package/lib/web/assets/ab37cd128509-click.wav +0 -0
- package/lib/web/assets/b0bc66f49005-warning.wav +0 -0
- package/lib/web/assets/b1edd756ac43-zap.wav +0 -0
- package/lib/web/assets/b3894545cf71-slice.wav +0 -0
- package/lib/web/assets/b3c6225d055a-meadow.jpg +0 -0
- package/lib/web/assets/b60ca65cdfcb-gate.wav +0 -0
- package/lib/web/assets/b8900bb2c5c7-win.wav +0 -0
- package/lib/web/assets/baff6feda846-lose.wav +0 -0
- package/lib/web/assets/bed31305d60d-ad_chevrons.png +0 -0
- package/lib/web/assets/c26f4a624e7d-shuffle.wav +0 -0
- package/lib/web/assets/c3a9edfad195-die.wav +0 -0
- package/lib/web/assets/c4aa9d773f2a-footstep_walk.wav +0 -0
- package/lib/web/assets/c5ab3ff0003f-crash.wav +0 -0
- package/lib/web/assets/c5eb07deddd4-start.wav +0 -0
- package/lib/web/assets/c6c58d9ae452-pop.wav +0 -0
- package/lib/web/assets/cea48c3cd9c7-balloon_pop.wav +0 -0
- package/lib/web/assets/d15591767778-tap.wav +0 -0
- package/lib/web/assets/d1781a52234f-slide.wav +0 -0
- package/lib/web/assets/d3bf2d9f793b-snap.wav +0 -0
- package/lib/web/assets/d8f59ebd3537-jump.wav +0 -0
- package/lib/web/assets/dafea2f28854-power_up.wav +0 -0
- package/lib/web/assets/e2e7f5ae2d1b-whoosh.wav +0 -0
- package/lib/web/assets/e2f90a23e1bd-chomp.wav +0 -0
- package/lib/web/assets/e454e56df89a-clack.wav +0 -0
- package/lib/web/assets/e8cbc2b88bc4-Inter-SemiBold.ttf +0 -0
- package/lib/web/assets/ed6496b891fc-land.wav +0 -0
- package/lib/web/assets/f21920200a81-thunk.wav +0 -0
- package/lib/web/assets/f753b43be89d-whack.wav +0 -0
- package/lib/web/assets/f798c4b5cf4d-miss.wav +0 -0
- package/lib/web/assets/fbe299716916-grass.png +0 -0
- package/lib/web/chunk-52ez2s9z.js +15 -0
- package/lib/web/chunk-8675t224.js +1 -0
- package/lib/web/index.js +2 -0
- package/lib/web/package.json +1 -0
- package/lib/web/services.js +2 -0
- package/package.json +94 -73
- package/src/assets/fonts/Inter-SemiBold.ttf +0 -0
- package/src/assets/models/explorer/explorer.glb +0 -0
- package/src/assets/models/explorer/params.json +51 -0
- package/src/assets/models/explorer/source.json +222 -0
- package/src/assets/models/play-with-tua/play-with-tua.glb +0 -0
- package/src/assets/models/play-with-tua/sources.json +141 -0
- package/src/assets/sfx/balloon_pop.wav +0 -0
- package/src/assets/sfx/blocked.wav +0 -0
- package/src/assets/sfx/boing.wav +0 -0
- package/src/assets/sfx/bonus.wav +0 -0
- package/src/assets/sfx/boom.wav +0 -0
- package/src/assets/sfx/bump.wav +0 -0
- package/src/assets/sfx/cannon.wav +0 -0
- package/src/assets/sfx/capture.wav +0 -0
- package/src/assets/sfx/card_flip.wav +0 -0
- package/src/assets/sfx/card_place.wav +0 -0
- package/src/assets/sfx/catch.wav +0 -0
- package/src/assets/sfx/chime.wav +0 -0
- package/src/assets/sfx/chomp.wav +0 -0
- package/src/assets/sfx/chomp_alt.wav +0 -0
- package/src/assets/sfx/clack.wav +0 -0
- package/src/assets/sfx/clang.wav +0 -0
- package/src/assets/sfx/clash.wav +0 -0
- package/src/assets/sfx/click.wav +0 -0
- package/src/assets/sfx/coin.wav +0 -0
- package/src/assets/sfx/combo.wav +0 -0
- package/src/assets/sfx/crash.wav +0 -0
- package/src/assets/sfx/crunch.wav +0 -0
- package/src/assets/sfx/dance.wav +0 -0
- package/src/assets/sfx/deselect.wav +0 -0
- package/src/assets/sfx/dice_roll.wav +0 -0
- package/src/assets/sfx/die.wav +0 -0
- package/src/assets/sfx/draw.wav +0 -0
- package/src/assets/sfx/drop.wav +0 -0
- package/src/assets/sfx/eat.wav +0 -0
- package/src/assets/sfx/engine.wav +0 -0
- package/src/assets/sfx/error.wav +0 -0
- package/src/assets/sfx/flag.wav +0 -0
- package/src/assets/sfx/flap.wav +0 -0
- package/src/assets/sfx/flip_disc.wav +0 -0
- package/src/assets/sfx/footstep_run.wav +0 -0
- package/src/assets/sfx/footstep_walk.wav +0 -0
- package/src/assets/sfx/game_over.wav +0 -0
- package/src/assets/sfx/gate.wav +0 -0
- package/src/assets/sfx/hit.wav +0 -0
- package/src/assets/sfx/hop.wav +0 -0
- package/src/assets/sfx/hurt.wav +0 -0
- package/src/assets/sfx/invalid.wav +0 -0
- package/src/assets/sfx/jump.wav +0 -0
- package/src/assets/sfx/ladder.wav +0 -0
- package/src/assets/sfx/land.wav +0 -0
- package/src/assets/sfx/laugh.wav +0 -0
- package/src/assets/sfx/lose.wav +0 -0
- package/src/assets/sfx/merge.wav +0 -0
- package/src/assets/sfx/miss.wav +0 -0
- package/src/assets/sfx/nitro.wav +0 -0
- package/src/assets/sfx/pew.wav +0 -0
- package/src/assets/sfx/place.wav +0 -0
- package/src/assets/sfx/pling.wav +0 -0
- package/src/assets/sfx/point.wav +0 -0
- package/src/assets/sfx/pop.wav +0 -0
- package/src/assets/sfx/pop_soft.wav +0 -0
- package/src/assets/sfx/power_up.wav +0 -0
- package/src/assets/sfx/reveal.wav +0 -0
- package/src/assets/sfx/robot.wav +0 -0
- package/src/assets/sfx/rotate.wav +0 -0
- package/src/assets/sfx/run_steps.wav +0 -0
- package/src/assets/sfx/select.wav +0 -0
- package/src/assets/sfx/shuffle.wav +0 -0
- package/src/assets/sfx/six.wav +0 -0
- package/src/assets/sfx/slice.wav +0 -0
- package/src/assets/sfx/slide.wav +0 -0
- package/src/assets/sfx/snake.wav +0 -0
- package/src/assets/sfx/snap.wav +0 -0
- package/src/assets/sfx/splash.wav +0 -0
- package/src/assets/sfx/star.wav +0 -0
- package/src/assets/sfx/start.wav +0 -0
- package/src/assets/sfx/swoosh.wav +0 -0
- package/src/assets/sfx/tap.wav +0 -0
- package/src/assets/sfx/thud.wav +0 -0
- package/src/assets/sfx/thunk.wav +0 -0
- package/src/assets/sfx/tick.wav +0 -0
- package/src/assets/sfx/time_up.wav +0 -0
- package/src/assets/sfx/tock.wav +0 -0
- package/src/assets/sfx/walk_steps.wav +0 -0
- package/src/assets/sfx/warning.wav +0 -0
- package/src/assets/sfx/whack.wav +0 -0
- package/src/assets/sfx/whoosh.wav +0 -0
- package/src/assets/sfx/win.wav +0 -0
- package/src/assets/sfx/zap.wav +0 -0
- package/src/assets/textures/ad_bolt.png +0 -0
- package/src/assets/textures/ad_bubbles.png +0 -0
- package/src/assets/textures/ad_chevrons.png +0 -0
- package/src/assets/textures/asphalt.png +0 -0
- package/src/assets/textures/bark.jpg +0 -0
- package/src/assets/textures/explorer-atlas.png +0 -0
- package/src/assets/textures/facade.png +0 -0
- package/src/assets/textures/grass.png +0 -0
- package/src/assets/textures/leaves.png +0 -0
- package/src/assets/textures/limestone.jpg +0 -0
- package/src/assets/textures/meadow.jpg +0 -0
- package/src/assets/textures/nature-sources.json +87 -0
- package/src/assets/textures/pine.png +0 -0
- package/src/assets/textures/river.jpg +0 -0
- package/src/assets/textures/soft_glow.png +0 -0
- package/src/games/arrows/Arrows.tsx +69 -0
- package/src/games/arrows/ArrowsConstants.ts +107 -0
- package/src/games/arrows/ArrowsGame.ts +735 -0
- package/src/games/arrows/ArrowsScene.ts +395 -0
- package/src/games/balloon-blaster/BalloonBlaster.tsx +75 -0
- package/src/games/balloon-blaster/BalloonBlasterConstants.ts +79 -0
- package/src/games/balloon-blaster/BalloonBlasterGame.ts +287 -0
- package/src/games/balloon-blaster/BalloonBlasterPhysics.ts +95 -0
- package/src/games/balloon-blaster/BalloonBlasterScene.ts +225 -0
- package/src/games/bike-racing/BikeMeshes.ts +273 -0
- package/src/games/bike-racing/BikeRacing.tsx +211 -0
- package/src/games/bike-racing/BikeRacingConstants.ts +103 -0
- package/src/games/bike-racing/BikeRacingGame.ts +557 -0
- package/src/games/bike-racing/BikeRacingScene.ts +119 -0
- package/src/games/block-blast/BlockBlast.tsx +73 -0
- package/src/games/block-blast/BlockBlastConstants.ts +179 -0
- package/src/games/block-blast/BlockBlastGame.ts +471 -0
- package/src/games/block-blast/BlockBlastScene.ts +156 -0
- package/src/games/block-breaker/BlockBreaker.tsx +79 -0
- package/src/games/block-breaker/BlockBreakerConstants.ts +139 -0
- package/src/games/block-breaker/BlockBreakerGame.ts +459 -0
- package/src/games/block-breaker/BlockBreakerScene.ts +257 -0
- package/src/games/bluk/Bluk.tsx +82 -0
- package/src/games/bluk/BlukConstants.ts +121 -0
- package/src/games/bluk/BlukGame.ts +323 -0
- package/src/games/bluk/BlukRules.ts +154 -0
- package/src/games/bluk/BlukScene.ts +514 -0
- package/src/games/bubble-shooter/BubbleShooter.tsx +76 -0
- package/src/games/bubble-shooter/BubbleShooterConstants.ts +103 -0
- package/src/games/bubble-shooter/BubbleShooterGame.ts +459 -0
- package/src/games/bubble-shooter/BubbleShooterScene.ts +158 -0
- package/src/games/candy-crush/CandyCrush.tsx +77 -0
- package/src/games/candy-crush/CandyCrushConstants.ts +94 -0
- package/src/games/candy-crush/CandyCrushGame.ts +477 -0
- package/src/games/candy-crush/CandyCrushScene.ts +209 -0
- package/src/games/car-racing/CarMeshes.ts +440 -0
- package/src/games/car-racing/CarRacing.tsx +211 -0
- package/src/games/car-racing/CarRacingConstants.ts +167 -0
- package/src/games/car-racing/CarRacingFacade.ts +40 -0
- package/src/games/car-racing/CarRacingGame.ts +539 -0
- package/src/games/car-racing/CarRacingScene.ts +1026 -0
- package/src/games/car-racing/CarRacingScenery.ts +265 -0
- package/src/games/chameleon-run/ChameleonRun.tsx +96 -0
- package/src/games/chameleon-run/ChameleonRunBackdrop.ts +186 -0
- package/src/games/chameleon-run/ChameleonRunConstants.ts +47 -0
- package/src/games/chameleon-run/ChameleonRunGame.ts +309 -0
- package/src/games/chameleon-run/ChameleonRunMeshes.ts +305 -0
- package/src/games/chameleon-run/ChameleonRunRules.ts +252 -0
- package/src/games/chameleon-run/ChameleonRunScene.ts +310 -0
- package/src/games/checkers/Checkers.tsx +83 -0
- package/src/games/checkers/CheckersAI.ts +255 -0
- package/src/games/checkers/CheckersConstants.ts +68 -0
- package/src/games/checkers/CheckersGame.ts +322 -0
- package/src/games/checkers/CheckersRules.ts +167 -0
- package/src/games/checkers/CheckersScene.ts +308 -0
- package/src/games/color-switch/ColorSwitch.tsx +75 -0
- package/src/games/color-switch/ColorSwitchConstants.ts +61 -0
- package/src/games/color-switch/ColorSwitchGame.ts +329 -0
- package/src/games/color-switch/ColorSwitchScene.ts +220 -0
- package/src/games/colors-sort/ColorsSort.tsx +82 -0
- package/src/games/colors-sort/ColorsSortConstants.ts +119 -0
- package/src/games/colors-sort/ColorsSortGame.ts +246 -0
- package/src/games/colors-sort/ColorsSortScene.ts +315 -0
- package/src/games/connect-em-all/ConnectEmAll.tsx +70 -0
- package/src/games/connect-em-all/ConnectEmAllConstants.ts +77 -0
- package/src/games/connect-em-all/ConnectEmAllGame.ts +401 -0
- package/src/games/connect-em-all/ConnectEmAllScene.ts +235 -0
- package/src/games/crossy-road/CrossyRoad.tsx +74 -0
- package/src/games/crossy-road/CrossyRoadCamera.ts +59 -0
- package/src/games/crossy-road/CrossyRoadConstants.ts +132 -0
- package/src/games/crossy-road/CrossyRoadGame.ts +293 -0
- package/src/games/crossy-road/CrossyRoadMeshes.ts +195 -0
- package/src/games/crossy-road/CrossyRoadPerson.ts +198 -0
- package/src/games/crossy-road/CrossyRoadRules.ts +99 -0
- package/src/games/crossy-road/CrossyRoadScene.ts +355 -0
- package/src/games/dino-jump/DinoJump.tsx +77 -0
- package/src/games/dino-jump/DinoJumpConstants.ts +80 -0
- package/src/games/dino-jump/DinoJumpGame.ts +344 -0
- package/src/games/dino-jump/DinoJumpScene.ts +686 -0
- package/src/games/dots-and-boxes/DotsAndBoxes.tsx +83 -0
- package/src/games/dots-and-boxes/DotsAndBoxesConstants.ts +77 -0
- package/src/games/dots-and-boxes/DotsAndBoxesGame.ts +271 -0
- package/src/games/dots-and-boxes/DotsAndBoxesScene.ts +249 -0
- package/src/games/falling-sticks/FallingSticks.tsx +72 -0
- package/src/games/falling-sticks/FallingSticksConstants.ts +62 -0
- package/src/games/falling-sticks/FallingSticksGame.ts +220 -0
- package/src/games/falling-sticks/FallingSticksRules.ts +145 -0
- package/src/games/falling-sticks/FallingSticksScene.ts +245 -0
- package/src/games/find-different-number/FindDifferentNumber.tsx +74 -0
- package/src/games/find-different-number/FindDifferentNumberConstants.ts +74 -0
- package/src/games/find-different-number/FindDifferentNumberGame.ts +174 -0
- package/src/games/find-different-number/FindDifferentNumberRules.ts +43 -0
- package/src/games/find-different-number/FindDifferentNumberScene.ts +193 -0
- package/src/games/flappy-bird/FlappyBird.tsx +73 -0
- package/src/games/flappy-bird/FlappyBirdConstants.ts +95 -0
- package/src/games/flappy-bird/FlappyBirdGame.ts +375 -0
- package/src/games/flappy-bird/FlappyBirdScene.ts +630 -0
- package/src/games/fruit-merger/FruitMerger.tsx +73 -0
- package/src/games/fruit-merger/FruitMergerConstants.ts +102 -0
- package/src/games/fruit-merger/FruitMergerGame.ts +285 -0
- package/src/games/fruit-merger/FruitMergerRules.ts +286 -0
- package/src/games/fruit-merger/FruitMergerScene.ts +498 -0
- package/src/games/fruit-ninja/FruitNinja.tsx +129 -0
- package/src/games/fruit-ninja/FruitNinjaConstants.ts +107 -0
- package/src/games/fruit-ninja/FruitNinjaGame.ts +391 -0
- package/src/games/fruit-ninja/FruitNinjaScene.ts +319 -0
- package/src/games/fruit-ninja/FruitNinjaWorld.ts +17 -0
- package/src/games/game-2048/Game2048.tsx +84 -0
- package/src/games/game-2048/Game2048Constants.ts +68 -0
- package/src/games/game-2048/Game2048Game.ts +181 -0
- package/src/games/game-2048/Game2048Rules.ts +101 -0
- package/src/games/game-2048/Game2048Scene.ts +206 -0
- package/src/games/knife-hit/KnifeHit.tsx +78 -0
- package/src/games/knife-hit/KnifeHitConstants.ts +89 -0
- package/src/games/knife-hit/KnifeHitGame.ts +264 -0
- package/src/games/knife-hit/KnifeHitScene.ts +360 -0
- package/src/games/ludo-king/LudoKing.tsx +86 -0
- package/src/games/ludo-king/LudoKingConstants.ts +212 -0
- package/src/games/ludo-king/LudoKingGame.ts +326 -0
- package/src/games/ludo-king/LudoKingRules.ts +143 -0
- package/src/games/ludo-king/LudoKingScene.ts +397 -0
- package/src/games/maze-runner/MazeRunner.tsx +88 -0
- package/src/games/maze-runner/MazeRunnerConstants.ts +65 -0
- package/src/games/maze-runner/MazeRunnerGame.ts +176 -0
- package/src/games/maze-runner/MazeRunnerRules.ts +161 -0
- package/src/games/maze-runner/MazeRunnerScene.ts +245 -0
- package/src/games/memory-match/MemoryMatch.tsx +77 -0
- package/src/games/memory-match/MemoryMatchConstants.ts +105 -0
- package/src/games/memory-match/MemoryMatchGame.ts +222 -0
- package/src/games/memory-match/MemoryMatchRules.ts +38 -0
- package/src/games/memory-match/MemoryMatchScene.ts +268 -0
- package/src/games/mine-sweeper/MineSweeper.tsx +77 -0
- package/src/games/mine-sweeper/MineSweeperConstants.ts +94 -0
- package/src/games/mine-sweeper/MineSweeperGame.ts +234 -0
- package/src/games/mine-sweeper/MineSweeperRules.ts +67 -0
- package/src/games/mine-sweeper/MineSweeperScene.ts +262 -0
- package/src/games/mob-control/MobControl.tsx +73 -0
- package/src/games/mob-control/MobControlConstants.ts +106 -0
- package/src/games/mob-control/MobControlGame.ts +176 -0
- package/src/games/mob-control/MobControlMeshes.ts +85 -0
- package/src/games/mob-control/MobControlRenderer.ts +108 -0
- package/src/games/mob-control/MobControlRules.ts +522 -0
- package/src/games/mob-control/MobControlScene.ts +399 -0
- package/src/games/number-search/NumberSearch.tsx +18 -0
- package/src/games/number-search/NumberSearchNumbers.ts +623 -0
- package/src/games/nuts-and-bolts/NutsAndBolts.tsx +85 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsConstants.ts +75 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsGame.ts +298 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsRules.ts +474 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsScene.ts +498 -0
- package/src/games/pac-man/PacMan.tsx +86 -0
- package/src/games/pac-man/PacManConstants.ts +169 -0
- package/src/games/pac-man/PacManGame.ts +406 -0
- package/src/games/pac-man/PacManRules.ts +255 -0
- package/src/games/pac-man/PacManScene.ts +387 -0
- package/src/games/paper-io/PaperIo.tsx +91 -0
- package/src/games/paper-io/PaperIoConstants.ts +86 -0
- package/src/games/paper-io/PaperIoGame.ts +193 -0
- package/src/games/paper-io/PaperIoMeshes.ts +233 -0
- package/src/games/paper-io/PaperIoRules.ts +315 -0
- package/src/games/paper-io/PaperIoScene.ts +310 -0
- package/src/games/penguin-run/PenguinMeshes.ts +269 -0
- package/src/games/penguin-run/PenguinModel.ts +712 -0
- package/src/games/penguin-run/PenguinRun.tsx +77 -0
- package/src/games/penguin-run/PenguinRunConstants.ts +69 -0
- package/src/games/penguin-run/PenguinRunGame.ts +406 -0
- package/src/games/penguin-run/PenguinRunScene.ts +949 -0
- package/src/games/perfect-circle/PerfectCircle.tsx +74 -0
- package/src/games/perfect-circle/PerfectCircleConstants.ts +52 -0
- package/src/games/perfect-circle/PerfectCircleGame.ts +153 -0
- package/src/games/perfect-circle/PerfectCircleRules.ts +111 -0
- package/src/games/perfect-circle/PerfectCircleScene.ts +176 -0
- package/src/games/pipe-connect/PipeConnect.tsx +69 -0
- package/src/games/pipe-connect/PipeConnectConstants.ts +101 -0
- package/src/games/pipe-connect/PipeConnectGame.ts +179 -0
- package/src/games/pipe-connect/PipeConnectRules.ts +326 -0
- package/src/games/pipe-connect/PipeConnectScene.ts +271 -0
- package/src/games/play-with-tua/PlayWithTua.tsx +123 -0
- package/src/games/play-with-tua/PlayWithTuaConstants.ts +70 -0
- package/src/games/play-with-tua/PlayWithTuaGame.ts +167 -0
- package/src/games/play-with-tua/PlayWithTuaModel.ts +42 -0
- package/src/games/play-with-tua/PlayWithTuaScene.ts +36 -0
- package/src/games/popit-fidget/PopitFidget.tsx +72 -0
- package/src/games/popit-fidget/PopitFidgetConstants.ts +71 -0
- package/src/games/popit-fidget/PopitFidgetGame.ts +148 -0
- package/src/games/popit-fidget/PopitFidgetScene.ts +242 -0
- package/src/games/reversi/Reversi.tsx +94 -0
- package/src/games/reversi/ReversiConstants.ts +67 -0
- package/src/games/reversi/ReversiGame.ts +266 -0
- package/src/games/reversi/ReversiRules.ts +176 -0
- package/src/games/reversi/ReversiScene.ts +240 -0
- package/src/games/search-grid/SearchGrid.tsx +92 -0
- package/src/games/search-grid/SearchGridConstants.ts +178 -0
- package/src/games/search-grid/SearchGridGame.ts +209 -0
- package/src/games/search-grid/SearchGridScene.ts +301 -0
- package/src/games/shared/BackdropCard.tsx +54 -0
- package/src/games/shared/EngineBackdrop.ts +300 -0
- package/src/games/shared/EngineBlasts.ts +136 -0
- package/src/games/shared/EngineBlocks.ts +91 -0
- package/src/games/shared/EngineControlText.ts +17 -0
- package/src/games/shared/EngineDice.ts +250 -0
- package/src/games/shared/EngineFootprint.ts +35 -0
- package/src/games/shared/EngineFruits.ts +1435 -0
- package/src/games/shared/EngineGameLoader.tsx +88 -0
- package/src/games/shared/EngineGameScreen.tsx +325 -0
- package/src/games/shared/EngineGameWidth.ts +3 -0
- package/src/games/shared/EngineGameWidth.web.ts +3 -0
- package/src/games/shared/EngineGlyphs.ts +178 -0
- package/src/games/shared/EngineHud.ts +815 -0
- package/src/games/shared/EngineLoading.ts +477 -0
- package/src/games/shared/EngineMeadow.ts +725 -0
- package/src/games/shared/EngineMeshCache.ts +15 -0
- package/src/games/shared/EngineMeshes.ts +10 -0
- package/src/games/shared/EngineRacingChase.ts +21 -0
- package/src/games/shared/EngineRacingHandling.ts +48 -0
- package/src/games/shared/EngineReadyContext.ts +4 -0
- package/src/games/shared/EngineTilt.ts +44 -0
- package/src/games/shared/EngineTouchSurface.tsx +103 -0
- package/src/games/shared/EngineUtils.ts +52 -0
- package/src/games/shared/GameActivity.ts +13 -0
- package/src/games/shared/GameLoading.tsx +202 -0
- package/src/games/shared/GameLoadingTransition.tsx +61 -0
- package/src/games/shared/ProceduralCacheVersion.ts +2 -0
- package/src/games/shared/useEngineGame.ts +240 -0
- package/src/games/shared/useGameResource.ts +21 -0
- package/src/games/shared/useLiveState.ts +58 -0
- package/src/games/sliding-numbers/SlidingNumbers.tsx +71 -0
- package/src/games/sliding-numbers/SlidingNumbersConstants.ts +65 -0
- package/src/games/sliding-numbers/SlidingNumbersGame.ts +192 -0
- package/src/games/sliding-numbers/SlidingNumbersRules.ts +79 -0
- package/src/games/sliding-numbers/SlidingNumbersScene.ts +193 -0
- package/src/games/snake-3d/Snake3D.tsx +76 -0
- package/src/games/snake-3d/Snake3DConstants.ts +61 -0
- package/src/games/snake-3d/Snake3DGame.ts +192 -0
- package/src/games/snake-3d/Snake3DMotion.ts +22 -0
- package/src/games/snake-3d/Snake3DRules.ts +116 -0
- package/src/games/snake-3d/Snake3DScene.ts +322 -0
- package/src/games/snakes-and-ladders/SnakesAndLadders.tsx +87 -0
- package/src/games/snakes-and-ladders/SnakesAndLaddersConstants.ts +136 -0
- package/src/games/snakes-and-ladders/SnakesAndLaddersGame.ts +310 -0
- package/src/games/snakes-and-ladders/SnakesAndLaddersScene.ts +515 -0
- package/src/games/space-fighter/SpaceFighter.tsx +74 -0
- package/src/games/space-fighter/SpaceFighterConstants.ts +86 -0
- package/src/games/space-fighter/SpaceFighterGame.ts +292 -0
- package/src/games/space-fighter/SpaceFighterScene.ts +550 -0
- package/src/games/spider-solitaire/SpiderSolitaire.tsx +80 -0
- package/src/games/spider-solitaire/SpiderSolitaireConstants.ts +107 -0
- package/src/games/spider-solitaire/SpiderSolitaireGame.ts +387 -0
- package/src/games/spider-solitaire/SpiderSolitaireRules.ts +123 -0
- package/src/games/spider-solitaire/SpiderSolitaireScene.ts +352 -0
- package/src/games/stack-tower/StackTower.tsx +76 -0
- package/src/games/stack-tower/StackTowerConstants.ts +74 -0
- package/src/games/stack-tower/StackTowerGame.ts +236 -0
- package/src/games/stack-tower/StackTowerScene.ts +186 -0
- package/src/games/sudoku/Sudoku.tsx +73 -0
- package/src/games/sudoku/SudokuConstants.ts +127 -0
- package/src/games/sudoku/SudokuGame.ts +250 -0
- package/src/games/sudoku/SudokuRules.ts +125 -0
- package/src/games/sudoku/SudokuScene.ts +304 -0
- package/src/games/tangram/Tangram.tsx +79 -0
- package/src/games/tangram/TangramConstants.ts +64 -0
- package/src/games/tangram/TangramGame.ts +356 -0
- package/src/games/tangram/TangramRules.ts +409 -0
- package/src/games/tangram/TangramScene.ts +203 -0
- package/src/games/tank-1990/Tank1990.tsx +78 -0
- package/src/games/tank-1990/Tank1990Constants.ts +81 -0
- package/src/games/tank-1990/Tank1990Game.ts +331 -0
- package/src/games/tank-1990/Tank1990Rules.ts +390 -0
- package/src/games/tank-1990/Tank1990Scene.ts +434 -0
- package/src/games/tic-tac-toe/TicTacToe.tsx +98 -0
- package/src/games/tic-tac-toe/TicTacToeConstants.ts +69 -0
- package/src/games/tic-tac-toe/TicTacToeGame.ts +200 -0
- package/src/games/tic-tac-toe/TicTacToeRules.ts +103 -0
- package/src/games/tic-tac-toe/TicTacToeScene.ts +245 -0
- package/src/games/tile-home/TileHome.tsx +92 -0
- package/src/games/tile-home/TileHomeConstants.ts +139 -0
- package/src/games/tile-home/TileHomeGame.ts +435 -0
- package/src/games/tile-home/TileHomeScene.ts +154 -0
- package/src/games/treasure-hunt/TreasureHunt.tsx +206 -0
- package/src/games/treasure-hunt/TreasureHuntConstants.ts +266 -0
- package/src/games/treasure-hunt/TreasureHuntControls.ts +280 -0
- package/src/games/treasure-hunt/TreasureHuntGame.ts +402 -0
- package/src/games/treasure-hunt/TreasureHuntMeshes.ts +422 -0
- package/src/games/treasure-hunt/TreasureHuntModel.ts +506 -0
- package/src/games/treasure-hunt/TreasureHuntRules.ts +1210 -0
- package/src/games/treasure-hunt/TreasureHuntScene.ts +586 -0
- package/src/games/whack-a-mole/WhackAMole.tsx +79 -0
- package/src/games/whack-a-mole/WhackAMoleConstants.ts +94 -0
- package/src/games/whack-a-mole/WhackAMoleGame.ts +233 -0
- package/src/games/whack-a-mole/WhackAMoleScene.ts +349 -0
- package/src/games/word-search/WordSearch.tsx +18 -0
- package/src/games/word-search/WordSearchWords.ts +1642 -0
- package/src/helpers/GamePatternData.ts +120 -0
- package/src/helpers/GameSettingsModal.tsx +384 -0
- package/src/helpers/GameTheme.tsx +37 -0
- package/src/helpers/IconPaths.ts +6 -0
- package/src/helpers/index.ts +2 -0
- package/src/index.tsx +60 -0
- package/src/services/GameAssetLoader.ts +111 -0
- package/src/services/GameAssets.ts +149 -0
- package/src/services/GameLoaders.ts +93 -0
- package/src/services/GamesConstants.ts +193 -0
- package/src/services/GamesMetadata.ts +711 -0
- package/src/services/GamesService.ts +116 -0
- package/src/services/HapticsService.ts +48 -0
- package/src/services/ScoringService.ts +19 -0
- package/src/services/SfxSources.ts +81 -0
- package/src/services/SoundsService.ts +582 -0
- package/src/services/ThemeService.ts +281 -0
- package/src/services/UtilsService.ts +134 -0
- package/src/services/index.ts +6 -0
- package/lib/module/games/arrows/ArrowsService.js +0 -1
- package/lib/module/games/arrows/ArrowsStore.js +0 -1
- package/lib/module/games/arrows/components/ArrowsGrid.js +0 -1
- package/lib/module/games/arrows/components/ScoreBoard.js +0 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js +0 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +0 -1
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js +0 -1
- package/lib/module/games/balloon-blaster/components/GameArea.js +0 -1
- package/lib/module/games/balloon-blaster/components/GameBackground.js +0 -1
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js +0 -1
- package/lib/module/games/bike-racing/BikeRacingService.js +0 -1
- package/lib/module/games/bike-racing/BikeRacingStore.js +0 -1
- package/lib/module/games/bike-racing/components/BikeComponent.js +0 -1
- package/lib/module/games/bike-racing/components/GameBackground.js +0 -1
- package/lib/module/games/bike-racing/components/ScoreBoard.js +0 -1
- package/lib/module/games/block-blast/BlockBlastService.js +0 -1
- package/lib/module/games/block-blast/BlockBlastStore.js +0 -1
- package/lib/module/games/block-blast/components/BlockPieceComponent.js +0 -1
- package/lib/module/games/block-blast/components/GameArea.js +0 -1
- package/lib/module/games/block-blast/components/GridComponent.js +0 -1
- package/lib/module/games/block-blast/components/ScoreBoard.js +0 -1
- package/lib/module/games/block-breaker/BlockBreakerService.js +0 -1
- package/lib/module/games/block-breaker/BlockBreakerStore.js +0 -1
- package/lib/module/games/block-breaker/components/BlastAnimation.js +0 -1
- package/lib/module/games/block-breaker/components/GameArea.js +0 -1
- package/lib/module/games/block-breaker/components/ScoreBoard.js +0 -1
- package/lib/module/games/bluk/BlukService.js +0 -1
- package/lib/module/games/bluk/BlukStore.js +0 -1
- package/lib/module/games/bluk/components/GameArea.js +0 -1
- package/lib/module/games/bluk/components/GameBackground.js +0 -1
- package/lib/module/games/bluk/components/ScoreBoard.js +0 -1
- package/lib/module/games/bubble-shooter/BubbleShooterService.js +0 -1
- package/lib/module/games/bubble-shooter/BubbleShooterStore.js +0 -1
- package/lib/module/games/bubble-shooter/components/GameArea.js +0 -1
- package/lib/module/games/bubble-shooter/components/ScoreBoard.js +0 -1
- package/lib/module/games/candy-crush/CandyCrushService.js +0 -1
- package/lib/module/games/candy-crush/CandyCrushStore.js +0 -1
- package/lib/module/games/candy-crush/components/CandyItem.js +0 -1
- package/lib/module/games/candy-crush/components/GameGrid.js +0 -1
- package/lib/module/games/candy-crush/components/ScoreBoard.js +0 -1
- package/lib/module/games/car-racing/CarRacingService.js +0 -1
- package/lib/module/games/car-racing/CarRacingStore.js +0 -1
- package/lib/module/games/car-racing/components/CarComponent.js +0 -1
- package/lib/module/games/car-racing/components/GameBackground.js +0 -1
- package/lib/module/games/car-racing/components/ScoreBoard.js +0 -1
- package/lib/module/games/chameleon-run/ChameleonRunService.js +0 -1
- package/lib/module/games/chameleon-run/ChameleonRunStore.js +0 -1
- package/lib/module/games/chameleon-run/components/GameArea.js +0 -1
- package/lib/module/games/chameleon-run/components/GameBackground.js +0 -1
- package/lib/module/games/chameleon-run/components/ScoreBoard.js +0 -1
- package/lib/module/games/checkers/CheckersService.js +0 -1
- package/lib/module/games/checkers/CheckersStore.js +0 -1
- package/lib/module/games/checkers/components/GameBoard.js +0 -1
- package/lib/module/games/checkers/components/ScoreBoard.js +0 -1
- package/lib/module/games/color-switch/ColorSwitchService.js +0 -1
- package/lib/module/games/color-switch/ColorSwitchStore.js +0 -1
- package/lib/module/games/color-switch/components/GameArea.js +0 -1
- package/lib/module/games/color-switch/components/ScoreBoard.js +0 -1
- package/lib/module/games/colors-sort/ColorsSortService.js +0 -1
- package/lib/module/games/colors-sort/ColorsSortStore.js +0 -1
- package/lib/module/games/colors-sort/components/ColorContainer.js +0 -1
- package/lib/module/games/colors-sort/components/ScoreBoard.js +0 -1
- package/lib/module/games/connect-em-all/ConnectEmAllService.js +0 -1
- package/lib/module/games/connect-em-all/ConnectEmAllStore.js +0 -1
- package/lib/module/games/connect-em-all/components/GameBoard.js +0 -1
- package/lib/module/games/connect-em-all/components/ScoreBoard.js +0 -1
- package/lib/module/games/crossy-road/CrossyRoadService.js +0 -1
- package/lib/module/games/crossy-road/CrossyRoadStore.js +0 -1
- package/lib/module/games/crossy-road/components/GameArea.js +0 -1
- package/lib/module/games/crossy-road/components/ScoreBoard.js +0 -1
- package/lib/module/games/dino-jump/DinoJumpService.js +0 -1
- package/lib/module/games/dino-jump/DinoJumpStore.js +0 -1
- package/lib/module/games/dino-jump/components/DinoSprite.js +0 -1
- package/lib/module/games/dino-jump/components/GameArea.js +0 -1
- package/lib/module/games/dino-jump/components/GameBackground.js +0 -1
- package/lib/module/games/dino-jump/components/ObstacleSprite.js +0 -1
- package/lib/module/games/dino-jump/components/ScoreBoard.js +0 -1
- package/lib/module/games/dino-jump/components/StarSprite.js +0 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesService.js +0 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesStore.js +0 -1
- package/lib/module/games/dots-and-boxes/components/GameBoard.js +0 -1
- package/lib/module/games/dots-and-boxes/components/ScoreBoard.js +0 -1
- package/lib/module/games/falling-sticks/FallingSticksService.js +0 -1
- package/lib/module/games/falling-sticks/FallingSticksStore.js +0 -1
- package/lib/module/games/falling-sticks/components/GameArea.js +0 -1
- package/lib/module/games/falling-sticks/components/GameBackground.js +0 -1
- package/lib/module/games/falling-sticks/components/ScoreBoard.js +0 -1
- package/lib/module/games/find-different-number/FindDifferentNumberService.js +0 -1
- package/lib/module/games/find-different-number/FindDifferentNumberStore.js +0 -1
- package/lib/module/games/find-different-number/components/GameGrid.js +0 -1
- package/lib/module/games/find-different-number/components/ScoreBoard.js +0 -1
- package/lib/module/games/flappy-bird/FlappyBirdStore.js +0 -1
- package/lib/module/games/flappy-bird/components/Bird.js +0 -1
- package/lib/module/games/flappy-bird/components/GameArea.js +0 -1
- package/lib/module/games/flappy-bird/components/GameBackground.js +0 -1
- package/lib/module/games/flappy-bird/components/Pipes.js +0 -1
- package/lib/module/games/flappy-bird/components/ScoreBoard.js +0 -1
- package/lib/module/games/fruit-merger/FruitMergerService.js +0 -1
- package/lib/module/games/fruit-merger/FruitMergerStore.js +0 -1
- package/lib/module/games/fruit-merger/components/FruitItem.js +0 -1
- package/lib/module/games/fruit-merger/components/GameArea.js +0 -1
- package/lib/module/games/fruit-merger/components/ScoreBoard.js +0 -1
- package/lib/module/games/fruit-ninja/FruitNinjaService.js +0 -1
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js +0 -1
- package/lib/module/games/fruit-ninja/components/FruitComponent.js +0 -1
- package/lib/module/games/fruit-ninja/components/GameArea.js +0 -1
- package/lib/module/games/fruit-ninja/components/GameBackground.js +0 -1
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js +0 -1
- package/lib/module/games/game-2048/Game2048Service.js +0 -1
- package/lib/module/games/game-2048/Game2048Store.js +0 -1
- package/lib/module/games/game-2048/components/GameGrid.js +0 -1
- package/lib/module/games/game-2048/components/ScoreBoard.js +0 -1
- package/lib/module/games/knife-hit/KnifeHitService.js +0 -1
- package/lib/module/games/knife-hit/KnifeHitStore.js +0 -1
- package/lib/module/games/knife-hit/components/GameArea.js +0 -1
- package/lib/module/games/knife-hit/components/ScoreBoard.js +0 -1
- package/lib/module/games/ludo-king/LudoKingService.js +0 -1
- package/lib/module/games/ludo-king/LudoKingStore.js +0 -1
- package/lib/module/games/ludo-king/components/Dice.js +0 -1
- package/lib/module/games/ludo-king/components/GameBoard.js +0 -1
- package/lib/module/games/ludo-king/components/ScoreBoard.js +0 -1
- package/lib/module/games/maze-runner/MazeRunnerStore.js +0 -1
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +0 -1
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js +0 -1
- package/lib/module/games/maze-runner/components/ScoreBoard.js +0 -1
- package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +0 -1
- package/lib/module/games/maze-runner/components/WallComponent.js +0 -1
- package/lib/module/games/memory-match/MemoryMatchService.js +0 -1
- package/lib/module/games/memory-match/MemoryMatchStore.js +0 -1
- package/lib/module/games/memory-match/components/Card.js +0 -1
- package/lib/module/games/memory-match/components/GameBoard.js +0 -1
- package/lib/module/games/memory-match/components/ScoreBoard.js +0 -1
- package/lib/module/games/mine-sweeper/MineSweeperService.js +0 -1
- package/lib/module/games/mine-sweeper/MineSweeperStore.js +0 -1
- package/lib/module/games/mine-sweeper/components/GameArea.js +0 -1
- package/lib/module/games/mine-sweeper/components/ScoreBoard.js +0 -1
- package/lib/module/games/mob-control/MobControlService.js +0 -1
- package/lib/module/games/mob-control/MobControlStore.js +0 -1
- package/lib/module/games/mob-control/components/GameArea.js +0 -1
- package/lib/module/games/mob-control/components/ScoreBoard.js +0 -1
- package/lib/module/games/number-search/NumberSearchConstants.js +0 -1
- package/lib/module/games/number-search/NumberSearchService.js +0 -1
- package/lib/module/games/number-search/NumberSearchStore.js +0 -1
- package/lib/module/games/number-search/components/GameBoard.js +0 -1
- package/lib/module/games/number-search/components/NumberList.js +0 -1
- package/lib/module/games/number-search/components/ScoreBoard.js +0 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsService.js +0 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsStore.js +0 -1
- package/lib/module/games/nuts-and-bolts/components/GameBoard.js +0 -1
- package/lib/module/games/nuts-and-bolts/components/ScoreBoard.js +0 -1
- package/lib/module/games/pac-man/PacManService.js +0 -1
- package/lib/module/games/pac-man/PacManStore.js +0 -1
- package/lib/module/games/pac-man/components/GameCanvas.js +0 -1
- package/lib/module/games/pac-man/components/ScoreBoard.js +0 -1
- package/lib/module/games/paper-io/PaperIoService.js +0 -1
- package/lib/module/games/paper-io/PaperIoStore.js +0 -1
- package/lib/module/games/paper-io/components/GameArea.js +0 -1
- package/lib/module/games/paper-io/components/ScoreBoard.js +0 -1
- package/lib/module/games/perfect-circle/PerfectCircleService.js +0 -1
- package/lib/module/games/perfect-circle/PerfectCircleStore.js +0 -1
- package/lib/module/games/perfect-circle/components/DrawingCanvas.js +0 -1
- package/lib/module/games/perfect-circle/components/ScoreBoard.js +0 -1
- package/lib/module/games/pipe-connect/PipeConnectService.js +0 -1
- package/lib/module/games/pipe-connect/PipeConnectStore.js +0 -1
- package/lib/module/games/pipe-connect/components/GameArea.js +0 -1
- package/lib/module/games/pipe-connect/components/ScoreBoard.js +0 -1
- package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -1
- package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -1
- package/lib/module/games/popit-fidget/components/BubbleComponent.js +0 -1
- package/lib/module/games/popit-fidget/components/FidgetGrid.js +0 -1
- package/lib/module/games/popit-fidget/components/ScoreBoard.js +0 -1
- package/lib/module/games/reversi/ReversiStore.js +0 -1
- package/lib/module/games/reversi/components/GameBoard.js +0 -1
- package/lib/module/games/reversi/components/ScoreBoard.js +0 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersService.js +0 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +0 -1
- package/lib/module/games/sliding-numbers/components/NumbersGrid.js +0 -1
- package/lib/module/games/sliding-numbers/components/ScoreBoard.js +0 -1
- package/lib/module/games/snake-3d/Snake3DService.js +0 -1
- package/lib/module/games/snake-3d/Snake3DStore.js +0 -1
- package/lib/module/games/snake-3d/components/GameGrid.js +0 -1
- package/lib/module/games/snake-3d/components/ScoreBoard.js +0 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersService.js +0 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersStore.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/Dice.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/GameBoard.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/ScoreBoard.js +0 -1
- package/lib/module/games/space-fighter/SpaceFighterService.js +0 -1
- package/lib/module/games/space-fighter/SpaceFighterStore.js +0 -1
- package/lib/module/games/space-fighter/components/AsteroidComponent.js +0 -1
- package/lib/module/games/space-fighter/components/GameArea.js +0 -1
- package/lib/module/games/space-fighter/components/GameBackground.js +0 -1
- package/lib/module/games/space-fighter/components/ScoreBoard.js +0 -1
- package/lib/module/games/space-fighter/components/Spacecraft3D.js +0 -1
- package/lib/module/games/space-fighter/components/SpacecraftPath.js +0 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireService.js +0 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireStore.js +0 -1
- package/lib/module/games/spider-solitaire/components/Card.js +0 -1
- package/lib/module/games/spider-solitaire/components/CardPile.js +0 -1
- package/lib/module/games/spider-solitaire/components/ScoreBoard.js +0 -1
- package/lib/module/games/stack-tower/StackTowerService.js +0 -1
- package/lib/module/games/stack-tower/StackTowerStore.js +0 -1
- package/lib/module/games/stack-tower/components/GameArea.js +0 -1
- package/lib/module/games/stack-tower/components/ScoreBoard.js +0 -1
- package/lib/module/games/sudoku/SudokuService.js +0 -1
- package/lib/module/games/sudoku/SudokuStore.js +0 -1
- package/lib/module/games/sudoku/components/GameArea.js +0 -1
- package/lib/module/games/sudoku/components/ScoreBoard.js +0 -1
- package/lib/module/games/tangram/TangramService.js +0 -1
- package/lib/module/games/tangram/TangramStore.js +0 -1
- package/lib/module/games/tangram/components/GameBoard.js +0 -1
- package/lib/module/games/tangram/components/ScoreBoard.js +0 -1
- package/lib/module/games/tank-1990/Tank1990Service.js +0 -1
- package/lib/module/games/tank-1990/Tank1990Store.js +0 -1
- package/lib/module/games/tank-1990/components/Controls.js +0 -1
- package/lib/module/games/tank-1990/components/GameBoard.js +0 -1
- package/lib/module/games/tank-1990/components/ScoreBoard.js +0 -1
- package/lib/module/games/tic-tac-toe/TicTacToeService.js +0 -1
- package/lib/module/games/tic-tac-toe/TicTacToeStore.js +0 -1
- package/lib/module/games/tic-tac-toe/components/GameBoard.js +0 -1
- package/lib/module/games/tic-tac-toe/components/ScoreBoard.js +0 -1
- package/lib/module/games/tile-home/TileHomeService.js +0 -1
- package/lib/module/games/tile-home/TileHomeStore.js +0 -1
- package/lib/module/games/tile-home/components/AnimatingTile.js +0 -1
- package/lib/module/games/tile-home/components/FlyingTile.js +0 -1
- package/lib/module/games/tile-home/components/GameBoard.js +0 -1
- package/lib/module/games/tile-home/components/ScoreBoard.js +0 -1
- package/lib/module/games/tile-home/components/TileItem.js +0 -1
- package/lib/module/games/tile-home/components/TileSlot.js +0 -1
- package/lib/module/games/whack-a-mole/WhackAMoleService.js +0 -1
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameBackground.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameGrid.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameHole.js +0 -1
- package/lib/module/games/whack-a-mole/components/MoleCharacter.js +0 -1
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js +0 -1
- package/lib/module/games/word-search/WordSearchConstants.js +0 -1
- package/lib/module/games/word-search/WordSearchService.js +0 -1
- package/lib/module/games/word-search/WordSearchStore.js +0 -1
- package/lib/module/games/word-search/components/GameBoard.js +0 -1
- package/lib/module/games/word-search/components/ScoreBoard.js +0 -1
- package/lib/module/games/word-search/components/WordList.js +0 -1
- package/lib/module/helpers/AnimatedScore.js +0 -1
- package/lib/module/helpers/AnimationFrame.js +0 -1
- package/lib/module/helpers/AnimationTracker.js +0 -1
- package/lib/module/helpers/BlastAnimation.js +0 -1
- package/lib/module/helpers/ErrorHandler.js +0 -1
- package/lib/module/helpers/GameBackgroundPattern.js +0 -1
- package/lib/module/helpers/GameControlButton.js +0 -1
- package/lib/module/helpers/GameOverModal.js +0 -1
- package/lib/module/helpers/GameTimer.js +0 -1
- package/lib/module/helpers/Icons.js +0 -1
- package/lib/module/helpers/ParticleBlast.js +0 -1
- package/lib/module/helpers/ScoreBoardContainer.js +0 -1
- package/lib/module/helpers/assets/apple-fruit.js +0 -1
- package/lib/module/helpers/assets/avocado-item.js +0 -1
- package/lib/module/helpers/assets/banana-fruit.js +0 -1
- package/lib/module/helpers/assets/bomb-item.js +0 -1
- package/lib/module/helpers/assets/broccoli-item.js +0 -1
- package/lib/module/helpers/assets/cherries-fruit.js +0 -1
- package/lib/module/helpers/assets/donut-item.js +0 -1
- package/lib/module/helpers/assets/dragonfruit-item.js +0 -1
- package/lib/module/helpers/assets/fries-item.js +0 -1
- package/lib/module/helpers/assets/fruit-helpers.js +0 -1
- package/lib/module/helpers/assets/grapes-fruit.js +0 -1
- package/lib/module/helpers/assets/icecream-item.js +0 -1
- package/lib/module/helpers/assets/index.js +0 -1
- package/lib/module/helpers/assets/kiwi-fruit.js +0 -1
- package/lib/module/helpers/assets/mango-fruit.js +0 -1
- package/lib/module/helpers/assets/orange-fruit.js +0 -1
- package/lib/module/helpers/assets/papaya-fruit.js +0 -1
- package/lib/module/helpers/assets/papaya-full-fruit.js +0 -1
- package/lib/module/helpers/assets/peach-fruit.js +0 -1
- package/lib/module/helpers/assets/pineapple-fruit.js +0 -1
- package/lib/module/helpers/assets/pomegranate-fruit.js +0 -1
- package/lib/module/helpers/assets/pumpkin-fruit.js +0 -1
- package/lib/module/helpers/assets/raspberry-item.js +0 -1
- package/lib/module/helpers/assets/star-item.js +0 -1
- package/lib/module/helpers/assets/strawberry-fruit.js +0 -1
- package/lib/module/helpers/assets/watermelon-fruit.js +0 -1
- package/lib/module/types.d.js +0 -1
- package/lib/typescript/src/games/arrows/ArrowsService.d.ts +0 -6
- package/lib/typescript/src/games/arrows/ArrowsStore.d.ts +0 -51
- package/lib/typescript/src/games/arrows/components/ArrowsGrid.d.ts +0 -13
- package/lib/typescript/src/games/arrows/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -80
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +0 -30
- package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts +0 -9
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +0 -9
- package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +0 -44
- package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +0 -68
- package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +0 -12
- package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +0 -16
- package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +0 -70
- package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +0 -11
- package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +0 -11
- package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +0 -8
- package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/block-breaker/BlockBreakerService.d.ts +0 -88
- package/lib/typescript/src/games/block-breaker/BlockBreakerStore.d.ts +0 -47
- package/lib/typescript/src/games/block-breaker/components/BlastAnimation.d.ts +0 -15
- package/lib/typescript/src/games/block-breaker/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/block-breaker/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bluk/BlukService.d.ts +0 -71
- package/lib/typescript/src/games/bluk/BlukStore.d.ts +0 -52
- package/lib/typescript/src/games/bluk/components/GameArea.d.ts +0 -17
- package/lib/typescript/src/games/bluk/components/GameBackground.d.ts +0 -9
- package/lib/typescript/src/games/bluk/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +0 -35
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +0 -63
- package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +0 -37
- package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +0 -53
- package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +0 -11
- package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +0 -5
- package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +0 -44
- package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +0 -68
- package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +0 -12
- package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/chameleon-run/ChameleonRunService.d.ts +0 -76
- package/lib/typescript/src/games/chameleon-run/ChameleonRunStore.d.ts +0 -48
- package/lib/typescript/src/games/chameleon-run/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/chameleon-run/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/chameleon-run/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/checkers/CheckersService.d.ts +0 -6
- package/lib/typescript/src/games/checkers/CheckersStore.d.ts +0 -48
- package/lib/typescript/src/games/checkers/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/checkers/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/color-switch/ColorSwitchService.d.ts +0 -63
- package/lib/typescript/src/games/color-switch/ColorSwitchStore.d.ts +0 -43
- package/lib/typescript/src/games/color-switch/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/color-switch/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts +0 -61
- package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts +0 -56
- package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts +0 -7
- package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllService.d.ts +0 -20
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllStore.d.ts +0 -48
- package/lib/typescript/src/games/connect-em-all/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/connect-em-all/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/crossy-road/CrossyRoadService.d.ts +0 -89
- package/lib/typescript/src/games/crossy-road/CrossyRoadStore.d.ts +0 -39
- package/lib/typescript/src/games/crossy-road/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/crossy-road/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +0 -39
- package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +0 -97
- package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +0 -2
- package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +0 -8
- package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +0 -2
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesService.d.ts +0 -45
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesStore.d.ts +0 -37
- package/lib/typescript/src/games/dots-and-boxes/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/dots-and-boxes/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/falling-sticks/FallingSticksService.d.ts +0 -38
- package/lib/typescript/src/games/falling-sticks/FallingSticksStore.d.ts +0 -31
- package/lib/typescript/src/games/falling-sticks/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/falling-sticks/components/GameBackground.d.ts +0 -6
- package/lib/typescript/src/games/falling-sticks/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberService.d.ts +0 -6
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberStore.d.ts +0 -36
- package/lib/typescript/src/games/find-different-number/components/GameGrid.d.ts +0 -7
- package/lib/typescript/src/games/find-different-number/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +0 -68
- package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +0 -2
- package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +0 -8
- package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +0 -3
- package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +0 -66
- package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +0 -8
- package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +0 -73
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +0 -38
- package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts +0 -8
- package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +0 -102
- package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +0 -44
- package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/knife-hit/KnifeHitService.d.ts +0 -48
- package/lib/typescript/src/games/knife-hit/KnifeHitStore.d.ts +0 -41
- package/lib/typescript/src/games/knife-hit/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/knife-hit/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/ludo-king/LudoKingService.d.ts +0 -33
- package/lib/typescript/src/games/ludo-king/LudoKingStore.d.ts +0 -34
- package/lib/typescript/src/games/ludo-king/components/Dice.d.ts +0 -7
- package/lib/typescript/src/games/ludo-king/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/ludo-king/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/maze-runner/MazeRunnerStore.d.ts +0 -62
- package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts +0 -10
- package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts +0 -33
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +0 -24
- package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts +0 -24
- package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts +0 -9
- package/lib/typescript/src/games/memory-match/MemoryMatchService.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/MemoryMatchStore.d.ts +0 -42
- package/lib/typescript/src/games/memory-match/components/Card.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/mine-sweeper/MineSweeperService.d.ts +0 -22
- package/lib/typescript/src/games/mine-sweeper/MineSweeperStore.d.ts +0 -73
- package/lib/typescript/src/games/mine-sweeper/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/mine-sweeper/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/mob-control/MobControlService.d.ts +0 -74
- package/lib/typescript/src/games/mob-control/MobControlStore.d.ts +0 -66
- package/lib/typescript/src/games/mob-control/components/GameArea.d.ts +0 -11
- package/lib/typescript/src/games/mob-control/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/number-search/NumberSearchConstants.d.ts +0 -63
- package/lib/typescript/src/games/number-search/NumberSearchService.d.ts +0 -34
- package/lib/typescript/src/games/number-search/NumberSearchStore.d.ts +0 -70
- package/lib/typescript/src/games/number-search/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/number-search/components/NumberList.d.ts +0 -2
- package/lib/typescript/src/games/number-search/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsService.d.ts +0 -67
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsStore.d.ts +0 -45
- package/lib/typescript/src/games/nuts-and-bolts/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/nuts-and-bolts/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/pac-man/PacManService.d.ts +0 -73
- package/lib/typescript/src/games/pac-man/PacManStore.d.ts +0 -89
- package/lib/typescript/src/games/pac-man/components/GameCanvas.d.ts +0 -2
- package/lib/typescript/src/games/pac-man/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/paper-io/PaperIoService.d.ts +0 -70
- package/lib/typescript/src/games/paper-io/PaperIoStore.d.ts +0 -51
- package/lib/typescript/src/games/paper-io/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/paper-io/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +0 -15
- package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +0 -55
- package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +0 -8
- package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/pipe-connect/PipeConnectService.d.ts +0 -17
- package/lib/typescript/src/games/pipe-connect/PipeConnectStore.d.ts +0 -31
- package/lib/typescript/src/games/pipe-connect/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/pipe-connect/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -30
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +0 -33
- package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +0 -10
- package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +0 -10
- package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/reversi/ReversiStore.d.ts +0 -46
- package/lib/typescript/src/games/reversi/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/reversi/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +0 -6
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +0 -38
- package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +0 -7
- package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/snake-3d/Snake3DService.d.ts +0 -29
- package/lib/typescript/src/games/snake-3d/Snake3DStore.d.ts +0 -49
- package/lib/typescript/src/games/snake-3d/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/snake-3d/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersService.d.ts +0 -22
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersStore.d.ts +0 -40
- package/lib/typescript/src/games/snakes-and-ladders/components/Dice.d.ts +0 -7
- package/lib/typescript/src/games/snakes-and-ladders/components/GameBoard.d.ts +0 -2
- package/lib/typescript/src/games/snakes-and-ladders/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts +0 -117
- package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts +0 -54
- package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts +0 -11
- package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts +0 -9
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireService.d.ts +0 -23
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireStore.d.ts +0 -71
- package/lib/typescript/src/games/spider-solitaire/components/Card.d.ts +0 -10
- package/lib/typescript/src/games/spider-solitaire/components/CardPile.d.ts +0 -12
- package/lib/typescript/src/games/spider-solitaire/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/stack-tower/StackTowerService.d.ts +0 -51
- package/lib/typescript/src/games/stack-tower/StackTowerStore.d.ts +0 -52
- package/lib/typescript/src/games/stack-tower/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/stack-tower/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/sudoku/SudokuService.d.ts +0 -24
- package/lib/typescript/src/games/sudoku/SudokuStore.d.ts +0 -65
- package/lib/typescript/src/games/sudoku/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/sudoku/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tangram/TangramService.d.ts +0 -6
- package/lib/typescript/src/games/tangram/TangramStore.d.ts +0 -34
- package/lib/typescript/src/games/tangram/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/tangram/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tank-1990/Tank1990Service.d.ts +0 -80
- package/lib/typescript/src/games/tank-1990/Tank1990Store.d.ts +0 -48
- package/lib/typescript/src/games/tank-1990/components/Controls.d.ts +0 -2
- package/lib/typescript/src/games/tank-1990/components/GameBoard.d.ts +0 -2
- package/lib/typescript/src/games/tank-1990/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeService.d.ts +0 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeStore.d.ts +0 -51
- package/lib/typescript/src/games/tic-tac-toe/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/tic-tac-toe/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tile-home/TileHomeService.d.ts +0 -1
- package/lib/typescript/src/games/tile-home/TileHomeStore.d.ts +0 -57
- package/lib/typescript/src/games/tile-home/components/AnimatingTile.d.ts +0 -9
- package/lib/typescript/src/games/tile-home/components/FlyingTile.d.ts +0 -16
- package/lib/typescript/src/games/tile-home/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/tile-home/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tile-home/components/TileItem.d.ts +0 -11
- package/lib/typescript/src/games/tile-home/components/TileSlot.d.ts +0 -7
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +0 -32
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +0 -39
- package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts +0 -10
- package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts +0 -11
- package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +0 -6
- package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/word-search/WordSearchConstants.d.ts +0 -63
- package/lib/typescript/src/games/word-search/WordSearchService.d.ts +0 -34
- package/lib/typescript/src/games/word-search/WordSearchStore.d.ts +0 -70
- package/lib/typescript/src/games/word-search/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/word-search/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/word-search/components/WordList.d.ts +0 -2
- package/lib/typescript/src/helpers/AnimatedScore.d.ts +0 -36
- package/lib/typescript/src/helpers/AnimationFrame.d.ts +0 -40
- package/lib/typescript/src/helpers/AnimationTracker.d.ts +0 -44
- package/lib/typescript/src/helpers/BlastAnimation.d.ts +0 -16
- package/lib/typescript/src/helpers/ErrorHandler.d.ts +0 -123
- package/lib/typescript/src/helpers/GameBackgroundPattern.d.ts +0 -7
- package/lib/typescript/src/helpers/GameControlButton.d.ts +0 -11
- package/lib/typescript/src/helpers/GameOverModal.d.ts +0 -15
- package/lib/typescript/src/helpers/GameTimer.d.ts +0 -26
- package/lib/typescript/src/helpers/Icons.d.ts +0 -12
- package/lib/typescript/src/helpers/ParticleBlast.d.ts +0 -11
- package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +0 -85
- package/lib/typescript/src/helpers/assets/apple-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/avocado-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/banana-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/bomb-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/broccoli-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/cherries-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/donut-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/dragonfruit-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/fries-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/fruit-helpers.d.ts +0 -154
- package/lib/typescript/src/helpers/assets/grapes-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/icecream-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/index.d.ts +0 -31
- package/lib/typescript/src/helpers/assets/kiwi-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/mango-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/orange-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/papaya-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/papaya-full-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/peach-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pineapple-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pomegranate-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pumpkin-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/raspberry-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/star-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/strawberry-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/watermelon-fruit.d.ts +0 -4
|
@@ -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{GAME_TIME,getLayout,LIGHT}from"./FruitMergerConstants.js";import{createGame,dispose,drag,finalScore,reset,setLayout,setTheme,start,tick}from"./FruitMergerGame.js";import{jsx as _0x27bccb}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.FRUIT_MERGER,FEEDBACK={drop:{sound:SOUNDS.DROP,haptic:HapticType.LIGHT},merge:{sound:SOUNDS.MERGE,haptic:HapticType.MEDIUM},win:{sound:SOUNDS.COMPLETE,haptic:HapticType.SUCCESS}},MESSAGES={win:"You reached the Pumpkin!",time:"You ran out of time!",overflow:"Fruits overflowed!"};export const FruitMerger=engineGame(GAME_IDS.FRUIT_MERGER,e=>{const[t,r]=useLiveState(GAME_TIME),[o,s]=useLiveState(0),{game:i,theme:a,status:n,screen:m,gameOver:S}=useEngineGame(e,{gameId:GAME_IDS.FRUIT_MERGER,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,o)=>setLayout(e,getLayout(t,r,o)),drag:drag,outcome:e=>"win"===e.outcome?"win":"lose",reportScore:e=>finalScore(e),sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),onOver:(e,t)=>{"win"!==t&&e(SOUNDS.GAME_OVER,HapticType.HEAVY)},wire:(e,t)=>{e.onTime=r,e.onScore=s,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0x27bccb(EngineGameScreen,{...m,light:LIGHT,columns:[scoreColumn(o),timerColumn(t,a,0)],subtext:"Merge fruits!",gameOver:S({title:"win"===n?"YOU WON!":"GAME OVER",message:MESSAGES[i.outcome??"overflow"],scoreLabel:"Score",score:finalScore(i),buttonText:"Merge Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{getGameDimensions}from"../../services/UtilsService.js";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight}from"../shared/EngineUtils.js";const{width:GAME_WIDTH}=getGameDimensions(),SCALE=GAME_WIDTH/360;export const FRUIT_TYPES=[{id:0,name:"strawberry",size:Math.round(40*SCALE),color:"#FFCDD2",score:10},{id:1,name:"kiwi",size:Math.round(52*SCALE),color:"#DCEDC8",score:20},{id:2,name:"lemon",size:Math.round(64*SCALE),color:"#FFF9C4",score:40},{id:3,name:"peach",size:Math.round(76*SCALE),color:"#FFE4E1",score:80},{id:4,name:"orange",size:Math.round(88*SCALE),color:"#FFE0B2",score:160},{id:5,name:"apple",size:Math.round(100*SCALE),color:"#FFCDD2",score:320},{id:6,name:"pomegranate",size:Math.round(112*SCALE),color:"#F8BBD0",score:640},{id:7,name:"papaya",size:Math.round(124*SCALE),color:"#FFE0B2",score:1280},{id:8,name:"watermelon",size:Math.round(136*SCALE),color:"#C8E6C9",score:2560},{id:9,name:"pumpkin",size:Math.round(148*SCALE),color:"#FFCC80",score:5120}];export const LAST_TYPE=FRUIT_TYPES.length-1;export const GAME_TIME=900;export const EXPECTED_TIME=120;export const BASE_SCORE=100;export const MAX_DROP_TYPE=4;export const CONTAINER_WIDTH=GAME_WIDTH;export const CONTAINER_HEIGHT=Math.round(480*SCALE);export const PLAY_WIDTH=GAME_WIDTH-8;export const PLAY_HEIGHT=CONTAINER_HEIGHT-4;export const GRAVITY=.5*SCALE;export const BOUNCE=.3;export const FRICTION=.99;export const MERGE_DISTANCE=Math.round(10*SCALE);export const COLLISION_SCALE=.96;export const SOLVER_PASSES=24;export const OVERFLOW_Y=.05*PLAY_HEIGHT;export const OVERFLOW_STEPS=60;export const DANGER_START_Y=.28*PLAY_HEIGHT;export const DANGER_SETTLE_MS=1e3;export const SPAWN_DELAY_MS=300;export const STEP_MS=1e3/60;export const STEP_TOLERANCE_MS=2;export const MAX_PENDING_MS=50;export const TILT=0;export const LIGHT=frontLight([-.4,.55,1],.5);export const JAR_DEPTH=FRUIT_TYPES[9].size+12;export const WALL=4;export const CORNER=Math.round(44*SCALE);export const COLORS={DANGER_SAFE:"rgba(255, 255, 255, 0.28)",DANGER_HOT:"rgba(255, 77, 77, 0.95)"};const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110;export function getLayout(o,t,e){const r=getScoreBoardTop(e)+82,n=t-r-110,E=Math.min(1,o/CONTAINER_WIDTH);return n>=CONTAINER_HEIGHT*E?{width:o,height:t,k:E,centerX:o/2,centerY:e+(t-e)/2,tilt:0}:{width:o,height:t,k:Math.max(.4,n/CONTAINER_HEIGHT),centerX:o/2,centerY:r+n/2,tilt:0}}export const toWorld=(o,t,e=0)=>[o-PLAY_WIDTH/2,PLAY_HEIGHT/2-t,e];export const playX=(o,t)=>(t-o.centerX)/o.k+PLAY_WIDTH/2;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{BASE_SCORE,EXPECTED_TIME,FRUIT_TYPES,GAME_TIME,MAX_DROP_TYPE,MAX_PENDING_MS,PLAY_WIDTH,SPAWN_DELAY_MS,STEP_MS,STEP_TOLERANCE_MS}from"./FruitMergerConstants.js";import{makeBody,radiusOf,step}from"./FruitMergerRules.js";import{aim,buildScene,celebrate,clearFruits,drawFruits,drawPreview,jolt,mergeFx,removeScene,setDanger,setSceneTheme}from"./FruitMergerScene.js";const WORLD_CAPACITY=500,randomType=()=>Math.floor(Math.random()*MAX_DROP_TYPE),newId=e=>"fruit-"+Math.round(e)+"-"+Math.random(),aimedFruit=(e,n)=>({id:newId(n),typeId:e,x:PLAY_WIDTH/2,y:radiusOf(e)+10});export function createGame(e){const n=new World(500),o={world:n,camera:{eye:[0,0,260],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",bodies:[],current:null,nextType:0,bestType:-1,get time(){return n.scoreboard.shownSeconds},get score(){return n.scoreboard.score},outcome:null,st:{overflowSteps:0,danger:0,merges:0,generation:0},pending:0,spawnAt:0,dragFrom:PLAY_WIDTH/2,clock:0,onPhase:e=>{},onTime:e=>{},onScore:e=>{},onNext:e=>{},onBest:e=>{},onEvent:e=>{}};return n.scoreboard.handlers={onSecond:e=>o.onTime(e),onTimeUp:()=>"playing"===o.phase&&end(o,"time")},initialize(o),o}const nowMs=e=>1e3*e.clock;export function setLayout(e,n){e.scene&&removeScene(e.world,e.scene),e.layout=n,aim(e.camera,n),e.scene=buildScene(e.world,n,e.theme),setDanger(e.world,e.scene,e.theme,e.st.danger),draw(e)}export function setTheme(e,n){e.theme=n,e.scene&&setSceneTheme(e.world,e.scene,n)}function draw(e){const n=e.scene;n&&(drawFruits(e.world,n,e.bodies),drawPreview(e.world,n,"over"===e.phase?null:e.current,e.nextType))}function initialize(e){e.st.generation+=1,e.bodies=[],e.pending=0,e.spawnAt=0,e.st.overflowSteps=0,e.bestType=-1;const n=randomType();e.current=aimedFruit(n,nowMs(e)),e.nextType=randomType(),e.world.scoreboard.reset(0,GAME_TIME),e.outcome=null,e.phase="ready",e.scene&&clearFruits(e.world,e.scene),draw(e),e.onTime(GAME_TIME),e.onScore(0),e.onNext(e.nextType),e.onBest(-1)}export function start(e){"ready"===e.phase&&(e.st.generation+=1,e.bodies=[],e.pending=0,e.spawnAt=0,e.st.overflowSteps=0,e.st.danger=0,e.bestType=-1,e.phase="playing",e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(GAME_TIME),e.onScore(0),e.scene&&(clearFruits(e.world,e.scene),setDanger(e.world,e.scene,e.theme,0)),e.current||spawnAimed(e),draw(e),e.onTime(GAME_TIME),e.onBest(-1),e.onPhase("playing"))}export function reset(e){initialize(e),e.onPhase("ready")}export function dispose(e){e.world.dispose()}function spawnAimed(e){e.current=aimedFruit(e.nextType,nowMs(e)),e.nextType=randomType(),e.onNext(e.nextType)}function end(e,n){e.world.scoreboard.stop(),e.outcome=n,e.phase="over","win"===n?celebrate(e.world):jolt(e.camera),draw(e),e.onPhase("over")}export const finalScore=e=>e.score+("win"===e.outcome?calculateTimeBasedScore(GAME_TIME-e.time,EXPECTED_TIME,BASE_SCORE):0);export function tick(e,n){e.world.isDisposed||(e.clock+=Math.min(n,.25),"playing"===e.phase&&physics(e,1e3*n),draw(e),e.world.update(n))}function physics(e,n){let o=Math.min(e.pending+n,MAX_PENDING_MS);if(o<STEP_MS-STEP_TOLERANCE_MS)return void(e.pending=o);const r=nowMs(e),t={outcome:null};let s=!1;for(;o>=STEP_MS-STEP_TOLERANCE_MS;){if(o-=STEP_MS,0===e.bodies.length)continue;const n=step(e.bodies,r,e.st,t);if(n&&(e.scene&&mergeFx(e.world,e.scene,n.a,n.b,n.made),e.onScore(e.world.scoreboard.add(FRUIT_TYPES[n.made.typeId].score)),n.made.typeId>e.bestType&&(e.bestType=n.made.typeId,e.onBest(e.bestType)),e.onEvent("merge")),t.outcome)break;e.spawnAt>0&&r>=e.spawnAt&&(e.spawnAt=0,s=!0)}if(e.pending=o,e.scene&&setDanger(e.world,e.scene,e.theme,e.st.danger),"win"===t.outcome)return e.onEvent("win"),void end(e,"win");"lose"!==t.outcome?s&&!e.current&&spawnAimed(e):end(e,"overflow")}export function drag(e,{phase:n,dx:o,cancelled:r}){const t=e.layout,s=e.current;if(!t||!s)return;if("start"===n)return void(e.dragFrom=s.x);const a=radiusOf(s.typeId);s.x=Math.max(a,Math.min(PLAY_WIDTH-a,e.dragFrom+o/t.k)),"end"!==n||r||drop(e)}export function drop(e){const n=e.current;if("playing"!==e.phase||!n)return;const o=nowMs(e);e.bodies.push(makeBody(n.id,n.typeId,n.x,n.y,0,o)),n.typeId>e.bestType&&(e.bestType=n.typeId,e.onBest(e.bestType)),e.current=null,e.spawnAt=o+SPAWN_DELAY_MS,e.onEvent("drop")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{BOUNCE,COLLISION_SCALE,CORNER,DANGER_SETTLE_MS,DANGER_START_Y,FRICTION,FRUIT_TYPES,GRAVITY,LAST_TYPE,MERGE_DISTANCE,OVERFLOW_STEPS,OVERFLOW_Y,PLAY_HEIGHT,PLAY_WIDTH,SOLVER_PASSES}from"./FruitMergerConstants.js";function slide(t,e,n,o){const r=t.cr,s=.5;if(e<0&&t.x-r<=s&&(e=0),e>0&&t.x+r>=PLAY_WIDTH-s&&(e=0),n>0&&t.y+r>=PLAY_HEIGHT-s&&(n=0),r<CORNER&&t.y>=PLAY_HEIGHT-CORNER){const o=t.x<CORNER?CORNER:t.x>PLAY_WIDTH-CORNER?PLAY_WIDTH-CORNER:-1;if(o>=0){const E=t.x-o,y=t.y-(PLAY_HEIGHT-CORNER),R=Math.hypot(E,y)||1,x=(e*E+n*y)/R;R>=CORNER-r-s&&x>0&&(e-=E/R*x,n-=y/R*x)}}return o[0]=e,o[1]=n,o}function keepInside(t){const e=t.cr;if(t.x=Math.max(e,Math.min(PLAY_WIDTH-e,t.x)),t.y+e>PLAY_HEIGHT&&(t.y=PLAY_HEIGHT-e),e>=CORNER||t.y<PLAY_HEIGHT-CORNER)return;const n=t.x<CORNER?CORNER:t.x>PLAY_WIDTH-CORNER?PLAY_WIDTH-CORNER:-1;if(n<0)return;const o=PLAY_HEIGHT-CORNER,r=t.x-n,s=t.y-o,E=Math.hypot(r,s),y=CORNER-e;if(E<=y||0===E)return;const R=r/E,x=s/E;t.x=n+R*y,t.y=o+x*y;const a=t.vx*R+t.vy*x;a>0&&(t.vx-=R*a*(1+BOUNCE),t.vy-=x*a*(1+BOUNCE))}export const radiusOf=t=>(FRUIT_TYPES[t]?.size??40)/2;export function makeBody(t,e,n,o,r,s){const E=radiusOf(e);return{id:t,typeId:e,r:E,cr:E*COLLISION_SCALE,x:n,y:o,vx:0,vy:r,angle:0,px:n,born:s}}const MAX_SPEED=18;function move(t){const e=t.length;let n=0,o=1/0;for(let r=0;r<e;r++){const e=t[r];n=Math.max(n,Math.abs(e.vx),Math.abs(e.vy)),o=Math.min(o,e.cr)}const r=Math.max(1,Math.min(6,Math.ceil(n/(.4*o))));for(let n=0;n<r;n++){for(let n=0;n<e;n++){const e=t[n];e.x+=e.vx/r,e.y+=e.vy/r}solve(t,Math.ceil(SOLVER_PASSES/r)+2)}}const slideA=[0,0],slideB=[0,0];function solve(t,e){const n=t.length;for(let o=0;o<e;o++){for(let e=0;e<n;e++){const o=t[e];for(let r=e+1;r<n;r++){const e=t[r],n=e.x-o.x,s=e.y-o.y,E=n*n+s*s,y=o.cr+e.cr;if(E>=y*y||0===E)continue;const R=Math.sqrt(E),x=n/R,a=s/R,i=o.cr*o.cr,T=e.cr*e.cr,_=T/(i+T),l=i/(i+T),O=y-R,[v,I]=slide(o,-x*O*_,-a*O*_,slideA),[A,f]=slide(e,x*O*l,a*O*l,slideB),L=-x*O*_-v,S=-a*O*_-I,N=x*O*l-A,C=a*O*l-f;o.x+=v-N,o.y+=I-C,e.x+=A-L,e.y+=f-S}}for(let e=0;e<n;e++)keepInside(t[e])}}export function step(t,e,n,o){const r=t.length;for(let e=0;e<r;e++){const n=t[e];n.px=n.x,n.vy+=GRAVITY,n.vx*=FRICTION,n.vy*=FRICTION;const o=Math.hypot(n.vx,n.vy);o>18&&(n.vx*=18/o,n.vy*=18/o),n.x-n.cr<0&&(n.x=n.cr,n.vx*=-BOUNCE),n.x+n.cr>PLAY_WIDTH&&(n.x=PLAY_WIDTH-n.cr,n.vx*=-BOUNCE),n.y+n.cr>=PLAY_HEIGHT&&(n.y=PLAY_HEIGHT-n.cr,n.vy*=-BOUNCE,n.vx*=FRICTION,Math.abs(n.vy)<.5&&(n.vy=0)),n.y-n.r<0&&(n.y=n.r,n.vy=.5*Math.abs(n.vy)),keepInside(n)}const s=t.map(t=>t.x),E=t.map(t=>t.y);move(t);for(let e=0;e<r;e++){const n=t[e];n.vx=n.x-s[e],n.vy=n.y-E[e]}let y=1/0;for(let n=0;n<r;n++){const o=t[n];o.angle+=(o.x-o.px)/o.r,Math.abs(o.vy)<1.5&&e-o.born>DANGER_SETTLE_MS&&o.y-o.r<y&&(y=o.y-o.r)}const R=y===1/0?0:Math.max(0,Math.min(1,(DANGER_START_Y-y)/(DANGER_START_Y-OVERFLOW_Y)));(Math.abs(R-n.danger)>.02||0===R!=(0===n.danger))&&(n.danger=R);for(let o=0;o<r;o++){const s=t[o];if(!(s.y<0))for(let E=o+1;E<r;E++){const r=t[E];if(r.y<0||s.typeId!==r.typeId)continue;const y=r.x-s.x,R=r.y-s.y;if(Math.sqrt(y*y+R*R)>s.cr+r.cr+MERGE_DISTANCE)continue;const x=Math.sqrt(s.vx*s.vx+s.vy*s.vy),a=Math.sqrt(r.vx*r.vx+r.vy*r.vy);if(x>=5&&a>=5)continue;const i=s.typeId+1;if(i>LAST_TYPE)return null;n.merges+=1;const T=makeBody("fruit-m"+n.generation+"-"+n.merges,i,(s.x+r.x)/2,(s.y+r.y)/2,-2,e);return t.splice(E,1),t.splice(o,1),t.push(T),solve(t,SOLVER_PASSES),{a:s,b:r,made:T}}}for(let e=0;e<r;e++)if(t[e].typeId===LAST_TYPE)return o.outcome="win",null;let x=!1;for(let e=0;e<r;e++){const n=t[e];if(n.y-n.r<OVERFLOW_Y&&Math.abs(n.vy)<1.5){x=!0;break}}return x?(n.overflowSteps+=1,n.overflowSteps>=OVERFLOW_STEPS&&(o.outcome="lose")):n.overflowSteps=0,null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,extrude,lathe,merge,Path,quat,tube}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{getFruits}from"../shared/EngineFruits.js";import{noise}from"../shared/EngineMeadow.js";import{cacheGameAsset,createGameMesh as _0x1a6b2e}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{COLLISION_SCALE,COLORS,CORNER,FRUIT_TYPES,JAR_DEPTH,OVERFLOW_Y,PLAY_HEIGHT,PLAY_WIDTH,toWorld,WALL}from"./FruitMergerConstants.js";const EYE_DISTANCE=260,BACKDROP_DEPTH=220,DASHES=24,DOTS=12,WHITE=[1,1,1,1];let pumpkin,lemon;function pumpkinModel(){return cacheGameAsset("fruit-merger/FruitMergerScene:pumpkinModel",()=>pumpkinModelUncached())}function pumpkinModelUncached(){if(pumpkin)return pumpkin;const e=Array.from({length:41},(e,t)=>{const o=Math.PI*t/40,n=.5*Math.sin(o),r=.4*Math.cos(o)-.06*Math.exp(-Math.pow(o/.45,2))+.04*Math.exp(-Math.pow((Math.PI-o)/.45,2));return[Math.max(5e-4,n),r]}),t=e=>1-Math.pow(Math.abs(Math.sin(e*Math.PI*8)),.4),o=lathe(e,{segments:64,displace:(e,o)=>-.045*t(e)*Math.sin(Math.PI*o),color:({u:e,v:o})=>{const n=t(e),r=1-.35*n-.12*Math.pow(2*Math.abs(o-.5),3);return[.98*r,(.52-.08*n)*r,.08*r,1]}}),n=tube([[0,.3,0],[.01,.4,0],[.05,.48,0],[.09,.5,0]],{radius:e=>.05*(1-.45*e),sides:10,color:[.36,.42,.16,1]}),r=merge([{geometry:o},{geometry:n}]);return pumpkin={model:_0x1a6b2e(r,{center:!1,shine:.55}),center:[0,.04,0]},pumpkin}function lemonModel(){return cacheGameAsset("fruit-merger/FruitMergerScene:lemonModel",()=>lemonModelUncached())}function lemonModelUncached(){if(lemon)return lemon;const e=Array.from({length:49},(e,t)=>{const o=Math.PI*t/48,n=.07*(Math.exp(-Math.pow(o/.22,2))+Math.exp(-Math.pow((Math.PI-o)/.22,2)));return[Math.max(5e-4,.47*Math.sin(o)),(.45+n)*Math.cos(o)]}),t=lathe(e,{segments:56,displace:(e,t)=>.006*noise(40*e,30*t)*Math.sin(Math.PI*t),color:({v:e,position:t})=>{const o=Math.pow(2*Math.abs(e-.5),3),n=1-.18*o+.05*noise(30*t[0],30*t[1]);return[.99*n,(.84-.1*o)*n,.18*n,1]}}),o=tube([[0,.5,0],[.02,.56,0]],{radius:.025,sides:8,color:[.38,.45,.16,1]}),n=lathe([[5e-4,0],[.05,.03],[.06,.1],[.03,.17],[5e-4,.2]],{segments:10,color:[.25,.55,.2,1]}),r=merge([{geometry:t},{geometry:o},{geometry:n,position:[.03,.53,0],rotation:quat.z(-1.1),scale:[1,1,.35]}]);return lemon={model:_0x1a6b2e(r,{center:!1,shine:.6}),center:[0,.02,0]},lemon}function fruitModel(e){const t=FRUIT_TYPES[e].name;if("pumpkin"===t)return pumpkinModel();if("lemon"===t)return lemonModel();const o=getFruits()[t];return{model:o.whole,center:o.center}}const ROUNDER=new Set(["papaya"]);function spawnFruit(e,t,o,n=1){const r=FRUIT_TYPES[t].size,{model:s,center:a}=fruitModel(t),[i,l]=s.size,p=(i+l)/2,d=r*COLLISION_SCALE*.97/p,u=ROUNDER.has(FRUIT_TYPES[t].name)?[d*(i+p)/2/i,d*(l+p)/2/l,d]:[d,d,d],h=e.spawn({mesh:"none",position:o,scale:n,pickable:!1});return e.spawn({mesh:s,parent:h,position:[-a[0]*u[0],-a[1]*u[1],-a[2]*u[2]],scale:u,color:WHITE,pickable:!1}),h}const guideColor=e=>"light"===e.mode?toColor(e.TEXT):[1,1,1,1];export function aim(e,t){const o=Math.cos(t.tilt),n=Math.sin(t.tilt),r=(t.centerY-2*t.k-t.height/2)/(t.k*o);e.target=[-(t.centerX-t.width/2)/t.k,r,0],e.eye=[e.target[0],r+260*n,260*o],e.ortho=t.height/(2*t.k)}const meshes=new Map,cached=(e,t)=>{let o=meshes.get(e);return!o&&(o=cacheGameAsset("fruit-merger/FruitMergerScene:"+e,t),meshes.set(e,o)),o};function outline(e){const t=PLAY_WIDTH,o=PLAY_HEIGHT,n=CORNER+e,r=[[-e,0]],s=(e,t,s)=>{for(let a=0;a<=12;a++){const i=t+(s-t)*a/12;r.push([e+Math.cos(i)*n,o-CORNER+Math.sin(i)*n])}};return s(CORNER,Math.PI,Math.PI/2),s(t-CORNER,Math.PI/2,0),r.push([t+e,0]),r.map(([e,n])=>[e-t/2,n-o/2])}const bandMesh=(e,t,o,n)=>cached("fm-band:"+e+":"+t+":"+o.toFixed(1)+":"+n,()=>{const r=[...outline(t),...outline(e).reverse()];return _0x1a6b2e(extrude((new Path).addPolygon(r),{depth:o}),{center:!1,shine:n})}),backMesh=()=>cached("fm-back",()=>_0x1a6b2e(extrude((new Path).addPolygon(outline(WALL)),{depth:1.5}),{center:!1,shine:.1})),CLASSIC_BACK=[1,1,1,.3],CLASSIC_WALL=[1,1,1,.35],backColor=e=>"classic"===e.mode?CLASSIC_BACK:toColor(e.BOARD.SURFACE),wallColor=e=>"classic"===e.mode?CLASSIC_WALL:toColor(e.BOARD.BORDER);function spawnJar(e,t){const o=JAR_DEPTH/2,n=backColor(t),r=wallColor(t);return[e.spawn({mesh:backMesh(),position:[0,0,-o-1],color:n,pickable:!1}),e.spawn({mesh:bandMesh(0,WALL,JAR_DEPTH,0),position:[0,0,0],color:n,pickable:!1}),e.spawn({mesh:bandMesh(0,1.6,.6,0),position:[0,0,o+.3],color:r,pickable:!1})]}export function buildScene(e,t,o){const n=spawnBackdrop(e,t.width,t.height,-220,o);placeBackdrop(e,n,t);const r=(PLAY_WIDTH-8)/42,s=Array.from({length:24},(t,n)=>e.spawn({mesh:"cube",position:toWorld(4+r/2+n*r*1.75,OVERFLOW_Y,-JAR_DEPTH/2+1.2),scale:[r,1.5,.6],color:dangerColor(o,0),pickable:!1})),a=guideColor(o),i=Array.from({length:12},(t,o)=>e.spawn({mesh:"sphere",scale:0,color:[a[0],a[1],a[2],Math.max(.6-.04*o,.15)],pickable:!1}));return{backdrop:n,jar:spawnJar(e,o),dashes:s,dots:i,preview:null,previewId:null,previewX:NaN,previewY:NaN,next:null,nextType:-1,fruits:new Map,danger:0,hot:!1}}function placeBackdrop(e,t,o){const n=Math.cos(o.tilt),r=(o.centerY-2*o.k-o.height/2)/(o.k*n);e.set(t,{position:[-(o.centerX-o.width/2)/o.k-o.width/(2*o.k),r+(o.height/(2*o.k)-220*Math.sin(o.tilt))/n,-220],scale:[1/o.k,1/(o.k*n),1]})}export function removeScene(e,t){for(const o of[t.backdrop,...t.jar,...t.dashes,...t.dots,t.preview,t.next,...t.fruits.values()])null!=o&&e.despawn(o)}export function setSceneTheme(e,t,o){setBackdropTheme(e,t.backdrop,o);for(const o of t.jar)e.despawn(o);t.jar=spawnJar(e,o);for(const n of t.dashes)e.set(n,{color:dangerColor(o,t.danger)});const n=guideColor(o);t.dots.forEach((t,o)=>e.set(t,{color:[n[0],n[1],n[2],Math.max(.6-.04*o,.15)]}))}function dangerColor(e,t){const o=guideColor(e),n="light"===e.mode?[o[0],o[1],o[2],.28]:toColor(COLORS.DANGER_SAFE),r=toColor(COLORS.DANGER_HOT),s=e=>(n[e]??1)+((r[e]??1)-(n[e]??1))*t;return[s(0),s(1),s(2),s(3)]}export function setDanger(e,t,o,n){if(n===t.danger)return;t.danger=n;const r=dangerColor(o,n),s=n>.35;for(const o of t.dashes)e.stopAnimation(o),e.set(o,{color:r,scale:[(PLAY_WIDTH-8)/42,1.5+1.5*n,.6]}),s&&e.animate(o,{color:[r[0],r[1],r[2],.35*(r[3]??1)]},{duration:.38,easing:"easeInOut",repeat:"forever",yoyo:!0});t.hot=s}const SPIN=[0,0,0,1];export function drawFruits(e,t,o){const n=e.transforms;for(const r of o){let o=t.fruits.get(r.id);null==o&&(o=spawnFruit(e,r.typeId,toWorld(r.x,r.y)),t.fruits.set(r.id,o)),quat.z(-r.angle,SPIN),n.transform(o,r.x-PLAY_WIDTH/2,PLAY_HEIGHT/2-r.y,0,SPIN[0],SPIN[1],SPIN[2],SPIN[3])}n.flush()}export function mergeFx(e,t,o,n,r){const s=toWorld(r.x,r.y);for(const r of[o,n]){const o=t.fruits.get(r.id);null!=o&&(t.fruits.delete(r.id),e.animate(o,{position:s,scale:.2},{duration:.12,easing:"easeIn"}).then(()=>{e.has(o)&&e.despawn(o)}))}const a=spawnFruit(e,r.typeId,s,.5);e.animate(a,{scale:1},{spring:"bouncy"}),t.fruits.set(r.id,a);const i=FRUIT_TYPES[r.typeId],l=toColor(i.color),p=e.spawn({mesh:"torus",position:[s[0],s[1],JAR_DEPTH/2-2],rotation:quat.x(Math.PI/2),scale:.6*i.size,color:[l[0],l[1],l[2],.9],pickable:!1});e.animate(p,{scale:1.5*i.size,color:[l[0],l[1],l[2],0]},{duration:.42,easing:"easeOut"}).then(()=>{e.has(p)&&e.despawn(p)}),effects.sparkle(e,{position:[s[0],s[1],10],count:18,size:.08*i.size,speed:2.2*i.size,lifetime:.5,gravity:3*-i.size,colors:[l,[1,1,1,1]],flash:!1})}export function clearFruits(e,t){for(const o of t.fruits.values())e.despawn(o);t.fruits.clear()}const NEXT_SCALE=.4;export function drawPreview(e,t,o,n=-1){if(!o&&null===t.previewId&&-1===t.nextType)return;if(o&&t.previewId===o.id&&t.previewX===o.x&&t.previewY===o.y&&t.nextType===n)return;if(o&&(t.previewX=o.x,t.previewY=o.y),!o){null!=t.preview&&e.despawn(t.preview),t.preview=null,t.previewId=null,null!=t.next&&e.despawn(t.next),t.next=null,t.nextType=-1;for(const o of t.dots)e.set(o,{scale:0});return}if(t.previewId!==o.id&&(null!=t.preview&&e.despawn(t.preview),t.preview=spawnFruit(e,o.typeId,toWorld(o.x,o.y,4),.3),e.animate(t.preview,{scale:1},{spring:{stiffness:240,damping:11}}),t.previewId=o.id),e.set(t.preview,{position:toWorld(o.x,o.y,4)}),n!==t.nextType&&(null!=t.next&&e.despawn(t.next),t.next=n>=0?spawnFruit(e,n,[0,0,4],.4*.4):null,null!=t.next&&e.animate(t.next,{scale:.4},{spring:{stiffness:240,damping:12}}),t.nextType=n),null!=t.next){const r=o.y-FRUIT_TYPES[o.typeId].size/2-.4*FRUIT_TYPES[n].size/2-4;e.set(t.next,{position:toWorld(PLAY_WIDTH/2,r,4)})}const r=o.y+FRUIT_TYPES[o.typeId].size/2+15,s=(PLAY_HEIGHT-10-r)/12;t.dots.forEach((t,n)=>e.set(t,{position:toWorld(o.x,r+n*s,2),scale:2*Math.max(4-.2*n,1.5)}))}export function celebrate(e){effects.confetti(e,{position:toWorld(PLAY_WIDTH/2,.35*PLAY_HEIGHT,20),count:70,size:7,speed:1.3*PLAY_WIDTH,lifetime:1.4,gravity:2*-PLAY_WIDTH,colors:["#FFD700","#FF9800","#4CAF50","#E91E63"].map(e=>toColor(e))})}export function jolt(e){e.shake=6}export function*warmAssets(){yield backMesh;for(let e=0;e<FRUIT_TYPES.length;e++)yield()=>fruitModel(e);yield()=>bandMesh(0,WALL,JAR_DEPTH,0),yield()=>bandMesh(0,1.6,.6,0)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{useMemo}from"react";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{getFruit,isFruitBuilt}from"../shared/EngineFruits.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{livesColumn,scoreColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{FIRST_FRUITS,FRUIT_BUILD_GAP,FRUIT_DETAIL,FRUIT_KINDS,getLayout,MAX_LIVES,TIME_LIMIT}from"./FruitNinjaConstants.js";import{addFruit,createGame,dispose,reset,setLayout,setModels,setTheme,start,tick,touchEnd,touchMove,touchStart}from"./FruitNinjaGame.js";import{backgroundFor,lightFor}from"./FruitNinjaWorld.js";import{jsx as _0x2a4928}from"react/jsx-runtime";const SFX=GAME_SOUNDS.FRUIT_NINJA;export const FruitNinja=engineGame(GAME_IDS.FRUIT_NINJA,e=>{const[t,r]=useLiveState(0),[i,o]=useLiveState(MAX_LIVES),[s,n]=useLiveState(TIME_LIMIT),{theme:a,screen:u,gameOver:m}=useEngineGame(e,{gameId:GAME_IDS.FRUIT_NINJA,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,r,i)=>{const o=getLayout(t,r,i);return setLayout(e,o),o.fieldWidth},drag:(e,{phase:t,x:r,y:i})=>{"start"===t?touchStart(e,r,i):"move"===t?touchMove(e,r,i):touchEnd(e)},tap:(e,t,r)=>{touchStart(e,t,r),touchEnd(e)},sounds:SFX,onStart:e=>e(SFX.START),wire:(e,t)=>{e.onScore=r,e.onLives=o,e.onTime=n,e.onTouch=()=>t(null,HapticType.LIGHT),e.onSlice=()=>t(SFX.SLICE,HapticType.LIGHT),e.onBomb=()=>t(SFX.BOMB,HapticType.HEAVY),e.onWin=()=>t(GAME_SOUNDS.WELL_DONE),e.onLose=()=>t(SFX.GAME_OVER);const i={};for(const t of FRUIT_KINDS)isFruitBuilt(t,FRUIT_DETAIL,!0)&&(i[t]=getFruit(t,FRUIT_DETAIL),addFruit(e,t));e.kinds.length&&setModels(e,i);const s=FRUIT_KINDS.filter(e=>!isFruitBuilt(e,FRUIT_DETAIL,!0));let a,u=0,m=s.length>0&&isFruitBuilt(s[0],FRUIT_DETAIL),F=0;const I=()=>{if(e.world.isDisposed)return;const t=s[u],r=getFruit(t,FRUIT_DETAIL);m?(r.pieces,i[t]=r,e.models||setModels(e,i),addFruit(e,t),u++):r.whole,m=!m,u>=s.length||(m||(m=isFruitBuilt(s[u],FRUIT_DETAIL)),m||u<FIRST_FRUITS?F=requestAnimationFrame(I):a=setTimeout(()=>F=requestAnimationFrame(I),FRUIT_BUILD_GAP))};return s.length&&(F=requestAnimationFrame(I)),()=>{cancelAnimationFrame(F),clearTimeout(a)}}}),F=useMemo(()=>lightFor(a),[a]),I=useMemo(()=>backgroundFor(a),[a]);return _0x2a4928(EngineGameScreen,{...u,light:F,background:I,columns:[scoreColumn(t),livesColumn(i,MAX_LIVES),timerColumn(s,a)],subtext:"Slice fruits to score!",gameOver:m({title:"GAME OVER",message:"You ran out of lives!",scoreLabel:"Final Score",score:t,buttonText:"Slice Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{isTablet}from"../../services/UtilsService.js";import{gameWidthFor}from"../shared/EngineUtils.js";export const TIME_LIMIT=120;export const MAX_LIVES=3;export const POINTS_PER_FRUIT=100;export const POINTS_PER_STAR=500;export const BOMB_CHANCE=.18;export const STAR_CHANCE=.07;export const FRUIT_KINDS=["apple","orange","banana","grapes","kiwi","strawberry","mango","peach","cherries","pineapple","watermelon","pomegranate","papaya"];export const FIRST_WAVE=1;export const WAVE_SIZE=2;export const WAVE_STAGGER=.7;export const WAVE_INTERVAL=1.8;export const WAVE_JITTER=.4;export const WAVE_MIN=.5;export const FRAME_TIME=1/60;export const MAX_FRAMES=2;export const FRUIT_SIZE=isTablet?90:60;export const FRUIT_DETAIL=isTablet?.7:.5;export const FIRST_FRUITS=3;export const FRUIT_BUILD_GAP=300;const GRAVITY=isTablet?.15:.12,VX_RANGE=isTablet?1.5:1,SPAWN_ABOVE_BOTTOM=50,PEAK=.15;export const WALL_BOUNCE=.8;export const SPIN_RANGE=.2;export const BLADE_WINDOW=.07;export const BLADE_POINTS=10;export const SPAWN_FROM=.55;export const SPAWN_SPRING={damping:11,stiffness:220};export const TRAIL_FADE=.22;export const PIECE_LIFETIME=1.1;export const PIECE_SPREAD=2.5;export const BOMB_COLORS=["#1f2937","#374151","#f97316","#fde047"];export const STAR_COLORS=["#fbbf24","#f59e0b","#fef3c7","#ffffff"];export function getLayout(t,o,e){const s=gameWidthFor(t),r=.85*o-50;return{width:t,height:o,offset:e,fieldLeft:(t-s)/2,fieldWidth:s,size:FRUIT_SIZE,gravity:GRAVITY,launchVy:-Math.sqrt(2*GRAVITY*r),launchVxRange:VX_RANGE,spawnY:o-50}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{BLADE_POINTS,BLADE_WINDOW,BOMB_CHANCE,FIRST_WAVE,FRAME_TIME,MAX_FRAMES,MAX_LIVES,POINTS_PER_FRUIT,POINTS_PER_STAR,SPIN_RANGE,STAR_CHANCE,TIME_LIMIT,WALL_BOUNCE,WAVE_INTERVAL,WAVE_JITTER,WAVE_MIN,WAVE_SIZE,WAVE_STAGGER}from"./FruitNinjaConstants.js";import{buildModels,drawTrail,fadeTrail,hideTrail,placeItem,removeTrail,sliceItem,spawnItem,spawnTrail}from"./FruitNinjaScene.js";import{cameraFor,makeView,spawnWorld}from"./FruitNinjaWorld.js";const WORLD_CAPACITY=1400;export function createGame(e){const o=new World(1400),t={world:o,camera:{eye:[0,1.6,0],target:[0,1.6,-1],fov:.9},theme:e,layout:null,view:null,scenery:[],models:null,trail:null,phase:"ready",get score(){return o.scoreboard.score},get lives(){return o.scoreboard.lives},get timeLeft(){return o.scoreboard.shownSeconds},won:!1,time:0,items:[],kinds:[],bladeX:new Float64Array(BLADE_POINTS),bladeY:new Float64Array(BLADE_POINTS),bladeT:new Float64Array(BLADE_POINTS),bladeLen:0,touching:!1,trailDirty:!1,onPhase:e=>{},onScore:e=>{},onLives:e=>{},onTime:e=>{},onTouch:()=>{},onSlice:()=>{},onBomb:()=>{},onWin:()=>{},onLose:()=>{}};return o.scoreboard.reset(MAX_LIVES,TIME_LIMIT),o.scoreboard.handlers={onSecond:e=>t.onTime(e),onTimeUp:()=>"playing"===t.phase&&end(t,!0)},t}const after=(e,o,t)=>e.world.after(o,t);export function setModels(e,o){e.models=buildModels(o),e.layout&&!e.trail&&(e.trail=spawnTrail(e.world))}export function addFruit(e,o){e.kinds.includes(o)||e.kinds.push(o)}export function setLayout(e,o){const t=e.world;clearItems(e);for(const o of e.scenery)t.despawn(o);e.trail&&removeTrail(t,e.trail),e.layout=o;const r=makeView(o.width,o.height);e.view=r;const a=cameraFor(r);e.camera.eye=a.eye,e.camera.target=a.target,e.camera.fov=a.fov,e.scenery=spawnWorld(t,r,e.theme),e.trail=e.models?spawnTrail(t):null}export function setTheme(e,o){if(o===e.theme&&e.scenery.length)return;e.theme=o;const t=e.view;if(t&&!e.world.isDisposed){for(const o of e.scenery)e.world.despawn(o);e.scenery=spawnWorld(e.world,t,o)}}function clearItems(e){for(const o of e.items)e.world.despawn(o.root);e.items=[]}export function start(e){"ready"===e.phase&&(e.phase="playing",e.world.scoreboard.startCountdown(TIME_LIMIT),e.onPhase("playing"),after(e,FIRST_WAVE,()=>wave(e)))}function wave(e){if("playing"===e.phase){for(let o=0;o<WAVE_SIZE;o++)after(e,o*WAVE_STAGGER,()=>throwItem(e));after(e,Math.max(WAVE_MIN,WAVE_INTERVAL+(Math.random()-.5)*WAVE_JITTER),()=>wave(e))}}function throwItem(e){const o=e.layout,t=e.view,r=e.models;if(!o||!t||!r||"playing"!==e.phase)return;const a=Math.random(),n=a<BOMB_CHANCE?{kind:"bomb"}:a<BOMB_CHANCE+STAR_CHANCE?{kind:"star"}:e.kinds.length?{kind:"fruit",fruit:e.kinds[Math.floor(Math.random()*e.kinds.length)]}:{kind:"star"},i=Math.random()*(o.fieldWidth-o.size),l=o.spawnY,d=o.size/2;e.items.push({what:n,x:i,y:l,vx:(Math.random()-.5)*o.launchVxRange,vy:o.launchVy+(Math.random()-.5),root:spawnItem(e.world,t,o,r,n,o.fieldLeft+i+d,l+d,(Math.random()-.5)*SPIN_RANGE)})}export function reset(e){e.world.cancelTimers(),clearItems(e),endStroke(e),e.bladeLen=0,e.world.scoreboard.reset(MAX_LIVES,TIME_LIMIT),e.won=!1,e.phase="ready",e.onScore(0),e.onLives(MAX_LIVES),e.onTime(TIME_LIMIT),e.onPhase("ready")}export function dispose(e){e.world.cancelTimers(),e.world.dispose()}function end(e,o){e.world.scoreboard.stop(),e.world.cancelTimers(),clearItems(e),e.bladeLen=0,e.touching=!1,e.trailDirty=!1,e.trail&&hideTrail(e.world,e.trail),e.won=o,e.phase="over",o?e.onWin():e.onLose(),e.onPhase("over")}export function tick(e,o){e.world.isDisposed||(e.time+=o,"playing"===e.phase&&e.items.length&&step(e,Math.min(o/FRAME_TIME,MAX_FRAMES)),e.trailDirty&&(e.trailDirty=!1,e.view&&e.trail&&drawTrail(e.world,e.view,e.trail,e.bladeX,e.bladeY,e.bladeLen)),e.world.update(o))}export function touchStart(e,o,t){"playing"===e.phase&&(e.bladeLen=0,e.touching=!0,addPoint(e,o,t),e.onTouch())}export function touchMove(e,o,t){if("playing"!==e.phase||!e.touching)return;const r=e.bladeLen-1;r>=0&&e.bladeX[r]===o&&e.bladeY[r]===t||addPoint(e,o,t)}function addPoint(e,o,t){e.bladeLen===BLADE_POINTS&&(e.bladeX.copyWithin(0,1),e.bladeY.copyWithin(0,1),e.bladeT.copyWithin(0,1),e.bladeLen--),e.bladeX[e.bladeLen]=o,e.bladeY[e.bladeLen]=t,e.bladeT[e.bladeLen]=e.time,e.bladeLen++,e.trailDirty=!0}export function touchEnd(e){endStroke(e)}function endStroke(e){e.touching=!1,e.trail&&(e.trailDirty&&e.view&&drawTrail(e.world,e.view,e.trail,e.bladeX,e.bladeY,e.bladeLen),e.trailDirty=!1,e.bladeLen>1?fadeTrail(e.world,e.trail):hideTrail(e.world,e.trail))}const segmentDistSq=(e,o,t,r,a,n)=>{const i=a-t,l=n-r,d=i*i+l*l,s=d>0?Math.max(0,Math.min(1,((e-t)*i+(o-r)*l)/d)):0;return(t+i*s-e)**2+(r+l*s-o)**2};function cutBy(e,o,t,r){const{bladeX:a,bladeY:n,bladeT:i,bladeLen:l}=e,d=e.time-BLADE_WINDOW,s=r*r;if(1===l)return i[0]>=d&&(a[0]-o)**2+(n[0]-t)**2<=s?[1,0]:null;for(let e=l-2;e>=0&&!(i[e+1]<d);e--)if(segmentDistSq(o,t,a[e],n[e],a[e+1],n[e+1])<=s)return[a[e+1]-a[e],n[e+1]-n[e]];return null}function step(e,o){const t=e.layout,r=t.size/2,a=t.fieldWidth-t.size,n=e.items,i=e.world.transforms;let l=0;for(const d of n){const s=t.fieldLeft+d.x+r,m=d.y+r,u=cutBy(e,s,m,r);if(u){if(slice(e,d,s,m,u),"playing"!==e.phase)return void i.clear();continue}d.vy+=t.gravity*o;let h=d.x+d.vx*o,w=d.y+d.vy*o;w>t.height+100?e.world.despawn(d.root):(w<-50?(d.vy=Math.max(d.vy,.5),w=-50):h<=0?(h=0,d.vx=Math.abs(d.vx)*WALL_BOUNCE):h>=a&&(h=a,d.vx=-Math.abs(d.vx)*WALL_BOUNCE),d.x=h,d.y=w,placeItem(e.world,e.view,d.root,t.fieldLeft+h+r,w+r,i),n[l++]=d)}n.length=l,i.flush()}function slice(e,o,t,r,[a,n]){if(sliceItem(e.world,e.view,e.layout,e.models,o.root,o.what,t,r,o.vx,o.vy,a,n),"bomb"===o.what.kind)return e.onBomb(),e.onLives(e.world.scoreboard.addLives(-1)),void(e.lives<=0&&end(e,!1));e.onSlice(),"star"===o.what.kind?(e.world.scoreboard.setLives(Math.min(e.lives+1,MAX_LIVES)),e.onLives(e.lives),e.world.scoreboard.add(POINTS_PER_STAR)):e.world.scoreboard.add(POINTS_PER_FRUIT),e.onScore(e.score)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,extrude,merge,Path,quat,shapeGeometry,tube}from"@nayan-ui/engine";import{lighten}from"../../services/GamesConstants.js";import{cacheGameAsset,createGameMesh as _0x46809a}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{BLADE_POINTS,BOMB_COLORS,FRAME_TIME,PIECE_LIFETIME,PIECE_SPREAD,SPAWN_FROM,SPAWN_SPRING,STAR_COLORS,TRAIL_FADE}from"./FruitNinjaConstants.js";import{at,facing,planeVector,PLAY_DEPTH,pointSize}from"./FruitNinjaWorld.js";const HIDDEN=0,PER_SECOND=1/FRAME_TIME,TRAIL_DEPTH=PLAY_DEPTH-.35;let extras;export function buildModels(e){return extras??=cacheGameAsset("fruit-ninja/extras",()=>({bomb:_0x46809a(merge([{geometry:shapeGeometry("sphere"),color:[.13,.14,.17]},{geometry:shapeGeometry("cylinder"),position:[0,.5,0],scale:[.26,.14,.26],color:[.35,.37,.42]},{geometry:tube([[0,.55,0],[.04,.7,0],[.14,.78,0],[.22,.76,0]],{radius:.035}),color:[.76,.6,.38]}]),{fit:1,shine:.7}),spark:_0x46809a(shapeGeometry("sphere")),star:_0x46809a(extrude((new Path).addStar(0,0,.5,.22,5),{depth:.22,color:toColor(STAR_COLORS[0])}),{fit:1,shine:.6}),disc:_0x46809a(extrude((new Path).addCircle(0,0,.5),{depth:0}))})),{fruits:e,...extras}}const SPARK=[3,2.1,.6],WHITE=[1,1,1,1];function fitted(e,t,o=[0,0,0]){const i=t/Math.max(e.size[0],e.size[1]);return{scale:i,position:[-o[0]*i,-o[1]*i,-o[2]*i]}}export function spawnItem(e,t,o,i,s,n,a,r){const p=3*(Math.random()-.5),l=o.size*pointSize(t),f=e.spawn({mesh:"none",position:at(t,n,a),scale:SPAWN_FROM,spin:[.4*p,p,-r*PER_SECOND],pickable:!1});e.animate(f,{scale:1},{spring:SPAWN_SPRING});const h=(t,o,i=WHITE)=>e.spawn({mesh:t,parent:f,position:o.position,scale:o.scale,color:i,pickable:!1});if("fruit"===s.kind){const e=i.fruits[s.fruit];h(e.whole,fitted(e.whole,l,e.center))}else if("bomb"===s.kind){h(i.bomb,fitted(i.bomb,.92*l));const t=e.spawn({mesh:i.spark,parent:f,position:[.2*l,.36*l,0],scale:.1*l,color:SPARK,pickable:!1});e.animate(t,{scale:.16*l},{duration:.12,repeat:"forever",yoyo:!0})}else h(i.star,fitted(i.star,.95*l),toColor(STAR_COLORS[0]));return f}const itemPosition=[0,0,0];export function placeItem(e,t,o,i,s,n){const a=pointSize(t),r=(t.height/2-s)*a;itemPosition[0]=t.eye[0]+t.forward[0]*t.playDepth+(i-t.width/2)*a,itemPosition[1]=t.eye[1]+t.forward[1]*t.playDepth+r*t.up[1],itemPosition[2]=t.eye[2]+t.forward[2]*t.playDepth+r*t.up[2],n?n.position(o,itemPosition[0],itemPosition[1],itemPosition[2]):e.set(o,{position:itemPosition})}const SPLASH_FRUIT=e=>[e,[Math.min(1,e[0]+.25),Math.min(1,e[1]+.25),Math.min(1,e[2]+.25)]],BOMB_BURST=BOMB_COLORS.map(e=>toColor(e)),STAR_BURST=STAR_COLORS.map(e=>toColor(e)),STAR_SPARK=toColor(lighten(STAR_COLORS[0],.5));export function sliceItem(e,t,o,i,s,n,a,r,p,l,f,h){e.despawn(s);const m=pointSize(t),d=o.size*m,E=at(t,a,r),A=at(t,a,r,PLAY_DEPTH-.5*d),S=o.gravity*PER_SECOND*PER_SECOND,P=planeVector(t,0,S);if("fruit"===n.kind){const o=i.fruits[n.fruit],s=Math.hypot(f,h)||1,a=h/s,r=-f/s,u=facing(t,Math.atan2(-r,a)),_=fitted(o.whole,d,o.center);return[-1,1].forEach((i,s)=>{const n=e.spawn({mesh:"none",position:E,rotation:quat.multiply(u,quat.y(i<0?Math.PI/2:-Math.PI/2)),velocity:planeVector(t,(p+i*a*PIECE_SPREAD)*PER_SECOND,(l+i*r*PIECE_SPREAD)*PER_SECOND),acceleration:P,spin:[0,0,2.5*i],lifetime:PIECE_LIFETIME,pickable:!1});e.spawn({mesh:o.pieces[s],parent:n,position:_.position,scale:_.scale,color:WHITE,pickable:!1})}),void effects.splash(e,{position:A,count:14,size:.09*d,speed:5*d,lifetime:.55,gravity:-S*m*.6,colors:SPLASH_FRUIT(o.juice)})}const u="bomb"===n.kind;u?effects.explosion(e,{position:A,count:16,size:.7*d,speed:2.6*d,lifetime:.6,gravity:-S*m*.5,debris:BOMB_BURST,flash:!1}):effects.sparkle(e,{position:A,count:16,size:.1*d,speed:6*d,lifetime:.6,gravity:-S*m*.3,colors:STAR_BURST,flash:!1});const _=e.spawn({mesh:i.disc,position:at(t,a,r,PLAY_DEPTH-d),rotation:facing(t),scale:d,color:u?[2,1.1,.3,.85]:[2*STAR_SPARK[0],2*STAR_SPARK[1],2*STAR_SPARK[2],.8],pickable:!1});e.animate(_,{scale:d*(u?3.2:2.2),color:[2,u?.8:1.8,.2,0]},{duration:u?.4:.3}).then(()=>{e.has(_)&&e.despawn(_)})}const BEAD_SIZE=7,BEAD=[1.6,1.6,1.6,.75],FADED=[1.6,1.6,1.6,0];export function spawnTrail(e){return{beads:Array.from({length:BLADE_POINTS},()=>e.spawn({mesh:"sphere",scale:0,color:BEAD,pickable:!1})),shown:0,fading:!1}}export function drawTrail(e,t,o,i,s,n){const a=e.transforms,r=Math.min(n,o.beads.length);if(o.fading){for(let t=0;t<o.shown;t++)e.stopAnimation(o.beads[t]);o.fading=!1}const p=pointSize(t,TRAIL_DEPTH),l=at(t,t.width/2,t.height/2,TRAIL_DEPTH),f=7*p;for(let e=0;e<r;e++){const r=n-1-e,h=(i[r]-t.width/2)*p,m=(t.height/2-s[r])*p,d=o.beads[e];a.position(d,l[0]+h,l[1]+m*t.up[1],l[2]+m*t.up[2]),a.scale(d,f*(1-e/BLADE_POINTS)),a.color(d,BEAD[0],BEAD[1],BEAD[2],BEAD[3]??1)}for(let e=r;e<o.shown;e++)a.scale(o.beads[e],0);o.shown=r,a.flush()}export function fadeTrail(e,t){t.shown&&(e.animate(t.beads.slice(0,t.shown),{color:FADED,scale:0},{duration:TRAIL_FADE}),t.fading=!0)}export function hideTrail(e,t){const o=e.transforms;for(let i=0;i<t.shown;i++)t.fading&&e.stopAnimation(t.beads[i]),o.scale(t.beads[i],0);o.flush(),t.shown=0,t.fading=!1}export function removeTrail(e,t){for(const o of t.beads)e.despawn(o)}export function*warmAssets(){yield()=>buildModels({})}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{makeView as _0x19b3a0,spawnWorld as _0x1faf39}from"../shared/EngineMeadow.js";export{at,backgroundFor,cameraFor,facing,lightFor,planeVector,pointSize}from"../shared/EngineMeadow.js";export const PLAY_DEPTH=3.6;export const makeView=(e,o)=>_0x19b3a0(e,o,{eyeHeight:1.6,horizon:.62,playDepth:3.6});export const spawnWorld=(e,o,a)=>_0x1faf39(e,o,a);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS,isTablet}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{GAME_TIME,getLayout,LIGHT}from"./Game2048Constants.js";import{createGame,dispose,drag,reset,setLayout,setTheme,start,tick}from"./Game2048Game.js";import{jsx as _0x5d103d}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.GAME_2048,FEEDBACK={move:{sound:SOUNDS.TILE_MOVE,haptic:HapticType.LIGHT},merge:{sound:SOUNDS.TILE_MERGE,haptic:HapticType.MEDIUM},invalid:{sound:SOUNDS.INVALID_MOVE,haptic:HapticType.WARNING},win:{sound:SOUNDS.WIN,haptic:HapticType.SUCCESS},stuck:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}},CARDS={win:{title:"YOU WON!",message:"You reached 1024!",label:"Score",button:"Continue Playing!"},timeout:{title:"TIME UP!",message:"You ran out of time!",label:"Time's Up!",button:"Play Again!"},stuck:{title:"NO MOVES LEFT!",message:"The board is full!",label:"Board Full!",button:"Play Again!"}};export const Game2048=engineGame(GAME_IDS.GAME_2048,e=>{const[t,s]=useLiveState(GAME_TIME),{game:i,theme:a,status:o,screen:r,gameOver:n}=useEngineGame(e,{gameId:GAME_IDS.GAME_2048,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,i)=>{const a=getLayout(t,s,i,isTablet);return setLayout(e,a),a.size+2*a.pad},drag:drag,outcome:e=>"win"===e.result?"win":"lose",sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SELECTION),onStop:e=>e(null,HapticType.SELECTION),onOver:(e,t,s)=>{"timeout"===s.result&&e(SOUNDS.TIME_UP,HapticType.ERROR)},wire:(e,t)=>{e.onTime=s,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}}),m=CARDS[i.result??"timeout"];return _0x5d103d(EngineGameScreen,{...r,light:LIGHT,columns:[timerColumn(t,a,0)],subtext:"Swipe to play",gameOver:n({title:m.title,message:m.message,scoreLabel:m.label,score:"win"===o?i.score:0,buttonText:m.button})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GAME_TIME=900;export const MIN_SWIPE=50;export const SLIDE_TIME=.11;export const MERGE_POP=1.18;const TILES={2:["#eee4da","#776e65"],4:["#ede0c8","#776e65"],8:["#f2b179","#f9f6f2"],16:["#f59563","#f9f6f2"],32:["#f67c5f","#f9f6f2"],64:["#f65e3b","#f9f6f2"],128:["#edcf72","#f9f6f2"],256:["#edcc61","#f9f6f2"],512:["#edc850","#f9f6f2"],1024:["#edc53f","#f9f6f2"],2048:["#edc22e","#f9f6f2"],4096:["#3c3a32","#f9f6f2"]};export const tileColors=t=>TILES[t]??TILES[4096];export const COLORS={FRAME:"#5c4033",SLOT:"#3d2a1f"};export const TILT=0;export const LIGHT=frontLight([0,0,1],1);export const TILE_HEIGHT=.4;const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=120;export function getLayout(t,e,o,f){const r=f?10:8,n=getScoreBoardTop(o)+82,s=Math.max(180,e-n-120),i=Math.max(180,Math.min(gameWidthFor(t),s/Math.cos(0)-30)),p=Math.floor((i-2*r-18)/5);return{width:t,height:e,tilt:0,centerY:n+s/2,tile:p,gap:3,pitch:p+3,pad:r,size:5*p+18}}export const cellCentre=(t,e,o)=>[(o-2)*t.pitch,(2-e)*t.pitch];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{aimTilted}from"../shared/EngineTilt.js";import{GAME_TIME,MIN_SWIPE}from"./Game2048Constants.js";import{addRandomTile,emptyGrid,moveTiles,reached,stuck,tilesOf}from"./Game2048Rules.js";import{buildScene,bump,celebrate,dim,removeScene,resetTiles,setSceneTheme,slideTiles}from"./Game2048Scene.js";const WORLD_CAPACITY=400;function freshGrid(){const e=emptyGrid();return addRandomTile(e,1),addRandomTile(e,2),{grid:e,nextId:3}}export function createGame(e){const r=new World(400),{grid:o,nextId:t}=freshGrid(),n={world:r,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",grid:o,nextId:t,result:null,get score(){return r.scoreboard.score},get timeLeft(){return r.scoreboard.shownSeconds},press:null,onPhase:e=>{},onTime:e=>{},onEvent:e=>{}};return r.scoreboard.reset(0,GAME_TIME),r.scoreboard.handlers={onSecond:e=>n.onTime(e),onTimeUp:()=>"playing"===n.phase&&end(n,"timeout")},n}export function setLayout(e,r){e.scene&&removeScene(e.world,e.scene),e.layout=r,aimTilted(e.camera,r),e.scene=buildScene(e.world,r,e.theme,tilesOf(e.grid)),"over"===e.phase&&"win"!==e.result&&dim(e.world,e.scene)}export function setTheme(e,r){e.theme=r,e.layout&&e.scene&&setSceneTheme(e.world,e.layout,e.scene,r)}export function start(e){"ready"===e.phase&&(e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(GAME_TIME),e.result=null,e.phase="playing",e.onTime(GAME_TIME),e.onPhase("playing"))}export function reset(e){const{grid:r,nextId:o}=freshGrid();e.grid=r,e.nextId=o,e.result=null,e.world.scoreboard.reset(0,GAME_TIME),e.press=null,e.phase="ready",e.layout&&e.scene&&resetTiles(e.world,e.layout,e.scene,tilesOf(r)),e.onTime(GAME_TIME),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,r){e.world.isDisposed||e.world.update(r)}function end(e,r){e.world.scoreboard.stop(),e.result=r,e.phase="over",e.press=null,e.layout&&e.scene&&("win"===r?celebrate(e.world,e.layout,e.scene):dim(e.world,e.scene)),e.onPhase("over")}export function move(e,r){if("playing"!==e.phase)return;const{moved:o,score:t,ghosts:n}=moveTiles(e.grid,r),{layout:s,scene:d}=e;if(!o)return s&&d&&bump(e.world,s,d),void e.onEvent("invalid");addRandomTile(e.grid,e.nextId++);const i=reached(e.grid),l=stuck(e.grid);s&&d&&slideTiles(e.world,s,d,tilesOf(e.grid),n),e.onEvent("move"),t>0&&e.onEvent("merge"),i?(e.world.scoreboard.set(calculateTimeBasedScore(e.timeLeft,GAME_TIME,0)),e.onEvent("win"),end(e,"win")):l&&(e.onEvent("stuck"),end(e,"stuck"))}export function drag(e,{phase:r,dx:o,dy:t}){if("start"===r)return void(e.press={swiped:!1});const n=e.press;if(!n||n.swiped)return;const s=Math.abs(o),d=Math.abs(t);let i=null;s>d&&s>MIN_SWIPE?i=o>0?"right":"left":d>MIN_SWIPE&&(i=t>0?"down":"up"),"end"===r&&(e.press=null),i&&(n.swiped=!0,move(e,i))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const GRID=5;export const TARGET=1024;const FOUR_CHANCE=.1;export const emptyGrid=()=>Array.from({length:5},()=>Array(5).fill(null));export function addRandomTile(o,t){let e=0;for(const t of o)for(const o of t)o||e++;if(!e)return null;let l=Math.floor(Math.random()*e),r=0,n=0;o:for(let t=0;t<5;t++)for(let e=0;e<5;e++)if(!o[t][e]&&0===l--){r=t,n=e;break o}const u={id:t,value:Math.random()<.1?4:2,row:r,col:n};return o[r][n]=u,u}export function moveTiles(o,t){let e=!1,l=0;const r=[],n="left"===t||"right"===t,u="right"===t||"down"===t,s=emptyGrid();for(let t=0;t<5;t++){const f=[];for(let e=0;e<5;e++){const l=u?4-e:e,r=n?o[t][l]:o[l][t];r&&f.push(r)}const a=[],i=[];for(let o=0;o<f.length;){const t=f[o],e=f[o+1];if(e&&t.value===e.value){const r={...t,value:2*t.value};a.push(r),i.push(e),l+=r.value,o+=2}else a.push(t),i.push(null),o++}for(;a.length<5;)a.push(null);for(let l=0;l<5;l++){const f=a[l],p=u?4-l:l,h=n?t:p,v=n?p:t;(f!==(n?o[t][p]:o[p][t])||f&&(f.row!==h||f.col!==v))&&(e=!0);const d=i[l];d&&r.push({id:d.id,value:d.value,fromRow:d.row,fromCol:d.col,toRow:h,toCol:v}),s[h][v]=f?{...f,row:h,col:v}:null}}for(let t=0;t<5;t++)for(let e=0;e<5;e++)o[t][e]=s[t][e]??null;return{moved:e,score:l,ghosts:r}}export function stuck(o){for(let t=0;t<5;t++)for(let e=0;e<5;e++){const l=o[t][e];if(!l)return!1;if(e<4&&o[t][e+1]?.value===l.value)return!1;if(t<4&&o[t+1][e]?.value===l.value)return!1}return!0}export const reached=(o,t=1024)=>o.some(o=>o.some(o=>null!==o&&o.value>=t));export const tilesOf=o=>o.flatMap(o=>o.filter(o=>null!==o));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,extrude,Path}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{spawnRaisedBlock}from"../shared/EngineBlocks.js";import{flatGlyphMesh,GLYPH_ADVANCE}from"../shared/EngineGlyphs.js";import{cacheGameAsset,createGameMesh as _0x1972ef}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{cellCentre,COLORS,MERGE_POP,SLIDE_TIME,TILE_HEIGHT,tileColors}from"./Game2048Constants.js";import{GRID}from"./Game2048Rules.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("game-2048/Game2048Scene:"+e,o),meshes.set(e,t)),t},BOARD_DEPTH=12,BACKDROP_DEPTH=30,SURFACE=1,SPAWN_FROM=.2,panelMesh=(e,o,t)=>cached("g2048-panel:"+e+":"+o+":"+t,()=>_0x1972ef(extrude((new Path).addRoundedRect(-e/2,-e/2,e,e,o),{depth:t}),{shine:0})),at=(e,o,t)=>{const[s,a]=cellCentre(e,o,t);return[s,a,1]};function spawnBoard(e,o,t){const s=[],a=o=>s.push(e.spawn({pickable:!1,...o})),i="classic"===t.mode;a({mesh:panelMesh(o.size+2*o.pad,i?14:8,12),position:[0,0,-6],color:toColor(i?COLORS.FRAME:t.BOARD.SURFACE)});for(let e=0;e<GRID;e++)for(let s=0;s<GRID;s++){const[n,r]=cellCentre(o,e,s);a({mesh:panelMesh(o.tile,Math.min(8,.12*o.tile),1),position:[n,r,.5],color:toColor(i?COLORS.SLOT:t.BOARD.CELL_EMPTY)})}return s}function spawnDigits(e,o,t,s){const a=String(s),i=a.length,n=o.tile*(i<=2?.29:3===i?.24:4===i?.19:.155),r=n*GLYPH_ADVANCE,l=toColor(tileColors(s)[1]),p=o.tile*TILE_HEIGHT+.6;return[...a].map((o,s)=>e.spawn({mesh:flatGlyphMesh(o),parent:t,position:[(s-(i-1)/2)*r,0,p],scale:n,color:l,pickable:!1}))}function spawnTile(e,o,t){const s=o.tile*TILE_HEIGHT,a=e.spawn({mesh:"none",position:at(o,t.row,t.col),pickable:!1});return{root:a,block:spawnRaisedBlock(e,{parent:a,position:[0,0,s/2],size:[o.tile,o.tile,s],color:toColor(tileColors(t.value)[0]),gloss:!1,shadow:!1}),digits:spawnDigits(e,o,a,t.value),value:t.value,row:t.row,col:t.col}}export function buildScene(e,o,t,s){const a=spawnBackdrop(e,o.width,o.height,-30,t);placeTiltedBackdrop(e,a,o,30);const i={backdrop:a,board:spawnBoard(e,o,t),tiles:new Map};for(const t of s)i.tiles.set(t.id,spawnTile(e,o,t));return i}export function removeScene(e,o){for(const t of[o.backdrop,...o.board,...Array.from(o.tiles.values(),e=>e.root)])e.despawn(t)}export function setSceneTheme(e,o,t,s){setBackdropTheme(e,t.backdrop,s);for(const o of t.board)e.despawn(o);t.board=spawnBoard(e,o,s)}export function resetTiles(e,o,t,s){for(const o of t.tiles.values())e.despawn(o.root);t.tiles.clear();for(const a of s)grow(e,t,a,spawnTile(e,o,a),0)}function grow(e,o,t,s,a){o.tiles.set(t.id,s),e.set(s.root,{scale:.2}),e.animate(s.root,{scale:1},{duration:.18,delay:a,easing:"back"})}export function slideTiles(e,o,t,s,a){for(const s of a){const a=t.tiles.get(s.id);a&&(t.tiles.delete(s.id),e.animate(a.root,{position:at(o,s.toRow,s.toCol)},{duration:SLIDE_TIME,easing:"easeOut"}).then(()=>{e.has(a.root)&&e.despawn(a.root)}).catch(()=>{}))}for(const a of s){const s=t.tiles.get(a.id);if(s){if((s.row!==a.row||s.col!==a.col)&&(e.animate(s.root,{position:at(o,a.row,a.col)},{duration:SLIDE_TIME,easing:"easeOut"}),s.row=a.row,s.col=a.col),s.value!==a.value){for(const o of s.digits)e.despawn(o);s.digits=spawnDigits(e,o,s.root,a.value),s.value=a.value,e.animate(s.block,{color:toColor(tileColors(a.value)[0])},{duration:.08,delay:.6*SLIDE_TIME}),e.animate(s.root,[{scale:MERGE_POP,at:.35},{scale:1}],{duration:.22,delay:SLIDE_TIME,easing:"easeOut"})}}else grow(e,t,a,spawnTile(e,o,a),SLIDE_TIME)}}export function bump(e,o,t){e.animate(Array.from(t.tiles.values(),e=>e.root),{shake:.04*o.tile},{duration:.2})}export function celebrate(e,o,t){for(const s of t.tiles.values()){const[t,a,i]=at(o,s.row,s.col);e.animate(s.root,[{position:[t,a,i+.3*o.tile],scale:1.05,at:.4},{position:[t,a,i],scale:1}],{duration:.45,delay:SLIDE_TIME+.15+.05*(s.row+s.col),easing:"easeOut"})}effects.confetti(e,{position:[0,0,o.tile],count:70,size:.1*o.tile,speed:1.4*o.size,lifetime:1.3,gravity:2.4*-o.size,colors:["#edc22e","#f67c5f","#f2b179","#FFFFFF"].map(e=>toColor(e))})}export function dim(e,o){for(const t of o.tiles.values()){const o=toColor(tileColors(t.value)[0]);e.animate(t.block,{color:[.55*o[0],.55*o[1],.6*o[2],1]},{duration:.4,delay:SLIDE_TIME})}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const _0x76f1b9=_0x316f;!function(){const e=_0x316f,t=_0x36db();for(;;)try{if(505887==parseInt(e(312,"BmUZ"))/1+parseInt(e(347,"%l7@"))/2*(-parseInt(e(302,"1tO1"))/3)+-parseInt(e(352,"!PHv"))/4*(parseInt(e(266,"DS*t"))/5)+-parseInt(e(383,"Kk)r"))/6+-parseInt(e(338,"gQXh"))/7+parseInt(e(313,"6]wc"))/8*(-parseInt(e(389,"3p(]"))/9)+parseInt(e(329,"0@uL"))/10)break;t.push(t.shift())}catch(e){t.push(t.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x2cf311 from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x2c03aa}from"../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from"../../services/UtilsService.js";function _0x316f(e,t){e-=258;const o=_0x36db();let W=o[e];if(void 0===_0x316f.FwFMUs){const e=function(e,t){let o,W,n=[],r=0,a="";for(e=function(e){let t="",o="";for(let o,W,n=0,r=0;W=e.charAt(r++);~W&&(o=n%4?64*o+W:W,n++%4)?t+=String.fromCharCode(255&o>>(-2*n&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let e=0,W=t.length;e<W;e++)o+="%"+("00"+t.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(o)}(e),W=0;W<256;W++)n[W]=W;for(W=0;W<256;W++)r=(r+n[W]+t.charCodeAt(W%t.length))%256,o=n[W],n[W]=n[r],n[r]=o;W=0,r=0;for(let t=0;t<e.length;t++)W=(W+1)%256,r=(r+n[W])%256,o=n[W],n[W]=n[r],n[r]=o,a+=String.fromCharCode(e.charCodeAt(t)^n[(n[W]+n[r])%256]);return a};_0x316f.LsdutS=e,_0x316f.sbIMZz={},_0x316f.FwFMUs=!0}const n=o[0];_0x316f.NoUtlO!==n&&(_0x316f.sbIMZz={},_0x316f.NoUtlO=n);const r=_0x316f.sbIMZz[e];return void 0===r?(void 0===_0x316f.fWCmfD&&(_0x316f.fWCmfD=!0),W=_0x316f.LsdutS(W,t),_0x316f.sbIMZz[e]=W):W=r,W}function _0x36db(){const e=["fSowWQdcKCox","W4HlWPOzWQjCW4xdPWe","zmoJoHZdI8kYbbZcQG","AmkXWQLogSo4W48OCCkPhq","sCoEWRGkkW8pWQv/","kCoXWR/cKSog","W482W5zwWOe2sCk5W63dOMZdUq","WPFcJSoTW4VcIs/cGuLK","WRCjuWddQsi2W47dJ8ktcmo/W5S","tSoXWQ3cRmoyW4xdSW","zmoRWOZdVq","WPdcO8k5W6/cHa","k8k9W4KZjZOS","W5D6WQCQqCk5","WQJdO0y3xa","W4f8WRakqCkXlW","rSo0Cmo1WRNdK3j2oCo7cW","W45+euBcRW","WQRdKSodW6PP","W7rBW4iRW5eznW","wcxdMdFcUa","cCoUWQNcSSo8W4BdNN7dSG","WR5uWOlcIsa","W7nwW4vGuSk+qWO","lSktEebwC8k0W4VdHmkItmkxawtdNmkUW64","tmoUmrNcOW","psGdW69vW4WJWPjYfa","W7pcLXBdTdCvW7dcQCkuidnRWQzJk2O","W7pcLXJdTHmTW6hcO8kokInuWOvJna","pCosW5FcK2KuW6ddJGC","umoYz8oeWR3dKwO","WPFcV8koW7BcTIJdLwvS","xxrZC8o4BW","zmoykGVdGW","WOqVWOjxW7hdL8k7W6y","vmkAW4JdMSkYDSkU","gSkvW5TtW6e","E8kTW43dGCkr","W7FdJmoECCkaCCkSfCkQ","FxrfWODrW6ylWO5giG","ngBcJdpdTYtdMIhdOwNdPmkCyW","AatdRZVcIYtcGWOkWQzc","c8kDW6GdarSwWQLk","yCoYWPVdT8kmW5aK","h8kzW5zAW43dNmocxW","WO7dHgiGBHSFWORcGG","WRuixGtdRvvGW6hdG8kyhW","tmochs7dR8keiJdcJa","W7FdJKfDWOS","WRlcRSosW6lcOIZcR2Pe","W7fDWOS7BW","WQZdJ8otW65nWO3dGmogW7/dI2q","W7pcSrZcNer/W5e5","W7dcUt7cKmkFeCocfSo1","dthdQHG6hY4","W5JdOmkLAvRdIq","W5ZdPmk4FKRdL2ZdO8o8lmo4","AatdRZ3cJc7cIGSF","Fmo4mbNdI8k+hW","W6bPWRy+WOL2W70","smoibWNdUSkmoda","WOXKibaZW6xcPa","W4BdS0bMWQTpf0W","AatdRZxcJYxcGa","W4xdQmoVt8kX","cmottqLyW7lcKgNdP8kwWPa","EbNdQXRcHI3cVaCEWQTnoG","W5ldR8kIFLBdHgxdMmoPjSoCW6e5fxJdVt4","q0RcHsaIWRm9","lSoZW7G+tmkKWPyyqSkRaSoVW7W","tMxdUqP/g2e","x3lcQHawfYPIAq","BtFdKvpcQW","wLFcJI08","r8ovWRVdISk7","W63cSdtcRgW","WOhcO8kfW4hcTI3dL2j/zG4","W4dcRmosW77dPZ3cIhWV","WPpcSCknW6FcMdFdNNi","oGKDWQ1i","WPTiWOBcSqj1qq","p8kPW4C1psyPWO59","ASo0WOddOW","A2JcQqCjWPKfW4xcOW","ihmI","rvjJWR5dE1W","W7z2WRyCWOzVW6hdJdrdW4i","smoPka","zLnEWP5P","p8okW67cT2W","dmoWpq8BsSorFGm","WO3cJZZdNZO","W4hdUwDrWRHkfuNdQXygsW","dCkpW6TJW5i","W5JdTmk5EfRdI30","wSkdWOfiw8oBW7upqG","rCogWQtdGmk2W7egW7VdIW","W4xcNqdcSmk0eSo2kCorWPRdMfddRa","WQVcPNnTWQNdKve","W6DmguFcUxHW","W7rCW5u4W4as","WR4lWRveW50","W4zSWQekqCkYpIJcQ8okbSoMW6S","rmkBW5xdMmkhCmkJWPxdLmkmW540WPNcSSkG","t0dcHJiPWRi","W7hdVSktWRBdPspcMu9gW77dPG","WOzdWQBcVbDaruqQ","WPldSSo/W6TPWR7dPmoTW4O","WQ3dLq7dSSko","W7pcHGpdGsiOW73cN8krlci","W4FdR3zaWRXa","dCkBW681ba8AWQHB","WQpcVSotW7xcSWxcUG","C8ofcbJcNmknW4JdVW","rCoTv8oeWQ0","aSoFWOJcMmoLkCkBWOddUmkBW5S7","sCkQWQJdRL4qW6FdVG/cRW","FSk3WR5/hSo6W5C","WOtdPWBdS8kyW6f+","r8owWQZdNshdN8oIg8oh","nSk2W7fYW63dSColCHa","yvNdJdbo","WPKVWPryW6hdMq","WORcOsdcPW9NWPaCn3lcRCkZD2y+W4qvWRVcRmkv","oX8fWOPHdIXmW5z7","t8oaWO0bWPVcNCkYcZedicGQW5G","WORdHJ3dMCkP","WQ3dUu8Csq","FSoBAtldOba+","jmkiy0zAFmkS","WRmlWR10W73dSa","W4JdOSkKEfO","WPaXW7Dnf8oSANBcQSoRkCoYW4SS","WOhdOcnUW6HAtvFcUa","wSo0rCoAWRNdHND6pW","rmoynb7dJ8k8CSkCAW","W7lcKbVdSqy","WPZcHCkPW6xcMW","y8ovdH7cKmknW5S","xwbVySo4BCoM","W5f5WQ4rua","WQmyWOHHWOrpESkPomkjgConha","WQpcSeX6WP4","gCojwZXsW7xcJetdSG","W45CW5TABG","W47dSSkUt1NdG2ZdKSoN"];return(_0x36db=function(){return e})()}import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{useKnifeHitStore,useScore,useIsPlaying,useGameOver,useGameWon}from"./KnifeHitStore.js";import{KnifeHitService}from"./KnifeHitService.js";import{KNIFE_HIT_GAME_CONFIG}from"./KnifeHitConstants.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{setGameInterval,clearGameInterval}from"../../helpers/GameTimer.js";import{jsx as _0x13c7b1,jsxs as _0x52304d}from"react/jsx-runtime";export const KnifeHit=({settings:e,onSettingsChange:t,onEndGame:o,onReplayGame:W,onShare:n,onShareScreenshot:r,onShowLeaderboard:a,bannerAd:d})=>{const s="a)zC",i="ZA#w",S="g!vE",f="1tO1",u=_0x316f,m={UoAVM:function(e,t,o){return e(t,o)},vCGTZ:"mTIXT",gmcgI:"lose",LBwiF:function(e,t){return e&&t},EuVUC:function(e){return e?.()},mwDhT:function(e){return e()},dsYmS:u(311,s),SOlXA:function(e,t){return e===t},KuYQM:function(e,t){return e(t)},VNHyA:function(e,t,o){return e(t,o)},EYtaZ:u(330,"&iPB"),zqnlp:function(e){return e?.()},hBoIT:function(e){return e()},LNMuV:function(e,t,o){return e(t,o)},JrWPC:function(e,t,o){return e(t,o)}},x=e?.[u(263,i)]??!0,_=e?.enableHaptics??!0,l=e?.[u(301,"o4a)")]??0,k=_0x2cf311[u(307,"&iPB")](x);k.current=x;const p=_0x2cf311[u(356,"0@uL")](_);p[u(291,"s&rl")]=_;const C=_0x2cf311.useRef(o);C[u(326,"dRlM")]=o;const O=useScore(),G=useIsPlaying(),R=useGameOver(),b=m[u(285,"O9[(")](useGameWon),H=_0x2cf311.useRef(!1),P=_0x2cf311[u(346,"DS*t")](e=>{const t=u;if(C[t(315,"8R8R")]&&!H[t(336,"@HYS")]){const o=useKnifeHitStore[t(366,"]dxT")]()[t(328,"s&rl")];C[t(267,"AVlw")]({status:e,score:o[t(259,"&iPB")]()}),H.current=!0}},[]),h=useKnifeHitStore(e=>e[u(381,"bjyj")]),I=useKnifeHitStore(e=>e[u(303,"g!vE")]),y=useKnifeHitStore(e=>e[u(299,"0@uL")]),M=_0x2cf311.useMemo(()=>new KnifeHitService,[]),Q=_0x2cf311[u(384,"ZA#w")](()=>{const e=u;playSound(GAME_SOUNDS[e(287,"3SvU")].THROW,k[e(326,"dRlM")]),playHaptic(HapticType[e(318,"AVlw")],p[e(258,"!EO!")])},[]),T=_0x2cf311[u(394,"OTKJ")](()=>{const e=u;playSound(GAME_SOUNDS[e(344,"7Rva")][e(393,"0@uL")],k[e(314,"DS*t")]),playHaptic(HapticType[e(319,"kM$g")],p.current)},[]),v=_0x2cf311[u(283,"7Rva")](()=>{const e=u;playSound(GAME_SOUNDS[e(280,"o4a)")][e(281,"sOmG")],k.current),playHaptic(HapticType[e(271,"c[iK")],p[e(397,"7h@I")])},[]),A=_0x2cf311.useCallback(()=>{const e=u;playSound(GAME_SOUNDS[e(317,"T388")][e(261,"bjyj")],k.current),playHaptic(HapticType[e(282,"BZ!5")],p[e(386,"c[iK")])},[]),g=_0x2cf311[u(273,"Q&!b")](()=>{const e=u;playSound(GAME_SOUNDS.KNIFE_HIT[e(278,"%l7@")],k.current),playHaptic(HapticType[e(391,"&iPB")],p[e(295,"@o9g")])},[]);_0x2cf311[u(342,"s&rl")](()=>{M[u(289,"&iPB")](Q,T,v,A,g)},[M,Q,T,v,A,g]),_0x2cf311.useEffect(()=>{const e=u,t={pwSWz:function(e){return e()}},o=useKnifeHitStore[e(364,"!PHv")](t=>t[e(332,"L%%L")],t=>{M[e(321,"%]Pe")](t)}),W=useKnifeHitStore[e(385,"%l7@")](t=>t[e(275,"Q&!b")],t=>{M[e(306,"FCRD")](t)});return()=>{const n=e;o(),t[n(290,"T388")](W)}},[M]),_0x2cf311[u(388,"hVlJ")](()=>{const e=setTimeout(()=>{M[_0x316f(367,"dRlM")]()},100);return()=>clearTimeout(e)},[M]),_0x2cf311[u(400,i)](()=>{const e=u,t={};t[e(360,"3p(]")]=function(e,t){return e!==t},t[e(276,"%]Pe")]=m.vCGTZ;const o=t;if("ZojiH"===e(341,"]dxT"))return()=>{const t=e;useKnifeHitStore[t(403,"Qrp7")]()[t(331,"a)zC")]&&!H[t(358,"0@uL")]&&P("cancel");try{o[t(305,"8R8R")]("hUIgL",t(334,"Q&!b"))?(_0x40744e(_0x2a7b4a[t(316,"e[8o")].APPLE,_0x40520f.current),XGnWRx[t(343,"!PHv")](_0x276b40,_0x2e1d2e[t(355,"%l7@")],_0x4b90d5[t(325,"MkK8")])):M[t(265,"o4a)")]()}catch{}try{o[t(333,"FCRD")]===t(323,"8R8R")?I():_0x28f082[t(382,"O9[(")](_0x405742)}catch{}};_0x2145e4(_0x4bdc6a.KNIFE_HIT[e(284,"b4oj")],_0x1ab193.current),m.UoAVM(_0x28abf1,_0x3c8fd0[e(363,"ZA#w")],_0x5304ad[e(296,"3p(]")])},[M,P,I]),_0x2cf311.useEffect(()=>{const e=u;(R||b)&&!H.current&&(b?(playSound(GAME_SOUNDS[e(350,"1tO1")],k[e(362,"gQXh")]),P("win")):(m.UoAVM(playSound,GAME_SOUNDS[e(345,"Qrp7")][e(293,"c[iK")],k.current),P(m[e(379,"T388")]))),m[e(380,"BmUZ")](!R,!b)&&(H.current=!1)},[R,b,P]),_0x2cf311[u(308,"%l7@")](()=>{const e=u;if(G&&!R)return M[e(370,"FCRD")](),()=>{const t=e,o={SjtSY:function(e){return m.EuVUC(e)}};"snuGE"===t(361,"OTKJ")?M[t(300,"BmUZ")]():(o[t(348,"!PHv")](_0x2924b6),_0x438f62[t(373,"a)zC")]=!1,_0x5e97b3[t(396,"QT&e")](),_0x40d9d7(),_0x2df7fb[t(264,"s&rl")]())}},[G,R,M]),_0x2cf311[u(340,"Fjn6")](()=>{if(!G)return;const e=setGameInterval(()=>{m.mwDhT(y)},1e3);return()=>clearGameInterval(e)},[G,y]),_0x2cf311.useEffect(()=>{const e=u;m[e(354,"Q&!b")]===e(339,"@o9g")?FOfcFM.IsgGm(_0x11525d,e(398,"s&rl")):R&&M[e(371,"FCRD")]()},[R,M]);const N=_0x2cf311.useCallback(()=>{const e=u;m[e(288,"yLEV")](e(269,"Kk)r"),e(298,"kM$g"))?(H[e(378,"BmUZ")]=!1,M.resetGame(),m[e(376,"Qrp7")](h,KNIFE_HIT_GAME_CONFIG[e(294,"QT&e")]),M.setPlaying(!0),M.setGameOver(!1),M.initializeRound(),playSound(GAME_SOUNDS[e(316,"e[8o")][e(357,"hVlJ")],k[e(386,"c[iK")]),m[e(272,"6uNM")](playHaptic,HapticType[e(401,"Qrp7")],p[e(335,"b4oj")])):_0x344010[e(402,"7Rva")]()},[M,h]),K=_0x2cf311[u(359,s)](()=>{const e=u,t=e(274,"Q&!b").split("|");let o=0;for(;;){switch(t[o++]){case"0":m[e(324,"hVlJ")](playHaptic,HapticType.MEDIUM,p[e(258,"!EO!")]);continue;case"1":I();continue;case"2":playSound(GAME_SOUNDS[e(304,"OTKJ")][e(372,"6]wc")],k[e(336,"@HYS")]);continue;case"3":M[e(303,"g!vE")]();continue;case"4":P(e(375,"@HYS"));continue}break}},[M,I,P]),E=_0x2cf311.useCallback(()=>{const e=u,t=m[e(286,"6]wc")][e(337,"0@uL")]("|");let o=0;for(;;){switch(t[o++]){case"0":H[e(309,f)]=!1;continue;case"1":M[e(392,f)]();continue;case"2":M[e(367,"dRlM")]();continue;case"3":m[e(270,"o4a)")](W);continue;case"4":I();continue}break}},[M,I,W]),U={..._0x2cf311.useMemo(()=>({isPlaying:G,gameOver:R,onStartGame:N,onStopGame:K,onShare:n,onShowLeaderboard:a,startButtonSubtext:u(320,"yLEV")}),[G,R,N,K,n,a])},B={..._0x2cf311[u(260,"ZA#w")](()=>({isVisible:R,score:O,onPlayAgain:E,buttonText:"Throw Again!",title:b?u(377,"kM$g"):u(292,"DS*t"),message:b?"All knives stuck!":"Hit another knife!"}),[R,O,E,b])};B[u(277,S)]=r,B[u(387,"T388")]=d;const F={};return F[u(327,"kM$g")]=GAME_IDS.KNIFE_HIT,F[u(310,"b4oj")]=e||DEFAULT_GAME_SETTINGS,F.onSettingsChange=t,m.UoAVM(_0x13c7b1,GestureHandlerRootView,{style:styles[u(390,"Qrp7")],children:m[u(368,"b4oj")](_0x52304d,_0x2c03aa,{offset:l,children:[_0x13c7b1(GameArea,{gameService:M,offset:l}),_0x13c7b1(ScoreBoard,{offset:l}),m[u(365,S)](_0x13c7b1,GameControlButton,U),_0x13c7b1(GameOverModal,B),_0x13c7b1(GameSettingsModal,F)]})})};const _0xc8a5ad={};_0xc8a5ad[_0x76f1b9(279,"e[8o")]=1,_0xc8a5ad.backgroundColor=BACKGROUND_COLOR;const _0x105ac7={};_0x105ac7[_0x76f1b9(353,"c[iK")]=1;const _0x32da3c={};_0x32da3c[_0x76f1b9(374,"Q&!b")]=_0xc8a5ad,_0x32da3c[_0x76f1b9(399,"s&rl")]=_0x105ac7;const styles=StyleSheet[_0x76f1b9(297,"gQXh")](_0x32da3c);KnifeHit[_0x76f1b9(262,"Fjn6")]=_0x76f1b9(395,"6uNM");
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,textColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{getLayout,KNIVES_PER_ROUND,LIGHT,TIME_LIMIT}from"./KnifeHitConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,throwKnife,tick}from"./KnifeHitGame.js";import{jsx as _0x17b129}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.KNIFE_HIT,FEEDBACK={throw:{sound:SOUNDS.THROW,haptic:HapticType.LIGHT},stick:{sound:SOUNDS.STICK,haptic:HapticType.MEDIUM},apple:{sound:SOUNDS.APPLE,haptic:HapticType.SUCCESS},clash:{sound:SOUNDS.HIT,haptic:HapticType.ERROR}};export const KnifeHit=engineGame(GAME_IDS.KNIFE_HIT,e=>{const[t,s]=useLiveState(0),[i,r]=useLiveState(TIME_LIMIT),[n,o]=useLiveState(KNIVES_PER_ROUND),{theme:a,status:S,screen:m,gameOver:E}=useEngineGame(e,{gameId:GAME_IDS.KNIFE_HIT,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,i)=>{const r=getLayout(t,s,i);return setLayout(e,r),r.gameWidth},drag:(e,t)=>{"start"===t.phase&&throwKnife(e)},sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),onOver:(e,t)=>e("win"===t?GAME_SOUNDS.WELL_DONE:SOUNDS.GAME_OVER,"win"===t?HapticType.SUCCESS:HapticType.ERROR),wire:(e,t)=>{e.onScore=s,e.onTime=r,e.onKnives=o,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0x17b129(EngineGameScreen,{...m,light:LIGHT,columns:[scoreColumn(t),textColumn("KNIVES",n),timerColumn(i,a)],subtext:"Tap to throw knives!",gameOver:E({title:"win"===S?"PERFECT!":"GAME OVER",message:"win"===S?"All knives stuck!":"Hit another knife!",scoreLabel:"Final Score",score:t,buttonText:"Throw Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const TIME_LIMIT=120;export const KNIVES_PER_ROUND=8;export const OBSTACLES=3;export const POINTS_PER_KNIFE=1500;export const APPLE_BONUS=1e3;export const APPLE_CHANCE=.4;export const COLLISION_ANGLE=.18;export const APPLE_REACH=.27;export const STEP_MS=1e3/60;export const STEP_TOLERANCE_MS=2;export const MAX_PENDING_MS=50;export const ROTATION_SPEED=.025;export const ROTATION_SPREAD=.008;export const THROW_SPEED=18;export const FLIP_CHANCE=.4;export const TURN_INTERVAL=[100,160];export const BOUNCE_TIME=.52;export const KICK_POINTS=4;export const TILT=-.22;export const LIGHT=frontLight([-.45,.55,1],.45);const TABLET_WIDTH=640;export function getLayout(t,o,e){const n=t>640,r=n?650:500,s=e+Math.max(0,(o-e-r)/2);return{width:t,height:o,tilt:TILT,centerY:o/2,top:s,gameWidth:gameWidthFor(t),areaHeight:r,logRadius:n?90:70,logX:t/2,logY:r*(n?.26:.24),knifeStartY:r-70,knifeLength:n?60:50,knifeWidth:n?10:8,tipLength:16,appleRadius:n?14:11}}export function normalizeAngle(t){for(;t>Math.PI;)t-=2*Math.PI;for(;t<-Math.PI;)t+=2*Math.PI;return t}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{aimTilted}from"../shared/EngineTilt.js";import{APPLE_BONUS,APPLE_CHANCE,APPLE_REACH,COLLISION_ANGLE,FLIP_CHANCE,KNIVES_PER_ROUND,MAX_PENDING_MS,normalizeAngle,OBSTACLES,POINTS_PER_KNIFE,ROTATION_SPEED,ROTATION_SPREAD,STEP_MS,STEP_TOLERANCE_MS,THROW_SPEED,TIME_LIMIT,TURN_INTERVAL}from"./KnifeHitConstants.js";import{buildScene,burstApple,celebrate,clash,dressLog,placeKnife,removeScene,setSceneTheme,showCount,spinLog,stick}from"./KnifeHitScene.js";const WORLD_CAPACITY=300,obstacles=()=>Array.from({length:OBSTACLES},(e,n)=>n/OBSTACLES*Math.PI*2);export function createGame(e){const n=new World(300),o={world:n,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",stuck:obstacles(),apple:null,appleTaken:!1,rotation:0,speed:ROTATION_SPEED,direction:1,turnTimer:0,turnInterval:120,flying:null,knivesLeft:KNIVES_PER_ROUND,get score(){return n.scoreboard.score},get timeLeft(){return n.scoreboard.shownSeconds},won:!1,pending:0,onPhase:e=>{},onScore:e=>{},onTime:e=>{},onKnives:e=>{},onEvent:e=>{}};return n.scoreboard.reset(0,TIME_LIMIT),n.scoreboard.handlers={onSecond:e=>o.onTime(e),onTimeUp:()=>"playing"===o.phase&&end(o,!1)},o}export function setLayout(e,n){e.scene&&removeScene(e.world,e.scene),e.layout=n,aimTilted(e.camera,n),e.scene=buildScene(e.world,n,e.theme),dressLog(e.world,n,e.scene,e.stuck,e.appleTaken?null:e.apple),spinLog(e.world,e.scene,e.rotation),drawHand(e)}export function setTheme(e,n){e.theme=n,e.scene&&setSceneTheme(e.world,e.scene,n)}function drawHand(e){const{layout:n,scene:o}=e;n&&o&&(placeKnife(e.world,n,o,e.flying??n.knifeStartY,"over"!==e.phase&&(null!==e.flying||e.knivesLeft>0)),showCount(e.world,o,e.knivesLeft))}export function start(e){if("ready"===e.phase){if(e.stuck=obstacles(),e.apple=null,Math.random()<APPLE_CHANCE){let n=Math.random()*Math.PI*2;for(let o=0;o<20&&!e.stuck.every(e=>Math.abs(normalizeAngle(n-e))>=2*COLLISION_ANGLE);o++)n=Math.random()*Math.PI*2;e.apple=n}e.appleTaken=!1,e.rotation=0,e.speed=ROTATION_SPEED+(Math.random()-.5)*ROTATION_SPREAD,e.direction=1,e.turnTimer=0,e.turnInterval=TURN_INTERVAL[0]+Math.floor(Math.random()*(TURN_INTERVAL[1]-TURN_INTERVAL[0])),e.flying=null,e.knivesLeft=KNIVES_PER_ROUND,e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(TIME_LIMIT),e.pending=0,e.phase="playing",e.layout&&e.scene&&dressLog(e.world,e.layout,e.scene,e.stuck,e.apple),drawHand(e),e.onScore(0),e.onTime(TIME_LIMIT),e.onKnives(KNIVES_PER_ROUND),e.onPhase("playing")}}export function reset(e){e.stuck=obstacles(),e.apple=null,e.appleTaken=!1,e.rotation=0,e.flying=null,e.knivesLeft=KNIVES_PER_ROUND,e.world.scoreboard.reset(0,TIME_LIMIT),e.won=!1,e.phase="ready",e.layout&&e.scene&&dressLog(e.world,e.layout,e.scene,e.stuck,null),drawHand(e),e.onScore(0),e.onTime(TIME_LIMIT),e.onKnives(KNIVES_PER_ROUND),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,n){if(!e.world.isDisposed){if("playing"===e.phase){let o=Math.min(e.pending+1e3*n,MAX_PENDING_MS);for(;"playing"===e.phase&&o>=STEP_MS-STEP_TOLERANCE_MS;)o-=STEP_MS,step(e);e.pending=o,e.scene&&spinLog(e.world,e.scene,e.rotation),"playing"===e.phase&&drawHand(e)}e.world.update(n)}}function end(e,n){e.world.scoreboard.stop(),e.won=n,e.phase="over",e.onPhase("over")}function step(e){const n=e.layout;if(!n)return;if(e.rotation+=e.speed*e.direction,++e.turnTimer>=e.turnInterval&&(e.turnTimer=0,Math.random()<FLIP_CHANCE&&(e.direction*=-1)),null===e.flying)return;const o=e.flying-THROW_SPEED;if(o>n.logY+n.logRadius)return void(e.flying=o);const t=e.flying;e.flying=null;const r=normalizeAngle(Math.PI/2-e.rotation),{scene:a}=e;if(e.stuck.some(e=>Math.abs(normalizeAngle(r-e))<COLLISION_ANGLE))return a&&clash(e.world,n,a,t),e.onEvent("clash"),void end(e,!1);null!==e.apple&&!e.appleTaken&&Math.abs(normalizeAngle(r-e.apple))<APPLE_REACH&&(e.appleTaken=!0,e.world.scoreboard.add(APPLE_BONUS),a&&burstApple(e.world,n,a),e.onEvent("apple")),e.stuck.push(r),e.world.scoreboard.add(POINTS_PER_KNIFE),a&&stick(e.world,n,a,r),drawHand(e),e.onScore(e.score),e.onEvent("stick"),e.knivesLeft<=0&&(a&&celebrate(e.world,n),end(e,!0))}export function throwKnife(e){const n=e.layout;!n||"playing"!==e.phase||null!==e.flying||e.knivesLeft<=0||(e.flying=n.knifeStartY,e.knivesLeft-=1,e.onKnives(e.knivesLeft),e.onEvent("throw"),drawHand(e))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,extrude,lathe,merge,Path,quat,shapeGeometry}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{getFruits}from"../shared/EngineFruits.js";import{noise}from"../shared/EngineMeadow.js";import{cacheGameAsset,createGameMesh as _0x21759b}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop,unproject}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{BOUNCE_TIME,KICK_POINTS,KNIVES_PER_ROUND}from"./KnifeHitConstants.js";const meshes=new Map,cached=(o,e)=>{let t=meshes.get(o);return!t&&(t=cacheGameAsset("knife-hit/KnifeHitScene:"+o,e),meshes.set(o,t)),t},rgb=o=>{const[e,t,n]=toColor(o);return[e,t,n]},mix=(o,e,t)=>[o[0]+(e[0]-o[0])*t,o[1]+(e[1]-o[1])*t,o[2]+(e[2]-o[2])*t],STAND_UP=quat.x(Math.PI/2),BACKDROP_DEPTH=80,KNIFE_SCALE=1.15;export function toWorld(o,e,t,n=0){const[i,s]=unproject(o,e,o.top+t,n);return[i,s,n]}const onLog=(o,e,t=0)=>[Math.cos(o)*e,-Math.sin(o)*e,t],inward=o=>quat.z(Math.PI/2-o),logMesh=()=>cached("kh-log",()=>{const o=rgb("#795548"),e=rgb("#6D4C41"),t=rgb("#8D6E63"),n=rgb("#4E342E"),i=rgb("#3E2723");return _0x21759b(lathe([[.001,.3],[.25,.3],[.44,.3],[.47,.29],[.5,.25],[.5,-.25],[.47,-.29],[.44,-.3],[.001,-.3]],{segments:48,color:({position:s,normal:r})=>{const a=Math.hypot(s[0],s[2]);if(Math.abs(r[1])<.6){const o=.5+.5*Math.sin(26*Math.atan2(s[2],s[0])+4*noise(9*s[0],9*s[2]));return mix(i,n,.8*o)}if(a>.45)return n;const l=.5+.5*Math.sin(70*a+2*noise(6*s[0],6*s[2]));return mix(mix(t,o,Math.min(1,3*a)),e,.55*l)}}),{shine:.1})}),knifeMesh=()=>cached("kh-knife-v2",()=>{const o=extrude((new Path).moveTo(0,0).quadraticTo(.1,.12,.1,.3).lineTo(.1,.6).lineTo(-.08,.6).lineTo(-.08,.24).quadraticTo(-.07,.09,0,0).close(),{depth:.05}),e=extrude((new Path).moveTo(.008,.03).quadraticTo(.1,.13,.1,.3).lineTo(.1,.58).lineTo(.068,.58).lineTo(.068,.3).quadraticTo(.066,.16,.008,.03).close(),{depth:.056}),t=rgb("#FFC400"),n=rgb("#8D5A32"),i=rgb("#3E2A1C");return _0x21759b(merge([{geometry:o,color:[...rgb("#9EADB8"),1]},{geometry:e,color:[...rgb("#F3F7FA"),1]},{geometry:shapeGeometry("cube"),position:[-.025,-.4,.027],scale:[.025,.34,.005],color:[...rgb("#6F7F8A"),1]},{geometry:shapeGeometry("roundedBox"),position:[0,-.625,0],scale:[.3,.055,.11],color:[...t,1]},{geometry:shapeGeometry("roundedBox"),position:[0,-.8,0],scale:[.15,.3,.12],color:[...n,1]},...[-.7,-.78,-.86,-.94].map(o=>({geometry:shapeGeometry("roundedBox"),position:[0,o,0],scale:[.162,.025,.13],color:[...i,1]})),{geometry:shapeGeometry("sphere"),position:[0,-.97,0],scale:[.17,.08,.13],color:[...t,1]}]),{center:!1,shine:.75})});export function buildScene(o,e,t){const n=spawnBackdrop(o,e.width,e.height,-80,t);placeTiltedBackdrop(o,n,e,80);const i=o.spawn({mesh:"none",position:toWorld(e,e.logX,e.logY),pickable:!1}),s=o.spawn({mesh:logMesh(),parent:i,rotation:STAND_UP,scale:2*e.logRadius,pickable:!1}),r=o.spawn({mesh:knifeMesh(),position:toWorld(e,e.logX,e.knifeStartY),scale:1.15*e.knifeLength,pickable:!1}),a=(e.width-e.gameWidth)/2+22;return{backdrop:n,pivot:i,log:s,stuck:[],apple:null,knife:r,counters:Array.from({length:KNIVES_PER_ROUND},(t,n)=>o.spawn({mesh:knifeMesh(),position:toWorld(e,a,e.areaHeight-26-20*n),scale:18,color:[1,1,1,1],pickable:!1}))}}export function removeScene(o,e){for(const t of[e.backdrop,e.pivot,e.knife,...e.counters])o.despawn(t)}export function setSceneTheme(o,e,t){setBackdropTheme(o,e.backdrop,t)}export function dressLog(o,e,t,n,i){for(const e of t.stuck)o.despawn(e);if(null!=t.apple&&o.despawn(t.apple),o.stopAnimation(t.pivot),o.set(t.pivot,{position:toWorld(e,e.logX,e.logY),rotation:quat.z(0)}),t.stuck=n.map(n=>stickKnife(o,e,t,n)),t.apple=null,null!==i){const n=getFruits().apple,s=2*e.appleRadius,r=onLog(i,e.logRadius+e.appleRadius+4);t.apple=o.spawn({mesh:n.whole,parent:t.pivot,position:[r[0]-n.center[0]*s,r[1]-n.center[1]*s,r[2]-n.center[2]*s],scale:s,pickable:!1})}}function stickKnife(o,e,t,n){return o.spawn({mesh:knifeMesh(),parent:t.pivot,position:onLog(n,e.logRadius-.5*e.tipLength),rotation:inward(n),scale:1.15*e.knifeLength,pickable:!1})}const SPIN=[0,0,0,1];export function spinLog(o,e,t){o.set(e.pivot,{rotation:quat.z(-t,SPIN)})}export function placeKnife(o,e,t,n,i){o.stopAnimation(t.knife),o.set(t.knife,{position:toWorld(e,e.logX,n),rotation:quat.z(0),scale:i?1.15*e.knifeLength:0,color:[1,1,1,1]})}export function showCount(o,e,t){e.countShown!==t&&(e.countShown=t,e.counters.forEach((e,n)=>o.set(e,{color:n<t?[1,1,1,1]:[.35,.35,.38,.45]})))}export function stick(o,e,t,n){const i=stickKnife(o,e,t,n);t.stuck.push(i),o.animate(i,[{turn:[0,0,.12],at:.15},{turn:[0,0,-.2],at:.4},{turn:[0,0,.11],at:.65},{turn:[0,0,-.03],at:1}],{duration:.32,easing:"linear"}),o.animate(t.log,[{color:[1.25,1.18,1.1,1],at:.15},{color:[1,1,1,1]}],{duration:.22});const s=toWorld(e,e.logX,e.logY);o.animate(t.pivot,[{position:[s[0],s[1]+KICK_POINTS,s[2]],at:.3},{position:s}],{duration:.18}),effects.shatter(o,{position:toWorld(e,e.logX,e.logY+e.logRadius,4),count:7,size:3.5,speed:120,direction:[0,-1,.6],spread:1.1,lifetime:.4,gravity:-900,colors:[toColor("#C68A5B"),toColor("#8D6E63"),toColor("#5D4037")],flash:!1}),effects.dust(o,{position:toWorld(e,e.logX,e.logY+e.logRadius,6),count:5,size:9,speed:60,direction:[0,-1,.5],spread:1.4,lifetime:.45,color:[.93,.8,.62,.6],endSize:2.2})}export function clash(o,e,t,n){const i=toWorld(e,e.logX,n,4);effects.sparks(o,{position:i,count:16,size:3,speed:220,direction:[0,-1,.4],spread:1.3,lifetime:.35,gravity:-600,colors:[[1,.92,.6],[1,.7,.25]]}),o.animate(t.pivot,{shake:6},{duration:.25}),effects.flash(o,{position:i,mesh:"sphere",size:22,lifetime:.14,color:[2.2,2,1.5,.9],endSize:1.8,endColor:[2,1.6,.8,0]});const s=Math.random()<.5?-1:1;o.animate(t.knife,{position:toWorld(e,e.logX+70*s,n+220,30)},{duration:BOUNCE_TIME,easing:"easeOut"}),o.animate(t.knife,{turn:[0,0,s*Math.PI*3]},{duration:BOUNCE_TIME,easing:"easeOut"}),o.animate(t.knife,{color:[1,1,1,0]},{duration:BOUNCE_TIME,easing:"easeIn"})}export function burstApple(o,e,t){const n=t.apple;if(null==n)return;t.apple=null;const i=2*e.appleRadius;o.animate(n,{scale:1.7*i},{duration:.32,easing:"easeOut"}),o.animate(n,{color:[1,1,1,0]},{duration:.32}),effects.splash(o,{position:toWorld(e,e.logX,e.logY+e.logRadius+e.appleRadius,6),count:16,size:3.5,speed:160,lifetime:.5,gravity:-500,colors:[toColor("#D32F2F"),toColor("#EF5350"),toColor("#FFF3E0")]})}export function celebrate(o,e){effects.confetti(o,{position:toWorld(e,e.logX,e.logY,20),count:50,size:5,speed:320,lifetime:1.2,gravity:-600,colors:["#FFD600","#D32F2F","#4CAF50","#90A4AE"].map(o=>toColor(o))})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{textColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{AI_COLOR,getLayout,LIGHT,PLAYER_COLOR,RIM}from"./LudoKingConstants.js";import{createGame,dispose,reset,setLayout,setTheme,start,tap,tick}from"./LudoKingGame.js";import{jsx as _0x3b8c79}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.LUDO_KING,FEEDBACK={tap:{sound:"TAP",haptic:HapticType.MEDIUM},roll:{sound:"ROLL"},six:{sound:"SIX",haptic:HapticType.SUCCESS},penalty:{sound:"PENALTY",haptic:HapticType.ERROR},cantMove:{sound:"CANT_MOVE",haptic:HapticType.WARNING,youOnly:!0},move:{sound:"MOVE",haptic:HapticType.LIGHT},capture:{sound:"CAPTURE",haptic:HapticType.SUCCESS},finish:{sound:"FINISH",haptic:HapticType.SUCCESS}};export const LudoKing=engineGame(GAME_IDS.LUDO_KING,e=>{const[t,s]=useLiveState([0,0]),[i,o]=useLiveState(0),[n,a]=useLiveState(0),{status:r,screen:S,gameOver:p}=useEngineGame(e,{gameId:GAME_IDS.LUDO_KING,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,i)=>{const o=getLayout(t,s,i);return setLayout(e,o),o.size*(1+2*RIM)},tap:tap,sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),onOver:(e,t)=>e("win"===t?SOUNDS.WIN:SOUNDS.GAME_OVER,"win"===t?HapticType.SUCCESS:HapticType.HEAVY),wire:(e,t)=>{e.onFinished=(e,t)=>s([e,t]),e.onScore=a,e.onTurn=o,e.onEvent=(e,s)=>{const i=FEEDBACK[e];i.youOnly&&0!==s||t(i.sound?SOUNDS[i.sound]:null,i.haptic)}}});return _0x3b8c79(EngineGameScreen,{...S,light:LIGHT,columns:[textColumn("YOU",String(t[0]),PLAYER_COLOR),textColumn(0===i?"YOUR TURN":"AI TURN",n.toLocaleString()),textColumn("AI",String(t[1]),AI_COLOR)],subtext:"Roll dice, move tokens!",gameOver:p({title:"win"===r?"YOU WON!":"YOU LOST!",message:"win"===r?"All your tokens made it home!":"The AI got all four home first!",scoreLabel:"win"===r?"You Won!":"You Lost",score:n,buttonText:"win"===r?"Play Again!":"Try Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const _0x14c39c=_0x1859;!function(){const x=_0x1859,_=_0x5ed5();for(;;)try{if(318212==parseInt(x(239,"lc%I"))/1*(-parseInt(x(229,"fC!X"))/2)+parseInt(x(266,"f0(3"))/3+-parseInt(x(271,"!jC("))/4+-parseInt(x(244,"GpEr"))/5+parseInt(x(280,"*!Ab"))/6*(-parseInt(x(181,"Voi5"))/7)+-parseInt(x(168,"S#19"))/8*(parseInt(x(253,"lc%I"))/9)+parseInt(x(273,")jc8"))/10)break;_.push(_.shift())}catch(x){_.push(_.shift())}}();const _0x225a43={};_0x225a43[_0x14c39c(276,"e%[n")]=_0x14c39c(166,"V$SF"),_0x225a43[_0x14c39c(175,"ucaz")]="#43A047",_0x225a43.YELLOW="#D4A017",_0x225a43[_0x14c39c(270,"iP4P")]=_0x14c39c(180,"j4jE"),_0x225a43[_0x14c39c(211,"lKFr")]="#FFFFFF",_0x225a43.BOARD_BORDER=_0x14c39c(263,"e%[n"),_0x225a43[_0x14c39c(207,"P^5!")]="#FFFFFF",_0x225a43.STAR_COLOR="#9E9E9E",_0x225a43.DICE_BACKGROUND=_0x14c39c(261,"P^5!"),_0x225a43.DICE_DOT=_0x14c39c(215,"a6cM");export const LUDO_KING_COLORS=_0x225a43;const _0x56db7f={};_0x56db7f[_0x14c39c(210,"S#19")]=LUDO_KING_COLORS[_0x14c39c(216,"AVdD")],_0x56db7f[_0x14c39c(252,"KRiM")]=LUDO_KING_COLORS.GREEN,_0x56db7f[_0x14c39c(236,"ZvXW")]=LUDO_KING_COLORS.YELLOW,_0x56db7f.blue=LUDO_KING_COLORS.BLUE;export const LUDO_KING_PLAYER_COLORS=_0x56db7f;const _0x42b45b={BOARD_SIZE:15,TOKENS_PER_PLAYER:4};_0x42b45b[_0x14c39c(269,"D[]U")]=1,_0x42b45b[_0x14c39c(212,"bpnU")]=6,_0x42b45b[_0x14c39c(275,"Bvwk")]=57,_0x42b45b[_0x14c39c(188,"Jzq2")]=300;export const LUDO_KING_GAME_CONFIG=_0x42b45b;const _0x2c22b2={};_0x2c22b2[_0x14c39c(204,"9N6)")]=1.5,_0x2c22b2[_0x14c39c(257,"$8%N")]=1.5;const _0x2a7d4e={};_0x2a7d4e[_0x14c39c(230,"j4jE")]=1.5,_0x2a7d4e.col=4.5;const _0x27cf77={row:4.5};_0x27cf77[_0x14c39c(165,"e%[n")]=1.5;const _0x54d589={};_0x54d589[_0x14c39c(282,"bpnU")]=4.5,_0x54d589[_0x14c39c(167,"a6cM")]=4.5;const _0x4e17c5={};_0x4e17c5[_0x14c39c(164,"xWcf")]=1.5,_0x4e17c5.col=10.5;const _0x446d4d={};_0x446d4d[_0x14c39c(268,"e%[n")]=1.5,_0x446d4d[_0x14c39c(267,"7VVN")]=13.5;const _0x30b61a={};_0x30b61a[_0x14c39c(197,"skh]")]=4.5,_0x30b61a[_0x14c39c(281,"S#19")]=10.5;const _0x25f2c3={};_0x25f2c3[_0x14c39c(259,"$8%N")]=4.5,_0x25f2c3[_0x14c39c(283,"j4jE")]=13.5;const _0x2a295b={row:10.5};_0x2a295b[_0x14c39c(272,"n&An")]=1.5;const _0x1120df={};_0x1120df[_0x14c39c(243,"D[]U")]=10.5,_0x1120df[_0x14c39c(218,"f0(3")]=4.5;const _0x4dd4b1={};_0x4dd4b1[_0x14c39c(209,"f0(3")]=13.5,_0x4dd4b1[_0x14c39c(196,"iP4P")]=1.5;const _0xfc6802={};_0xfc6802[_0x14c39c(247,"@ai@")]=13.5,_0xfc6802.col=4.5;const _0x560da4={};_0x560da4[_0x14c39c(169,"59hy")]=10.5,_0x560da4[_0x14c39c(170,"f^[^")]=10.5;const _0x76650a={row:10.5,col:13.5},_0x2dd70a={row:13.5,col:10.5},_0x49a7c1={};_0x49a7c1[_0x14c39c(234,"]Wcr")]=13.5,_0x49a7c1[_0x14c39c(274,"bKJb")]=13.5;const _0x488e43={};_0x488e43[_0x14c39c(226,"ucaz")]=[_0x2c22b2,_0x2a7d4e,_0x27cf77,_0x54d589],_0x488e43.red=[_0x4e17c5,_0x446d4d,_0x30b61a,_0x25f2c3],_0x488e43.green=[_0x2a295b,_0x1120df,_0x4dd4b1,_0xfc6802],_0x488e43[_0x14c39c(222,"Voi5")]=[_0x560da4,_0x76650a,_0x2dd70a,_0x49a7c1];export const HOME_POSITIONS=_0x488e43;const _0x357376={};_0x357376[_0x14c39c(179,"z0El")]=1,_0x357376[_0x14c39c(177,"eWUt")]=14,_0x357376[_0x14c39c(240,"^G%Z")]=27,_0x357376.green=40;export const ENTRY_POSITIONS=_0x357376;export const SAFE_POSITIONS=[1,9,14,22,27,35,40,48];const _0x544ff7={row:6};_0x544ff7[_0x14c39c(262,"skh]")]=0;const _0x305018={row:6,col:1},_0x5e6fc7={};_0x5e6fc7[_0x14c39c(185,"a6cM")]=6,_0x5e6fc7[_0x14c39c(162,"@ai@")]=2;const _0x5ce7f9={row:6};_0x5ce7f9[_0x14c39c(258,"zTxl")]=3;const _0x5cc0d8={};_0x5cc0d8[_0x14c39c(163,"ZvXW")]=6,_0x5cc0d8[_0x14c39c(277,"AVdD")]=4;const _0x1c57bf={row:6};_0x1c57bf[_0x14c39c(167,"a6cM")]=5;const _0x3f2fc3={};function _0x1859(x,_){x-=162;const o=_0x5ed5();let d=o[x];if(void 0===_0x1859.LpKKos){const x=function(x,_){let o,d,W=[],a=0,e="";for(x=function(x){let _="",o="";for(let o,d,W=0,a=0;d=x.charAt(a++);~d&&(o=W%4?64*o+d:d,W++%4)?_+=String.fromCharCode(255&o>>(-2*W&6)):0)d="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(d);for(let x=0,d=_.length;x<d;x++)o+="%"+("00"+_.charCodeAt(x).toString(16)).slice(-2);return decodeURIComponent(o)}(x),d=0;d<256;d++)W[d]=d;for(d=0;d<256;d++)a=(a+W[d]+_.charCodeAt(d%_.length))%256,o=W[d],W[d]=W[a],W[a]=o;d=0,a=0;for(let _=0;_<x.length;_++)d=(d+1)%256,a=(a+W[d])%256,o=W[d],W[d]=W[a],W[a]=o,e+=String.fromCharCode(x.charCodeAt(_)^W[(W[d]+W[a])%256]);return e};_0x1859.gkPUpP=x,_0x1859.eSZmfD={},_0x1859.LpKKos=!0}const W=o[0];_0x1859.KoVdLf!==W&&(_0x1859.eSZmfD={},_0x1859.KoVdLf=W);const a=_0x1859.eSZmfD[x];return void 0===a?(void 0===_0x1859.DXWoEo&&(_0x1859.DXWoEo=!0),d=_0x1859.gkPUpP(d,_),_0x1859.eSZmfD[x]=d):d=a,d}_0x3f2fc3.row=5,_0x3f2fc3.col=6;const _0x116ee0={};_0x116ee0[_0x14c39c(237,"lKFr")]=4,_0x116ee0[_0x14c39c(167,"a6cM")]=6;const _0x215096={};_0x215096[_0x14c39c(206,"V$SF")]=3,_0x215096.col=6;const _0x5586c0={row:2};_0x5586c0[_0x14c39c(272,"n&An")]=6;const _0x4b792c={row:1};_0x4b792c[_0x14c39c(178,"Voi5")]=6;const _0x1ad0ed={};_0x1ad0ed[_0x14c39c(204,"9N6)")]=0,_0x1ad0ed.col=6;const _0x1acb22={};_0x1acb22[_0x14c39c(234,"]Wcr")]=0,_0x1acb22[_0x14c39c(170,"f^[^")]=7;const _0x5575ca={};_0x5575ca[_0x14c39c(224,"#VcO")]=0,_0x5575ca.col=8;const _0x4ca189={};_0x4ca189[_0x14c39c(169,"59hy")]=1,_0x4ca189[_0x14c39c(254,"]Wcr")]=8;const _0x48115d={};_0x48115d[_0x14c39c(194,"*!Ab")]=2,_0x48115d.col=8;const _0x2e6d2c={row:3,col:8},_0x2ed82d={row:4};_0x2ed82d[_0x14c39c(189,"ZvXW")]=8;const _0x265860={};function _0x5ed5(){const x=["WQjqWQpcICoIWPpcRrTCW4rTa8om","yMJcUW","BCkSW7xdPfNcOq","WQddGCo3","WO3cUdC","nHuG","W7ddP3m","WO0Hna","lGhdKCk3W4i","jJZcG8orW5DXnSonWPDjAG","WOGJW4y","W5DGmwZdNZmDl8kjWQm+WQ4","kNhdPW","jeqE","WOGIjW","nuqf","WPHUx8kGW4ave8oQe8oCeSo/fG","W6neWPZcTSoIW4/cRq","aHBdLG","W5BdGSkTzmk4kWS","WRpcOCoq","W6JcVCoreJCGcWidW5zalG","W5RdQmkZWOlcHdKFc8kLWRH9WO4","WR5vfW","WOFcNmkB","gSkgc8osWOFdKLpdUq","W43dK8oPEa","WQXcW5JcTSkNBCosW7BcQcP7W44","twaX","WQlcUYTOWQCtW5SXhHOXrH3dVq","W4ubW6u","gCkMWOxcIhidWRvOWPuMWQu","WQFcTSkO","WOBdLSkc","o8kiWQy","o3hdVa","Bx3dNXGSy8ozBGhcJSkNbq","jXu7","W6pcIYC","W6LpWQy","WRhdGCoS","vmkTza","W5S1ga","WPBcNmka","W4pdHSolW4HHW5FdUW","W6pcIqG","DunIWPfgdmkuBrpcGG","w8kTpG","WOBdSYC","kHZdMa","WOenW54","CCk0tG","WQayWO4","WRJcHqxdQmoy","pCkGja","pCkufq","WO0/Bq","WRddTWZdIG","WQKrWO9GcZPx","W5KGqZFcG1i5","jHyIW4y","WPW/DG","WQtdQSo6","W7lcIrm","kSkiWR0","DgldMa","qdnCnHtcPCk8WQ3dScGzgSkVW4/cISo4W7u8","rCkTFW","WPifAW","WPFdLSkz","D8kMW7u","WQnTWRy","jIlcMa","WRJdO8km","W6ZdSmoq","eXBdJq","W4S2gSo2","W6neW43dMCo/WPO/fCoqW5JdI1/dK8ka","sSkTjq","ymk0vq","yHj5","WR7cRSklbCoqhSk5WQtdNuD8","C2JcOa","W6VcMCk4iCo3WPZdHmkHzh9Ojq","WPldRmkj","WPbdWO7cUmo7W4RcPb9/Aa","W7WCWOu","WPhcSmo8","nH8Z","WOewuI7dM8oSduhcRthcReldPCk5m8o9","W5xcRrmuWOVcPMVcQq","WP4QlCo8WPr1tG","WQNdO8kx","WQpdLfxdVCkoWRTd","WRFdVmkQ","WPWHlW","WOdcSmoN","W6hdP2G","WOW/lSkGCW","W73dSmol","WPC1BttcIhi","aCk7WQS","emk7WRa","lmkEhq","WP3cUZxdIa","WQddTa4","nYlcGW","W7BcTCkIyKxcR8oVixBcPSo6lSk1","W7HpWR0","W60CWP4","mdHteclcNSk3","W4O1aW","WPKJW50","qCkWDGbe","x8kNFWLfW4G","WRe2za","WRxdQSoH","jKJdSSkcWPf3bG","Cd9sWPGUWQC","mmkcWR3cRei4","WQlcOCol","lmkGpW"];return(_0x5ed5=function(){return x})()}_0x265860.row=5,_0x265860[_0x14c39c(202,"Jzq2")]=8;const _0x48ad7a={row:6};_0x48ad7a[_0x14c39c(233,"xWcf")]=9;const _0x3ead09={};_0x3ead09[_0x14c39c(227,"z0El")]=6,_0x3ead09[_0x14c39c(195,"9sIQ")]=10;const _0x268a2c={};_0x268a2c[_0x14c39c(173,"oXBf")]=6,_0x268a2c[_0x14c39c(187,"lc%I")]=11;const _0x3a8799={};_0x3a8799[_0x14c39c(278,"Bvwk")]=6,_0x3a8799[_0x14c39c(225,"eWUt")]=12;const _0x2554e9={};_0x2554e9[_0x14c39c(191,"AVdD")]=6,_0x2554e9[_0x14c39c(196,"iP4P")]=13;const _0x5c48e9={};_0x5c48e9[_0x14c39c(251,"k[97")]=6,_0x5c48e9.col=14;const _0x2bfdb2={};_0x2bfdb2[_0x14c39c(268,"e%[n")]=7,_0x2bfdb2[_0x14c39c(274,"bKJb")]=14;const _0x53a672={row:8,col:14},_0x2919e4={row:8};_0x2919e4[_0x14c39c(245,"9N6)")]=13;const _0x927c7f={};_0x927c7f[_0x14c39c(259,"$8%N")]=8,_0x927c7f[_0x14c39c(192,"%]MS")]=12;const _0x1d7563={row:8};_0x1d7563[_0x14c39c(171,"KRiM")]=11;const _0x332023={};_0x332023[_0x14c39c(227,"z0El")]=8,_0x332023[_0x14c39c(223,"#VcO")]=10;const _0x514b50={};_0x514b50[_0x14c39c(219,")jc8")]=8,_0x514b50[_0x14c39c(195,"9sIQ")]=9;const _0x55302c={};_0x55302c[_0x14c39c(234,"]Wcr")]=9,_0x55302c[_0x14c39c(218,"f0(3")]=8;const _0x278ac6={};_0x278ac6[_0x14c39c(173,"oXBf")]=10,_0x278ac6[_0x14c39c(184,"fC!X")]=8;const _0x1dc659={};_0x1dc659[_0x14c39c(174,"9P9N")]=11,_0x1dc659[_0x14c39c(217,"k[97")]=8;const _0xabec41={row:12};_0xabec41[_0x14c39c(250,")jc8")]=8;const _0x5bd577={};_0x5bd577[_0x14c39c(264,"lo4O")]=13,_0x5bd577[_0x14c39c(192,"%]MS")]=8;const _0x2d91f4={};_0x2d91f4[_0x14c39c(249,"S#19")]=14,_0x2d91f4[_0x14c39c(176,"D[]U")]=8;const _0x2923b2={row:14,col:7},_0x6c8a91={};_0x6c8a91[_0x14c39c(238,"fC!X")]=14,_0x6c8a91[_0x14c39c(283,"j4jE")]=6;const _0x53e889={};_0x53e889[_0x14c39c(256,"%mm8")]=13,_0x53e889.col=6;const _0x48ab0e={row:12};_0x48ab0e[_0x14c39c(202,"Jzq2")]=6;const _0x53e3d8={};_0x53e3d8[_0x14c39c(173,"oXBf")]=11,_0x53e3d8[_0x14c39c(208,"!jC(")]=6;const _0x6d58b4={row:10};_0x6d58b4[_0x14c39c(281,"S#19")]=6;const _0x23b012={};_0x23b012[_0x14c39c(282,"bpnU")]=9,_0x23b012[_0x14c39c(223,"#VcO")]=6;const _0x337117={};_0x337117[_0x14c39c(259,"$8%N")]=8,_0x337117[_0x14c39c(193,"P^5!")]=5;const _0x924952={row:8};_0x924952[_0x14c39c(167,"a6cM")]=4;const _0xcd2360={row:8,col:3},_0x1b290a={};_0x1b290a[_0x14c39c(204,"9N6)")]=8,_0x1b290a[_0x14c39c(228,"*!Ab")]=2;const _0x572651={row:8,col:1},_0x51f7f7={row:8};_0x51f7f7[_0x14c39c(186,"Bvwk")]=0;const _0x5512ef={};_0x5512ef[_0x14c39c(163,"ZvXW")]=7,_0x5512ef.col=0;export const MAIN_PATH=[_0x544ff7,_0x305018,_0x5e6fc7,_0x5ce7f9,_0x5cc0d8,_0x1c57bf,_0x3f2fc3,_0x116ee0,_0x215096,_0x5586c0,_0x4b792c,_0x1ad0ed,_0x1acb22,_0x5575ca,_0x4ca189,_0x48115d,_0x2e6d2c,_0x2ed82d,_0x265860,_0x48ad7a,_0x3ead09,_0x268a2c,_0x3a8799,_0x2554e9,_0x5c48e9,_0x2bfdb2,_0x53a672,_0x2919e4,_0x927c7f,_0x1d7563,_0x332023,_0x514b50,_0x55302c,_0x278ac6,_0x1dc659,_0xabec41,_0x5bd577,_0x2d91f4,_0x2923b2,_0x6c8a91,_0x53e889,_0x48ab0e,_0x53e3d8,_0x6d58b4,_0x23b012,_0x337117,_0x924952,_0xcd2360,_0x1b290a,_0x572651,_0x51f7f7,_0x5512ef];const _0x29ffc5={};_0x29ffc5[_0x14c39c(268,"e%[n")]=7,_0x29ffc5[_0x14c39c(201,"oXBf")]=1;const _0x18de7e={row:7,col:2},_0x38315c={};_0x38315c[_0x14c39c(214,"9sIQ")]=7,_0x38315c[_0x14c39c(281,"S#19")]=3;const _0x28df97={};_0x28df97[_0x14c39c(204,"9N6)")]=7,_0x28df97.col=4;const _0x55030e={};_0x55030e[_0x14c39c(268,"e%[n")]=7,_0x55030e.col=5;const _0x32002f={};_0x32002f[_0x14c39c(231,"!jC(")]=7,_0x32002f[_0x14c39c(170,"f^[^")]=6;const _0x2b4282={row:1};_0x2b4282[_0x14c39c(200,"59hy")]=7;const _0x4be987={};_0x4be987[_0x14c39c(209,"f0(3")]=2,_0x4be987[_0x14c39c(186,"Bvwk")]=7;const _0x3bb54c={row:3,col:7},_0x31c34b={};_0x31c34b[_0x14c39c(183,"Voi5")]=4,_0x31c34b[_0x14c39c(242,"lo4O")]=7;const _0x3a12fa={};_0x3a12fa[_0x14c39c(238,"fC!X")]=5,_0x3a12fa[_0x14c39c(281,"S#19")]=7;const _0x5dd7dc={};_0x5dd7dc[_0x14c39c(174,"9P9N")]=6,_0x5dd7dc[_0x14c39c(267,"7VVN")]=7;const _0x596ad2={};_0x596ad2[_0x14c39c(221,"iP4P")]=7,_0x596ad2.col=13;const _0x4f28a9={};_0x4f28a9[_0x14c39c(248,"ucaz")]=7,_0x4f28a9[_0x14c39c(172,"[*tu")]=12;const _0x5c7d18={};_0x5c7d18[_0x14c39c(247,"@ai@")]=7,_0x5c7d18.col=11;const _0x532fb1={};_0x532fb1[_0x14c39c(173,"oXBf")]=7,_0x532fb1[_0x14c39c(258,"zTxl")]=10;const _0x15d9b7={};_0x15d9b7[_0x14c39c(251,"k[97")]=7,_0x15d9b7.col=9;const _0x478dd={row:7,col:8},_0x167344={};_0x167344[_0x14c39c(164,"xWcf")]=13,_0x167344[_0x14c39c(245,"9N6)")]=7;const _0x4ea9c1={};_0x4ea9c1[_0x14c39c(174,"9P9N")]=12,_0x4ea9c1[_0x14c39c(190,"$ZSy")]=7;const _0x501681={row:11};_0x501681[_0x14c39c(242,"lo4O")]=7;const _0x281a7c={};_0x281a7c[_0x14c39c(214,"9sIQ")]=10,_0x281a7c[_0x14c39c(162,"@ai@")]=7;const _0x246f3c={};_0x246f3c[_0x14c39c(214,"9sIQ")]=9,_0x246f3c[_0x14c39c(245,"9N6)")]=7;const _0x55ca81={};_0x55ca81[_0x14c39c(214,"9sIQ")]=8,_0x55ca81[_0x14c39c(279,"%mm8")]=7;const _0x3bd0b2={};_0x3bd0b2[_0x14c39c(198,"xWcf")]=[_0x29ffc5,_0x18de7e,_0x38315c,_0x28df97,_0x55030e,_0x32002f],_0x3bd0b2.red=[_0x2b4282,_0x4be987,_0x3bb54c,_0x31c34b,_0x3a12fa,_0x5dd7dc],_0x3bd0b2[_0x14c39c(241,"Bvwk")]=[_0x596ad2,_0x4f28a9,_0x5c7d18,_0x532fb1,_0x15d9b7,_0x478dd],_0x3bd0b2[_0x14c39c(235,"ZvXW")]=[_0x167344,_0x4ea9c1,_0x501681,_0x281a7c,_0x246f3c,_0x55ca81];export const HOME_STRETCH_PATHS=_0x3bd0b2;const _0x4ff27c={};_0x4ff27c[_0x14c39c(182,"S#19")]=51,_0x4ff27c.red=12,_0x4ff27c[_0x14c39c(246,"%]MS")]=25,_0x4ff27c[_0x14c39c(220,"zTxl")]=38;export const HOME_STRETCH_ENTRY=_0x4ff27c;
|
|
1
|
+
"use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{project}from"../shared/EngineTilt.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GRID=15;export const TOKENS_PER_PLAYER=4;export const TRACK_LENGTH=56;export const MAX_SIXES=3;export const PLAYER_COLORS={red:"#E53935",green:"#43A047",yellow:"#D4A017",blue:"#1E88E5"};export const BOARD_WHITE="#FBF7EC";export const BOARD_FRAME="#2A2550";export const STAR_COLOR="#8A8AA0";export const PLAYER_COLOR=PLAYER_COLORS.green;export const AI_COLOR=PLAYER_COLORS.red;export const ROLL_TIME=.9;export const MOVE_DELAY=.35;export const HOP_TIME=.14;export const NEXT_TURN_DELAY=.45;export const PENALTY_DELAY=.9;export const CANT_MOVE_DELAY=.6;export const AI_THINK=.7;export const TILT=.35;export const LIGHT=frontLight([-.35,.3,1],.5);export const RIM=.014;export const TILE_TOP=.012;export const DIE_SIZE=.15;export const DIE_Y=-.649;export const TOKEN_HEIGHT=.07;export const ENTRY={blue:1,red:14,yellow:27,green:40};export const SAFE_POSITIONS=[1,9,14,22,27,35,40,48];export const MAIN_PATH=[{row:6,col:0},{row:6,col:1},{row:6,col:2},{row:6,col:3},{row:6,col:4},{row:6,col:5},{row:5,col:6},{row:4,col:6},{row:3,col:6},{row:2,col:6},{row:1,col:6},{row:0,col:6},{row:0,col:7},{row:0,col:8},{row:1,col:8},{row:2,col:8},{row:3,col:8},{row:4,col:8},{row:5,col:8},{row:6,col:9},{row:6,col:10},{row:6,col:11},{row:6,col:12},{row:6,col:13},{row:6,col:14},{row:7,col:14},{row:8,col:14},{row:8,col:13},{row:8,col:12},{row:8,col:11},{row:8,col:10},{row:8,col:9},{row:9,col:8},{row:10,col:8},{row:11,col:8},{row:12,col:8},{row:13,col:8},{row:14,col:8},{row:14,col:7},{row:14,col:6},{row:13,col:6},{row:12,col:6},{row:11,col:6},{row:10,col:6},{row:9,col:6},{row:8,col:5},{row:8,col:4},{row:8,col:3},{row:8,col:2},{row:8,col:1},{row:8,col:0},{row:7,col:0}];export const HOME_STRETCH={blue:[{row:7,col:1},{row:7,col:2},{row:7,col:3},{row:7,col:4},{row:7,col:5},{row:7,col:6}],red:[{row:1,col:7},{row:2,col:7},{row:3,col:7},{row:4,col:7},{row:5,col:7},{row:6,col:7}],yellow:[{row:7,col:13},{row:7,col:12},{row:7,col:11},{row:7,col:10},{row:7,col:9},{row:7,col:8}],green:[{row:13,col:7},{row:12,col:7},{row:11,col:7},{row:10,col:7},{row:9,col:7},{row:8,col:7}]};export const HOME_YARDS={blue:[{row:1.5,col:1.5},{row:1.5,col:4.5},{row:4.5,col:1.5},{row:4.5,col:4.5}],red:[{row:1.5,col:10.5},{row:1.5,col:13.5},{row:4.5,col:10.5},{row:4.5,col:13.5}],green:[{row:10.5,col:1.5},{row:10.5,col:4.5},{row:13.5,col:1.5},{row:13.5,col:4.5}],yellow:[{row:10.5,col:10.5},{row:10.5,col:13.5},{row:13.5,col:10.5},{row:13.5,col:13.5}]};export const CENTER={row:7,col:7};export function cellPoint(o,r){return[(r+.5)/15-.5,.5-(o+.5)/15]}const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110,TOP_EXTENT=.514,BOTTOM_EXTENT=.649+.15*.75;export function getLayout(o,r,l){const t=Math.cos(.35),w=getScoreBoardTop(l)+82,e=Math.max(200,r-w-110),n=gameWidthFor(o),E=Math.min(n/1.028,e/(1.2755*t));return{width:o,height:r,size:E,centerY:w+e/2-.12375000000000003*E*t}}export function toView(o,r,l,t=0){return project({width:o.width,height:o.height,centerY:o.centerY,tilt:.35},r*o.size,l*o.size,t*o.size)}
|