react-native-games 0.7.0 → 0.8.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 +148 -23
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +5 -8
- package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
- package/lib/module/games/candy-crush/CandyCrush.js +121 -0
- package/lib/module/games/candy-crush/CandyCrush.js.map +1 -0
- package/lib/module/games/candy-crush/CandyCrushConstants.js +125 -0
- package/lib/module/games/candy-crush/CandyCrushConstants.js.map +1 -0
- package/lib/module/games/candy-crush/CandyCrushService.js +370 -0
- package/lib/module/games/candy-crush/CandyCrushService.js.map +1 -0
- package/lib/module/games/candy-crush/CandyCrushStore.js +305 -0
- package/lib/module/games/candy-crush/CandyCrushStore.js.map +1 -0
- package/lib/module/games/candy-crush/components/CandyItem.js +191 -0
- package/lib/module/games/candy-crush/components/CandyItem.js.map +1 -0
- package/lib/module/games/candy-crush/components/GameBackground.js +85 -0
- package/lib/module/games/candy-crush/components/GameBackground.js.map +1 -0
- package/lib/module/games/candy-crush/components/GameGrid.js +314 -0
- package/lib/module/games/candy-crush/components/GameGrid.js.map +1 -0
- package/lib/module/games/candy-crush/components/ScoreBoard.js +112 -0
- package/lib/module/games/candy-crush/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/candy-crush/components/index.js +7 -0
- package/lib/module/games/candy-crush/components/index.js.map +1 -0
- package/lib/module/games/candy-crush/index.js +6 -0
- package/lib/module/games/candy-crush/index.js.map +1 -0
- package/lib/module/games/color-sort/ColorSort.js +130 -0
- package/lib/module/games/color-sort/ColorSort.js.map +1 -0
- package/lib/module/games/color-sort/ColorSortConstants.js +68 -0
- package/lib/module/games/color-sort/ColorSortConstants.js.map +1 -0
- package/lib/module/games/color-sort/ColorSortService.js +255 -0
- package/lib/module/games/color-sort/ColorSortService.js.map +1 -0
- package/lib/module/games/color-sort/ColorSortStore.js +258 -0
- package/lib/module/games/color-sort/ColorSortStore.js.map +1 -0
- package/lib/module/games/color-sort/components/ColorContainer.js +140 -0
- package/lib/module/games/color-sort/components/ColorContainer.js.map +1 -0
- package/lib/module/games/color-sort/components/GameBackground.js +135 -0
- package/lib/module/games/color-sort/components/GameBackground.js.map +1 -0
- package/lib/module/games/color-sort/components/ScoreBoard.js +78 -0
- package/lib/module/games/color-sort/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/color-sort/components/index.js +6 -0
- package/lib/module/games/color-sort/components/index.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJump.js +209 -0
- package/lib/module/games/dino-jump/DinoJump.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJumpConstants.js +179 -0
- package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJumpService.js +268 -0
- package/lib/module/games/dino-jump/DinoJumpService.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJumpStore.js +387 -0
- package/lib/module/games/dino-jump/DinoJumpStore.js.map +1 -0
- package/lib/module/games/dino-jump/components/DinoSprite.js +409 -0
- package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -0
- package/lib/module/games/dino-jump/components/GameArea.js +68 -0
- package/lib/module/games/dino-jump/components/GameArea.js.map +1 -0
- package/lib/module/games/dino-jump/components/GameBackground.js +421 -0
- package/lib/module/games/dino-jump/components/GameBackground.js.map +1 -0
- package/lib/module/games/dino-jump/components/ObstacleSprite.js +306 -0
- package/lib/module/games/dino-jump/components/ObstacleSprite.js.map +1 -0
- package/lib/module/games/dino-jump/components/ScoreBoard.js +107 -0
- package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/dino-jump/components/StarSprite.js +45 -0
- package/lib/module/games/dino-jump/components/StarSprite.js.map +1 -0
- package/lib/module/games/dino-jump/components/index.js +9 -0
- package/lib/module/games/dino-jump/components/index.js.map +1 -0
- package/lib/module/games/flappy-bird/FlappyBird.js +131 -0
- package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -0
- package/lib/module/games/flappy-bird/FlappyBirdConstants.js +90 -0
- package/lib/module/games/flappy-bird/FlappyBirdConstants.js.map +1 -0
- package/lib/module/games/flappy-bird/FlappyBirdStore.js +276 -0
- package/lib/module/games/flappy-bird/FlappyBirdStore.js.map +1 -0
- package/lib/module/games/flappy-bird/components/Bird.js +87 -0
- package/lib/module/games/flappy-bird/components/Bird.js.map +1 -0
- package/lib/module/games/flappy-bird/components/GameArea.js +86 -0
- package/lib/module/games/flappy-bird/components/GameArea.js.map +1 -0
- package/lib/module/games/flappy-bird/components/GameBackground.js +112 -0
- package/lib/module/games/flappy-bird/components/GameBackground.js.map +1 -0
- package/lib/module/games/flappy-bird/components/Pipes.js +175 -0
- package/lib/module/games/flappy-bird/components/Pipes.js.map +1 -0
- package/lib/module/games/flappy-bird/components/ScoreBoard.js +72 -0
- package/lib/module/games/flappy-bird/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/flappy-bird/components/index.js +8 -0
- package/lib/module/games/flappy-bird/components/index.js.map +1 -0
- package/lib/module/games/fruit-merger/FruitMerger.js +112 -0
- package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -0
- package/lib/module/games/fruit-merger/FruitMergerConstants.js +119 -0
- package/lib/module/games/fruit-merger/FruitMergerConstants.js.map +1 -0
- package/lib/module/games/fruit-merger/FruitMergerService.js +13 -0
- package/lib/module/games/fruit-merger/FruitMergerService.js.map +1 -0
- package/lib/module/games/fruit-merger/FruitMergerStore.js +318 -0
- package/lib/module/games/fruit-merger/FruitMergerStore.js.map +1 -0
- package/lib/module/games/fruit-merger/components/FruitItem.js +102 -0
- package/lib/module/games/fruit-merger/components/FruitItem.js.map +1 -0
- package/lib/module/games/fruit-merger/components/GameArea.js +123 -0
- package/lib/module/games/fruit-merger/components/GameArea.js.map +1 -0
- package/lib/module/games/fruit-merger/components/GameBackground.js +477 -0
- package/lib/module/games/fruit-merger/components/GameBackground.js.map +1 -0
- package/lib/module/games/fruit-merger/components/ScoreBoard.js +66 -0
- package/lib/module/games/fruit-merger/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/fruit-merger/components/index.js +7 -0
- package/lib/module/games/fruit-merger/components/index.js.map +1 -0
- package/lib/module/games/fruit-ninja/FruitNinja.js +6 -9
- package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
- package/lib/module/games/game-2048/Game2048.js +120 -0
- package/lib/module/games/game-2048/Game2048.js.map +1 -0
- package/lib/module/games/game-2048/Game2048Constants.js +263 -0
- package/lib/module/games/game-2048/Game2048Constants.js.map +1 -0
- package/lib/module/games/game-2048/Game2048Service.js +457 -0
- package/lib/module/games/game-2048/Game2048Service.js.map +1 -0
- package/lib/module/games/game-2048/Game2048Store.js +238 -0
- package/lib/module/games/game-2048/Game2048Store.js.map +1 -0
- package/lib/module/games/game-2048/components/GameBackground.js +247 -0
- package/lib/module/games/game-2048/components/GameBackground.js.map +1 -0
- package/lib/module/games/game-2048/components/GameGrid.js +139 -0
- package/lib/module/games/game-2048/components/GameGrid.js.map +1 -0
- package/lib/module/games/game-2048/components/GameTile.js +72 -0
- package/lib/module/games/game-2048/components/GameTile.js.map +1 -0
- package/lib/module/games/game-2048/components/ScoreBoard.js +70 -0
- package/lib/module/games/game-2048/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/game-2048/components/index.js +7 -0
- package/lib/module/games/game-2048/components/index.js.map +1 -0
- package/lib/module/games/maze-runner/MazeRunner.js +33 -31
- package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidget.js +34 -32
- package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbers.js +161 -0
- package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +207 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js.map +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersService.js +248 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersService.js.map +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +275 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersStore.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/GameBackground.js +259 -0
- package/lib/module/games/sliding-numbers/components/GameBackground.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/NumbersGrid.js +174 -0
- package/lib/module/games/sliding-numbers/components/NumbersGrid.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/NumbersTile.js +116 -0
- package/lib/module/games/sliding-numbers/components/NumbersTile.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/ScoreBoard.js +66 -0
- package/lib/module/games/sliding-numbers/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/index.js +7 -0
- package/lib/module/games/sliding-numbers/components/index.js.map +1 -0
- package/lib/module/games/snake/Snake.js +192 -0
- package/lib/module/games/snake/Snake.js.map +1 -0
- package/lib/module/games/snake/SnakeConstants.js +138 -0
- package/lib/module/games/snake/SnakeConstants.js.map +1 -0
- package/lib/module/games/snake/SnakeService.js +148 -0
- package/lib/module/games/snake/SnakeService.js.map +1 -0
- package/lib/module/games/snake/SnakeStore.js +184 -0
- package/lib/module/games/snake/SnakeStore.js.map +1 -0
- package/lib/module/games/snake/components/GameBackground.js +221 -0
- package/lib/module/games/snake/components/GameBackground.js.map +1 -0
- package/lib/module/games/snake/components/GameGrid.js +153 -0
- package/lib/module/games/snake/components/GameGrid.js.map +1 -0
- package/lib/module/games/snake/components/ScoreBoard.js +57 -0
- package/lib/module/games/snake/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/snake/components/index.js +6 -0
- package/lib/module/games/snake/components/index.js.map +1 -0
- package/lib/module/games/snake/index.js +6 -0
- package/lib/module/games/snake/index.js.map +1 -0
- package/lib/module/games/space-fighter/SpaceFighter.js +7 -10
- package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMole.js +6 -6
- package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/services/GamesConstants.js +58 -2
- package/lib/module/services/GamesConstants.js.map +1 -1
- package/lib/module/services/GamesService.js +40 -0
- package/lib/module/services/GamesService.js.map +1 -1
- package/lib/module/services/SoundsService.js +132 -1
- package/lib/module/services/SoundsService.js.map +1 -1
- package/lib/module/shared/helpers/GameOverModal.js +6 -3
- package/lib/module/shared/helpers/GameOverModal.js.map +1 -1
- package/lib/module/shared/helpers/GameSettingsModal.js +3 -3
- package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -1
- package/lib/module/shared/helpers/ParticleBlast.js +3 -2
- package/lib/module/shared/helpers/ParticleBlast.js.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
- package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +4 -0
- package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +104 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +40 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +48 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +13 -0
- package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts +5 -0
- package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +3 -0
- package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/index.d.ts +5 -0
- package/lib/typescript/src/games/candy-crush/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/index.d.ts +4 -0
- package/lib/typescript/src/games/candy-crush/index.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/ColorSort.d.ts +4 -0
- package/lib/typescript/src/games/color-sort/ColorSort.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/ColorSortConstants.d.ts +52 -0
- package/lib/typescript/src/games/color-sort/ColorSortConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/ColorSortService.d.ts +66 -0
- package/lib/typescript/src/games/color-sort/ColorSortService.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/ColorSortStore.d.ts +48 -0
- package/lib/typescript/src/games/color-sort/ColorSortStore.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/components/ColorContainer.d.ts +11 -0
- package/lib/typescript/src/games/color-sort/components/ColorContainer.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/color-sort/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/components/index.d.ts +4 -0
- package/lib/typescript/src/games/color-sort/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +4 -0
- package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +95 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +40 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +103 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +3 -0
- package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +8 -0
- package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +3 -0
- package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +3 -0
- package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/index.d.ts +7 -0
- package/lib/typescript/src/games/dino-jump/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +4 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +83 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +53 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +8 -0
- package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +8 -0
- package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +8 -0
- package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/index.d.ts +6 -0
- package/lib/typescript/src/games/flappy-bird/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +4 -0
- package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +115 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +5 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +43 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +10 -0
- package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +8 -0
- package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/index.d.ts +5 -0
- package/lib/typescript/src/games/fruit-merger/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
- package/lib/typescript/src/games/game-2048/Game2048.d.ts +4 -0
- package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +163 -0
- package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +113 -0
- package/lib/typescript/src/games/game-2048/Game2048Service.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +48 -0
- package/lib/typescript/src/games/game-2048/Game2048Store.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +7 -0
- package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/GameTile.d.ts +13 -0
- package/lib/typescript/src/games/game-2048/components/GameTile.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/index.d.ts +5 -0
- package/lib/typescript/src/games/game-2048/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +4 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +108 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +34 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +56 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +7 -0
- package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts +11 -0
- package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/index.d.ts +5 -0
- package/lib/typescript/src/games/sliding-numbers/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/Snake.d.ts +4 -0
- package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/SnakeConstants.d.ts +93 -0
- package/lib/typescript/src/games/snake/SnakeConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/SnakeService.d.ts +30 -0
- package/lib/typescript/src/games/snake/SnakeService.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/SnakeStore.d.ts +43 -0
- package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/components/GameBackground.d.ts +5 -0
- package/lib/typescript/src/games/snake/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/components/GameGrid.d.ts +3 -0
- package/lib/typescript/src/games/snake/components/GameGrid.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/components/index.d.ts +4 -0
- package/lib/typescript/src/games/snake/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/index.d.ts +4 -0
- package/lib/typescript/src/games/snake/index.d.ts.map +1 -0
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +8 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesConstants.d.ts +156 -0
- package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesService.d.ts +10 -2
- package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
- package/lib/typescript/src/services/SoundsService.d.ts +103 -0
- package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
- package/lib/typescript/src/shared/helpers/GameOverModal.d.ts +2 -0
- package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -1
- package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { create } from 'zustand';
|
|
4
|
+
import { subscribeWithSelector } from 'zustand/middleware';
|
|
5
|
+
import { Game2048Service } from "./Game2048Service.js";
|
|
6
|
+
import { GAME_CONFIG, GAME_2048_SOUNDS, GAME_2048_SETTINGS } from "./Game2048Constants.js";
|
|
7
|
+
import { immerMiddleware } from "../../services/GamesService.js";
|
|
8
|
+
import { playSound } from "../../services/SoundsService.js";
|
|
9
|
+
import { playHaptic, HapticType } from "../../services/HapticsService.js";
|
|
10
|
+
// Ultra-minimal store with memory-safe implementation
|
|
11
|
+
export const useGame2048Store = create()(subscribeWithSelector(immerMiddleware((set, get) => {
|
|
12
|
+
const gameService = new Game2048Service();
|
|
13
|
+
return {
|
|
14
|
+
// Initial state - minimal for memory efficiency
|
|
15
|
+
score: 0,
|
|
16
|
+
isPlaying: false,
|
|
17
|
+
isGameOver: false,
|
|
18
|
+
isWon: false,
|
|
19
|
+
isAnimating: false,
|
|
20
|
+
grid: gameService.createGrid(),
|
|
21
|
+
nextTileId: 1,
|
|
22
|
+
difficulty: 'easy',
|
|
23
|
+
targetValue: 2048,
|
|
24
|
+
gridSize: 4,
|
|
25
|
+
enableSounds: true,
|
|
26
|
+
enableHaptics: true,
|
|
27
|
+
// Actions
|
|
28
|
+
startGame: () => {
|
|
29
|
+
set(state => {
|
|
30
|
+
state.isPlaying = true;
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
stopGame: () => {
|
|
34
|
+
set(state => {
|
|
35
|
+
state.isPlaying = false;
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
resetGame: () => {
|
|
39
|
+
const state = get();
|
|
40
|
+
state.initializeGame(state.difficulty);
|
|
41
|
+
},
|
|
42
|
+
initializeGame: (difficulty = 'easy') => {
|
|
43
|
+
set(state => {
|
|
44
|
+
// Get difficulty settings
|
|
45
|
+
const difficultySettings = GAME_2048_SETTINGS.DIFFICULTY_SETTINGS[difficulty];
|
|
46
|
+
|
|
47
|
+
// Clear existing grid to prevent memory leaks
|
|
48
|
+
state.grid = gameService.createGrid();
|
|
49
|
+
|
|
50
|
+
// Add initial tiles with animations
|
|
51
|
+
let tileId = 1;
|
|
52
|
+
const tile1 = gameService.addRandomTile(state.grid, tileId++);
|
|
53
|
+
const tile2 = gameService.addRandomTile(state.grid, tileId++);
|
|
54
|
+
|
|
55
|
+
// Reset state with difficulty settings
|
|
56
|
+
state.score = 0;
|
|
57
|
+
state.isPlaying = false;
|
|
58
|
+
state.isGameOver = false;
|
|
59
|
+
state.isWon = false;
|
|
60
|
+
state.isAnimating = false;
|
|
61
|
+
state.nextTileId = tileId;
|
|
62
|
+
state.difficulty = difficulty;
|
|
63
|
+
state.targetValue = difficultySettings.targetTile;
|
|
64
|
+
state.gridSize = difficultySettings.gridSize;
|
|
65
|
+
|
|
66
|
+
// Animate initial tiles
|
|
67
|
+
[tile1, tile2].forEach(tile => {
|
|
68
|
+
if (tile?.scaleValue) {
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
tile.scaleValue?.setValue(0);
|
|
71
|
+
// Use React Native's Animated API
|
|
72
|
+
const {
|
|
73
|
+
Animated
|
|
74
|
+
} = require('react-native');
|
|
75
|
+
Animated.spring(tile.scaleValue, {
|
|
76
|
+
toValue: 1,
|
|
77
|
+
useNativeDriver: true,
|
|
78
|
+
tension: GAME_CONFIG.ANIMATION_CONFIG.TENSION,
|
|
79
|
+
friction: GAME_CONFIG.ANIMATION_CONFIG.FRICTION
|
|
80
|
+
}).start();
|
|
81
|
+
}, 100);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
},
|
|
86
|
+
updateGrid: newGrid => {
|
|
87
|
+
set(state => {
|
|
88
|
+
state.grid = newGrid;
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
updateScore: newScore => {
|
|
92
|
+
set(state => {
|
|
93
|
+
state.score = newScore;
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
setIsAnimating: animating => {
|
|
97
|
+
set(state => {
|
|
98
|
+
state.isAnimating = animating;
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
setGameOver: gameOver => {
|
|
102
|
+
set(state => {
|
|
103
|
+
state.isGameOver = gameOver;
|
|
104
|
+
if (gameOver) {
|
|
105
|
+
state.isPlaying = false;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
},
|
|
109
|
+
setWon: won => {
|
|
110
|
+
set(state => {
|
|
111
|
+
state.isWon = won;
|
|
112
|
+
});
|
|
113
|
+
},
|
|
114
|
+
incrementTileId: () => {
|
|
115
|
+
const state = get();
|
|
116
|
+
const newId = state.nextTileId;
|
|
117
|
+
set(draft => {
|
|
118
|
+
draft.nextTileId = newId + 1;
|
|
119
|
+
});
|
|
120
|
+
return newId;
|
|
121
|
+
},
|
|
122
|
+
handleMove: direction => {
|
|
123
|
+
const state = get();
|
|
124
|
+
|
|
125
|
+
// Early returns for better performance
|
|
126
|
+
if (state.isGameOver || state.isWon || state.isAnimating) {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Batch state updates for better performance
|
|
131
|
+
set(draft => {
|
|
132
|
+
// Auto-start the game if not playing
|
|
133
|
+
if (!draft.isPlaying) {
|
|
134
|
+
draft.isPlaying = true;
|
|
135
|
+
}
|
|
136
|
+
draft.isAnimating = true;
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
// Create a shallow copy for better memory performance
|
|
140
|
+
const gridCopy = state.grid.map(row => row.slice());
|
|
141
|
+
const {
|
|
142
|
+
moved,
|
|
143
|
+
score: moveScore
|
|
144
|
+
} = gameService.moveTiles(gridCopy, direction);
|
|
145
|
+
if (moved) {
|
|
146
|
+
// Batch all state updates together
|
|
147
|
+
const newTileId = state.nextTileId;
|
|
148
|
+
const newTile = gameService.addRandomTile(gridCopy, newTileId);
|
|
149
|
+
const multiplier = GAME_2048_SETTINGS.SCORE_MULTIPLIER[state.difficulty];
|
|
150
|
+
const newScore = state.score + moveScore * multiplier;
|
|
151
|
+
|
|
152
|
+
// Check game state before updating
|
|
153
|
+
const hasWon = gameService.hasWon(gridCopy, state.targetValue);
|
|
154
|
+
const isGameOver = gameService.checkGameOver(gridCopy);
|
|
155
|
+
|
|
156
|
+
// Single state update for all changes
|
|
157
|
+
set(draft => {
|
|
158
|
+
draft.grid = gridCopy;
|
|
159
|
+
draft.score = newScore;
|
|
160
|
+
draft.nextTileId = newTileId + 1;
|
|
161
|
+
if (hasWon) draft.isWon = true;
|
|
162
|
+
if (isGameOver) draft.isGameOver = true;
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
// Async sound/haptic feedback (non-blocking)
|
|
166
|
+
Promise.resolve().then(() => {
|
|
167
|
+
playSound(GAME_2048_SOUNDS.TILE_MOVE, state.enableSounds);
|
|
168
|
+
playHaptic(HapticType.LIGHT, state.enableHaptics);
|
|
169
|
+
if (moveScore > 0) {
|
|
170
|
+
playSound(GAME_2048_SOUNDS.TILE_MERGE, state.enableSounds);
|
|
171
|
+
playHaptic(HapticType.MEDIUM, state.enableHaptics);
|
|
172
|
+
}
|
|
173
|
+
if (newTile) {
|
|
174
|
+
playSound(GAME_2048_SOUNDS.NEW_TILE, state.enableSounds);
|
|
175
|
+
}
|
|
176
|
+
if (hasWon) {
|
|
177
|
+
playSound(GAME_2048_SOUNDS.GAME_WIN, state.enableSounds);
|
|
178
|
+
playHaptic(HapticType.SUCCESS, state.enableHaptics);
|
|
179
|
+
} else if (isGameOver) {
|
|
180
|
+
playSound(GAME_2048_SOUNDS.GAME_OVER, state.enableSounds);
|
|
181
|
+
playHaptic(HapticType.ERROR, state.enableHaptics);
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
// Optimized animation handling
|
|
186
|
+
if (newTile?.scaleValue) {
|
|
187
|
+
const {
|
|
188
|
+
Animated
|
|
189
|
+
} = require('react-native');
|
|
190
|
+
newTile.scaleValue.setValue(0);
|
|
191
|
+
Animated.spring(newTile.scaleValue, {
|
|
192
|
+
toValue: 1,
|
|
193
|
+
useNativeDriver: true,
|
|
194
|
+
tension: GAME_CONFIG.ANIMATION_CONFIG.TENSION,
|
|
195
|
+
friction: GAME_CONFIG.ANIMATION_CONFIG.FRICTION
|
|
196
|
+
}).start(() => {
|
|
197
|
+
set(draft => {
|
|
198
|
+
draft.isAnimating = false;
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
} else {
|
|
202
|
+
set(draft => {
|
|
203
|
+
draft.isAnimating = false;
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return true;
|
|
207
|
+
} else {
|
|
208
|
+
// Async invalid move feedback
|
|
209
|
+
Promise.resolve().then(() => {
|
|
210
|
+
playSound(GAME_2048_SOUNDS.INVALID_MOVE, state.enableSounds);
|
|
211
|
+
playHaptic(HapticType.WARNING, state.enableHaptics);
|
|
212
|
+
});
|
|
213
|
+
set(draft => {
|
|
214
|
+
draft.isAnimating = false;
|
|
215
|
+
});
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
updateSettings: (enableSounds, enableHaptics) => {
|
|
220
|
+
set(state => {
|
|
221
|
+
state.enableSounds = enableSounds;
|
|
222
|
+
state.enableHaptics = enableHaptics;
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
})));
|
|
227
|
+
|
|
228
|
+
// Selector hooks for performance optimization
|
|
229
|
+
export const useScore = () => useGame2048Store(state => state.score);
|
|
230
|
+
export const useGrid = () => useGame2048Store(state => state.grid);
|
|
231
|
+
export const useIsPlaying = () => useGame2048Store(state => state.isPlaying);
|
|
232
|
+
export const useIsGameOver = () => useGame2048Store(state => state.isGameOver);
|
|
233
|
+
export const useIsWon = () => useGame2048Store(state => state.isWon);
|
|
234
|
+
export const useIsAnimating = () => useGame2048Store(state => state.isAnimating);
|
|
235
|
+
export const useDifficulty = () => useGame2048Store(state => state.difficulty);
|
|
236
|
+
export const useTargetValue = () => useGame2048Store(state => state.targetValue);
|
|
237
|
+
export const useGridSize = () => useGame2048Store(state => state.gridSize);
|
|
238
|
+
//# sourceMappingURL=Game2048Store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["create","subscribeWithSelector","Game2048Service","GAME_CONFIG","GAME_2048_SOUNDS","GAME_2048_SETTINGS","immerMiddleware","playSound","playHaptic","HapticType","useGame2048Store","set","get","gameService","score","isPlaying","isGameOver","isWon","isAnimating","grid","createGrid","nextTileId","difficulty","targetValue","gridSize","enableSounds","enableHaptics","startGame","state","stopGame","resetGame","initializeGame","difficultySettings","DIFFICULTY_SETTINGS","tileId","tile1","addRandomTile","tile2","targetTile","forEach","tile","scaleValue","setTimeout","setValue","Animated","require","spring","toValue","useNativeDriver","tension","ANIMATION_CONFIG","TENSION","friction","FRICTION","start","updateGrid","newGrid","updateScore","newScore","setIsAnimating","animating","setGameOver","gameOver","setWon","won","incrementTileId","newId","draft","handleMove","direction","gridCopy","map","row","slice","moved","moveScore","moveTiles","newTileId","newTile","multiplier","SCORE_MULTIPLIER","hasWon","checkGameOver","Promise","resolve","then","TILE_MOVE","LIGHT","TILE_MERGE","MEDIUM","NEW_TILE","GAME_WIN","SUCCESS","GAME_OVER","ERROR","INVALID_MOVE","WARNING","updateSettings","useScore","useGrid","useIsPlaying","useIsGameOver","useIsWon","useIsAnimating","useDifficulty","useTargetValue","useGridSize"],"sourceRoot":"../../../../src","sources":["games/game-2048/Game2048Store.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, StyleSheet, Dimensions } from 'react-native';
|
|
5
|
+
import { Canvas, LinearGradient, Rect, vec, Circle, RoundedRect } from '@shopify/react-native-skia';
|
|
6
|
+
import { BACKGROUND_TILE_COLORS } from "../Game2048Constants.js";
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
const {
|
|
9
|
+
width,
|
|
10
|
+
height
|
|
11
|
+
} = Dimensions.get('window');
|
|
12
|
+
export const GameBackground = /*#__PURE__*/React.memo(({
|
|
13
|
+
children
|
|
14
|
+
}) => {
|
|
15
|
+
// Generate beautiful floating 2048 tiles
|
|
16
|
+
const generateFloatingTiles = React.useMemo(() => {
|
|
17
|
+
const elements = [];
|
|
18
|
+
const tileCount = 30;
|
|
19
|
+
for (let i = 0; i < tileCount; i++) {
|
|
20
|
+
const baseX = width / tileCount * i;
|
|
21
|
+
const baseY = height / tileCount * i;
|
|
22
|
+
|
|
23
|
+
// Add subtle random offset for natural look
|
|
24
|
+
const x = baseX + Math.sin(i * 0.5) * 60 + Math.random() * 120;
|
|
25
|
+
const y = baseY + Math.cos(i * 0.7) * 80 + Math.random() * 140;
|
|
26
|
+
const tileSize = 15 + Math.random() * 25;
|
|
27
|
+
const colorIndex = i % BACKGROUND_TILE_COLORS.length;
|
|
28
|
+
const opacity = 0.25 + Math.sin(i) * 0.15;
|
|
29
|
+
|
|
30
|
+
// 2048 tile with varied shapes to suggest numbers
|
|
31
|
+
const tileX = Math.max(tileSize / 2, Math.min(width - tileSize, x));
|
|
32
|
+
const tileY = Math.max(tileSize / 2, Math.min(height - tileSize, y));
|
|
33
|
+
|
|
34
|
+
// Create different tile patterns inspired by 2048 numbers
|
|
35
|
+
if (i % 5 === 0) {
|
|
36
|
+
// Square tiles (like 2, 4, 8)
|
|
37
|
+
elements.push(/*#__PURE__*/_jsx(RoundedRect, {
|
|
38
|
+
x: tileX,
|
|
39
|
+
y: tileY,
|
|
40
|
+
width: tileSize,
|
|
41
|
+
height: tileSize,
|
|
42
|
+
r: tileSize * 0.25,
|
|
43
|
+
color: `${BACKGROUND_TILE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2, '0')}`
|
|
44
|
+
}, `square-tile-${i}`));
|
|
45
|
+
} else if (i % 5 === 1) {
|
|
46
|
+
// Rectangular tiles (like 16, 32)
|
|
47
|
+
elements.push(/*#__PURE__*/_jsx(RoundedRect, {
|
|
48
|
+
x: tileX,
|
|
49
|
+
y: tileY,
|
|
50
|
+
width: tileSize * 0.7,
|
|
51
|
+
height: tileSize,
|
|
52
|
+
r: tileSize * 0.2,
|
|
53
|
+
color: `${BACKGROUND_TILE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2, '0')}`
|
|
54
|
+
}, `rect-tile-${i}`));
|
|
55
|
+
} else if (i % 5 === 2) {
|
|
56
|
+
// Wide tiles (like 64, 128)
|
|
57
|
+
elements.push(/*#__PURE__*/_jsx(RoundedRect, {
|
|
58
|
+
x: tileX,
|
|
59
|
+
y: tileY,
|
|
60
|
+
width: tileSize * 1.3,
|
|
61
|
+
height: tileSize * 0.8,
|
|
62
|
+
r: tileSize * 0.15,
|
|
63
|
+
color: `${BACKGROUND_TILE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2, '0')}`
|
|
64
|
+
}, `wide-tile-${i}`));
|
|
65
|
+
} else if (i % 5 === 3) {
|
|
66
|
+
// Circular tiles (like 256, 512)
|
|
67
|
+
elements.push(/*#__PURE__*/_jsx(Circle, {
|
|
68
|
+
cx: tileX + tileSize / 2,
|
|
69
|
+
cy: tileY + tileSize / 2,
|
|
70
|
+
r: tileSize / 2,
|
|
71
|
+
color: `${BACKGROUND_TILE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2, '0')}`
|
|
72
|
+
}, `circle-tile-${i}`));
|
|
73
|
+
} else {
|
|
74
|
+
// Diamond-like tiles (like 1024, 2048)
|
|
75
|
+
elements.push(/*#__PURE__*/_jsx(RoundedRect, {
|
|
76
|
+
x: tileX,
|
|
77
|
+
y: tileY,
|
|
78
|
+
width: tileSize * 0.9,
|
|
79
|
+
height: tileSize * 0.9,
|
|
80
|
+
r: tileSize * 0.3,
|
|
81
|
+
color: `${BACKGROUND_TILE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2, '0')}`
|
|
82
|
+
}, `diamond-tile-${i}`));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return elements;
|
|
86
|
+
}, []);
|
|
87
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
88
|
+
style: styles.container,
|
|
89
|
+
children: [/*#__PURE__*/_jsxs(Canvas, {
|
|
90
|
+
style: styles.backgroundCanvas,
|
|
91
|
+
children: [/*#__PURE__*/_jsx(Rect, {
|
|
92
|
+
x: 0,
|
|
93
|
+
y: 0,
|
|
94
|
+
width: width,
|
|
95
|
+
height: height,
|
|
96
|
+
children: /*#__PURE__*/_jsx(LinearGradient, {
|
|
97
|
+
start: vec(0, 0),
|
|
98
|
+
end: vec(width, height),
|
|
99
|
+
colors: [`${BACKGROUND_TILE_COLORS[0]}35`,
|
|
100
|
+
// Vibrant pink
|
|
101
|
+
`${BACKGROUND_TILE_COLORS[3]}30`,
|
|
102
|
+
// Orange
|
|
103
|
+
`${BACKGROUND_TILE_COLORS[6]}35`,
|
|
104
|
+
// Green
|
|
105
|
+
`${BACKGROUND_TILE_COLORS[9]}30`,
|
|
106
|
+
// Blue
|
|
107
|
+
`${BACKGROUND_TILE_COLORS[11]}35` // Purple
|
|
108
|
+
]
|
|
109
|
+
})
|
|
110
|
+
}), /*#__PURE__*/_jsx(Rect, {
|
|
111
|
+
x: 0,
|
|
112
|
+
y: 0,
|
|
113
|
+
width: width,
|
|
114
|
+
height: height,
|
|
115
|
+
children: /*#__PURE__*/_jsx(LinearGradient, {
|
|
116
|
+
start: vec(0, 0),
|
|
117
|
+
end: vec(width / 2, height / 2),
|
|
118
|
+
colors: [`${BACKGROUND_TILE_COLORS[1]}25`,
|
|
119
|
+
// Bright red
|
|
120
|
+
'transparent', `${BACKGROUND_TILE_COLORS[4]}25`,
|
|
121
|
+
// Yellow
|
|
122
|
+
'transparent', `${BACKGROUND_TILE_COLORS[7]}25`,
|
|
123
|
+
// Teal
|
|
124
|
+
'transparent']
|
|
125
|
+
})
|
|
126
|
+
}), /*#__PURE__*/_jsx(Rect, {
|
|
127
|
+
x: 0,
|
|
128
|
+
y: 0,
|
|
129
|
+
width: width,
|
|
130
|
+
height: height,
|
|
131
|
+
children: /*#__PURE__*/_jsx(LinearGradient, {
|
|
132
|
+
start: vec(width, 0),
|
|
133
|
+
end: vec(0, height),
|
|
134
|
+
colors: [`${BACKGROUND_TILE_COLORS[2]}20`,
|
|
135
|
+
// Deep orange
|
|
136
|
+
'transparent', `${BACKGROUND_TILE_COLORS[5]}20`,
|
|
137
|
+
// Lime
|
|
138
|
+
'transparent', `${BACKGROUND_TILE_COLORS[8]}20`,
|
|
139
|
+
// Cyan
|
|
140
|
+
'transparent']
|
|
141
|
+
})
|
|
142
|
+
}), generateFloatingTiles, /*#__PURE__*/_jsx(RoundedRect, {
|
|
143
|
+
x: width * 0.08,
|
|
144
|
+
y: height * 0.12,
|
|
145
|
+
width: 55,
|
|
146
|
+
height: 55,
|
|
147
|
+
r: 12,
|
|
148
|
+
color: `${BACKGROUND_TILE_COLORS[10]}60` // Indigo
|
|
149
|
+
}), /*#__PURE__*/_jsx(RoundedRect, {
|
|
150
|
+
x: width * 0.82,
|
|
151
|
+
y: height * 0.78,
|
|
152
|
+
width: 50,
|
|
153
|
+
height: 50,
|
|
154
|
+
r: 10,
|
|
155
|
+
color: `${BACKGROUND_TILE_COLORS[9]}60` // Blue
|
|
156
|
+
}), /*#__PURE__*/_jsx(RoundedRect, {
|
|
157
|
+
x: width * 0.78,
|
|
158
|
+
y: height * 0.15,
|
|
159
|
+
width: 45,
|
|
160
|
+
height: 45,
|
|
161
|
+
r: 9,
|
|
162
|
+
color: `${BACKGROUND_TILE_COLORS[8]}60` // Cyan
|
|
163
|
+
}), /*#__PURE__*/_jsx(RoundedRect, {
|
|
164
|
+
x: width * 0.12,
|
|
165
|
+
y: height * 0.72,
|
|
166
|
+
width: 60,
|
|
167
|
+
height: 60,
|
|
168
|
+
r: 14,
|
|
169
|
+
color: `${BACKGROUND_TILE_COLORS[7]}60` // Teal
|
|
170
|
+
}), /*#__PURE__*/_jsx(RoundedRect, {
|
|
171
|
+
x: width * 0.45,
|
|
172
|
+
y: height * 0.08,
|
|
173
|
+
width: 40,
|
|
174
|
+
height: 40,
|
|
175
|
+
r: 8,
|
|
176
|
+
color: `${BACKGROUND_TILE_COLORS[6]}60` // Green
|
|
177
|
+
}), /*#__PURE__*/_jsx(RoundedRect, {
|
|
178
|
+
x: width * 0.15,
|
|
179
|
+
y: height * 0.45,
|
|
180
|
+
width: 48,
|
|
181
|
+
height: 48,
|
|
182
|
+
r: 10,
|
|
183
|
+
color: `${BACKGROUND_TILE_COLORS[5]}60` // Lime
|
|
184
|
+
}), /*#__PURE__*/_jsx(RoundedRect, {
|
|
185
|
+
x: width * 0.72,
|
|
186
|
+
y: height * 0.55,
|
|
187
|
+
width: 42,
|
|
188
|
+
height: 42,
|
|
189
|
+
r: 8,
|
|
190
|
+
color: `${BACKGROUND_TILE_COLORS[4]}60` // Yellow
|
|
191
|
+
}), /*#__PURE__*/_jsx(RoundedRect, {
|
|
192
|
+
x: width * 0.55,
|
|
193
|
+
y: height * 0.85,
|
|
194
|
+
width: 38,
|
|
195
|
+
height: 38,
|
|
196
|
+
r: 7,
|
|
197
|
+
color: `${BACKGROUND_TILE_COLORS[3]}60` // Orange
|
|
198
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
199
|
+
cx: width * 0.25,
|
|
200
|
+
cy: height * 0.28,
|
|
201
|
+
r: 22,
|
|
202
|
+
color: `${BACKGROUND_TILE_COLORS[2]}50` // Deep orange
|
|
203
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
204
|
+
cx: width * 0.62,
|
|
205
|
+
cy: height * 0.32,
|
|
206
|
+
r: 26,
|
|
207
|
+
color: `${BACKGROUND_TILE_COLORS[1]}50` // Red
|
|
208
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
209
|
+
cx: width * 0.38,
|
|
210
|
+
cy: height * 0.68,
|
|
211
|
+
r: 20,
|
|
212
|
+
color: `${BACKGROUND_TILE_COLORS[0]}50` // Pink
|
|
213
|
+
}), Array.from({
|
|
214
|
+
length: Math.floor(width / 80)
|
|
215
|
+
}, (_, i) => /*#__PURE__*/_jsx(Rect, {
|
|
216
|
+
x: i * 80,
|
|
217
|
+
y: 0,
|
|
218
|
+
width: 1,
|
|
219
|
+
height: height,
|
|
220
|
+
color: "rgba(255, 255, 255, 0.08)"
|
|
221
|
+
}, `grid-v-${i}`)), Array.from({
|
|
222
|
+
length: Math.floor(height / 80)
|
|
223
|
+
}, (_, i) => /*#__PURE__*/_jsx(Rect, {
|
|
224
|
+
x: 0,
|
|
225
|
+
y: i * 80,
|
|
226
|
+
width: width,
|
|
227
|
+
height: 1,
|
|
228
|
+
color: "rgba(255, 255, 255, 0.08)"
|
|
229
|
+
}, `grid-h-${i}`))]
|
|
230
|
+
}), children]
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
const styles = StyleSheet.create({
|
|
234
|
+
container: {
|
|
235
|
+
flex: 1
|
|
236
|
+
},
|
|
237
|
+
backgroundCanvas: {
|
|
238
|
+
position: 'absolute',
|
|
239
|
+
top: 0,
|
|
240
|
+
left: 0,
|
|
241
|
+
right: 0,
|
|
242
|
+
bottom: 0,
|
|
243
|
+
width,
|
|
244
|
+
height
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
//# sourceMappingURL=GameBackground.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","Dimensions","Canvas","LinearGradient","Rect","vec","Circle","RoundedRect","BACKGROUND_TILE_COLORS","jsx","_jsx","jsxs","_jsxs","width","height","get","GameBackground","memo","children","generateFloatingTiles","useMemo","elements","tileCount","i","baseX","baseY","x","Math","sin","random","y","cos","tileSize","colorIndex","length","opacity","tileX","max","min","tileY","push","r","color","floor","toString","padStart","cx","cy","style","styles","container","backgroundCanvas","start","end","colors","Array","from","_","create","flex","position","top","left","right","bottom"],"sourceRoot":"../../../../../src","sources":["games/game-2048/components/GameBackground.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, StyleSheet, Dimensions } from 'react-native';
|
|
5
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
6
|
+
import { useGrid, useGame2048Store } from "../Game2048Store.js";
|
|
7
|
+
import { GameTile } from "./GameTile.js";
|
|
8
|
+
import { GAME_CONFIG } from "../Game2048Constants.js";
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
const {
|
|
11
|
+
width: screenWidth
|
|
12
|
+
} = Dimensions.get('window');
|
|
13
|
+
export const GameGrid = /*#__PURE__*/React.memo(() => {
|
|
14
|
+
const grid = useGrid();
|
|
15
|
+
const {
|
|
16
|
+
handleMove
|
|
17
|
+
} = useGame2048Store();
|
|
18
|
+
|
|
19
|
+
// Memoize calculations for better performance
|
|
20
|
+
const gridCalculations = React.useMemo(() => {
|
|
21
|
+
const horizontalPadding = 40;
|
|
22
|
+
const availableWidth = screenWidth - horizontalPadding;
|
|
23
|
+
const margin = GAME_CONFIG.TILE_MARGIN;
|
|
24
|
+
const responsiveTileSize = Math.floor((availableWidth - margin * 5) / 4);
|
|
25
|
+
const tileSize = Math.max(responsiveTileSize, 60);
|
|
26
|
+
const gridContainerSize = tileSize * 4 + margin * 5;
|
|
27
|
+
return {
|
|
28
|
+
margin,
|
|
29
|
+
tileSize,
|
|
30
|
+
gridContainerSize
|
|
31
|
+
};
|
|
32
|
+
}, []);
|
|
33
|
+
|
|
34
|
+
// Memoized tile renderer for better performance
|
|
35
|
+
const renderTile = React.useCallback(tile => {
|
|
36
|
+
const {
|
|
37
|
+
margin,
|
|
38
|
+
tileSize
|
|
39
|
+
} = gridCalculations;
|
|
40
|
+
const x = margin + tile.col * (tileSize + margin);
|
|
41
|
+
const y = margin + tile.row * (tileSize + margin);
|
|
42
|
+
return /*#__PURE__*/_jsx(GameTile, {
|
|
43
|
+
tile: tile,
|
|
44
|
+
position: {
|
|
45
|
+
x,
|
|
46
|
+
y
|
|
47
|
+
},
|
|
48
|
+
size: tileSize
|
|
49
|
+
}, tile.id);
|
|
50
|
+
}, [gridCalculations]);
|
|
51
|
+
|
|
52
|
+
// Optimized gesture handler with memoization
|
|
53
|
+
const panGesture = React.useMemo(() => Gesture.Pan().onEnd(event => {
|
|
54
|
+
const {
|
|
55
|
+
translationX,
|
|
56
|
+
translationY
|
|
57
|
+
} = event;
|
|
58
|
+
const minDistance = 50;
|
|
59
|
+
const absX = Math.abs(translationX);
|
|
60
|
+
const absY = Math.abs(translationY);
|
|
61
|
+
if (absX > absY && absX > minDistance) {
|
|
62
|
+
handleMove(translationX > 0 ? 'right' : 'left');
|
|
63
|
+
} else if (absY > minDistance) {
|
|
64
|
+
handleMove(translationY > 0 ? 'down' : 'up');
|
|
65
|
+
}
|
|
66
|
+
}).runOnJS(true), [handleMove]);
|
|
67
|
+
return /*#__PURE__*/_jsx(View, {
|
|
68
|
+
style: styles.gameContainer,
|
|
69
|
+
children: /*#__PURE__*/_jsx(GestureDetector, {
|
|
70
|
+
gesture: panGesture,
|
|
71
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
72
|
+
style: [styles.grid, {
|
|
73
|
+
width: gridCalculations.gridContainerSize,
|
|
74
|
+
height: gridCalculations.gridContainerSize
|
|
75
|
+
}],
|
|
76
|
+
children: [React.useMemo(() => Array(16).fill(0).map((_, index) => {
|
|
77
|
+
const row = Math.floor(index / 4);
|
|
78
|
+
const col = index % 4;
|
|
79
|
+
const {
|
|
80
|
+
margin,
|
|
81
|
+
tileSize
|
|
82
|
+
} = gridCalculations;
|
|
83
|
+
const x = margin + col * (tileSize + margin);
|
|
84
|
+
const y = margin + row * (tileSize + margin);
|
|
85
|
+
return /*#__PURE__*/_jsx(View, {
|
|
86
|
+
style: [styles.cell, {
|
|
87
|
+
left: x,
|
|
88
|
+
top: y,
|
|
89
|
+
width: tileSize,
|
|
90
|
+
height: tileSize
|
|
91
|
+
}]
|
|
92
|
+
}, index);
|
|
93
|
+
}), [gridCalculations]), React.useMemo(() => {
|
|
94
|
+
const tiles = [];
|
|
95
|
+
for (const row of grid) {
|
|
96
|
+
for (const tile of row) {
|
|
97
|
+
if (tile) tiles.push(renderTile(tile));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return tiles;
|
|
101
|
+
}, [grid, renderTile])]
|
|
102
|
+
})
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
const styles = StyleSheet.create({
|
|
107
|
+
gameContainer: {
|
|
108
|
+
flex: 1,
|
|
109
|
+
justifyContent: 'center',
|
|
110
|
+
alignItems: 'center',
|
|
111
|
+
paddingHorizontal: 20,
|
|
112
|
+
// Responsive horizontal padding
|
|
113
|
+
paddingVertical: 10,
|
|
114
|
+
zIndex: 10,
|
|
115
|
+
position: 'relative'
|
|
116
|
+
},
|
|
117
|
+
grid: {
|
|
118
|
+
backgroundColor: 'rgba(187, 173, 160, 0.9)',
|
|
119
|
+
borderRadius: 15,
|
|
120
|
+
position: 'relative',
|
|
121
|
+
shadowColor: '#000',
|
|
122
|
+
shadowOffset: {
|
|
123
|
+
width: 0,
|
|
124
|
+
height: 8
|
|
125
|
+
},
|
|
126
|
+
shadowOpacity: 0.25,
|
|
127
|
+
shadowRadius: 15,
|
|
128
|
+
elevation: 15,
|
|
129
|
+
// Ensure grid doesn't overflow screen
|
|
130
|
+
maxWidth: screenWidth - 40
|
|
131
|
+
},
|
|
132
|
+
cell: {
|
|
133
|
+
position: 'absolute',
|
|
134
|
+
backgroundColor: 'rgba(238, 228, 218, 0.4)',
|
|
135
|
+
borderRadius: 6 // Slightly smaller border radius for better fit
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
GameGrid.displayName = 'GameGrid';
|
|
139
|
+
//# sourceMappingURL=GameGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","Dimensions","Gesture","GestureDetector","useGrid","useGame2048Store","GameTile","GAME_CONFIG","jsx","_jsx","jsxs","_jsxs","width","screenWidth","get","GameGrid","memo","grid","handleMove","gridCalculations","useMemo","horizontalPadding","availableWidth","margin","TILE_MARGIN","responsiveTileSize","Math","floor","tileSize","max","gridContainerSize","renderTile","useCallback","tile","x","col","y","row","position","size","id","panGesture","Pan","onEnd","event","translationX","translationY","minDistance","absX","abs","absY","runOnJS","style","styles","gameContainer","children","gesture","height","Array","fill","map","_","index","cell","left","top","tiles","push","create","flex","justifyContent","alignItems","paddingHorizontal","paddingVertical","zIndex","backgroundColor","borderRadius","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","maxWidth","displayName"],"sourceRoot":"../../../../../src","sources":["games/game-2048/components/GameGrid.tsx"],"mappings":"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","ignoreList":[]}
|