@nayan-ui/games 1.19.0 → 1.21.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 +93 -73
- package/lib/module/games/arrows/ArrowsService.js +0 -1
- package/lib/module/games/arrows/ArrowsStore.js +0 -1
- package/lib/module/games/arrows/components/ArrowsGrid.js +0 -1
- package/lib/module/games/arrows/components/ScoreBoard.js +0 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js +0 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +0 -1
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js +0 -1
- package/lib/module/games/balloon-blaster/components/GameArea.js +0 -1
- package/lib/module/games/balloon-blaster/components/GameBackground.js +0 -1
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js +0 -1
- package/lib/module/games/bike-racing/BikeRacingService.js +0 -1
- package/lib/module/games/bike-racing/BikeRacingStore.js +0 -1
- package/lib/module/games/bike-racing/components/BikeComponent.js +0 -1
- package/lib/module/games/bike-racing/components/GameBackground.js +0 -1
- package/lib/module/games/bike-racing/components/ScoreBoard.js +0 -1
- package/lib/module/games/block-blast/BlockBlastService.js +0 -1
- package/lib/module/games/block-blast/BlockBlastStore.js +0 -1
- package/lib/module/games/block-blast/components/BlockPieceComponent.js +0 -1
- package/lib/module/games/block-blast/components/GameArea.js +0 -1
- package/lib/module/games/block-blast/components/GridComponent.js +0 -1
- package/lib/module/games/block-blast/components/ScoreBoard.js +0 -1
- package/lib/module/games/block-breaker/BlockBreakerService.js +0 -1
- package/lib/module/games/block-breaker/BlockBreakerStore.js +0 -1
- package/lib/module/games/block-breaker/components/BlastAnimation.js +0 -1
- package/lib/module/games/block-breaker/components/GameArea.js +0 -1
- package/lib/module/games/block-breaker/components/ScoreBoard.js +0 -1
- package/lib/module/games/bluk/BlukService.js +0 -1
- package/lib/module/games/bluk/BlukStore.js +0 -1
- package/lib/module/games/bluk/components/GameArea.js +0 -1
- package/lib/module/games/bluk/components/GameBackground.js +0 -1
- package/lib/module/games/bluk/components/ScoreBoard.js +0 -1
- package/lib/module/games/bubble-shooter/BubbleShooterService.js +0 -1
- package/lib/module/games/bubble-shooter/BubbleShooterStore.js +0 -1
- package/lib/module/games/bubble-shooter/components/GameArea.js +0 -1
- package/lib/module/games/bubble-shooter/components/ScoreBoard.js +0 -1
- package/lib/module/games/candy-crush/CandyCrushService.js +0 -1
- package/lib/module/games/candy-crush/CandyCrushStore.js +0 -1
- package/lib/module/games/candy-crush/components/CandyItem.js +0 -1
- package/lib/module/games/candy-crush/components/GameGrid.js +0 -1
- package/lib/module/games/candy-crush/components/ScoreBoard.js +0 -1
- package/lib/module/games/car-racing/CarRacingService.js +0 -1
- package/lib/module/games/car-racing/CarRacingStore.js +0 -1
- package/lib/module/games/car-racing/components/CarComponent.js +0 -1
- package/lib/module/games/car-racing/components/GameBackground.js +0 -1
- package/lib/module/games/car-racing/components/ScoreBoard.js +0 -1
- package/lib/module/games/chameleon-run/ChameleonRunService.js +0 -1
- package/lib/module/games/chameleon-run/ChameleonRunStore.js +0 -1
- package/lib/module/games/chameleon-run/components/GameArea.js +0 -1
- package/lib/module/games/chameleon-run/components/GameBackground.js +0 -1
- package/lib/module/games/chameleon-run/components/ScoreBoard.js +0 -1
- package/lib/module/games/checkers/CheckersService.js +0 -1
- package/lib/module/games/checkers/CheckersStore.js +0 -1
- package/lib/module/games/checkers/components/GameBoard.js +0 -1
- package/lib/module/games/checkers/components/ScoreBoard.js +0 -1
- package/lib/module/games/color-switch/ColorSwitchService.js +0 -1
- package/lib/module/games/color-switch/ColorSwitchStore.js +0 -1
- package/lib/module/games/color-switch/components/GameArea.js +0 -1
- package/lib/module/games/color-switch/components/ScoreBoard.js +0 -1
- package/lib/module/games/colors-sort/ColorsSortService.js +0 -1
- package/lib/module/games/colors-sort/ColorsSortStore.js +0 -1
- package/lib/module/games/colors-sort/components/ColorContainer.js +0 -1
- package/lib/module/games/colors-sort/components/ScoreBoard.js +0 -1
- package/lib/module/games/connect-em-all/ConnectEmAllService.js +0 -1
- package/lib/module/games/connect-em-all/ConnectEmAllStore.js +0 -1
- package/lib/module/games/connect-em-all/components/GameBoard.js +0 -1
- package/lib/module/games/connect-em-all/components/ScoreBoard.js +0 -1
- package/lib/module/games/crossy-road/CrossyRoadService.js +0 -1
- package/lib/module/games/crossy-road/CrossyRoadStore.js +0 -1
- package/lib/module/games/crossy-road/components/GameArea.js +0 -1
- package/lib/module/games/crossy-road/components/ScoreBoard.js +0 -1
- package/lib/module/games/dino-jump/DinoJumpService.js +0 -1
- package/lib/module/games/dino-jump/DinoJumpStore.js +0 -1
- package/lib/module/games/dino-jump/components/DinoSprite.js +0 -1
- package/lib/module/games/dino-jump/components/GameArea.js +0 -1
- package/lib/module/games/dino-jump/components/GameBackground.js +0 -1
- package/lib/module/games/dino-jump/components/ObstacleSprite.js +0 -1
- package/lib/module/games/dino-jump/components/ScoreBoard.js +0 -1
- package/lib/module/games/dino-jump/components/StarSprite.js +0 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesService.js +0 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesStore.js +0 -1
- package/lib/module/games/dots-and-boxes/components/GameBoard.js +0 -1
- package/lib/module/games/dots-and-boxes/components/ScoreBoard.js +0 -1
- package/lib/module/games/falling-sticks/FallingSticksService.js +0 -1
- package/lib/module/games/falling-sticks/FallingSticksStore.js +0 -1
- package/lib/module/games/falling-sticks/components/GameArea.js +0 -1
- package/lib/module/games/falling-sticks/components/GameBackground.js +0 -1
- package/lib/module/games/falling-sticks/components/ScoreBoard.js +0 -1
- package/lib/module/games/find-different-number/FindDifferentNumberService.js +0 -1
- package/lib/module/games/find-different-number/FindDifferentNumberStore.js +0 -1
- package/lib/module/games/find-different-number/components/GameGrid.js +0 -1
- package/lib/module/games/find-different-number/components/ScoreBoard.js +0 -1
- package/lib/module/games/flappy-bird/FlappyBirdStore.js +0 -1
- package/lib/module/games/flappy-bird/components/Bird.js +0 -1
- package/lib/module/games/flappy-bird/components/GameArea.js +0 -1
- package/lib/module/games/flappy-bird/components/GameBackground.js +0 -1
- package/lib/module/games/flappy-bird/components/Pipes.js +0 -1
- package/lib/module/games/flappy-bird/components/ScoreBoard.js +0 -1
- package/lib/module/games/fruit-merger/FruitMergerService.js +0 -1
- package/lib/module/games/fruit-merger/FruitMergerStore.js +0 -1
- package/lib/module/games/fruit-merger/components/FruitItem.js +0 -1
- package/lib/module/games/fruit-merger/components/GameArea.js +0 -1
- package/lib/module/games/fruit-merger/components/ScoreBoard.js +0 -1
- package/lib/module/games/fruit-ninja/FruitNinjaService.js +0 -1
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js +0 -1
- package/lib/module/games/fruit-ninja/components/FruitComponent.js +0 -1
- package/lib/module/games/fruit-ninja/components/GameArea.js +0 -1
- package/lib/module/games/fruit-ninja/components/GameBackground.js +0 -1
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js +0 -1
- package/lib/module/games/game-2048/Game2048Service.js +0 -1
- package/lib/module/games/game-2048/Game2048Store.js +0 -1
- package/lib/module/games/game-2048/components/GameGrid.js +0 -1
- package/lib/module/games/game-2048/components/ScoreBoard.js +0 -1
- package/lib/module/games/knife-hit/KnifeHitService.js +0 -1
- package/lib/module/games/knife-hit/KnifeHitStore.js +0 -1
- package/lib/module/games/knife-hit/components/GameArea.js +0 -1
- package/lib/module/games/knife-hit/components/ScoreBoard.js +0 -1
- package/lib/module/games/ludo-king/LudoKingService.js +0 -1
- package/lib/module/games/ludo-king/LudoKingStore.js +0 -1
- package/lib/module/games/ludo-king/components/Dice.js +0 -1
- package/lib/module/games/ludo-king/components/GameBoard.js +0 -1
- package/lib/module/games/ludo-king/components/ScoreBoard.js +0 -1
- package/lib/module/games/maze-runner/MazeRunnerStore.js +0 -1
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +0 -1
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js +0 -1
- package/lib/module/games/maze-runner/components/ScoreBoard.js +0 -1
- package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +0 -1
- package/lib/module/games/maze-runner/components/WallComponent.js +0 -1
- package/lib/module/games/memory-match/MemoryMatchService.js +0 -1
- package/lib/module/games/memory-match/MemoryMatchStore.js +0 -1
- package/lib/module/games/memory-match/components/Card.js +0 -1
- package/lib/module/games/memory-match/components/GameBoard.js +0 -1
- package/lib/module/games/memory-match/components/ScoreBoard.js +0 -1
- package/lib/module/games/mine-sweeper/MineSweeperService.js +0 -1
- package/lib/module/games/mine-sweeper/MineSweeperStore.js +0 -1
- package/lib/module/games/mine-sweeper/components/GameArea.js +0 -1
- package/lib/module/games/mine-sweeper/components/ScoreBoard.js +0 -1
- package/lib/module/games/mob-control/MobControlService.js +0 -1
- package/lib/module/games/mob-control/MobControlStore.js +0 -1
- package/lib/module/games/mob-control/components/GameArea.js +0 -1
- package/lib/module/games/mob-control/components/ScoreBoard.js +0 -1
- package/lib/module/games/number-search/NumberSearchConstants.js +0 -1
- package/lib/module/games/number-search/NumberSearchService.js +0 -1
- package/lib/module/games/number-search/NumberSearchStore.js +0 -1
- package/lib/module/games/number-search/components/GameBoard.js +0 -1
- package/lib/module/games/number-search/components/NumberList.js +0 -1
- package/lib/module/games/number-search/components/ScoreBoard.js +0 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsService.js +0 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsStore.js +0 -1
- package/lib/module/games/nuts-and-bolts/components/GameBoard.js +0 -1
- package/lib/module/games/nuts-and-bolts/components/ScoreBoard.js +0 -1
- package/lib/module/games/pac-man/PacManService.js +0 -1
- package/lib/module/games/pac-man/PacManStore.js +0 -1
- package/lib/module/games/pac-man/components/GameCanvas.js +0 -1
- package/lib/module/games/pac-man/components/ScoreBoard.js +0 -1
- package/lib/module/games/paper-io/PaperIoService.js +0 -1
- package/lib/module/games/paper-io/PaperIoStore.js +0 -1
- package/lib/module/games/paper-io/components/GameArea.js +0 -1
- package/lib/module/games/paper-io/components/ScoreBoard.js +0 -1
- package/lib/module/games/perfect-circle/PerfectCircleService.js +0 -1
- package/lib/module/games/perfect-circle/PerfectCircleStore.js +0 -1
- package/lib/module/games/perfect-circle/components/DrawingCanvas.js +0 -1
- package/lib/module/games/perfect-circle/components/ScoreBoard.js +0 -1
- package/lib/module/games/pipe-connect/PipeConnectService.js +0 -1
- package/lib/module/games/pipe-connect/PipeConnectStore.js +0 -1
- package/lib/module/games/pipe-connect/components/GameArea.js +0 -1
- package/lib/module/games/pipe-connect/components/ScoreBoard.js +0 -1
- package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -1
- package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -1
- package/lib/module/games/popit-fidget/components/BubbleComponent.js +0 -1
- package/lib/module/games/popit-fidget/components/FidgetGrid.js +0 -1
- package/lib/module/games/popit-fidget/components/ScoreBoard.js +0 -1
- package/lib/module/games/reversi/ReversiStore.js +0 -1
- package/lib/module/games/reversi/components/GameBoard.js +0 -1
- package/lib/module/games/reversi/components/ScoreBoard.js +0 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersService.js +0 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +0 -1
- package/lib/module/games/sliding-numbers/components/NumbersGrid.js +0 -1
- package/lib/module/games/sliding-numbers/components/ScoreBoard.js +0 -1
- package/lib/module/games/snake-3d/Snake3DService.js +0 -1
- package/lib/module/games/snake-3d/Snake3DStore.js +0 -1
- package/lib/module/games/snake-3d/components/GameGrid.js +0 -1
- package/lib/module/games/snake-3d/components/ScoreBoard.js +0 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersService.js +0 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersStore.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/Dice.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/GameBoard.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/ScoreBoard.js +0 -1
- package/lib/module/games/space-fighter/SpaceFighterService.js +0 -1
- package/lib/module/games/space-fighter/SpaceFighterStore.js +0 -1
- package/lib/module/games/space-fighter/components/AsteroidComponent.js +0 -1
- package/lib/module/games/space-fighter/components/GameArea.js +0 -1
- package/lib/module/games/space-fighter/components/GameBackground.js +0 -1
- package/lib/module/games/space-fighter/components/ScoreBoard.js +0 -1
- package/lib/module/games/space-fighter/components/Spacecraft3D.js +0 -1
- package/lib/module/games/space-fighter/components/SpacecraftPath.js +0 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireService.js +0 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireStore.js +0 -1
- package/lib/module/games/spider-solitaire/components/Card.js +0 -1
- package/lib/module/games/spider-solitaire/components/CardPile.js +0 -1
- package/lib/module/games/spider-solitaire/components/ScoreBoard.js +0 -1
- package/lib/module/games/stack-tower/StackTowerService.js +0 -1
- package/lib/module/games/stack-tower/StackTowerStore.js +0 -1
- package/lib/module/games/stack-tower/components/GameArea.js +0 -1
- package/lib/module/games/stack-tower/components/ScoreBoard.js +0 -1
- package/lib/module/games/sudoku/SudokuService.js +0 -1
- package/lib/module/games/sudoku/SudokuStore.js +0 -1
- package/lib/module/games/sudoku/components/GameArea.js +0 -1
- package/lib/module/games/sudoku/components/ScoreBoard.js +0 -1
- package/lib/module/games/tangram/TangramService.js +0 -1
- package/lib/module/games/tangram/TangramStore.js +0 -1
- package/lib/module/games/tangram/components/GameBoard.js +0 -1
- package/lib/module/games/tangram/components/ScoreBoard.js +0 -1
- package/lib/module/games/tank-1990/Tank1990Service.js +0 -1
- package/lib/module/games/tank-1990/Tank1990Store.js +0 -1
- package/lib/module/games/tank-1990/components/Controls.js +0 -1
- package/lib/module/games/tank-1990/components/GameBoard.js +0 -1
- package/lib/module/games/tank-1990/components/ScoreBoard.js +0 -1
- package/lib/module/games/tic-tac-toe/TicTacToeService.js +0 -1
- package/lib/module/games/tic-tac-toe/TicTacToeStore.js +0 -1
- package/lib/module/games/tic-tac-toe/components/GameBoard.js +0 -1
- package/lib/module/games/tic-tac-toe/components/ScoreBoard.js +0 -1
- package/lib/module/games/tile-home/TileHomeService.js +0 -1
- package/lib/module/games/tile-home/TileHomeStore.js +0 -1
- package/lib/module/games/tile-home/components/AnimatingTile.js +0 -1
- package/lib/module/games/tile-home/components/FlyingTile.js +0 -1
- package/lib/module/games/tile-home/components/GameBoard.js +0 -1
- package/lib/module/games/tile-home/components/ScoreBoard.js +0 -1
- package/lib/module/games/tile-home/components/TileItem.js +0 -1
- package/lib/module/games/tile-home/components/TileSlot.js +0 -1
- package/lib/module/games/whack-a-mole/WhackAMoleService.js +0 -1
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameBackground.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameGrid.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameHole.js +0 -1
- package/lib/module/games/whack-a-mole/components/MoleCharacter.js +0 -1
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js +0 -1
- package/lib/module/games/word-search/WordSearchConstants.js +0 -1
- package/lib/module/games/word-search/WordSearchService.js +0 -1
- package/lib/module/games/word-search/WordSearchStore.js +0 -1
- package/lib/module/games/word-search/components/GameBoard.js +0 -1
- package/lib/module/games/word-search/components/ScoreBoard.js +0 -1
- package/lib/module/games/word-search/components/WordList.js +0 -1
- package/lib/module/helpers/AnimatedScore.js +0 -1
- package/lib/module/helpers/AnimationFrame.js +0 -1
- package/lib/module/helpers/AnimationTracker.js +0 -1
- package/lib/module/helpers/BlastAnimation.js +0 -1
- package/lib/module/helpers/ErrorHandler.js +0 -1
- package/lib/module/helpers/GameBackgroundPattern.js +0 -1
- package/lib/module/helpers/GameControlButton.js +0 -1
- package/lib/module/helpers/GameOverModal.js +0 -1
- package/lib/module/helpers/GameTimer.js +0 -1
- package/lib/module/helpers/Icons.js +0 -1
- package/lib/module/helpers/ParticleBlast.js +0 -1
- package/lib/module/helpers/ScoreBoardContainer.js +0 -1
- package/lib/module/helpers/assets/apple-fruit.js +0 -1
- package/lib/module/helpers/assets/avocado-item.js +0 -1
- package/lib/module/helpers/assets/banana-fruit.js +0 -1
- package/lib/module/helpers/assets/bomb-item.js +0 -1
- package/lib/module/helpers/assets/broccoli-item.js +0 -1
- package/lib/module/helpers/assets/cherries-fruit.js +0 -1
- package/lib/module/helpers/assets/donut-item.js +0 -1
- package/lib/module/helpers/assets/dragonfruit-item.js +0 -1
- package/lib/module/helpers/assets/fries-item.js +0 -1
- package/lib/module/helpers/assets/fruit-helpers.js +0 -1
- package/lib/module/helpers/assets/grapes-fruit.js +0 -1
- package/lib/module/helpers/assets/icecream-item.js +0 -1
- package/lib/module/helpers/assets/index.js +0 -1
- package/lib/module/helpers/assets/kiwi-fruit.js +0 -1
- package/lib/module/helpers/assets/mango-fruit.js +0 -1
- package/lib/module/helpers/assets/orange-fruit.js +0 -1
- package/lib/module/helpers/assets/papaya-fruit.js +0 -1
- package/lib/module/helpers/assets/papaya-full-fruit.js +0 -1
- package/lib/module/helpers/assets/peach-fruit.js +0 -1
- package/lib/module/helpers/assets/pineapple-fruit.js +0 -1
- package/lib/module/helpers/assets/pomegranate-fruit.js +0 -1
- package/lib/module/helpers/assets/pumpkin-fruit.js +0 -1
- package/lib/module/helpers/assets/raspberry-item.js +0 -1
- package/lib/module/helpers/assets/star-item.js +0 -1
- package/lib/module/helpers/assets/strawberry-fruit.js +0 -1
- package/lib/module/helpers/assets/watermelon-fruit.js +0 -1
- package/lib/module/types.d.js +0 -1
- package/lib/typescript/src/games/arrows/ArrowsService.d.ts +0 -6
- package/lib/typescript/src/games/arrows/ArrowsStore.d.ts +0 -51
- package/lib/typescript/src/games/arrows/components/ArrowsGrid.d.ts +0 -13
- package/lib/typescript/src/games/arrows/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -80
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +0 -30
- package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts +0 -9
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +0 -9
- package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +0 -44
- package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +0 -68
- package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +0 -12
- package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +0 -16
- package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +0 -70
- package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +0 -11
- package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +0 -11
- package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +0 -8
- package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/block-breaker/BlockBreakerService.d.ts +0 -88
- package/lib/typescript/src/games/block-breaker/BlockBreakerStore.d.ts +0 -47
- package/lib/typescript/src/games/block-breaker/components/BlastAnimation.d.ts +0 -15
- package/lib/typescript/src/games/block-breaker/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/block-breaker/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bluk/BlukService.d.ts +0 -71
- package/lib/typescript/src/games/bluk/BlukStore.d.ts +0 -52
- package/lib/typescript/src/games/bluk/components/GameArea.d.ts +0 -17
- package/lib/typescript/src/games/bluk/components/GameBackground.d.ts +0 -9
- package/lib/typescript/src/games/bluk/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +0 -35
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +0 -63
- package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +0 -37
- package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +0 -53
- package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +0 -11
- package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +0 -5
- package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +0 -44
- package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +0 -68
- package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +0 -12
- package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/chameleon-run/ChameleonRunService.d.ts +0 -76
- package/lib/typescript/src/games/chameleon-run/ChameleonRunStore.d.ts +0 -48
- package/lib/typescript/src/games/chameleon-run/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/chameleon-run/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/chameleon-run/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/checkers/CheckersService.d.ts +0 -6
- package/lib/typescript/src/games/checkers/CheckersStore.d.ts +0 -48
- package/lib/typescript/src/games/checkers/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/checkers/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/color-switch/ColorSwitchService.d.ts +0 -63
- package/lib/typescript/src/games/color-switch/ColorSwitchStore.d.ts +0 -43
- package/lib/typescript/src/games/color-switch/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/color-switch/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts +0 -61
- package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts +0 -56
- package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts +0 -7
- package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllService.d.ts +0 -20
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllStore.d.ts +0 -48
- package/lib/typescript/src/games/connect-em-all/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/connect-em-all/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/crossy-road/CrossyRoadService.d.ts +0 -89
- package/lib/typescript/src/games/crossy-road/CrossyRoadStore.d.ts +0 -39
- package/lib/typescript/src/games/crossy-road/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/crossy-road/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +0 -39
- package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +0 -97
- package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +0 -2
- package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +0 -8
- package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +0 -2
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesService.d.ts +0 -45
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesStore.d.ts +0 -37
- package/lib/typescript/src/games/dots-and-boxes/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/dots-and-boxes/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/falling-sticks/FallingSticksService.d.ts +0 -40
- package/lib/typescript/src/games/falling-sticks/FallingSticksStore.d.ts +0 -31
- package/lib/typescript/src/games/falling-sticks/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/falling-sticks/components/GameBackground.d.ts +0 -6
- package/lib/typescript/src/games/falling-sticks/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberService.d.ts +0 -6
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberStore.d.ts +0 -36
- package/lib/typescript/src/games/find-different-number/components/GameGrid.d.ts +0 -7
- package/lib/typescript/src/games/find-different-number/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +0 -68
- package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +0 -2
- package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +0 -8
- package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +0 -3
- package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +0 -66
- package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +0 -8
- package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +0 -73
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +0 -38
- package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts +0 -8
- package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +0 -102
- package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +0 -44
- package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/knife-hit/KnifeHitService.d.ts +0 -48
- package/lib/typescript/src/games/knife-hit/KnifeHitStore.d.ts +0 -41
- package/lib/typescript/src/games/knife-hit/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/knife-hit/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/ludo-king/LudoKingService.d.ts +0 -33
- package/lib/typescript/src/games/ludo-king/LudoKingStore.d.ts +0 -34
- package/lib/typescript/src/games/ludo-king/components/Dice.d.ts +0 -7
- package/lib/typescript/src/games/ludo-king/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/ludo-king/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/maze-runner/MazeRunnerStore.d.ts +0 -62
- package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts +0 -10
- package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts +0 -33
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +0 -24
- package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts +0 -24
- package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts +0 -9
- package/lib/typescript/src/games/memory-match/MemoryMatchService.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/MemoryMatchStore.d.ts +0 -42
- package/lib/typescript/src/games/memory-match/components/Card.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/mine-sweeper/MineSweeperService.d.ts +0 -22
- package/lib/typescript/src/games/mine-sweeper/MineSweeperStore.d.ts +0 -73
- package/lib/typescript/src/games/mine-sweeper/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/mine-sweeper/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/mob-control/MobControlService.d.ts +0 -74
- package/lib/typescript/src/games/mob-control/MobControlStore.d.ts +0 -66
- package/lib/typescript/src/games/mob-control/components/GameArea.d.ts +0 -11
- package/lib/typescript/src/games/mob-control/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/number-search/NumberSearchConstants.d.ts +0 -63
- package/lib/typescript/src/games/number-search/NumberSearchService.d.ts +0 -34
- package/lib/typescript/src/games/number-search/NumberSearchStore.d.ts +0 -70
- package/lib/typescript/src/games/number-search/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/number-search/components/NumberList.d.ts +0 -2
- package/lib/typescript/src/games/number-search/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsService.d.ts +0 -67
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsStore.d.ts +0 -45
- package/lib/typescript/src/games/nuts-and-bolts/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/nuts-and-bolts/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/pac-man/PacManService.d.ts +0 -73
- package/lib/typescript/src/games/pac-man/PacManStore.d.ts +0 -89
- package/lib/typescript/src/games/pac-man/components/GameCanvas.d.ts +0 -2
- package/lib/typescript/src/games/pac-man/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/paper-io/PaperIoService.d.ts +0 -70
- package/lib/typescript/src/games/paper-io/PaperIoStore.d.ts +0 -51
- package/lib/typescript/src/games/paper-io/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/paper-io/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +0 -15
- package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +0 -55
- package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +0 -8
- package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/pipe-connect/PipeConnectService.d.ts +0 -17
- package/lib/typescript/src/games/pipe-connect/PipeConnectStore.d.ts +0 -31
- package/lib/typescript/src/games/pipe-connect/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/pipe-connect/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -30
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +0 -33
- package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +0 -10
- package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +0 -10
- package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/reversi/ReversiStore.d.ts +0 -46
- package/lib/typescript/src/games/reversi/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/reversi/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +0 -6
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +0 -38
- package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +0 -7
- package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/snake-3d/Snake3DService.d.ts +0 -29
- package/lib/typescript/src/games/snake-3d/Snake3DStore.d.ts +0 -49
- package/lib/typescript/src/games/snake-3d/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/snake-3d/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersService.d.ts +0 -22
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersStore.d.ts +0 -40
- package/lib/typescript/src/games/snakes-and-ladders/components/Dice.d.ts +0 -7
- package/lib/typescript/src/games/snakes-and-ladders/components/GameBoard.d.ts +0 -2
- package/lib/typescript/src/games/snakes-and-ladders/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts +0 -117
- package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts +0 -54
- package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts +0 -11
- package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts +0 -9
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireService.d.ts +0 -23
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireStore.d.ts +0 -71
- package/lib/typescript/src/games/spider-solitaire/components/Card.d.ts +0 -10
- package/lib/typescript/src/games/spider-solitaire/components/CardPile.d.ts +0 -12
- package/lib/typescript/src/games/spider-solitaire/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/stack-tower/StackTowerService.d.ts +0 -51
- package/lib/typescript/src/games/stack-tower/StackTowerStore.d.ts +0 -52
- package/lib/typescript/src/games/stack-tower/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/stack-tower/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/sudoku/SudokuService.d.ts +0 -24
- package/lib/typescript/src/games/sudoku/SudokuStore.d.ts +0 -65
- package/lib/typescript/src/games/sudoku/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/sudoku/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tangram/TangramService.d.ts +0 -6
- package/lib/typescript/src/games/tangram/TangramStore.d.ts +0 -34
- package/lib/typescript/src/games/tangram/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/tangram/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tank-1990/Tank1990Service.d.ts +0 -80
- package/lib/typescript/src/games/tank-1990/Tank1990Store.d.ts +0 -48
- package/lib/typescript/src/games/tank-1990/components/Controls.d.ts +0 -2
- package/lib/typescript/src/games/tank-1990/components/GameBoard.d.ts +0 -2
- package/lib/typescript/src/games/tank-1990/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeService.d.ts +0 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeStore.d.ts +0 -51
- package/lib/typescript/src/games/tic-tac-toe/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/tic-tac-toe/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tile-home/TileHomeService.d.ts +0 -1
- package/lib/typescript/src/games/tile-home/TileHomeStore.d.ts +0 -57
- package/lib/typescript/src/games/tile-home/components/AnimatingTile.d.ts +0 -9
- package/lib/typescript/src/games/tile-home/components/FlyingTile.d.ts +0 -16
- package/lib/typescript/src/games/tile-home/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/tile-home/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tile-home/components/TileItem.d.ts +0 -11
- package/lib/typescript/src/games/tile-home/components/TileSlot.d.ts +0 -7
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +0 -32
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +0 -39
- package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts +0 -10
- package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts +0 -11
- package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +0 -6
- package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/word-search/WordSearchConstants.d.ts +0 -63
- package/lib/typescript/src/games/word-search/WordSearchService.d.ts +0 -34
- package/lib/typescript/src/games/word-search/WordSearchStore.d.ts +0 -70
- package/lib/typescript/src/games/word-search/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/word-search/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/word-search/components/WordList.d.ts +0 -2
- package/lib/typescript/src/helpers/AnimatedScore.d.ts +0 -36
- package/lib/typescript/src/helpers/AnimationFrame.d.ts +0 -40
- package/lib/typescript/src/helpers/AnimationTracker.d.ts +0 -44
- package/lib/typescript/src/helpers/BlastAnimation.d.ts +0 -16
- package/lib/typescript/src/helpers/ErrorHandler.d.ts +0 -123
- package/lib/typescript/src/helpers/GameBackgroundPattern.d.ts +0 -7
- package/lib/typescript/src/helpers/GameControlButton.d.ts +0 -11
- package/lib/typescript/src/helpers/GameOverModal.d.ts +0 -15
- package/lib/typescript/src/helpers/GameTimer.d.ts +0 -26
- package/lib/typescript/src/helpers/Icons.d.ts +0 -12
- package/lib/typescript/src/helpers/ParticleBlast.d.ts +0 -11
- package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +0 -85
- package/lib/typescript/src/helpers/assets/apple-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/avocado-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/banana-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/bomb-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/broccoli-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/cherries-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/donut-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/dragonfruit-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/fries-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/fruit-helpers.d.ts +0 -154
- package/lib/typescript/src/helpers/assets/grapes-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/icecream-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/index.d.ts +0 -31
- package/lib/typescript/src/helpers/assets/kiwi-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/mango-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/orange-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/papaya-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/papaya-full-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/peach-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pineapple-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pomegranate-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pumpkin-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/raspberry-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/star-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/strawberry-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/watermelon-fruit.d.ts +0 -4
|
@@ -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 _0x8f2e38}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 _0x8f2e38(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 _0x4d9d49}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:_0x4d9d49(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:_0x4d9d49(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 _0x4d9d49(extrude((new Path).addPolygon(r),{depth:o}),{center:!1,shine:n})}),backMesh=()=>cached("fm-back",()=>_0x4d9d49(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 _0x1914d2}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 _0x1914d2(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 _0x2ae645}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:_0x2ae645(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:_0x2ae645(shapeGeometry("sphere")),star:_0x2ae645(extrude((new Path).addStar(0,0,.5,.22,5),{depth:.22,color:toColor(STAR_COLORS[0])}),{fit:1,shine:.6}),disc:_0x2ae645(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 _0x136602,spawnWorld as _0x4a7c9f}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)=>_0x136602(e,o,{eyeHeight:1.6,horizon:.62,playDepth:3.6});export const spawnWorld=(e,o,a)=>_0x4a7c9f(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 _0x36b417}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 _0x36b417(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";const _0x307ad1=_0x17e8;!function(){const x="gExX",d=_0x17e8,_=_0x2a94();for(;;)try{if(467421==-parseInt(d(502,"KXgO"))/1+parseInt(d(503,"eltn"))/2+parseInt(d(513,"[j(e"))/3*(-parseInt(d(500,"gExX"))/4)+-parseInt(d(577,x))/5*(-parseInt(d(573,"BYRs"))/6)+-parseInt(d(566,"gExX"))/7*(parseInt(d(521,"GNKM"))/8)+parseInt(d(511,"Ij&L"))/9*(parseInt(d(515,"Ip@G"))/10)+-parseInt(d(606,x))/11*(-parseInt(d(576,"iQfm"))/12))break;_.push(_.shift())}catch(x){_.push(_.shift())}}();import{BACKGROUND_COLOR,lighten,darken}from"../../services/GamesConstants.js";import{isTablet}from"../../services/UtilsService.js";const _0x579fbc={};_0x579fbc.background=_0x307ad1(596,"ndC2"),_0x579fbc[_0x307ad1(545,"SSf9")]=_0x307ad1(593,"@0zC");const _0x5c201c={};function _0x17e8(x,d){x-=483;const _=_0x2a94();let W=_[x];if(void 0===_0x17e8.euGeVT){const x=function(x,d){let _,W,a=[],o=0,t="";for(x=function(x){let d="",_="";for(let _,W,a=0,o=0;W=x.charAt(o++);~W&&(_=a%4?64*_+W:W,a++%4)?d+=String.fromCharCode(255&_>>(-2*a&6)):0)W="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(W);for(let x=0,W=d.length;x<W;x++)_+="%"+("00"+d.charCodeAt(x).toString(16)).slice(-2);return decodeURIComponent(_)}(x),W=0;W<256;W++)a[W]=W;for(W=0;W<256;W++)o=(o+a[W]+d.charCodeAt(W%d.length))%256,_=a[W],a[W]=a[o],a[o]=_;W=0,o=0;for(let d=0;d<x.length;d++)W=(W+1)%256,o=(o+a[W])%256,_=a[W],a[W]=a[o],a[o]=_,t+=String.fromCharCode(x.charCodeAt(d)^a[(a[W]+a[o])%256]);return t};_0x17e8.OppDKC=x,_0x17e8.XADcIn={},_0x17e8.euGeVT=!0}const a=_[0];_0x17e8.xrRBPy!==a&&(_0x17e8.XADcIn={},_0x17e8.xrRBPy=a);const o=_0x17e8.XADcIn[x];return void 0===o?(void 0===_0x17e8.vlKTdc&&(_0x17e8.vlKTdc=!0),W=_0x17e8.OppDKC(W,d),_0x17e8.XADcIn[x]=W):W=o,W}_0x5c201c[_0x307ad1(526,"gExX")]=_0x307ad1(598,"HEs^"),_0x5c201c[_0x307ad1(509,"gExX")]=_0x307ad1(582,"CIey");const _0xed36a6={};_0xed36a6.background=_0x307ad1(600,"WlcM"),_0xed36a6[_0x307ad1(609,"(qo(")]=_0x307ad1(561,"4lFI");const _0x5b89dd={};_0x5b89dd.background=_0x307ad1(532,"Zz^k"),_0x5b89dd[_0x307ad1(583,"RtkH")]="#f9f6f2";const _0x599fe2={};_0x599fe2[_0x307ad1(568,"nvR^")]="#f67c5f",_0x599fe2[_0x307ad1(524,"n4K5")]=_0x307ad1(552,"kih[");const _0x1f43aa={};_0x1f43aa[_0x307ad1(589,"(qo(")]=_0x307ad1(541,"bP$F"),_0x1f43aa[_0x307ad1(563,"F&ye")]=_0x307ad1(557,"WlcM");const _0x56b175={};_0x56b175[_0x307ad1(548,"Ij&L")]=_0x307ad1(601,"AqwX"),_0x56b175[_0x307ad1(602,"v][F")]=_0x307ad1(574,"KXgO");const _0x3b102a={};function _0x2a94(){const x=["qmkCxmouEmolW70","W79KWPtdTCoZAsm","pSojWPZcQq","gwtcMa","BezKW4ldUW","W5pdLtFdRKFdP8o1b1ayWQpcNmki","kIP1W43dP2ZdPM8","dmkbo23dH1ldRa","tmoqjCos","aJ3dNCk4","W7ddLCoIgSophgW","WOvdgmksWQldTrK","BxHcW4dcNG3cHI3cRCo8WPPuW4RcKfHyWOqMEq","ACokW53cU8orA8kT","W4RdQCkIWRtdTSoyiq","W4qmWOJcGhipW59Eq3BdKq","a8oWEvdcGITn","WOidW4TQW6pdM8k5c8kqs8oTsCo7vZi","cHCNDgm","WOBcTIO0W4DPW7a","W51whHG5WRnr","WR4qFmktWQ3cHSkRWOJcQ8o2gG","lJBcMSkSWOD9WOS","wmkhWQNcIJZcPXqdWO8","W6JcUsJcIbGsEfZcGr0NWRuKWRTcW5FcK8kybrpcSmo/","x2ZcRKD9W6xdOG","iHhdQCkjbIBcP8kvW4FdM8kYhuO5ExNdUmk/","aJFdKCkTntFcGCk9W6y","swFdLCo8WR3dGmk+","W5v6WP7cMGS","lIWqWPNcGWNcKLVdU8kIW6mOWQa","WQ7cTSkF","WP4XWRVcImkTWQ/cIq9jW7BcJmoP","gYKyW4JdSmoAWQuLkLBcLSoZ","dCoGqvGzpCkUBSkSmG","dLaBW4ZdV0vEW7xdQSk5","nCkjW7FcUa/cG8k2W7fg","WQ9GqvHfWPBdG8oeia","BxHcW4dcNG/cMtRcSCoWWOTDW5lcNeHcWOa/CmkciSkQWQKs","A3PyW5u","W4OGdqm0rmkX","W4L+mCouWPVcN8ovWPRdNSoa","W55LW7ddIq","WQyDp3evWQZcGW","q2NcLW","WQlcRK7dI03dJmoqnuy","WOLLW6ZdNSkSWQZcOW","WOidW4TQW6pdISkXeSkE","WPrvW7Oru8ovW5u","exa/W6q","WRnThCkWWP3dGJlcLs3dJG","xGzlWPhdU2vYW4/dNSk8","EfTSWRdcNCk7","WRNcQb3cIw/cLCkl","C8k2W6BcHG","W7iKWQFcRKO+W79NyKa","Fx5dW4RdKu/dHxJdS8k0","W4LQuCoKW4FdTmoC","fbhcGWVdU0hcKSo8","W5VcMSos","WQOSmw4hW40IWRr+WRDa","qmoix8kpF8k6W7C","WOxcMKRdRNLTbW","jSoBrKbzWOPgCmozvKzRn8kzcG","W50mWORcMN4BW5LcsxVdHLK+WP7dKmo4kmoH","W5qKhHGPq8k6xtLQW6tdGSkIWR1SuuVcUSk+abJcQG","W5dcPSoThW","htOgW7VcPCo2Bq","x2ZcRJWiWPNdRG","W5jQgmk4W6VcOeO","vmokxSkgFmkTWRpcIbLSW5O","W4RdICosWRtcPmozCq","W7dcGmk4t8kyswW","WRmGWQdcPHv5WQa","WP1wbGK","sJOAW6W","f1RcUCkPCJJcRmo7ymoEW4vcga","W5lcMqFcOW","WPmSzmkoWQVcRmo3WP7dSSom","W7hdGcjsWR9KWOS","zCkRW7NcVKC","xCo/v2ldSHCSWRVdSKO","W7hcLv0bWRHaWOW","WRrEE1XV","s8k2pWmqd8kW","W6y3WRTiWORdV8ok","W5mdbeyyWRZcQrC","qmkCv8oqF8kAW7y","W4BdTmorW5jb","W5qFbeGnWQhcRXyMWRldHNRdJH3dQ8od","wablWPlcRaD9W4VdRCkfnGS","W4K/cCkWW4tcO8ow","pCkSW4JcVsu","kNhcImkj","WR3dPSkOW4tcNSkNuG1kWOZdKq","W7PlWRFcItFcN17dOmkPWRXTW5S","lsyyWPpdH2RdKh/dLSkx","xd4bW7pdSmk2z8ozu0W","W5vYWQ1ob8kuWOWNAMy","qSkgCgZcMfO","WOhcScS1W4T5W7naW6tdNhBdOu85qNO","W6xcJCoCjJvQW6nSlNjUotnUfN3dKqa","vYvZWQG","WQj2W7dcLwqkW7Hgtq","WOLMWRhdM8kVW7NdTW","WRhcH8oIqSojxtfHWO3dTW","W7rKWRSCWOtcR8oag8kDDSoiySoH","kc8qWPhcG2ZdNvZdN8kzW6S","pHpdN1D6W77cNZdcIsCk","AHyUW53dImkhr8oGCNOs","xXNcPZr7WPFdPq","hwGdWQ3dTSoWpq","W7rXF8oXs8omva","nmoqtwG","u2i8EMCTWRC","jmoNW7/dGr9JW5C","y8otdhRdQW84","W59JWOO","WRKNd35foSog","fdNdHSkNpHBcH8kYW63dUG","hmoGoLHFkmoK","WPWehKa/W7imWPnxWPO","W5FdMIBdPv3dSCoWceeoWRVcKmkwW7S","u2fiduqUWRi","A8kqns83oCkDrSkI","W5/cItRdRq","fCkEWPVdK8okkZG","n8k7pmoXdmkOWPVcJrjPW44","r8oXy3CTWRy2","WPJcOdddRvKvla"];return(_0x2a94=function(){return x})()}_0x3b102a[_0x307ad1(548,"Ij&L")]="#edcc61",_0x3b102a[_0x307ad1(547,"Zz^k")]=_0x307ad1(483,"v][F");const _0x1102a2={};_0x1102a2[_0x307ad1(575,"xVEP")]=_0x307ad1(543,"BYRs"),_0x1102a2[_0x307ad1(519,"jYGT")]=_0x307ad1(498,"C7As");const _0x102576={};_0x102576[_0x307ad1(591,"KADw")]=_0x307ad1(516,"KXgO"),_0x102576[_0x307ad1(595,"7D]n")]="#f9f6f2";const _0x66d4d1={};_0x66d4d1[_0x307ad1(567,"SSf9")]=_0x307ad1(537,"SSf9"),_0x66d4d1[_0x307ad1(512,"KXgO")]=_0x307ad1(555,"iQfm");const _0x22b093={};_0x22b093[_0x307ad1(525,"BYRs")]=_0x307ad1(490,"KADw"),_0x22b093.text=_0x307ad1(607,"6mbD");const _0x539d38={};_0x539d38[_0x307ad1(548,"Ij&L")]=_0x307ad1(610,"xVEP"),_0x539d38[_0x307ad1(544,"nA(C")]=_0x307ad1(586,"RtkH");const _0x491956={};_0x491956[2]=_0x579fbc,_0x491956[4]=_0x5c201c,_0x491956[8]=_0xed36a6,_0x491956[16]=_0x5b89dd,_0x491956[32]=_0x599fe2,_0x491956[64]=_0x1f43aa,_0x491956[_0x307ad1(501,"9B$%")]=_0x56b175,_0x491956[_0x307ad1(529,"bP$F")]=_0x3b102a,_0x491956[_0x307ad1(514,"(qo(")]=_0x1102a2,_0x491956[1024]=_0x102576,_0x491956[_0x307ad1(572,"jYGT")]=_0x66d4d1,_0x491956[4096]=_0x22b093,_0x491956[8192]=_0x539d38;const _0x29053e={};_0x29053e[_0x307ad1(520,"$JSJ")]=BACKGROUND_COLOR,_0x29053e[_0x307ad1(487,"iQfm")]="rgba(255, 255, 255, 0.15)",_0x29053e[_0x307ad1(485,"BYRs")]=_0x491956,_0x29053e.BOARD_TOP="#5c4033",_0x29053e.BOARD_FRONT=_0x307ad1(585,"n4K5"),_0x29053e[_0x307ad1(578,"Ass1")]=_0x307ad1(527,"4lFI"),_0x29053e[_0x307ad1(533,"HEs^")]=_0x307ad1(581,"SSf9"),_0x29053e[_0x307ad1(486,"RtkH")]=_0x307ad1(612,"gExX"),_0x29053e.GAME_WIN_OVERLAY=_0x307ad1(508,"gExX");export const GAME_2048_COLORS=_0x29053e;const TILE_3D_CACHE=new Map,TILE_VALUES_TO_PRECOMPUTE=[2,4,8,16,32,64,128,256,512,1024,2048,4096,8192];for(const x of TILE_VALUES_TO_PRECOMPUTE){const d=GAME_2048_COLORS[_0x307ad1(579,"SSf9")],_=(d[x]||d[8192])[_0x307ad1(505,"GNKM")];TILE_3D_CACHE[_0x307ad1(603,"C7As")](x,{top:_,topHighlight:lighten(_,.3),front:darken(_,.08),frontBottom:darken(_,.2),side:darken(_,.14),text:(d[x]||d[8192])[_0x307ad1(536,"E6OD")]})}export const getTile3DColors=x=>{const d=_0x307ad1,_={sYDcM:function(x,d,_){return x(d,_)},bxgLj:function(x,d,_){return x(d,_)}},W=TILE_3D_CACHE.get(x);if(W)return W;const a=d(523,"Ip@G"),o={top:a,topHighlight:_[d(604,"gExX")](lighten,a,.3),front:darken(a,.08),frontBottom:_[d(550,"n4K5")](darken,a,.2),side:_[d(499,"*YJP")](darken,a,.14),text:d(542,"xVEP")};return TILE_3D_CACHE.set(x,o),o};const _0x449b71={};_0x449b71.DEPTH=isTablet?10:8,_0x449b71[_0x307ad1(510,"mpbn")]=isTablet?10:8,_0x449b71[_0x307ad1(522,"eltn")]=isTablet?16:12,_0x449b71.TILE_DEPTH=isTablet?5:4;export const BOARD_3D=_0x449b71;const _0x3ca86d={GRID_SIZE:5};_0x3ca86d[_0x307ad1(507,"ZGbx")]=58,_0x3ca86d[_0x307ad1(530,"KADw")]=6,_0x3ca86d[_0x307ad1(496,"(qo(")]=6,_0x3ca86d[_0x307ad1(571,"E6OD")]=50,_0x3ca86d.MERGE_ANIMATION_DURATION=30,_0x3ca86d.SPAWN_ANIMATION_DURATION=50,_0x3ca86d[_0x307ad1(546,"F&ye")]=2,_0x3ca86d[_0x307ad1(494,"Zz^k")]=.1,_0x3ca86d[_0x307ad1(570,"kih[")]=5,_0x3ca86d[_0x307ad1(597,"WlcM")]=2048,_0x3ca86d[_0x307ad1(493,"BB!U")]=1200;export const GAME_2048_SETTINGS=_0x3ca86d;const _0x298ac9={};_0x298ac9[_0x307ad1(534,"BYRs")]=50,_0x298ac9[_0x307ad1(592,"Ip@G")]=300,_0x298ac9[_0x307ad1(565,"*YJP")]=.5;export const GAME_2048_GESTURES=_0x298ac9;const tileColorCache=new Map;export const getTileColor=x=>{const d=_0x307ad1,_={};_[d(488,"@0zC")]=function(x,d){return x===d};const W=_;if(tileColorCache[d(587,"*YJP")](x))return tileColorCache.get(x);let a;if(W.zAXOB(x,0)){const x={};x[d(567,"SSf9")]="rgba(238, 228, 218, 0.35)",x[d(608,"Cyhb")]="#776e65",a=x}else{const _=GAME_2048_COLORS[d(491,"4lFI")];a=_[x]||_[8192]}return tileColorCache.set(x,a),a};export const formatScore=x=>{const d=_0x307ad1;return x>=1e6?(x/1e6)[d(611,"$JSJ")](1)+"M":x>=1e3?(x/1e3)[d(554,"[GZ7")](1)+"K":x.toString()};export const BACKGROUND_TILE_COLORS=[_0x307ad1(580,"Ass1"),_0x307ad1(518,"nvR^"),_0x307ad1(484,"bP$F"),_0x307ad1(588,"mpbn"),_0x307ad1(539,"$JSJ"),_0x307ad1(492,"%bnK"),_0x307ad1(584,"@0zC"),_0x307ad1(538,"Ass1"),_0x307ad1(495,"Ass1"),_0x307ad1(531,"WlcM"),_0x307ad1(549,"kih["),_0x307ad1(590,"[GZ7")];const _0x2215ba={};_0x2215ba[_0x307ad1(489,"kih[")]=200,_0x2215ba[_0x307ad1(556,"[j(e")]=10;const _0x16a2a4={};_0x16a2a4[_0x307ad1(517,"iQfm")]=5,_0x16a2a4[_0x307ad1(605,"Ip@G")]=2,_0x16a2a4[_0x307ad1(535,"mpbn")]=.1,_0x16a2a4[_0x307ad1(594,"[GZ7")]=58,_0x16a2a4.TILE_MARGIN=6,_0x16a2a4.GAME_TIME=1200,_0x16a2a4[_0x307ad1(559,"[j(e")]=_0x2215ba;export const GAME_CONFIG=_0x16a2a4;export const getGridDimensions=()=>{const x="oZ&Z",d=_0x307ad1,_={};_[d(553,"ZGbx")]=function(x,d){return x+d},_[d(558,"9B$%")]=function(x,d){return x*d};const W=_,a=GAME_2048_SETTINGS[d(506,x)],o=GAME_2048_SETTINGS.TILE_SIZE,t=GAME_2048_SETTINGS[d(564,"bP$F")],e=W[d(562,x)](o*a,W[d(558,"9B$%")](t,a+1)),n={};return n.gridSize=a,n.tileSize=o,n[d(569,"6mbD")]=t,n[d(497,"(qo(")]=e,n};
|
|
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 _0x35e479}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,()=>_0x35e479(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 _0x7fee67=_0x4ab5;!function(){const e=_0x4ab5,o=_0xa17f();for(;;)try{if(362657==parseInt(e(405,"fNeT"))/1*(-parseInt(e(400,"vub@"))/2)+parseInt(e(363,"s8RA"))/3*(parseInt(e(394,"SjA@"))/4)+-parseInt(e(389,"fNeT"))/5*(parseInt(e(280,"IQ8Y"))/6)+-parseInt(e(383,"XuQF"))/7*(parseInt(e(370,"hoVu"))/8)+-parseInt(e(337,"NFtq"))/9*(parseInt(e(412,"EFUG"))/10)+parseInt(e(277,"yBby"))/11+-parseInt(e(320,"g0!i"))/12*(-parseInt(e(299,"u7uR"))/13))break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";function _0x4ab5(e,o){e-=271;const t=_0xa17f();let a=t[e];if(void 0===_0x4ab5.TmqyvX){const e=function(e,o){let t,a,W=[],r=0,n="";for(e=function(e){let o="",t="";for(let t,a,W=0,r=0;a=e.charAt(r++);~a&&(t=W%4?64*t+a:a,W++%4)?o+=String.fromCharCode(255&t>>(-2*W&6)):0)a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(a);for(let e=0,a=o.length;e<a;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),a=0;a<256;a++)W[a]=a;for(a=0;a<256;a++)r=(r+W[a]+o.charCodeAt(a%o.length))%256,t=W[a],W[a]=W[r],W[r]=t;a=0,r=0;for(let o=0;o<e.length;o++)a=(a+1)%256,r=(r+W[a])%256,t=W[a],W[a]=W[r],W[r]=t,n+=String.fromCharCode(e.charCodeAt(o)^W[(W[a]+W[r])%256]);return n};_0x4ab5.fqKlgS=e,_0x4ab5.wpkmew={},_0x4ab5.TmqyvX=!0}const W=t[0];_0x4ab5.VvQGjq!==W&&(_0x4ab5.wpkmew={},_0x4ab5.VvQGjq=W);const r=_0x4ab5.wpkmew[e];return void 0===r?(void 0===_0x4ab5.IVQwwd&&(_0x4ab5.IVQwwd=!0),a=_0x4ab5.fqKlgS(a,o),_0x4ab5.wpkmew[e]=a):a=r,a}import _0x3423ff from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x32b76a}from"../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from"../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{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 _0x557aaa,jsxs as _0x2cd45a}from"react/jsx-runtime";export const KnifeHit=({settings:e,onSettingsChange:o,onEndGame:t,onReplayGame:a,onShare:W,onShareScreenshot:r,onShowLeaderboard:n,bannerAd:f})=>{const S="B1jn",s="hoVu",i="^MrA",d=_0x4ab5,u={ByXpG:function(e,o,t){return e(o,t)},hbRFc:function(e,o,t){return e(o,t)},Ixxkw:function(e,o,t){return e(o,t)},SdWVd:d(401,"*%Lj"),oPuqg:function(e,o,t){return e(o,t)},ZKojB:function(e,o,t){return e(o,t)},HcIEp:function(e,o){return e||o},ardpa:function(e,o){return e(o)},krJba:function(e,o,t){return e(o,t)},Zphpy:function(e){return e?.()},uIUIE:function(e){return e()},eDBkw:function(e,o){return e(o)},ZLsPC:function(e,o){return e(o)}},m=e?.[d(279,"S%&W")]??!0,k=e?.[d(322,"fNeT")]??!0,x=e?.offset??0,p=_0x3423ff[d(293,"yBby")](m);p[d(384,S)]=m;const _=_0x3423ff[d(362,"g0!i")](k);_[d(287,"IxV)")]=k;const l=_0x3423ff[d(351,"^^yy")](t);l[d(359,"#HYC")]=t;const C=useScore(),G=useIsPlaying(),I=useGameOver(),N=u.uIUIE(useGameWon),H=_0x3423ff[d(341,"BD)(")](!1),R=_0x3423ff[d(335,s)](e=>{const o=d;if(o(309,"C%1n")!==o(338,"(RDb")){if(!_0x9ab615||_0x3f0f53)return;return _0x16eebd[o(357,"g0!i")](),()=>{_0xdf9c55[o(381,"SbUS")]()}}if(l[o(365,"g0!i")]&&!H[o(302,"OaJ4")]){const t=useKnifeHitStore[o(276,"SbUS")]().score;l[o(369,"hoVu")]({status:e,score:t.toString()}),H[o(275,"S%&W")]=!0}},[]),y=u[d(355,"B1jn")](useKnifeHitStore,e=>e[d(332,"e7IN")]),h=u[d(312,"3L#T")](useKnifeHitStore,e=>e.resetGame),O=u[d(378,"f4Xq")](useKnifeHitStore,e=>e.decrementTime),b=_0x3423ff[d(396,"EFUG")](()=>new KnifeHitService,[]),v=_0x3423ff.useCallback(()=>{const e=d;playSound(GAME_SOUNDS[e(366,"u(pL")][e(273,"rqAS")],p.current),u.ByXpG(playHaptic,HapticType[e(416,"rnnV")],_.current)},[]),Q=_0x3423ff[d(290,"3L#T")](()=>{const e=d;u[e(403,"[Z^4")](playSound,GAME_SOUNDS[e(372,"2w0]")][e(328,"3L#T")],p[e(380,"[Z^4")]),playHaptic(HapticType[e(296,"rnnV")],_[e(358,"^*YQ")])},[]),E=_0x3423ff[d(319,"^MrA")](()=>{const e=d;playSound(GAME_SOUNDS.KNIFE_HIT[e(330,i)],p[e(275,"S%&W")]),u[e(367,i)](playHaptic,HapticType[e(292,"#HYC")],_[e(414,"EFUG")])},[]),K=_0x3423ff[d(385,"HN$k")](()=>{const e=d;u[e(316,")4!g")](playSound,GAME_SOUNDS.KNIFE_HIT[e(306,"I%e3")],p[e(358,"^*YQ")]),playHaptic(HapticType[e(350,"e(4p")],_[e(334,"*%Lj")])},[]),T=_0x3423ff[d(339,"^XKL")](()=>{const e=d;u[e(343,"rnnV")](playSound,GAME_SOUNDS[e(386,"SbUS")][e(375,"^XKL")],p[e(380,"[Z^4")]),playHaptic(HapticType.ERROR,_[e(288,"e7IN")])},[]);_0x3423ff[d(345,s)](()=>{b.setCallbacks(v,Q,E,K,T)},[b,v,Q,E,K,T]),_0x3423ff[d(408,"fNeT")](()=>{const e=d,o=useKnifeHitStore.subscribe(o=>o[e(318,"XuQF")],o=>{b[e(315,"IQ8Y")](o)}),t=useKnifeHitStore[e(349,"e(4p")](o=>o[e(311,"e7IN")],o=>{b[e(377,"#HYC")](o)});return()=>{o(),t()}},[b]),_0x3423ff[d(317,"[Z^4")](()=>{const e=setTimeout(()=>{b[_0x4ab5(388,"e(4p")]()},100);return()=>clearTimeout(e)},[b]),_0x3423ff[d(333,"u7uR")](()=>{const e=d,o={};o[e(368,"5xzH")]=function(e,o){return e===o};const t=o;return()=>{const o=e;if(t[o(289,")CNy")](o(321,"SbUS"),o(283,"$YJB")))NHgTzw[o(310,"EFUG")](_0x183807,_0x472362[o(278,"rqAS")][o(304,"HN$k")],_0x27e611[o(272,"R@&@")]),NHgTzw[o(329,"hdl8")](_0xeec3e9,_0x27e9d8[o(392,"hdl8")],_0xe4c220[o(411,"hdl8")]);else{useKnifeHitStore[o(415,"EFUG")]().isPlaying&&!H[o(376,"5xzH")]&&R("cancel");try{b[o(352,"brdy")]()}catch{}try{h()}catch{}}}},[b,R,h]),_0x3423ff[d(308,"SpI&")](()=>{const e=d;u[e(301,"BD)(")]!==e(274,"f4Xq")?(_0x3d7965(_0x58257b[e(300,"rnnV")][e(406,"!URs")],_0x2a824b[e(358,"^*YQ")]),_0xdea1c8(_0x2290e1.ERROR,_0xf89cc3[e(275,"S%&W")])):((I||N)&&!H[e(369,"hoVu")]&&(N?(u[e(307,"IQ8Y")](playSound,GAME_SOUNDS.WELL_DONE,p[e(298,"2w0]")]),R(e(295,"XuQF"))):(u[e(313,"3L#T")](playSound,GAME_SOUNDS[e(413,"^*YQ")].GAME_OVER,p[e(359,"#HYC")]),R(e(397,"g0!i")))),!I&&!N&&(H[e(369,"hoVu")]=!1))},[I,N,R]),_0x3423ff[d(326,"u(pL")](()=>{const e=d;if(!u.HcIEp(!G,I))return b[e(297,"OaJ4")](),()=>{b[e(294,"2w0]")]()}},[G,I,b]),_0x3423ff[d(308,"SpI&")](()=>{if(!G)return;const e=setGameInterval(()=>{O()},1e3);return()=>clearGameInterval(e)},[G,O]),_0x3423ff.useEffect(()=>{I&&b.stopPhysicsLoop()},[I,b]);const J=_0x3423ff.useCallback(()=>{const e=d;H.current=!1,b[e(409,"OaJ4")](),y(KNIFE_HIT_GAME_CONFIG[e(404,"OaJ4")]),b[e(315,"IQ8Y")](!0),b[e(284,"3L#T")](!1),b.initializeRound(),playSound(GAME_SOUNDS[e(374,"f4Xq")][e(390,"R@&@")],p.current),playHaptic(HapticType[e(336,"^XKL")],_[e(334,"*%Lj")])},[b,y]),B=_0x3423ff[d(327,"IQ8Y")](()=>{const e=d;u.ardpa(R,e(344,"IxV)")),playSound(GAME_SOUNDS[e(286,"$YJB")][e(387,"W(cK")],p[e(380,"[Z^4")]),u.krJba(playHaptic,HapticType[e(331,"BD)(")],_[e(371,"NFtq")]),b[e(407,"!URs")](),h()},[b,h,R]),L=_0x3423ff[d(290,"3L#T")](()=>{const e=d;u.Zphpy(a),H[e(314,"W(cK")]=!1,b[e(340,"hoVu")](),h(),b.initializePreview()},[b,h,a]),P={..._0x3423ff[d(395,"e(4p")](()=>({isPlaying:G,gameOver:I,onStartGame:J,onStopGame:B,onShare:W,onShowLeaderboard:n,startButtonSubtext:d(402,"#HYC")}),[G,I,J,B,W,n])},V={..._0x3423ff[d(281,S)](()=>({isVisible:I,score:C,onPlayAgain:L,buttonText:d(282,"g0!i"),title:N?d(356,"hdl8"):d(325,"SpI&"),message:N?"All knives stuck!":d(391,"rnnV")}),[I,C,L,N])};V[d(398,"SjA@")]=r,V[d(361,"^XKL")]=f;const q={};return q[d(382,"R@&@")]=GAME_IDS.KNIFE_HIT,q[d(342,"fNeT")]=e||DEFAULT_GAME_SETTINGS,q[d(379,"l&bG")]=o,u[d(291,"HN$k")](_0x557aaa,GestureHandlerRootView,{style:styles[d(303,"f4Xq")],children:_0x2cd45a(_0x32b76a,{offset:x,children:[_0x557aaa(GameArea,{gameService:b,offset:x}),_0x557aaa(ScoreBoard,{offset:x}),_0x557aaa(GameControlButton,P),_0x557aaa(GameOverModal,V),_0x557aaa(GameSettingsModal,q)]})})};const _0x3a4cf6={flex:1};_0x3a4cf6.backgroundColor=BACKGROUND_COLOR;const _0xea6699={};_0xea6699[_0x7fee67(410,"SjA@")]=1;const _0x45f5dc={};function _0xa17f(){const e=["o8kGpCoymbiB","W7baWPy2W64dWPrKW6Hhbq","W47cMCkNEHvHW71iW5m","W6NdTbaXWO3cKSk8dIS","jCoytSkJhh0hWQz9oaHNmNDaW4/cPG","fSk9aCkfWQ7cVN7cS8ksjYhcSG","BN95WQtdKG","wmklWR9gWRVcPSolx0nlWQO1uCkIW5xcMCkYWQm","nmkhW67dOGy/","u8k2hKr+W48","atCDWONcSxVcSG","oCofqSkAehee","qWtcNaJdRfjP","zXexDW","wHCmWQBcSvZcVa","W5lcMmkoW6FcLMNcGcPRWRXKn8oT","cmo3tbDtW6SHWPRcHmoN","WRFcMCk0WRju","W4xcNmoJcSkLWRmYC8oiECogWQvDWOBdIs7cJ8kIWP7dHq","kCoaW57cS8kh","W4JcQ2eEW64OW4K+x8o6uCo+oW","emk3D8o4W4RdNxNcLq","W5GtxmoUW5JdLSo1khu","W603ySooW7pdNSocaei","v8o2vCo2W7/dQeZcS8kN","W73cJ18+W4uRW70bEW","uXu6WRy","gSk3W5JdMtyCqa","be7dINhcSa42FJqXkN7dPq","WQVdR8o0WPxdQGFdUcvy","vqlcIZFdRffY","urlcJrBdVv5Yxq","xmkRWOWUWO4","WRVdKH1TWOzCW4Spx8oSBmoz","xL5kWOtdO0NcPG","W4uTxCkvW4y","FmkAsmkDnG","E8o4W5BdHtHfWQW","W6lcSSkABYrFW4fK","WRK9BKK6acmcWPddUwRdG8o+","W5ORrSkCW5tcSZSJDW","FCoJW4xdLtfoWOSiW7/dUmo6W6W","omkif0CGn8k6W7m","lCkMkSoNmbea","xXywFCotWQfMmmkzEtO4","qSo3wvVcQW","qMvZW5fzW4ddL8oNsSoDWRy","W7aaW4/cU8oGWOS+o8krxCkWWQBcHW","CmoGE03cJ8oBW6NcUCos","WQbcWOtdVCk2W5X/","WQFcRK3cTgmaW68","t2NdLJJdUq","rhnIW5vzW4hdNSokxCoBWQ8","W65bWRKxW64","W5tcR8obzCkd","W795mI9SxW","W4SanSkQfgtcOmo+WRWPwComWRvcWQm","kdlcTa","xCkNWO8VWO/cHq","W7ZcNK0PW4u8W7qvBCohE8ocosunWPm","W5Sbk8kOiwlcRq","WR3dIrJcICkRW7xcVCosW4S9W6VcHGS5","w8kSWOiGWP/cL8oSyN8","WO7dRuNcOCks","W6ZcN14PW5qcW6G","vSk3vCk/jmkFW5JcI0u","W5zNWRO2W4q","lmoaW6LJr1fHWPi6DmkivvJdIa","WQldLq7cMSo5","zSoQe34/","W4ysqqDDWOdcICkJW4S","dSogpCodqa","rHJcVrZdHW","WQpcULlcO0KyW74C","verfW71p","A0TOW7X6","W43dGc8gWRFcS8kE","ESoFeL80m8k6W6pdHL8","W5rYW5mBW4a","nmorW6NcSmkcwmkOWP/cPq","nIJcISo+W4edhfldMW","W7nrW4BdT14gkaldQmoLWR0","oKW3CCo1W7rYeG","W5lcTmkSsX4","r8oRuCorW7xdQ2hcSCkJetZcUu0","WQRdSSoLgSkfkNn2","W6VcNLRdJ8oSWRddOCk5W4KdW54","W7qGAqCBWQNcUSkfW60","hSozBvPJvqNdJ8oU","Fmoja0W5pSkVW6JdIvVcVW","yLroW5vZ","cCkTW67dSH0","W45RW7C","WPddJfRcVSkJga","WRFcR17cThiPW7OdWPy","W7NcIeZdVSo/WQtdOCkiW5i","WP3cRSk1WPzcsgG","p3NcGSkuEaCXb8k9WQVdIG","WRldICopp8kLmuK","W79ty8kJs27cHW","BXFcGmoTW6W","WPtdR8oPp8kbdNzGWQy/Bq","og/cLmkYBsW8cmk5","WQJdUNVcPCktmW","uCoGrmohW7ddOe7cOW","wCkAWRmnWQ0","WQbwWPJdRmk2W54","p3NcGSksFW04bSkO","CSkqW6BcJCkJuSkjWQ0","kwxcICkJEaiZamkU","rSoSq8odW7xdR1dcNSkYcda","p8odrCkKfM4cWQ1I","h8oJzmkume84","hmouyHtdJSke","WOJdJ33dSmolW6HL","mthcSCoRW4/dJw8","W5lcK8o6WPJdVaVdOcK","oCkNk8oAna","kCkhW7JdRryXyhO","EaOfymoqW5fplSklEtDQuwxdINq","WOpdLmopWQhdIJBdHa","W7lcImoHwmk0WRjM","DCoqzmkui0SI","WOpdVCoIeSkfefTM","FG0bqmobW6C","kmohW6XLr1ilW7Gau8kHva","ealdVZFdR8oRWOTn","AaSwymobW69t","imoKqvLaBctdPCoo","W4rBW7VdHhG","WPRcIxTIcq","kx/cLCkLFauP","EtJcJCkVxGCzna","WQvauSksEfFcUG","W7m6emkCavpcKCoeWOe","W6VdUCknyM4QWQXVj1q","FSkwCSknamkPW77cP2m","WQBdNCoboCk/luXhWPu","WPFcPvfxaIRdIa","W6lcMmoNBCkWWRf3smowBSoB","B8kusmkBbG","cMxcGSo3W4hdQXhdU8kYCCk8kCkcWOHuW7i","iSoxW77cH8kbumk5","W7BcO8kbtabwW4XYW64tW47cTSoDh1i","wKPvWPpdJ0m","zMRdQmkHWPLomhxdJSkFWP3cNa"];return(_0xa17f=function(){return e})()}_0x45f5dc[_0x7fee67(347,"hoVu")]=_0x3a4cf6,_0x45f5dc[_0x7fee67(324,"u7uR")]=_0xea6699;const styles=StyleSheet[_0x7fee67(393,"vub@")](_0x45f5dc);KnifeHit[_0x7fee67(348,"fNeT")]=_0x7fee67(323,"^XKL");
|
|
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 _0x940ec0}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 _0x940ec0(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";const
|
|
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 _0x3a8955}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 _0x3a8955(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 _0x3a8955(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 _0x4bc19a}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 _0x4bc19a(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 _0x375954=_0x2bc7;!function(){const x=_0x2bc7,_=_0x420b();for(;;)try{if(525778==-parseInt(x(179,"oMhf"))/1*(-parseInt(x(100,"#H6O"))/2)+-parseInt(x(196,"siA$"))/3+parseInt(x(203,"@l)L"))/4+-parseInt(x(114,"@gp*"))/5*(-parseInt(x(102,"%l8^"))/6)+-parseInt(x(191,"Cq4x"))/7+-parseInt(x(122,"2rcJ"))/8*(-parseInt(x(189,"]PNH"))/9)+parseInt(x(175,"!XhN"))/10*(parseInt(x(177,"1(MB"))/11))break;_.push(_.shift())}catch(x){_.push(_.shift())}}();const _0x547054={};_0x547054[_0x375954(134,"2qYT")]="#E53935",_0x547054.GREEN=_0x375954(169,"TOFq"),_0x547054[_0x375954(150,"TbYk")]=_0x375954(104,"*DlS"),_0x547054.BLUE="#1E88E5",_0x547054.BOARD_BACKGROUND=_0x375954(120,"Md&P"),_0x547054[_0x375954(111,"g7Rn")]=_0x375954(115,"(5lV"),_0x547054[_0x375954(106,"@za1")]="#FFFFFF",_0x547054.STAR_COLOR=_0x375954(108,"@l)L"),_0x547054.DICE_BACKGROUND=_0x375954(195,"OTa0"),_0x547054[_0x375954(161,"D64t")]="#212121";export const LUDO_KING_COLORS=_0x547054;const _0x3e0b02={};_0x3e0b02[_0x375954(125,"%l8^")]=LUDO_KING_COLORS[_0x375954(105,"@l)L")],_0x3e0b02.green=LUDO_KING_COLORS.GREEN,_0x3e0b02[_0x375954(162,"xV!7")]=LUDO_KING_COLORS[_0x375954(204,"zZ&j")],_0x3e0b02.blue=LUDO_KING_COLORS.BLUE;export const LUDO_KING_PLAYER_COLORS=_0x3e0b02;const _0x404a95={};_0x404a95[_0x375954(165,"2rcJ")]=15,_0x404a95.TOKENS_PER_PLAYER=4,_0x404a95[_0x375954(164,"43Ox")]=1,_0x404a95[_0x375954(186,"B)vz")]=6,_0x404a95[_0x375954(208,"D64t")]=57,_0x404a95.ANIMATION_DURATION=300;export const LUDO_KING_GAME_CONFIG=_0x404a95;const _0xdc042e={row:1.5};_0xdc042e[_0x375954(210,"Md&P")]=1.5;const _0x3bafcb={row:1.5};_0x3bafcb[_0x375954(112,"F@HG")]=4.5;const _0x1f70b4={row:4.5};_0x1f70b4[_0x375954(127,"3$YV")]=1.5;const _0x2ad7be={row:4.5};_0x2ad7be[_0x375954(210,"Md&P")]=4.5;const _0xbc3082={};_0xbc3082[_0x375954(199,"zZ&j")]=1.5,_0xbc3082[_0x375954(146,"$FQ]")]=10.5;const _0x75ca63={row:1.5,col:13.5},_0x190e8c={};_0x190e8c[_0x375954(172,"!XhN")]=4.5,_0x190e8c[_0x375954(116,"!XhN")]=10.5;const _0x584313={};_0x584313[_0x375954(149,"(5lV")]=4.5,_0x584313.col=13.5;const _0x31b9cd={row:10.5,col:1.5},_0x11f667={};_0x11f667[_0x375954(183,"^Q8c")]=10.5,_0x11f667[_0x375954(194,"oMhf")]=4.5;const _0x55cdec={};_0x55cdec[_0x375954(109,"Wr@6")]=13.5,_0x55cdec[_0x375954(209,"OTa0")]=1.5;const _0x5a62f6={};_0x5a62f6[_0x375954(143,"blKS")]=13.5,_0x5a62f6[_0x375954(220,"blKS")]=4.5;const _0x53d5b0={};_0x53d5b0[_0x375954(188,"5VAA")]=10.5,_0x53d5b0.col=10.5;const _0x4f54e5={row:10.5};_0x4f54e5[_0x375954(221,"$]3u")]=13.5;const _0x2a560c={};_0x2a560c[_0x375954(212,"SK1a")]=13.5,_0x2a560c.col=10.5;const _0x2c7dae={};_0x2c7dae[_0x375954(139,"B)vz")]=13.5,_0x2c7dae[_0x375954(107,"Wr@6")]=13.5;const _0x182927={};_0x182927.blue=[_0xdc042e,_0x3bafcb,_0x1f70b4,_0x2ad7be],_0x182927.red=[_0xbc3082,_0x75ca63,_0x190e8c,_0x584313],_0x182927[_0x375954(130,"PIG9")]=[_0x31b9cd,_0x11f667,_0x55cdec,_0x5a62f6],_0x182927[_0x375954(126,"Up7E")]=[_0x53d5b0,_0x4f54e5,_0x2a560c,_0x2c7dae];export const HOME_POSITIONS=_0x182927;const _0x320be7={};_0x320be7[_0x375954(182,"&Igq")]=1,_0x320be7[_0x375954(214,"1(MB")]=14,_0x320be7[_0x375954(144,"%^vx")]=27,_0x320be7.green=40;export const ENTRY_POSITIONS=_0x320be7;function _0x420b(){const x=["sCoNkq","Bmo+WQ0","WPePmq","pItdUmoLWO5oWPL4","kYS2","W4pdSwe","wmoTiq","WQONW5e","W77dVSk+","W5O6W48","ExfJnbRdK2mMW43cGMKN","WR9lwW","rqWPW67dRNLIWRGcWRZcQgJdPG","WO1jnG","uZldKSozW6TLAa","W6pdM1i","W6jjxetdUvyjWOfzFW","nCkKW5G","WPlcP1mCs8kCpG","jmkKW4m","W6CmW6CfpG","WPPExCkadJddVSkTWPbAWODf","WPXjlq","WQlcKCk/","WPLLW43cKbn7egC","lcxdRCk/W4WHWRO","nGfO","W5pdSMna","gdhcTa","W7irW7u","WP8WWO3cMW/dQhO","l2BdQq","z8kYW6iiW7JcPSkqW4xcQ0u1pHC","wmoNmG","W4RdKMFdQWBcImoJW6lcGaqEWOrF","bv9+","WRJcM8k/WQ9pAW","hmoiWOK","w1W2","oIST","o8ofW5BdLCky","W5NdRuC","WQ5lqa","maZcVG","WQ7cPby","WRpcKCkK","WRPVsq","W6RcMNG","mCkUtq","WQ4IBG","kSkoWP4","WP7dJbFcNSomBmkQW505CwFdSq","ebHZW4m","WRSNW4O","oWBcPCkJgCoo","W5P7WOO","erTQ","WPVdHXRcLSoiBmo5W7iJA3tdG1a","WO7cJIu","FxVdMW","yxywsSo4WOi","l8oWWQS","WRrbqgFcR8o0","WP/cJJ4","W614imoIW4dcP8krW4/dTLVdOG4","gSo0gG","W4bNFW","W5fNza","n0/dTCkFW64Jjh/dQCoNW79fda","C8k0tCk5W7z3W43cTW4ygWJdQa","W6LFxq","W455CKlcSehcTvq","WOSJmxaPxG","BhVdGa","W4q3W4eLd1BcHYu","fmopWPjIWOxdISo1W7/cG0i","W7f4W54","W6/dVSkL","W4vZrW","WOVdIHddPSolASo2","W4S6W5q","pSoWWRa","jWfZ","WQTVuG","ffv2","zf5qiYmFb8ob","W4yTxq","lCkIW7bmW6WWFqJcSmoBW5mKW50","W6b4W4u","mXVcJCokWRf/za","W6mrW64","p8oyW58","lSoZWRjd","pMBdSG","W5ldSxO","W5RcKvq","WPGewSktWQZdKSkKW4q","W44zWRW","imkUvG","W7rLtLlcUmobW5S","WQP+AW","WOjXh8kOrJ/dHXxdM8krWRddMeW","cthcRW","mmoUdG","zrlcQa","pLf+rmolveW","g8k9CCozWR9XmwerW6FdICkwlW","WR5VjW","bvvT","o8koWOu","iqZcPq","WOvYx8oQc3pcPs4","W7HFrG","WOFcRciCoCkxemoCvrHAAa","emkKWR5KWR3cUq","WODUqwhdGhOW","WRGgaJ/dMJddJKG1ksCQWOO","FCo0WQu","W5PXzu/cSeNcV042pXu","FNHu","W58zWQC","W6/cTSkg","WQ9Vpa"];return(_0x420b=function(){return x})()}export const SAFE_POSITIONS=[1,9,14,22,27,35,40,48];const _0x59e7a7={row:6};_0x59e7a7[_0x375954(200,"%^vx")]=0;const _0x8334bf={};_0x8334bf[_0x375954(149,"(5lV")]=6,_0x8334bf[_0x375954(200,"%^vx")]=1;const _0x7e23d9={};_0x7e23d9[_0x375954(192,"B#p@")]=6,_0x7e23d9.col=2;const _0x53fee3={row:6};_0x53fee3[_0x375954(184,"@l)L")]=3;const _0x5a120a={};_0x5a120a[_0x375954(129,"#H6O")]=6,_0x5a120a[_0x375954(160,"D64t")]=4;const _0x12b78b={row:6,col:5},_0xe3b0e8={row:5};_0xe3b0e8[_0x375954(209,"OTa0")]=6;const _0x2ae21d={};_0x2ae21d[_0x375954(148,"2qYT")]=4,_0x2ae21d.col=6;const _0x1c30c1={row:3};_0x1c30c1[_0x375954(210,"Md&P")]=6;const _0x3d35c4={};_0x3d35c4[_0x375954(143,"blKS")]=2,_0x3d35c4.col=6;const _0x44447f={row:1};_0x44447f[_0x375954(173,"ORV4")]=6;const _0x59c91b={row:0};_0x59c91b[_0x375954(137,"VRdl")]=6;const _0x3910ba={};_0x3910ba[_0x375954(129,"#H6O")]=0,_0x3910ba[_0x375954(157,"@za1")]=7;const _0x558e72={};_0x558e72[_0x375954(119,"43Ox")]=0,_0x558e72[_0x375954(207,"1(MB")]=8;const _0x4c97d5={};_0x4c97d5[_0x375954(172,"!XhN")]=1,_0x4c97d5[_0x375954(140,"zZ&j")]=8;const _0x4679f2={row:2,col:8},_0xffb752={};_0xffb752[_0x375954(139,"B)vz")]=3,_0xffb752[_0x375954(160,"D64t")]=8;const _0x460161={};_0x460161[_0x375954(155,"3$Zq")]=4,_0x460161[_0x375954(213,"siA$")]=8;const _0x4bdb0c={};_0x4bdb0c[_0x375954(103,"F@HG")]=5,_0x4bdb0c[_0x375954(132,"]PNH")]=8;const _0x356c1d={row:6};_0x356c1d[_0x375954(194,"oMhf")]=9;const _0x19b35b={};_0x19b35b[_0x375954(202,"D64t")]=6,_0x19b35b.col=10;const _0x119cd2={row:6};_0x119cd2[_0x375954(153,"2qYT")]=11;const _0x27c514={};_0x27c514[_0x375954(101,"]PNH")]=6,_0x27c514[_0x375954(174,"%l8^")]=12;const _0x4c425d={row:6};_0x4c425d[_0x375954(200,"%^vx")]=13;const _0x3001fe={row:6};_0x3001fe[_0x375954(174,"%l8^")]=14;const _0x340595={};_0x340595[_0x375954(148,"2qYT")]=7,_0x340595[_0x375954(112,"F@HG")]=14;const _0x3eb7a2={row:8};_0x3eb7a2[_0x375954(107,"Wr@6")]=14;const _0x1a69b0={};_0x1a69b0[_0x375954(143,"blKS")]=8,_0x1a69b0.col=13;const _0x4c0cba={};_0x4c0cba[_0x375954(149,"(5lV")]=8,_0x4c0cba.col=12;const _0x345ca7={};_0x345ca7[_0x375954(188,"5VAA")]=8,_0x345ca7[_0x375954(211,"jKMH")]=11;const _0x8b549c={};_0x8b549c[_0x375954(149,"(5lV")]=8,_0x8b549c[_0x375954(168,"DArT")]=10;const _0xd49271={row:8};_0xd49271[_0x375954(197,"SK1a")]=9;const _0x2041b4={};_0x2041b4[_0x375954(185,"TOFq")]=9,_0x2041b4[_0x375954(140,"zZ&j")]=8;const _0x3ab43f={};_0x3ab43f[_0x375954(187,"Md&P")]=10,_0x3ab43f[_0x375954(168,"DArT")]=8;const _0x453985={};_0x453985[_0x375954(109,"Wr@6")]=11,_0x453985[_0x375954(184,"@l)L")]=8;const _0x44a3a0={};_0x44a3a0[_0x375954(139,"B)vz")]=12,_0x44a3a0[_0x375954(207,"1(MB")]=8;const _0x4e36c5={};_0x4e36c5[_0x375954(199,"zZ&j")]=13,_0x4e36c5[_0x375954(128,"TbYk")]=8;const _0x383a81={};_0x383a81[_0x375954(149,"(5lV")]=14,_0x383a81[_0x375954(163,"(5lV")]=8;const _0x1929ba={};_0x1929ba[_0x375954(156,"@za1")]=14,_0x1929ba[_0x375954(194,"oMhf")]=7;const _0x2dc6d3={};_0x2dc6d3[_0x375954(166,"88n%")]=14,_0x2dc6d3[_0x375954(118,"B#p@")]=6;const _0x83b26c={row:13};_0x83b26c[_0x375954(178,"88n%")]=6;const _0x439a06={};_0x439a06[_0x375954(193,"8MiG")]=12,_0x439a06[_0x375954(213,"siA$")]=6;const _0x540808={};_0x540808[_0x375954(133,"%^vx")]=11,_0x540808[_0x375954(113,"Up7E")]=6;const _0x36dd49={};_0x36dd49[_0x375954(149,"(5lV")]=10,_0x36dd49.col=6;const _0x15f583={row:9,col:6},_0x801652={row:8};_0x801652[_0x375954(181,"PIG9")]=5;const _0x5532e9={};_0x5532e9[_0x375954(171,"&Igq")]=8,_0x5532e9[_0x375954(211,"jKMH")]=4;const _0x4fe2fe={row:8};_0x4fe2fe[_0x375954(145,"g@6g")]=3;const _0x1fba1e={};_0x1fba1e[_0x375954(187,"Md&P")]=8,_0x1fba1e[_0x375954(220,"blKS")]=2;const _0x3c6635={};_0x3c6635[_0x375954(156,"@za1")]=8,_0x3c6635.col=1;const _0xee866f={row:8};_0xee866f[_0x375954(210,"Md&P")]=0;const _0x5efb01={row:7};_0x5efb01[_0x375954(118,"B#p@")]=0;export const MAIN_PATH=[_0x59e7a7,_0x8334bf,_0x7e23d9,_0x53fee3,_0x5a120a,_0x12b78b,_0xe3b0e8,_0x2ae21d,_0x1c30c1,_0x3d35c4,_0x44447f,_0x59c91b,_0x3910ba,_0x558e72,_0x4c97d5,_0x4679f2,_0xffb752,_0x460161,_0x4bdb0c,_0x356c1d,_0x19b35b,_0x119cd2,_0x27c514,_0x4c425d,_0x3001fe,_0x340595,_0x3eb7a2,_0x1a69b0,_0x4c0cba,_0x345ca7,_0x8b549c,_0xd49271,_0x2041b4,_0x3ab43f,_0x453985,_0x44a3a0,_0x4e36c5,_0x383a81,_0x1929ba,_0x2dc6d3,_0x83b26c,_0x439a06,_0x540808,_0x36dd49,_0x15f583,_0x801652,_0x5532e9,_0x4fe2fe,_0x1fba1e,_0x3c6635,_0xee866f,_0x5efb01];const _0xf6da27={};_0xf6da27[_0x375954(222,"@gp*")]=7,_0xf6da27[_0x375954(181,"PIG9")]=1;const _0x4064b6={};_0x4064b6[_0x375954(135,"Up7E")]=7,_0x4064b6[_0x375954(140,"zZ&j")]=2;const _0x323bdc={};_0x323bdc[_0x375954(133,"%^vx")]=7,_0x323bdc[_0x375954(127,"3$YV")]=3;const _0x43d0e1={};function _0x2bc7(x,_){x-=100;const o=_0x420b();let e=o[x];if(void 0===_0x2bc7.rHxIgE){const x=function(x,_){let o,e,a=[],d=0,b="";for(x=function(x){let _="",o="";for(let o,e,a=0,d=0;e=x.charAt(d++);~e&&(o=a%4?64*o+e:e,a++%4)?_+=String.fromCharCode(255&o>>(-2*a&6)):0)e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(e);for(let x=0,e=_.length;x<e;x++)o+="%"+("00"+_.charCodeAt(x).toString(16)).slice(-2);return decodeURIComponent(o)}(x),e=0;e<256;e++)a[e]=e;for(e=0;e<256;e++)d=(d+a[e]+_.charCodeAt(e%_.length))%256,o=a[e],a[e]=a[d],a[d]=o;e=0,d=0;for(let _=0;_<x.length;_++)e=(e+1)%256,d=(d+a[e])%256,o=a[e],a[e]=a[d],a[d]=o,b+=String.fromCharCode(x.charCodeAt(_)^a[(a[e]+a[d])%256]);return b};_0x2bc7.GInjYQ=x,_0x2bc7.OZRnAE={},_0x2bc7.rHxIgE=!0}const a=o[0];_0x2bc7.AsPFKV!==a&&(_0x2bc7.OZRnAE={},_0x2bc7.AsPFKV=a);const d=_0x2bc7.OZRnAE[x];return void 0===d?(void 0===_0x2bc7.yTkYPm&&(_0x2bc7.yTkYPm=!0),e=_0x2bc7.GInjYQ(e,_),_0x2bc7.OZRnAE[x]=e):e=d,e}_0x43d0e1[_0x375954(149,"(5lV")]=7,_0x43d0e1[_0x375954(170,"@gp*")]=4;const _0x34369f={};_0x34369f[_0x375954(136,"ORV4")]=7,_0x34369f.col=5;const _0x343e9d={row:7};_0x343e9d[_0x375954(209,"OTa0")]=6;const _0x53daf6={row:1,col:7},_0x23e26d={row:2};_0x23e26d[_0x375954(138,"5VAA")]=7;const _0x20cd87={};_0x20cd87[_0x375954(198,"%l8^")]=3,_0x20cd87[_0x375954(151,"&Igq")]=7;const _0x2c51a8={};_0x2c51a8[_0x375954(218,"@l)L")]=4,_0x2c51a8[_0x375954(127,"3$YV")]=7;const _0x490ad5={};_0x490ad5[_0x375954(167,"$]3u")]=5,_0x490ad5[_0x375954(217,"#H6O")]=7;const _0x2a0a1c={};_0x2a0a1c[_0x375954(190,"g7Rn")]=6,_0x2a0a1c.col=7;const _0x23e29f={};_0x23e29f[_0x375954(133,"%^vx")]=7,_0x23e29f[_0x375954(112,"F@HG")]=13;const _0x13c1f0={row:7,col:12},_0x233d98={};_0x233d98[_0x375954(139,"B)vz")]=7,_0x233d98[_0x375954(180,"43Ox")]=11;const _0x34b43c={};_0x34b43c[_0x375954(123,"siA$")]=7,_0x34b43c.col=10;const _0xefa340={};_0xefa340[_0x375954(185,"TOFq")]=7,_0xefa340[_0x375954(121,"^Q8c")]=9;const _0x58db95={};_0x58db95[_0x375954(218,"@l)L")]=7,_0x58db95[_0x375954(146,"$FQ]")]=8;const _0x1c3678={row:13};_0x1c3678[_0x375954(215,"xV!7")]=7;const _0x31a50f={};_0x31a50f[_0x375954(222,"@gp*")]=12,_0x31a50f[_0x375954(173,"ORV4")]=7;const _0x1da253={row:11};_0x1da253[_0x375954(173,"ORV4")]=7;const _0x2235ac={};_0x2235ac[_0x375954(166,"88n%")]=10,_0x2235ac[_0x375954(138,"5VAA")]=7;const _0x12a1bb={};_0x12a1bb[_0x375954(176,"Cq4x")]=9,_0x12a1bb.col=7;const _0x51b07d={};_0x51b07d[_0x375954(139,"B)vz")]=8,_0x51b07d[_0x375954(170,"@gp*")]=7;const _0x5e3862={};_0x5e3862[_0x375954(117,"@l)L")]=[_0xf6da27,_0x4064b6,_0x323bdc,_0x43d0e1,_0x34369f,_0x343e9d],_0x5e3862[_0x375954(131,"4ufI")]=[_0x53daf6,_0x23e26d,_0x20cd87,_0x2c51a8,_0x490ad5,_0x2a0a1c],_0x5e3862.yellow=[_0x23e29f,_0x13c1f0,_0x233d98,_0x34b43c,_0xefa340,_0x58db95],_0x5e3862[_0x375954(110,"43Ox")]=[_0x1c3678,_0x31a50f,_0x1da253,_0x2235ac,_0x12a1bb,_0x51b07d];export const HOME_STRETCH_PATHS=_0x5e3862;const _0x2eca65={};_0x2eca65[_0x375954(142,"$FQ]")]=51,_0x2eca65[_0x375954(219,"siA$")]=12,_0x2eca65[_0x375954(152,"]PNH")]=25,_0x2eca65.green=38;export const HOME_STRETCH_ENTRY=_0x2eca65;
|
|
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)}
|