@nayan-ui/games 1.18.0 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -191
- package/lib/module/assets/fonts/Inter-SemiBold.ttf +0 -0
- package/lib/module/assets/models/explorer/explorer.glb +0 -0
- package/lib/module/assets/models/explorer/params.json +51 -0
- package/lib/module/assets/models/explorer/source.json +222 -0
- package/lib/module/assets/models/play-with-tua/play-with-tua.glb +0 -0
- package/lib/module/assets/models/play-with-tua/sources.json +141 -0
- package/lib/module/assets/sfx/balloon_pop.wav +0 -0
- package/lib/module/assets/sfx/blocked.wav +0 -0
- package/lib/module/assets/sfx/boing.wav +0 -0
- package/lib/module/assets/sfx/bonus.wav +0 -0
- package/lib/module/assets/sfx/boom.wav +0 -0
- package/lib/module/assets/sfx/bump.wav +0 -0
- package/lib/module/assets/sfx/cannon.wav +0 -0
- package/lib/module/assets/sfx/capture.wav +0 -0
- package/lib/module/assets/sfx/card_flip.wav +0 -0
- package/lib/module/assets/sfx/card_place.wav +0 -0
- package/lib/module/assets/sfx/catch.wav +0 -0
- package/lib/module/assets/sfx/chime.wav +0 -0
- package/lib/module/assets/sfx/chomp.wav +0 -0
- package/lib/module/assets/sfx/chomp_alt.wav +0 -0
- package/lib/module/assets/sfx/clack.wav +0 -0
- package/lib/module/assets/sfx/clang.wav +0 -0
- package/lib/module/assets/sfx/clash.wav +0 -0
- package/lib/module/assets/sfx/click.wav +0 -0
- package/lib/module/assets/sfx/coin.wav +0 -0
- package/lib/module/assets/sfx/combo.wav +0 -0
- package/lib/module/assets/sfx/crash.wav +0 -0
- package/lib/module/assets/sfx/crunch.wav +0 -0
- package/lib/module/assets/sfx/dance.wav +0 -0
- package/lib/module/assets/sfx/deselect.wav +0 -0
- package/lib/module/assets/sfx/dice_roll.wav +0 -0
- package/lib/module/assets/sfx/die.wav +0 -0
- package/lib/module/assets/sfx/draw.wav +0 -0
- package/lib/module/assets/sfx/drop.wav +0 -0
- package/lib/module/assets/sfx/eat.wav +0 -0
- package/lib/module/assets/sfx/engine.wav +0 -0
- package/lib/module/assets/sfx/error.wav +0 -0
- package/lib/module/assets/sfx/flag.wav +0 -0
- package/lib/module/assets/sfx/flap.wav +0 -0
- package/lib/module/assets/sfx/flip_disc.wav +0 -0
- package/lib/module/assets/sfx/footstep_run.wav +0 -0
- package/lib/module/assets/sfx/footstep_walk.wav +0 -0
- package/lib/module/assets/sfx/game_over.wav +0 -0
- package/lib/module/assets/sfx/gate.wav +0 -0
- package/lib/module/assets/sfx/hit.wav +0 -0
- package/lib/module/assets/sfx/hop.wav +0 -0
- package/lib/module/assets/sfx/hurt.wav +0 -0
- package/lib/module/assets/sfx/invalid.wav +0 -0
- package/lib/module/assets/sfx/jump.wav +0 -0
- package/lib/module/assets/sfx/ladder.wav +0 -0
- package/lib/module/assets/sfx/land.wav +0 -0
- package/lib/module/assets/sfx/laugh.wav +0 -0
- package/lib/module/assets/sfx/lose.wav +0 -0
- package/lib/module/assets/sfx/merge.wav +0 -0
- package/lib/module/assets/sfx/miss.wav +0 -0
- package/lib/module/assets/sfx/nitro.wav +0 -0
- package/lib/module/assets/sfx/pew.wav +0 -0
- package/lib/module/assets/sfx/place.wav +0 -0
- package/lib/module/assets/sfx/pling.wav +0 -0
- package/lib/module/assets/sfx/point.wav +0 -0
- package/lib/module/assets/sfx/pop.wav +0 -0
- package/lib/module/assets/sfx/pop_soft.wav +0 -0
- package/lib/module/assets/sfx/power_up.wav +0 -0
- package/lib/module/assets/sfx/reveal.wav +0 -0
- package/lib/module/assets/sfx/robot.wav +0 -0
- package/lib/module/assets/sfx/rotate.wav +0 -0
- package/lib/module/assets/sfx/run_steps.wav +0 -0
- package/lib/module/assets/sfx/select.wav +0 -0
- package/lib/module/assets/sfx/shuffle.wav +0 -0
- package/lib/module/assets/sfx/six.wav +0 -0
- package/lib/module/assets/sfx/slice.wav +0 -0
- package/lib/module/assets/sfx/slide.wav +0 -0
- package/lib/module/assets/sfx/snake.wav +0 -0
- package/lib/module/assets/sfx/snap.wav +0 -0
- package/lib/module/assets/sfx/splash.wav +0 -0
- package/lib/module/assets/sfx/star.wav +0 -0
- package/lib/module/assets/sfx/start.wav +0 -0
- package/lib/module/assets/sfx/swoosh.wav +0 -0
- package/lib/module/assets/sfx/tap.wav +0 -0
- package/lib/module/assets/sfx/thud.wav +0 -0
- package/lib/module/assets/sfx/thunk.wav +0 -0
- package/lib/module/assets/sfx/tick.wav +0 -0
- package/lib/module/assets/sfx/time_up.wav +0 -0
- package/lib/module/assets/sfx/tock.wav +0 -0
- package/lib/module/assets/sfx/walk_steps.wav +0 -0
- package/lib/module/assets/sfx/warning.wav +0 -0
- package/lib/module/assets/sfx/whack.wav +0 -0
- package/lib/module/assets/sfx/whoosh.wav +0 -0
- package/lib/module/assets/sfx/win.wav +0 -0
- package/lib/module/assets/sfx/zap.wav +0 -0
- package/lib/module/assets/textures/ad_bolt.png +0 -0
- package/lib/module/assets/textures/ad_bubbles.png +0 -0
- package/lib/module/assets/textures/ad_chevrons.png +0 -0
- package/lib/module/assets/textures/asphalt.png +0 -0
- package/lib/module/assets/textures/bark.jpg +0 -0
- package/lib/module/assets/textures/explorer-atlas.png +0 -0
- package/lib/module/assets/textures/facade.png +0 -0
- package/lib/module/assets/textures/grass.png +0 -0
- package/lib/module/assets/textures/leaves.png +0 -0
- package/lib/module/assets/textures/limestone.jpg +0 -0
- package/lib/module/assets/textures/meadow.jpg +0 -0
- package/lib/module/assets/textures/nature-sources.json +87 -0
- package/lib/module/assets/textures/pine.png +0 -0
- package/lib/module/assets/textures/river.jpg +0 -0
- package/lib/module/assets/textures/soft_glow.png +0 -0
- package/lib/module/games/arrows/Arrows.js +1 -1
- package/lib/module/games/arrows/ArrowsConstants.js +1 -1
- package/lib/module/games/arrows/ArrowsGame.js +1 -0
- package/lib/module/games/arrows/ArrowsScene.js +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterGame.js +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterPhysics.js +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterScene.js +1 -0
- package/lib/module/games/bike-racing/BikeMeshes.js +1 -0
- package/lib/module/games/bike-racing/BikeRacing.js +1 -1
- package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -1
- package/lib/module/games/bike-racing/BikeRacingGame.js +1 -0
- package/lib/module/games/bike-racing/BikeRacingScene.js +1 -0
- package/lib/module/games/block-blast/BlockBlast.js +1 -1
- package/lib/module/games/block-blast/BlockBlastConstants.js +1 -1
- package/lib/module/games/block-blast/BlockBlastGame.js +1 -0
- package/lib/module/games/block-blast/BlockBlastScene.js +1 -0
- package/lib/module/games/block-breaker/BlockBreaker.js +1 -1
- package/lib/module/games/block-breaker/BlockBreakerConstants.js +1 -1
- package/lib/module/games/block-breaker/BlockBreakerGame.js +1 -0
- package/lib/module/games/block-breaker/BlockBreakerScene.js +1 -0
- package/lib/module/games/bluk/Bluk.js +1 -1
- package/lib/module/games/bluk/BlukConstants.js +1 -1
- package/lib/module/games/bluk/BlukGame.js +1 -0
- package/lib/module/games/bluk/BlukRules.js +1 -0
- package/lib/module/games/bluk/BlukScene.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -1
- package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -1
- package/lib/module/games/bubble-shooter/BubbleShooterGame.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterScene.js +1 -0
- package/lib/module/games/candy-crush/CandyCrush.js +1 -1
- package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -1
- package/lib/module/games/candy-crush/CandyCrushGame.js +1 -0
- package/lib/module/games/candy-crush/CandyCrushScene.js +1 -0
- package/lib/module/games/car-racing/CarMeshes.js +1 -0
- package/lib/module/games/car-racing/CarRacing.js +1 -1
- package/lib/module/games/car-racing/CarRacingConstants.js +1 -1
- package/lib/module/games/car-racing/CarRacingFacade.js +1 -0
- package/lib/module/games/car-racing/CarRacingGame.js +1 -0
- package/lib/module/games/car-racing/CarRacingScene.js +1 -0
- package/lib/module/games/car-racing/CarRacingScenery.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRun.js +1 -1
- package/lib/module/games/chameleon-run/ChameleonRunBackdrop.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunConstants.js +1 -1
- package/lib/module/games/chameleon-run/ChameleonRunGame.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunMeshes.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunRules.js +1 -0
- package/lib/module/games/chameleon-run/ChameleonRunScene.js +1 -0
- package/lib/module/games/checkers/Checkers.js +1 -1
- package/lib/module/games/checkers/CheckersAI.js +1 -0
- package/lib/module/games/checkers/CheckersConstants.js +1 -1
- package/lib/module/games/checkers/CheckersGame.js +1 -0
- package/lib/module/games/checkers/CheckersRules.js +1 -0
- package/lib/module/games/checkers/CheckersScene.js +1 -0
- package/lib/module/games/color-switch/ColorSwitch.js +1 -1
- package/lib/module/games/color-switch/ColorSwitchConstants.js +1 -1
- package/lib/module/games/color-switch/ColorSwitchGame.js +1 -0
- package/lib/module/games/color-switch/ColorSwitchScene.js +1 -0
- package/lib/module/games/colors-sort/ColorsSort.js +1 -1
- package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -1
- package/lib/module/games/colors-sort/ColorsSortGame.js +1 -0
- package/lib/module/games/colors-sort/ColorsSortScene.js +1 -0
- package/lib/module/games/connect-em-all/ConnectEmAll.js +1 -1
- package/lib/module/games/connect-em-all/ConnectEmAllConstants.js +1 -1
- package/lib/module/games/connect-em-all/ConnectEmAllGame.js +1 -0
- package/lib/module/games/connect-em-all/ConnectEmAllScene.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoad.js +1 -1
- package/lib/module/games/crossy-road/CrossyRoadCamera.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadConstants.js +1 -1
- package/lib/module/games/crossy-road/CrossyRoadGame.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadMeshes.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadPerson.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadRules.js +1 -0
- package/lib/module/games/crossy-road/CrossyRoadScene.js +1 -0
- package/lib/module/games/dino-jump/DinoJump.js +1 -1
- package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -1
- package/lib/module/games/dino-jump/DinoJumpGame.js +1 -0
- package/lib/module/games/dino-jump/DinoJumpScene.js +1 -0
- package/lib/module/games/dots-and-boxes/DotsAndBoxes.js +1 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesConstants.js +1 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesGame.js +1 -0
- package/lib/module/games/dots-and-boxes/DotsAndBoxesScene.js +1 -0
- package/lib/module/games/falling-sticks/FallingSticks.js +1 -1
- package/lib/module/games/falling-sticks/FallingSticksConstants.js +1 -1
- package/lib/module/games/falling-sticks/FallingSticksGame.js +1 -0
- package/lib/module/games/falling-sticks/FallingSticksRules.js +1 -0
- package/lib/module/games/falling-sticks/FallingSticksScene.js +1 -0
- package/lib/module/games/find-different-number/FindDifferentNumber.js +1 -1
- package/lib/module/games/find-different-number/FindDifferentNumberConstants.js +1 -1
- package/lib/module/games/find-different-number/FindDifferentNumberGame.js +1 -0
- package/lib/module/games/find-different-number/FindDifferentNumberRules.js +1 -0
- package/lib/module/games/find-different-number/FindDifferentNumberScene.js +1 -0
- package/lib/module/games/flappy-bird/FlappyBird.js +1 -1
- package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -1
- package/lib/module/games/flappy-bird/FlappyBirdGame.js +1 -0
- package/lib/module/games/flappy-bird/FlappyBirdScene.js +1 -0
- package/lib/module/games/fruit-merger/FruitMerger.js +1 -1
- package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -1
- package/lib/module/games/fruit-merger/FruitMergerGame.js +1 -0
- package/lib/module/games/fruit-merger/FruitMergerRules.js +1 -0
- package/lib/module/games/fruit-merger/FruitMergerScene.js +1 -0
- package/lib/module/games/fruit-ninja/FruitNinja.js +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaGame.js +1 -0
- package/lib/module/games/fruit-ninja/FruitNinjaScene.js +1 -0
- package/lib/module/games/fruit-ninja/FruitNinjaWorld.js +1 -0
- package/lib/module/games/game-2048/Game2048.js +1 -1
- package/lib/module/games/game-2048/Game2048Constants.js +1 -1
- package/lib/module/games/game-2048/Game2048Game.js +1 -0
- package/lib/module/games/game-2048/Game2048Rules.js +1 -0
- package/lib/module/games/game-2048/Game2048Scene.js +1 -0
- package/lib/module/games/knife-hit/KnifeHit.js +1 -1
- package/lib/module/games/knife-hit/KnifeHitConstants.js +1 -1
- package/lib/module/games/knife-hit/KnifeHitGame.js +1 -0
- package/lib/module/games/knife-hit/KnifeHitScene.js +1 -0
- package/lib/module/games/ludo-king/LudoKing.js +1 -1
- package/lib/module/games/ludo-king/LudoKingConstants.js +1 -1
- package/lib/module/games/ludo-king/LudoKingGame.js +1 -0
- package/lib/module/games/ludo-king/LudoKingRules.js +1 -0
- package/lib/module/games/ludo-king/LudoKingScene.js +1 -0
- package/lib/module/games/maze-runner/MazeRunner.js +1 -1
- package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -1
- package/lib/module/games/maze-runner/MazeRunnerGame.js +1 -0
- package/lib/module/games/maze-runner/MazeRunnerRules.js +1 -0
- package/lib/module/games/maze-runner/MazeRunnerScene.js +1 -0
- package/lib/module/games/memory-match/MemoryMatch.js +1 -1
- package/lib/module/games/memory-match/MemoryMatchConstants.js +1 -1
- package/lib/module/games/memory-match/MemoryMatchGame.js +1 -0
- package/lib/module/games/memory-match/MemoryMatchRules.js +1 -0
- package/lib/module/games/memory-match/MemoryMatchScene.js +1 -0
- package/lib/module/games/mine-sweeper/MineSweeper.js +1 -1
- package/lib/module/games/mine-sweeper/MineSweeperConstants.js +1 -1
- package/lib/module/games/mine-sweeper/MineSweeperGame.js +1 -0
- package/lib/module/games/mine-sweeper/MineSweeperRules.js +1 -0
- package/lib/module/games/mine-sweeper/MineSweeperScene.js +1 -0
- package/lib/module/games/mob-control/MobControl.js +1 -1
- package/lib/module/games/mob-control/MobControlConstants.js +1 -1
- package/lib/module/games/mob-control/MobControlGame.js +1 -0
- package/lib/module/games/mob-control/MobControlMeshes.js +1 -0
- package/lib/module/games/mob-control/MobControlRenderer.js +1 -0
- package/lib/module/games/mob-control/MobControlRules.js +1 -0
- package/lib/module/games/mob-control/MobControlScene.js +1 -0
- package/lib/module/games/number-search/NumberSearch.js +1 -1
- package/lib/module/games/number-search/NumberSearchNumbers.js +1 -0
- package/lib/module/games/nuts-and-bolts/NutsAndBolts.js +1 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsConstants.js +1 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsGame.js +1 -0
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsRules.js +1 -0
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsScene.js +1 -0
- package/lib/module/games/pac-man/PacMan.js +1 -1
- package/lib/module/games/pac-man/PacManConstants.js +1 -1
- package/lib/module/games/pac-man/PacManGame.js +1 -0
- package/lib/module/games/pac-man/PacManRules.js +1 -0
- package/lib/module/games/pac-man/PacManScene.js +1 -0
- package/lib/module/games/paper-io/PaperIo.js +1 -1
- package/lib/module/games/paper-io/PaperIoConstants.js +1 -1
- package/lib/module/games/paper-io/PaperIoGame.js +1 -0
- package/lib/module/games/paper-io/PaperIoMeshes.js +1 -0
- package/lib/module/games/paper-io/PaperIoRules.js +1 -0
- package/lib/module/games/paper-io/PaperIoScene.js +1 -0
- package/lib/module/games/penguin-run/PenguinMeshes.js +1 -0
- package/lib/module/games/penguin-run/PenguinModel.js +1 -0
- package/lib/module/games/penguin-run/PenguinRun.js +1 -0
- package/lib/module/games/penguin-run/PenguinRunConstants.js +1 -0
- package/lib/module/games/penguin-run/PenguinRunGame.js +1 -0
- package/lib/module/games/penguin-run/PenguinRunScene.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircle.js +1 -1
- package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -1
- package/lib/module/games/perfect-circle/PerfectCircleGame.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleRules.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleScene.js +1 -0
- package/lib/module/games/pipe-connect/PipeConnect.js +1 -1
- package/lib/module/games/pipe-connect/PipeConnectConstants.js +1 -1
- package/lib/module/games/pipe-connect/PipeConnectGame.js +1 -0
- package/lib/module/games/pipe-connect/PipeConnectRules.js +1 -0
- package/lib/module/games/pipe-connect/PipeConnectScene.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTua.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaConstants.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaGame.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaModel.js +1 -0
- package/lib/module/games/play-with-tua/PlayWithTuaScene.js +1 -0
- package/lib/module/games/popit-fidget/PopitFidget.js +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetGame.js +1 -0
- package/lib/module/games/popit-fidget/PopitFidgetScene.js +1 -0
- package/lib/module/games/reversi/Reversi.js +1 -1
- package/lib/module/games/reversi/ReversiConstants.js +1 -1
- package/lib/module/games/reversi/ReversiGame.js +1 -0
- package/lib/module/games/reversi/ReversiRules.js +1 -0
- package/lib/module/games/reversi/ReversiScene.js +1 -0
- package/lib/module/games/search-grid/SearchGrid.js +1 -0
- package/lib/module/games/search-grid/SearchGridConstants.js +1 -0
- package/lib/module/games/search-grid/SearchGridGame.js +1 -0
- package/lib/module/games/search-grid/SearchGridScene.js +1 -0
- package/lib/module/games/shared/BackdropCard.js +1 -0
- package/lib/module/games/shared/EngineBackdrop.js +1 -0
- package/lib/module/games/shared/EngineBlasts.js +1 -0
- package/lib/module/games/shared/EngineBlocks.js +1 -0
- package/lib/module/games/shared/EngineControlText.js +1 -0
- package/lib/module/games/shared/EngineDice.js +1 -0
- package/lib/module/games/shared/EngineFootprint.js +1 -0
- package/lib/module/games/shared/EngineFruits.js +1 -0
- package/lib/module/games/shared/EngineGameLoader.js +1 -0
- package/lib/module/games/shared/EngineGameScreen.js +1 -0
- package/lib/module/games/shared/EngineGameWidth.js +1 -0
- package/lib/module/games/shared/EngineGameWidth.web.js +1 -0
- package/lib/module/games/shared/EngineGlyphs.js +1 -0
- package/lib/module/games/shared/EngineHud.js +1 -0
- package/lib/module/games/shared/EngineLoading.js +1 -0
- package/lib/module/games/shared/EngineMeadow.js +1 -0
- package/lib/module/games/shared/EngineMeshCache.js +1 -0
- package/lib/module/games/shared/EngineMeshes.js +1 -0
- package/lib/module/games/shared/EngineRacingChase.js +1 -0
- package/lib/module/games/shared/EngineRacingHandling.js +1 -0
- package/lib/module/games/shared/EngineReadyContext.js +1 -0
- package/lib/module/games/shared/EngineTilt.js +1 -0
- package/lib/module/games/shared/EngineTouchSurface.js +1 -0
- package/lib/module/games/shared/EngineUtils.js +1 -0
- package/lib/module/games/shared/GameActivity.js +1 -0
- package/lib/module/games/shared/GameLoading.js +1 -0
- package/lib/module/games/shared/GameLoadingTransition.js +1 -0
- package/lib/module/games/shared/ProceduralCacheVersion.js +1 -0
- package/lib/module/games/shared/useEngineGame.js +1 -0
- package/lib/module/games/shared/useGameResource.js +1 -0
- package/lib/module/games/shared/useLiveState.js +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersGame.js +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersRules.js +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersScene.js +1 -0
- package/lib/module/games/snake-3d/Snake3D.js +1 -1
- package/lib/module/games/snake-3d/Snake3DConstants.js +1 -1
- package/lib/module/games/snake-3d/Snake3DGame.js +1 -0
- package/lib/module/games/snake-3d/Snake3DMotion.js +1 -0
- package/lib/module/games/snake-3d/Snake3DRules.js +1 -0
- package/lib/module/games/snake-3d/Snake3DScene.js +1 -0
- package/lib/module/games/snakes-and-ladders/SnakesAndLadders.js +1 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersConstants.js +1 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersGame.js +1 -0
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersScene.js +1 -0
- package/lib/module/games/space-fighter/SpaceFighter.js +1 -1
- package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -1
- package/lib/module/games/space-fighter/SpaceFighterGame.js +1 -0
- package/lib/module/games/space-fighter/SpaceFighterScene.js +1 -0
- package/lib/module/games/spider-solitaire/SpiderSolitaire.js +1 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireConstants.js +1 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireGame.js +1 -0
- package/lib/module/games/spider-solitaire/SpiderSolitaireRules.js +1 -0
- package/lib/module/games/spider-solitaire/SpiderSolitaireScene.js +1 -0
- package/lib/module/games/stack-tower/StackTower.js +1 -1
- package/lib/module/games/stack-tower/StackTowerConstants.js +1 -1
- package/lib/module/games/stack-tower/StackTowerGame.js +1 -0
- package/lib/module/games/stack-tower/StackTowerScene.js +1 -0
- package/lib/module/games/sudoku/Sudoku.js +1 -1
- package/lib/module/games/sudoku/SudokuConstants.js +1 -1
- package/lib/module/games/sudoku/SudokuGame.js +1 -0
- package/lib/module/games/sudoku/SudokuRules.js +1 -0
- package/lib/module/games/sudoku/SudokuScene.js +1 -0
- package/lib/module/games/tangram/Tangram.js +1 -1
- package/lib/module/games/tangram/TangramConstants.js +1 -1
- package/lib/module/games/tangram/TangramGame.js +1 -0
- package/lib/module/games/tangram/TangramRules.js +1 -0
- package/lib/module/games/tangram/TangramScene.js +1 -0
- package/lib/module/games/tank-1990/Tank1990.js +1 -1
- package/lib/module/games/tank-1990/Tank1990Constants.js +1 -1
- package/lib/module/games/tank-1990/Tank1990Game.js +1 -0
- package/lib/module/games/tank-1990/Tank1990Rules.js +1 -0
- package/lib/module/games/tank-1990/Tank1990Scene.js +1 -0
- package/lib/module/games/tic-tac-toe/TicTacToe.js +1 -1
- package/lib/module/games/tic-tac-toe/TicTacToeConstants.js +1 -1
- package/lib/module/games/tic-tac-toe/TicTacToeGame.js +1 -0
- package/lib/module/games/tic-tac-toe/TicTacToeRules.js +1 -0
- package/lib/module/games/tic-tac-toe/TicTacToeScene.js +1 -0
- package/lib/module/games/tile-home/TileHome.js +1 -1
- package/lib/module/games/tile-home/TileHomeConstants.js +1 -1
- package/lib/module/games/tile-home/TileHomeGame.js +1 -0
- package/lib/module/games/tile-home/TileHomeScene.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHunt.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntConstants.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntControls.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntGame.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntMeshes.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntModel.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntRules.js +1 -0
- package/lib/module/games/treasure-hunt/TreasureHuntScene.js +1 -0
- package/lib/module/games/whack-a-mole/WhackAMole.js +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleGame.js +1 -0
- package/lib/module/games/whack-a-mole/WhackAMoleScene.js +1 -0
- package/lib/module/games/word-search/WordSearch.js +1 -1
- package/lib/module/games/word-search/WordSearchWords.js +1 -0
- package/lib/module/helpers/GamePatternData.js +1 -0
- package/lib/module/helpers/GameSettingsModal.js +1 -1
- package/lib/module/helpers/GameTheme.js +1 -0
- package/lib/module/helpers/IconPaths.js +1 -0
- package/lib/module/helpers/index.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/services/GameAssetLoader.js +1 -0
- package/lib/module/services/GameAssets.js +1 -0
- package/lib/module/services/GameLoaders.js +1 -0
- package/lib/module/services/GamesConstants.js +1 -1
- package/lib/module/services/GamesMetadata.js +1 -1
- package/lib/module/services/GamesService.js +1 -1
- package/lib/module/services/HapticsService.js +1 -1
- package/lib/module/services/ScoringService.js +1 -1
- package/lib/module/services/SfxSources.js +1 -0
- package/lib/module/services/SoundsService.js +1 -1
- package/lib/module/services/ThemeService.js +1 -0
- package/lib/module/services/UtilsService.js +1 -1
- package/lib/module/services/index.js +1 -1
- package/lib/typescript/src/games/arrows/Arrows.d.ts +1 -3
- package/lib/typescript/src/games/arrows/ArrowsConstants.d.ts +48 -32
- package/lib/typescript/src/games/arrows/ArrowsGame.d.ts +60 -0
- package/lib/typescript/src/games/arrows/ArrowsScene.d.ts +67 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +1 -3
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +39 -131
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterGame.d.ts +57 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterPhysics.d.ts +16 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterScene.d.ts +31 -0
- package/lib/typescript/src/games/bike-racing/BikeMeshes.d.ts +14 -0
- package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +2 -1
- package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +38 -29
- package/lib/typescript/src/games/bike-racing/BikeRacingGame.d.ts +104 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingScene.d.ts +25 -0
- package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +1 -3
- package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +48 -30
- package/lib/typescript/src/games/block-blast/BlockBlastGame.d.ts +77 -0
- package/lib/typescript/src/games/block-blast/BlockBlastScene.d.ts +36 -0
- package/lib/typescript/src/games/block-breaker/BlockBreaker.d.ts +1 -3
- package/lib/typescript/src/games/block-breaker/BlockBreakerConstants.d.ts +88 -35
- package/lib/typescript/src/games/block-breaker/BlockBreakerGame.d.ts +82 -0
- package/lib/typescript/src/games/block-breaker/BlockBreakerScene.d.ts +48 -0
- package/lib/typescript/src/games/bluk/Bluk.d.ts +1 -3
- package/lib/typescript/src/games/bluk/BlukConstants.d.ts +65 -54
- package/lib/typescript/src/games/bluk/BlukGame.d.ts +65 -0
- package/lib/typescript/src/games/bluk/BlukRules.d.ts +51 -0
- package/lib/typescript/src/games/bluk/BlukScene.d.ts +54 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +1 -3
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +56 -24
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterGame.d.ts +70 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterScene.d.ts +26 -0
- package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +1 -3
- package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +63 -32
- package/lib/typescript/src/games/candy-crush/CandyCrushGame.d.ts +65 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushScene.d.ts +28 -0
- package/lib/typescript/src/games/car-racing/CarMeshes.d.ts +44 -0
- package/lib/typescript/src/games/car-racing/CarRacing.d.ts +2 -1
- package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +60 -29
- package/lib/typescript/src/games/car-racing/CarRacingFacade.d.ts +5 -0
- package/lib/typescript/src/games/car-racing/CarRacingGame.d.ts +96 -0
- package/lib/typescript/src/games/car-racing/CarRacingScene.d.ts +97 -0
- package/lib/typescript/src/games/car-racing/CarRacingScenery.d.ts +22 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRun.d.ts +1 -3
- package/lib/typescript/src/games/chameleon-run/ChameleonRunBackdrop.d.ts +14 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunConstants.d.ts +44 -42
- package/lib/typescript/src/games/chameleon-run/ChameleonRunGame.d.ts +60 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunMeshes.d.ts +20 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunRules.d.ts +52 -0
- package/lib/typescript/src/games/chameleon-run/ChameleonRunScene.d.ts +44 -0
- package/lib/typescript/src/games/checkers/Checkers.d.ts +1 -3
- package/lib/typescript/src/games/checkers/CheckersAI.d.ts +11 -0
- package/lib/typescript/src/games/checkers/CheckersConstants.d.ts +32 -72
- package/lib/typescript/src/games/checkers/CheckersGame.d.ts +56 -0
- package/lib/typescript/src/games/checkers/CheckersRules.d.ts +48 -0
- package/lib/typescript/src/games/checkers/CheckersScene.d.ts +41 -0
- package/lib/typescript/src/games/color-switch/ColorSwitch.d.ts +1 -3
- package/lib/typescript/src/games/color-switch/ColorSwitchConstants.d.ts +27 -31
- package/lib/typescript/src/games/color-switch/ColorSwitchGame.d.ts +61 -0
- package/lib/typescript/src/games/color-switch/ColorSwitchScene.d.ts +43 -0
- package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts +1 -3
- package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts +37 -44
- package/lib/typescript/src/games/colors-sort/ColorsSortGame.d.ts +41 -0
- package/lib/typescript/src/games/colors-sort/ColorsSortScene.d.ts +33 -0
- package/lib/typescript/src/games/connect-em-all/ConnectEmAll.d.ts +1 -3
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllConstants.d.ts +43 -17
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllGame.d.ts +54 -0
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllScene.d.ts +49 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoad.d.ts +1 -3
- package/lib/typescript/src/games/crossy-road/CrossyRoadCamera.d.ts +14 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadConstants.d.ts +82 -50
- package/lib/typescript/src/games/crossy-road/CrossyRoadGame.d.ts +64 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadMeshes.d.ts +16 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadPerson.d.ts +10 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadRules.d.ts +36 -0
- package/lib/typescript/src/games/crossy-road/CrossyRoadScene.d.ts +38 -0
- package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +1 -3
- package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +48 -72
- package/lib/typescript/src/games/dino-jump/DinoJumpGame.d.ts +60 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpScene.d.ts +35 -0
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxes.d.ts +1 -3
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesConstants.d.ts +31 -36
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesGame.d.ts +44 -0
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesScene.d.ts +31 -0
- package/lib/typescript/src/games/falling-sticks/FallingSticks.d.ts +1 -3
- package/lib/typescript/src/games/falling-sticks/FallingSticksConstants.d.ts +31 -43
- package/lib/typescript/src/games/falling-sticks/FallingSticksGame.d.ts +42 -0
- package/lib/typescript/src/games/falling-sticks/FallingSticksRules.d.ts +36 -0
- package/lib/typescript/src/games/falling-sticks/FallingSticksScene.d.ts +26 -0
- package/lib/typescript/src/games/find-different-number/FindDifferentNumber.d.ts +1 -3
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberConstants.d.ts +33 -29
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberGame.d.ts +43 -0
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberRules.d.ts +8 -0
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberScene.d.ts +31 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +1 -3
- package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +39 -35
- package/lib/typescript/src/games/flappy-bird/FlappyBirdGame.d.ts +66 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdScene.d.ts +41 -0
- package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +1 -3
- package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +71 -44
- package/lib/typescript/src/games/fruit-merger/FruitMergerGame.d.ts +63 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerRules.d.ts +39 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerScene.d.ts +49 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +1 -3
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +51 -76
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaGame.d.ts +76 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaScene.d.ts +52 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaWorld.d.ts +8 -0
- package/lib/typescript/src/games/game-2048/Game2048.d.ts +1 -3
- package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +25 -120
- package/lib/typescript/src/games/game-2048/Game2048Game.d.ts +45 -0
- package/lib/typescript/src/games/game-2048/Game2048Rules.d.ts +32 -0
- package/lib/typescript/src/games/game-2048/Game2048Scene.d.ts +34 -0
- package/lib/typescript/src/games/knife-hit/KnifeHit.d.ts +1 -3
- package/lib/typescript/src/games/knife-hit/KnifeHitConstants.d.ts +41 -49
- package/lib/typescript/src/games/knife-hit/KnifeHitGame.d.ts +49 -0
- package/lib/typescript/src/games/knife-hit/KnifeHitScene.d.ts +37 -0
- package/lib/typescript/src/games/ludo-king/LudoKing.d.ts +1 -3
- package/lib/typescript/src/games/ludo-king/LudoKingConstants.d.ts +50 -28
- package/lib/typescript/src/games/ludo-king/LudoKingGame.d.ts +40 -0
- package/lib/typescript/src/games/ludo-king/LudoKingRules.d.ts +42 -0
- package/lib/typescript/src/games/ludo-king/LudoKingScene.d.ts +53 -0
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +1 -3
- package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +34 -10
- package/lib/typescript/src/games/maze-runner/MazeRunnerGame.d.ts +44 -0
- package/lib/typescript/src/games/maze-runner/MazeRunnerRules.d.ts +34 -0
- package/lib/typescript/src/games/maze-runner/MazeRunnerScene.d.ts +29 -0
- package/lib/typescript/src/games/memory-match/MemoryMatch.d.ts +1 -3
- package/lib/typescript/src/games/memory-match/MemoryMatchConstants.d.ts +42 -42
- package/lib/typescript/src/games/memory-match/MemoryMatchGame.d.ts +53 -0
- package/lib/typescript/src/games/memory-match/MemoryMatchRules.d.ts +14 -0
- package/lib/typescript/src/games/memory-match/MemoryMatchScene.d.ts +35 -0
- package/lib/typescript/src/games/mine-sweeper/MineSweeper.d.ts +1 -3
- package/lib/typescript/src/games/mine-sweeper/MineSweeperConstants.d.ts +43 -82
- package/lib/typescript/src/games/mine-sweeper/MineSweeperGame.d.ts +59 -0
- package/lib/typescript/src/games/mine-sweeper/MineSweeperRules.d.ts +18 -0
- package/lib/typescript/src/games/mine-sweeper/MineSweeperScene.d.ts +23 -0
- package/lib/typescript/src/games/mob-control/MobControl.d.ts +1 -3
- package/lib/typescript/src/games/mob-control/MobControlConstants.d.ts +99 -85
- package/lib/typescript/src/games/mob-control/MobControlGame.d.ts +45 -0
- package/lib/typescript/src/games/mob-control/MobControlMeshes.d.ts +2 -0
- package/lib/typescript/src/games/mob-control/MobControlRenderer.d.ts +20 -0
- package/lib/typescript/src/games/mob-control/MobControlRules.d.ts +68 -0
- package/lib/typescript/src/games/mob-control/MobControlScene.d.ts +58 -0
- package/lib/typescript/src/games/number-search/NumberSearch.d.ts +1 -3
- package/lib/typescript/src/games/number-search/NumberSearchNumbers.d.ts +1 -0
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBolts.d.ts +1 -3
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsConstants.d.ts +27 -79
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsGame.d.ts +56 -0
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsRules.d.ts +65 -0
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsScene.d.ts +48 -0
- package/lib/typescript/src/games/pac-man/PacMan.d.ts +1 -3
- package/lib/typescript/src/games/pac-man/PacManConstants.d.ts +66 -106
- package/lib/typescript/src/games/pac-man/PacManGame.d.ts +48 -0
- package/lib/typescript/src/games/pac-man/PacManRules.d.ts +52 -0
- package/lib/typescript/src/games/pac-man/PacManScene.d.ts +44 -0
- package/lib/typescript/src/games/paper-io/PaperIo.d.ts +1 -3
- package/lib/typescript/src/games/paper-io/PaperIoConstants.d.ts +60 -40
- package/lib/typescript/src/games/paper-io/PaperIoGame.d.ts +49 -0
- package/lib/typescript/src/games/paper-io/PaperIoMeshes.d.ts +13 -0
- package/lib/typescript/src/games/paper-io/PaperIoRules.d.ts +71 -0
- package/lib/typescript/src/games/paper-io/PaperIoScene.d.ts +39 -0
- package/lib/typescript/src/games/penguin-run/PenguinMeshes.d.ts +9 -0
- package/lib/typescript/src/games/penguin-run/PenguinModel.d.ts +42 -0
- package/lib/typescript/src/games/penguin-run/PenguinRun.d.ts +1 -0
- package/lib/typescript/src/games/penguin-run/PenguinRunConstants.d.ts +58 -0
- package/lib/typescript/src/games/penguin-run/PenguinRunGame.d.ts +64 -0
- package/lib/typescript/src/games/penguin-run/PenguinRunScene.d.ts +65 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +1 -3
- package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +23 -45
- package/lib/typescript/src/games/perfect-circle/PerfectCircleGame.d.ts +40 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleRules.d.ts +55 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleScene.d.ts +32 -0
- package/lib/typescript/src/games/pipe-connect/PipeConnect.d.ts +1 -3
- package/lib/typescript/src/games/pipe-connect/PipeConnectConstants.d.ts +36 -32
- package/lib/typescript/src/games/pipe-connect/PipeConnectGame.d.ts +40 -0
- package/lib/typescript/src/games/pipe-connect/PipeConnectRules.d.ts +16 -0
- package/lib/typescript/src/games/pipe-connect/PipeConnectScene.d.ts +28 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTua.d.ts +2 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaConstants.d.ts +64 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaGame.d.ts +34 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaModel.d.ts +9 -0
- package/lib/typescript/src/games/play-with-tua/PlayWithTuaScene.d.ts +13 -0
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +1 -4
- package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +25 -36
- package/lib/typescript/src/games/popit-fidget/PopitFidgetGame.d.ts +37 -0
- package/lib/typescript/src/games/popit-fidget/PopitFidgetScene.d.ts +19 -0
- package/lib/typescript/src/games/reversi/Reversi.d.ts +1 -3
- package/lib/typescript/src/games/reversi/ReversiConstants.d.ts +31 -62
- package/lib/typescript/src/games/reversi/ReversiGame.d.ts +54 -0
- package/lib/typescript/src/games/reversi/ReversiRules.d.ts +22 -0
- package/lib/typescript/src/games/reversi/ReversiScene.d.ts +27 -0
- package/lib/typescript/src/games/search-grid/SearchGrid.d.ts +20 -0
- package/lib/typescript/src/games/search-grid/SearchGridConstants.d.ts +60 -0
- package/lib/typescript/src/games/search-grid/SearchGridGame.d.ts +52 -0
- package/lib/typescript/src/games/search-grid/SearchGridScene.d.ts +43 -0
- package/lib/typescript/src/games/shared/BackdropCard.d.ts +2 -0
- package/lib/typescript/src/games/shared/EngineBackdrop.d.ts +19 -0
- package/lib/typescript/src/games/shared/EngineBlasts.d.ts +26 -0
- package/lib/typescript/src/games/shared/EngineBlocks.d.ts +19 -0
- package/lib/typescript/src/games/shared/EngineControlText.d.ts +2 -0
- package/lib/typescript/src/games/shared/EngineDice.d.ts +24 -0
- package/lib/typescript/src/games/shared/EngineFootprint.d.ts +17 -0
- package/lib/typescript/src/games/shared/EngineFruits.d.ts +27 -0
- package/lib/typescript/src/games/shared/EngineGameLoader.d.ts +4 -0
- package/lib/typescript/src/games/shared/EngineGameScreen.d.ts +48 -0
- package/lib/typescript/src/games/shared/EngineGameWidth.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineGameWidth.web.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineGlyphs.d.ts +15 -0
- package/lib/typescript/src/games/shared/EngineHud.d.ts +138 -0
- package/lib/typescript/src/games/shared/EngineLoading.d.ts +77 -0
- package/lib/typescript/src/games/shared/EngineMeadow.d.ts +90 -0
- package/lib/typescript/src/games/shared/EngineMeshCache.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineMeshes.d.ts +3 -0
- package/lib/typescript/src/games/shared/EngineRacingChase.d.ts +11 -0
- package/lib/typescript/src/games/shared/EngineRacingHandling.d.ts +15 -0
- package/lib/typescript/src/games/shared/EngineReadyContext.d.ts +2 -0
- package/lib/typescript/src/games/shared/EngineTilt.d.ts +19 -0
- package/lib/typescript/src/games/shared/EngineTouchSurface.d.ts +20 -0
- package/lib/typescript/src/games/shared/EngineUtils.d.ts +18 -0
- package/lib/typescript/src/games/shared/GameActivity.d.ts +3 -0
- package/lib/typescript/src/games/shared/GameLoading.d.ts +14 -0
- package/lib/typescript/src/games/shared/GameLoadingTransition.d.ts +9 -0
- package/lib/typescript/src/games/shared/ProceduralCacheVersion.d.ts +1 -0
- package/lib/typescript/src/games/shared/useEngineGame.d.ts +69 -0
- package/lib/typescript/src/games/shared/useGameResource.d.ts +2 -0
- package/lib/typescript/src/games/shared/useLiveState.d.ts +4 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +1 -3
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +32 -40
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersGame.d.ts +48 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersRules.d.ts +22 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersScene.d.ts +30 -0
- package/lib/typescript/src/games/snake-3d/Snake3D.d.ts +1 -3
- package/lib/typescript/src/games/snake-3d/Snake3DConstants.d.ts +31 -68
- package/lib/typescript/src/games/snake-3d/Snake3DGame.d.ts +42 -0
- package/lib/typescript/src/games/snake-3d/Snake3DMotion.d.ts +3 -0
- package/lib/typescript/src/games/snake-3d/Snake3DRules.d.ts +42 -0
- package/lib/typescript/src/games/snake-3d/Snake3DScene.d.ts +35 -0
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLadders.d.ts +1 -3
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersConstants.d.ts +58 -50
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersGame.d.ts +45 -0
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersScene.d.ts +50 -0
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +1 -3
- package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +33 -23
- package/lib/typescript/src/games/space-fighter/SpaceFighterGame.d.ts +58 -0
- package/lib/typescript/src/games/space-fighter/SpaceFighterScene.d.ts +51 -0
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaire.d.ts +1 -3
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireConstants.d.ts +52 -35
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireGame.d.ts +67 -0
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireRules.d.ts +39 -0
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireScene.d.ts +60 -0
- package/lib/typescript/src/games/stack-tower/StackTower.d.ts +1 -3
- package/lib/typescript/src/games/stack-tower/StackTowerConstants.d.ts +31 -23
- package/lib/typescript/src/games/stack-tower/StackTowerGame.d.ts +58 -0
- package/lib/typescript/src/games/stack-tower/StackTowerScene.d.ts +27 -0
- package/lib/typescript/src/games/sudoku/Sudoku.d.ts +1 -3
- package/lib/typescript/src/games/sudoku/SudokuConstants.d.ts +50 -55
- package/lib/typescript/src/games/sudoku/SudokuGame.d.ts +56 -0
- package/lib/typescript/src/games/sudoku/SudokuRules.d.ts +23 -0
- package/lib/typescript/src/games/sudoku/SudokuScene.d.ts +44 -0
- package/lib/typescript/src/games/tangram/Tangram.d.ts +1 -3
- package/lib/typescript/src/games/tangram/TangramConstants.d.ts +33 -52
- package/lib/typescript/src/games/tangram/TangramGame.d.ts +68 -0
- package/lib/typescript/src/games/tangram/TangramRules.d.ts +61 -0
- package/lib/typescript/src/games/tangram/TangramScene.d.ts +42 -0
- package/lib/typescript/src/games/tank-1990/Tank1990.d.ts +1 -3
- package/lib/typescript/src/games/tank-1990/Tank1990Constants.d.ts +44 -127
- package/lib/typescript/src/games/tank-1990/Tank1990Game.d.ts +50 -0
- package/lib/typescript/src/games/tank-1990/Tank1990Rules.d.ts +67 -0
- package/lib/typescript/src/games/tank-1990/Tank1990Scene.d.ts +38 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToe.d.ts +1 -3
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeConstants.d.ts +35 -72
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeGame.d.ts +54 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeRules.d.ts +10 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeScene.d.ts +26 -0
- package/lib/typescript/src/games/tile-home/TileHome.d.ts +1 -3
- package/lib/typescript/src/games/tile-home/TileHomeConstants.d.ts +72 -70
- package/lib/typescript/src/games/tile-home/TileHomeGame.d.ts +72 -0
- package/lib/typescript/src/games/tile-home/TileHomeScene.d.ts +28 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHunt.d.ts +3 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntConstants.d.ts +144 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntControls.d.ts +75 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntGame.d.ts +41 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntMeshes.d.ts +26 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntModel.d.ts +57 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntRules.d.ts +198 -0
- package/lib/typescript/src/games/treasure-hunt/TreasureHuntScene.d.ts +40 -0
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +1 -3
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +35 -45
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleGame.d.ts +51 -0
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleScene.d.ts +31 -0
- package/lib/typescript/src/games/word-search/WordSearch.d.ts +1 -3
- package/lib/typescript/src/games/word-search/WordSearchWords.d.ts +1 -0
- package/lib/typescript/src/helpers/GamePatternData.d.ts +46 -0
- package/lib/typescript/src/helpers/GameSettingsModal.d.ts +1 -1
- package/lib/typescript/src/helpers/GameTheme.d.ts +18 -0
- package/lib/typescript/src/helpers/IconPaths.d.ts +4 -0
- package/lib/typescript/src/helpers/index.d.ts +1 -19
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/services/GameAssetLoader.d.ts +32 -0
- package/lib/typescript/src/services/GameAssets.d.ts +11 -0
- package/lib/typescript/src/services/GameLoaders.d.ts +18 -0
- package/lib/typescript/src/services/GamesConstants.d.ts +11 -0
- package/lib/typescript/src/services/GamesMetadata.d.ts +2 -0
- package/lib/typescript/src/services/HapticsService.d.ts +1 -1
- package/lib/typescript/src/services/SfxSources.d.ts +79 -0
- package/lib/typescript/src/services/SoundsService.d.ts +487 -1566
- package/lib/typescript/src/services/ThemeService.d.ts +117 -0
- package/lib/typescript/src/services/UtilsService.d.ts +20 -2
- package/lib/typescript/src/services/index.d.ts +3 -0
- package/lib/web/assets/005ea2045b17-explorer.glb +0 -0
- package/lib/web/assets/01e2f0a0bbf6-hurt.wav +0 -0
- package/lib/web/assets/01fc0ecf658c-explorer-atlas.png +0 -0
- package/lib/web/assets/029329b2c7c0-asphalt.png +0 -0
- package/lib/web/assets/0376bda32be3-robot.wav +0 -0
- package/lib/web/assets/0719fb0bb38e-soft_glow.png +0 -0
- package/lib/web/assets/0b21278bffba-boing.wav +0 -0
- package/lib/web/assets/1333c9d1273c-flip_disc.wav +0 -0
- package/lib/web/assets/15785f62ee5f-time_up.wav +0 -0
- package/lib/web/assets/177f00502e08-bonus.wav +0 -0
- package/lib/web/assets/19e47dcfda1f-pling.wav +0 -0
- package/lib/web/assets/1a677e0f7f6c-laugh.wav +0 -0
- package/lib/web/assets/1ad2914478b1-eat.wav +0 -0
- package/lib/web/assets/1b0d703ddd1a-dance.wav +0 -0
- package/lib/web/assets/1e4330fddd74-chime.wav +0 -0
- package/lib/web/assets/2432a97b0af1-cannon.wav +0 -0
- package/lib/web/assets/2574370d6aa0-blocked.wav +0 -0
- package/lib/web/assets/2699065037ad-select.wav +0 -0
- package/lib/web/assets/28d30f53ad73-ladder.wav +0 -0
- package/lib/web/assets/2c1ec05270b2-point.wav +0 -0
- package/lib/web/assets/2e1dd99a0213-tick.wav +0 -0
- package/lib/web/assets/3084575cecdb-card_flip.wav +0 -0
- package/lib/web/assets/308bc31b6af5-engine.wav +0 -0
- package/lib/web/assets/336d63b739b5-combo.wav +0 -0
- package/lib/web/assets/3a369e2596e4-clash.wav +0 -0
- package/lib/web/assets/3a816e20212f-capture.wav +0 -0
- package/lib/web/assets/40240217810a-nitro.wav +0 -0
- package/lib/web/assets/46edaa54d1ea-crunch.wav +0 -0
- package/lib/web/assets/501994226995-coin.wav +0 -0
- package/lib/web/assets/5525d7f6a4b8-rotate.wav +0 -0
- package/lib/web/assets/5e816e1f0929-dice_roll.wav +0 -0
- package/lib/web/assets/60e2dec3cf41-deselect.wav +0 -0
- package/lib/web/assets/6ab86ea29e5c-six.wav +0 -0
- package/lib/web/assets/6da3b101926d-merge.wav +0 -0
- package/lib/web/assets/6e686dea513c-bark.jpg +0 -0
- package/lib/web/assets/6ff9a6a13714-limestone.jpg +0 -0
- package/lib/web/assets/735c4a1cd22e-invalid.wav +0 -0
- package/lib/web/assets/73f75c35ff5d-snake.wav +0 -0
- package/lib/web/assets/7506e3efe264-catch.wav +0 -0
- package/lib/web/assets/76493a2ada2d-ad_bolt.png +0 -0
- package/lib/web/assets/793abe620201-card_place.wav +0 -0
- package/lib/web/assets/7da09c57f52d-facade.png +0 -0
- package/lib/web/assets/7e1a902176f6-pine.png +0 -0
- package/lib/web/assets/7eb943b85c21-play-with-tua.glb +0 -0
- package/lib/web/assets/837d43c06dba-ad_bubbles.png +0 -0
- package/lib/web/assets/84f1a7dfa368-game_over.wav +0 -0
- package/lib/web/assets/850e26ce3b0a-flap.wav +0 -0
- package/lib/web/assets/854b31683cb2-draw.wav +0 -0
- package/lib/web/assets/8616150393b7-error.wav +0 -0
- package/lib/web/assets/87cc6d503ec6-river.jpg +0 -0
- package/lib/web/assets/88755845922c-hop.wav +0 -0
- package/lib/web/assets/8ec8f469492d-chomp_alt.wav +0 -0
- package/lib/web/assets/8f17f89b138c-pew.wav +0 -0
- package/lib/web/assets/9210a24472d1-place.wav +0 -0
- package/lib/web/assets/930d833ebf89-splash.wav +0 -0
- package/lib/web/assets/970f7c59265d-swoosh.wav +0 -0
- package/lib/web/assets/9900b8d1b6ad-flag.wav +0 -0
- package/lib/web/assets/9ab04403898b-clang.wav +0 -0
- package/lib/web/assets/9d8b97a10d45-drop.wav +0 -0
- package/lib/web/assets/9d9c02ddc7ed-boom.wav +0 -0
- package/lib/web/assets/9e1b5114d56d-pop_soft.wav +0 -0
- package/lib/web/assets/a01f22d6dbb3-thud.wav +0 -0
- package/lib/web/assets/a44a1cf1a1a8-bump.wav +0 -0
- package/lib/web/assets/a76940a48c68-hit.wav +0 -0
- package/lib/web/assets/a98ddb724460-leaves.png +0 -0
- package/lib/web/assets/aa0960e8bee6-footstep_run.wav +0 -0
- package/lib/web/assets/aa570c9d3e15-star.wav +0 -0
- package/lib/web/assets/aacb999f3c49-tock.wav +0 -0
- package/lib/web/assets/aae0c16c5e89-reveal.wav +0 -0
- package/lib/web/assets/ab37cd128509-click.wav +0 -0
- package/lib/web/assets/b0bc66f49005-warning.wav +0 -0
- package/lib/web/assets/b1edd756ac43-zap.wav +0 -0
- package/lib/web/assets/b3894545cf71-slice.wav +0 -0
- package/lib/web/assets/b3c6225d055a-meadow.jpg +0 -0
- package/lib/web/assets/b60ca65cdfcb-gate.wav +0 -0
- package/lib/web/assets/b8900bb2c5c7-win.wav +0 -0
- package/lib/web/assets/baff6feda846-lose.wav +0 -0
- package/lib/web/assets/bed31305d60d-ad_chevrons.png +0 -0
- package/lib/web/assets/c26f4a624e7d-shuffle.wav +0 -0
- package/lib/web/assets/c3a9edfad195-die.wav +0 -0
- package/lib/web/assets/c4aa9d773f2a-footstep_walk.wav +0 -0
- package/lib/web/assets/c5ab3ff0003f-crash.wav +0 -0
- package/lib/web/assets/c5eb07deddd4-start.wav +0 -0
- package/lib/web/assets/c6c58d9ae452-pop.wav +0 -0
- package/lib/web/assets/cea48c3cd9c7-balloon_pop.wav +0 -0
- package/lib/web/assets/d15591767778-tap.wav +0 -0
- package/lib/web/assets/d1781a52234f-slide.wav +0 -0
- package/lib/web/assets/d3bf2d9f793b-snap.wav +0 -0
- package/lib/web/assets/d8f59ebd3537-jump.wav +0 -0
- package/lib/web/assets/dafea2f28854-power_up.wav +0 -0
- package/lib/web/assets/e2e7f5ae2d1b-whoosh.wav +0 -0
- package/lib/web/assets/e2f90a23e1bd-chomp.wav +0 -0
- package/lib/web/assets/e454e56df89a-clack.wav +0 -0
- package/lib/web/assets/e8cbc2b88bc4-Inter-SemiBold.ttf +0 -0
- package/lib/web/assets/ed6496b891fc-land.wav +0 -0
- package/lib/web/assets/f21920200a81-thunk.wav +0 -0
- package/lib/web/assets/f753b43be89d-whack.wav +0 -0
- package/lib/web/assets/f798c4b5cf4d-miss.wav +0 -0
- package/lib/web/assets/fbe299716916-grass.png +0 -0
- package/lib/web/chunk-52ez2s9z.js +15 -0
- package/lib/web/chunk-8675t224.js +1 -0
- package/lib/web/index.js +2 -0
- package/lib/web/package.json +1 -0
- package/lib/web/services.js +2 -0
- package/package.json +94 -73
- package/src/assets/fonts/Inter-SemiBold.ttf +0 -0
- package/src/assets/models/explorer/explorer.glb +0 -0
- package/src/assets/models/explorer/params.json +51 -0
- package/src/assets/models/explorer/source.json +222 -0
- package/src/assets/models/play-with-tua/play-with-tua.glb +0 -0
- package/src/assets/models/play-with-tua/sources.json +141 -0
- package/src/assets/sfx/balloon_pop.wav +0 -0
- package/src/assets/sfx/blocked.wav +0 -0
- package/src/assets/sfx/boing.wav +0 -0
- package/src/assets/sfx/bonus.wav +0 -0
- package/src/assets/sfx/boom.wav +0 -0
- package/src/assets/sfx/bump.wav +0 -0
- package/src/assets/sfx/cannon.wav +0 -0
- package/src/assets/sfx/capture.wav +0 -0
- package/src/assets/sfx/card_flip.wav +0 -0
- package/src/assets/sfx/card_place.wav +0 -0
- package/src/assets/sfx/catch.wav +0 -0
- package/src/assets/sfx/chime.wav +0 -0
- package/src/assets/sfx/chomp.wav +0 -0
- package/src/assets/sfx/chomp_alt.wav +0 -0
- package/src/assets/sfx/clack.wav +0 -0
- package/src/assets/sfx/clang.wav +0 -0
- package/src/assets/sfx/clash.wav +0 -0
- package/src/assets/sfx/click.wav +0 -0
- package/src/assets/sfx/coin.wav +0 -0
- package/src/assets/sfx/combo.wav +0 -0
- package/src/assets/sfx/crash.wav +0 -0
- package/src/assets/sfx/crunch.wav +0 -0
- package/src/assets/sfx/dance.wav +0 -0
- package/src/assets/sfx/deselect.wav +0 -0
- package/src/assets/sfx/dice_roll.wav +0 -0
- package/src/assets/sfx/die.wav +0 -0
- package/src/assets/sfx/draw.wav +0 -0
- package/src/assets/sfx/drop.wav +0 -0
- package/src/assets/sfx/eat.wav +0 -0
- package/src/assets/sfx/engine.wav +0 -0
- package/src/assets/sfx/error.wav +0 -0
- package/src/assets/sfx/flag.wav +0 -0
- package/src/assets/sfx/flap.wav +0 -0
- package/src/assets/sfx/flip_disc.wav +0 -0
- package/src/assets/sfx/footstep_run.wav +0 -0
- package/src/assets/sfx/footstep_walk.wav +0 -0
- package/src/assets/sfx/game_over.wav +0 -0
- package/src/assets/sfx/gate.wav +0 -0
- package/src/assets/sfx/hit.wav +0 -0
- package/src/assets/sfx/hop.wav +0 -0
- package/src/assets/sfx/hurt.wav +0 -0
- package/src/assets/sfx/invalid.wav +0 -0
- package/src/assets/sfx/jump.wav +0 -0
- package/src/assets/sfx/ladder.wav +0 -0
- package/src/assets/sfx/land.wav +0 -0
- package/src/assets/sfx/laugh.wav +0 -0
- package/src/assets/sfx/lose.wav +0 -0
- package/src/assets/sfx/merge.wav +0 -0
- package/src/assets/sfx/miss.wav +0 -0
- package/src/assets/sfx/nitro.wav +0 -0
- package/src/assets/sfx/pew.wav +0 -0
- package/src/assets/sfx/place.wav +0 -0
- package/src/assets/sfx/pling.wav +0 -0
- package/src/assets/sfx/point.wav +0 -0
- package/src/assets/sfx/pop.wav +0 -0
- package/src/assets/sfx/pop_soft.wav +0 -0
- package/src/assets/sfx/power_up.wav +0 -0
- package/src/assets/sfx/reveal.wav +0 -0
- package/src/assets/sfx/robot.wav +0 -0
- package/src/assets/sfx/rotate.wav +0 -0
- package/src/assets/sfx/run_steps.wav +0 -0
- package/src/assets/sfx/select.wav +0 -0
- package/src/assets/sfx/shuffle.wav +0 -0
- package/src/assets/sfx/six.wav +0 -0
- package/src/assets/sfx/slice.wav +0 -0
- package/src/assets/sfx/slide.wav +0 -0
- package/src/assets/sfx/snake.wav +0 -0
- package/src/assets/sfx/snap.wav +0 -0
- package/src/assets/sfx/splash.wav +0 -0
- package/src/assets/sfx/star.wav +0 -0
- package/src/assets/sfx/start.wav +0 -0
- package/src/assets/sfx/swoosh.wav +0 -0
- package/src/assets/sfx/tap.wav +0 -0
- package/src/assets/sfx/thud.wav +0 -0
- package/src/assets/sfx/thunk.wav +0 -0
- package/src/assets/sfx/tick.wav +0 -0
- package/src/assets/sfx/time_up.wav +0 -0
- package/src/assets/sfx/tock.wav +0 -0
- package/src/assets/sfx/walk_steps.wav +0 -0
- package/src/assets/sfx/warning.wav +0 -0
- package/src/assets/sfx/whack.wav +0 -0
- package/src/assets/sfx/whoosh.wav +0 -0
- package/src/assets/sfx/win.wav +0 -0
- package/src/assets/sfx/zap.wav +0 -0
- package/src/assets/textures/ad_bolt.png +0 -0
- package/src/assets/textures/ad_bubbles.png +0 -0
- package/src/assets/textures/ad_chevrons.png +0 -0
- package/src/assets/textures/asphalt.png +0 -0
- package/src/assets/textures/bark.jpg +0 -0
- package/src/assets/textures/explorer-atlas.png +0 -0
- package/src/assets/textures/facade.png +0 -0
- package/src/assets/textures/grass.png +0 -0
- package/src/assets/textures/leaves.png +0 -0
- package/src/assets/textures/limestone.jpg +0 -0
- package/src/assets/textures/meadow.jpg +0 -0
- package/src/assets/textures/nature-sources.json +87 -0
- package/src/assets/textures/pine.png +0 -0
- package/src/assets/textures/river.jpg +0 -0
- package/src/assets/textures/soft_glow.png +0 -0
- package/src/games/arrows/Arrows.tsx +69 -0
- package/src/games/arrows/ArrowsConstants.ts +107 -0
- package/src/games/arrows/ArrowsGame.ts +735 -0
- package/src/games/arrows/ArrowsScene.ts +395 -0
- package/src/games/balloon-blaster/BalloonBlaster.tsx +75 -0
- package/src/games/balloon-blaster/BalloonBlasterConstants.ts +79 -0
- package/src/games/balloon-blaster/BalloonBlasterGame.ts +287 -0
- package/src/games/balloon-blaster/BalloonBlasterPhysics.ts +95 -0
- package/src/games/balloon-blaster/BalloonBlasterScene.ts +225 -0
- package/src/games/bike-racing/BikeMeshes.ts +273 -0
- package/src/games/bike-racing/BikeRacing.tsx +211 -0
- package/src/games/bike-racing/BikeRacingConstants.ts +103 -0
- package/src/games/bike-racing/BikeRacingGame.ts +557 -0
- package/src/games/bike-racing/BikeRacingScene.ts +119 -0
- package/src/games/block-blast/BlockBlast.tsx +73 -0
- package/src/games/block-blast/BlockBlastConstants.ts +179 -0
- package/src/games/block-blast/BlockBlastGame.ts +471 -0
- package/src/games/block-blast/BlockBlastScene.ts +156 -0
- package/src/games/block-breaker/BlockBreaker.tsx +79 -0
- package/src/games/block-breaker/BlockBreakerConstants.ts +139 -0
- package/src/games/block-breaker/BlockBreakerGame.ts +459 -0
- package/src/games/block-breaker/BlockBreakerScene.ts +257 -0
- package/src/games/bluk/Bluk.tsx +82 -0
- package/src/games/bluk/BlukConstants.ts +121 -0
- package/src/games/bluk/BlukGame.ts +323 -0
- package/src/games/bluk/BlukRules.ts +154 -0
- package/src/games/bluk/BlukScene.ts +514 -0
- package/src/games/bubble-shooter/BubbleShooter.tsx +76 -0
- package/src/games/bubble-shooter/BubbleShooterConstants.ts +103 -0
- package/src/games/bubble-shooter/BubbleShooterGame.ts +459 -0
- package/src/games/bubble-shooter/BubbleShooterScene.ts +158 -0
- package/src/games/candy-crush/CandyCrush.tsx +77 -0
- package/src/games/candy-crush/CandyCrushConstants.ts +94 -0
- package/src/games/candy-crush/CandyCrushGame.ts +477 -0
- package/src/games/candy-crush/CandyCrushScene.ts +209 -0
- package/src/games/car-racing/CarMeshes.ts +440 -0
- package/src/games/car-racing/CarRacing.tsx +211 -0
- package/src/games/car-racing/CarRacingConstants.ts +167 -0
- package/src/games/car-racing/CarRacingFacade.ts +40 -0
- package/src/games/car-racing/CarRacingGame.ts +539 -0
- package/src/games/car-racing/CarRacingScene.ts +1026 -0
- package/src/games/car-racing/CarRacingScenery.ts +265 -0
- package/src/games/chameleon-run/ChameleonRun.tsx +96 -0
- package/src/games/chameleon-run/ChameleonRunBackdrop.ts +186 -0
- package/src/games/chameleon-run/ChameleonRunConstants.ts +47 -0
- package/src/games/chameleon-run/ChameleonRunGame.ts +309 -0
- package/src/games/chameleon-run/ChameleonRunMeshes.ts +305 -0
- package/src/games/chameleon-run/ChameleonRunRules.ts +252 -0
- package/src/games/chameleon-run/ChameleonRunScene.ts +310 -0
- package/src/games/checkers/Checkers.tsx +83 -0
- package/src/games/checkers/CheckersAI.ts +255 -0
- package/src/games/checkers/CheckersConstants.ts +68 -0
- package/src/games/checkers/CheckersGame.ts +322 -0
- package/src/games/checkers/CheckersRules.ts +167 -0
- package/src/games/checkers/CheckersScene.ts +308 -0
- package/src/games/color-switch/ColorSwitch.tsx +75 -0
- package/src/games/color-switch/ColorSwitchConstants.ts +61 -0
- package/src/games/color-switch/ColorSwitchGame.ts +329 -0
- package/src/games/color-switch/ColorSwitchScene.ts +220 -0
- package/src/games/colors-sort/ColorsSort.tsx +82 -0
- package/src/games/colors-sort/ColorsSortConstants.ts +119 -0
- package/src/games/colors-sort/ColorsSortGame.ts +246 -0
- package/src/games/colors-sort/ColorsSortScene.ts +315 -0
- package/src/games/connect-em-all/ConnectEmAll.tsx +70 -0
- package/src/games/connect-em-all/ConnectEmAllConstants.ts +77 -0
- package/src/games/connect-em-all/ConnectEmAllGame.ts +401 -0
- package/src/games/connect-em-all/ConnectEmAllScene.ts +235 -0
- package/src/games/crossy-road/CrossyRoad.tsx +74 -0
- package/src/games/crossy-road/CrossyRoadCamera.ts +59 -0
- package/src/games/crossy-road/CrossyRoadConstants.ts +132 -0
- package/src/games/crossy-road/CrossyRoadGame.ts +293 -0
- package/src/games/crossy-road/CrossyRoadMeshes.ts +195 -0
- package/src/games/crossy-road/CrossyRoadPerson.ts +198 -0
- package/src/games/crossy-road/CrossyRoadRules.ts +99 -0
- package/src/games/crossy-road/CrossyRoadScene.ts +355 -0
- package/src/games/dino-jump/DinoJump.tsx +77 -0
- package/src/games/dino-jump/DinoJumpConstants.ts +80 -0
- package/src/games/dino-jump/DinoJumpGame.ts +344 -0
- package/src/games/dino-jump/DinoJumpScene.ts +686 -0
- package/src/games/dots-and-boxes/DotsAndBoxes.tsx +83 -0
- package/src/games/dots-and-boxes/DotsAndBoxesConstants.ts +77 -0
- package/src/games/dots-and-boxes/DotsAndBoxesGame.ts +271 -0
- package/src/games/dots-and-boxes/DotsAndBoxesScene.ts +249 -0
- package/src/games/falling-sticks/FallingSticks.tsx +72 -0
- package/src/games/falling-sticks/FallingSticksConstants.ts +62 -0
- package/src/games/falling-sticks/FallingSticksGame.ts +220 -0
- package/src/games/falling-sticks/FallingSticksRules.ts +145 -0
- package/src/games/falling-sticks/FallingSticksScene.ts +245 -0
- package/src/games/find-different-number/FindDifferentNumber.tsx +74 -0
- package/src/games/find-different-number/FindDifferentNumberConstants.ts +74 -0
- package/src/games/find-different-number/FindDifferentNumberGame.ts +174 -0
- package/src/games/find-different-number/FindDifferentNumberRules.ts +43 -0
- package/src/games/find-different-number/FindDifferentNumberScene.ts +193 -0
- package/src/games/flappy-bird/FlappyBird.tsx +73 -0
- package/src/games/flappy-bird/FlappyBirdConstants.ts +95 -0
- package/src/games/flappy-bird/FlappyBirdGame.ts +375 -0
- package/src/games/flappy-bird/FlappyBirdScene.ts +630 -0
- package/src/games/fruit-merger/FruitMerger.tsx +73 -0
- package/src/games/fruit-merger/FruitMergerConstants.ts +102 -0
- package/src/games/fruit-merger/FruitMergerGame.ts +285 -0
- package/src/games/fruit-merger/FruitMergerRules.ts +286 -0
- package/src/games/fruit-merger/FruitMergerScene.ts +498 -0
- package/src/games/fruit-ninja/FruitNinja.tsx +129 -0
- package/src/games/fruit-ninja/FruitNinjaConstants.ts +107 -0
- package/src/games/fruit-ninja/FruitNinjaGame.ts +391 -0
- package/src/games/fruit-ninja/FruitNinjaScene.ts +319 -0
- package/src/games/fruit-ninja/FruitNinjaWorld.ts +17 -0
- package/src/games/game-2048/Game2048.tsx +84 -0
- package/src/games/game-2048/Game2048Constants.ts +68 -0
- package/src/games/game-2048/Game2048Game.ts +181 -0
- package/src/games/game-2048/Game2048Rules.ts +101 -0
- package/src/games/game-2048/Game2048Scene.ts +206 -0
- package/src/games/knife-hit/KnifeHit.tsx +78 -0
- package/src/games/knife-hit/KnifeHitConstants.ts +89 -0
- package/src/games/knife-hit/KnifeHitGame.ts +264 -0
- package/src/games/knife-hit/KnifeHitScene.ts +360 -0
- package/src/games/ludo-king/LudoKing.tsx +86 -0
- package/src/games/ludo-king/LudoKingConstants.ts +212 -0
- package/src/games/ludo-king/LudoKingGame.ts +326 -0
- package/src/games/ludo-king/LudoKingRules.ts +143 -0
- package/src/games/ludo-king/LudoKingScene.ts +397 -0
- package/src/games/maze-runner/MazeRunner.tsx +88 -0
- package/src/games/maze-runner/MazeRunnerConstants.ts +65 -0
- package/src/games/maze-runner/MazeRunnerGame.ts +176 -0
- package/src/games/maze-runner/MazeRunnerRules.ts +161 -0
- package/src/games/maze-runner/MazeRunnerScene.ts +245 -0
- package/src/games/memory-match/MemoryMatch.tsx +77 -0
- package/src/games/memory-match/MemoryMatchConstants.ts +105 -0
- package/src/games/memory-match/MemoryMatchGame.ts +222 -0
- package/src/games/memory-match/MemoryMatchRules.ts +38 -0
- package/src/games/memory-match/MemoryMatchScene.ts +268 -0
- package/src/games/mine-sweeper/MineSweeper.tsx +77 -0
- package/src/games/mine-sweeper/MineSweeperConstants.ts +94 -0
- package/src/games/mine-sweeper/MineSweeperGame.ts +234 -0
- package/src/games/mine-sweeper/MineSweeperRules.ts +67 -0
- package/src/games/mine-sweeper/MineSweeperScene.ts +262 -0
- package/src/games/mob-control/MobControl.tsx +73 -0
- package/src/games/mob-control/MobControlConstants.ts +106 -0
- package/src/games/mob-control/MobControlGame.ts +176 -0
- package/src/games/mob-control/MobControlMeshes.ts +85 -0
- package/src/games/mob-control/MobControlRenderer.ts +108 -0
- package/src/games/mob-control/MobControlRules.ts +522 -0
- package/src/games/mob-control/MobControlScene.ts +399 -0
- package/src/games/number-search/NumberSearch.tsx +18 -0
- package/src/games/number-search/NumberSearchNumbers.ts +623 -0
- package/src/games/nuts-and-bolts/NutsAndBolts.tsx +85 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsConstants.ts +75 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsGame.ts +298 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsRules.ts +474 -0
- package/src/games/nuts-and-bolts/NutsAndBoltsScene.ts +498 -0
- package/src/games/pac-man/PacMan.tsx +86 -0
- package/src/games/pac-man/PacManConstants.ts +169 -0
- package/src/games/pac-man/PacManGame.ts +406 -0
- package/src/games/pac-man/PacManRules.ts +255 -0
- package/src/games/pac-man/PacManScene.ts +387 -0
- package/src/games/paper-io/PaperIo.tsx +91 -0
- package/src/games/paper-io/PaperIoConstants.ts +86 -0
- package/src/games/paper-io/PaperIoGame.ts +193 -0
- package/src/games/paper-io/PaperIoMeshes.ts +233 -0
- package/src/games/paper-io/PaperIoRules.ts +315 -0
- package/src/games/paper-io/PaperIoScene.ts +310 -0
- package/src/games/penguin-run/PenguinMeshes.ts +269 -0
- package/src/games/penguin-run/PenguinModel.ts +712 -0
- package/src/games/penguin-run/PenguinRun.tsx +77 -0
- package/src/games/penguin-run/PenguinRunConstants.ts +69 -0
- package/src/games/penguin-run/PenguinRunGame.ts +406 -0
- package/src/games/penguin-run/PenguinRunScene.ts +949 -0
- package/src/games/perfect-circle/PerfectCircle.tsx +74 -0
- package/src/games/perfect-circle/PerfectCircleConstants.ts +52 -0
- package/src/games/perfect-circle/PerfectCircleGame.ts +153 -0
- package/src/games/perfect-circle/PerfectCircleRules.ts +111 -0
- package/src/games/perfect-circle/PerfectCircleScene.ts +176 -0
- package/src/games/pipe-connect/PipeConnect.tsx +69 -0
- package/src/games/pipe-connect/PipeConnectConstants.ts +101 -0
- package/src/games/pipe-connect/PipeConnectGame.ts +179 -0
- package/src/games/pipe-connect/PipeConnectRules.ts +326 -0
- package/src/games/pipe-connect/PipeConnectScene.ts +271 -0
- package/src/games/play-with-tua/PlayWithTua.tsx +123 -0
- package/src/games/play-with-tua/PlayWithTuaConstants.ts +70 -0
- package/src/games/play-with-tua/PlayWithTuaGame.ts +167 -0
- package/src/games/play-with-tua/PlayWithTuaModel.ts +42 -0
- package/src/games/play-with-tua/PlayWithTuaScene.ts +36 -0
- package/src/games/popit-fidget/PopitFidget.tsx +72 -0
- package/src/games/popit-fidget/PopitFidgetConstants.ts +71 -0
- package/src/games/popit-fidget/PopitFidgetGame.ts +148 -0
- package/src/games/popit-fidget/PopitFidgetScene.ts +242 -0
- package/src/games/reversi/Reversi.tsx +94 -0
- package/src/games/reversi/ReversiConstants.ts +67 -0
- package/src/games/reversi/ReversiGame.ts +266 -0
- package/src/games/reversi/ReversiRules.ts +176 -0
- package/src/games/reversi/ReversiScene.ts +240 -0
- package/src/games/search-grid/SearchGrid.tsx +92 -0
- package/src/games/search-grid/SearchGridConstants.ts +178 -0
- package/src/games/search-grid/SearchGridGame.ts +209 -0
- package/src/games/search-grid/SearchGridScene.ts +301 -0
- package/src/games/shared/BackdropCard.tsx +54 -0
- package/src/games/shared/EngineBackdrop.ts +300 -0
- package/src/games/shared/EngineBlasts.ts +136 -0
- package/src/games/shared/EngineBlocks.ts +91 -0
- package/src/games/shared/EngineControlText.ts +17 -0
- package/src/games/shared/EngineDice.ts +250 -0
- package/src/games/shared/EngineFootprint.ts +35 -0
- package/src/games/shared/EngineFruits.ts +1435 -0
- package/src/games/shared/EngineGameLoader.tsx +88 -0
- package/src/games/shared/EngineGameScreen.tsx +325 -0
- package/src/games/shared/EngineGameWidth.ts +3 -0
- package/src/games/shared/EngineGameWidth.web.ts +3 -0
- package/src/games/shared/EngineGlyphs.ts +178 -0
- package/src/games/shared/EngineHud.ts +815 -0
- package/src/games/shared/EngineLoading.ts +477 -0
- package/src/games/shared/EngineMeadow.ts +725 -0
- package/src/games/shared/EngineMeshCache.ts +15 -0
- package/src/games/shared/EngineMeshes.ts +10 -0
- package/src/games/shared/EngineRacingChase.ts +21 -0
- package/src/games/shared/EngineRacingHandling.ts +48 -0
- package/src/games/shared/EngineReadyContext.ts +4 -0
- package/src/games/shared/EngineTilt.ts +44 -0
- package/src/games/shared/EngineTouchSurface.tsx +103 -0
- package/src/games/shared/EngineUtils.ts +52 -0
- package/src/games/shared/GameActivity.ts +13 -0
- package/src/games/shared/GameLoading.tsx +202 -0
- package/src/games/shared/GameLoadingTransition.tsx +61 -0
- package/src/games/shared/ProceduralCacheVersion.ts +2 -0
- package/src/games/shared/useEngineGame.ts +240 -0
- package/src/games/shared/useGameResource.ts +21 -0
- package/src/games/shared/useLiveState.ts +58 -0
- package/src/games/sliding-numbers/SlidingNumbers.tsx +71 -0
- package/src/games/sliding-numbers/SlidingNumbersConstants.ts +65 -0
- package/src/games/sliding-numbers/SlidingNumbersGame.ts +192 -0
- package/src/games/sliding-numbers/SlidingNumbersRules.ts +79 -0
- package/src/games/sliding-numbers/SlidingNumbersScene.ts +193 -0
- package/src/games/snake-3d/Snake3D.tsx +76 -0
- package/src/games/snake-3d/Snake3DConstants.ts +61 -0
- package/src/games/snake-3d/Snake3DGame.ts +192 -0
- package/src/games/snake-3d/Snake3DMotion.ts +22 -0
- package/src/games/snake-3d/Snake3DRules.ts +116 -0
- package/src/games/snake-3d/Snake3DScene.ts +322 -0
- package/src/games/snakes-and-ladders/SnakesAndLadders.tsx +87 -0
- package/src/games/snakes-and-ladders/SnakesAndLaddersConstants.ts +136 -0
- package/src/games/snakes-and-ladders/SnakesAndLaddersGame.ts +310 -0
- package/src/games/snakes-and-ladders/SnakesAndLaddersScene.ts +515 -0
- package/src/games/space-fighter/SpaceFighter.tsx +74 -0
- package/src/games/space-fighter/SpaceFighterConstants.ts +86 -0
- package/src/games/space-fighter/SpaceFighterGame.ts +292 -0
- package/src/games/space-fighter/SpaceFighterScene.ts +550 -0
- package/src/games/spider-solitaire/SpiderSolitaire.tsx +80 -0
- package/src/games/spider-solitaire/SpiderSolitaireConstants.ts +107 -0
- package/src/games/spider-solitaire/SpiderSolitaireGame.ts +387 -0
- package/src/games/spider-solitaire/SpiderSolitaireRules.ts +123 -0
- package/src/games/spider-solitaire/SpiderSolitaireScene.ts +352 -0
- package/src/games/stack-tower/StackTower.tsx +76 -0
- package/src/games/stack-tower/StackTowerConstants.ts +74 -0
- package/src/games/stack-tower/StackTowerGame.ts +236 -0
- package/src/games/stack-tower/StackTowerScene.ts +186 -0
- package/src/games/sudoku/Sudoku.tsx +73 -0
- package/src/games/sudoku/SudokuConstants.ts +127 -0
- package/src/games/sudoku/SudokuGame.ts +250 -0
- package/src/games/sudoku/SudokuRules.ts +125 -0
- package/src/games/sudoku/SudokuScene.ts +304 -0
- package/src/games/tangram/Tangram.tsx +79 -0
- package/src/games/tangram/TangramConstants.ts +64 -0
- package/src/games/tangram/TangramGame.ts +356 -0
- package/src/games/tangram/TangramRules.ts +409 -0
- package/src/games/tangram/TangramScene.ts +203 -0
- package/src/games/tank-1990/Tank1990.tsx +78 -0
- package/src/games/tank-1990/Tank1990Constants.ts +81 -0
- package/src/games/tank-1990/Tank1990Game.ts +331 -0
- package/src/games/tank-1990/Tank1990Rules.ts +390 -0
- package/src/games/tank-1990/Tank1990Scene.ts +434 -0
- package/src/games/tic-tac-toe/TicTacToe.tsx +98 -0
- package/src/games/tic-tac-toe/TicTacToeConstants.ts +69 -0
- package/src/games/tic-tac-toe/TicTacToeGame.ts +200 -0
- package/src/games/tic-tac-toe/TicTacToeRules.ts +103 -0
- package/src/games/tic-tac-toe/TicTacToeScene.ts +245 -0
- package/src/games/tile-home/TileHome.tsx +92 -0
- package/src/games/tile-home/TileHomeConstants.ts +139 -0
- package/src/games/tile-home/TileHomeGame.ts +435 -0
- package/src/games/tile-home/TileHomeScene.ts +154 -0
- package/src/games/treasure-hunt/TreasureHunt.tsx +206 -0
- package/src/games/treasure-hunt/TreasureHuntConstants.ts +266 -0
- package/src/games/treasure-hunt/TreasureHuntControls.ts +280 -0
- package/src/games/treasure-hunt/TreasureHuntGame.ts +402 -0
- package/src/games/treasure-hunt/TreasureHuntMeshes.ts +422 -0
- package/src/games/treasure-hunt/TreasureHuntModel.ts +506 -0
- package/src/games/treasure-hunt/TreasureHuntRules.ts +1210 -0
- package/src/games/treasure-hunt/TreasureHuntScene.ts +586 -0
- package/src/games/whack-a-mole/WhackAMole.tsx +79 -0
- package/src/games/whack-a-mole/WhackAMoleConstants.ts +94 -0
- package/src/games/whack-a-mole/WhackAMoleGame.ts +233 -0
- package/src/games/whack-a-mole/WhackAMoleScene.ts +349 -0
- package/src/games/word-search/WordSearch.tsx +18 -0
- package/src/games/word-search/WordSearchWords.ts +1642 -0
- package/src/helpers/GamePatternData.ts +120 -0
- package/src/helpers/GameSettingsModal.tsx +384 -0
- package/src/helpers/GameTheme.tsx +37 -0
- package/src/helpers/IconPaths.ts +6 -0
- package/src/helpers/index.ts +2 -0
- package/src/index.tsx +60 -0
- package/src/services/GameAssetLoader.ts +111 -0
- package/src/services/GameAssets.ts +149 -0
- package/src/services/GameLoaders.ts +93 -0
- package/src/services/GamesConstants.ts +193 -0
- package/src/services/GamesMetadata.ts +711 -0
- package/src/services/GamesService.ts +116 -0
- package/src/services/HapticsService.ts +48 -0
- package/src/services/ScoringService.ts +19 -0
- package/src/services/SfxSources.ts +81 -0
- package/src/services/SoundsService.ts +582 -0
- package/src/services/ThemeService.ts +281 -0
- package/src/services/UtilsService.ts +134 -0
- package/src/services/index.ts +6 -0
- package/lib/module/games/arrows/ArrowsService.js +0 -1
- package/lib/module/games/arrows/ArrowsStore.js +0 -1
- package/lib/module/games/arrows/components/ArrowsGrid.js +0 -1
- package/lib/module/games/arrows/components/ScoreBoard.js +0 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js +0 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +0 -1
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js +0 -1
- package/lib/module/games/balloon-blaster/components/GameArea.js +0 -1
- package/lib/module/games/balloon-blaster/components/GameBackground.js +0 -1
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js +0 -1
- package/lib/module/games/bike-racing/BikeRacingService.js +0 -1
- package/lib/module/games/bike-racing/BikeRacingStore.js +0 -1
- package/lib/module/games/bike-racing/components/BikeComponent.js +0 -1
- package/lib/module/games/bike-racing/components/GameBackground.js +0 -1
- package/lib/module/games/bike-racing/components/ScoreBoard.js +0 -1
- package/lib/module/games/block-blast/BlockBlastService.js +0 -1
- package/lib/module/games/block-blast/BlockBlastStore.js +0 -1
- package/lib/module/games/block-blast/components/BlockPieceComponent.js +0 -1
- package/lib/module/games/block-blast/components/GameArea.js +0 -1
- package/lib/module/games/block-blast/components/GridComponent.js +0 -1
- package/lib/module/games/block-blast/components/ScoreBoard.js +0 -1
- package/lib/module/games/block-breaker/BlockBreakerService.js +0 -1
- package/lib/module/games/block-breaker/BlockBreakerStore.js +0 -1
- package/lib/module/games/block-breaker/components/BlastAnimation.js +0 -1
- package/lib/module/games/block-breaker/components/GameArea.js +0 -1
- package/lib/module/games/block-breaker/components/ScoreBoard.js +0 -1
- package/lib/module/games/bluk/BlukService.js +0 -1
- package/lib/module/games/bluk/BlukStore.js +0 -1
- package/lib/module/games/bluk/components/GameArea.js +0 -1
- package/lib/module/games/bluk/components/GameBackground.js +0 -1
- package/lib/module/games/bluk/components/ScoreBoard.js +0 -1
- package/lib/module/games/bubble-shooter/BubbleShooterService.js +0 -1
- package/lib/module/games/bubble-shooter/BubbleShooterStore.js +0 -1
- package/lib/module/games/bubble-shooter/components/GameArea.js +0 -1
- package/lib/module/games/bubble-shooter/components/ScoreBoard.js +0 -1
- package/lib/module/games/candy-crush/CandyCrushService.js +0 -1
- package/lib/module/games/candy-crush/CandyCrushStore.js +0 -1
- package/lib/module/games/candy-crush/components/CandyItem.js +0 -1
- package/lib/module/games/candy-crush/components/GameGrid.js +0 -1
- package/lib/module/games/candy-crush/components/ScoreBoard.js +0 -1
- package/lib/module/games/car-racing/CarRacingService.js +0 -1
- package/lib/module/games/car-racing/CarRacingStore.js +0 -1
- package/lib/module/games/car-racing/components/CarComponent.js +0 -1
- package/lib/module/games/car-racing/components/GameBackground.js +0 -1
- package/lib/module/games/car-racing/components/ScoreBoard.js +0 -1
- package/lib/module/games/chameleon-run/ChameleonRunService.js +0 -1
- package/lib/module/games/chameleon-run/ChameleonRunStore.js +0 -1
- package/lib/module/games/chameleon-run/components/GameArea.js +0 -1
- package/lib/module/games/chameleon-run/components/GameBackground.js +0 -1
- package/lib/module/games/chameleon-run/components/ScoreBoard.js +0 -1
- package/lib/module/games/checkers/CheckersService.js +0 -1
- package/lib/module/games/checkers/CheckersStore.js +0 -1
- package/lib/module/games/checkers/components/GameBoard.js +0 -1
- package/lib/module/games/checkers/components/ScoreBoard.js +0 -1
- package/lib/module/games/color-switch/ColorSwitchService.js +0 -1
- package/lib/module/games/color-switch/ColorSwitchStore.js +0 -1
- package/lib/module/games/color-switch/components/GameArea.js +0 -1
- package/lib/module/games/color-switch/components/ScoreBoard.js +0 -1
- package/lib/module/games/colors-sort/ColorsSortService.js +0 -1
- package/lib/module/games/colors-sort/ColorsSortStore.js +0 -1
- package/lib/module/games/colors-sort/components/ColorContainer.js +0 -1
- package/lib/module/games/colors-sort/components/ScoreBoard.js +0 -1
- package/lib/module/games/connect-em-all/ConnectEmAllService.js +0 -1
- package/lib/module/games/connect-em-all/ConnectEmAllStore.js +0 -1
- package/lib/module/games/connect-em-all/components/GameBoard.js +0 -1
- package/lib/module/games/connect-em-all/components/ScoreBoard.js +0 -1
- package/lib/module/games/crossy-road/CrossyRoadService.js +0 -1
- package/lib/module/games/crossy-road/CrossyRoadStore.js +0 -1
- package/lib/module/games/crossy-road/components/GameArea.js +0 -1
- package/lib/module/games/crossy-road/components/ScoreBoard.js +0 -1
- package/lib/module/games/dino-jump/DinoJumpService.js +0 -1
- package/lib/module/games/dino-jump/DinoJumpStore.js +0 -1
- package/lib/module/games/dino-jump/components/DinoSprite.js +0 -1
- package/lib/module/games/dino-jump/components/GameArea.js +0 -1
- package/lib/module/games/dino-jump/components/GameBackground.js +0 -1
- package/lib/module/games/dino-jump/components/ObstacleSprite.js +0 -1
- package/lib/module/games/dino-jump/components/ScoreBoard.js +0 -1
- package/lib/module/games/dino-jump/components/StarSprite.js +0 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesService.js +0 -1
- package/lib/module/games/dots-and-boxes/DotsAndBoxesStore.js +0 -1
- package/lib/module/games/dots-and-boxes/components/GameBoard.js +0 -1
- package/lib/module/games/dots-and-boxes/components/ScoreBoard.js +0 -1
- package/lib/module/games/falling-sticks/FallingSticksService.js +0 -1
- package/lib/module/games/falling-sticks/FallingSticksStore.js +0 -1
- package/lib/module/games/falling-sticks/components/GameArea.js +0 -1
- package/lib/module/games/falling-sticks/components/GameBackground.js +0 -1
- package/lib/module/games/falling-sticks/components/ScoreBoard.js +0 -1
- package/lib/module/games/find-different-number/FindDifferentNumberService.js +0 -1
- package/lib/module/games/find-different-number/FindDifferentNumberStore.js +0 -1
- package/lib/module/games/find-different-number/components/GameGrid.js +0 -1
- package/lib/module/games/find-different-number/components/ScoreBoard.js +0 -1
- package/lib/module/games/flappy-bird/FlappyBirdStore.js +0 -1
- package/lib/module/games/flappy-bird/components/Bird.js +0 -1
- package/lib/module/games/flappy-bird/components/GameArea.js +0 -1
- package/lib/module/games/flappy-bird/components/GameBackground.js +0 -1
- package/lib/module/games/flappy-bird/components/Pipes.js +0 -1
- package/lib/module/games/flappy-bird/components/ScoreBoard.js +0 -1
- package/lib/module/games/fruit-merger/FruitMergerService.js +0 -1
- package/lib/module/games/fruit-merger/FruitMergerStore.js +0 -1
- package/lib/module/games/fruit-merger/components/FruitItem.js +0 -1
- package/lib/module/games/fruit-merger/components/GameArea.js +0 -1
- package/lib/module/games/fruit-merger/components/ScoreBoard.js +0 -1
- package/lib/module/games/fruit-ninja/FruitNinjaService.js +0 -1
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js +0 -1
- package/lib/module/games/fruit-ninja/components/FruitComponent.js +0 -1
- package/lib/module/games/fruit-ninja/components/GameArea.js +0 -1
- package/lib/module/games/fruit-ninja/components/GameBackground.js +0 -1
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js +0 -1
- package/lib/module/games/game-2048/Game2048Service.js +0 -1
- package/lib/module/games/game-2048/Game2048Store.js +0 -1
- package/lib/module/games/game-2048/components/GameGrid.js +0 -1
- package/lib/module/games/game-2048/components/ScoreBoard.js +0 -1
- package/lib/module/games/knife-hit/KnifeHitService.js +0 -1
- package/lib/module/games/knife-hit/KnifeHitStore.js +0 -1
- package/lib/module/games/knife-hit/components/GameArea.js +0 -1
- package/lib/module/games/knife-hit/components/ScoreBoard.js +0 -1
- package/lib/module/games/ludo-king/LudoKingService.js +0 -1
- package/lib/module/games/ludo-king/LudoKingStore.js +0 -1
- package/lib/module/games/ludo-king/components/Dice.js +0 -1
- package/lib/module/games/ludo-king/components/GameBoard.js +0 -1
- package/lib/module/games/ludo-king/components/ScoreBoard.js +0 -1
- package/lib/module/games/maze-runner/MazeRunnerStore.js +0 -1
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +0 -1
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js +0 -1
- package/lib/module/games/maze-runner/components/ScoreBoard.js +0 -1
- package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +0 -1
- package/lib/module/games/maze-runner/components/WallComponent.js +0 -1
- package/lib/module/games/memory-match/MemoryMatchService.js +0 -1
- package/lib/module/games/memory-match/MemoryMatchStore.js +0 -1
- package/lib/module/games/memory-match/components/Card.js +0 -1
- package/lib/module/games/memory-match/components/GameBoard.js +0 -1
- package/lib/module/games/memory-match/components/ScoreBoard.js +0 -1
- package/lib/module/games/mine-sweeper/MineSweeperService.js +0 -1
- package/lib/module/games/mine-sweeper/MineSweeperStore.js +0 -1
- package/lib/module/games/mine-sweeper/components/GameArea.js +0 -1
- package/lib/module/games/mine-sweeper/components/ScoreBoard.js +0 -1
- package/lib/module/games/mob-control/MobControlService.js +0 -1
- package/lib/module/games/mob-control/MobControlStore.js +0 -1
- package/lib/module/games/mob-control/components/GameArea.js +0 -1
- package/lib/module/games/mob-control/components/ScoreBoard.js +0 -1
- package/lib/module/games/number-search/NumberSearchConstants.js +0 -1
- package/lib/module/games/number-search/NumberSearchService.js +0 -1
- package/lib/module/games/number-search/NumberSearchStore.js +0 -1
- package/lib/module/games/number-search/components/GameBoard.js +0 -1
- package/lib/module/games/number-search/components/NumberList.js +0 -1
- package/lib/module/games/number-search/components/ScoreBoard.js +0 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsService.js +0 -1
- package/lib/module/games/nuts-and-bolts/NutsAndBoltsStore.js +0 -1
- package/lib/module/games/nuts-and-bolts/components/GameBoard.js +0 -1
- package/lib/module/games/nuts-and-bolts/components/ScoreBoard.js +0 -1
- package/lib/module/games/pac-man/PacManService.js +0 -1
- package/lib/module/games/pac-man/PacManStore.js +0 -1
- package/lib/module/games/pac-man/components/GameCanvas.js +0 -1
- package/lib/module/games/pac-man/components/ScoreBoard.js +0 -1
- package/lib/module/games/paper-io/PaperIoService.js +0 -1
- package/lib/module/games/paper-io/PaperIoStore.js +0 -1
- package/lib/module/games/paper-io/components/GameArea.js +0 -1
- package/lib/module/games/paper-io/components/ScoreBoard.js +0 -1
- package/lib/module/games/perfect-circle/PerfectCircleService.js +0 -1
- package/lib/module/games/perfect-circle/PerfectCircleStore.js +0 -1
- package/lib/module/games/perfect-circle/components/DrawingCanvas.js +0 -1
- package/lib/module/games/perfect-circle/components/ScoreBoard.js +0 -1
- package/lib/module/games/pipe-connect/PipeConnectService.js +0 -1
- package/lib/module/games/pipe-connect/PipeConnectStore.js +0 -1
- package/lib/module/games/pipe-connect/components/GameArea.js +0 -1
- package/lib/module/games/pipe-connect/components/ScoreBoard.js +0 -1
- package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -1
- package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -1
- package/lib/module/games/popit-fidget/components/BubbleComponent.js +0 -1
- package/lib/module/games/popit-fidget/components/FidgetGrid.js +0 -1
- package/lib/module/games/popit-fidget/components/ScoreBoard.js +0 -1
- package/lib/module/games/reversi/ReversiStore.js +0 -1
- package/lib/module/games/reversi/components/GameBoard.js +0 -1
- package/lib/module/games/reversi/components/ScoreBoard.js +0 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersService.js +0 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +0 -1
- package/lib/module/games/sliding-numbers/components/NumbersGrid.js +0 -1
- package/lib/module/games/sliding-numbers/components/ScoreBoard.js +0 -1
- package/lib/module/games/snake-3d/Snake3DService.js +0 -1
- package/lib/module/games/snake-3d/Snake3DStore.js +0 -1
- package/lib/module/games/snake-3d/components/GameGrid.js +0 -1
- package/lib/module/games/snake-3d/components/ScoreBoard.js +0 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersService.js +0 -1
- package/lib/module/games/snakes-and-ladders/SnakesAndLaddersStore.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/Dice.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/GameBoard.js +0 -1
- package/lib/module/games/snakes-and-ladders/components/ScoreBoard.js +0 -1
- package/lib/module/games/space-fighter/SpaceFighterService.js +0 -1
- package/lib/module/games/space-fighter/SpaceFighterStore.js +0 -1
- package/lib/module/games/space-fighter/components/AsteroidComponent.js +0 -1
- package/lib/module/games/space-fighter/components/GameArea.js +0 -1
- package/lib/module/games/space-fighter/components/GameBackground.js +0 -1
- package/lib/module/games/space-fighter/components/ScoreBoard.js +0 -1
- package/lib/module/games/space-fighter/components/Spacecraft3D.js +0 -1
- package/lib/module/games/space-fighter/components/SpacecraftPath.js +0 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireService.js +0 -1
- package/lib/module/games/spider-solitaire/SpiderSolitaireStore.js +0 -1
- package/lib/module/games/spider-solitaire/components/Card.js +0 -1
- package/lib/module/games/spider-solitaire/components/CardPile.js +0 -1
- package/lib/module/games/spider-solitaire/components/ScoreBoard.js +0 -1
- package/lib/module/games/stack-tower/StackTowerService.js +0 -1
- package/lib/module/games/stack-tower/StackTowerStore.js +0 -1
- package/lib/module/games/stack-tower/components/GameArea.js +0 -1
- package/lib/module/games/stack-tower/components/ScoreBoard.js +0 -1
- package/lib/module/games/sudoku/SudokuService.js +0 -1
- package/lib/module/games/sudoku/SudokuStore.js +0 -1
- package/lib/module/games/sudoku/components/GameArea.js +0 -1
- package/lib/module/games/sudoku/components/ScoreBoard.js +0 -1
- package/lib/module/games/tangram/TangramService.js +0 -1
- package/lib/module/games/tangram/TangramStore.js +0 -1
- package/lib/module/games/tangram/components/GameBoard.js +0 -1
- package/lib/module/games/tangram/components/ScoreBoard.js +0 -1
- package/lib/module/games/tank-1990/Tank1990Service.js +0 -1
- package/lib/module/games/tank-1990/Tank1990Store.js +0 -1
- package/lib/module/games/tank-1990/components/Controls.js +0 -1
- package/lib/module/games/tank-1990/components/GameBoard.js +0 -1
- package/lib/module/games/tank-1990/components/ScoreBoard.js +0 -1
- package/lib/module/games/tic-tac-toe/TicTacToeService.js +0 -1
- package/lib/module/games/tic-tac-toe/TicTacToeStore.js +0 -1
- package/lib/module/games/tic-tac-toe/components/GameBoard.js +0 -1
- package/lib/module/games/tic-tac-toe/components/ScoreBoard.js +0 -1
- package/lib/module/games/tile-home/TileHomeService.js +0 -1
- package/lib/module/games/tile-home/TileHomeStore.js +0 -1
- package/lib/module/games/tile-home/components/AnimatingTile.js +0 -1
- package/lib/module/games/tile-home/components/FlyingTile.js +0 -1
- package/lib/module/games/tile-home/components/GameBoard.js +0 -1
- package/lib/module/games/tile-home/components/ScoreBoard.js +0 -1
- package/lib/module/games/tile-home/components/TileItem.js +0 -1
- package/lib/module/games/tile-home/components/TileSlot.js +0 -1
- package/lib/module/games/whack-a-mole/WhackAMoleService.js +0 -1
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameBackground.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameGrid.js +0 -1
- package/lib/module/games/whack-a-mole/components/GameHole.js +0 -1
- package/lib/module/games/whack-a-mole/components/MoleCharacter.js +0 -1
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js +0 -1
- package/lib/module/games/word-search/WordSearchConstants.js +0 -1
- package/lib/module/games/word-search/WordSearchService.js +0 -1
- package/lib/module/games/word-search/WordSearchStore.js +0 -1
- package/lib/module/games/word-search/components/GameBoard.js +0 -1
- package/lib/module/games/word-search/components/ScoreBoard.js +0 -1
- package/lib/module/games/word-search/components/WordList.js +0 -1
- package/lib/module/helpers/AnimatedScore.js +0 -1
- package/lib/module/helpers/AnimationFrame.js +0 -1
- package/lib/module/helpers/AnimationTracker.js +0 -1
- package/lib/module/helpers/BlastAnimation.js +0 -1
- package/lib/module/helpers/ErrorHandler.js +0 -1
- package/lib/module/helpers/GameBackgroundPattern.js +0 -1
- package/lib/module/helpers/GameControlButton.js +0 -1
- package/lib/module/helpers/GameOverModal.js +0 -1
- package/lib/module/helpers/GameTimer.js +0 -1
- package/lib/module/helpers/Icons.js +0 -1
- package/lib/module/helpers/ParticleBlast.js +0 -1
- package/lib/module/helpers/ScoreBoardContainer.js +0 -1
- package/lib/module/helpers/assets/apple-fruit.js +0 -1
- package/lib/module/helpers/assets/avocado-item.js +0 -1
- package/lib/module/helpers/assets/banana-fruit.js +0 -1
- package/lib/module/helpers/assets/bomb-item.js +0 -1
- package/lib/module/helpers/assets/broccoli-item.js +0 -1
- package/lib/module/helpers/assets/cherries-fruit.js +0 -1
- package/lib/module/helpers/assets/donut-item.js +0 -1
- package/lib/module/helpers/assets/dragonfruit-item.js +0 -1
- package/lib/module/helpers/assets/fries-item.js +0 -1
- package/lib/module/helpers/assets/fruit-helpers.js +0 -1
- package/lib/module/helpers/assets/grapes-fruit.js +0 -1
- package/lib/module/helpers/assets/icecream-item.js +0 -1
- package/lib/module/helpers/assets/index.js +0 -1
- package/lib/module/helpers/assets/kiwi-fruit.js +0 -1
- package/lib/module/helpers/assets/mango-fruit.js +0 -1
- package/lib/module/helpers/assets/orange-fruit.js +0 -1
- package/lib/module/helpers/assets/papaya-fruit.js +0 -1
- package/lib/module/helpers/assets/papaya-full-fruit.js +0 -1
- package/lib/module/helpers/assets/peach-fruit.js +0 -1
- package/lib/module/helpers/assets/pineapple-fruit.js +0 -1
- package/lib/module/helpers/assets/pomegranate-fruit.js +0 -1
- package/lib/module/helpers/assets/pumpkin-fruit.js +0 -1
- package/lib/module/helpers/assets/raspberry-item.js +0 -1
- package/lib/module/helpers/assets/star-item.js +0 -1
- package/lib/module/helpers/assets/strawberry-fruit.js +0 -1
- package/lib/module/helpers/assets/watermelon-fruit.js +0 -1
- package/lib/module/types.d.js +0 -1
- package/lib/typescript/src/games/arrows/ArrowsService.d.ts +0 -6
- package/lib/typescript/src/games/arrows/ArrowsStore.d.ts +0 -51
- package/lib/typescript/src/games/arrows/components/ArrowsGrid.d.ts +0 -13
- package/lib/typescript/src/games/arrows/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -80
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +0 -30
- package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts +0 -9
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +0 -9
- package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +0 -44
- package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +0 -68
- package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +0 -12
- package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +0 -16
- package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +0 -70
- package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +0 -11
- package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +0 -11
- package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +0 -8
- package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/block-breaker/BlockBreakerService.d.ts +0 -88
- package/lib/typescript/src/games/block-breaker/BlockBreakerStore.d.ts +0 -47
- package/lib/typescript/src/games/block-breaker/components/BlastAnimation.d.ts +0 -15
- package/lib/typescript/src/games/block-breaker/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/block-breaker/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bluk/BlukService.d.ts +0 -71
- package/lib/typescript/src/games/bluk/BlukStore.d.ts +0 -52
- package/lib/typescript/src/games/bluk/components/GameArea.d.ts +0 -17
- package/lib/typescript/src/games/bluk/components/GameBackground.d.ts +0 -9
- package/lib/typescript/src/games/bluk/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +0 -35
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +0 -63
- package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +0 -37
- package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +0 -53
- package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +0 -11
- package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +0 -5
- package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +0 -44
- package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +0 -68
- package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +0 -12
- package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/chameleon-run/ChameleonRunService.d.ts +0 -76
- package/lib/typescript/src/games/chameleon-run/ChameleonRunStore.d.ts +0 -48
- package/lib/typescript/src/games/chameleon-run/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/chameleon-run/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/chameleon-run/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/checkers/CheckersService.d.ts +0 -6
- package/lib/typescript/src/games/checkers/CheckersStore.d.ts +0 -48
- package/lib/typescript/src/games/checkers/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/checkers/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/color-switch/ColorSwitchService.d.ts +0 -63
- package/lib/typescript/src/games/color-switch/ColorSwitchStore.d.ts +0 -43
- package/lib/typescript/src/games/color-switch/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/color-switch/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts +0 -61
- package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts +0 -56
- package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts +0 -7
- package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllService.d.ts +0 -20
- package/lib/typescript/src/games/connect-em-all/ConnectEmAllStore.d.ts +0 -48
- package/lib/typescript/src/games/connect-em-all/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/connect-em-all/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/crossy-road/CrossyRoadService.d.ts +0 -89
- package/lib/typescript/src/games/crossy-road/CrossyRoadStore.d.ts +0 -39
- package/lib/typescript/src/games/crossy-road/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/crossy-road/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +0 -39
- package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +0 -97
- package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +0 -2
- package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +0 -8
- package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +0 -2
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesService.d.ts +0 -45
- package/lib/typescript/src/games/dots-and-boxes/DotsAndBoxesStore.d.ts +0 -37
- package/lib/typescript/src/games/dots-and-boxes/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/dots-and-boxes/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/falling-sticks/FallingSticksService.d.ts +0 -38
- package/lib/typescript/src/games/falling-sticks/FallingSticksStore.d.ts +0 -31
- package/lib/typescript/src/games/falling-sticks/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/falling-sticks/components/GameBackground.d.ts +0 -6
- package/lib/typescript/src/games/falling-sticks/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberService.d.ts +0 -6
- package/lib/typescript/src/games/find-different-number/FindDifferentNumberStore.d.ts +0 -36
- package/lib/typescript/src/games/find-different-number/components/GameGrid.d.ts +0 -7
- package/lib/typescript/src/games/find-different-number/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +0 -68
- package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +0 -2
- package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +0 -8
- package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +0 -3
- package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +0 -66
- package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +0 -8
- package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +0 -73
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +0 -38
- package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts +0 -8
- package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +0 -102
- package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +0 -44
- package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/knife-hit/KnifeHitService.d.ts +0 -48
- package/lib/typescript/src/games/knife-hit/KnifeHitStore.d.ts +0 -41
- package/lib/typescript/src/games/knife-hit/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/knife-hit/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/ludo-king/LudoKingService.d.ts +0 -33
- package/lib/typescript/src/games/ludo-king/LudoKingStore.d.ts +0 -34
- package/lib/typescript/src/games/ludo-king/components/Dice.d.ts +0 -7
- package/lib/typescript/src/games/ludo-king/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/ludo-king/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/maze-runner/MazeRunnerStore.d.ts +0 -62
- package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts +0 -10
- package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts +0 -33
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +0 -24
- package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts +0 -24
- package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts +0 -9
- package/lib/typescript/src/games/memory-match/MemoryMatchService.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/MemoryMatchStore.d.ts +0 -42
- package/lib/typescript/src/games/memory-match/components/Card.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/memory-match/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/mine-sweeper/MineSweeperService.d.ts +0 -22
- package/lib/typescript/src/games/mine-sweeper/MineSweeperStore.d.ts +0 -73
- package/lib/typescript/src/games/mine-sweeper/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/mine-sweeper/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/mob-control/MobControlService.d.ts +0 -74
- package/lib/typescript/src/games/mob-control/MobControlStore.d.ts +0 -66
- package/lib/typescript/src/games/mob-control/components/GameArea.d.ts +0 -11
- package/lib/typescript/src/games/mob-control/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/number-search/NumberSearchConstants.d.ts +0 -63
- package/lib/typescript/src/games/number-search/NumberSearchService.d.ts +0 -34
- package/lib/typescript/src/games/number-search/NumberSearchStore.d.ts +0 -70
- package/lib/typescript/src/games/number-search/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/number-search/components/NumberList.d.ts +0 -2
- package/lib/typescript/src/games/number-search/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsService.d.ts +0 -67
- package/lib/typescript/src/games/nuts-and-bolts/NutsAndBoltsStore.d.ts +0 -45
- package/lib/typescript/src/games/nuts-and-bolts/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/nuts-and-bolts/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/pac-man/PacManService.d.ts +0 -73
- package/lib/typescript/src/games/pac-man/PacManStore.d.ts +0 -89
- package/lib/typescript/src/games/pac-man/components/GameCanvas.d.ts +0 -2
- package/lib/typescript/src/games/pac-man/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/paper-io/PaperIoService.d.ts +0 -70
- package/lib/typescript/src/games/paper-io/PaperIoStore.d.ts +0 -51
- package/lib/typescript/src/games/paper-io/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/paper-io/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +0 -15
- package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +0 -55
- package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +0 -8
- package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/pipe-connect/PipeConnectService.d.ts +0 -17
- package/lib/typescript/src/games/pipe-connect/PipeConnectStore.d.ts +0 -31
- package/lib/typescript/src/games/pipe-connect/components/GameArea.d.ts +0 -7
- package/lib/typescript/src/games/pipe-connect/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -30
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +0 -33
- package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +0 -10
- package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +0 -10
- package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/reversi/ReversiStore.d.ts +0 -46
- package/lib/typescript/src/games/reversi/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/reversi/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +0 -6
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +0 -38
- package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +0 -7
- package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/snake-3d/Snake3DService.d.ts +0 -29
- package/lib/typescript/src/games/snake-3d/Snake3DStore.d.ts +0 -49
- package/lib/typescript/src/games/snake-3d/components/GameGrid.d.ts +0 -2
- package/lib/typescript/src/games/snake-3d/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersService.d.ts +0 -22
- package/lib/typescript/src/games/snakes-and-ladders/SnakesAndLaddersStore.d.ts +0 -40
- package/lib/typescript/src/games/snakes-and-ladders/components/Dice.d.ts +0 -7
- package/lib/typescript/src/games/snakes-and-ladders/components/GameBoard.d.ts +0 -2
- package/lib/typescript/src/games/snakes-and-ladders/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts +0 -117
- package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts +0 -54
- package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts +0 -11
- package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts +0 -9
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireService.d.ts +0 -23
- package/lib/typescript/src/games/spider-solitaire/SpiderSolitaireStore.d.ts +0 -71
- package/lib/typescript/src/games/spider-solitaire/components/Card.d.ts +0 -10
- package/lib/typescript/src/games/spider-solitaire/components/CardPile.d.ts +0 -12
- package/lib/typescript/src/games/spider-solitaire/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/stack-tower/StackTowerService.d.ts +0 -51
- package/lib/typescript/src/games/stack-tower/StackTowerStore.d.ts +0 -52
- package/lib/typescript/src/games/stack-tower/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/stack-tower/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/sudoku/SudokuService.d.ts +0 -24
- package/lib/typescript/src/games/sudoku/SudokuStore.d.ts +0 -65
- package/lib/typescript/src/games/sudoku/components/GameArea.d.ts +0 -8
- package/lib/typescript/src/games/sudoku/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tangram/TangramService.d.ts +0 -6
- package/lib/typescript/src/games/tangram/TangramStore.d.ts +0 -34
- package/lib/typescript/src/games/tangram/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/tangram/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tank-1990/Tank1990Service.d.ts +0 -80
- package/lib/typescript/src/games/tank-1990/Tank1990Store.d.ts +0 -48
- package/lib/typescript/src/games/tank-1990/components/Controls.d.ts +0 -2
- package/lib/typescript/src/games/tank-1990/components/GameBoard.d.ts +0 -2
- package/lib/typescript/src/games/tank-1990/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeService.d.ts +0 -0
- package/lib/typescript/src/games/tic-tac-toe/TicTacToeStore.d.ts +0 -51
- package/lib/typescript/src/games/tic-tac-toe/components/GameBoard.d.ts +0 -6
- package/lib/typescript/src/games/tic-tac-toe/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tile-home/TileHomeService.d.ts +0 -1
- package/lib/typescript/src/games/tile-home/TileHomeStore.d.ts +0 -57
- package/lib/typescript/src/games/tile-home/components/AnimatingTile.d.ts +0 -9
- package/lib/typescript/src/games/tile-home/components/FlyingTile.d.ts +0 -16
- package/lib/typescript/src/games/tile-home/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/tile-home/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/tile-home/components/TileItem.d.ts +0 -11
- package/lib/typescript/src/games/tile-home/components/TileSlot.d.ts +0 -7
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +0 -32
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +0 -39
- package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +0 -7
- package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts +0 -10
- package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts +0 -11
- package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +0 -6
- package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/word-search/WordSearchConstants.d.ts +0 -63
- package/lib/typescript/src/games/word-search/WordSearchService.d.ts +0 -34
- package/lib/typescript/src/games/word-search/WordSearchStore.d.ts +0 -70
- package/lib/typescript/src/games/word-search/components/GameBoard.d.ts +0 -7
- package/lib/typescript/src/games/word-search/components/ScoreBoard.d.ts +0 -6
- package/lib/typescript/src/games/word-search/components/WordList.d.ts +0 -2
- package/lib/typescript/src/helpers/AnimatedScore.d.ts +0 -36
- package/lib/typescript/src/helpers/AnimationFrame.d.ts +0 -40
- package/lib/typescript/src/helpers/AnimationTracker.d.ts +0 -44
- package/lib/typescript/src/helpers/BlastAnimation.d.ts +0 -16
- package/lib/typescript/src/helpers/ErrorHandler.d.ts +0 -123
- package/lib/typescript/src/helpers/GameBackgroundPattern.d.ts +0 -7
- package/lib/typescript/src/helpers/GameControlButton.d.ts +0 -11
- package/lib/typescript/src/helpers/GameOverModal.d.ts +0 -15
- package/lib/typescript/src/helpers/GameTimer.d.ts +0 -26
- package/lib/typescript/src/helpers/Icons.d.ts +0 -12
- package/lib/typescript/src/helpers/ParticleBlast.d.ts +0 -11
- package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +0 -85
- package/lib/typescript/src/helpers/assets/apple-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/avocado-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/banana-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/bomb-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/broccoli-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/cherries-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/donut-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/dragonfruit-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/fries-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/fruit-helpers.d.ts +0 -154
- package/lib/typescript/src/helpers/assets/grapes-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/icecream-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/index.d.ts +0 -31
- package/lib/typescript/src/helpers/assets/kiwi-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/mango-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/orange-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/papaya-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/papaya-full-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/peach-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pineapple-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pomegranate-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/pumpkin-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/raspberry-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/star-item.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/strawberry-fruit.d.ts +0 -4
- package/lib/typescript/src/helpers/assets/watermelon-fruit.d.ts +0 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{AI_THINK,CANT_MOVE_DELAY,HOME_YARDS,HOP_TIME,MAX_SIXES,MOVE_DELAY,NEXT_TURN_DELAY,PENALTY_DELAY,ROLL_TIME}from"./LudoKingConstants.js";import{calculateScore,canMove,createPlayers,getWinner,isFinished,isGameOver,journey,movableTokens,moveToken,rollDice,selectAIMove,tokenCell}from"./LudoKingRules.js";import{aimCamera,bobToken,buildScene,captureBurst,confetti,finishBurst,hopToken,placeToken,removeScene,rollDie,setSceneTheme,showHints,showRollHint}from"./LudoKingScene.js";const WORLD_CAPACITY=700,MAX_STEP=.1;export function createGame(e){const n=new World(700),o=createPlayers("green",["red"]),r={world:n,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",players:o,turn:0,dice:0,stage:"rolling",sixes:0,get score(){return n.scoreboard.score},won:!1,onPhase:e=>{},onFinished:(e,n)=>{},onScore:e=>{},onTurn:e=>{},onEvent:(e,n)=>{}};return n.scoreboard.reset(),r}const after=(e,n,o)=>e.world.after(n,o),current=e=>e.players[e.turn],tokenIdsOf=e=>e.flatMap(e=>e.tokens.map(n=>({id:n.id,color:e.color})));export function setLayout(e,n){e.scene&&removeScene(e.world,e.scene),e.layout=n,aimCamera(e.camera,n),e.scene=buildScene(e.world,n,e.theme,tokenIdsOf(e.players)),arrange(e),idle(e)}export function setTheme(e,n){e.theme=n,e.scene&&setSceneTheme(e.world,e.scene,n)}function arrange(e){const{layout:n,scene:o}=e;if(!n||!o)return;const r=new Map;for(const n of e.players)for(const e of n.tokens){const n=tokenCell(e),o=n.row+","+n.col;(r.get(o)??r.set(o,[]).get(o)).push({id:e.id})}for(const[t,s]of r){const[r,i]=t.split(",").map(Number);s.forEach((t,a)=>placeToken(e.world,n,o,t.id,{row:r,col:i},s.length>1?.022*(a-(s.length-1)/2):0))}}function idle(e){const{layout:n,scene:o}=e;if(!n||!o)return;const r="playing"===e.phase;if(showRollHint(e.world,n,o,r&&"rolling"===e.stage&&0===e.turn),!r||"rolling"!==e.stage&&"thinking"!==e.stage&&"await"!==e.stage?bobToken(e.world,n,o,[]):bobToken(e.world,n,o,current(e).tokens.map(e=>e.id)),r&&"await"===e.stage&&0===e.turn){const r=movableTokens(current(e),e.dice).map(e=>tokenCell(e));showHints(e.world,n,o,r)}else showHints(e.world,n,o,[])}export function start(e){"ready"===e.phase&&(e.phase="playing",e.onPhase("playing"),beginTurn(e))}export function reset(e){e.world.cancelTimers(),e.players=createPlayers("green",["red"]),e.turn=0,e.dice=0,e.stage="rolling",e.sixes=0,e.world.scoreboard.reset(),e.won=!1,e.phase="ready",arrange(e),idle(e),e.onFinished(0,0),e.onScore(0),e.onTurn(0),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,n){e.world.isDisposed||e.world.update(Math.min(n,.1))}export function tap(e,n,o){if("playing"!==e.phase||!e.scene)return;const r=e.world.pick(n,o);if(!r)return;if(r.entity===e.scene.die)return void("rolling"===e.stage&&0===e.turn&&(e.onEvent("tap",0),roll(e)));const t=e.scene.tokenAt.get(r.entity);if(!t||"await"!==e.stage||0!==e.turn)return;const s=current(e).tokens.find(e=>e.id===t);s&&canMove(s,e.dice)&&applyMove(e,s)}function beginTurn(e){e.dice=0,current(e).isAI?(e.stage="thinking",idle(e),after(e,AI_THINK,()=>roll(e))):(e.stage="rolling",idle(e))}function roll(e){const{layout:n,scene:o}=e;if(!n||!o)return;e.stage="busy",idle(e);const r=rollDice();e.onEvent("roll",e.turn),rollDie(e.world,n,o,r,ROLL_TIME,()=>e.world.isDisposed),after(e,ROLL_TIME,()=>rolled(e,r))}function rolled(e,n){return e.dice=n,e.sixes=6===n?e.sixes+1:0,e.sixes>=MAX_SIXES?(e.onEvent("penalty",e.turn),e.sixes=0,void after(e,PENALTY_DELAY,()=>passTurn(e))):(6===n&&e.onEvent("six",e.turn),movableTokens(current(e),n).length?void(current(e).isAI?after(e,MOVE_DELAY,()=>{const o=selectAIMove(current(e),n,e.players);o?applyMove(e,o):passTurn(e)}):(e.stage="await",idle(e))):(0===e.turn&&e.onEvent("cantMove",0),void after(e,CANT_MOVE_DELAY,()=>passTurn(e))))}function applyMove(e,n){const{layout:o,scene:r}=e;if(!o||!r)return;e.stage="busy";const t=e.turn,s=e.dice,{moved:i,captured:a}=moveToken(n,s,e.players),l=isFinished(i)&&!isFinished(n),d=a?tokenCell(a):null,u=current(e);if(u.tokens=u.tokens.map(e=>e.id===n.id?i:e),u.finishedTokens=u.tokens.filter(isFinished).length,a){const n=e.players.find(e=>e.color===a.player);n.tokens=n.tokens.map(e=>e.id===a.id?{...e,progress:-1}:e)}e.world.scoreboard.set(calculateScore(e.players[0])),e.onScore(e.score),e.onFinished(e.players[0].finishedTokens,e.players[1].finishedTokens);const p=journey(n,s),f=Math.max(1,p.length-1)*HOP_TIME;showHints(e.world,o,r,[]),bobToken(e.world,o,r,[]),hopToken(e.world,o,r,n.id,p,f),e.onEvent(a?"capture":l?"finish":"move",t),after(e,f,()=>{const n=e.scene,o=e.layout;if(!n||!o)return;if(a&&d){captureBurst(e.world,o,d);const r=Number(a.id.split("-")[1]),t=HOME_YARDS[a.player][r];placeToken(e.world,o,n,a.id,t,0)}if(l&&finishBurst(e.world,o),arrange(e),isGameOver(e.players)){const n=getWinner(e.players);return e.won="green"===n?.color,end(e),void(n&&confetti(e.world,o,n.color))}const r=6===s||l||!!a;after(e,NEXT_TURN_DELAY,()=>r?beginTurn(e):passTurn(e))})}function passTurn(e){"playing"===e.phase&&(e.turn=0===e.turn?1:0,e.sixes=0,e.onTurn(e.turn),beginTurn(e))}function end(e){e.phase="over",e.stage="busy",idle(e),e.onPhase("over")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{CENTER,ENTRY,HOME_STRETCH,HOME_YARDS,MAIN_PATH,SAFE_POSITIONS,TOKENS_PER_PLAYER,TRACK_LENGTH}from"./LudoKingConstants.js";export const isInYard=e=>e.progress<0;export const isFinished=e=>e.progress>=TRACK_LENGTH;export const rollDice=()=>Math.floor(6*Math.random())+1;export function createPlayers(e,r){const s=(e,r)=>({color:e,isAI:r,finishedTokens:0,tokens:Array.from({length:TOKENS_PER_PLAYER},(r,s)=>({id:e+"-"+s,player:e,progress:-1}))});return[s(e,!1),...r.map(e=>s(e,!0))]}export const mainIndexAt=(e,r)=>(ENTRY[e]+r)%52;export function canMove(e,r){return!isFinished(e)&&(isInYard(e)?6===r:e.progress+r<=TRACK_LENGTH)}export const movableTokens=(e,r)=>e.tokens.filter(e=>canMove(e,r));export function tokenCell(e){if(isFinished(e))return CENTER;if(isInYard(e)){const r=Number(e.id.split("-")[1]);return HOME_YARDS[e.player][r]??CENTER}return e.progress<=50?MAIN_PATH[mainIndexAt(e.player,e.progress)]:HOME_STRETCH[e.player][e.progress-51]}export function journey(e,r){const s=[tokenCell(e)];if(isInYard(e))return s.push(MAIN_PATH[ENTRY[e.player]]),s;for(let o=1;o<=r;o++){const r=e.progress+o;s.push(r>=TRACK_LENGTH?CENTER:r<=50?MAIN_PATH[mainIndexAt(e.player,r)]:HOME_STRETCH[e.player][r-51])}return s}export function moveToken(e,r,s){const o={...e};isInYard(e)?o.progress=0:o.progress=e.progress+r;let n=null;if(o.progress>=0&&o.progress<=50){const r=mainIndexAt(o.player,o.progress);if(!SAFE_POSITIONS.includes(r))for(const o of s)if(o.color!==e.player){for(const e of o.tokens)if(!isInYard(e)&&!isFinished(e)&&e.progress<=50&&mainIndexAt(e.player,e.progress)===r){n=e;break}if(n)break}}return{moved:o,captured:n}}export const isGameOver=e=>e.some(e=>e.finishedTokens===TOKENS_PER_PLAYER);export const getWinner=e=>e.find(e=>e.finishedTokens===TOKENS_PER_PLAYER)??null;export function selectAIMove(e,r,s){const o=movableTokens(e,r);if(!o.length)return null;const n=o.map(o=>{let n=0;const{moved:t,captured:i}=moveToken(o,r,s);if(i&&(n+=100),isInYard(o)&&6===r&&(n+=50),isFinished(t)&&(n+=200),isInYard(o)||isFinished(o)||(n+=t.progress),!isFinished(t)&&t.progress<=50&&SAFE_POSITIONS.includes(mainIndexAt(t.player,t.progress))&&(n+=30),!isFinished(t)&&t.progress<=50&&!SAFE_POSITIONS.includes(mainIndexAt(t.player,t.progress))){const r=mainIndexAt(t.player,t.progress);for(const o of s)if(o.color!==e.color)for(const e of o.tokens)isInYard(e)||isFinished(e)||e.progress>50||(r-mainIndexAt(e.player,e.progress)+52)%52<=6&&(n-=20)}return{token:o,score:n}});return n.sort((e,r)=>r.score-e.score),Math.random()<.3&&n.length>1?n[Math.floor(Math.random()*n.length)].token:n[0].token}export function calculateScore(e){let r=3e3*e.finishedTokens;for(const s of e.tokens)isInYard(s)||isFinished(s)||(r+=Math.round(30*s.progress));return r}
|
|
@@ -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{dieMesh,dieRotation as _0x5ecc26,rollDie as _0x22ed7b}from"../shared/EngineDice.js";import{cacheGameAsset,createGameMesh as _0x5553f3}from"../shared/EngineMeshes.js";import{aimTilted,placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{AI_COLOR,BOARD_FRAME,BOARD_WHITE,cellPoint,CENTER,DIE_SIZE,DIE_Y,ENTRY,GRID,HOME_STRETCH,HOME_YARDS,MAIN_PATH,PLAYER_COLOR,PLAYER_COLORS,RIM,SAFE_POSITIONS,STAR_COLOR,TILE_TOP,TILT,TOKEN_HEIGHT}from"./LudoKingConstants.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("ludo-king/LudoKingScene:"+e,o),meshes.set(e,t)),t},rgb=e=>{const[o,t,s]=toColor(e);return[o,t,s]},cube=()=>shapeGeometry("cube"),sphere=()=>shapeGeometry("sphere"),STAND_UP=quat.x(Math.PI/2),CELL=1/GRID,HOME_CORNER=[{color:"blue",row:0,col:0},{color:"red",row:0,col:9},{color:"green",row:9,col:0},{color:"yellow",row:9,col:9}],SKIN=4e-4,LAYER=.002,layerZ=e=>TILE_TOP-.008+.002*e;export const SHADOW_Z=layerZ(6);export const PAWN_Z=layerZ(7);const GRID_LINE=[.55,.53,.62];function tile(e,o,t,s,n=.92){const[i,r]=cellPoint(o,t);e.push({geometry:cube(),position:[i,r,layerZ(2)],scale:[CELL,CELL,SKIN],color:[...GRID_LINE,1]}),e.push({geometry:cube(),position:[i,r,layerZ(3)],scale:[CELL*n,CELL*n,SKIN],color:[...s,1]})}const disc=e=>extrude((new Path).addCircle(0,0,e),{depth:SKIN});function boardMesh(){return cached("ludo-board",()=>{const e=1+2*RIM,o=rgb(BOARD_FRAME),t=rgb(BOARD_WHITE),s=[{geometry:cube(),position:[0,0,layerZ(0)],scale:[e,e,SKIN],color:[...o,1]},{geometry:cube(),position:[0,0,layerZ(1)],scale:[1,1,SKIN],color:[...t,1]}];for(const{color:e,row:o,col:n}of HOME_CORNER){const i=rgb(PLAYER_COLORS[e]),[r,l]=cellPoint(o+2.5,n+2.5),a=6*CELL;s.push({geometry:cube(),position:[r,l,layerZ(2)],scale:[a,a,SKIN],color:[...i,1]}),s.push({geometry:cube(),position:[r,l,layerZ(3)],scale:[.68*a,.68*a,SKIN],color:[...t,1]});for(const o of HOME_YARDS[e]){const[e,n]=cellPoint(o.row,o.col);s.push({geometry:disc(.5),position:[e,n,layerZ(4)],scale:[1.5*CELL,1.5*CELL,1],color:[...i,1]}),s.push({geometry:disc(.5),position:[e,n,layerZ(5)],scale:[.9*CELL,.9*CELL,1],color:[...t,1]})}}MAIN_PATH.forEach((e,o)=>{const n=Object.keys(ENTRY).find(e=>ENTRY[e]===o),i=n?rgb(PLAYER_COLORS[n]):t;if(tile(s,e.row,e.col,i),SAFE_POSITIONS.includes(o)&&!n){const[o,t]=cellPoint(e.row,e.col);s.push({geometry:extrude((new Path).addStar(0,0,.5,.22),{depth:SKIN}),position:[o,t,layerZ(4)],scale:[.7*CELL,.7*CELL,1],color:[...rgb(STAR_COLOR),1]})}});for(const e of["blue","red","green","yellow"]){const o=rgb(PLAYER_COLORS[e]);for(const t of HOME_STRETCH[e])tile(s,t.row,t.col,o)}const n={tl:cellPoint(5.5,5.5),tr:cellPoint(5.5,8.5),bl:cellPoint(8.5,5.5),br:cellPoint(8.5,8.5)},i=(e,o,t)=>s.push({geometry:extrude((new Path).addPolygon([[0,0],[e[0],-e[1]],[o[0],-o[1]]]),{depth:SKIN}),position:[0,0,layerZ(3)],color:[...rgb(t),1]});return i(n.tl,n.tr,PLAYER_COLORS.red),i(n.tr,n.br,PLAYER_COLORS.yellow),i(n.br,n.bl,PLAYER_COLORS.green),i(n.bl,n.tl,PLAYER_COLORS.blue),_0x5553f3(merge(s),{center:!1,shine:0})})}const pawnMesh=()=>cached("ludo-pawn",()=>_0x5553f3(merge([{geometry:lathe([[.001,0],[.42,0],[.44,.04],[.42,.1],[.3,.14],[.24,.2],[.18,.44],[.15,.58],[.27,.61],[.27,.66],[.14,.69]],{segments:28})},{geometry:sphere(),position:[0,.84,0],scale:.42}]),{center:!1,shine:.6}));export const dieRotation=(e,o=0)=>_0x5ecc26(TILT,e,o);const discMesh=()=>cached("ludo-disc",()=>_0x5553f3(extrude((new Path).addCircle(0,0,.5),{depth:0}))),ringMesh=()=>cached("ludo-ring",()=>_0x5553f3(extrude((new Path).addCircle(0,0,.5).addCircle(0,0,.4),{depth:0,fillRule:"evenodd"}))),SHADOW=[0,0,0,.22],BACKDROP_DEPTH=25;export const toWorld=(e,o,t,s)=>[o*e.size,t*e.size,s*e.size];const tiltView=e=>({width:e.width,height:e.height,centerY:e.centerY,tilt:TILT});export const aimCamera=(e,o)=>aimTilted(e,tiltView(o));export const dieRest=e=>toWorld(e,0,DIE_Y,DIE_SIZE/2);export function buildScene(e,o,t,s){const n=spawnBackdrop(e,o.width,o.height,-25,t);placeTiltedBackdrop(e,n,tiltView(o),25);const i=e.spawn({mesh:boardMesh(),scale:o.size,color:[1,1,1,1],pickable:!1}),r=new Map,l=new Map,a=new Map;for(const{id:t,color:n}of s){const s=e.spawn({mesh:pawnMesh(),rotation:STAND_UP,scale:TOKEN_HEIGHT*o.size,color:toColor(PLAYER_COLORS[n])});r.set(t,s),l.set(s,t),a.set(t,e.spawn({mesh:discMesh(),scale:.05*o.size,color:SHADOW,pickable:!1}))}const d=e.spawn({mesh:discMesh(),position:toWorld(o,.012,DIE_Y-.01,.001),scale:[1.25*DIE_SIZE*o.size,1.1*DIE_SIZE*o.size,1],color:SHADOW,pickable:!1}),p=e.spawn({mesh:ringMesh(),position:toWorld(o,0,DIE_Y,.002),scale:0,color:[1,.78,.15,.85],pickable:!1}),h=e.spawn({mesh:dieMesh(),position:dieRest(o),rotation:dieRotation(1),scale:DIE_SIZE*o.size}),E=Array.from({length:4},()=>e.spawn({mesh:ringMesh(),scale:0,color:[1,.85,.2,.9],pickable:!1}));return{backdrop:n,board:i,tokens:r,tokenAt:l,bobbing:new Set,shadows:a,die:h,dieShadow:d,ring:p,hints:E}}export function removeScene(e,o){e.despawn(o.backdrop),e.despawn(o.board);for(const t of o.tokens.values())e.despawn(t);for(const t of o.shadows.values())e.despawn(t);e.despawn(o.die),e.despawn(o.dieShadow),e.despawn(o.ring);for(const t of o.hints)e.despawn(t)}export function setSceneTheme(e,o,t){setBackdropTheme(e,o.backdrop,t)}export function placeToken(e,o,t,s,n,i=0){const[r,l]=cellPoint(n.row,n.col),a=t.tokens.get(s),d=t.shadows.get(s);e.stopAnimation(a),e.stopAnimation(d),e.set(a,{position:toWorld(o,r+i,l,PAWN_Z)}),e.set(d,{position:toWorld(o,r+i+.006,l-.006,SHADOW_Z)})}export function hopToken(e,o,t,s,n,i){const r=t.tokens.get(s),l=t.shadows.get(s),a=n.map(e=>cellPoint(e.row,e.col)),d=a.slice(1).map((e,t)=>({position:toWorld(o,e[0],e[1],PAWN_Z+.03),at:(t+1)/(a.length-1)})),p=a[a.length-1];e.stopAnimation(r),e.stopAnimation(l),e.animate(r,d,{duration:i,path:"smooth",easing:"easeInOut"}),e.animate(l,{position:toWorld(o,p[0]+.006,p[1]-.006,SHADOW_Z)},{duration:i})}export function bobToken(e,o,t,s){const n=new Set(s);for(const[s,i]of t.tokens)n.has(s)!==t.bobbing.has(s)&&e.set(i,{bob:n.has(s)?{amplitude:[0,0,.01*o.size],speed:6}:null});t.bobbing=n}export function showHints(e,o,t,s){const n=1.5*CELL*o.size;t.hints.forEach((t,i)=>{const r=s[i];if(!r)return e.stopAnimation(t),void e.set(t,{scale:0});const[l,a]=cellPoint(r.row,r.col);e.set(t,{position:toWorld(o,l,a,PAWN_Z),scale:n}),e.stopAnimation(t),e.animate(t,{scale:1.2*n},{duration:.6,easing:"easeInOut",repeat:"forever",yoyo:!0})})}export function rollDie(e,o,t,s,n,i){_0x22ed7b(e,{die:t.die,shadow:t.dieShadow,rest:dieRest(o),shadowAt:toWorld(o,.012,DIE_Y-.01,.001),shadowScale:[1.25*DIE_SIZE*o.size,1.1*DIE_SIZE*o.size,1],size:DIE_SIZE*o.size,tilt:TILT,value:s,duration:n,disposed:i})}export function showRollHint(e,o,t,s){if(e.stopAnimation(t.ring),!s)return void e.set(t.ring,{scale:0});const n=1.55*DIE_SIZE*o.size;e.set(t.ring,{scale:n}),e.animate(t.ring,{scale:1.15*n},{duration:.6,easing:"easeInOut",repeat:"forever",yoyo:!0})}export function captureBurst(e,o,t){const[s,n]=cellPoint(t.row,t.col);effects.sparkle(e,{position:toWorld(o,s,n,TILE_TOP+.03),count:18,size:.01*o.size,speed:.4*o.size,lifetime:.5,gravity:-.6*o.size,colors:[toColor("#FFF59D"),toColor("#FF7043"),[1,1,1,1]]})}export function finishBurst(e,o){const[t,s]=cellPoint(CENTER.row,CENTER.col);effects.sparkle(e,{position:toWorld(o,t,s,TILE_TOP+.04),count:20,size:.011*o.size,speed:.4*o.size,lifetime:.6,colors:[toColor("#FFD54F"),toColor("#FFF59D"),[1,1,1,1]]})}export function confetti(e,o,t){const[s,n]=cellPoint(CENTER.row,CENTER.col);effects.confetti(e,{position:toWorld(o,s,n,TILE_TOP+.08),count:48,size:.012*o.size,speed:.7*o.size,lifetime:1.3,gravity:-1.2*o.size,colors:["green"===t?PLAYER_COLOR:AI_COLOR,PLAYER_COLORS.yellow,PLAYER_COLORS.green,PLAYER_COLORS.blue,"#FFFFFF"].map(e=>toColor(e))})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const _0x321205=_0x1fb9;!function(){const e=_0x1fb9,o=_0x4e08();for(;;)try{if(857461==parseInt(e(138,")q2j"))/1+parseInt(e(184,"iUGr"))/2+parseInt(e(209,"*9o]"))/3+parseInt(e(175,"cgLL"))/4+-parseInt(e(202,"clP5"))/5*(parseInt(e(213,"o!$["))/6)+parseInt(e(156,"hnUk"))/7*(parseInt(e(227,"yyc$"))/8)+-parseInt(e(223,"QIgX"))/9)break;o.push(o.shift())}catch(e){o.push(o.shift())}}();import{c as _0x1196b8}from"react/compiler-runtime";import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x41d69d,{useEffect,useRef,useCallback,useMemo}from"react";import{View,StyleSheet,Dimensions}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{playSound,GAME_SOUNDS}from"../../services/SoundsService.js";import{playHaptic,HapticType}from"../../services/HapticsService.js";import{useMazeRunnerStore}from"./MazeRunnerStore.js";import{MAZE_RUNNER_GAME_CONFIG}from"./MazeRunnerConstants.js";function _0x1fb9(e,o){e-=111;const t=_0x4e08();let n=t[e];if(void 0===_0x1fb9.gppyhP){const e=function(e,o){let t,n,W=[],r=0,s="";for(e=function(e){let o="",t="";for(let t,n,W=0,r=0;n=e.charAt(r++);~n&&(t=W%4?64*t+n:n,W++%4)?o+=String.fromCharCode(255&t>>(-2*W&6)):0)n="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(n);for(let e=0,n=o.length;e<n;e++)t+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(t)}(e),n=0;n<256;n++)W[n]=n;for(n=0;n<256;n++)r=(r+W[n]+o.charCodeAt(n%o.length))%256,t=W[n],W[n]=W[r],W[r]=t;n=0,r=0;for(let o=0;o<e.length;o++)n=(n+1)%256,r=(r+W[n])%256,t=W[n],W[n]=W[r],W[r]=t,s+=String.fromCharCode(e.charCodeAt(o)^W[(W[n]+W[r])%256]);return s};_0x1fb9.KtxTfL=e,_0x1fb9.CBqRUy={},_0x1fb9.gppyhP=!0}const W=t[0];_0x1fb9.WRercL!==W&&(_0x1fb9.CBqRUy={},_0x1fb9.WRercL=W);const r=_0x1fb9.CBqRUy[e];return void 0===r?(void 0===_0x1fb9.MdOnMi&&(_0x1fb9.MdOnMi=!0),n=_0x1fb9.KtxTfL(n,o),_0x1fb9.CBqRUy[e]=n):n=r,n}import{ScoreBoard}from"./components/ScoreBoard.js";import{EnhancedGameArea}from"./components/EnhancedGameArea.js";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x19b777}from"../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS,getGameDimensions}from"../../services/UtilsService.js";import{jsx as _0xa2d5f5,jsxs as _0x558bb8}from"react/jsx-runtime";const useResponsiveDimensions=()=>{const e=_0x1fb9,o={WHSft:function(e,o){return e(o)},XkrtQ:e(125,"bby6"),UmUlH:e(242,"MYsW")},t=_0x1196b8(2),[n,W]=_0x41d69d[e(186,"HHlJ")](_temp);let r,s;return t[0]===Symbol[e(221,"YQJM")](o.UmUlH)?(r=()=>{const t=e,n={};n[t(113,"5a[@")]=function(e,o){return e!==o};const r=n,s=Dimensions[t(249,"YQJM")](o.XkrtQ,e=>{const n=t,{window:s}=e;o[n(225,"3QOG")](W,e=>{const o=n,{width:t,screenWidth:W}=getGameDimensions();if(r.qOAuj(e[o(149,"SJZy")],t)||e.height!==s[o(164,"9IXm")]||e.screenWidth!==W){const e={};return e[o(231,"KzpT")]=t,e[o(214,"3QOG")]=s.height,e[o(130,"G0YR")]=W,e}return e})});return()=>s?.[t(226,"H5IT")]()},s=[],t[0]=r,t[1]=s):(r=t[0],s=t[1]),useEffect(r,s),n};export const MazeRunner=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:t,onReplayGame:n,onShare:W,onShareScreenshot:r,onShowLeaderboard:s,bannerAd:a})=>{const d=_0x1fb9,u={haiHn:d(197,"h#f%"),rGxGh:d(158,"YQJM"),BAkbk:"You found the exit!",dPbsb:function(e,o,t){return e(o,t)},NBIbz:function(e,o){return e(o)},redAd:"win",DJRvH:function(e,o){return e(o)},dctis:d(152,"hnUk"),QeRzD:function(e){return e()},KfRFb:function(e,o){return e(o)},JpjaJ:function(e,o){return e(o)},fWmFW:function(e,o){return e(o)},VYHLp:function(e,o){return e(o)},WqWzp:function(e,o){return e(o)},NRdGy:function(e,o,t){return e(o,t)}},{width:S,height:i}=u.QeRzD(useResponsiveDimensions),k=useMazeRunnerStore(e=>e[d(123,"#v0s")]),m=useMazeRunnerStore(e=>e.isGameOver),f=useMazeRunnerStore(e=>e[d(134,"7BFU")]),R=u[d(148,"9IXm")](useMazeRunnerStore,e=>e[d(187,"nO(A")]),C=u.fWmFW(useMazeRunnerStore,e=>e.timeElapsed),G=u[d(177,"Mgbc")](useMazeRunnerStore,e=>e[d(200,"o!$[")]),x=useMazeRunnerStore(e=>e[d(174,"se[e")]),l=u[d(157,"jgKr")](useMazeRunnerStore,e=>e[d(232,"jgKr")]),M=useMazeRunnerStore(e=>e[d(137,"G0YR")]),h=useMazeRunnerStore(e=>e[d(167,"@PZF")]),_=useMazeRunnerStore(e=>e[d(198,"h#f%")]),p=u[d(146,"5a[@")](useMazeRunnerStore,e=>e[d(196,"YQJM")]),E=useMazeRunnerStore(e=>e[d(207,"yyc$")]),b=useMazeRunnerStore(e=>e[d(171,"YQJM")]),O=u[d(172,"CxUE")](useMazeRunnerStore,e=>e[d(199,"#v0s")]),H=useMazeRunnerStore(e=>e[d(238,"w7(V")]),I=u.fWmFW(useMazeRunnerStore,e=>e[d(191,"LWLe")]),g=useRef(!1),[P,y]=_0x41d69d[d(151,"H(#i")](!1),N=useRef(!1),L=useRef(!1),U=u[d(127,"UBwK")](useRef,e);U[d(115,"SGVW")]=e;const A=useRef(t);A[d(176,"pytA")]=t;const Q=useCallback(e=>{const o=d;if(A[o(129,"()My")]&&!g.current){const t=useMazeRunnerStore[o(141,"*9o]")]();A[o(181,"o!$[")]({status:e,score:t.score[o(215,"QIgX")]()}),g[o(210,"H(#i")]=!0}},[]),v=i-220,F=S,V=Math[d(124,"h#f%")](F,v),T=Math.max(300,Math.min(V,600)),D=useMemo(()=>({isPlaying:k,isPaused:!1,score:R,timeElapsed:C,ballPosition:G,targetPosition:x,isCompleted:f,gameOver:m}),[k,R,C,G,x,f,m]),z=useMemo(()=>({GRID_SIZE:h,CELL_SIZE:M,BALL_SIZE:18,PIPE_WIDTH:8,GAME_AREA_WIDTH:T,GAME_AREA_HEIGHT:T,COLLISION_TOLERANCE:5,SCORE_PER_COMPLETION:100,TIME_BONUS_MULTIPLIER:10,GAME_DURATION:_}),[h,M,T,_]),B=u[d(145,"SGVW")](useMemo,()=>({isPlaying:k,gameOver:f||m,onShare:W,onShowLeaderboard:s,startButtonSubtext:d(236,"SGVW")}),[k,f,m,W,s]),q=u.dPbsb(useCallback,e=>{const o=d,t=useMazeRunnerStore[o(117,"^Fnq")]();return t[o(128,")q2j")]&&!t[o(195,"5a[@")]?o(143,"se[e"):e[o(161,"MYsW")]()},[]),j=useMemo(()=>{const e=d,o={};return o[e(178,"aDE*")]=P,o[e(228,"QIgX")]=R,o[e(217,"yyc$")]=f?"Score":u[e(250,"iUGr")],o[e(183,"YQJM")]=q,o[e(241,"@EFO")]=f?e(201,"H(#i"):e(111,"UBwK"),o[e(240,"hnUk")]=f?e(244,"9IXm"):u[e(121,"^Fnq")],o[e(114,"se[e")]=f?u[e(251,"Mgbc")]:e(131,"LWLe"),o},[P,R,f,q]),J=useMemo(()=>({gameId:GAME_IDS[d(179,"cgLL")],settings:e||DEFAULT_GAME_SETTINGS,onSettingsChange:o}),[e,o]);useEffect(()=>{p(e,T,T)},[T]),useEffect(()=>{const e=d;f&&!N[e(118,"w7(V")]&&(N[e(193,"LWLe")]=!0,u[e(182,"@EFO")](playSound,GAME_SOUNDS[e(239,"QIgX")].COMPLETE,U[e(253,"7BFU")][e(190,"QIgX")]),playHaptic(HapticType.SUCCESS,U[e(160,"L(fh")][e(135,"se[e")]),u[e(126,"nO(A")](Q,u.redAd),u[e(218,"3QOG")](setTimeout,()=>y(!0),500))},[f,C,Q]),u[d(166,"9IXm")](useEffect,()=>{const e=d;m&&!f&&!L[e(181,"o!$[")]&&(L[e(154,"XDcg")]=!0,playSound(GAME_SOUNDS[e(208,")tm2")][e(212,"^Fnq")],U[e(220,"h#f%")].enableSounds),playHaptic(HapticType[e(112,"G0YR")],U[e(230,"@PZF")][e(216,"L(fh")]),u.DJRvH(Q,u.dctis),setTimeout(()=>y(!0),500))},[m,f,C,Q]),useEffect(()=>()=>{const e=_0x1fb9;useMazeRunnerStore[e(162,")tm2")]()[e(132,"H5IT")]&&!g[e(245,"YQJM")]&&Q(e(159,"H5IT")),b(),O()},[b,O]);const w=useCallback(()=>{const e=d,o=e(153,"0*#B")[e(188,"jgKr")]("|");let t=0;for(;;){switch(o[t++]){case"0":g.current=!1;continue;case"1":playHaptic(HapticType[e(144,"@EFO")],U[e(119,"88$u")].enableHaptics);continue;case"2":L[e(142,"MYsW")]=!1;continue;case"3":playSound(GAME_SOUNDS.MAZE_RUNNER.START,U.current[e(136,"iUGr")]);continue;case"4":N[e(222,"cgLL")]=!1;continue;case"5":u.QeRzD(E);continue;case"6":u.KfRFb(y,!1);continue}break}},[E]),K=u[d(205,"H5IT")](useCallback,()=>{const e=d;Q(e(229,"LWLe")),b(),playSound(GAME_SOUNDS[e(189,"h#f%")][e(192,"88$u")],U[e(129,"()My")].enableSounds)},[b,Q]),X=useCallback(e=>u[d(211,"o!$[")](H,e),[H]),Z=useCallback(()=>{const e=d;n?.(),N[e(234,"CxUE")]=!1,L[e(140,"clP5")]=!1,y(!1),I()},[I,n]),Y=e?.offset??0,ee={};ee[d(248,"yyc$")]=Y;const oe=u[d(147,"^Fnq")](useMemo,()=>[styles[d(224,"se[e")],ee],[Y]),te={};te[d(203,"bby6")]=D,te[d(163,"Mgbc")]=Y,te.gameDuration=MAZE_RUNNER_GAME_CONFIG[d(252,")q2j")];const ne={};ne.gameState=D,ne[d(206,")tm2")]=z,ne[d(232,"jgKr")]=l,ne[d(165,"L(fh")]=X,ne[d(246,"#JGm")]=e.enableHaptics;const ce={...B};ce[d(180,"iUGr")]=w,ce[d(120,"#v0s")]=K;const We={...j};We.onPlayAgain=Z,We.onShare=r,We.bannerAd=a;const re={...J};return _0xa2d5f5(GestureHandlerRootView,{style:styles[d(219,"88$u")],children:u[d(237,"UBwK")](_0x558bb8,_0x19b777,{children:[_0xa2d5f5(ScoreBoard,te),u[d(139,"CxUE")](_0xa2d5f5,View,{style:oe,children:_0xa2d5f5(EnhancedGameArea,ne)}),_0xa2d5f5(GameControlButton,ce),u[d(204,"CxUE")](_0xa2d5f5,GameOverModal,We),_0xa2d5f5(GameSettingsModal,re)]})})};const _0x277830={};function _0x4e08(){const e=["mmkoqmo2aq","W69rySoiW6G","ubVcNSo1WQNdPh/dLGRdJW","gSkYlsCNj8kXumkN","EJVcQCovWRxdMutdVI3dRCoR","W58tr8k9W6WMBmkXyJivWQtdHq","WR/cS2RdNHtcH8kB","W5r5cSk7WQi","eSkaWRddMG","WQelB8o9W5JdIhtdSaJcKmoU","W40der9lCW","FYFcImk7qgreWQa","FvNcQCkHrfeZWRhdI8okySotdG","gSkLiYC2lmkXx8kNW6K","W4e2gGTb","WRqYzSotDMHhiHG","rCkkzmo+WPFcMvG","WOHdW4K","i8oGktZcHmocWR4","oh3dRCo9aJusW7pcOSkAqvj/W6m","W4xcQ8o+W5RdHMBdHCk/W4jRBHzVpCkZb8oG","W7iUkX5x","W7LKBCouW7ZcRa","xCo3EM0MkSkAEmkNW4a","EcVcTmk9vW","kJVcRLSiWOa","W5bPdwnIC18","W7e9WPWzWO0","W71EWP/dNrS","WR/cKs3dPCoiW6JdK8oyWRxcQmofW7TG","hCkPvSodhCk4tG","WRq4zSotCNm","sH5VsSkmWQ7cG8kxxCoiWOXYW63cVCkQWQhdHa4","s8kEzYTN","iSo0WRCmrfXWAmk6W40DW69cgCo5cSkLEa","rGNcGCkkBv9/WONcVCkMvG","lCkeumkbWRi","W4SEtSodrmkoWP1cWR8O","kSkrBwpcN8oijmk8WO5QWQepy8o5lmoHBKhcHCoNd2DvW75E","WRvHW45FW5vZW6DGWOpcRSo1WRLcWQ8","W5FdL8kXkxjzW7xdVwmPWR1NW67dSa","WO1zW4NcImk4t2u","W4ydyJNdOmoLWOddSuRcGSkYE8kG","W4SMth/cPe4","bmkNpJi6dSkeuSkY","WO9iW5/cV8kRrh9QtSk2W6fdW4/dGqtcJq","vSkUj8kGhG","ACkIWRFcQSka","WPuZhwmtrSoRW75UW63cMbC","arVcGt/cR3VdSq","E8k8FhHeWOZdNCkvWORcGG","W60rCetcKW","ythdRalcPG","W4/cR8oGW4ZdPNpdHq","zWPRuCkoWQhcGW","WP1fWRSNW67cOCk9bM97","jSkXWOVdMs0jhmkr","nmoXWQeFvvDg","WRqOESovCM9D","bCkSW7ldT8oVCCovW6tcJmou","m8ktWOFdJte","fColiCk1W4VdGX9/W6VdK8k3W6ZdMW","a8kXW7hdR8oHEmo7W6VcHG","s8kwEa","gCkaqGNdJfC","bmovwb9V","zmkOvX5N","WPSHn2C6vSowW6L/W7y","xCk6W41xW5dcJZK","W5SGug7cPfiHoLFdQCkl","edxcTrGFWO0uk8o2W5NdHCocDse1cvldPfFdVq","W6jYumoxW6VcSajqWR4","mSoJW5pcISosy8kIWRf1W4CLW67cKSk3uCo0WPu","cX3cPctcPa","W4FcPmoYW53dQ3hdQmk/W7fWAqf9","w8kHl8kkhchcMCkeW6FcTSkRWOW","W4SMtMFcKLumnG","W4nJqdDKc8kTW5b9W6RcStfP","gSkmrSocgG","Fr7cTsWdWOpdKa","WOTcbmoxWQfZk8kz","o8kbFNlcJSkipq","W7VcPCoMWP/dTxxdJSo+W65XDejHmSo9fSo7W7qjW6y","W6qUFSo+FSkT","yc97umkj","rIFdPtVcVa","jCkeWP3dUtS","W5ddPSkbdrG","WQDfW6LlAW","Amove8oDW6uba8koWOjCW6C","WQNcTx3dVWxcImkBWPW","nCkcv8ki","WR7dNcNcQmojWQZdKSoRW6tcUSkWW484","nSo3W4ZcNCo2F8kZ","C8oMW4/cVw5yumk1WOHOcSkzbG","AmoEf8oDW6a4gSkzWOPuW50","W5XMWRVdVrG","WRPLW7BcV8o9Dee/","W6HGBSoyW6/cPq","E0lcUSkXtvOp","lmkBx3tcMCkpj8k+","ub/cH8odWP7dQMxdLq","rmkfWRRcU8koWO8","W7ldS8kccZPU","D1NcISkIrfGRWR/dImoxF8ozeMhdU8kNWRVdVCkGoW","W77dHSkjhZa","W5rUfNvuDfhcPW","qmktC8o0","CCkMAh7dLSopWQSZuaxdJG","tmkHAYXKWOldKSkzWPy","WP1yW5tcISkAqhX7","kCkTC8olca","tSkIBd9RWQldImkzWONdKa","W5BcQ8oHW5JdOMddSmkXW7jTDaTHoG","DmkTy37dMmkuW7Ovwr7dQZZdLG","a8kmW7Dbp29W","tCk0WRhcJSk8","W5FdJmomaSoXawnxFW","dCouaqVcVSo+WP8FDsldKq","uCkHhCkCetBcVSkSW7pcTCkQ","W7ngkSk/WO/dVhG","W407wmoesq","WP1pW5tcImk4z35SB8k+W6zdW4/dNq","dmo9FSoFr3tdSSkQW6xcJSkEWRqB","mCoOWRyv","W7mHWOaqW4xcVSkcW7S","oCo0FG9W","W7LpWP/dMbW","A8k+tmojWQ3cPxL8W5ZdR8kF","BIBcUSkTxMH5WQJcHSknye4","lJ/cRL0FWO0oBSoxW4NdHSkVEZ1W","WOqjr8o3","kI/cSKOiWOio","pCoXWQazwv9lsSk5W485W6vFba","Eq3dUH7cOG","WODcW5lcJSk0qh13Emk6W5vwW4FdIG","CSkwE8oPW5xcHaXNW6lcIW","qCkEE8oPWRBcGL5tW6BdG8kIW7q","gmkNW5ldPSo0rSoZW6JcHa","W7jsnmkHWRRdVx/dRb/cK8o2W5G","WPlcP27dHrBcImkBWPZdLHVdUSkGWOtcVY4","l1NdTw4HWPVdOg3dJfi","hCkjtGldUezwWR7cNa"];return(_0x4e08=function(){return e})()}_0x277830[_0x321205(185,"w7(V")]=1,_0x277830.backgroundColor=BACKGROUND_COLOR;const _0x3119cd={};_0x3119cd[_0x321205(168,"h#f%")]=1,_0x3119cd[_0x321205(194,"w7(V")]=_0x321205(235,"88$u"),_0x3119cd[_0x321205(173,"UBwK")]=_0x321205(247,"G0YR"),_0x3119cd.paddingHorizontal=10,_0x3119cd.paddingVertical=5;const _0x295a06={};_0x295a06[_0x321205(170,"UBwK")]=_0x277830,_0x295a06[_0x321205(133,"XDcg")]=_0x3119cd;const styles=StyleSheet.create(_0x295a06);function _temp(){const{width:e,height:o,screenWidth:t}=getGameDimensions(),n={};return n.width=e,n.height=o,n.screenWidth=t,n}
|
|
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{timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{BORDER,GAME_DURATION,getLayout,LIGHT,WALL_THICKNESS}from"./MazeRunnerConstants.js";import{createGame,dispose,drag,newMaze,setLayout,setTheme,start,stop,tick}from"./MazeRunnerGame.js";import{jsx as _0x5eedce}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.MAZE_RUNNER,FEEDBACK={turn:{sound:SOUNDS.TURN,haptic:HapticType.LIGHT},bump:{sound:SOUNDS.BUMP,haptic:HapticType.MEDIUM},win:{sound:SOUNDS.COMPLETE,haptic:HapticType.SUCCESS},lose:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}},timeUpText=()=>"You ran out of time!";export const MazeRunner=engineGame(GAME_IDS.MAZE_RUNNER,e=>{const[t,s]=useLiveState(GAME_DURATION),[i,r]=useLiveState(!1),{game:n,theme:a,status:o,screen:m,gameOver:S}=useEngineGame(e,{gameId:GAME_IDS.MAZE_RUNNER,create:createGame,start:start,reset:stop,replay:newMaze,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,i)=>{const r=getLayout(t,s,i);return setLayout(e,r),r.size+r.cell*WALL_THICKNESS+2*BORDER},drag:drag,sounds:SOUNDS,onStart:e=>{r(!1),e(SOUNDS.START,HapticType.MEDIUM)},onStop:e=>e(null),onPlayAgain:()=>r(!1),wire:(e,t)=>{e.onCard=()=>r(!0),e.onTime=s,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0x5eedce(EngineGameScreen,{...m,light:LIGHT,columns:[timerColumn(t,a)],subtext:"Swipe to roll!",gameOver:i?S({title:"win"===o?"MAZE COMPLETE!":"TIME UP!",message:"win"===o?"You found the exit!":"You ran out of time!",scoreLabel:"win"===o?"Score":"Time's Up!",score:n.score,formatter:"win"===o?void 0:timeUpText,buttonText:"win"===o?"Navigate Again!":"Try Again!"}):null})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const GRID=14;export const GAME_DURATION=120;export const BASE_SCORE=100;export const GAME_OVER_DELAY=.5;export const COLORS={WALLS:["#7A4A24","#8B4513","#A0522D","#9A5B2E"],WALL_TOP:"#D2A06A",BALL:"#4ECDC4",BALL_BAND:"#FFFFFF",BALL_DOT:"#2C8C86",START:"#4CAF50",START_INNER:"#81C784",GOAL:"#FF5722",GOAL_INNER:"#FF8A65"};export const TILT=0;export const LIGHT=frontLight([0,0,1],.45);export const WALL_THICKNESS=.14;export const WALL_HEIGHT=.42;export const BALL_SIZE=.56;const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=120;export const BORDER=6;const MIN_SIZE=240,MAX_SIZE=600;export function getLayout(t,o,e){const r=getScoreBoardTop(e)+82,n=Math.max(240,o-r-120),A=n/(Math.cos(0)+.03*Math.sin(0)),s=14*Math.floor(Math.max(240,Math.min(600,(gameWidthFor(t)-12)/1.01,A))/14);return{width:t,height:o,tilt:0,centerY:r+n/2,n:14,cell:s/14,size:s}}export function cellPoint(t,o,e){return[o*t.cell-t.size/2,t.size/2-e*t.cell]}
|
|
@@ -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{BASE_SCORE,GAME_DURATION,GAME_OVER_DELAY,GRID}from"./MazeRunnerConstants.js";import{generateMaze,homeRoll,roll,rollAt,swipe}from"./MazeRunnerRules.js";import{buildScene,bump,celebrate,placeBall,removeScene,resetBall,setMaze,setSceneTheme,timeUp}from"./MazeRunnerScene.js";const WORLD_CAPACITY=300;export function createGame(e){const o=new World(300),n={world:o,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",open:generateMaze(GRID),ball:homeRoll(),drawn:[.5,.5],running:!1,get elapsed(){return GAME_DURATION-o.scoreboard.shownSeconds},get score(){return o.scoreboard.score},won:!1,onPhase:e=>{},onCard:()=>{},onTime:e=>{},onEvent:e=>{}};return o.scoreboard.reset(0,GAME_DURATION),o.scoreboard.handlers={onSecond:e=>n.onTime(e),onTimeUp:()=>n.running&&end(n,!1)},n}export function setLayout(e,o){e.scene&&removeScene(e.world,e.scene),e.layout=o,aimTilted(e.camera,o),e.scene=buildScene(e.world,o,e.theme,e.open);const[n,r]=rollAt(e.ball);placeBall(e.world,o,e.scene,n,r,n,r),e.drawn=[n,r]}export function setTheme(e,o){e.theme=o,e.layout&&e.scene&&setSceneTheme(e.world,e.layout,e.scene,o)}function drawBall(e){const{layout:o,scene:n}=e;if(!o||!n)return;const[r,a]=rollAt(e.ball);placeBall(e.world,o,n,r,a,e.drawn[0],e.drawn[1]),e.drawn=[r,a]}function home(e){e.ball=homeRoll(),e.world.cancelTimers(),e.layout&&e.scene&&resetBall(e.world,e.layout,e.scene),drawBall(e)}export function start(e){"ready"===e.phase&&(home(e),e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(GAME_DURATION),e.won=!1,e.running=!0,e.phase="playing",e.onTime(GAME_DURATION),e.onPhase("playing"))}export function stop(e){e.running=!1,e.world.scoreboard.reset(0,GAME_DURATION),e.won=!1,e.phase="ready",home(e),e.onTime(GAME_DURATION),e.onPhase("ready")}export function newMaze(e){e.open=generateMaze(GRID),e.layout&&e.scene&&setMaze(e.world,e.layout,e.scene,e.open,!0),stop(e)}export function dispose(e){e.world.dispose()}export function tick(e,o){if(!e.world.isDisposed){if(e.running&&e.layout){const{bumped:n,reached:r}=roll(e.ball,e.open,GRID,1e3*o);n&&(e.scene&&bump(e.world,e.layout,e.scene),e.onEvent("bump")),drawBall(e),r&&r[0]===GRID-1&&r[1]===GRID-1&&(e.world.scoreboard.set(calculateTimeBasedScore(e.elapsed,GAME_DURATION,BASE_SCORE)),end(e,!0))}e.world.update(o)}}function end(e,o){e.world.scoreboard.stop(),e.running=!1,e.won=o;const{layout:n,scene:r}=e;n&&r&&(o?celebrate(e.world,n,r):timeUp(e.world,r)),e.phase="over",e.onPhase("over"),e.onEvent(o?"win":"lose"),e.world.after(GAME_OVER_DELAY,()=>e.onCard())}export function drag(e,o){if("start"===o.phase)return e.ball.anchorX=o.x,void(e.ball.anchorY=o.y);e.running&&swipe(e.ball,o.x,o.y)&&e.onEvent("turn")}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const NONE=0;export const UP=1;export const RIGHT=2;export const DOWN=3;export const LEFT=4;export const ROLL_CELLS_PER_SEC=5;export const SWIPE_PX=16;export const FRAME_MS=16.67;export const dirDX=e=>2===e?1:4===e?-1:0;export const dirDY=e=>1===e?-1:3===e?1:0;const opposite=e=>0===e?0:(e+1)%4+1,CANDIDATES=24;function routeLength(e,r){const t=new Array(r*r).fill(-1);t[0]=0;const o=[0];for(let n=0;n<o.length;n++){const u=o[n],i=u%r;for(let n=0;n<4;n++){const d=1<<n,p=0===n?u-r:1===n?u+1:2===n?u+r:u-1;e[u]&d&&-1===t[p]&&(2!==d||i!==r-1)&&(8!==d||0!==i)&&(t[p]=t[u]+1,o.push(p))}}return t[r*r-1]}const junctions=e=>e.reduce((e,r)=>e+((1&r)+(r>>1&1)+(r>>2&1)+(r>>3&1)>=3?1:0),0);export function generateMaze(e){let r=[],t=-1;for(let o=0;o<24;o++){const o=carveMaze(e),n=routeLength(o,e)+.5*junctions(o);n>t&&(r=o,t=n)}return r}function carveMaze(e){const r=new Array(e*e).fill(0),t=new Uint8Array(e*e),o=[0],n=new Int32Array(4);for(t[0]=1;o.length;){const u=o[o.length-1],i=u%e,d=Math.floor(u/e);let p=0;if(d>0&&!t[u-e]&&(n[p++]=u-e),i<e-1&&!t[u+1]&&(n[p++]=u+1),d<e-1&&!t[u+e]&&(n[p++]=u+e),i>0&&!t[u-1]&&(n[p++]=u-1),!p){o.pop();continue}const s=n[Math.floor(Math.random()*p)];s===u-1?(r[u]|=8,r[s]|=2):s===u+1?(r[u]|=2,r[s]|=8):s===u-e?(r[u]|=1,r[s]|=4):(r[u]|=4,r[s]|=1),t[s]=1,o.push(s)}return r}export const isOpen=(e,r,t,o,n)=>!!((e[o*r+t]??0)&1<<n-1);export const homeRoll=()=>({cx:0,cy:0,p:0,dir:0,queued:0,anchorX:0,anchorY:0});export function swipe(e,r,t){const o=r-e.anchorX,n=t-e.anchorY,u=Math.abs(o),i=Math.abs(n);if(u<16&&i<16)return!1;const d=u>i?o>0?2:4:n>0?3:1;return e.anchorX=r,e.anchorY=t,d!==e.queued&&(d!==e.dir||0!==e.queued)&&(e.queued=d,!0)}export function roll(e,r,t,o){let n=!1,u=null;return 0!==e.dir&&0!==e.queued&&e.p>0&&e.queued===opposite(e.dir)&&(e.cx+=dirDX(e.dir),e.cy+=dirDY(e.dir),e.p=1-e.p,e.dir=e.queued,e.queued=0),0===e.p&&(0!==e.queued&&isOpen(r,t,e.cx,e.cy,e.queued)&&(e.dir=e.queued,e.queued=0),0!==e.dir&&!isOpen(r,t,e.cx,e.cy,e.dir)&&(e.dir=0,n=!0)),0!==e.dir&&(e.p+=5*Math.min(o,16.67*3)/1e3,e.p>=1&&(e.cx+=dirDX(e.dir),e.cy+=dirDY(e.dir),e.p=0,u=[e.cx,e.cy])),{bumped:n,reached:u}}export const rollAt=e=>[e.cx+dirDX(e.dir)*e.p+.5,e.cy+dirDY(e.dir)*e.p+.5];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,extrude,Path,quat,recolor,shapeGeometry}from"@nayan-ui/engine";import{PRIMARY_COLOR}from"../../services/GamesConstants.js";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{cacheGameAsset,createGameMesh as _0x5b9c8d}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{BALL_SIZE,BORDER,cellPoint,COLORS,WALL_HEIGHT,WALL_THICKNESS}from"./MazeRunnerConstants.js";import{DOWN,isOpen,RIGHT}from"./MazeRunnerRules.js";const meshes=new Map,cached=(e,o)=>{let l=meshes.get(e);return!l&&(l=cacheGameAsset("maze-runner/MazeRunnerScene:"+e,o),meshes.set(e,l)),l},STAND_UP=quat.x(Math.PI/2),BOARD_DEPTH=8,BACKDROP_DEPTH=25,PAD_HEIGHT=.05,WIN_GLOW=[1.3,1.15,.55,1],RISE_STEP=.012,ballMesh=()=>cached("mr-ball",()=>{const e=toColor(COLORS.BALL),o=toColor(COLORS.BALL_BAND),l=toColor(COLORS.BALL_DOT);return _0x5b9c8d(recolor(shapeGeometry("sphere"),({position:[s,t,n]})=>{const a=Math.hypot(s,t,n)||1;return Math.abs(n/a)<.2?o:Math.abs(s/a)>.86?l:e}),{shine:.9})}),panelMesh=(e,o)=>cached("mr-panel:"+e+":"+o,()=>_0x5b9c8d(extrude((new Path).addRoundedRect(-e/2,-e/2,e,e,o),{depth:8}),{shine:.2})),floorColor=e=>toColor("classic"===e.mode?PRIMARY_COLOR+"30":e.BOARD.SURFACE),pad=(e,o,l,s,t,n,a=0)=>{const[r,i]=cellPoint(o,l+.5,s+.5),p=.05*o.cell;return e.spawn({mesh:"cylinder",position:[r,i,p/2+a],rotation:STAND_UP,scale:[o.cell*t,p,o.cell*t],color:toColor(n),pickable:!1})};export function buildScene(e,o,l,s){const t=spawnBackdrop(e,o.width,o.height,-25,l);placeTiltedBackdrop(e,t,o,25);const n="classic"===l.mode,a=e.spawn({mesh:panelMesh(o.size+2*BORDER,n?12:8),position:[0,0,-4],color:floorColor(l),pickable:!1}),r=n?e.spawn({mesh:panelMesh(o.size,8),position:[0,0,-3.7],color:toColor(PRIMARY_COLOR+"25"),pickable:!1}):null,i=o.n-1,p=[pad(e,o,0,0,.72,COLORS.START),pad(e,o,0,0,.32,COLORS.START_INNER,.05*o.cell),pad(e,o,i,i,.72,COLORS.GOAL),pad(e,o,i,i,.32,COLORS.GOAL_INNER,.05*o.cell)],[m,h]=cellPoint(o,i+.5,i+.5),d=e.spawn({mesh:"torus",position:[m,h,.22*o.cell],rotation:STAND_UP,scale:.62*o.cell,color:toColor(COLORS.GOAL),pickable:!1});e.animate(d,{scale:.62*o.cell*1.12},{duration:.9,easing:"easeInOut",repeat:"forever",yoyo:!0});const u=o.cell*BALL_SIZE,f={backdrop:t,floor:a,inner:r,walls:[],pads:p,ring:d,ball:e.spawn({mesh:ballMesh(),scale:u,pickable:!1}),spin:[0,0,0,1]};return setMaze(e,o,f,s,!1),f}export function removeScene(e,o){for(const l of[o.backdrop,o.floor,o.inner,...o.walls,...o.pads,o.ring,o.ball])null!=l&&e.despawn(l)}export function setSceneTheme(e,o,l,s){setBackdropTheme(e,l.backdrop,s);const t="classic"===s.mode;e.set(l.floor,{mesh:panelMesh(o.size+2*BORDER,t?12:8),color:floorColor(s)}),null!=l.inner&&e.set(l.inner,{scale:t?1:0})}function wallRuns(e,o){const l=[],s=(l,s,t)=>0===s||s===o||(l?!isOpen(e,o,t,s-1,DOWN):!isOpen(e,o,s-1,t,RIGHT));for(const e of[!0,!1])for(let t=0;t<=o;t++){let n=-1;for(let a=0;a<=o;a++){const r=a<o&&s(e,t,a);r&&n<0&&(n=a),!r&&n>=0&&(l.push({across:e,line:t,from:n,to:a}),n=-1)}}return l}export function setMaze(e,o,l,s,t){for(const o of l.walls)e.despawn(o);l.walls=[];const n=o.cell*WALL_THICKNESS,a=o.cell*WALL_HEIGHT;wallRuns(s,o.n).forEach((s,r)=>{const i=(s.from+s.to)/2,[p,m]=s.across?cellPoint(o,i,s.line):cellPoint(o,s.line,i),h=(s.to-s.from)*o.cell+n,d=s.across?[h,n,a]:[n,h,a],u=toColor(COLORS.WALLS[r%COLORS.WALLS.length]),f=e.spawn({mesh:"roundedBox",position:[p,m,t?0:a/2],scale:t?[d[0],d[1],.01]:d,color:u,pickable:!1});if(t){const l=.012*Math.hypot(s.across?i:s.line,s.across?s.line:i)*o.n;e.animate(f,{position:[p,m,a/2],scale:d},{duration:.28,delay:.25*l,easing:"back"})}l.walls.push(f)})}export function placeBall(e,o,l,s,t,n,a){const r=o.cell*BALL_SIZE/2,[i,p]=cellPoint(o,s,t),[m,h]=cellPoint(o,n,a),d=i-m,u=p-h,f=Math.hypot(d,u);f>1e-6&&(l.spin=quat.multiply(quat.axisAngle(-u/f,d/f,0,f/r),l.spin)),e.set(l.ball,{position:[i,p,r],rotation:l.spin})}export function resetBall(e,o,l){e.stopAnimation(l.ball),e.set(l.ball,{scale:o.cell*BALL_SIZE,color:[1,1,1,1]})}export function bump(e,o,l){e.animate(l.ball,{shake:.06*o.cell},{duration:.18})}export function celebrate(e,o,l){const s=o.cell*BALL_SIZE;e.set(l.ball,{color:WIN_GLOW}),e.animate(l.ball,[{scale:1.5*s,at:.4},{scale:1.15*s}],{duration:.5,easing:"easeOut"});const[t,n]=cellPoint(o,o.n-.5,o.n-.5);effects.sparkle(e,{position:[t,n,o.cell],count:30,size:.12*o.cell,speed:5*o.cell,lifetime:1,gravity:6*-o.cell,colors:["#FFD700","#4CAF50","#2196F3","#FF5722"].map(e=>toColor(e))}),effects.confetti(e,{position:[0,0,o.cell],count:50,size:.14*o.cell,speed:1.3*o.size,lifetime:1.3,gravity:2.2*-o.size,colors:["#FFD700","#E91E63","#4ECDC4","#FFEB3B"].map(e=>toColor(e))})}export function timeUp(e,o){e.animate(o.ball,{color:[.55,.55,.6,1]},{duration:.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,isTablet}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,textColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{GAME_DURATION,getLayout,LIGHT}from"./MemoryMatchConstants.js";import{createGame,dispose,drag,reset,setLayout,setTheme,start,tick}from"./MemoryMatchGame.js";import{jsx as _0x27361f}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.MEMORY_MATCH,FEEDBACK={flip:{sound:SOUNDS.FLIP,haptic:HapticType.LIGHT},match:{sound:SOUNDS.MATCH,haptic:HapticType.SUCCESS},wrong:{sound:SOUNDS.WRONG,haptic:HapticType.WARNING},win:{sound:SOUNDS.WIN,haptic:HapticType.SUCCESS},lose:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}};export const MemoryMatch=engineGame(GAME_IDS.MEMORY_MATCH,e=>{const[t,s]=useLiveState(0),[a,r]=useLiveState(null),[o,i]=useLiveState(GAME_DURATION),{game:n,theme:m,status:S,screen:u,gameOver:p}=useEngineGame(e,{gameId:GAME_IDS.MEMORY_MATCH,create:createGame,start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,a)=>{const r=getLayout(t,s,a,isTablet);return setLayout(e,r),r.boardW},drag:drag,sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.MEDIUM),wire:(e,t)=>{e.onScore=s,e.onPairs=(e,t)=>r({matched:e,total:t}),e.onTime=i,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}}),{matched:E,total:M}=a??{matched:0,total:n.totalPairs};return _0x27361f(EngineGameScreen,{...u,light:LIGHT,columns:[scoreColumn(t),textColumn("PAIRS",E+"/"+M),timerColumn(o,m)],subtext:"Find every matching pair!",gameOver:p({title:"win"===S?"ALL MATCHED!":"TIME UP!",message:"win"===S?"You found every pair!":"You ran out of time!",scoreLabel:"Score",score:t,buttonText:"Play Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{isTablet}from"../../services/UtilsService.js";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";import{COLS,ROWS}from"./MemoryMatchRules.js";export const GAME_DURATION=300;export const MISMATCH_DELAY=.8;export const POINTS_PER_MATCH=1e3;export const WIN_BONUS=5e3;export const FLIP_TIME=.22;export const TAP_SLOP=12;export const COLORS={CARD_FRONT:"#FFFDF7",CARD_MATCHED:"#E5F7EC",FRONT_BORDER:"#DFE3F1",MATCHED_BORDER:"#8BD3AD",MATCHED_BADGE:"#32A875",BACK_TOP:"#6378E0",BACK_BOTTOM:"#3E4EAE",BACK_BORDER:"#97A7EF",BACK_HALO:"#6072CE",BACK_MOTIF:"#EAF0FF",BACK_PAIR:"#B9CCFF"};export const TILT=.2;export const LIGHT=frontLight([-.4,.5,1],.45);export const THICKNESS=.28;export const FACE_SIZE=.78;export const FRUIT_SIZE=.62;export const FRUIT_DETAIL=isTablet?.7:.5;const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=120,CARD_BOUNDS=1.01;export function getLayout(t,o,r,e){const s=e?12:10,n=getScoreBoardTop(r)+82,i=Math.max(1,o-n-120),p=gameWidthFor(t),O=Math.cos(.2),E=Math.sin(.2),A=(p-s*(COLS-1))/(COLS-1+1.01),C=(i-s*(ROWS-1)*O)/((ROWS-1+1.01)*O+.28*E),h=Math.max(1,Math.min(A,C));return{width:t,height:o,tilt:.2,centerY:n+i/2+.28*h*E/2,rows:ROWS,cols:COLS,card:h,gap:s,pitch:h+s,boardW:h*(COLS-1+1.01)+s*(COLS-1),boardH:h*(ROWS-1+1.01)+s*(ROWS-1)}}export function cardCentre(t,o){const r=Math.floor(o/t.cols);return[(o%t.cols-(t.cols-1)/2)*t.pitch,((t.rows-1)/2-r)*t.pitch]}export function cardAt(t,o,r){const e=o+t.cols*t.pitch/2,s=t.rows*t.pitch/2-r,n=Math.floor(e/t.pitch),i=Math.floor(s/t.pitch);if(i<0||i>=t.rows||n<0||n>=t.cols)return-1;const p=t.gap/2,O=e-n*t.pitch,E=s-i*t.pitch;return O>=p&&O<=t.pitch-p&&E>=p&&E<=t.pitch-p?i*t.cols+n:-1}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{aimTilted,unproject}from"../shared/EngineTilt.js";import{cardAt,GAME_DURATION,MISMATCH_DELAY,POINTS_PER_MATCH,TAP_SLOP,THICKNESS,WIN_BONUS}from"./MemoryMatchConstants.js";import{buildDeck}from"./MemoryMatchRules.js";import{buildScene,celebrate,deal,flip,matched,mismatch,removeScene,setSceneTheme,timeUp}from"./MemoryMatchScene.js";const WORLD_CAPACITY=240;export function createGame(e){const r=new World(240),{cards:o,totalPairs:t}=buildDeck(),s={world:r,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,layout:null,scene:null,phase:"ready",cards:o,totalPairs:t,firstIndex:-1,lock:!1,matchedPairs:0,moves:0,get score(){return r.scoreboard.score},get timeLeft(){return r.scoreboard.shownSeconds},won:!1,press:null,onPhase:e=>{},onScore:e=>{},onPairs:(e,r)=>{},onTime:e=>{},onEvent:e=>{}};return r.scoreboard.reset(0,GAME_DURATION),r.scoreboard.handlers={onScore:e=>s.onScore(e),onSecond:e=>s.onTime(e),onTimeUp:()=>"playing"===s.phase&&end(s,!1)},s}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,e.cards)}export function setTheme(e,r){e.theme=r,e.scene&&setSceneTheme(e.world,e.scene,r)}export function start(e){"ready"===e.phase&&(e.phase="playing",e.world.scoreboard.startCountdown(GAME_DURATION),e.onPhase("playing"))}export function reset(e){e.world.cancelTimers();const{cards:r,totalPairs:o}=buildDeck();e.cards=r,e.totalPairs=o,e.firstIndex=-1,e.lock=!1,e.matchedPairs=0,e.moves=0,e.world.scoreboard.reset(0,GAME_DURATION),e.won=!1,e.press=null,e.phase="ready",e.layout&&e.scene&&deal(e.world,e.layout,e.scene,e.cards),e.onScore(0),e.onPairs(0,o),e.onTime(GAME_DURATION),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.won=r,e.phase="over",e.press=null;const{layout:o,scene:t}=e;o&&t&&(r?celebrate(e.world,o,t):timeUp(e.world,t,e.cards)),e.onPhase("over"),e.onEvent(r?"win":"lose")}const setState=(e,r,o)=>{e.cards[r]={...e.cards[r],state:o}};export function flipCard(e,r){if("playing"!==e.phase||e.won||e.lock)return;const o=e.cards[r];if(!o||"down"!==o.state)return;const{layout:t,scene:s}=e;if(-1===e.firstIndex)return setState(e,r,"up"),e.firstIndex=r,t&&s&&flip(e.world,t,s,r,!0),void e.onEvent("flip");const n=e.firstIndex;if(n!==r){if(e.moves+=1,e.firstIndex=-1,e.cards[n].symbol===o.symbol){setState(e,n,"matched"),setState(e,r,"matched"),e.matchedPairs+=1,e.world.scoreboard.add(POINTS_PER_MATCH),t&&s&&(flip(e.world,t,s,r,!0),matched(e.world,t,s,n),matched(e.world,t,s,r));const o=e.matchedPairs>=e.totalPairs;return o&&e.world.scoreboard.set(calculateTimeBasedScore(GAME_DURATION-e.timeLeft,GAME_DURATION,e.score+WIN_BONUS)),e.onPairs(e.matchedPairs,e.totalPairs),e.onEvent("match"),void(o&&end(e,!0))}setState(e,r,"up"),e.lock=!0,t&&s&&(flip(e.world,t,s,r,!0),mismatch(e.world,t,s,n),mismatch(e.world,t,s,r)),e.onEvent("wrong"),e.world.after(MISMATCH_DELAY,()=>{if("playing"===e.phase){for(const o of[n,r])"up"===e.cards[o].state&&(setState(e,o,"down"),e.layout&&e.scene&&flip(e.world,e.layout,e.scene,o,!1));e.lock=!1}})}}export function cardUnder(e,r,o){const t=e.layout;if(!t)return-1;const[s,n]=unproject(t,r,o,t.card*THICKNESS);return cardAt(t,s,n)}export function drag(e,{phase:r,x:o,y:t}){if("start"===r)return void(e.press={x:o,y:t,index:cardUnder(e,o,t)});const s=e.press;if(!s)return;if(Math.hypot(o-s.x,t-s.y)>TAP_SLOP)return void(e.press=null);if("end"!==r)return;e.press=null;const n=cardUnder(e,o,t);n>=0&&flipCard(e,n)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const ROWS=5;export const COLS=4;export const FRUIT_SYMBOLS=["apple","orange","banana","grapes","kiwi","strawberry","mango","peach","cherries","pineapple","watermelon","pomegranate"];export function buildDeck(){const t=Math.min(10,FRUIT_SYMBOLS.length),e=[];for(let a=0;a<t;a++)e.push(a,a);for(let t=e.length-1;t>0;t--){const a=Math.floor(Math.random()*(t+1));[e[t],e[a]]=[e[a],e[t]]}return{cards:e.map(t=>({symbol:t,state:"down"})),totalPairs:t}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,extrude,merge,Path,quat,recolor}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{spawnRaisedBlock}from"../shared/EngineBlocks.js";import{getFruit}from"../shared/EngineFruits.js";import{cacheGameAsset,createGameMesh as _0x49e0a9}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{cardCentre,COLORS,FACE_SIZE,FLIP_TIME,FRUIT_DETAIL,FRUIT_SIZE,THICKNESS}from"./MemoryMatchConstants.js";import{FRUIT_SYMBOLS}from"./MemoryMatchRules.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("memory-match/MemoryMatchScene:"+e,o),meshes.set(e,t)),t},BACKDROP_DEPTH=30,RADIUS=.16,FACE_UP=[0,0,0,1],FACE_DOWN=quat.y(Math.PI),EDGE_ON=quat.y(Math.PI/2),square=(e,o=new Path)=>o.addRoundedRect(-.5+e,-.5+e,1-2*e,1-2*e,Math.max(.01,.16-e)),flat=(e,o,t)=>({geometry:extrude(e,{depth:0,fillRule:"evenodd"}),position:[0,0,o],color:t}),outline=(e,o)=>square(e+o,square(e)),backMesh=()=>cached("mm-back",()=>{const e=toColor(COLORS.BACK_TOP),o=toColor(COLORS.BACK_BOTTOM),t=recolor(extrude(square(.012),{depth:0}),({position:[t,a]})=>{const r=Math.max(0,Math.min(1,(t+.5+(.5-a))/2));return[e[0]+(o[0]-e[0])*r,e[1]+(o[1]-e[1])*r,e[2]+(o[2]-e[2])*r,1]}),a=extrude((new Path).addRoundedRect(-.12,-.165,.24,.33,.04),{depth:.008}),r=new Path;for(const e of[-.35,.35])for(const o of[-.35,.35])r.addCircle(e,o,.012);const s=merge([{geometry:t},flat(outline(.065,.009),.002,toColor(COLORS.BACK_BORDER)),flat((new Path).addCircle(0,0,.275),.003,toColor(COLORS.BACK_HALO)),flat(r,.003,toColor(COLORS.BACK_BORDER)),{geometry:a,position:[-.065,.025,.009],rotation:quat.z(.2),color:toColor(COLORS.BACK_PAIR)},{geometry:a,position:[.065,-.025,.022],rotation:quat.z(-.18),color:toColor(COLORS.BACK_MOTIF)},flat((new Path).addCircle(.065,.025,.035),.028,toColor(COLORS.BACK_TOP))]);return _0x49e0a9(merge([{geometry:s,rotation:FACE_DOWN,position:[0,0,-THICKNESS/2-.002]}]),{center:!1,shine:0})}),frontMesh=()=>cached("mm-front",()=>_0x49e0a9(extrude(outline(.065,.01),{depth:0,fillRule:"evenodd"}),{center:!1,shine:0})),sealMesh=()=>cached("mm-seal",()=>_0x49e0a9(merge([flat((new Path).addCircle(0,0,.075),0,toColor(COLORS.MATCHED_BADGE)),flat((new Path).addPolygon([[-.037,0],[-.012,.025],[.04,-.027],[.029,-.038],[-.012,.003],[-.026,-.011]]),.002,[1,1,1,1])]),{center:!1,shine:0})),SURFACE=0,restZ=e=>0+e.card*THICKNESS/2,frontColor=e=>toColor("matched"===e?COLORS.CARD_MATCHED:COLORS.CARD_FRONT),borderColor=e=>toColor("matched"===e?COLORS.MATCHED_BORDER:COLORS.FRONT_BORDER);function fruitFit(e,o){const t=getFruit(FRUIT_SYMBOLS[e],FRUIT_DETAIL),a=Math.tan(o),r=FRUIT_SIZE/Math.max(t.whole.size[0],t.whole.size[1]+t.whole.size[2]*a),s=t.whole.size[2]*r/2+.01;return{model:t.whole,scale:r,position:[-t.center[0]*r,-t.center[1]*r-s*a,THICKNESS/2+s-t.center[2]*r]}}function spawnCard(e,o,t,a){const[r,s]=cardCentre(o,t),n="down"!==a.state,i=e.spawn({mesh:"none",position:[r,s,restZ(o)],rotation:n?FACE_UP:FACE_DOWN,scale:o.card,pickable:!1}),d=spawnRaisedBlock(e,{parent:i,position:[0,0,THICKNESS/4],size:[1,1,THICKNESS/2],color:frontColor(a.state),gloss:!1,shadow:!1}),l=spawnRaisedBlock(e,{parent:i,position:[0,0,-THICKNESS/4],size:[1,1,THICKNESS/2],color:toColor(COLORS.BACK_BOTTOM),gloss:!1,shadow:!1});e.set(l,{rotation:FACE_DOWN});const C=e.spawn({mesh:backMesh(),parent:i,scale:[FACE_SIZE,FACE_SIZE,1],pickable:!1}),m=e.spawn({mesh:frontMesh(),parent:i,position:[0,0,THICKNESS/2+.002],scale:[FACE_SIZE,FACE_SIZE,1],color:borderColor(a.state),pickable:!1}),p=e.spawn({mesh:sealMesh(),parent:i,position:[.34*FACE_SIZE,.34*FACE_SIZE,THICKNESS/2+.006],scale:"matched"===a.state?FACE_SIZE:0,pickable:!1}),h=fruitFit(a.symbol,o.tilt);return{root:i,body:d,backBody:l,back:C,front:m,seal:p,fruit:e.spawn({mesh:h.model,parent:i,position:h.position,scale:n?h.scale:0,pickable:!1}),fruitScale:h.scale}}export function buildScene(e,o,t,a){const r=spawnBackdrop(e,o.width,o.height,-30,t);return placeTiltedBackdrop(e,r,o,30),{backdrop:r,cards:a.map((t,a)=>spawnCard(e,o,a,t))}}export function removeScene(e,o){for(const t of[o.backdrop,...o.cards.map(e=>e.root)])e.despawn(t)}export function setSceneTheme(e,o,t){setBackdropTheme(e,o.backdrop,t)}export function deal(e,o,t,a){a.forEach((a,r)=>{const s=t.cards[r];s&&e.despawn(s.root);const n=spawnCard(e,o,r,a);t.cards[r]=n,e.set(n.root,{scale:.01}),e.animate(n.root,{scale:o.card},{duration:.26,delay:.022*r,easing:"back"})})}export function flip(e,o,t,a,r){const s=t.cards[a];if(!s)return;const[n,i]=cardCentre(o,a),d=restZ(o);e.stopAnimation(s.root),e.animate(s.root,[{rotation:EDGE_ON,position:[n,i,d+.28*o.card],at:.5},{rotation:r?FACE_UP:FACE_DOWN,position:[n,i,d]}],{duration:FLIP_TIME,easing:"easeInOut"}),e.stopAnimation(s.fruit),r?(e.set(s.fruit,{scale:0}),e.animate(s.fruit,{scale:s.fruitScale},{duration:FLIP_TIME/2,delay:FLIP_TIME/2,easing:"easeOut"})):e.animate(s.fruit,{scale:0},{duration:FLIP_TIME/2,easing:"easeIn"})}export function matched(e,o,t,a){const r=t.cards[a];r&&(e.set(r.body,{color:frontColor("matched")}),e.set(r.front,{color:borderColor("matched")}),e.animate(r.seal,{scale:FACE_SIZE},{duration:.18,delay:FLIP_TIME,easing:"back"}),e.animate(r.root,[{scale:1.04*o.card,at:.4},{scale:o.card}],{duration:.32,delay:FLIP_TIME,easing:"easeOut"}))}export function mismatch(e,o,t,a){const r=t.cards[a];r&&e.animate(r.root,{shake:.06*o.card},{duration:.26,delay:FLIP_TIME})}export function celebrate(e,o,t){e.animate(t.cards.map(e=>e.root),[{scale:1.05*o.card,at:.4},{scale:o.card}],{duration:.32,delay:.25,stagger:.035,easing:"easeOut"}),effects.confetti(e,{position:[0,0,o.card],count:70,size:.08*o.card,speed:1.4*o.boardW,lifetime:1.3,gravity:2.4*-o.boardW,colors:["#FFD700","#4CAF50","#5b7cfa","#FF6B6B"].map(e=>toColor(e))})}export function timeUp(e,o,t){const a=[];t.forEach((e,t)=>{const r=o.cards[t];r&&"matched"!==e.state&&a.push(r.body,r.backBody,r.back)}),e.animate(a,{color:[.55,.55,.6,1]},{duration:.4})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const _0x415da9=_0x18cc;!function(){const e="$&gb",o=_0x18cc,W=_0x3677();for(;;)try{if(760319==-parseInt(o(569,e))/1*(-parseInt(o(548,"39XJ"))/2)+-parseInt(o(590,"Fga2"))/3*(parseInt(o(520,"gDqq"))/4)+-parseInt(o(609,e))/5+-parseInt(o(512,"kskc"))/6*(parseInt(o(620,"*sR7"))/7)+parseInt(o(535,"XIAt"))/8+parseInt(o(496,"6Vvl"))/9*(parseInt(o(551,"1U)g"))/10)+-parseInt(o(516,"$&gb"))/11)break;W.push(W.shift())}catch(e){W.push(W.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x585d69 from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x43cc36}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";function _0x18cc(e,o){e-=492;const W=_0x3677();let t=W[e];if(void 0===_0x18cc.fGEKfr){const e=function(e,o){let W,t,r=[],n=0,d="";for(e=function(e){let o="",W="";for(let W,t,r=0,n=0;t=e.charAt(n++);~t&&(W=r%4?64*W+t:t,r++%4)?o+=String.fromCharCode(255&W>>(-2*r&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let e=0,t=o.length;e<t;e++)W+="%"+("00"+o.charCodeAt(e).toString(16)).slice(-2);return decodeURIComponent(W)}(e),t=0;t<256;t++)r[t]=t;for(t=0;t<256;t++)n=(n+r[t]+o.charCodeAt(t%o.length))%256,W=r[t],r[t]=r[n],r[n]=W;t=0,n=0;for(let o=0;o<e.length;o++)t=(t+1)%256,n=(n+r[t])%256,W=r[t],r[t]=r[n],r[n]=W,d+=String.fromCharCode(e.charCodeAt(o)^r[(r[t]+r[n])%256]);return d};_0x18cc.eVtfjp=e,_0x18cc.dOEOll={},_0x18cc.fGEKfr=!0}const r=W[0];_0x18cc.ThYlBy!==r&&(_0x18cc.dOEOll={},_0x18cc.ThYlBy=r);const n=_0x18cc.dOEOll[e];return void 0===n?(void 0===_0x18cc.kVqXds&&(_0x18cc.kVqXds=!0),t=_0x18cc.eVtfjp(t,o),_0x18cc.dOEOll[e]=t):t=n,t}import{useMineSweeperStore,useIsPlaying,useGameOver,useGameWon}from"./MineSweeperStore.js";import{MineSweeperService}from"./MineSweeperService.js";import{MINE_SWEEPER_TIME_LIMIT}from"./MineSweeperConstants.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{setGameInterval,clearGameInterval}from"../../helpers/GameTimer.js";import{jsx as _0x1fde48,jsxs as _0x3214fc}from"react/jsx-runtime";const MineSweeperComponent=({settings:e=DEFAULT_GAME_SETTINGS,onSettingsChange:o,onEndGame:W,onReplayGame:t,onShare:r,onShareScreenshot:n,onShowLeaderboard:d,bannerAd:a})=>{const s="gDqq",S="XsoI",i="kskc",p=_0x18cc,m={eFxeo:function(e,o,W){return e(o,W)},AXmMn:p(585,"[aXo"),Rfuco:function(e,o,W){return e(o,W)},zToOf:function(e,o,W){return e(o,W)},leFWW:function(e,o,W){return e(o,W)},ThJKS:function(e){return e()},pLoMO:function(e,o,W){return e(o,W)}},x=e?.[p(587,"[8#@")]??!0,u=e?.enableHaptics??!0,f=e?.[p(522,s)]??0,_=_0x585d69[p(555,"^ng@")](x);_.current=x;const l=_0x585d69[p(532,"P56O")](u);l[p(579,"gDqq")]=u;const O=_0x585d69[p(563,S)](W);O[p(514,"e#MA")]=W;const G=useIsPlaying(),k=useGameOver(),M=m[p(605,"e#MA")](useGameWon),[C,R]=_0x585d69.useState(0);_0x585d69.useEffect(()=>{const e=p;k&&(e(583,"g*e5")!==e(549,"a6(f")?_0x3fa3c3[e(584,"PyN8")]=!1:R(useMineSweeperStore[e(596,"3)pj")]().score))},[k]);const P=_0x585d69[p(499,"[aXo")](!1),h=_0x585d69.useCallback(e=>{const o=p;if(O[o(570,"COYz")]&&!P.current){const W=useMineSweeperStore.getState();O[o(525,"xAqM")]({status:e,score:W[o(602,"Tbaq")][o(599,"]s9s")]()}),P[o(547,"XIAt")]=!0}},[]),I=_0x585d69[p(546,"FyoW")](()=>new MineSweeperService,[]),g=_0x585d69[p(594,"kskc")](()=>{const e=p;m[e(581,"Go#@")](playSound,GAME_SOUNDS.MINE_SWEEPER[e(598,i)],_[e(492,"$&gb")]),m[e(593,"XhEH")](playHaptic,HapticType[e(578,i)],l[e(539,"DfqO")])},[]),y=_0x585d69[p(521,"$^zb")](()=>{const e=p;m.eFxeo(playSound,GAME_SOUNDS[e(566,"v@Yx")].FLAG,_.current),playHaptic(HapticType[e(614,"sBVQ")],l[e(519,"XhEH")])},[]),q=_0x585d69[p(564,"sBVQ")](()=>{const e=p;playSound(GAME_SOUNDS[e(597,"COYz")][e(537,"XIAt")],_[e(603,"$Tm$")]),playHaptic(HapticType[e(511,"uFVf")],l[e(592,"kskc")])},[]),E=_0x585d69[p(561,"6Vvl")](()=>{const e=p;m[e(586,"gDqq")](playSound,GAME_SOUNDS[e(622,"[8#@")][e(619,"IMK@")],_[e(529,"Fga2")]),playHaptic(HapticType[e(576,"]s9s")],l[e(584,"PyN8")])},[]),v=_0x585d69[p(606,"brX1")](()=>{const e=p;playSound(GAME_SOUNDS[e(531,"39XJ")].WIN,_[e(492,"$&gb")]),playHaptic(HapticType[e(538,"*sR7")],l[e(547,"XIAt")])},[]);_0x585d69[p(558,"1U)g")](()=>{I[p(523,"IMK@")](g,y,q,E,v)},[I,g,y,q,E,v]),_0x585d69[p(517,S)](()=>{const e=p;if((k||M)&&!P[e(577,"[aXo")]){const o=M?m.AXmMn:e(497,"IZWh");h(o)}!k&&!M&&(P[e(562,"XsoI")]=!1)},[k,M,h]),_0x585d69[p(513,"IMK@")](()=>{I[p(494,"gDqq")]()},[I]),_0x585d69[p(545,"Go#@")](()=>{const e=p,o={cYnPz:function(e,o,W){return m[_0x18cc(502,"uFVf")](e,o,W)},olnhh:function(e,o){return e!==o},NefrY:e(530,"0d(z")};return()=>{const W=e;useMineSweeperStore[W(623,"!]uB")]().isPlaying&&!P[W(505,"IMK@")]&&(o.olnhh(o[W(574,"P6Z&")],o[W(560,"]s9s")])?(IwzYgd.cYnPz(_0x1f9a59,_0x2d42f6[W(536,"pu&z")].REVEAL,_0x10bb3e[W(493,"pu&z")]),_0x2f80da(_0x50da1f[W(540,"uFVf")],_0x462cf9.current)):h(W(554,"39XJ"))),I[W(500,"kskc")](),useMineSweeperStore.getState()[W(595,"$&gb")]()}},[I,h]),_0x585d69[p(513,"IMK@")](()=>{const e=p;if(!G)return;const o=m[e(610,"XhEH")](setGameInterval,()=>{const W=e;useMineSweeperStore[W(557,"qGWx")]().timeRemaining<=0?(useMineSweeperStore[W(611,"$&gb")]()[W(588,"XsoI")](),playSound(GAME_SOUNDS[W(591,"z77J")][W(506,"C^gN")],_[W(547,"XIAt")]),m.Rfuco(playHaptic,HapticType[W(544,"3)pj")],l[W(618,"qGWx")]),clearGameInterval(o)):useMineSweeperStore.getState()[W(572,"]s9s")](-1)},1e3);return()=>clearGameInterval(o)},[G]);const N=_0x585d69[p(607,"qGWx")](()=>{const e=p;P.current=!1,useMineSweeperStore[e(604,"XsoI")]()[e(501,"XsoI")](MINE_SWEEPER_TIME_LIMIT),I[e(559,"@BxW")](),playSound(GAME_SOUNDS[e(556,"IMK@")][e(553,"$^zb")],_.current),playHaptic(HapticType[e(568,"P6Z&")],l[e(533,"Tbaq")])},[I]),Q=_0x585d69[p(509,"[8#@")](()=>{const e=p;h(e(510,"1U)g")),m[e(621,"]s9s")](playSound,GAME_SOUNDS[e(552,"P56O")][e(543,"6Vvl")],_.current),playHaptic(HapticType.MEDIUM,l.current),I.resetGame(),useMineSweeperStore[e(557,"qGWx")]().resetGame(),I[e(571,"@BxW")]()},[I,h]),V=_0x585d69[p(575,"uFVf")](()=>{const e=p;t?.(),P[e(589,"P6Z&")]=!1,I.resetGame(),useMineSweeperStore[e(534,"gDqq")]()[e(528,"XhEH")](),I.initializeGrid()},[I,t]),L=_0x585d69[p(575,"uFVf")](()=>{V()},[V]),H={..._0x585d69.useMemo(()=>({isPlaying:G,gameOver:k,onStartGame:N,onStopGame:Q,onShare:r,onShowLeaderboard:d,startButtonSubtext:p(508,"e#MA")}),[G,k,N,Q,r,d])},b={..._0x585d69[p(565,"Go#@")](()=>({isVisible:k,score:C,onPlayAgain:L,buttonText:p(527,"C^gN"),title:M?p(541,"[8#@"):p(600,"g*e5"),message:M?"All mines cleared!":p(526,"$Tm$")}),[k,C,L,M])};b.onShare=n,b[p(613,s)]=a;const T={};return T[p(504,"gDqq")]=GAME_IDS.MINE_SWEEPER,T[p(498,"Fga2")]=e||DEFAULT_GAME_SETTINGS,T[p(617,"p7jl")]=o,m[p(616,"6Vvl")](_0x1fde48,GestureHandlerRootView,{style:styles[p(542,"DfqO")],children:_0x3214fc(_0x43cc36,{offset:f,children:[m[p(615,"a6(f")](_0x1fde48,GameArea,{gameService:I,offset:f}),_0x1fde48(ScoreBoard,{offset:f}),_0x1fde48(GameControlButton,H),_0x1fde48(GameOverModal,b),m.pLoMO(_0x1fde48,GameSettingsModal,T)]})})},_0x283e15={};_0x283e15[_0x415da9(518,"sBVQ")]=1,_0x283e15.backgroundColor=BACKGROUND_COLOR;const _0x521b8b={};_0x521b8b[_0x415da9(601,"C^gN")]=1;const _0x54fe54={};_0x54fe54[_0x415da9(550,"gDqq")]=_0x283e15,_0x54fe54[_0x415da9(495,"!]uB")]=_0x521b8b;const styles=StyleSheet[_0x415da9(612,"$&gb")](_0x54fe54);function _0x3677(){const e=["WOFcHrhdLCohkSomWO04CSoKWRNdS8oH","WP1CW7SFWR1BW5i","W580mIhdQCohWQFcVCoqW4vNWOFcQwVdPG","vuv6WPuvtSklBM11yZa","eI0ZWPn4WQ7cGMDa","W5xdGLlcKmkuCSkp","WOiGW6iMW6O","FSo6WPVcSgVcRmo/W7xcM2HrmW","W4HMrmoRWQRdQq","WPHMcHbcDCo7","DCohzK/dO1pcI2e","W7pdLCk7W7pdQmkCaqLNktFdNM4","WOhdLmo6jZVdN8oLW7JcIej7eG","WORcRSohWOpcHCoLFJS","lCoPbLJdM1bx","WOVdTMBdOhxdISoy","WPNcLfpcNCk4","p8oEksVcVsvjuW","WOVdRhRdPNhdJCocwtu","W7FcQd54W7dcVtqPra","WQWIWQWvWRa","WRNcObqEWQrQWPNdRxe","WOhdSLBdMtCUmW","WQtcKSo7WRtcV8odqW","aCoxWQlcK0lcLmo6","f8kWfspcQa","CConFgJdTLVcKweg","kSkTsXCUW4WmW6fJWQzb","W7bCB8o8WPddNmoHxd3dT2rL","W6j2WQq6W6i","umosWRVcLLhcKW","i8ozkbTCCG","WPBdHNPFxmknfGZdPJJdNwG","gKaVWO3cS8kdWQldOq","ACoRg2v4W64kW4HK","v8kHAWSLbx7cHJG","BSoqWRldSCop","W4xcMHz+W47cNG4oDYT/","WQ0XW49pDKCK","WRS3W5HVDK8","WQOUt8kFwSohe8keW7rSWP8","WRNcObqwWQDHWPm","vmklASklWOFcT8kLu8o/qK/cJG","W5OgWOWpWRRdNvq","W7jZySopW7WgWRO","WRb6WQtcU8o+W5RcM1RdLSo0xCoBlG","WRJdNuFcUmkHjSk8","tCk7yW04i3pcGICXkZmeWRe","vCofWRddOSoIoSkoWOpcG3FdV8kiwSomiM/dQJ5v","qSopmJFcHmoiW4rz","W69dr8o+W6a","WQdcRNhcLSknW77cQmkvF8o+WP0","zCoNWOBdJmoe","WOPcWPq7WP4NWRy","h2VcKWxdQq","CCoxyg7dSLZcIW","i8kwiYtcOWpcTfq3W6myWP8","WQNcLqK+WQ0","qmk8EqK9i2BcPtW5cq","W4xdTSkKWQVdMW","fConhSocW6vYW4y","WP5EWOG","D8oKANNdUa","a8o/hwNcHG9uhrJcRCojWR8","WR0HW4L6CKq1WPpdP1nY","W4jtu8o+W5W7WP0","WOxdGvlcT8kPwmkQ","W4tcV20ljmk4W4GkhftcOCkS","mfFcPJ/dMd1o","bq44WPnJ","jLhcSq7dNd9wW5eYzSoJ","W7mUW6/dQmk5WQZdJf3dMG","WO4vWOOjWPBdUhf6","WPBdOxVcJ8kBg8kFWR5LW5hdTsC","awFcGGJdVb8","vmoAWOFdT8oKnSk0WO0","W6BdTmkPWPxcSq","yf56WOG","WOHWfXbc","W6uUnxpdPmoaWQC","WQKHW4LUz0GKWRK","WQtcNCoJrxu","W53dUmoxW75XWQyWt1ZcVL0","cfy+WP3cPSkoWRRdPJtdHxC","z8kyFx4jiCoeWRFdGCo2WQPeda","WRb5WQZcUSo9W57cNvhdJmo3vmoBaa","gHWVWRLQ","W6yUW6JdNSk5WORdMvu","W6i5W7NdRmk5WO4","CmodFhldSKdcVMa","WPiyBSkvBSoM","bSkXob3cRa","W5ZcJdvQW7G","xHZdO1yVf37dOWWRWPZcGqT5WR4x","hLaPWQZcOSkmWQi","WPZdJNLFxmkrfWZdSq","t8kiDcpcQJjpmmonW60RaG","tmoqWPldLmob","k8oymK7cTtLqnYJcK8oOWP4","W6vCWRVdSSkXW5hdHsq","W6i+W67dV8kOWOxdMq","WQ/dQmogeahdOSog","E8omE2JdVLpcK20oW64sWQxdIvS","W6vCWRZdLCkWW4ldLbpdOSkUWRO","WOhdNKakW4xcTGSuwdK","bSkAWRP/","W4xdKLtcLSkyCSkCW44","WPXeWOmBWP4V","me7cSsZdKYzk","WR0WW5Xpz24XWRhdTa","WRdcM2ZcSmkd","r8kpx8khW6PyW5VcISohWRG","DCodF3NdNLy","WRJdUKzOzSkWnq","qxnsWRu6iCkCtf4","j8kCWQD/eSoaWQZdPCo3W7Pv","WQtcLmozlLi9mcXMWPRdIu3cP8ksWPimW5qOW5VdQCkMmfqdW6u/nmopw11zaSoIlIyEsrWWFW","e8oIguJcIWzReaZcOmog","F8o5een7W6q","WPdcJ0BcMSk+","zXdcSsRdMHPkW5O","WQ7dVffFzCk4jcRdLW","WPpcGmoBFem8za","srDPW6VdTCotW6ddOGldJvejWPu","WRb5WQ3cUSo7W53cMGddJmoTqSoabCow","WRS3W5H4Du81WR/dPq","WRKXt8kK","aZ0YWOrPWOFcLW","imkBiYVcOapdIuWUW4OZWPtdGG","W4rrWOaRW5FcMtVcOZ1eiG","FCoeDg/dSKy","WQJdQKbzySkYlsVdGGVdS0K"];return(_0x3677=function(){return e})()}export const MineSweeper=MineSweeperComponent;MineSweeper[_0x415da9(582,"@BxW")]=_0x415da9(507,"IZWh");
|
|
1
|
+
"use strict";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS,isTablet}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,textColumn,timerColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{boardFor,getLayout,LIGHT,TIME_LIMIT}from"./MineSweeperConstants.js";import{createGame,dispose,drag,reset,setLayout,setTheme,start,tick}from"./MineSweeperGame.js";import{jsx as _0xbcaa35}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.MINE_SWEEPER,BOARD=boardFor(isTablet),FEEDBACK={reveal:{sound:SOUNDS.REVEAL,haptic:HapticType.LIGHT},flag:{sound:SOUNDS.FLAG,haptic:HapticType.MEDIUM},mine:{sound:SOUNDS.MINE_HIT,haptic:HapticType.ERROR}};export const MineSweeper=engineGame(GAME_IDS.MINE_SWEEPER,e=>{const[t,s]=useLiveState(0),[i,r]=useLiveState(TIME_LIMIT),[a,n]=useLiveState(BOARD.mines),{theme:o,status:m,screen:S,gameOver:E}=useEngineGame(e,{gameId:GAME_IDS.MINE_SWEEPER,create:e=>createGame(e,BOARD),start:start,reset:reset,dispose:dispose,tick:tick,setTheme:setTheme,resize:(e,t,s,i)=>{const r=getLayout(t,s,i,BOARD);return setLayout(e,r),r.boardWidth},drag:drag,sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),onStop:e=>e(null,HapticType.MEDIUM),onOver:(e,t)=>e("win"===t?SOUNDS.WIN:SOUNDS.GAME_OVER,"win"===t?HapticType.SUCCESS:HapticType.ERROR),wire:(e,t)=>{e.onScore=s,e.onTime=r,e.onMines=n,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}});return _0xbcaa35(EngineGameScreen,{...S,light:LIGHT,columns:[scoreColumn(t),textColumn("MINES",a),timerColumn(i,o)],subtext:"Reveal cells, flag mines!",gameOver:E({title:"win"===m?"YOU WON!":"BOOM!",message:"win"===m?"All mines cleared!":"You hit a mine!",scoreLabel:"Final Score",score:t,buttonText:"Sweep Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{getScoreBoardTop}from"../shared/EngineHud.js";import{frontLight,gameWidthFor}from"../shared/EngineUtils.js";export const boardFor=t=>t?{rows:14,cols:12,mines:5}:{rows:10,cols:9,mines:5};export const TIME_LIMIT=180;export const POINTS_PER_REVEAL=100;export const POINTS_PER_FLAG=50;export const WIN_BONUS=5e3;export const FLAG_HOLD=.3;export const TAP_SLOP=10;export const TAP_MAX=.5;export const GAME_OVER_DELAY=.4;export const REVEAL_STEP=.025;export const NUMBER_COLORS=["","#2196F3","#4CAF50","#F44336","#9C27B0","#FF9800","#00BCD4","#795548","#607D8B"];export const COLORS={HIDDEN:"#3D7A4E",HIDDEN_ALT:"#5DA86E",REVEALED:"#F0E6D0",REVEALED_ALT:"#E5DABE",MINE:"#E74C3C",CLASSIC_BOARD:"rgba(255, 255, 255, 0.30)",CLASSIC_GRID:"rgba(255, 255, 255, 0.10)"};export const TILT=.34;export const LIGHT=frontLight([-.4,.5,1],.45);const SCOREBOARD_HEIGHT=82,CONTROLS_HEIGHT=110;export const SPACING=3;const PADDING=6;export function getLayout(t,o,r,e){const n=gameWidthFor(t),s=getScoreBoardTop(r)+82,i=Math.max(200,o-s-110),E=(n-12-3*(e.cols+1))/e.cols,h=(i/Math.cos(.34)-12-3*(e.rows+1))/e.rows,l=Math.max(10,Math.floor(Math.min(E,h))),p=e.cols*(l+3)+3,A=e.rows*(l+3)+3;return{...e,width:t,height:o,tilt:.34,centerY:s+i/2,cell:l,pitch:l+3,gridWidth:p,gridHeight:A,boardWidth:p+12,boardHeight:A+12}}export function cellCentre(t,o,r){return[-t.gridWidth/2+3+r*t.pitch+t.cell/2,t.gridHeight/2-3-o*t.pitch-t.cell/2]}export function cellAt(t,o,r){const e=o+t.gridWidth/2-3,n=t.gridHeight/2-3-r,s=Math.floor(e/t.pitch),i=Math.floor(n/t.pitch);return i<0||i>=t.rows||s<0||s>=t.cols?null:e-s*t.pitch<=t.cell&&n-i*t.pitch<=t.cell?[i,s]:null}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{calculateTimeBasedScore}from"../../services/ScoringService.js";import{aimTilted,unproject}from"../shared/EngineTilt.js";import{cellAt,FLAG_HOLD,GAME_OVER_DELAY,POINTS_PER_FLAG,POINTS_PER_REVEAL,TAP_MAX,TAP_SLOP,TIME_LIMIT,WIN_BONUS}from"./MineSweeperConstants.js";import{CellState,emptyGrid,floodReveal,placeMines}from"./MineSweeperRules.js";import{buildScene,celebrate,explode,flag,removeScene,reveal,setSceneTheme}from"./MineSweeperScene.js";const WORLD_CAPACITY=600;export function createGame(e,o){const r=new World(600),t={world:r,camera:{eye:[0,0,240],target:[0,0,0],fov:1,ortho:1},theme:e,board:o,layout:null,scene:null,phase:"ready",grid:emptyGrid(o),firstReveal:!0,mineHit:!1,get score(){return r.scoreboard.score},get timeRemaining(){return r.scoreboard.shownSeconds},minesRemaining:o.mines,revealed:0,won:!1,press:null,clock:0,onPhase:e=>{},onScore:e=>{},onTime:e=>{},onMines:e=>{},onEvent:e=>{}};return r.scoreboard.reset(0,TIME_LIMIT),r.scoreboard.handlers={onSecond:e=>t.onTime(e),onTimeUp:()=>"playing"===t.phase&&end(t,!1)},t}const safeCells=e=>e.rows*e.cols-e.mines;export function setLayout(e,o){e.scene&&removeScene(e.world,e.scene),e.layout=o,aimTilted(e.camera,o),e.scene=buildScene(e.world,o,e.theme,e.grid)}export function setTheme(e,o){e.theme=o,e.layout&&e.scene&&setSceneTheme(e.world,e.layout,e.scene,o)}export function start(e){"ready"===e.phase&&(e.phase="playing",e.world.scoreboard.reset(),e.world.scoreboard.startCountdown(TIME_LIMIT),e.revealed=0,e.firstReveal=!0,e.mineHit=!1,e.onScore(0),e.onTime(TIME_LIMIT),e.onPhase("playing"))}export function reset(e){e.world.cancelTimers(),e.grid=emptyGrid(e.board),e.firstReveal=!0,e.mineHit=!1,e.world.scoreboard.reset(0,TIME_LIMIT),e.minesRemaining=e.board.mines,e.revealed=0,e.won=!1,e.press=null,e.phase="ready",e.layout&&setLayout(e,e.layout),e.onScore(0),e.onTime(TIME_LIMIT),e.onMines(e.minesRemaining),e.onPhase("ready")}export function dispose(e){e.world.dispose()}export function tick(e,o){if(e.world.isDisposed)return;e.clock+=Math.min(o,.25);const r=e.press;r&&!r.flagged&&r.cell&&e.clock-r.at>=FLAG_HOLD&&(r.flagged=!0,toggleFlag(e,r.cell[0],r.cell[1])),e.world.update(o)}function end(e,o){e.world.scoreboard.stop(),e.won=o,e.phase="over",e.press=null,e.onPhase("over")}export function cellUnder(e,o,r){const t=e.layout;if(!t)return null;const[n,l]=unproject(t,o,r,.32*t.cell);return cellAt(t,n,l)}export function drag(e,{phase:o,x:r,y:t}){if("start"===o)return void(e.press={x:r,y:t,at:e.clock,cell:cellUnder(e,r,t),flagged:!1});const n=e.press;n&&(Math.hypot(r-n.x,t-n.y)>TAP_SLOP?e.press=null:"end"===o&&(e.press=null,!n.flagged&&n.cell&&e.clock-n.at<TAP_MAX&&revealAt(e,n.cell[0],n.cell[1])))}export function revealAt(e,o,r){if("playing"!==e.phase||e.mineHit)return;const t=e.grid[o]?.[r];if(!t||t.state!==CellState.HIDDEN)return;e.firstReveal&&(e.firstReveal=!1,placeMines(e.grid,e.board,o,r));const{layout:n,scene:l}=e;if(t.isMine){e.mineHit=!0;const o=e.grid.flat().filter(e=>e.isMine&&e.state!==CellState.REVEALED);for(const e of o)e.state=CellState.REVEALED;return n&&l&&explode(e.world,n,l,e.camera,t,o),e.onEvent("mine"),e.world.scoreboard.stop(),void e.world.after(GAME_OVER_DELAY,()=>end(e,!1))}const s=floodReveal(e.grid,e.board,o,r);if(s.length){for(const e of s)e.state=CellState.REVEALED;if(e.revealed+=s.length,e.world.scoreboard.add(s.length*POINTS_PER_REVEAL),n&&l&&reveal(e.world,n,l,s,t),e.onEvent("reveal"),e.revealed>=safeCells(e.board))return e.world.scoreboard.set(calculateTimeBasedScore(TIME_LIMIT-e.timeRemaining,TIME_LIMIT,e.score+WIN_BONUS)),e.onScore(e.score),n&&celebrate(e.world,n),void end(e,!0);e.onScore(e.score)}}export function toggleFlag(e,o,r){if("playing"!==e.phase||e.mineHit)return;const t=e.grid[o]?.[r];if(!t||t.state===CellState.REVEALED)return;const n=t.state===CellState.HIDDEN;t.state=n?CellState.FLAGGED:CellState.HIDDEN,e.minesRemaining+=n?-1:1,n&&e.world.scoreboard.add(POINTS_PER_FLAG),e.layout&&e.scene&&flag(e.world,e.layout,e.scene,t),e.onMines(e.minesRemaining),n&&(e.onScore(e.score),e.onEvent("flag"))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export let CellState=function(e){return e.HIDDEN="hidden",e.REVEALED="revealed",e.FLAGGED="flagged",e}({});export function emptyGrid(e){return Array.from({length:e.rows},(t,o)=>Array.from({length:e.cols},(e,t)=>({row:o,col:t,isMine:!1,state:CellState.HIDDEN,adjacentMines:0})))}export function placeMines(e,t,o,n){let r=0;for(;r<t.mines;){const s=Math.floor(Math.random()*t.rows),l=Math.floor(Math.random()*t.cols);(Math.abs(s-o)>1||Math.abs(l-n)>1)&&!e[s][l].isMine&&(e[s][l].isMine=!0,r++)}for(let o=0;o<t.rows;o++)for(let n=0;n<t.cols;n++){if(e[o][n].isMine)continue;let t=0;for(let r=-1;r<=1;r++)for(let s=-1;s<=1;s++)(r||s)&&e[o+r]?.[n+s]?.isMine&&t++;e[o][n].adjacentMines=t}}export function floodReveal(e,t,o,n){const r=[[o,n]],s=new Uint8Array(t.rows*t.cols);s[o*t.cols+n]=1;const l=[];for(let o=0;o<r.length;o++){const[n,i]=r[o],a=e[n]?.[i];if(a&&a.state===CellState.HIDDEN&&!a.isMine&&(l.push(a),0===a.adjacentMines))for(let e=-1;e<=1;e++)for(let o=-1;o<=1;o++){if(!e&&!o)continue;const l=n+e,a=i+o;l<0||l>=t.rows||a<0||a>=t.cols||s[l*t.cols+a]||(s[l*t.cols+a]=1,r.push([l,a]))}}return l}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,extrude,lathe,merge,Path,quat,shapeGeometry,tube}from"@nayan-ui/engine";import{setBackdropTheme,spawnBackdrop}from"../shared/EngineBackdrop.js";import{GLYPH_RADIUS,glyphMesh}from"../shared/EngineGlyphs.js";import{cacheGameAsset,createGameMesh as _0xb204d5}from"../shared/EngineMeshes.js";import{placeTiltedBackdrop}from"../shared/EngineTilt.js";import{toColor}from"../shared/EngineUtils.js";import{cellCentre,COLORS,NUMBER_COLORS,REVEAL_STEP}from"./MineSweeperConstants.js";import{CellState}from"./MineSweeperRules.js";const meshes=new Map,cached=(e,o)=>{let t=meshes.get(e);return!t&&(t=cacheGameAsset("mine-sweeper/MineSweeperScene:"+e,o),meshes.set(e,t)),t},STAND_UP=quat.x(Math.PI/2),BOARD_DEPTH=10,BACKDROP_DEPTH=25,RAISED=.32,SUNK=.08,mineMesh=()=>cached("ms-mine",()=>{const e=lathe([[.07,0],[.04,.14],[.001,.2]],{segments:10}),o=[{geometry:shapeGeometry("sphere"),position:[0,0,.32],scale:.48,color:[.12,.12,.14,1]}];for(let t=0;t<8;t++){const l=t/8*Math.PI*2,s=t%2?.45:-.45,a=quat.multiply(quat.z(l),quat.multiply(quat.y(Math.PI/2+s),STAND_UP));o.push({geometry:e,position:[.2*Math.cos(l),.2*Math.sin(l),.32+.3*s],rotation:a,color:[.2,.2,.22,1]})}return o.push({geometry:shapeGeometry("sphere"),position:[-.08,.08,.5],scale:.09,color:[.9,.9,.95,1]}),_0xb204d5(merge(o),{center:!1,shine:.8})}),flagMesh=()=>cached("ms-flag",()=>{const e=extrude((new Path).moveTo(0,0).lineTo(.36,.12).lineTo(0,.26).close(),{depth:.03});return _0xb204d5(merge([{geometry:lathe([[.001,.05],[.18,.05],[.2,0],[.001,0]],{segments:18}),rotation:STAND_UP,color:[.33,.33,.33,1]},{geometry:tube([[-.06,0,.04],[-.06,0,.72]],{radius:.03,sides:8}),color:toColor("#8B4513")},{geometry:e,position:[-.06,0,.72],rotation:STAND_UP,color:toColor("#E74C3C")}]),{center:!1,shine:.4})}),panelMesh=(e,o,t)=>cached("ms-panel:"+e+"x"+o+":"+t,()=>_0xb204d5(extrude((new Path).addRoundedRect(-e/2,-o/2,e,o,t),{depth:10}),{shine:.2})),alt=(e,o)=>(e+o)%2==1,hiddenColor=(e,o)=>toColor(alt(e,o)?COLORS.HIDDEN_ALT:COLORS.HIDDEN),revealedColor=e=>toColor(e.isMine?COLORS.MINE:alt(e.row,e.col)?COLORS.REVEALED_ALT:COLORS.REVEALED),panelColor=e=>toColor("classic"===e.mode?COLORS.CLASSIC_BOARD:e.BOARD.SURFACE);export function buildScene(e,o,t,l){const s=spawnBackdrop(e,o.width,o.height,-25,t);placeTiltedBackdrop(e,s,o,25);const a="classic"===t.mode,r=e.spawn({mesh:panelMesh(o.boardWidth,o.boardHeight,a?12:8),position:[0,0,-5],color:panelColor(t),pickable:!1}),n=a?e.spawn({mesh:panelMesh(o.gridWidth,o.gridHeight,8),position:[0,0,-4.7],color:toColor(COLORS.CLASSIC_GRID),pickable:!1}):null,i=[],p=[];for(const t of l)for(const l of t){const[t,s]=cellCentre(o,l.row,l.col),a=l.state===CellState.REVEALED,r=o.cell*(a?.08:.32);i.push(e.spawn({mesh:"roundedBox",position:[t,s,r/2],scale:[o.cell,o.cell,r],color:a?revealedColor(l):hiddenColor(l.row,l.col),pickable:!1})),p.push(null)}const d={backdrop:s,panel:r,grid:n,tiles:i,marks:p};for(const t of l)for(const l of t)mark(e,o,d,l,!1);return d}export function removeScene(e,o){for(const t of[o.backdrop,o.panel,o.grid,...o.tiles,...o.marks])null!=t&&e.despawn(t)}export function setSceneTheme(e,o,t,l){setBackdropTheme(e,t.backdrop,l),e.set(t.panel,{mesh:panelMesh(o.boardWidth,o.boardHeight,"classic"===l.mode?12:8),color:panelColor(l)}),null!=t.grid&&e.set(t.grid,{scale:"classic"===l.mode?1:0})}const at=(e,o,t)=>{const[l,s]=cellCentre(e,o.row,o.col);return[l,s,t]};function mark(e,o,t,l,s,a=0){const r=l.row*o.cols+l.col,n=t.marks[r];null!=n&&e.despawn(n),t.marks[r]=null;let i=null;if(l.state===CellState.FLAGGED)i=e.spawn({mesh:flagMesh(),position:at(o,l,.32*o.cell),scale:.8*o.cell,pickable:!1});else if(l.state===CellState.REVEALED&&l.isMine)i=e.spawn({mesh:mineMesh(),position:at(o,l,.08*o.cell),scale:.85*o.cell,pickable:!1});else if(l.state===CellState.REVEALED&&l.adjacentMines>0){const t=.56*o.cell;i=e.spawn({mesh:glyphMesh(String(l.adjacentMines)),position:at(o,l,.08*o.cell+GLYPH_RADIUS*t),scale:t,color:toColor(NUMBER_COLORS[l.adjacentMines]),pickable:!1})}if(t.marks[r]=i,null!=i&&s){const t=l.state===CellState.FLAGGED?.8*o.cell:l.state===CellState.REVEALED&&l.isMine?.85*o.cell:.56*o.cell;e.set(i,{scale:.01}),e.animate(i,{scale:t},{duration:.22,delay:a,easing:"back"})}}export function reveal(e,o,t,l,s){for(const a of l){const l=Math.hypot(a.row-s.row,a.col-s.col)*REVEAL_STEP,r=t.tiles[a.row*o.cols+a.col],n=.08*o.cell;e.animate(r,{position:at(o,a,n/2),scale:[o.cell,o.cell,n],color:revealedColor(a)},{duration:.16,delay:l,easing:"easeIn"}),mark(e,o,t,a,!0,l+.1)}}export function flag(e,o,t,l){mark(e,o,t,l,!0)}export function explode(e,o,t,l,s,a){reveal(e,o,t,a,s);const[r,n]=cellCentre(o,s.row,s.col);effects.explosion(e,{position:[r,n,.4*o.cell],count:28,size:.9*o.cell,speed:4*o.cell,lifetime:.6,direction:[0,0,1],spread:1.4,debris:[toColor("#3E4A58"),toColor("#8D6E63"),toColor("#5A5A5A")]}),l.shake=.25*o.cell}export function celebrate(e,o){effects.confetti(e,{position:[0,0,o.cell],count:60,size:.2*o.cell,speed:1.4*o.boardWidth,lifetime:1.3,gravity:2.4*-o.boardWidth,colors:["#FFD700","#4CAF50","#2196F3","#E74C3C"].map(e=>toColor(e))})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";const _0xd95dab=_0x47fb;!function(){const o=_0x47fb,e=_0x4da8();for(;;)try{if(942052==-parseInt(o(430,"XeRK"))/1+-parseInt(o(467,"vI%h"))/2+parseInt(o(355,"@WoE"))/3+-parseInt(o(444,"Zyda"))/4+parseInt(o(399,"r^#d"))/5*(parseInt(o(321,"cOIl"))/6)+parseInt(o(358,"Kd[D"))/7*(-parseInt(o(429,"ZMU8"))/8)+parseInt(o(500,"u$43"))/9)break;e.push(e.shift())}catch(o){e.push(e.shift())}}();import{BACKGROUND_COLOR}from"../../services/GamesConstants.js";import _0x5c10e3 from"react";import{StyleSheet}from"react-native";import{GestureHandlerRootView}from"react-native-gesture-handler";import{GameControlButton,GameOverModal,GameSettingsModal,GameBackgroundPattern as _0x2513fe}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{useMobControlStore,useGameOver,useWon,useIsPlaying}from"./MobControlStore.js";function _0x47fb(o,e){o-=321;const W=_0x4da8();let t=W[o];if(void 0===_0x47fb.doRQiG){const o=function(o,e){let W,t,r=[],n=0,d="";for(o=function(o){let e="",W="";for(let W,t,r=0,n=0;t=o.charAt(n++);~t&&(W=r%4?64*W+t:t,r++%4)?e+=String.fromCharCode(255&W>>(-2*r&6)):0)t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=".indexOf(t);for(let o=0,t=e.length;o<t;o++)W+="%"+("00"+e.charCodeAt(o).toString(16)).slice(-2);return decodeURIComponent(W)}(o),t=0;t<256;t++)r[t]=t;for(t=0;t<256;t++)n=(n+r[t]+e.charCodeAt(t%e.length))%256,W=r[t],r[t]=r[n],r[n]=W;t=0,n=0;for(let e=0;e<o.length;e++)t=(t+1)%256,n=(n+r[t])%256,W=r[t],r[t]=r[n],r[n]=W,d+=String.fromCharCode(o.charCodeAt(e)^r[(r[t]+r[n])%256]);return d};_0x47fb.evrVFY=o,_0x47fb.uETIuM={},_0x47fb.doRQiG=!0}const r=W[0];_0x47fb.KkmVmc!==r&&(_0x47fb.uETIuM={},_0x47fb.KkmVmc=r);const n=_0x47fb.uETIuM[o];return void 0===n?(void 0===_0x47fb.ZQxPxi&&(_0x47fb.ZQxPxi=!0),t=_0x47fb.evrVFY(t,e),_0x47fb.uETIuM[o]=t):t=n,t}import{MobControlService}from"./MobControlService.js";import{MOB_CONFIG}from"./MobControlConstants.js";import{ScoreBoard}from"./components/ScoreBoard.js";import{GameArea}from"./components/GameArea.js";import{jsx as _0xaf67be,jsxs as _0x5d30d0}from"react/jsx-runtime";const MobControlComponent=({settings:o=DEFAULT_GAME_SETTINGS,onSettingsChange:e,onEndGame:W,onReplayGame:t,onShare:r,onShareScreenshot:n,onShowLeaderboard:d,bannerAd:a})=>{const s="9nUX",S="5&Ur",x="q9#n",i="0E6q",m=_0x47fb,u={LtGUB:function(o,e,W){return o(e,W)},UKYYR:function(o,e,W){return o(e,W)},IGEsA:m(485,"K3Dz"),RgRcD:m(423,"0y[&"),nnRFZ:m(342,"%8sl"),gNxzE:m(348,"Aa(S"),pbzQK:function(o,e){return o!==e},Bqxrj:function(o,e){return o(e)},OamEg:function(o,e){return o(e)},YuvIH:"cancel",ZoyOt:function(o,e){return o(e)},VmBLQ:"LxsWv",qZvCy:"Fight Again!",Szldu:m(416,"gB*q"),cPTJz:"GAME OVER",ZnTUS:function(o,e){return o||e},ipUBL:function(o,e){return o||e}},k=_0x5c10e3[m(389,"YB16")](o?.[m(454,"F4y%")]??!0);k.current=o?.enableSounds??!0;const _=_0x5c10e3.useRef(o?.[m(378,"gB*q")]??!0);_[m(332,"4c4m")]=o?.[m(333,"#JkF")]??!0;const l=o?.[m(351,"K3Dz")]??0,C=_0x5c10e3[m(445,"XeRK")](W);C.current=W;const f=_0x5c10e3[m(383,"@31p")](t);f[m(497,"K3Dz")]=t;const O=useGameOver(),p=useWon(),b=useIsPlaying(),R=u.ZnTUS(O,p),G=_0x5c10e3[m(462,"k$sQ")](!1),y=_0x5c10e3[m(445,"XeRK")](0),M=_0x5c10e3[m(437,"#EuP")](1),q=_0x5c10e3[m(474,"#JkF")](!1),P=_0x5c10e3[m(473,"q9#n")](o=>{const e=m;if(C[e(422,"&jX2")]&&!q[e(472,"JymD")]){const W=useMobControlStore[e(453,"gB*q")]()[e(466,"r4WU")];C[e(380,"F4y%")]({status:o,score:W.toString()}),q[e(410,"%8sl")]=!0}},[]),E=_0x5c10e3[m(392,"%8sl")](()=>new MobControlService,[]),v=_0x5c10e3[m(427,"uy8P")](()=>{playSound(GAME_SOUNDS[m(357,"Zyda")].SHOOT,k.current)},[]),H=_0x5c10e3.useCallback(()=>{const o=m;playSound(GAME_SOUNDS.MOB_CONTROL[o(329,"k$sQ")],k[o(457,"0y[&")]),playHaptic(HapticType[o(386,"gB*q")],_[o(483,"u$43")])},[]),K=_0x5c10e3[m(428,"JymD")](()=>{const o=m;playSound(GAME_SOUNDS[o(338,"DzC3")].HIT,k[o(431,"*6jL")]),u.LtGUB(playHaptic,HapticType.MEDIUM,_[o(476,"RLl5")])},[]),I=_0x5c10e3[m(344,"@WoE")](()=>{const o=m;u.LtGUB(playHaptic,HapticType[o(354,"DzC3")],_.current)},[]),Q=_0x5c10e3[m(398,"EwSB")](()=>{const o=m;u[o(452,"UjxB")](playSound,GAME_SOUNDS[o(394,"gUM^")].LEVEL_UP,k.current),playHaptic(HapticType[o(499,"y[zH")],_[o(490,"]AOI")])},[]),U=_0x5c10e3[m(426,"#JkF")](()=>{const o=m;playSound(GAME_SOUNDS[o(385,"Rx[Z")][o(339,"Zyda")],k[o(330,"q9#n")]),playHaptic(HapticType[o(400,"cOIl")],_.current)},[]),A=_0x5c10e3.useCallback(()=>{const o=m;u[o(341,"]AOI")](playSound,GAME_SOUNDS.MOB_CONTROL[o(460,"Kd[D")],k[o(379,"EwSB")]),u.UKYYR(playHaptic,HapticType[o(432,"@WoE")],_.current)},[]);_0x5c10e3.useEffect(()=>{const o=m,e={};e[o(365,"JymD")]=v,e[o(420,"U3]Q")]=H,e[o(323,"v^IZ")]=K,e[o(458,"0E6q")]=I,e[o(403,"0E6q")]=Q,e[o(434,"k$sQ")]=U,e.onGameOver=A,E[o(327,"o@Jz")](e)},[E,v,H,K,I,Q,U,A]),_0x5c10e3[m(369,"y[zH")](()=>{const o=m;return useMobControlStore[o(328,"0E6q")](o=>o.isPlaying,e=>{const W=o;W(464,"r^#d")===u[W(345,"4u0i")]?(G[W(431,"*6jL")]=e,E[W(391,"v^IZ")](e)):_0x2941ea(W(397,"]r)A"))})},[E]),_0x5c10e3[m(393,"#JkF")](()=>{const o=m;if(o(381,"Aa(S")===u.RgRcD)_0x1178c1(o(463,"%8sl")),u[o(450,"5&Ur")](_0x3ca936,_0x2ba127[o(408,"YB16")][o(435,"o@Jz")],_0xb115f1.current),_0x72146(_0x1e0560.MEDIUM,_0x4f4037[o(436,"Aa(S")]),_0xa0363e[o(374,"Aa(S")](),_0x4d6161.getState()[o(438,i)]();else{if(O&&!q[o(457,"0y[&")]&&P(p?o(343,"v^IZ"):o(425,"RLl5")),R)if(u.nnRFZ===u[o(486,i)])_0x467944[o(324,"0E6q")]=!1;else{const e=useMobControlStore[o(414,"@31p")]();y.current=e[o(493,"Rx[Z")],M[o(372,"r^#d")]=e[o(368,"@WoE")]}!O&&(q[o(482,"@WoE")]=!1)}},[O,p,R,P]),_0x5c10e3[m(465,"F4y%")](()=>{E[m(479,"hUHX")]()},[E]),_0x5c10e3.useEffect(()=>()=>{const o=_0x47fb;if(u[o(395,"r^#d")](o(484,"]r)A"),o(469,"XeRK"))){if(useMobControlStore[o(475,"gUM^")]().isPlaying&&!q[o(436,"Aa(S")]){if(o(439,"&jX2")===o(375,"4u0i")){const e={_0x4917ad:"J@Kq",_0x5c1691:364};return _0x2e59e7[o(325,"4c4m")](e=>e[o(334,"@31p")],W=>{const t=o;_0x12cd79[t(455,e._0x4917ad)]=W,_0x19eb9b[t(e._0x5c1691,"q9#n")](W)})}u.Bqxrj(P,"cancel")}useMobControlStore[o(488,"vI%h")]()[o(471,"r^#d")](),E[o(404,"Uv@n")](),useMobControlStore[o(491,"0y[&")]()[o(388,"*6jL")]()}else GCHBVz[o(489,"4c4m")](_0x54d69a,_0x13d08f[o(322,"5&Ur")][o(447,"ew2G")],_0x591294.current),_0x1d3c29(_0xce371e[o(442,"*6jL")],_0xdc2658[o(483,"u$43")])},[E,P]);const h=_0x5c10e3[m(448,"Kd[D")](()=>{const o=m;if(o(382,x)===o(353,"q9#n")){const e={};e.onShoot=_0x7d285a,e[o(331,"dH$@")]=_0x56c4cc,e[o(405,"qdkp")]=_0x4000da,e[o(412,"9nUX")]=_0x1af44d,e[o(443,"UjxB")]=_0x4117f9,e.onDamage=_0x424f4b,e[o(326,x)]=_0x1dba3d,_0x12279b[o(468,"]r)A")](e)}else{const e=o(337,"@31p")[o(347,"K3Dz")]("|");let W=0;for(;;){switch(e[W++]){case"0":playHaptic(HapticType.SUCCESS,_[o(359,"k$sQ")]);continue;case"1":E.setPlaying(!0);continue;case"2":useMobControlStore[o(446,"XeRK")]()[o(363,"4c4m")](MOB_CONFIG[o(481,"XeRK")],MOB_CONFIG[o(459,"EwSB")]);continue;case"3":E.resetGame();continue;case"4":q[o(387,"r4WU")]=!1;continue;case"5":E[o(371,"&jX2")]();continue;case"6":playSound(GAME_SOUNDS[o(461,"@WoE")][o(433,"XeRK")],k[o(377,"]r)A")]);continue}break}}},[E]),N=_0x5c10e3[m(398,"EwSB")](()=>{const o=m;u[o(406,"J@Kq")](P,u[o(361,"XeRK")]),playSound(GAME_SOUNDS[o(411,"J@Kq")][o(421,"k$sQ")],k[o(359,"k$sQ")]),u[o(496,"r4WU")](playHaptic,HapticType[o(470,"XeRK")],_[o(360,"y[zH")]),E[o(352,"Rx[Z")](),useMobControlStore[o(367,"JymD")]()[o(487,"U3]Q")]()},[E,P]),g=_0x5c10e3[m(370,"y[zH")](()=>{const o=m;u[o(366,"K3Dz")]===o(335,"K3Dz")?(f[o(410,"%8sl")]?.(),q.current=!1,E[o(441,"gUM^")](),useMobControlStore[o(413,"RLl5")]()[o(362,"4c4m")]()):(_0xad332a[o(449,"k$sQ")]().isPlaying&&!_0x9b8b6b[o(492,"#EuP")]&&u[o(498,S)](_0x339191,u.YuvIH),_0x30913d[o(419,"ZMU8")]()[o(346,"4u0i")](),_0x591fb1[o(415,S)](),_0x9da86f[o(475,"gUM^")]()[o(373,"ew2G")]())},[E]),D={..._0x5c10e3[m(336,"#JkF")](()=>({isPlaying:!R&&b,gameOver:O,onStartGame:h,onStopGame:N,onShare:r,onShowLeaderboard:d,startButtonSubtext:"Drag to aim your mob!"}),[R,b,O,h,N,r,d])},B={..._0x5c10e3[m(336,"#JkF")](()=>{const o=m,e=useMobControlStore[o(501,"y[zH")](),W=O?e.score:0,t=O?e[o(480,s)]:1,r={};return r[o(451,"q9#n")]=O,r.score=W,r[o(418,"Kd[D")]=g,r[o(456,"Rx[Z")]=u.qZvCy,r.title=p?u[o(417,"DzC3")]:u[o(401,"y[zH")],r[o(390,"]AOI")]=p?"You survived! You reached level "+t+".":o(494,s)+t+"!",r},[O,p,g])};return B[m(384,"0E6q")]=n,B.bannerAd=a,_0xaf67be(GestureHandlerRootView,{style:styles[m(440,"ZMU8")],children:_0x5d30d0(_0x2513fe,{offset:l,children:[_0xaf67be(GameArea,{gameService:E,offset:l}),_0xaf67be(ScoreBoard,{offset:l}),u[m(409,"]r)A")](_0xaf67be,GameControlButton,D),_0xaf67be(GameOverModal,B),_0xaf67be(GameSettingsModal,{gameId:GAME_IDS.MOB_CONTROL,settings:u[m(407,"]AOI")](o,DEFAULT_GAME_SETTINGS),onSettingsChange:e})]})})},_0x163b9d={};_0x163b9d[_0xd95dab(495,"gUM^")]=1,_0x163b9d[_0xd95dab(396,"F4y%")]=BACKGROUND_COLOR;const _0x12b12e={};_0x12b12e[_0xd95dab(349,"5&Ur")]=_0x163b9d;const styles=StyleSheet.create(_0x12b12e);export const MobControl=MobControlComponent;function _0x4da8(){const o=["CmoslJ3dKCkrW77dP8k5","nmoirSkEra","A8kQFCoatCo6WPpdIZ00WPqOma","xqxcTSkUvHqk","At/dG1xcGmomWQfUWO/dT2BdJmoK","W4jDpJSllYS","kCk8WOqyWQr9W6K","B8oYlsldGW","WQ5ydcdcVG","W5hdGSotWO4mxG","ixtdSta2aKy","WOhdKSoFsJPlcaf8W5nJ","qbJdPx/cUa","dx3cK8kdvIJdIq","W5fJq8kZlXJcSmouDW","WRnNW4bMzqS","q8ofW7NcIwBcSqq","WRVcSJLnqx3dR8ohiYa","gmojjmo/WPvMW5K","iCoAWOutxbqbWOW6","WPLfFCk5qYNcNmo3ACkpAG","WPZdRmkbWQHK","kmkOWPubWQzHW7ixWRtdVwFcGmkXkSoC","xrhcQSk/vHy","W5rBkqOpltpdUSoNW74z","W5VcTSojW4WAtKPjW53cI8k5v8oG","ECkDW788bmohW50","W6FcNWtdQMm","ceddVCkTFG4oWOFdVq","ixtdRJ0Hfu/dPv4","oSo/k8ksgSk8W5e","WR3cHSkbvKm","b1VcTCoIW7m","r8oqW5/cUeS","WOTBW6DRqYjcWOb/WQhdPG","CGtcG8kjCq","dSopm8oaWPvLW4i","bxxcMSo4W5C0W6xcGq/cQmkL","ASkuWR9MW4lcNJi","WPT8WOTroCoaWRrd","W4pdLmocWO8DwrRdRq","WQRdJ8kIE8kiWP86","wbJdR3ldJmo8WRKU","uCkOe8k7pa","WRZcGmkAWP10WRVdK1xcLHhcIq","WPW8W7rxDvdcMSok","WO/cRSoPWOJcJdC","WRL1WOnrgx1VwSkh","ud1ko1vwqW","gSkts1pdMa","WRiIyYae","WPb2WOXN","iCoAWOuvwX4iWO0VxSoo","W6C1zCoMmM4siCoxW4SM","WQNcNCkiW5/dLCkHW7hdLGVdOd4","W4PQWRmXmWNcN8o9WPZdTdtcTW","WQXRuSksWPatpmkVWOZcO2nkWOO","W4bZqSkKpJhcPq","EHeUuqm","W44ljmoXW7a","WPfAWOP1k1nEEG","iCkxnmoqW4KAWONdOXK","yCoclYRdGmk4W6S","WPiAxYSZWR0","ph/dKt0Jn0ldNuS","FHTqmhC","WPG2W65WyfJcGmokWOG","WQzVtmkdDchcS8ooxG","W69pD8kEdW","bHi9WPldI0bxW5JcIa","tNVdOSoSW5n9fSkVW6DyyxS","W6GSamoXW4fh","W7O6eCoWW5baFCkE","bue3AW","WQBcNCkVWRj0WQ7dVLdcLHVcJa","WPLrWRPhmLnnEG","WPZdQmkEq8k0","WQvgaIRcItLnwHe","pdCOWQ7dRW","AZtdLMtcMmoiWP1Q","l8kNWPCiWQ12W44nWQ/dT0dcNa","k0/cQSovW7evW58","WQ7dQmoPyrzQeJbwW6G","n8kNweBdLSkubG","ixtdOtq2a0S","W7fKdraReWddKmow","WPtcR8khWRrkWO3dHhFcPq","CGW+qriBW4rLW5tcPeK","WOThWQTgi1q","dSoBl8orWPvN","WRJdHSkpWQ9v","p8k6WPmVWQD1W7GbWQ4","hwVcJSkdvG","W5lcK3fsrKmiW7xcHmkrh8o9FW","trxcSmkFuHysWO7dRgZcIWe","W4SSi8oAW7q","W5aAiCoQW7fS","WP/dUSkuWOLOfXjC","WR/cM8kFW67dKCkJW6K","WRLgmqdcMZXdvbu/WRG","iCoAWOuexXq","WRnVs8k1DaFcPSog","WP9SWO1WkmopWRq","WQf2mmkDyJqhiCofW7WdW5i","W7/dHuHEkLlcNgTswchdHmop","nmkuW7KGWP3dLCkxBmo3WPG","ACkFWOPVW48","W5GrimoUW71+s8k6WRNcOMrvWRC","xdyoBdq6W74","W7lcTXDFj8kBWPW","FsxcNmk2DW","WQGEqmoXWPa","kvtdMIis","WPlcPCoDWOZcJbxcS8oaaq","WOFdJZyYcXfoW7e","WQBcVHyCvW","tCovW7JcIglcUbu","m8k3xMFdH8kBbSoI","WOqCsaSZWRvT","WR/dVSoYzXW","xmkvWOKQW5hcIdVcTCouEYKOaNhcLs7cOba","WRjMwSkE","iNZcPSkKCq","WP8JrSovWO8HW7C","WPpdJmk+vCks","W5FcMHpdO1WQW6m","WQddU1WyE8odW54sW7FdPCkYrc3dHW","W6pcQItdS20yW4rR","gmk6W6WNcmoRW68","WOtdRmkfrCkLWQueACo8W4Tu","WQFcUqv0wq","lw/dKcOYhLC","WR3cHb0CFrldGf1r","WQnBeYlcLZvGqbeU","fCkZdCowW7C5WRpdHcRdSmkJxq","pw/dGcS0aKRdKKS","WRL1WPPr","WQ9ajJhcNZ5B","uSkbWQ1OWOHr","WQ3cHa0DEW7dNq","mCohWOe0vHCSWO4+sComWOldGq","W43dGSoMWRaiqqFdPSoS","WRaUr8oWWPW","iCoAWOuBxX8l","WPddJCkfWQbBrf/dTmk+cmoWWQVdVG","t8kDpCkacHddQNBdKSkLWOW","oqRcN8kvWQuo","WPldL8o3WOKSwHS","E8oRW5pcO1u","imook8owWR0","WR/cVIm","sJazxta4W6ztW6FcIg4","g8oPCmk3Da","iCoAwSk0CNtdKmoG","WO8MwmooWP4","DSoNfJNdNW","WQRdJmkPBSkhWOmKwmoC","WPG/r8oxWOyUW7RcSexcRHG","WPmWuSouWO87","WR7dUmoUCa1djZHl","WQTBbHhcNa","tSkBomkxhq","c3TlkMzLWRj1W5dcS0P9wG","aNebFaKoase+fmkKpCoitq","matcKmklWQeeiCkzW4zdyW","W6xdNSoZWObyWRBdOLNcHW","WP1bWRXMi1Xn","W6FcUIldKNWxW4q","W4qQe8oQW6W","WRZcLaWkAIFdIfjr","WR3cHr4DAIFdIfjr","WR9qibpcLJfwxXO7","WRpcGmk+W7tdM8kIW6K","WQO7DSoRWRS","WRVcI8kzW4/dGmkSW6NdKq","uYykEZ0","W7hcVdxdPx8FW5vTWPa","W7hcVdxdO3GvW5XSWOu9Cq","qdXzo0r/vNui","WO/dU8kjWOTkgaS","mguqs8knfrfpW5C"];return(_0x4da8=function(){return o})()}MobControl[_0xd95dab(350,"K3Dz")]="MobControl";
|
|
1
|
+
"use strict";import{useMemo}from"react";import{HapticType}from"../../services/HapticsService.js";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{engineGame,EngineGameScreen}from"../shared/EngineGameScreen.js";import{scoreColumn,textColumn}from"../shared/EngineHud.js";import{useEngineGame}from"../shared/useEngineGame.js";import{useLiveState}from"../shared/useLiveState.js";import{DAY_LIGHT,MOB_COLORS,MOB_CONFIG as _0xa19346,NIGHT_LIGHT,SKY_DAY,SKY_NIGHT}from"./MobControlConstants.js";import{aim,createGame,dispose,INITIAL_HUD,replay,reset,setActive,setLayout,setTheme,start,tick}from"./MobControlGame.js";import{jsx as _0x350053}from"react/jsx-runtime";const SOUNDS=GAME_SOUNDS.MOB_CONTROL,FEEDBACK={shoot:{sound:SOUNDS.SHOOT},gate:{sound:SOUNDS.GATE,haptic:HapticType.LIGHT},hit:{sound:SOUNDS.HIT},clash:{sound:SOUNDS.CLASH,haptic:HapticType.LIGHT},boss:{sound:SOUNDS.LEVEL_UP,haptic:HapticType.SUCCESS},damage:{sound:SOUNDS.DAMAGE,haptic:HapticType.WARNING},champion:{sound:SOUNDS.LEVEL_UP,haptic:HapticType.HEAVY},win:{sound:GAME_SOUNDS.WELL_DONE,haptic:HapticType.SUCCESS},lose:{sound:SOUNDS.GAME_OVER,haptic:HapticType.ERROR}};export const MobControl=engineGame(GAME_IDS.MOB_CONTROL,e=>{const[t,s]=useLiveState(INITIAL_HUD,0),{game:o,theme:r,status:a,screen:i,gameOver:n}=useEngineGame(e,{gameId:GAME_IDS.MOB_CONTROL,create:createGame,start:start,reset:reset,replay:replay,dispose:dispose,tick:tick,setTheme:setTheme,setActive:setActive,resize:setLayout,drag:(e,t)=>{t.cancelled||"end"===t.phase||aim(e,t.x)},sounds:SOUNDS,onStart:e=>e(SOUNDS.START,HapticType.SUCCESS),resultsDelay:e=>"win"===e?1300:650,wire:(e,t)=>{e.onHud=s,e.onEvent=e=>t(FEEDBACK[e].sound,FEEDBACK[e].haptic)}}),m="dark"===r.mode,S=Math.ceil(t.hp/_0xa19346.PLAYER_HP*100),p=useMemo(()=>m?NIGHT_LIGHT:DAY_LIGHT,[m]);return _0x350053(EngineGameScreen,{...i,source:o.renderer,light:p,background:m?SKY_NIGHT:SKY_DAY,fog:.007,columns:[scoreColumn(t.score),textColumn("SHIELD",S+"%",MOB_COLORS.HP_PLAYER),textColumn("ARMY",t.army)],subtext:"Aim and grow mobs!",gameOver:n({title:"win"===a?"LEVEL CLEARED!":"DEFENSE BREACHED",message:"win"===a?"Level "+t.level+" conquered! "+S+"% shield remaining.":"Your cannon fell in level "+t.level+". Chain multiplier gates and use your champion to stop the red mob.",scoreLabel:"Battle Score",score:t.score,buttonText:"win"===a?"Next Level!":"Try Again!"})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";export const MOB_CONFIG={HALF_WIDTH:5.2,TRACK_NEAR_Z:30,TRACK_FAR_Z:-150,CANNON_LIMIT:4.25,CANNON_Z:1.2,SPAWN_Z:-.9,BASE_Z:-32,TARGET_LINE:-29.5,BREACH_Z:.15,PLAYER_HP:1200,PLAYER_SLOTS:640,ENEMY_SLOTS:384,CAPACITY:1024,BASE_HP:1e3,CORE_HP:1400,ENEMY_WAVE_SIZE:14,ENEMY_WAVE_INTERVAL:1.35,ENEMY_SURGE_INTERVAL:15,ENEMY_MAX_SURGE:8,MAX_STRENGTH:4096,PLAYER_SPEED:4.8,ENEMY_SPEED:2.65,FIRE_INTERVAL:.105,CHAMPION_CHARGE:100,CHAMPION_PER_SHOT:1.6,CHAMPION_STRENGTH:42,CHAMPION_SPEED:6.2,BOSS_STRENGTH:170,BOSS_SPEED:1.55,BOOST_SPEED:1.65,BOOST_DURATION:1.4,FLIGHT_DURATION:.38,COLLISION_RADIUS:.34,GRID_SIZE:.8,GRID_COLUMNS:14,GRID_ROWS:46,MAX_COLLISION_VISITS:48,MAX_SEPARATION_VISITS:12,STEP:1/30,MAX_FRAME:.05,HUD_INTERVAL:.12,EFFECT_INTERVAL:.075,MAX_EFFECTS:6,WORLD_CAPACITY:640,KILL_POINTS:5,BASE_POINTS:350,LEVEL_POINTS:500};export const MOB_COLORS={PLAYER:"#3998FF",ENEMY:"#F25467",PLAYER_DARK:"#1D568F",ENEMY_DARK:"#8D2D42",GATE:"#29BFFF",GATE_HIGH:"#A14CF5",GATE_DANGER:"#F16B68",FRAME:"#1763A8",ROAD:"#CDD0D2",ROAD_EDGE:"#E6BA78",GROUND:"#D7AB72",CHAMPION:"#FFC83E",BOOST:"#7DECF1",HP_PLAYER:"#54CDA2",HP_ENEMY:"#F25467"};export const SKY_DAY=[.67,.81,.88];export const SKY_NIGHT=[.035,.07,.13];export const DAY_LIGHT={direction:[-.45,.85,.4],ambient:.55,color:[1.04,1.02,.98],shadows:!0,shadowExtent:27};export const NIGHT_LIGHT={direction:[-.3,.85,.4],ambient:.65,color:[.76,.86,1.1],shadows:!0,shadowExtent:27};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{World}from"@nayan-ui/engine";import{MOB_CONFIG as _0x1f49ee}from"./MobControlConstants.js";import{unitMeshes}from"./MobControlMeshes.js";import{MobControlRenderer}from"./MobControlRenderer.js";import{createSim,step}from"./MobControlRules.js";import{battleEffect,buildScene,captured,celebrate,makeView,recoil,removeScene,syncScene}from"./MobControlScene.js";export const INITIAL_HUD={score:0,hp:_0x1f49ee.PLAYER_HP,army:0,level:1};export function createGame(e){const n=new World(_0x1f49ee.WORLD_CAPACITY);return{world:n,renderer:new MobControlRenderer(n,unitMeshes()),sim:createSim(),camera:{eye:[0,19,15],target:[0,0,-13],fov:.9},night:"dark"===e.mode,view:null,scene:null,phase:"ready",won:!1,active:!0,pending:0,clock:0,lastHud:-1,lastEffect:-1,hudKey:"",feedback:{},get score(){return this.sim.score},onPhase:e=>{},onHud:e=>{},onEvent:e=>{}}}export function setLayout(e,n,o){e.world.isDisposed||n<=0||o<=0||(e.view=makeView(n,o,e.camera),e.scene||(e.scene=buildScene(e.world,e.night,e.sim)),syncScene(e.world,e.scene,e.sim,!0),e.world.update(0),e.renderer.sync(e.sim,1,e.clock))}export function setTheme(e,n){const o="dark"===n.mode;e.world.isDisposed||o===e.night||(e.night=o,e.scene&&(removeScene(e.world,e.scene),e.scene=buildScene(e.world,e.night,e.sim)))}function publish(e,n=!1){if(!n&&e.clock-e.lastHud<_0x1f49ee.HUD_INTERVAL)return!1;e.lastHud=e.clock;const o=e.sim,s=o.score+"/"+o.hp+"/"+o.playerStrength+"/"+o.level;return s!==e.hudKey&&(e.hudKey=s,e.onHud({score:o.score,hp:o.hp,army:o.playerStrength,level:o.level})),!0}export function reset(e){resetLevel(e,e.sim.level)}export function replay(e){resetLevel(e,e.sim.level+(e.won?1:0))}function resetLevel(e,n){e.world.isDisposed||(e.sim=createSim(void 0,n),e.won=!1,e.pending=0,e.camera.shake=0,e.hudKey="",e.feedback={},e.world.cancelTimers(),e.scene&&(e.world.stopAnimation(e.scene.barrel),e.world.set(e.scene.barrel,{position:[0,.92,-.1]}),syncScene(e.world,e.scene,e.sim,!0)),e.phase="ready",publish(e,!0),e.onPhase("ready"),e.world.update(0),e.renderer.sync(e.sim,1,e.clock))}export function start(e){!e.world.isDisposed&&e.scene&&"ready"===e.phase&&(e.pending=0,e.phase="playing",e.onPhase("playing"))}export function aim(e,n){!e.world.isDisposed&&e.active&&"playing"===e.phase&&e.view&&(e.sim.targetX=Math.max(-_0x1f49ee.CANNON_LIMIT,Math.min(_0x1f49ee.CANNON_LIMIT,(n-e.view.width/2)/e.view.k)))}export function setActive(e,n){e.active=n,e.pending=0}export function dispose(e){e.world.isDisposed||(e.renderer.dispose(),e.world.dispose())}function emit(e,n,o=0){e.clock-(e.feedback[n]??-100)<o||(e.feedback[n]=e.clock,e.onEvent(n))}export function tick(e,n){if(e.world.isDisposed||!e.active||!Number.isFinite(n)||n<0)return;if(n=Math.min(n,_0x1f49ee.MAX_FRAME),e.clock+=n,"playing"===e.phase)for(e.pending=Math.min(e.pending+n,_0x1f49ee.MAX_FRAME+_0x1f49ee.STEP);"playing"===e.phase&&e.pending+1e-9>=_0x1f49ee.STEP;)e.pending=Math.max(0,e.pending-_0x1f49ee.STEP),apply(e);const o=publish(e);e.scene&&syncScene(e.world,e.scene,e.sim,o),e.world.update(n),e.renderer.sync(e.sim,"playing"===e.phase?Math.min(1,e.pending/_0x1f49ee.STEP):1,e.clock)}function apply(e){const n=step(e.sim,_0x1f49ee.STEP),o=e.scene;if(n.shots&&(emit(e,"shoot"),o&&recoil(e.world,o)),n.gates&&emit(e,"gate",.14),n.champion&&emit(e,"champion"),n.bossDefeated&&!n.won&&(emit(e,"boss"),celebrate(e.world)),n.clashes&&emit(e,"clash",.15),n.hits&&emit(e,"hit",.13),n.breaches&&(e.camera.shake=.18,emit(e,"damage",.35)),o&&n.captured)for(let n=0;n<e.sim.bases.length;n++)0!==e.sim.bases[n].hp||o.bases[n].captured||captured(e.world,e.sim.bases[n].x,e.sim.bases[n].z);if(n.won&&celebrate(e.world),n.effectCount&&e.clock-e.lastEffect>=_0x1f49ee.EFFECT_INTERVAL){e.lastEffect=e.clock;for(let o=0;o<Math.min(2,n.effectCount);o++)battleEffect(e.world,n.effectX[o],n.effectZ[o],1===n.effectTeam[o])}(n.won||n.lost)&&(e.won=n.won,e.phase="over",publish(e,!0),emit(e,n.won?"win":"lose"),e.onPhase("over"))}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{merge,tube}from"@nayan-ui/engine";import{createGameMesh as _0x1c00be}from"../shared/EngineMeshes.js";const PHI=(1+Math.sqrt(5))/2,POINTS=[[-1,PHI,0],[1,PHI,0],[-1,-PHI,0],[1,-PHI,0],[0,-1,PHI],[0,1,PHI],[0,-1,-PHI],[0,1,-PHI],[PHI,0,-1],[PHI,0,1],[-PHI,0,-1],[-PHI,0,1]],FACES=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];function pebble(e){const s=new Float32Array(11*POINTS.length);return POINTS.forEach((o,t)=>{const r=Math.hypot(...o),n=o[0]/r,i=o[1]/r,p=o[2]/r,a=Math.hypot(n/e[0],i/e[1],p/e[2]);s.set([n*e[0],i*e[1],p*e[2],n/e[0]/a,i/e[1]/a,p/e[2]/a,1,1,1,0,0],11*t)}),{vertices:s,indices:Uint32Array.from(FACES)}}let poses=null;export function unitMeshes(){if(poses)return poses;const e=e=>{const s=[{geometry:pebble([.15,.23,.11]),position:[0,.4,0]},{geometry:pebble([.145,.15,.135]),position:[0,.73,0]},{geometry:pebble([.025,.035,.014]),position:[-.05,.75,.122],color:[.08,.13,.2,1]},{geometry:pebble([.025,.035,.014]),position:[.05,.75,.122],color:[.08,.13,.2,1]}];for(const o of[-1,1])s.push({geometry:tube([[.08*o,.25,0],[.11*o,.055,o*e*.13]],{radius:.055,sides:5,smoothness:1,caps:!0})}),s.push({geometry:tube([[.13*o,.53,0],[.22*o,.31,-o*e*.13]],{radius:.043,sides:5,smoothness:1,caps:!0})});return _0x1c00be(merge(s),{center:!1,shine:.22})};return poses=[e(-1),e(1)],poses}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{getMeshIdLimit}from"@nayan-ui/engine";import{MOB_CONFIG as _0x38c553}from"./MobControlConstants.js";export class MobControlRenderer{count=0;disposed=!1;sizeStrength=new Float64Array(_0x38c553.CAPACITY).fill(NaN);sizeKind=new Int8Array(_0x38c553.CAPACITY).fill(-1);sizes=new Float64Array(_0x38c553.CAPACITY);constructor(s,t){this.world=s,this.poses=t,this.capacity=s.capacity+_0x38c553.CAPACITY,this.matrices=new Float32Array(16*this.capacity),this.colors=new Float32Array(4*this.capacity),this.regions=new Float32Array(4*this.capacity),this.ranges=new Uint32Array(s.ranges.length)}sync(s,t,i){if(this.disposed)return;this.ranges.fill(0);const e=this.ranges.length/4,r=Math.min(e,Math.max(getMeshIdLimit(),this.poses[0].id+1,this.poses[1].id+1));let h=0;const a=Math.floor(8*i);for(let o=0;o<2;o++)for(let n=0;n<r;n++){const r=o*e*2+2*n,l=h,g=this.world.ranges[r],m=this.world.ranges[r+1];m&&(this.matrices.set(this.world.matrices.subarray(16*g,16*(g+m)),16*h),this.colors.set(this.world.colors.subarray(4*g,4*(g+m)),4*h),this.regions.set(this.world.regions.subarray(4*g,4*(g+m)),4*h),h+=m);const d=n===this.poses[0].id?0:n===this.poses[1].id?1:-1;if(0===o&&d>=0)for(let e=0;e<_0x38c553.CAPACITY;e++){if(!s.alive[e]||(a+s.ticket[e]&1)!==d)continue;const r=e<_0x38c553.PLAYER_SLOTS,o=s.x[e]-s.previousX[e],n=s.z[e]-s.previousZ[e],l=Math.abs(o)+Math.abs(n)>1e-5?Math.atan2(o,n):r?Math.PI:0,g=s.kind[e],m=0!==g;(this.sizeStrength[e]!==s.strength[e]||this.sizeKind[e]!==g)&&(this.sizeStrength[e]=s.strength[e],this.sizeKind[e]=g,this.sizes[e]=m?.76*(1===g?2.65:3.5):1.2*(1+Math.min(.42,.055*Math.log2(s.strength[e]))));const p=this.sizes[e],M=Math.sin(l)*p,A=Math.cos(l)*p,y=16*h,w=4*h;this.matrices[y]=A,this.matrices[y+1]=0,this.matrices[y+2]=-M,this.matrices[y+3]=0,this.matrices[y+4]=0,this.matrices[y+5]=p,this.matrices[y+6]=0,this.matrices[y+7]=0,this.matrices[y+8]=M,this.matrices[y+9]=0,this.matrices[y+10]=A,this.matrices[y+11]=0,this.matrices[y+12]=s.previousX[e]+o*t;const f=s.flight[e]>0?Math.min(_0x38c553.FLIGHT_DURATION,s.flight[e]+(1-t)*_0x38c553.STEP)/_0x38c553.FLIGHT_DURATION:0;this.matrices[y+13]=.05+.8*f+.55*Math.sin(f*Math.PI)+.045*Math.abs(Math.sin(12*i+1.7*s.ticket[e])),this.matrices[y+14]=s.previousZ[e]+n*t,this.matrices[y+15]=1,this.colors[w]=1===g?1:r?s.boost[e]>0?.35:.1:.98,this.colors[w+1]=1===g?.78:r?s.boost[e]>0?.95:.63:2===g?.15:.22,this.colors[w+2]=1===g?.22:r?1:.27,this.colors[w+3]=1,this.regions[w]=this.regions[w+1]=0,this.regions[w+2]=this.regions[w+3]=1,h++}h>l&&(this.ranges[r]=l,this.ranges[r+1]=h-l)}this.count=h}setView(s,t,i){this.disposed||this.world.setView(s,t,i)}dispose(){this.disposed=!0,this.count=0,this.ranges.fill(0)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{MOB_CONFIG as _0xc529f1}from"./MobControlConstants.js";const clamp=(e,t,n)=>Math.max(t,Math.min(n,e));function random(e){return e.seed=Math.imul(e.seed,1664525)+1013904223>>>0,e.seed/4294967296}export const isPlayer=e=>e<_0xc529f1.PLAYER_SLOTS;export function createSim(e=Math.floor(4294967295*Math.random()),t=1){const n={alive:new Uint8Array(_0xc529f1.CAPACITY),x:new Float32Array(_0xc529f1.CAPACITY),z:new Float32Array(_0xc529f1.CAPACITY),previousX:new Float32Array(_0xc529f1.CAPACITY),previousZ:new Float32Array(_0xc529f1.CAPACITY),strength:new Uint16Array(_0xc529f1.CAPACITY),gatesPassed:new Uint8Array(_0xc529f1.CAPACITY),ticket:new Uint32Array(_0xc529f1.CAPACITY),kind:new Uint8Array(_0xc529f1.CAPACITY),boost:new Float32Array(_0xc529f1.CAPACITY),flight:new Float32Array(_0xc529f1.CAPACITY),next:new Int16Array(_0xc529f1.CAPACITY),playerGrid:new Int16Array(_0xc529f1.GRID_COLUMNS*_0xc529f1.GRID_ROWS),enemyGrid:new Int16Array(_0xc529f1.GRID_COLUMNS*_0xc529f1.GRID_ROWS),freePlayer:new Uint16Array(_0xc529f1.PLAYER_SLOTS),freeEnemy:new Uint16Array(_0xc529f1.ENEMY_SLOTS),freePlayerCount:0,freeEnemyCount:0,playerCount:0,enemyCount:0,playerStrength:0,enemyStrength:0,championCount:0,bossCount:0,charge:0,serial:0,seed:e>>>0,level:Math.max(1,Math.floor(Number.isFinite(t)?t:1)),elapsed:0,battleClock:0,fireClock:0,cannonX:0,targetX:0,hp:_0xc529f1.PLAYER_HP,score:0,finished:!1,won:!1,gates:[],bases:[],barriers:[],boostPad:null,collisionVisits:0,events:{shots:0,gates:0,clashes:0,hits:0,breaches:0,captured:0,champion:!1,barrierBroken:0,bossDefeated:!1,won:!1,lost:!1,effectCount:0,effectX:new Float32Array(_0xc529f1.MAX_EFFECTS),effectZ:new Float32Array(_0xc529f1.MAX_EFFECTS),effectTeam:new Uint8Array(_0xc529f1.MAX_EFFECTS)}};return prepareLevel(n),n}function clearUnits(e){e.alive.fill(0),e.strength.fill(0),e.kind.fill(0),e.boost.fill(0),e.flight.fill(0),e.freePlayerCount=_0xc529f1.PLAYER_SLOTS,e.freeEnemyCount=_0xc529f1.ENEMY_SLOTS,e.playerCount=e.enemyCount=e.playerStrength=e.enemyStrength=0,e.championCount=e.bossCount=0;for(let t=0;t<_0xc529f1.PLAYER_SLOTS;t++)e.freePlayer[t]=_0xc529f1.PLAYER_SLOTS-1-t;for(let t=0;t<_0xc529f1.ENEMY_SLOTS;t++)e.freeEnemy[t]=_0xc529f1.CAPACITY-1-t}function prepareLevel(e){clearUnits(e),e.battleClock=0,e.fireClock=_0xc529f1.FIRE_INTERVAL,e.charge=0;const t=random(e)>.5,n=(e.level-1)%3+1,r=1===n?1:2===n?2.5:3,o=1===n?[1,2,3,4]:2===n?[3,4,-2,5]:[4,3,6,5];e.gates=o.map((e,r)=>{const o=2.35*(r%2==0!==t?-1:1);return{id:r,x:o,originX:o,z:r<2?-8.5:-16,halfWidth:1.95,factor:e,operation:1===n&&0===r?"add":e<0?"divide":"multiply",moving:n>1&&r>=2,hits:0,remainder:0}}),e.bases=[-3.1,0,3.1].map((e,t)=>{const n=(1===t?_0xc529f1.CORE_HP:_0xc529f1.BASE_HP)*r;return{x:e,z:_0xc529f1.BASE_Z-(1===t?1.2:0),hp:n,maxHp:n,spawnClock:-.4-.32*t}}),e.barriers=1===n?[]:[-2.35,2.35].map(e=>({x:e,z:-22.5,halfWidth:1.5,hp:18*n,maxHp:18*n})),e.boostPad=1===n?null:{x:t?2.35:-2.35,z:-19.1,halfWidth:1.55,halfLength:1.15},3===n&&spawn(e,!1,0,-26.5,_0xc529f1.BOSS_STRENGTH,0,2)}export function spawn(e,t,n,r,o=1,a=0,s=0,f=!1){const i=_0xc529f1.MAX_STRENGTH-(t?e.playerStrength:e.enemyStrength),_=Math.max(0,Math.min(o,i));if(0===_)return-1;const l=t?e.freePlayer:e.freeEnemy,h=t?e.freePlayerCount:e.freeEnemyCount;let x;if(0===h||t&&0===s&&1===h&&0===e.championCount){let o=-1,f=1/0;const i=t?0:_0xc529f1.PLAYER_SLOTS,l=t?_0xc529f1.PLAYER_SLOTS:_0xc529f1.CAPACITY;for(let t=i;t<l;t++){if(!e.alive[t]||e.gatesPassed[t]!==a||e.kind[t]!==s)continue;const i=(e.x[t]-n)**2+(e.z[t]-r)**2;i<f&&(f=i,o=t)}return o<0?-1:(e.strength[o]=e.strength[o]+_,t?e.playerStrength+=_:e.enemyStrength+=_,o)}return x=l[h-1],t?(e.freePlayerCount--,e.playerCount++,e.playerStrength+=_):(e.freeEnemyCount--,e.enemyCount++,e.enemyStrength+=_),e.alive[x]=1,e.strength[x]=_,e.gatesPassed[x]=a,e.kind[x]=s,e.boost[x]=0,e.flight[x]=f?_0xc529f1.FLIGHT_DURATION:0,1===s&&e.championCount++,2===s&&e.bossCount++,e.ticket[x]=++e.serial,e.x[x]=e.previousX[x]=clamp(n,.3-_0xc529f1.HALF_WIDTH,_0xc529f1.HALF_WIDTH-.3),e.z[x]=e.previousZ[x]=r,x}function remove(e,t){e.alive[t]&&(e.alive[t]=0,1===e.kind[t]&&e.championCount--,2===e.kind[t]&&(e.bossCount--,0===e.strength[t]&&(e.events.bossDefeated=!0)),isPlayer(t)?(e.playerStrength-=e.strength[t],e.freePlayer[e.freePlayerCount++]=t,e.playerCount--):(e.enemyStrength-=e.strength[t],e.freeEnemy[e.freeEnemyCount++]=t,e.enemyCount--),e.strength[t]=0)}function effect(e,t,n,r){const o=e.events;if(o.effectCount>=_0xc529f1.MAX_EFFECTS)return;const a=o.effectCount++;o.effectX[a]=t,o.effectZ[a]=n,o.effectTeam[a]=r?1:0}function gridX(e){return clamp(Math.floor((e+_0xc529f1.HALF_WIDTH)/_0xc529f1.GRID_SIZE),0,_0xc529f1.GRID_COLUMNS-1)}function gridZ(e){return clamp(Math.floor(-e/_0xc529f1.GRID_SIZE),0,_0xc529f1.GRID_ROWS-1)}function grid(e){e.playerGrid.fill(-1),e.enemyGrid.fill(-1);for(let t=0;t<_0xc529f1.CAPACITY;t++)if(e.alive[t]){const n=isPlayer(t)?e.playerGrid:e.enemyGrid,r=gridZ(e.z[t])*_0xc529f1.GRID_COLUMNS+gridX(e.x[t]);e.next[t]=n[r],n[r]=t}}function move(e,t){grid(e);let n=-1;if(e.bossCount>0)for(let t=_0xc529f1.PLAYER_SLOTS;t<_0xc529f1.CAPACITY;t++)if(e.alive[t]&&2===e.kind[t]){n=t;break}const r=e.bases.some(e=>e.hp>0);for(let o=0;o<_0xc529f1.CAPACITY;o++){if(!e.alive[o])continue;const a=isPlayer(o),s=e.x[o],f=e.z[o];e.previousX[o]=s,e.previousZ[o]=f,e.flight[o]=Math.max(0,e.flight[o]-t);let i=s,_=a?_0xc529f1.TARGET_LINE-3:_0xc529f1.BREACH_Z+1;const l=n<0?1/0:Math.hypot(e.x[n]-s,e.z[n]-f);if(a&&(f<-18||l<8||!r)){let t=1/0;for(const n of e.bases)if(n.hp>0){const e=Math.abs(n.x-s)+.15*Math.abs(n.z-f);e<t&&(t=e,i=n.x,_=n.z)}n>=0&&(l<8||!r||1===e.kind[o])&&(i=e.x[n],_=e.z[n])}else a||(i=.65*e.cannonX);const h=i-s,x=_-f,A=Math.hypot(h,x)||1,C=e.boostPad;a&&C&&Math.abs(s-C.x)<=C.halfWidth&&Math.abs(f-C.z)<=C.halfLength?e.boost[o]=_0xc529f1.BOOST_DURATION:e.boost[o]=Math.max(0,e.boost[o]-t);const S=(1===e.kind[o]?_0xc529f1.CHAMPION_SPEED:2===e.kind[o]?_0xc529f1.BOSS_SPEED:a?_0xc529f1.PLAYER_SPEED:_0xc529f1.ENEMY_SPEED)*(e.boost[o]>0?_0xc529f1.BOOST_SPEED:1);let g=0,p=0,u=0;const I=a?e.playerGrid:e.enemyGrid,m=gridX(s),E=gridZ(f);for(let t=-1;t<=1&&u<_0xc529f1.MAX_SEPARATION_VISITS;t++)for(let n=-1;n<=1&&u<_0xc529f1.MAX_SEPARATION_VISITS;n++){const r=m+n,a=E+t;if(!(r<0||r>=_0xc529f1.GRID_COLUMNS||a<0||a>=_0xc529f1.GRID_ROWS))for(let t=I[a*_0xc529f1.GRID_COLUMNS+r];t>=0&&u<_0xc529f1.MAX_SEPARATION_VISITS;t=e.next[t]){if(t===o||!e.alive[t])continue;u++;const n=s-e.x[t],r=f-e.z[t],a=n*n+r*r;if(a>1e-5&&a<.24){const e=2.2*(.49-Math.sqrt(a)),t=1/Math.sqrt(a);g+=n*t*e,p+=r*t*e}}}e.x[o]=clamp(s+(h/A*S+clamp(g,-1.1,1.1))*t,.3-_0xc529f1.HALF_WIDTH,_0xc529f1.HALF_WIDTH-.3),e.z[o]=f+(x/A*S+clamp(p,-.5,.5))*t}}function gates(e){for(let t=0;t<_0xc529f1.PLAYER_SLOTS;t++)if(e.alive[t]&&1!==e.kind[t])for(const n of e.gates){const r=1<<n.id;if(e.gatesPassed[t]&r||e.previousZ[t]<n.z||e.z[t]>n.z||Math.abs(e.x[t]-n.x)>n.halfWidth)continue;e.gatesPassed[t]=e.gatesPassed[t]|r;const o=e.strength[t];if(n.hits++,e.events.gates++,n.factor<0){n.remainder+=o/-n.factor;const r=Math.floor(n.remainder);n.remainder-=r,e.playerStrength+=r-o,e.strength[t]=r,r||remove(e,t)}else{const r=Math.min("add"===n.operation?n.factor:o*(n.factor-1),_0xc529f1.MAX_STRENGTH-e.playerStrength);for(let o=0;o<r;o++){if(e.freePlayerCount<=(0===e.championCount?1:0)){e.strength[t]=e.strength[t]+r-o,e.playerStrength+=r-o;break}const a=2.39996*(e.serial+o),s=.16+.11*Math.sqrt(o+1);spawn(e,!0,e.x[t]+Math.cos(a)*s,n.z-.12-Math.abs(Math.sin(a)*s),1,e.gatesPassed[t])}}}}function fight(e){grid(e),e.collisionVisits=0;const t=_0xc529f1.COLLISION_RADIUS*_0xc529f1.COLLISION_RADIUS;for(let n=0;n<_0xc529f1.PLAYER_SLOTS;n++){if(!e.alive[n])continue;const r=gridX(e.x[n]),o=gridZ(e.z[n]);let a=0;for(let s=-1;s<=1&&e.alive[n]&&a<_0xc529f1.MAX_COLLISION_VISITS;s++)for(let f=-1;f<=1&&e.alive[n]&&a<_0xc529f1.MAX_COLLISION_VISITS;f++){const i=r+f,_=o+s;if(!(i<0||i>=_0xc529f1.GRID_COLUMNS||_<0||_>=_0xc529f1.GRID_ROWS))for(let r=e.enemyGrid[_*_0xc529f1.GRID_COLUMNS+i];r>=0&&e.alive[n]&&a<_0xc529f1.MAX_COLLISION_VISITS;r=e.next[r]){if(a++,e.collisionVisits++,!e.alive[r])continue;const o=e.x[n]-e.x[r],s=e.z[n]-e.z[r];if(o*o+s*s>(1===e.kind[n]||2===e.kind[r]?.5625:t))continue;const f=Math.min(e.strength[n],e.strength[r]);e.strength[n]=e.strength[n]-f,e.strength[r]=e.strength[r]-f,e.playerStrength-=f,e.enemyStrength-=f,e.score+=f*_0xc529f1.KILL_POINTS,e.events.clashes+=f,e.charge=Math.min(_0xc529f1.CHAMPION_CHARGE,e.charge+.12*f),effect(e,(e.x[n]+e.x[r])/2,(e.z[n]+e.z[r])/2,!1),e.strength[r]||remove(e,r),e.strength[n]||remove(e,n)}}}}function outcomes(e){for(let t=0;t<_0xc529f1.CAPACITY;t++)if(e.alive[t]){if(isPlayer(t)){for(const n of e.barriers){if(n.hp<=0||e.previousZ[t]<n.z||e.z[t]>n.z||Math.abs(e.x[t]-n.x)>n.halfWidth)continue;const r=Math.min(n.hp,e.strength[t]);n.hp-=r,e.strength[t]=e.strength[t]-r,e.playerStrength-=r,e.events.hits+=r,e.score+=2*r,effect(e,n.x,n.z,!0),0===n.hp&&e.events.barrierBroken++,0===e.strength[t]&&remove(e,t)}if(!e.alive[t])continue}if(isPlayer(t)&&e.z[t]<=_0xc529f1.TARGET_LINE){let n=null,r=1/0;for(const o of e.bases)if(o.hp>0){const a=Math.abs(o.x-e.x[t]);a<r&&(n=o,r=a)}if(!n)continue;if(r>.9||e.z[t]>n.z+1.25)continue;const o=Math.min(n.hp,e.strength[t]);n.hp-=o,e.score+=2*o,e.events.hits+=o,effect(e,n.x,n.z,!0),e.strength[t]=e.strength[t]-o,e.playerStrength-=o,e.strength[t]||remove(e,t),0===n.hp&&(e.score+=_0xc529f1.BASE_POINTS,e.events.captured++)}else!isPlayer(t)&&e.z[t]>=_0xc529f1.BREACH_Z&&(e.hp=2===e.kind[t]?0:Math.max(0,e.hp-e.strength[t]),e.events.breaches+=e.strength[t],effect(e,e.x[t],0,!1),remove(e,t))}}export function step(e,t){const n=e.events;if(n.shots=n.gates=n.clashes=n.hits=n.breaches=n.captured=n.effectCount=n.barrierBroken=0,n.won=n.lost=n.champion=n.bossDefeated=!1,e.finished||t<=0||!Number.isFinite(t))return n;const r=(e.level-1)%3+1;t=Math.min(t,_0xc529f1.STEP),e.elapsed+=t,e.battleClock+=t,e.cannonX+=(e.targetX-e.cannonX)*(1-Math.exp(15*-t)),e.fireClock+=t,e.fireClock>=_0xc529f1.FIRE_INTERVAL&&(e.fireClock-=_0xc529f1.FIRE_INTERVAL,spawn(e,!0,e.cannonX+.22*(random(e)-.5),_0xc529f1.SPAWN_Z,1,0,0,!0),e.charge=Math.min(_0xc529f1.CHAMPION_CHARGE,e.charge+_0xc529f1.CHAMPION_PER_SHOT),n.shots++),e.charge>=_0xc529f1.CHAMPION_CHARGE&&0===e.championCount&&spawn(e,!0,e.cannonX,_0xc529f1.SPAWN_Z,_0xc529f1.CHAMPION_STRENGTH+12*r,0,1,!0)>=0&&(e.charge=0,n.champion=!0);for(const t of e.gates)t.x=t.originX+(t.moving?.28*Math.sin(.65*e.battleClock+t.id):0);for(const n of e.bases)if(n.hp>0){n.spawnClock+=t;const o=_0xc529f1.ENEMY_WAVE_INTERVAL-.12*(r-1);if(n.spawnClock>=o){n.spawnClock-=o;const t=_0xc529f1.ENEMY_WAVE_SIZE+3*r+Math.min(_0xc529f1.ENEMY_MAX_SURGE,2*Math.floor(e.battleClock/_0xc529f1.ENEMY_SURGE_INTERVAL));for(let r=0;r<t;r++){const t=2.39996*e.serial,o=.2*Math.sqrt(r+.5);spawn(e,!1,n.x+Math.cos(t)*o,n.z+1.1+Math.sin(t)*o)}}}return move(e,t),gates(e),fight(e),outcomes(e),0===e.hp?(e.finished=!0,n.lost=!0):0===e.bossCount&&e.bases.every(e=>0===e.hp)&&(e.score+=_0xc529f1.LEVEL_POINTS,clearUnits(e),e.finished=e.won=n.won=!0),n}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{effects,quat,tube}from"@nayan-ui/engine";import{glyphMesh}from"../shared/EngineGlyphs.js";import{createGameMesh as _0xa169b4}from"../shared/EngineMeshes.js";import{toColor}from"../shared/EngineUtils.js";import{MOB_COLORS,MOB_CONFIG as _0x4edfbb}from"./MobControlConstants.js";const WHITE=[1,1,1,1];export function makeView(o,t,e){const r=Math.max(1,.5/(o/Math.max(t,1)));e.eye=[0,19*r,15*r],e.target=[0,0,t<550?-9:-13],e.fov=.9;const n=e.target[1]-e.eye[1],a=e.target[2]-e.eye[2],s=Math.hypot(n,a),i=(-e.eye[1]*n-e.eye[2]*a)/s;return{width:o,height:t,k:t/(2*Math.tan(e.fov/2)*i)}}const gateColor=o=>toColor(o.factor<0?MOB_COLORS.GATE_DANGER:o.factor>=3?MOB_COLORS.GATE_HIGH:MOB_COLORS.GATE);function part(o,t,e,r,n,a,s){return o.spawn({mesh:e,parent:t,position:r,scale:n,color:a,rotation:s,pickable:!1})}function number(o,t,e,r,n,a){return[...e].map((s,i)=>o.spawn({mesh:glyphMesh(s),parent:t,position:[(i-(e.length-1)/2)*a*.7,r,n],scale:a,color:WHITE,pickable:!1}))}function spawnBase(o,t,e,r,n){const a=o.spawn({mesh:"none",parent:t,position:[e.x,0,e.z],pickable:!1}),s=toColor(MOB_COLORS.ENEMY),i=toColor(MOB_COLORS.ENEMY_DARK),p=part(o,a,"roundedBox",[0,1.5,0],[2.45,3,2.5],s);part(o,a,"roundedBox",[0,.18,0],[2.8,.36,2.9],i),part(o,a,"roundedBox",[0,3.05,0],[2.65,.3,2.7],n?[.6,.31,.45,1]:[1,.62,.65,1]);for(const t of[-1,1])part(o,a,"cylinder",[1.1*t,2.1,.65],[.62,4.2,.62],s),part(o,a,"cone",[1.1*t,4.45,.65],[.9,.8,.9],i);part(o,a,"roundedBox",[0,.9,1.27],[.9,1.8,.08],i),part(o,a,"cube",[0,1,1.32],[.53,1.2,.04],[.1,.16,.23,1]),part(o,a,"cylinder",[0,3.9,-.65],[.08,1.7,.08],[.85,.87,.84,1]),part(o,a,"cube",[.4,4.45,-.65],[.8,.5,.055],s);const l=(r-1)%3+1;for(let t=0;t<l;t++)part(o,a,"roundedBox",[.32*(t-(l-1)/2),2,1.3],[.2,.35,.07],[1.25,1.08,.5,1]);return part(o,a,"roundedBox",[0,3.5,1.45],[2.3,.24,.14],[.17,.23,.29,1]),{root:a,body:p,bar:part(o,a,"roundedBox",[0,3.5,1.54],[2.15,.14,.08],toColor("#FFC66E")),digits:number(o,a,String(e.hp),2.75,1.5,.5),shown:String(e.hp),hp:e.hp,captured:!1}}let bow=null;function portalBow(){return bow||(bow=_0xa169b4(tube([[-1.86,1.65,0],[-1.65,.3,0],[0,.16,0],[1.65,.3,0],[1.86,1.65,0]],{radius:.045,sides:6,smoothness:5}),{center:!1,shine:.1})),bow}function spawnGate(o,t,e){const r=o.spawn({mesh:"none",parent:t,position:[e.x,0,e.z],pickable:!1}),n=toColor(MOB_COLORS.FRAME),a=gateColor(e),s=2*e.halfWidth;for(const t of[-1,1])part(o,r,"roundedBox",[t*e.halfWidth,.94,0],[.21,1.88,.32],n),part(o,r,"cube",[t*e.halfWidth,1.92,0],[.22,.11,.33],[1,.8,.24,1]);part(o,r,"roundedBox",[0,.03,0],[s,.06,.38],[1.3*a[0],1.3*a[1],1.3*a[2],1]);const i=part(o,r,"cube",[0,.92,0],[s-.12,1.7,.035],[a[0],a[1],a[2],.48]);if(o.spawn({mesh:portalBow(),parent:r,position:[0,0,.06],color:[.8,1.3,1.5,1],pickable:!1}),part(o,r,"roundedBox",[0,1.03,.06],[1.65,1.1,.04],[.38*a[0],.38*a[1],.38*a[2],1]),e.factor<0||"add"===e.operation){if(part(o,r,"roundedBox",[-.43,1.03,.15],[.51,.1,.05],WHITE),e.factor<0)for(const t of[-.23,.23])part(o,r,"sphere",[-.43,1.03+t,.15],.1,WHITE);else part(o,r,"roundedBox",[-.43,1.03,.15],[.1,.51,.05],WHITE);o.spawn({mesh:glyphMesh(String(Math.abs(e.factor))),parent:r,position:[.3,1.03,.18],scale:.85,color:WHITE,pickable:!1})}else number(o,r,"X"+e.factor,1.03,.18,.85);return{root:r,panel:i,hits:e.hits,factor:e.factor}}function spawnBarrier(o,t,e){const r=o.spawn({mesh:"none",parent:t,position:[e.x,0,e.z],pickable:!1});part(o,r,"roundedBox",[0,.75,0],[2*e.halfWidth,1.5,.7],[.92,.62,.23,1]);for(const t of[-1.2,0,1.2])part(o,r,"cube",[t,.75,.39],[.1,1.5,.1],[1,.8,.41,1]);for(const t of[.15,1.35])part(o,r,"cube",[0,t,.4],[2*e.halfWidth,.12,.12],[.52,.31,.12,1]);return part(o,r,"roundedBox",[0,.8,.47],[1.3,1.05,.08],[.2,.17,.13,1]),{root:r,digits:number(o,r,String(e.hp),.8,.54,.65),shown:e.hp,broken:!1}}function spawnBoost(o,t,e){const r=e.boostPad;if(!r)return;const n=o.spawn({mesh:"none",parent:t,position:[r.x,.06,r.z],pickable:!1});part(o,n,"roundedBox",[0,0,0],[2*r.halfWidth,.07,2*r.halfLength],[.13,.56,.65,1]);for(let t=0;t<3;t++)for(const e of[-1,1])part(o,n,"cube",[.3*e,.05,.6*t-.65],[.12,.03,.8],[.65,1.3,1.4,1],quat.y(e*Math.PI/4))}function spawnBossBar(o,t){const e=o.spawn({mesh:"none",parent:t,pickable:!1});return part(o,e,"roundedBox",[0,2.9,0],[2.15,.3,.1],[.18,.1,.14,1]),{root:e,bar:part(o,e,"roundedBox",[0,2.9,.07],[2,.18,.08],[1.1,.2,.25,1]),digits:number(o,e,String(_0x4edfbb.BOSS_STRENGTH),3.4,.1,.65),shown:_0x4edfbb.BOSS_STRENGTH,visible:!0}}export function buildScene(o,t,e){for(const o of"0123456789X")glyphMesh(o);const r=o.spawn({mesh:"none",pickable:!1}),n=t?[.12,.13,.18,1]:toColor(MOB_COLORS.GROUND),a=_0x4edfbb.TRACK_NEAR_Z-_0x4edfbb.TRACK_FAR_Z,s=(_0x4edfbb.TRACK_NEAR_Z+_0x4edfbb.TRACK_FAR_Z)/2;part(o,r,"cube",[0,-1.5,-18],[250,.3,240],n),part(o,r,"roundedBox",[0,-.55,s],[2*_0x4edfbb.HALF_WIDTH+1.2,.9,a+.5],t?[.25,.31,.37,1]:toColor(MOB_COLORS.ROAD_EDGE)),part(o,r,"cube",[0,-.04,s],[2*_0x4edfbb.HALF_WIDTH,.13,a],t?[.38,.43,.46,1]:toColor(MOB_COLORS.ROAD));for(const e of[-1,1])part(o,r,"roundedBox",[e*(_0x4edfbb.HALF_WIDTH+.1),.04,s],[.18,.22,a],t?[.52,.65,.73,1]:[.95,.94,.86,1]);for(let e=0,n=_0x4edfbb.TRACK_NEAR_Z-1.5;n>_0x4edfbb.TRACK_FAR_Z;e++,n-=2.3)if(part(o,r,"cube",[0,.032,n],[.07,.012,.9],t?[.51,.57,.6,1]:[.96,.96,.92,1]),e%2==0)for(const e of[-1,1])part(o,r,"cylinder",[e*(_0x4edfbb.HALF_WIDTH+.4),.23,n],[.13,.9,.13],t?[.35,.31,.28,1]:[.55,.35,.18,1]);for(const e of[-1,1])part(o,r,"cube",[e*(_0x4edfbb.HALF_WIDTH+.4),.4,s],[.09,.13,a],t?[.35,.31,.28,1]:[.67,.43,.22,1]);part(o,r,"roundedBox",[0,.06,.35],[2*_0x4edfbb.HALF_WIDTH,.1,.2],toColor(MOB_COLORS.PLAYER));const i=o.spawn({mesh:"none",parent:r,position:[0,0,_0x4edfbb.CANNON_Z],pickable:!1}),p=toColor(MOB_COLORS.PLAYER),l=toColor(MOB_COLORS.PLAYER_DARK);part(o,i,"roundedBox",[0,.38,0],[1.6,.4,1.65],[.8,.18,.21,1]),part(o,i,"sphere",[0,.86,0],[1.18,.9,1.2],p);for(const t of[-1,1])for(const e of[-.48,.5])part(o,i,"cylinder",[.83*t,.31,e],[.6,.24,.6],[.1,.13,.18,1],quat.z(Math.PI/2)),part(o,i,"cylinder",[.96*t,.31,e],[.25,.03,.25],[.77,.83,.87,1],quat.z(Math.PI/2));const b=o.spawn({mesh:"none",parent:i,position:[0,.92,-.1],pickable:!1});part(o,b,"cylinder",[0,0,-.7],[.62,1.6,.62],l,quat.x(Math.PI/2)),part(o,b,"cylinder",[0,0,-1.52],[.76,.22,.76],p,quat.x(Math.PI/2)),part(o,b,"cylinder",[0,0,-1.65],[.49,.025,.49],[.06,.11,.17,1],quat.x(Math.PI/2)),part(o,i,"roundedBox",[0,.4,1.05],[1.65,.15,.26],[.16,.24,.31,1]);const f=part(o,i,"roundedBox",[-.76,.5,1.05],[.01,.1,.2],toColor(MOB_COLORS.CHAMPION)),d={root:r,battleRoot:o.spawn({mesh:"none",parent:r,pickable:!1}),cannon:i,barrel:b,chargeBar:f,chargeShown:-1,battle:null,bases:[],gates:[],barriers:[],boss:null,night:t};return syncBattle(o,d,e),d}function syncBattle(o,t,e){t.battle!==e&&(o.despawn(t.battleRoot),t.battleRoot=o.spawn({mesh:"none",parent:t.root,pickable:!1}),t.battle=e,t.bases=e.bases.map(r=>spawnBase(o,t.battleRoot,r,e.level,t.night)),t.gates=e.gates.map(e=>spawnGate(o,t.battleRoot,e)),t.barriers=e.barriers.map(e=>spawnBarrier(o,t.battleRoot,e)),spawnBoost(o,t.battleRoot,e),t.boss=e.bossCount>0?spawnBossBar(o,t.battleRoot):null)}export function syncScene(o,t,e,r){syncBattle(o,t,e),o.set(t.cannon,{position:[e.cannonX,0,_0x4edfbb.CANNON_Z]});const n=5*Math.floor(e.charge/5);if(n!==t.chargeShown){t.chargeShown=n;const e=n/_0x4edfbb.CHAMPION_CHARGE;o.set(t.chargeBar,{scale:[Math.max(.01,1.5*e),.1,.2],position:[.75*e-.75,.5,1.05]})}for(let r=0;r<e.gates.length;r++){const n=e.gates[r],a=t.gates[r];if(n.moving&&o.set(a.root,{position:[n.x,0,n.z]}),a.hits!==n.hits){a.hits=n.hits;const t=gateColor(n);o.set(a.panel,{color:[1.3*t[0],1.3*t[1],1.3*t[2],.65]}),o.animate(a.panel,{color:[t[0],t[1],t[2],.48]},{duration:.18})}}for(let n=0;n<e.bases.length;n++){const a=e.bases[n],s=t.bases[n];if(a.hp!==s.hp){s.hp=a.hp;const t=a.hp/a.maxHp;o.set(s.bar,{scale:[Math.max(.001,2.15*t),.14,.08],position:[1.075*-(1-t),3.5,1.54]})}0===a.hp&&!s.captured&&(s.captured=!0,o.set(s.body,{color:toColor(MOB_COLORS.PLAYER)}),o.animate(s.root,{scale:[1,.25,1]},{duration:.55,easing:"bounce"}));const i=String(a.hp);if(r&&i!==s.shown){for(const t of s.digits)o.despawn(t);s.digits=number(o,s.root,i,2.75,1.5,.5),s.shown=i}}for(let n=0;n<e.barriers.length;n++){const a=e.barriers[n],s=t.barriers[n];if(0===a.hp&&!s.broken&&(s.broken=!0,effects.shatter(o,{position:[a.x,.65,a.z],colors:[.92,.62,.23,1],count:9,size:.13,speed:2,lifetime:.4,gravity:-7}),o.animate(s.root,{scale:[1,.001,1]},{duration:.25})),r&&a.hp!==s.shown){for(const t of s.digits)o.despawn(t);s.digits=a.hp>0?number(o,s.root,String(a.hp),.8,.54,.65):[],s.shown=a.hp}}if(t.boss){const n=t.boss;let a=-1;for(let o=_0x4edfbb.PLAYER_SLOTS;o<_0x4edfbb.CAPACITY;o++)if(e.alive[o]&&2===e.kind[o]){a=o;break}if(a>=0){o.set(n.root,{position:[e.previousX[a],0,e.previousZ[a]]});const t=e.strength[a];if(t!==n.shown){const e=t/_0x4edfbb.BOSS_STRENGTH;if(o.set(n.bar,{scale:[Math.max(.001,2*e),.18,.08],position:[-(1-e),2.9,.07]}),r){for(const t of n.digits)o.despawn(t);n.digits=number(o,n.root,String(t),3.4,.1,.65),n.shown=t}}}else n.visible&&(n.visible=!1,o.set(n.root,{scale:.001}))}}export function recoil(o,t){o.animate(t.barrel,[{position:[0,.92,.1],at:.2},{position:[0,.92,-.1]}],{duration:.09})}export function battleEffect(o,t,e,r){effects.sparkle(o,{position:[t,.4,e],colors:toColor(r?MOB_COLORS.PLAYER:MOB_COLORS.ENEMY),count:5,size:.07,speed:1.5,lifetime:.24,flash:!1})}export function captured(o,t,e){effects.shatter(o,{position:[t,1.2,e],colors:toColor(MOB_COLORS.ENEMY),count:12,size:.14,speed:3,lifetime:.5,gravity:-7})}export function celebrate(o){effects.confetti(o,{position:[0,2,-12],colors:[toColor(MOB_COLORS.PLAYER),[1,.82,.35,1],WHITE],count:35,size:.1,speed:5,lifetime:1.2,gravity:-4})}export function removeScene(o,t){o.despawn(t.root)}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";import{GAME_SOUNDS}from"../../services/SoundsService.js";import{GAME_IDS}from"../../services/UtilsService.js";import{createSearchGame}from"../search-grid/SearchGrid.js";import{NUMBERS}from"./NumberSearchNumbers.js";export const NumberSearch=createSearchGame({gameId:GAME_IDS.NUMBER_SEARCH,list:NUMBERS,alphabet:"0123456789",sounds:GAME_SOUNDS.NUMBER_SEARCH,winTitle:"ALL NUMBERS FOUND!",winMessage:"Great number hunting!",startSubtext:"Find hidden numbers!",variant:"number",displayName:"NumberSearch"});
|