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
package/README.md
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
# 🎮 react-native-games
|
|
2
2
|
|
|
3
|
-
**react-native-games** is a collection of free, high-performance games for your React Native projects. Built with modern React Native technologies including Skia, Reanimated, and TypeScript for smooth 60fps gameplay.
|
|
3
|
+
**react-native-games** is a collection of free, high-performance games for your React Native projects. Built with modern React Native technologies including Skia, Reanimated, Gesture Handler and TypeScript for smooth 60fps gameplay.
|
|
4
4
|
|
|
5
5
|
## 🎯 Available Games
|
|
6
6
|
|
|
7
|
-
| Game
|
|
8
|
-
|
|
9
|
-
| **🐱 Whack A Mole**
|
|
10
|
-
| **🫧 Popit Fidget**
|
|
11
|
-
| **🍎 Fruit Ninja**
|
|
12
|
-
| **🧩 Maze Runner**
|
|
13
|
-
| **🚀 Space Fighter**
|
|
7
|
+
| Game | Description | Features |
|
|
8
|
+
|------------------------|-------------|----------|
|
|
9
|
+
| **🐱 Whack A Mole** | Whack cute cats popping from holes - fast reflexes needed! | Multiple difficulty levels, customizable grid sizes, haptic feedback |
|
|
10
|
+
| **🫧 Popit Fidget** | Pop satisfying bubbles in this relaxing fidget toy game | Relaxing gameplay, colorful bubbles, different shapes |
|
|
11
|
+
| **🍎 Fruit Ninja** | Slice flying fruits with finger swipes - avoid the bombs! | Physics-based slicing, particle effects, combo system |
|
|
12
|
+
| **🧩 Maze Runner** | Navigate ball through mazes using tilt and physics controls | Dynamic maze generation, physics controls, multiple difficulties |
|
|
13
|
+
| **🚀 Space Fighter** | Pilot spaceship through asteroid fields in endless space | 3D-style graphics, progressive difficulty, space physics |
|
|
14
14
|
| **🎈 Balloon Blaster** | Pop rising balloons before they escape - quick taps win! | Physics-based gameplay, particle effects, combo system |
|
|
15
|
+
| **🦖 Dino Jump** | Jump over cacti and collect stars in endless desert run | Tap to jump, collect stars for extra lives, progressive difficulty |
|
|
16
|
+
| **🐦 Flappy Bird** | Navigate bird through pipes with precise timing | Classic flappy mechanics, pixel-perfect collision, addictive gameplay |
|
|
17
|
+
| **🐍 Snake Game** | Classic snake game with modern touch controls | Grow by eating food, avoid walls and yourself, smooth controls |
|
|
18
|
+
| **🎮 2048 Game** | Merge tiles to reach 2048 and beyond | Swipe to merge, strategic gameplay, undo moves |
|
|
19
|
+
| **🔢 Sliding Numbers** | Solve the classic 15-puzzle with numbers | Multiple grid sizes, timer challenge, smooth animations |
|
|
20
|
+
| **🍬 Candy Crush** | Match colorful candies in this puzzle game | Match-3 mechanics, special candies, cascading combos |
|
|
21
|
+
| **🎨 Color Sort** | Sort colored liquids into matching tubes | Logic puzzle, satisfying pour animations, increasing difficulty |
|
|
22
|
+
| **🍉 Fruit Merger** | Merge fruits to create bigger ones | Physics-based merging, watermelon evolution, combo system |
|
|
15
23
|
|
|
16
24
|
## 📦 Installation
|
|
17
25
|
|
|
@@ -36,9 +44,9 @@ Follow the installation guides for each peer dependency:
|
|
|
36
44
|
- **[@shopify/react-native-skia](https://shopify.github.io/react-native-skia/docs/getting-started/installation)** - Graphics rendering
|
|
37
45
|
- **[react-native-reanimated](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started)** - Animations
|
|
38
46
|
- **[react-native-gesture-handler](https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation)** - Gestures
|
|
47
|
+
- **[react-native-worklets](https://github.com/margelo/react-native-worklets)** - Worklets for high-performance animations
|
|
39
48
|
- **[expo-speech](https://docs.expo.dev/versions/latest/sdk/speech/)** - Text-to-speech functionality
|
|
40
49
|
- **[expo-haptics](https://docs.expo.dev/versions/latest/sdk/haptics/)** - Haptic feedback
|
|
41
|
-
- **[react-native-worklets](https://github.com/margelo/react-native-worklets)** - JavaScript worklets for high-performance animations
|
|
42
50
|
|
|
43
51
|
## 🚀 Usage
|
|
44
52
|
|
|
@@ -92,10 +100,7 @@ export default function FruitNinjaScreen() {
|
|
|
92
100
|
useLayoutEffect(() => {
|
|
93
101
|
navigation.setOptions({
|
|
94
102
|
headerRight: () => (
|
|
95
|
-
<TouchableOpacity
|
|
96
|
-
onPress={handleToggleSettingsModal}
|
|
97
|
-
className="p-2"
|
|
98
|
-
>
|
|
103
|
+
<TouchableOpacity className="p-2" onPress={handleToggleSettingsModal}>
|
|
99
104
|
<Ionicons name="settings-outline" size={24} color={colors.text} />
|
|
100
105
|
</TouchableOpacity>
|
|
101
106
|
),
|
|
@@ -116,19 +121,27 @@ All games use the same props interface:
|
|
|
116
121
|
|
|
117
122
|
```tsx
|
|
118
123
|
// Import any game you want
|
|
119
|
-
import {
|
|
120
|
-
WhackAMole,
|
|
121
|
-
PopitFidget,
|
|
122
|
-
FruitNinja,
|
|
123
|
-
MazeRunner,
|
|
124
|
-
SpaceFighter,
|
|
125
|
-
BalloonBlaster
|
|
124
|
+
import {
|
|
125
|
+
WhackAMole,
|
|
126
|
+
PopitFidget,
|
|
127
|
+
FruitNinja,
|
|
128
|
+
MazeRunner,
|
|
129
|
+
SpaceFighter,
|
|
130
|
+
BalloonBlaster,
|
|
131
|
+
DinoJump,
|
|
132
|
+
FlappyBird,
|
|
133
|
+
Snake,
|
|
134
|
+
Game2048,
|
|
135
|
+
SlidingNumbers,
|
|
136
|
+
CandyCrush,
|
|
137
|
+
ColorSort,
|
|
138
|
+
FruitMerger
|
|
126
139
|
} from 'react-native-games';
|
|
127
140
|
|
|
128
141
|
// All games accept the same props:
|
|
129
|
-
<GameComponent
|
|
130
|
-
settings={settings}
|
|
131
|
-
onSettingsChange={handleSettingsChange}
|
|
142
|
+
<GameComponent
|
|
143
|
+
settings={settings}
|
|
144
|
+
onSettingsChange={handleSettingsChange}
|
|
132
145
|
/>
|
|
133
146
|
```
|
|
134
147
|
|
|
@@ -185,6 +198,54 @@ const DEFAULT_GAME_SETTINGS = {
|
|
|
185
198
|
- Balloon spawn interval: 1200ms, rise speed: 0.08
|
|
186
199
|
- Physics-based balloon movement with particle effects
|
|
187
200
|
|
|
201
|
+
**Dino Jump**
|
|
202
|
+
- Endless runner with tap-to-jump mechanics
|
|
203
|
+
- Collect stars for extra lives (max 3 lives)
|
|
204
|
+
- Progressive difficulty with increasing speed
|
|
205
|
+
- Difficulty affects obstacle spawn rate and game speed
|
|
206
|
+
|
|
207
|
+
**Flappy Bird**
|
|
208
|
+
- Classic tap-to-flap mechanics with gravity physics
|
|
209
|
+
- Navigate through pipes with pixel-perfect collision
|
|
210
|
+
- Progressive difficulty with increasing pipe speed
|
|
211
|
+
- Difficulty affects pipe gap size and spawn frequency
|
|
212
|
+
|
|
213
|
+
**Snake**
|
|
214
|
+
- Classic snake gameplay with modern touch controls
|
|
215
|
+
- Swipe or tap to change direction
|
|
216
|
+
- Grow by eating food, avoid walls and yourself
|
|
217
|
+
- Difficulty affects snake speed and grid size
|
|
218
|
+
|
|
219
|
+
**Game 2048**
|
|
220
|
+
- Swipe to merge tiles with same numbers
|
|
221
|
+
- Reach 2048 tile to win, continue for higher scores
|
|
222
|
+
- Undo moves feature for strategic gameplay
|
|
223
|
+
- Difficulty affects starting tile values and spawn rate
|
|
224
|
+
|
|
225
|
+
**Sliding Numbers**
|
|
226
|
+
- Classic 15-puzzle with numbered tiles
|
|
227
|
+
- Grid sizes: easy 3x3, medium 4x4, hard 5x5
|
|
228
|
+
- Timer challenge to solve as fast as possible
|
|
229
|
+
- Smooth tile sliding animations
|
|
230
|
+
|
|
231
|
+
**Candy Crush**
|
|
232
|
+
- Match-3 puzzle with colorful candies
|
|
233
|
+
- Create special candies with 4+ matches
|
|
234
|
+
- Cascading combos and satisfying animations
|
|
235
|
+
- Difficulty affects level objectives and move limits
|
|
236
|
+
|
|
237
|
+
**Color Sort**
|
|
238
|
+
- Sort colored liquids into matching tubes
|
|
239
|
+
- Logic puzzle with increasing complexity
|
|
240
|
+
- Satisfying pour animations and sound effects
|
|
241
|
+
- Difficulty affects number of tubes and colors
|
|
242
|
+
|
|
243
|
+
**Fruit Merger**
|
|
244
|
+
- Merge fruits to create bigger ones (watermelon evolution)
|
|
245
|
+
- Physics-based dropping and merging mechanics
|
|
246
|
+
- Combo system for multiple merges
|
|
247
|
+
- Difficulty affects merge requirements and spawn rate
|
|
248
|
+
|
|
188
249
|
### Game Settings
|
|
189
250
|
|
|
190
251
|
Each game includes built-in settings screens with a unified, simplified interface:
|
|
@@ -195,6 +256,70 @@ Each game includes built-in settings screens with a unified, simplified interfac
|
|
|
195
256
|
|
|
196
257
|
All games use a centralized settings system for consistency and ease of maintenance. Game durations and difficulty behaviors are customized per game for optimal gameplay experience.
|
|
197
258
|
|
|
259
|
+
## 📚 API Reference
|
|
260
|
+
|
|
261
|
+
### GamesService
|
|
262
|
+
|
|
263
|
+
Core game configuration and settings management.
|
|
264
|
+
|
|
265
|
+
```tsx
|
|
266
|
+
import {
|
|
267
|
+
GAME_IDS,
|
|
268
|
+
DEFAULT_GAME_SETTINGS,
|
|
269
|
+
gamesList,
|
|
270
|
+
type GameSettings,
|
|
271
|
+
type GameProps
|
|
272
|
+
} from 'react-native-games';
|
|
273
|
+
|
|
274
|
+
// Game IDs enum for all available games
|
|
275
|
+
GAME_IDS.WHACK_A_MOLE
|
|
276
|
+
GAME_IDS.POPIT_FIDGET
|
|
277
|
+
GAME_IDS.FRUIT_NINJA
|
|
278
|
+
GAME_IDS.BALLOON_BLASTER
|
|
279
|
+
GAME_IDS.SPACE_FIGHTER
|
|
280
|
+
GAME_IDS.MAZE_RUNNER
|
|
281
|
+
GAME_IDS.SLIDING_NUMBERS
|
|
282
|
+
GAME_IDS.GAME_2048
|
|
283
|
+
GAME_IDS.DINO_JUMP
|
|
284
|
+
GAME_IDS.COLOR_SORT
|
|
285
|
+
GAME_IDS.FRUIT_MERGER
|
|
286
|
+
GAME_IDS.FLAPPY_BIRD
|
|
287
|
+
GAME_IDS.CANDY_CRUSH
|
|
288
|
+
GAME_IDS.SNAKE
|
|
289
|
+
|
|
290
|
+
// Default game settings
|
|
291
|
+
const settings = DEFAULT_GAME_SETTINGS;
|
|
292
|
+
// {
|
|
293
|
+
// isVisible: false,
|
|
294
|
+
// difficulty: 'medium',
|
|
295
|
+
// enableSounds: true,
|
|
296
|
+
// enableHaptics: true
|
|
297
|
+
// }
|
|
298
|
+
|
|
299
|
+
// Games list with metadata
|
|
300
|
+
gamesList.forEach(game => {
|
|
301
|
+
console.log(game.id, game.title, game.description);
|
|
302
|
+
});
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
### TypeScript Types
|
|
306
|
+
|
|
307
|
+
```tsx
|
|
308
|
+
// Game settings interface
|
|
309
|
+
interface GameSettings {
|
|
310
|
+
isVisible: boolean; // Settings modal visibility
|
|
311
|
+
difficulty: 'easy' | 'medium' | 'hard';
|
|
312
|
+
enableSounds: boolean; // Audio feedback
|
|
313
|
+
enableHaptics: boolean; // Haptic feedback
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Game component props
|
|
317
|
+
interface GameProps {
|
|
318
|
+
settings?: GameSettings;
|
|
319
|
+
onSettingsChange?: (settings: GameSettings) => void;
|
|
320
|
+
}
|
|
321
|
+
```
|
|
322
|
+
|
|
198
323
|
## 🎨 Features
|
|
199
324
|
|
|
200
325
|
### 🚀 **High Performance**
|
|
@@ -8,7 +8,7 @@ import { createBalloonBlasterService } from "./BalloonBlasterService.js";
|
|
|
8
8
|
import { ScoreBoard, GameArea, GameBackground } from "./components/index.js";
|
|
9
9
|
import { GameControlButton, GameOverModal, useAnimationTrackers, useGameErrorHandler, GameErrorType } from "../../shared/helpers/index.js";
|
|
10
10
|
import { GameSettingsModal } from "../../shared/helpers/index.js";
|
|
11
|
-
import { GAME_IDS } from "../../services/GamesService.js";
|
|
11
|
+
import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/GamesService.js";
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
export const BalloonBlaster = /*#__PURE__*/React.memo(({
|
|
14
14
|
settings,
|
|
@@ -135,15 +135,12 @@ export const BalloonBlaster = /*#__PURE__*/React.memo(({
|
|
|
135
135
|
// Memoized GameSettingsModal props to prevent unnecessary re-renders
|
|
136
136
|
const gameSettingsModalProps = useMemo(() => ({
|
|
137
137
|
gameId: GAME_IDS.BALLOON_BLASTER,
|
|
138
|
-
settings,
|
|
138
|
+
settings: settings || DEFAULT_GAME_SETTINGS,
|
|
139
139
|
onSettingsChange
|
|
140
140
|
}), [settings, onSettingsChange]);
|
|
141
|
-
return /*#__PURE__*/_jsx(
|
|
142
|
-
style:
|
|
143
|
-
|
|
144
|
-
},
|
|
145
|
-
children: /*#__PURE__*/_jsx(View, {
|
|
146
|
-
style: styles.container,
|
|
141
|
+
return /*#__PURE__*/_jsx(View, {
|
|
142
|
+
style: styles.container,
|
|
143
|
+
children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
|
|
147
144
|
children: /*#__PURE__*/_jsxs(GameBackground, {
|
|
148
145
|
children: [/*#__PURE__*/_jsx(GameArea, {}), /*#__PURE__*/_jsx(View, {
|
|
149
146
|
style: styles.scoreboardContainer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","useCallback","View","StyleSheet","GestureHandlerRootView","useBalloonBlasterStore","createBalloonBlasterService","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","useAnimationTrackers","useGameErrorHandler","GameErrorType","GameSettingsModal","GAME_IDS","jsx","_jsx","jsxs","_jsxs","BalloonBlaster","memo","settings","onSettingsChange","isPlaying","state","gameOver","score","startGame","stopGame","resetGame","decrementTime","addBalloon","removeBalloon","updateBalloon","balloonAnimations","particleAnimations","wrapFunction","safeExecute","BALLOON_BLASTER","spawnBalloon","balloon","handleResetGame","UNKNOWN_ERROR","gameService","INITIALIZATION_ERROR","handleStartGame","currentBalloons","getState","balloons","forEach","id","cleanup","resetAnimations","setTimeout","startGameTimer","startBalloonSpawning","startPhysicsLoop","handleStopGame","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","gameSettingsModalProps","gameId","style","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","useCallback","View","StyleSheet","GestureHandlerRootView","useBalloonBlasterStore","createBalloonBlasterService","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","useAnimationTrackers","useGameErrorHandler","GameErrorType","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","BalloonBlaster","memo","settings","onSettingsChange","isPlaying","state","gameOver","score","startGame","stopGame","resetGame","decrementTime","addBalloon","removeBalloon","updateBalloon","balloonAnimations","particleAnimations","wrapFunction","safeExecute","BALLOON_BLASTER","spawnBalloon","balloon","handleResetGame","UNKNOWN_ERROR","gameService","INITIALIZATION_ERROR","handleStartGame","currentBalloons","getState","balloons","forEach","id","cleanup","resetAnimations","setTimeout","startGameTimer","startBalloonSpawning","startPhysicsLoop","handleStopGame","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","gameSettingsModalProps","gameId","style","styles","container","children","scoreboardContainer","create","flex","position","top","left","right","zIndex","pointerEvents"],"sourceRoot":"../../../../src","sources":["games/balloon-blaster/BalloonBlaster.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, StyleSheet } from 'react-native';
|
|
5
|
+
import { GameControlButton, GameOverModal, GameSettingsModal } from "../../shared/helpers/index.js";
|
|
6
|
+
import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/GamesService.js";
|
|
7
|
+
import { GameBackground, GameGrid, ScoreBoard } from "./components/index.js";
|
|
8
|
+
import { useCandyCrushStore, useScore, useIsPlaying, useIsGameOver } from "./CandyCrushStore.js";
|
|
9
|
+
import { CANDY_CRUSH_COLORS } from "./CandyCrushConstants.js";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
export const CandyCrush = /*#__PURE__*/React.memo(({
|
|
12
|
+
settings,
|
|
13
|
+
onSettingsChange
|
|
14
|
+
}) => {
|
|
15
|
+
// Zustand store selectors for optimal re-renders
|
|
16
|
+
const score = useScore();
|
|
17
|
+
const isPlaying = useIsPlaying();
|
|
18
|
+
const isGameOver = useIsGameOver();
|
|
19
|
+
|
|
20
|
+
// Store actions (memoized to prevent re-creation)
|
|
21
|
+
const startGame = useCandyCrushStore(state => state.startGame);
|
|
22
|
+
const stopGame = useCandyCrushStore(state => state.stopGame);
|
|
23
|
+
const resetGame = useCandyCrushStore(state => state.resetGame);
|
|
24
|
+
const initializeGame = useCandyCrushStore(state => state.initializeGame);
|
|
25
|
+
const updateSettings = useCandyCrushStore(state => state.updateSettings);
|
|
26
|
+
|
|
27
|
+
// Update settings when they change
|
|
28
|
+
React.useEffect(() => {
|
|
29
|
+
const enableSounds = settings?.enableSounds ?? true;
|
|
30
|
+
const enableHaptics = settings?.enableHaptics ?? true;
|
|
31
|
+
updateSettings(enableSounds, enableHaptics);
|
|
32
|
+
}, [settings?.enableSounds, settings?.enableHaptics, updateSettings]);
|
|
33
|
+
|
|
34
|
+
// Initialize on mount and when difficulty changes
|
|
35
|
+
React.useEffect(() => {
|
|
36
|
+
const difficulty = settings?.difficulty || 'easy';
|
|
37
|
+
initializeGame(difficulty);
|
|
38
|
+
}, [settings?.difficulty, initializeGame]);
|
|
39
|
+
|
|
40
|
+
// Game control handlers
|
|
41
|
+
const handleStartGame = React.useCallback(() => {
|
|
42
|
+
startGame();
|
|
43
|
+
}, [startGame]);
|
|
44
|
+
const handleResetGame = React.useCallback(() => {
|
|
45
|
+
resetGame();
|
|
46
|
+
}, [resetGame]);
|
|
47
|
+
const handleStopGame = React.useCallback(() => {
|
|
48
|
+
stopGame();
|
|
49
|
+
}, [stopGame]);
|
|
50
|
+
|
|
51
|
+
// Memoized GameControlButton props
|
|
52
|
+
const gameControlButtonProps = React.useMemo(() => ({
|
|
53
|
+
isPlaying,
|
|
54
|
+
gameOver: isGameOver,
|
|
55
|
+
onStartGame: handleStartGame,
|
|
56
|
+
onStopGame: handleStopGame,
|
|
57
|
+
onResetGame: handleResetGame,
|
|
58
|
+
startButtonText: 'Start Crushing!',
|
|
59
|
+
startButtonSubtext: 'Match 3 or more',
|
|
60
|
+
startButtonColor: CANDY_CRUSH_COLORS.BUTTON_PRIMARY,
|
|
61
|
+
startButtonBorderColor: CANDY_CRUSH_COLORS.BUTTON_SECONDARY
|
|
62
|
+
}), [isPlaying, isGameOver, handleStartGame, handleStopGame, handleResetGame]);
|
|
63
|
+
|
|
64
|
+
// Memoized GameOverModal props
|
|
65
|
+
const gameOverModalProps = React.useMemo(() => ({
|
|
66
|
+
isVisible: isGameOver,
|
|
67
|
+
score,
|
|
68
|
+
onPlayAgain: handleResetGame,
|
|
69
|
+
buttonText: 'Crush Again!',
|
|
70
|
+
primaryColor: CANDY_CRUSH_COLORS.MODAL_PRIMARY,
|
|
71
|
+
borderColor: CANDY_CRUSH_COLORS.MODAL_BORDER,
|
|
72
|
+
buttonColor: CANDY_CRUSH_COLORS.MODAL_BUTTON,
|
|
73
|
+
buttonBorderColor: CANDY_CRUSH_COLORS.MODAL_BUTTON_BORDER,
|
|
74
|
+
scoreFormatter: s => `${s}`,
|
|
75
|
+
additionalInfo: 'Time\'s up!'
|
|
76
|
+
}), [isGameOver, score, handleResetGame]);
|
|
77
|
+
|
|
78
|
+
// Memoized GameSettingsModal props
|
|
79
|
+
const gameSettingsModalProps = React.useMemo(() => ({
|
|
80
|
+
gameId: GAME_IDS.CANDY_CRUSH,
|
|
81
|
+
settings: settings || DEFAULT_GAME_SETTINGS,
|
|
82
|
+
onSettingsChange
|
|
83
|
+
}), [settings, onSettingsChange]);
|
|
84
|
+
return /*#__PURE__*/_jsx(GameBackground, {
|
|
85
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
86
|
+
style: styles.container,
|
|
87
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
88
|
+
style: styles.gridContainer,
|
|
89
|
+
children: /*#__PURE__*/_jsx(GameGrid, {})
|
|
90
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
91
|
+
style: styles.scoreboardContainer,
|
|
92
|
+
children: /*#__PURE__*/_jsx(ScoreBoard, {})
|
|
93
|
+
}), /*#__PURE__*/_jsx(GameControlButton, {
|
|
94
|
+
...gameControlButtonProps
|
|
95
|
+
}), /*#__PURE__*/_jsx(GameOverModal, {
|
|
96
|
+
...gameOverModalProps
|
|
97
|
+
}), /*#__PURE__*/_jsx(GameSettingsModal, {
|
|
98
|
+
...gameSettingsModalProps
|
|
99
|
+
})]
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
CandyCrush.displayName = 'CandyCrush';
|
|
104
|
+
const styles = StyleSheet.create({
|
|
105
|
+
container: {
|
|
106
|
+
flex: 1
|
|
107
|
+
},
|
|
108
|
+
gridContainer: {
|
|
109
|
+
flex: 1,
|
|
110
|
+
justifyContent: 'center',
|
|
111
|
+
alignItems: 'center'
|
|
112
|
+
},
|
|
113
|
+
scoreboardContainer: {
|
|
114
|
+
position: 'absolute',
|
|
115
|
+
top: 0,
|
|
116
|
+
left: 0,
|
|
117
|
+
right: 0,
|
|
118
|
+
zIndex: 10
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=CandyCrush.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","GameBackground","GameGrid","ScoreBoard","useCandyCrushStore","useScore","useIsPlaying","useIsGameOver","CANDY_CRUSH_COLORS","jsx","_jsx","jsxs","_jsxs","CandyCrush","memo","settings","onSettingsChange","score","isPlaying","isGameOver","startGame","state","stopGame","resetGame","initializeGame","updateSettings","useEffect","enableSounds","enableHaptics","difficulty","handleStartGame","useCallback","handleResetGame","handleStopGame","gameControlButtonProps","useMemo","gameOver","onStartGame","onStopGame","onResetGame","startButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","MODAL_PRIMARY","borderColor","MODAL_BORDER","buttonColor","MODAL_BUTTON","buttonBorderColor","MODAL_BUTTON_BORDER","scoreFormatter","s","additionalInfo","gameSettingsModalProps","gameId","CANDY_CRUSH","children","style","styles","container","gridContainer","scoreboardContainer","displayName","create","flex","justifyContent","alignItems","position","top","left","right","zIndex"],"sourceRoot":"../../../../src","sources":["games/candy-crush/CandyCrush.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Candy Crush Game Constants
|
|
4
|
+
export const CANDY_CRUSH_GAME_CONFIG = {
|
|
5
|
+
GRID_SIZE: 8,
|
|
6
|
+
CANDY_TYPES: 6,
|
|
7
|
+
MIN_MATCH: 3,
|
|
8
|
+
ANIMATION_DURATION: 300,
|
|
9
|
+
FALL_DURATION: 400,
|
|
10
|
+
SWAP_DURATION: 200,
|
|
11
|
+
POINTS_PER_CANDY: 10,
|
|
12
|
+
COMBO_MULTIPLIER: 1.5,
|
|
13
|
+
SPECIAL_CANDY_THRESHOLD: 4
|
|
14
|
+
};
|
|
15
|
+
export const CANDY_COLORS = ['#FF3B30',
|
|
16
|
+
// Bright Red
|
|
17
|
+
'#34C759',
|
|
18
|
+
// Bright Green
|
|
19
|
+
'#007AFF',
|
|
20
|
+
// Bright Blue
|
|
21
|
+
'#FFCC00',
|
|
22
|
+
// Bright Yellow
|
|
23
|
+
'#9D4EDD',
|
|
24
|
+
// Bright Purple (replaced cyan)
|
|
25
|
+
'#FF6B9D' // Bright Pink
|
|
26
|
+
];
|
|
27
|
+
export const CANDY_TYPES = {
|
|
28
|
+
NORMAL: 'normal',
|
|
29
|
+
STRIPED_HORIZONTAL: 'striped_h',
|
|
30
|
+
STRIPED_VERTICAL: 'striped_v',
|
|
31
|
+
WRAPPED: 'wrapped',
|
|
32
|
+
COLOR_BOMB: 'color_bomb'
|
|
33
|
+
};
|
|
34
|
+
export const CANDY_CRUSH_COLORS = {
|
|
35
|
+
BACKGROUND: '#2C3E50',
|
|
36
|
+
GRID_BACKGROUND: 'rgba(255, 149, 0, 0.1)',
|
|
37
|
+
GRID_BORDER: 'rgba(255, 149, 0, 0.3)',
|
|
38
|
+
SELECTED: 'rgba(255, 149, 0, 0.5)',
|
|
39
|
+
BUTTON_PRIMARY: '#FF9500',
|
|
40
|
+
BUTTON_SECONDARY: '#E68600',
|
|
41
|
+
SCORE_BACKGROUND: 'rgba(255, 149, 0, 0.4)',
|
|
42
|
+
SCORE_TEXT: '#FFFFFF',
|
|
43
|
+
TIME_GOOD: '#FF9500',
|
|
44
|
+
TIME_WARNING: '#FF9500',
|
|
45
|
+
TIME_CRITICAL: '#FF9500',
|
|
46
|
+
COMBO_TEXT: '#FF9500',
|
|
47
|
+
MODAL_PRIMARY: 'rgba(255, 149, 0, 0.95)',
|
|
48
|
+
MODAL_BORDER: 'rgba(230, 134, 0, 0.9)',
|
|
49
|
+
MODAL_BUTTON: '#FF9500',
|
|
50
|
+
MODAL_BUTTON_BORDER: '#E68600'
|
|
51
|
+
};
|
|
52
|
+
export const DIFFICULTY_CONFIG = {
|
|
53
|
+
easy: {
|
|
54
|
+
gameDuration: 60,
|
|
55
|
+
// 1 minute
|
|
56
|
+
candyTypes: 4
|
|
57
|
+
},
|
|
58
|
+
medium: {
|
|
59
|
+
gameDuration: 180,
|
|
60
|
+
// 3 minutes
|
|
61
|
+
candyTypes: 5
|
|
62
|
+
},
|
|
63
|
+
hard: {
|
|
64
|
+
gameDuration: 300,
|
|
65
|
+
// 5 minutes
|
|
66
|
+
candyTypes: 6
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
export const CANDY_CRUSH_SOUNDS = {
|
|
70
|
+
MATCH: {
|
|
71
|
+
text: 'Pop!',
|
|
72
|
+
pitch: 1.2,
|
|
73
|
+
rate: 1.5
|
|
74
|
+
},
|
|
75
|
+
SWAP: {
|
|
76
|
+
text: 'Swap',
|
|
77
|
+
pitch: 1.0,
|
|
78
|
+
rate: 1.8
|
|
79
|
+
},
|
|
80
|
+
SPECIAL: {
|
|
81
|
+
text: 'Boom!',
|
|
82
|
+
pitch: 1.5,
|
|
83
|
+
rate: 2.0
|
|
84
|
+
},
|
|
85
|
+
COMBO: {
|
|
86
|
+
text: 'Combo!',
|
|
87
|
+
pitch: 1.8,
|
|
88
|
+
rate: 2.2
|
|
89
|
+
},
|
|
90
|
+
WIN: {
|
|
91
|
+
text: 'Victory!',
|
|
92
|
+
pitch: 1.6,
|
|
93
|
+
rate: 1.8
|
|
94
|
+
},
|
|
95
|
+
LOSE: {
|
|
96
|
+
text: 'Game Over',
|
|
97
|
+
pitch: 0.8,
|
|
98
|
+
rate: 1.2
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// Theme for settings modal
|
|
103
|
+
export const CANDY_CRUSH_THEME = {
|
|
104
|
+
backgroundColor: '#2C3E50',
|
|
105
|
+
headerBackgroundColor: '#FF9500',
|
|
106
|
+
headerTextColor: '#FFFFFF',
|
|
107
|
+
sectionBackgroundColor: 'rgba(255, 149, 0, 0.15)',
|
|
108
|
+
sectionTitleColor: '#FF9500',
|
|
109
|
+
buttonSelectedColor: '#FF9500',
|
|
110
|
+
buttonUnselectedColor: 'rgba(255, 149, 0, 0.2)',
|
|
111
|
+
buttonSelectedTextColor: '#FFFFFF',
|
|
112
|
+
buttonUnselectedTextColor: '#FF9500',
|
|
113
|
+
switchTrackColorFalse: 'rgba(255, 149, 0, 0.3)',
|
|
114
|
+
switchTrackColorTrue: '#FF9500',
|
|
115
|
+
switchThumbColor: '#FFFFFF',
|
|
116
|
+
infoTextColor: 'rgba(255, 255, 255, 0.7)'
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// Difficulty descriptions
|
|
120
|
+
export const CANDY_CRUSH_DIFFICULTY_DESCRIPTIONS = {
|
|
121
|
+
easy: '1 minute • 4 candy types',
|
|
122
|
+
medium: '3 minutes • 5 candy types',
|
|
123
|
+
hard: '5 minutes • 6 candy types'
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=CandyCrushConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CANDY_CRUSH_GAME_CONFIG","GRID_SIZE","CANDY_TYPES","MIN_MATCH","ANIMATION_DURATION","FALL_DURATION","SWAP_DURATION","POINTS_PER_CANDY","COMBO_MULTIPLIER","SPECIAL_CANDY_THRESHOLD","CANDY_COLORS","NORMAL","STRIPED_HORIZONTAL","STRIPED_VERTICAL","WRAPPED","COLOR_BOMB","CANDY_CRUSH_COLORS","BACKGROUND","GRID_BACKGROUND","GRID_BORDER","SELECTED","BUTTON_PRIMARY","BUTTON_SECONDARY","SCORE_BACKGROUND","SCORE_TEXT","TIME_GOOD","TIME_WARNING","TIME_CRITICAL","COMBO_TEXT","MODAL_PRIMARY","MODAL_BORDER","MODAL_BUTTON","MODAL_BUTTON_BORDER","DIFFICULTY_CONFIG","easy","gameDuration","candyTypes","medium","hard","CANDY_CRUSH_SOUNDS","MATCH","text","pitch","rate","SWAP","SPECIAL","COMBO","WIN","LOSE","CANDY_CRUSH_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","CANDY_CRUSH_DIFFICULTY_DESCRIPTIONS"],"sourceRoot":"../../../../src","sources":["games/candy-crush/CandyCrushConstants.ts"],"mappings":"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","ignoreList":[]}
|