react-native-games 1.1.0 → 1.3.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 +101 -30
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -167
- package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -182
- package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js +1 -318
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +1 -183
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js +1 -237
- package/lib/module/games/balloon-blaster/components/GameArea.js +1 -156
- package/lib/module/games/balloon-blaster/components/GameBackground.js +1 -476
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js +1 -112
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/index.js +1 -7
- package/lib/module/games/bike-racing/BikeRacing.js +1 -0
- package/lib/module/games/bike-racing/BikeRacing.js.map +1 -0
- package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -0
- package/lib/module/games/bike-racing/BikeRacingConstants.js.map +1 -0
- package/lib/module/games/bike-racing/BikeRacingService.js +1 -0
- package/lib/module/games/bike-racing/BikeRacingService.js.map +1 -0
- package/lib/module/games/bike-racing/BikeRacingStore.js +1 -0
- package/lib/module/games/bike-racing/BikeRacingStore.js.map +1 -0
- package/lib/module/games/bike-racing/components/BikeComponent.js +1 -0
- package/lib/module/games/bike-racing/components/BikeComponent.js.map +1 -0
- package/lib/module/games/bike-racing/components/GameBackground.js +1 -0
- package/lib/module/games/bike-racing/components/GameBackground.js.map +1 -0
- package/lib/module/games/bike-racing/components/ScoreBoard.js +1 -0
- package/lib/module/games/bike-racing/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/bike-racing/components/index.js +1 -0
- package/lib/module/games/bike-racing/components/index.js.map +1 -0
- package/lib/module/games/bike-racing/index.js +1 -0
- package/lib/module/games/bike-racing/index.js.map +1 -0
- package/lib/module/games/block-blast/BlockBlast.js +1 -0
- package/lib/module/games/block-blast/BlockBlast.js.map +1 -0
- package/lib/module/games/block-blast/BlockBlastConstants.js +1 -0
- package/lib/module/games/block-blast/BlockBlastConstants.js.map +1 -0
- package/lib/module/games/block-blast/BlockBlastService.js +1 -0
- package/lib/module/games/block-blast/BlockBlastService.js.map +1 -0
- package/lib/module/games/block-blast/BlockBlastStore.js +1 -0
- package/lib/module/games/block-blast/BlockBlastStore.js.map +1 -0
- package/lib/module/games/block-blast/components/BlockPieceComponent.js +1 -0
- package/lib/module/games/block-blast/components/BlockPieceComponent.js.map +1 -0
- package/lib/module/games/block-blast/components/GameArea.js +1 -0
- package/lib/module/games/block-blast/components/GameArea.js.map +1 -0
- package/lib/module/games/block-blast/components/GameBackground.js +1 -0
- package/lib/module/games/block-blast/components/GameBackground.js.map +1 -0
- package/lib/module/games/block-blast/components/GridComponent.js +1 -0
- package/lib/module/games/block-blast/components/GridComponent.js.map +1 -0
- package/lib/module/games/block-blast/components/ScoreBoard.js +1 -0
- package/lib/module/games/block-blast/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/block-blast/components/index.js +1 -0
- package/lib/module/games/block-blast/components/index.js.map +1 -0
- package/lib/module/games/block-blast/index.js +1 -0
- package/lib/module/games/block-blast/index.js.map +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooter.js.map +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterConstants.js.map +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterService.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterService.js.map +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterStore.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterStore.js.map +1 -0
- package/lib/module/games/bubble-shooter/components/GameArea.js +1 -0
- package/lib/module/games/bubble-shooter/components/GameArea.js.map +1 -0
- package/lib/module/games/bubble-shooter/components/GameBackground.js +1 -0
- package/lib/module/games/bubble-shooter/components/GameBackground.js.map +1 -0
- package/lib/module/games/bubble-shooter/components/ScoreBoard.js +1 -0
- package/lib/module/games/bubble-shooter/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/bubble-shooter/components/index.js +1 -0
- package/lib/module/games/bubble-shooter/components/index.js.map +1 -0
- package/lib/module/games/bubble-shooter/index.js +1 -0
- package/lib/module/games/bubble-shooter/index.js.map +1 -0
- package/lib/module/games/candy-crush/CandyCrush.js +1 -131
- package/lib/module/games/candy-crush/CandyCrush.js.map +1 -1
- package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -125
- package/lib/module/games/candy-crush/CandyCrushConstants.js.map +1 -1
- package/lib/module/games/candy-crush/CandyCrushService.js +1 -370
- package/lib/module/games/candy-crush/CandyCrushStore.js +1 -303
- package/lib/module/games/candy-crush/components/CandyItem.js +1 -191
- package/lib/module/games/candy-crush/components/GameBackground.js +1 -85
- package/lib/module/games/candy-crush/components/GameGrid.js +1 -314
- package/lib/module/games/candy-crush/components/ScoreBoard.js +1 -79
- package/lib/module/games/candy-crush/components/index.js +1 -7
- package/lib/module/games/candy-crush/index.js +1 -6
- package/lib/module/games/car-racing/CarRacing.js +1 -0
- package/lib/module/games/car-racing/CarRacing.js.map +1 -0
- package/lib/module/games/car-racing/CarRacingConstants.js +1 -0
- package/lib/module/games/car-racing/CarRacingConstants.js.map +1 -0
- package/lib/module/games/car-racing/CarRacingService.js +1 -0
- package/lib/module/games/car-racing/CarRacingService.js.map +1 -0
- package/lib/module/games/car-racing/CarRacingStore.js +1 -0
- package/lib/module/games/car-racing/CarRacingStore.js.map +1 -0
- package/lib/module/games/car-racing/components/CarComponent.js +1 -0
- package/lib/module/games/car-racing/components/CarComponent.js.map +1 -0
- package/lib/module/games/car-racing/components/GameBackground.js +1 -0
- package/lib/module/games/car-racing/components/GameBackground.js.map +1 -0
- package/lib/module/games/car-racing/components/ScoreBoard.js +1 -0
- package/lib/module/games/car-racing/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/car-racing/components/index.js +1 -0
- package/lib/module/games/car-racing/components/index.js.map +1 -0
- package/lib/module/games/colors-sort/ColorsSort.js +1 -143
- package/lib/module/games/colors-sort/ColorsSort.js.map +1 -1
- package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -72
- package/lib/module/games/colors-sort/ColorsSortConstants.js.map +1 -1
- package/lib/module/games/colors-sort/ColorsSortService.js +1 -255
- package/lib/module/games/colors-sort/ColorsSortStore.js +1 -257
- package/lib/module/games/colors-sort/ColorsSortStore.js.map +1 -1
- package/lib/module/games/colors-sort/components/ColorContainer.js +1 -140
- package/lib/module/games/colors-sort/components/GameBackground.js +1 -135
- package/lib/module/games/colors-sort/components/ScoreBoard.js +1 -70
- package/lib/module/games/colors-sort/components/index.js +1 -6
- package/lib/module/games/dino-jump/DinoJump.js +1 -209
- package/lib/module/games/dino-jump/DinoJump.js.map +1 -1
- package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -189
- package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -1
- package/lib/module/games/dino-jump/DinoJumpService.js +1 -270
- package/lib/module/games/dino-jump/DinoJumpStore.js +1 -381
- package/lib/module/games/dino-jump/components/DinoSprite.js +1 -418
- package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -1
- package/lib/module/games/dino-jump/components/GameArea.js +1 -68
- package/lib/module/games/dino-jump/components/GameBackground.js +1 -444
- package/lib/module/games/dino-jump/components/ObstacleSprite.js +1 -306
- package/lib/module/games/dino-jump/components/ScoreBoard.js +1 -105
- package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/dino-jump/components/StarSprite.js +1 -45
- package/lib/module/games/dino-jump/components/index.js +1 -9
- package/lib/module/games/flappy-bird/FlappyBird.js +1 -126
- package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -1
- package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -90
- package/lib/module/games/flappy-bird/FlappyBirdConstants.js.map +1 -1
- package/lib/module/games/flappy-bird/FlappyBirdStore.js +1 -300
- package/lib/module/games/flappy-bird/components/Bird.js +1 -87
- package/lib/module/games/flappy-bird/components/GameArea.js +1 -87
- package/lib/module/games/flappy-bird/components/GameBackground.js +1 -79
- package/lib/module/games/flappy-bird/components/Pipes.js +1 -172
- package/lib/module/games/flappy-bird/components/ScoreBoard.js +1 -73
- package/lib/module/games/flappy-bird/components/index.js +1 -8
- package/lib/module/games/fruit-merger/FruitMerger.js +1 -120
- package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -1
- package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -119
- package/lib/module/games/fruit-merger/FruitMergerConstants.js.map +1 -1
- package/lib/module/games/fruit-merger/FruitMergerService.js +1 -13
- package/lib/module/games/fruit-merger/FruitMergerStore.js +1 -315
- package/lib/module/games/fruit-merger/components/FruitItem.js +1 -102
- package/lib/module/games/fruit-merger/components/GameArea.js +1 -103
- package/lib/module/games/fruit-merger/components/GameBackground.js +1 -498
- package/lib/module/games/fruit-merger/components/ScoreBoard.js +1 -58
- package/lib/module/games/fruit-merger/components/index.js +1 -7
- package/lib/module/games/fruit-ninja/FruitNinja.js +1 -134
- package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -148
- package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaService.js +1 -311
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js +1 -191
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/FruitComponent.js +1 -99
- package/lib/module/games/fruit-ninja/components/GameArea.js +1 -215
- package/lib/module/games/fruit-ninja/components/GameBackground.js +1 -1267
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js +1 -92
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/index.js +1 -7
- package/lib/module/games/game-2048/Game2048.js +1 -149
- package/lib/module/games/game-2048/Game2048.js.map +1 -1
- package/lib/module/games/game-2048/Game2048Constants.js +1 -263
- package/lib/module/games/game-2048/Game2048Constants.js.map +1 -1
- package/lib/module/games/game-2048/Game2048Service.js +1 -457
- package/lib/module/games/game-2048/Game2048Store.js +1 -236
- package/lib/module/games/game-2048/components/GameBackground.js +1 -247
- package/lib/module/games/game-2048/components/GameGrid.js +1 -139
- package/lib/module/games/game-2048/components/GameTile.js +1 -72
- package/lib/module/games/game-2048/components/ScoreBoard.js +1 -52
- package/lib/module/games/game-2048/components/index.js +1 -7
- package/lib/module/games/maze-runner/MazeRunner.js +1 -267
- package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
- package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -100
- package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -1
- package/lib/module/games/maze-runner/MazeRunnerService.js +1 -586
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +1 -150
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js +1 -370
- package/lib/module/games/maze-runner/components/GameBackground.js +1 -175
- package/lib/module/games/maze-runner/components/ScoreBoard.js +1 -61
- package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +1 -209
- package/lib/module/games/maze-runner/components/StaticGameBackground.js +1 -169
- package/lib/module/games/maze-runner/components/WallComponent.js +1 -91
- package/lib/module/games/maze-runner/components/index.js +1 -8
- package/lib/module/games/perfect-circle/PerfectCircle.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircle.js.map +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleConstants.js.map +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleService.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleService.js.map +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleStore.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleStore.js.map +1 -0
- package/lib/module/games/perfect-circle/components/DrawingCanvas.js +1 -0
- package/lib/module/games/perfect-circle/components/DrawingCanvas.js.map +1 -0
- package/lib/module/games/perfect-circle/components/GameBackground.js +1 -0
- package/lib/module/games/perfect-circle/components/GameBackground.js.map +1 -0
- package/lib/module/games/perfect-circle/components/ScoreBoard.js +1 -0
- package/lib/module/games/perfect-circle/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/perfect-circle/index.js +1 -0
- package/lib/module/games/perfect-circle/index.js.map +1 -0
- package/lib/module/games/popit-fidget/PopitFidget.js +1 -285
- package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -113
- package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetService.js +1 -132
- package/lib/module/games/popit-fidget/PopitFidgetStore.js +1 -125
- package/lib/module/games/popit-fidget/components/BubbleComponent.js +1 -198
- package/lib/module/games/popit-fidget/components/FidgetGrid.js +1 -165
- package/lib/module/games/popit-fidget/components/GameBackground.js +1 -177
- package/lib/module/games/popit-fidget/components/ScoreBoard.js +1 -61
- package/lib/module/games/popit-fidget/components/index.js +1 -7
- package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -159
- package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -207
- package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js.map +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbersService.js +1 -248
- package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +1 -274
- package/lib/module/games/sliding-numbers/components/GameBackground.js +1 -259
- package/lib/module/games/sliding-numbers/components/NumbersGrid.js +1 -174
- package/lib/module/games/sliding-numbers/components/NumbersTile.js +1 -116
- package/lib/module/games/sliding-numbers/components/ScoreBoard.js +1 -64
- package/lib/module/games/sliding-numbers/components/index.js +1 -7
- package/lib/module/games/snake/Snake.js +1 -189
- package/lib/module/games/snake/Snake.js.map +1 -1
- package/lib/module/games/snake/SnakeConstants.js +1 -138
- package/lib/module/games/snake/SnakeConstants.js.map +1 -1
- package/lib/module/games/snake/SnakeService.js +1 -148
- package/lib/module/games/snake/SnakeStore.js +1 -182
- package/lib/module/games/snake/SnakeStore.js.map +1 -1
- package/lib/module/games/snake/components/GameBackground.js +1 -221
- package/lib/module/games/snake/components/GameGrid.js +1 -153
- package/lib/module/games/snake/components/ScoreBoard.js +1 -51
- package/lib/module/games/snake/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/snake/components/index.js +1 -6
- package/lib/module/games/snake/index.js +1 -6
- package/lib/module/games/space-fighter/SpaceFighter.js +1 -165
- package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -108
- package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterService.js +1 -326
- package/lib/module/games/space-fighter/SpaceFighterStore.js +1 -209
- package/lib/module/games/space-fighter/components/AsteroidComponent.js +1 -113
- package/lib/module/games/space-fighter/components/GameArea.js +1 -289
- package/lib/module/games/space-fighter/components/GameBackground.js +1 -239
- package/lib/module/games/space-fighter/components/ScoreBoard.js +1 -136
- package/lib/module/games/space-fighter/components/Spacecraft3D.js +1 -202
- package/lib/module/games/space-fighter/components/SpacecraftPath.js +1 -52
- package/lib/module/games/space-fighter/components/index.js +1 -9
- package/lib/module/games/whack-a-mole/WhackAMole.js +1 -270
- package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -115
- package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleService.js +1 -120
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js +1 -172
- package/lib/module/games/whack-a-mole/components/GameBackground.js +1 -477
- package/lib/module/games/whack-a-mole/components/GameGrid.js +1 -97
- package/lib/module/games/whack-a-mole/components/GameHole.js +1 -196
- package/lib/module/games/whack-a-mole/components/MoleCharacter.js +1 -241
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js +1 -67
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/whack-a-mole/components/index.js +1 -8
- package/lib/module/helpers/AnimationFrame.js +1 -120
- package/lib/module/helpers/AnimationTracker.js +1 -89
- package/lib/module/helpers/ErrorHandler.js +1 -269
- package/lib/module/helpers/GameControlButton.js +1 -219
- package/lib/module/helpers/GameOverModal.js +1 -144
- package/lib/module/helpers/GameOverModal.js.map +1 -1
- package/lib/module/helpers/GameSettingsModal.js +1 -287
- package/lib/module/helpers/GameSettingsModal.js.map +1 -1
- package/lib/module/helpers/ParticleBlast.js +1 -134
- package/lib/module/helpers/ScoreBoardContainer.js +1 -34
- package/lib/module/helpers/ScoreBoardContainer.js.map +1 -1
- package/lib/module/helpers/index.js +1 -12
- package/lib/module/index.js +1 -22
- package/lib/module/index.js.map +1 -1
- package/lib/module/services/GamesConstants.js +1 -178
- package/lib/module/services/GamesConstants.js.map +1 -1
- package/lib/module/services/GamesService.js +1 -112
- package/lib/module/services/GamesService.js.map +1 -1
- package/lib/module/services/HapticsService.js +1 -77
- package/lib/module/services/ScoringService.js +1 -0
- package/lib/module/services/ScoringService.js.map +1 -0
- package/lib/module/services/SoundsService.js +1 -302
- package/lib/module/services/SoundsService.js.map +1 -1
- package/lib/module/services/UtilsService.js +1 -32
- package/lib/module/services/UtilsService.js.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +4 -0
- package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +76 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +22 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +72 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +12 -0
- package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +9 -0
- package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/components/index.d.ts +4 -0
- package/lib/typescript/src/games/bike-racing/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/index.d.ts +5 -0
- package/lib/typescript/src/games/bike-racing/index.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +4 -0
- package/lib/typescript/src/games/block-blast/BlockBlast.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +82 -0
- package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +17 -0
- package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +62 -0
- package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +14 -0
- package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +12 -0
- package/lib/typescript/src/games/block-blast/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +17 -0
- package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/index.d.ts +6 -0
- package/lib/typescript/src/games/block-blast/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/index.d.ts +5 -0
- package/lib/typescript/src/games/block-blast/index.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +4 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +61 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +26 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +62 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +9 -0
- package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts +8 -0
- package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/components/index.d.ts +4 -0
- package/lib/typescript/src/games/bubble-shooter/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/index.d.ts +3 -0
- package/lib/typescript/src/games/bubble-shooter/index.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -1
- package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +7 -7
- package/lib/typescript/src/games/car-racing/CarRacing.d.ts +4 -0
- package/lib/typescript/src/games/car-racing/CarRacing.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +76 -0
- package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +22 -0
- package/lib/typescript/src/games/car-racing/CarRacingService.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +72 -0
- package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +13 -0
- package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +9 -0
- package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/components/index.d.ts +4 -0
- package/lib/typescript/src/games/car-racing/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts.map +1 -1
- package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts.map +1 -1
- package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -1
- package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -1
- package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -1
- package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
- package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +4 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +81 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +14 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +40 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +9 -0
- package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts +8 -0
- package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/index.d.ts +3 -0
- package/lib/typescript/src/games/perfect-circle/index.d.ts.map +1 -0
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -1
- package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -1
- package/lib/typescript/src/games/snake/SnakeStore.d.ts +4 -0
- package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -1
- package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -1
- 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/games/whack-a-mole/WhackAMoleConstants.d.ts +1 -1
- package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/helpers/GameOverModal.d.ts +3 -0
- package/lib/typescript/src/helpers/GameOverModal.d.ts.map +1 -1
- package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +6 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesConstants.d.ts +57 -7
- package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesService.d.ts +2 -1
- package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
- package/lib/typescript/src/services/ScoringService.d.ts +2 -0
- package/lib/typescript/src/services/ScoringService.d.ts.map +1 -0
- package/lib/typescript/src/services/SoundsService.d.ts +88 -0
- package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
- package/lib/typescript/src/services/UtilsService.d.ts +12 -1
- package/lib/typescript/src/services/UtilsService.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,29 +2,85 @@
|
|
|
2
2
|
|
|
3
3
|
**react-native-games** is a collection of 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 across iOS, Android, and Web platforms.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin: 20px 0;">
|
|
6
|
+
|
|
7
|
+
<div>
|
|
8
|
+
<strong>🚀 High Performance</strong><br/>
|
|
9
|
+
• 60fps gameplay with React Native Skia<br/>
|
|
10
|
+
• Optimized animations using Reanimated 3<br/>
|
|
11
|
+
• Delta time physics loops<br/>
|
|
12
|
+
• React.memo optimizations<br/>
|
|
13
|
+
• Minimal re-renders with direct store subscriptions
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div>
|
|
17
|
+
<strong>📱 Cross-Platform</strong><br/>
|
|
18
|
+
• iOS, Android, and Web support<br/>
|
|
19
|
+
• Consistent performance across platforms<br/>
|
|
20
|
+
• Responsive design for all screen sizes<br/>
|
|
21
|
+
• Dynamic offset handling for notches<br/>
|
|
22
|
+
• Adaptive UI components
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<div>
|
|
26
|
+
<strong>🎵 Rich Audio & Haptics</strong><br/>
|
|
27
|
+
• Sound effects and speech synthesis<br/>
|
|
28
|
+
• Haptic feedback for immersive experience<br/>
|
|
29
|
+
• Configurable audio settings<br/>
|
|
30
|
+
• Per-game sound customization
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<div>
|
|
34
|
+
<strong>🎯 Customizable</strong><br/>
|
|
35
|
+
• Multiple difficulty levels<br/>
|
|
36
|
+
• Adjustable game parameters<br/>
|
|
37
|
+
• Persistent settings storage<br/>
|
|
38
|
+
• Unified settings interface
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div>
|
|
42
|
+
<strong>🎮 Game Features</strong><br/>
|
|
43
|
+
• Physics simulation and collisions<br/>
|
|
44
|
+
• Particle systems and visual effects<br/>
|
|
45
|
+
• Procedural generation (mazes, obstacles)<br/>
|
|
46
|
+
• Score systems and achievements<br/>
|
|
47
|
+
• Progressive difficulty scaling
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<div>
|
|
51
|
+
<strong>🛠️ Developer Friendly</strong><br/>
|
|
52
|
+
• TypeScript support throughout<br/>
|
|
53
|
+
• Shared components (GameControlButton, ScoreBoard)<br/>
|
|
54
|
+
• Consistent API across all games<br/>
|
|
55
|
+
• Easy integration and customization<br/>
|
|
56
|
+
• Comprehensive documentation
|
|
57
|
+
</div>
|
|
58
|
+
|
|
59
|
+
</div>
|
|
9
60
|
|
|
10
61
|
## 🎯 Available Games
|
|
11
62
|
|
|
12
63
|
| Screenshot | Game Details |
|
|
13
64
|
|------------|--------------|
|
|
14
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
15
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
16
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
17
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
18
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
19
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
20
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
21
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
22
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
23
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
24
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
25
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
26
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
27
|
-
| <img src="https://cdn.worklage.com/playtura/screenshots/
|
|
65
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/block-blast.png" alt="Block Blast" width="120"/> | **🧩 Block Blast**<br/>Place blocks on grid to clear lines - strategic puzzle challenge!<br/><br/>• Tetris-style block placement puzzle<br/>• Clear lines horizontally or vertically<br/>• Strategic planning required for high scores<br/>• Difficulty affects available block shapes |
|
|
66
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/bubble-shooter.png" alt="Bubble Shooter" width="120"/> | **🎯 Bubble Shooter**<br/>Match 3+ bubbles of the same color - classic puzzle fun!<br/><br/>• Aim and shoot bubbles to match colors<br/>• Clear clusters of 3 or more bubbles<br/>• Physics-based bubble bouncing<br/>• Difficulty affects bubble speed and patterns |
|
|
67
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/car-racing.png" alt="Car Racing" width="120"/> | **🏎️ Car Racing**<br/>Dodge traffic and race through lanes - test your reflexes!<br/><br/>• Lane-based racing with traffic dodging<br/>• Swipe to change lanes quickly<br/>• Collect coins and power-ups<br/>• Difficulty affects traffic density and speed |
|
|
68
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/fruit-ninja.png" alt="Fruit Ninja" width="120"/> | **🍎 Fruit Ninja**<br/>Slice flying fruits with finger swipes - avoid the bombs!<br/><br/>• Swipe-based fruit slicing mechanics<br/>• Physics-based particle effects and combos<br/>• Avoid bombs for survival<br/>• Difficulty affects fruit spawn rate and bomb frequency |
|
|
69
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/popit-fidget.png" alt="Popit Fidget" width="120"/> | **🫧 Popit Fidget**<br/>Pop satisfying bubbles in this relaxing fidget toy simulation!<br/><br/>• Relaxing bubble popping experience<br/>• Satisfying sound effects and haptics<br/>• Rainbow gradient background<br/>• Different bubble patterns and colors |
|
|
70
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/flappy-bird.png" alt="Flappy Bird" width="120"/> | **🐦 Flappy Bird**<br/>Tap to flap and navigate through pipes - classic arcade challenge!<br/><br/>• Classic tap-to-flap mechanics<br/>• Gravity physics and collision detection<br/>• Navigate through pipe gaps<br/>• Difficulty affects pipe gap size and speed |
|
|
71
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/colors-sort.png" alt="Colors Sort" width="120"/> | **🎨 Colors Sort**<br/>Sort colored liquids into matching tubes - challenging logic puzzle!<br/><br/>• Pour liquids between tubes<br/>• Match all colors in separate tubes<br/>• Satisfying pour animations<br/>• Difficulty affects number of tubes and colors |
|
|
72
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/dino-jump.png" alt="Dino Jump" width="120"/> | **🦖 Dino Jump**<br/>Jump over obstacles and collect stars for lives - endless runner!<br/><br/>• Chrome dino-inspired endless runner<br/>• Tap to jump over obstacles<br/>• Collect stars for extra lives (max 3)<br/>• Difficulty affects obstacle spawn rate and speed |
|
|
73
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/candy-crush.png" alt="Candy Crush" width="120"/> | **🍬 Candy Crush**<br/>Match colorful candies in rows to score points - sweet puzzle fun!<br/><br/>• Match-3 puzzle mechanics<br/>• Create special candies with 4+ matches<br/>• Cascading combos and animations<br/>• Difficulty affects level objectives |
|
|
74
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/whack-a-mole.png" alt="Whack A Mole" width="120"/> | **🐱 Whack A Mole**<br/>Whack cute cats popping from holes - test your lightning reflexes!<br/><br/>• Fast-paced whacking action<br/>• Grid sizes: easy/medium 3x3, hard 4x4<br/>• Cat spawn intervals vary by difficulty<br/>• Difficulty affects speed and grid size |
|
|
75
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/balloon-blaster.png" alt="Balloon Blaster" width="120"/> | **🎈 Balloon Blaster**<br/>Pop rising balloons before they escape - quick taps and swipes win!<br/><br/>• Swipe or tap to pop balloons<br/>• Balloons rise from bottom to top<br/>• Particle effects on pop<br/>• Difficulty affects balloon speed and spawn rate |
|
|
76
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/space-fighter.png" alt="Space Fighter" width="120"/> | **🚀 Space Fighter**<br/>Pilot your spaceship through asteroid fields - endless space survival!<br/><br/>• Drag controls for spacecraft movement<br/>• Dodge asteroids in endless space<br/>• 1-second collision immunity<br/>• Difficulty affects asteroid speed and frequency |
|
|
77
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/bike-racing.png" alt="Bike Racing" width="120"/> | **🏍️ Bike Racing**<br/>Race on bikes through traffic - faster and more challenging!<br/><br/>• High-speed bike racing<br/>• Lane-based traffic dodging<br/>• Faster than car racing<br/>• Difficulty affects traffic and speed |
|
|
78
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/maze-runner.png" alt="Maze Runner" width="120"/> | **🧩 Maze Runner**<br/>Navigate ball through procedural mazes - tilt and physics controls!<br/><br/>• Procedurally generated mazes<br/>• Tilt-based physics controls<br/>• Grid sizes: easy 8x8, medium 10x10, hard 12x12<br/>• Difficulty affects maze complexity |
|
|
79
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/sliding-numbers.png" alt="Sliding Numbers" width="120"/> | **🔢 Sliding Numbers**<br/>Slide numbered tiles to solve puzzles - classic sliding puzzle game!<br/><br/>• Classic 15-puzzle mechanics<br/>• Grid sizes: easy 3x3, medium 4x4, hard 5x5<br/>• Timer challenge mode<br/>• Smooth tile sliding animations |
|
|
80
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/game-2048.png" alt="2048" width="120"/> | **🎮 2048**<br/>Merge matching tiles to reach 2048 and beyond - addictive puzzle!<br/><br/>• Swipe to merge matching tiles<br/>• Reach 2048 tile to win<br/>• Continue for higher scores<br/>• Difficulty affects starting values |
|
|
81
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/fruit-merger.png" alt="Fruit Merger" width="120"/> | **🍉 Fruit Merger**<br/>Drop and merge fruits to create bigger ones - reach the watermelon!<br/><br/>• Physics-based fruit dropping<br/>• Merge fruits to evolve them<br/>• Reach watermelon for victory<br/>• Combo system for multiple merges |
|
|
82
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/snake.png" alt="Snake & Eggs" width="120"/> | **🐍 Snake & Eggs**<br/>Eat eggs to grow longer and avoid walls - classic snake gameplay!<br/><br/>• Classic snake mechanics<br/>• Swipe or tap to change direction<br/>• Grow by eating eggs<br/>• Difficulty affects snake speed |
|
|
83
|
+
| <img src="https://cdn.worklage.com/playtura/screenshots/perfect-circle.png" alt="Perfect Circle" width="120"/> | **⭕ Perfect Circle**<br/>Draw the most perfect circle you can - test your precision!<br/><br/>• Draw circles with your finger<br/>• Precision scoring system<br/>• Challenge your drawing skills<br/>• Difficulty affects scoring strictness |
|
|
28
84
|
|
|
29
85
|
## 📦 Installation
|
|
30
86
|
|
|
@@ -50,7 +106,7 @@ Follow the installation guides for each peer dependency:
|
|
|
50
106
|
- **[react-native-reanimated](https://docs.swmansion.com/react-native-reanimated/docs/fundamentals/getting-started)** - Animations
|
|
51
107
|
- **[react-native-gesture-handler](https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation)** - Gestures
|
|
52
108
|
- **[expo-speech](https://docs.expo.dev/versions/latest/sdk/speech/)** - Sounds
|
|
53
|
-
- **[expo-haptics](https://docs.expo.dev/versions/latest/sdk/haptics/)** -
|
|
109
|
+
- **[expo-haptics](https://docs.expo.dev/versions/latest/sdk/haptics/)** - Haptics
|
|
54
110
|
|
|
55
111
|
## 🚀 Usage
|
|
56
112
|
|
|
@@ -61,14 +117,14 @@ For basic usage without settings persistence:
|
|
|
61
117
|
```tsx
|
|
62
118
|
import React, { useState } from 'react';
|
|
63
119
|
import { View } from 'react-native';
|
|
64
|
-
import { DEFAULT_GAME_SETTINGS,
|
|
120
|
+
import { DEFAULT_GAME_SETTINGS, FruitNinja } from 'react-native-games';
|
|
65
121
|
|
|
66
122
|
export default function GameScreen() {
|
|
67
123
|
const [settings, setSettings] = useState(DEFAULT_GAME_SETTINGS);
|
|
68
124
|
|
|
69
125
|
return (
|
|
70
126
|
<View style={{ flex: 1 }}>
|
|
71
|
-
<
|
|
127
|
+
<FruitNinja settings={settings} onSettingsChange={setSettings} />
|
|
72
128
|
</View>
|
|
73
129
|
);
|
|
74
130
|
}
|
|
@@ -126,20 +182,25 @@ All games use the same props interface:
|
|
|
126
182
|
```tsx
|
|
127
183
|
// Import any game you want
|
|
128
184
|
import {
|
|
185
|
+
BlockBlast,
|
|
186
|
+
BubbleShooter,
|
|
187
|
+
CarRacing,
|
|
129
188
|
FruitNinja,
|
|
130
|
-
|
|
189
|
+
PopitFidget,
|
|
131
190
|
FlappyBird,
|
|
132
191
|
ColorsSort,
|
|
133
192
|
DinoJump,
|
|
134
|
-
|
|
193
|
+
CandyCrush,
|
|
135
194
|
WhackAMole,
|
|
136
195
|
BalloonBlaster,
|
|
137
196
|
SpaceFighter,
|
|
197
|
+
BikeRacing,
|
|
138
198
|
MazeRunner,
|
|
139
199
|
SlidingNumbers,
|
|
140
200
|
Game2048,
|
|
141
201
|
FruitMerger,
|
|
142
|
-
Snake
|
|
202
|
+
Snake,
|
|
203
|
+
PerfectCircle
|
|
143
204
|
} from 'react-native-games';
|
|
144
205
|
|
|
145
206
|
// All games accept the same props:
|
|
@@ -203,21 +264,26 @@ import {
|
|
|
203
264
|
type GameDefinition,
|
|
204
265
|
type GameComponent,
|
|
205
266
|
|
|
206
|
-
// All Game Components
|
|
267
|
+
// All Game Components (19 total)
|
|
268
|
+
BlockBlast,
|
|
269
|
+
BubbleShooter,
|
|
270
|
+
CarRacing,
|
|
207
271
|
FruitNinja,
|
|
208
|
-
|
|
272
|
+
PopitFidget,
|
|
209
273
|
FlappyBird,
|
|
210
274
|
ColorsSort,
|
|
211
275
|
DinoJump,
|
|
212
|
-
|
|
276
|
+
CandyCrush,
|
|
213
277
|
WhackAMole,
|
|
214
278
|
BalloonBlaster,
|
|
215
279
|
SpaceFighter,
|
|
280
|
+
BikeRacing,
|
|
216
281
|
MazeRunner,
|
|
217
282
|
SlidingNumbers,
|
|
218
283
|
Game2048,
|
|
219
284
|
FruitMerger,
|
|
220
|
-
Snake
|
|
285
|
+
Snake,
|
|
286
|
+
PerfectCircle
|
|
221
287
|
} from 'react-native-games';
|
|
222
288
|
```
|
|
223
289
|
|
|
@@ -226,20 +292,25 @@ import {
|
|
|
226
292
|
All available game identifiers:
|
|
227
293
|
|
|
228
294
|
```tsx
|
|
295
|
+
GAME_IDS.BLOCK_BLAST // 'block-blast'
|
|
296
|
+
GAME_IDS.BUBBLE_SHOOTER // 'bubble-shooter'
|
|
297
|
+
GAME_IDS.CAR_RACING // 'car-racing'
|
|
229
298
|
GAME_IDS.FRUIT_NINJA // 'fruit-ninja'
|
|
230
|
-
GAME_IDS.
|
|
299
|
+
GAME_IDS.POPIT_FIDGET // 'popit-fidget'
|
|
231
300
|
GAME_IDS.FLAPPY_BIRD // 'flappy-bird'
|
|
232
301
|
GAME_IDS.COLORS_SORT // 'colors-sort'
|
|
233
302
|
GAME_IDS.DINO_JUMP // 'dino-jump'
|
|
234
|
-
GAME_IDS.
|
|
303
|
+
GAME_IDS.CANDY_CRUSH // 'candy-crush'
|
|
235
304
|
GAME_IDS.WHACK_A_MOLE // 'whack-a-mole'
|
|
236
305
|
GAME_IDS.BALLOON_BLASTER // 'balloon-blaster'
|
|
237
306
|
GAME_IDS.SPACE_FIGHTER // 'space-fighter'
|
|
307
|
+
GAME_IDS.BIKE_RACING // 'bike-racing'
|
|
238
308
|
GAME_IDS.MAZE_RUNNER // 'maze-runner'
|
|
239
309
|
GAME_IDS.SLIDING_NUMBERS // 'sliding-numbers'
|
|
240
310
|
GAME_IDS.GAME_2048 // 'game-2048'
|
|
241
311
|
GAME_IDS.FRUIT_MERGER // 'fruit-merger'
|
|
242
312
|
GAME_IDS.SNAKE // 'snake'
|
|
313
|
+
GAME_IDS.PERFECT_CIRCLE // 'perfect-circle'
|
|
243
314
|
```
|
|
244
315
|
|
|
245
316
|
### DEFAULT_GAME_SETTINGS
|
|
@@ -1,167 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import React, { useEffect, useMemo, useCallback } from 'react';
|
|
4
|
-
import { View, StyleSheet } from 'react-native';
|
|
5
|
-
import { GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
6
|
-
import { useBalloonBlasterStore } from "./BalloonBlasterStore.js";
|
|
7
|
-
import { createBalloonBlasterService } from "./BalloonBlasterService.js";
|
|
8
|
-
import { ScoreBoard, GameArea, GameBackground } from "./components/index.js";
|
|
9
|
-
import { GameControlButton, GameOverModal, useAnimationTrackers, useGameErrorHandler, GameErrorType } from "../../helpers/index.js";
|
|
10
|
-
import { GameSettingsModal } from "../../helpers/index.js";
|
|
11
|
-
import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/UtilsService.js";
|
|
12
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
-
export const BalloonBlaster = /*#__PURE__*/React.memo(({
|
|
14
|
-
settings,
|
|
15
|
-
onSettingsChange
|
|
16
|
-
}) => {
|
|
17
|
-
// Read UI-critical state independently to minimize re-renders
|
|
18
|
-
const isPlaying = useBalloonBlasterStore(state => state.isPlaying);
|
|
19
|
-
const gameOver = useBalloonBlasterStore(state => state.gameOver);
|
|
20
|
-
const score = useBalloonBlasterStore(state => state.score);
|
|
21
|
-
|
|
22
|
-
// Get store actions independently (these don't cause re-renders)
|
|
23
|
-
const startGame = useBalloonBlasterStore(state => state.startGame);
|
|
24
|
-
const stopGame = useBalloonBlasterStore(state => state.stopGame);
|
|
25
|
-
const resetGame = useBalloonBlasterStore(state => state.resetGame);
|
|
26
|
-
const decrementTime = useBalloonBlasterStore(state => state.decrementTime);
|
|
27
|
-
const addBalloon = useBalloonBlasterStore(state => state.addBalloon);
|
|
28
|
-
const removeBalloon = useBalloonBlasterStore(state => state.removeBalloon);
|
|
29
|
-
const updateBalloon = useBalloonBlasterStore(state => state.updateBalloon);
|
|
30
|
-
|
|
31
|
-
// Use shared animation tracking utility
|
|
32
|
-
const {
|
|
33
|
-
balloonAnimations,
|
|
34
|
-
particleAnimations
|
|
35
|
-
} = useAnimationTrackers(['balloonAnimations', 'particleAnimations']);
|
|
36
|
-
|
|
37
|
-
// Error handling for the game
|
|
38
|
-
const {
|
|
39
|
-
wrapFunction,
|
|
40
|
-
safeExecute
|
|
41
|
-
} = useGameErrorHandler(GAME_IDS.BALLOON_BLASTER);
|
|
42
|
-
|
|
43
|
-
// Memoized balloon spawning callback
|
|
44
|
-
const spawnBalloon = useCallback(balloon => {
|
|
45
|
-
addBalloon(balloon);
|
|
46
|
-
}, [addBalloon]);
|
|
47
|
-
|
|
48
|
-
// Memoized game control functions with error handling
|
|
49
|
-
const handleResetGame = useCallback(wrapFunction(() => {
|
|
50
|
-
resetGame();
|
|
51
|
-
}, GameErrorType.UNKNOWN_ERROR), [wrapFunction, resetGame]);
|
|
52
|
-
|
|
53
|
-
// Memoized game service creation to prevent recreation
|
|
54
|
-
const gameService = useMemo(() => {
|
|
55
|
-
return safeExecute(() => createBalloonBlasterService(balloonAnimations, particleAnimations), createBalloonBlasterService(balloonAnimations, particleAnimations),
|
|
56
|
-
// Fallback to direct creation
|
|
57
|
-
GameErrorType.INITIALIZATION_ERROR);
|
|
58
|
-
}, [balloonAnimations, particleAnimations, safeExecute]);
|
|
59
|
-
const handleStartGame = useCallback(wrapFunction(() => {
|
|
60
|
-
// AGGRESSIVE cleanup - force clear everything
|
|
61
|
-
resetGame();
|
|
62
|
-
|
|
63
|
-
// Force clear any existing balloons immediately
|
|
64
|
-
const currentBalloons = useBalloonBlasterStore.getState().balloons;
|
|
65
|
-
currentBalloons.forEach(balloon => removeBalloon(balloon.id));
|
|
66
|
-
|
|
67
|
-
// Clean up service
|
|
68
|
-
if (gameService) {
|
|
69
|
-
gameService.cleanup();
|
|
70
|
-
gameService.resetAnimations();
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// Minimal delay to ensure complete cleanup
|
|
74
|
-
setTimeout(() => {
|
|
75
|
-
startGame(); // Store uses fixed 60s duration internally
|
|
76
|
-
if (gameService) {
|
|
77
|
-
gameService.startGameTimer(decrementTime);
|
|
78
|
-
gameService.startBalloonSpawning(spawnBalloon, 600); // Even faster spawn interval
|
|
79
|
-
gameService.startPhysicsLoop(updateBalloon, removeBalloon, () => useBalloonBlasterStore.getState().balloons);
|
|
80
|
-
}
|
|
81
|
-
}, 50); // Minimal delay for immediate game start
|
|
82
|
-
}, GameErrorType.INITIALIZATION_ERROR), [wrapFunction, resetGame, removeBalloon, gameService, startGame, decrementTime, spawnBalloon, updateBalloon]);
|
|
83
|
-
const handleStopGame = useCallback(wrapFunction(() => {
|
|
84
|
-
stopGame();
|
|
85
|
-
if (gameService) {
|
|
86
|
-
gameService.cleanup();
|
|
87
|
-
gameService.resetAnimations();
|
|
88
|
-
}
|
|
89
|
-
}, GameErrorType.UNKNOWN_ERROR), [wrapFunction, stopGame, gameService]);
|
|
90
|
-
|
|
91
|
-
// Initialize game settings on mount
|
|
92
|
-
useEffect(() => {
|
|
93
|
-
return () => {
|
|
94
|
-
handleResetGame();
|
|
95
|
-
};
|
|
96
|
-
}, [handleResetGame]);
|
|
97
|
-
|
|
98
|
-
// Auto-stop balloon spawning when game over state changes
|
|
99
|
-
useEffect(() => {
|
|
100
|
-
if (gameOver && gameService) {
|
|
101
|
-
// Stop all timers and physics when game over
|
|
102
|
-
gameService.cleanup();
|
|
103
|
-
}
|
|
104
|
-
}, [gameOver, gameService]);
|
|
105
|
-
|
|
106
|
-
// Memoized GameControlButton props to prevent unnecessary re-renders
|
|
107
|
-
const gameControlButtonProps = useMemo(() => ({
|
|
108
|
-
isPlaying,
|
|
109
|
-
gameOver,
|
|
110
|
-
onStartGame: handleStartGame,
|
|
111
|
-
onStopGame: handleStopGame,
|
|
112
|
-
startButtonText: "START POPPING",
|
|
113
|
-
stopButtonText: "STOP GAME",
|
|
114
|
-
startButtonSubtext: "Pop balloons to score!",
|
|
115
|
-
stopButtonSubtext: "End current game",
|
|
116
|
-
startButtonColor: "#3b82f6",
|
|
117
|
-
stopButtonColor: "#dc2626",
|
|
118
|
-
startButtonBorderColor: "#60a5fa",
|
|
119
|
-
stopButtonBorderColor: "#f87171"
|
|
120
|
-
}), [isPlaying, gameOver, handleStartGame, handleStopGame]);
|
|
121
|
-
|
|
122
|
-
// Memoized GameOverModal props to prevent unnecessary re-renders
|
|
123
|
-
const gameOverModalProps = useMemo(() => ({
|
|
124
|
-
isVisible: gameOver,
|
|
125
|
-
score,
|
|
126
|
-
onPlayAgain: handleResetGame,
|
|
127
|
-
buttonText: "Pop Again!",
|
|
128
|
-
primaryColor: "rgba(59, 130, 246, 0.8)",
|
|
129
|
-
// Blue theme for Balloon Blaster
|
|
130
|
-
borderColor: "rgba(59, 130, 246, 0.9)",
|
|
131
|
-
buttonColor: "#10b981",
|
|
132
|
-
buttonBorderColor: "#34d399"
|
|
133
|
-
}), [gameOver, score, handleResetGame]);
|
|
134
|
-
|
|
135
|
-
// Memoized GameSettingsModal props to prevent unnecessary re-renders
|
|
136
|
-
const gameSettingsModalProps = useMemo(() => ({
|
|
137
|
-
gameId: GAME_IDS.BALLOON_BLASTER,
|
|
138
|
-
settings: settings || DEFAULT_GAME_SETTINGS,
|
|
139
|
-
onSettingsChange
|
|
140
|
-
}), [settings, onSettingsChange]);
|
|
141
|
-
|
|
142
|
-
// Get offset from settings
|
|
143
|
-
const offset = settings?.offset ?? 0;
|
|
144
|
-
return /*#__PURE__*/_jsx(View, {
|
|
145
|
-
style: styles.container,
|
|
146
|
-
children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
|
|
147
|
-
children: /*#__PURE__*/_jsxs(GameBackground, {
|
|
148
|
-
offset: offset,
|
|
149
|
-
children: [/*#__PURE__*/_jsx(GameArea, {}), /*#__PURE__*/_jsx(ScoreBoard, {
|
|
150
|
-
offset: offset
|
|
151
|
-
}), /*#__PURE__*/_jsx(GameControlButton, {
|
|
152
|
-
...gameControlButtonProps
|
|
153
|
-
}), /*#__PURE__*/_jsx(GameOverModal, {
|
|
154
|
-
...gameOverModalProps
|
|
155
|
-
}), /*#__PURE__*/_jsx(GameSettingsModal, {
|
|
156
|
-
...gameSettingsModalProps
|
|
157
|
-
})]
|
|
158
|
-
})
|
|
159
|
-
})
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
const styles = StyleSheet.create({
|
|
163
|
-
container: {
|
|
164
|
-
flex: 1
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
//# sourceMappingURL=BalloonBlaster.js.map
|
|
1
|
+
"use strict";import React,{useEffect,useMemo,useCallback}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useBalloonBlasterStore}from "./BalloonBlasterStore.js";import{createBalloonBlasterService}from "./BalloonBlasterService.js";import{ScoreBoard,GameArea,GameBackground}from "./components/index.js";import{GameControlButton,GameOverModal,useAnimationTrackers,useGameErrorHandler,GameErrorType}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const BalloonBlaster = React.memo(({settings,onSettingsChange,onEndGame})=>{const isPlaying = useBalloonBlasterStore(state => state.isPlaying);const gameOver = useBalloonBlasterStore(state => state.gameOver);const score = useBalloonBlasterStore(state => state.score);const gameReportedRef = React.useRef(false);const reportGameEnd = React.useCallback(status =>{if(onEndGame && !gameReportedRef.current){const currentState = useBalloonBlasterStore.getState();onEndGame({status,score:currentState.score.toString()});gameReportedRef.current = true;}},[onEndGame]);const startGame = useBalloonBlasterStore(state => state.startGame);const stopGame = useBalloonBlasterStore(state => state.stopGame);const resetGame = useBalloonBlasterStore(state => state.resetGame);const decrementTime = useBalloonBlasterStore(state => state.decrementTime);const addBalloon = useBalloonBlasterStore(state => state.addBalloon);const removeBalloon = useBalloonBlasterStore(state => state.removeBalloon);const updateBalloon = useBalloonBlasterStore(state => state.updateBalloon);const{balloonAnimations,particleAnimations}= useAnimationTrackers(['balloonAnimations','particleAnimations']);const{wrapFunction,safeExecute}= useGameErrorHandler(GAME_IDS.BALLOON_BLASTER);const spawnBalloon = useCallback(balloon =>{addBalloon(balloon);},[addBalloon]);const handleResetGame = useCallback(wrapFunction(()=>{resetGame();},GameErrorType.UNKNOWN_ERROR),[wrapFunction,resetGame]);const gameService = useMemo(()=>{return safeExecute(()=> createBalloonBlasterService(balloonAnimations,particleAnimations),createBalloonBlasterService(balloonAnimations,particleAnimations),GameErrorType.INITIALIZATION_ERROR);},[balloonAnimations,particleAnimations,safeExecute]);const handleStartGame = useCallback(wrapFunction(()=>{gameReportedRef.current = false;resetGame();const currentBalloons = useBalloonBlasterStore.getState().balloons;currentBalloons.forEach(balloon => removeBalloon(balloon.id));if(gameService){gameService.cleanup();gameService.resetAnimations();}setTimeout(()=>{startGame();if(gameService){gameService.startGameTimer(decrementTime);gameService.startBalloonSpawning(spawnBalloon,600);gameService.startPhysicsLoop(updateBalloon,removeBalloon,()=> useBalloonBlasterStore.getState().balloons);}},50);},GameErrorType.INITIALIZATION_ERROR),[wrapFunction,resetGame,removeBalloon,gameService,startGame,decrementTime,spawnBalloon,updateBalloon]);const handleStopGame = useCallback(wrapFunction(()=>{reportGameEnd('cancel');stopGame();if(gameService){gameService.cleanup();gameService.resetAnimations();}},GameErrorType.UNKNOWN_ERROR),[wrapFunction,stopGame,gameService,reportGameEnd]);useEffect(()=>{return()=>{handleResetGame();};},[handleResetGame]);useEffect(()=>{if(gameOver && !gameReportedRef.current){const currentState = useBalloonBlasterStore.getState();const status = currentState.lives <= 0 ? 'lose':'win';reportGameEnd(status);}if(!gameOver){gameReportedRef.current = false;}},[gameOver,reportGameEnd]);useEffect(()=>{if(gameOver && gameService){gameService.cleanup();}},[gameOver,gameService]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START POPPING",stopButtonText:"STOP GAME",startButtonSubtext:"Pop balloons to score!",stopButtonSubtext:"End current game",startButtonColor:"#3b82f6",stopButtonColor:"#dc2626",startButtonBorderColor:"#60a5fa",stopButtonBorderColor:"#f87171"}),[isPlaying,gameOver,handleStartGame,handleStopGame]);const gameOverModalProps = useMemo(()=>({isVisible:gameOver,score,onPlayAgain:handleResetGame,buttonText:"Pop Again!",primaryColor:"rgba(59,130,246,0.5)",borderColor:"rgba(59,130,246,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#3b82f6"}),[gameOver,score,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.BALLOON_BLASTER,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(GameBackground,{offset:offset,children:[_jsx(GameArea,{}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})});});const styles = StyleSheet.create({container:{flex:1}});
|
|
@@ -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","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","
|
|
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","onEndGame","isPlaying","state","gameOver","score","gameReportedRef","useRef","reportGameEnd","status","current","currentState","getState","toString","startGame","stopGame","resetGame","decrementTime","addBalloon","removeBalloon","updateBalloon","balloonAnimations","particleAnimations","wrapFunction","safeExecute","BALLOON_BLASTER","spawnBalloon","balloon","handleResetGame","UNKNOWN_ERROR","gameService","INITIALIZATION_ERROR","handleStartGame","currentBalloons","balloons","forEach","id","cleanup","resetAnimations","setTimeout","startGameTimer","startBalloonSpawning","startPhysicsLoop","handleStopGame","lives","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","gameSettingsModalProps","gameId","offset","style","styles","container","children","create","flex"],"sourceRoot":"../../../../src","sources":["games/balloon-blaster/BalloonBlaster.tsx"],"mappings":"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","ignoreList":[]}
|