react-native-games 0.4.0 → 0.6.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 +121 -130
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +121 -422
- package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +30 -31
- package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js +52 -124
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +12 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js +102 -75
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/GameArea.js +139 -30
- package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/GameBackground.js +2 -2
- package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js +7 -6
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/index.js +0 -3
- package/lib/module/games/balloon-blaster/components/index.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinja.js +93 -376
- package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +19 -22
- package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaService.js +25 -8
- package/lib/module/games/fruit-ninja/FruitNinjaService.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js +29 -4
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/GameArea.js +194 -29
- package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/GameBackground.js +107 -190
- package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js +9 -30
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/index.js +0 -3
- package/lib/module/games/fruit-ninja/components/index.js.map +1 -1
- package/lib/module/games/maze-runner/MazeRunner.js +106 -109
- package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
- package/lib/module/games/maze-runner/MazeRunnerConstants.js +19 -24
- package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -1
- package/lib/module/games/maze-runner/MazeRunnerService.js +2 -1
- package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -1
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +5 -4
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js.map +1 -1
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js +32 -15
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -1
- package/lib/module/games/maze-runner/components/ScoreBoard.js +8 -3
- package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/maze-runner/components/WallComponent.js +3 -2
- package/lib/module/games/maze-runner/components/WallComponent.js.map +1 -1
- package/lib/module/games/maze-runner/components/index.js +0 -1
- package/lib/module/games/maze-runner/components/index.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidget.js +113 -112
- package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetConstants.js +20 -23
- package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -59
- package/lib/module/games/popit-fidget/PopitFidgetService.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -27
- package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -1
- package/lib/module/games/popit-fidget/components/BubbleComponent.js +24 -22
- package/lib/module/games/popit-fidget/components/BubbleComponent.js.map +1 -1
- package/lib/module/games/popit-fidget/components/GameBackground.js +4 -1
- package/lib/module/games/popit-fidget/components/GameBackground.js.map +1 -1
- package/lib/module/games/popit-fidget/components/ScoreBoard.js +9 -2
- package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/popit-fidget/components/index.js +0 -2
- package/lib/module/games/popit-fidget/components/index.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighter.js +121 -369
- package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterConstants.js +21 -23
- package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterService.js +30 -11
- package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterStore.js +54 -2
- package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -1
- package/lib/module/games/space-fighter/components/AsteroidComponent.js +7 -5
- package/lib/module/games/space-fighter/components/AsteroidComponent.js.map +1 -1
- package/lib/module/games/space-fighter/components/GameArea.js +234 -14
- package/lib/module/games/space-fighter/components/GameArea.js.map +1 -1
- package/lib/module/games/space-fighter/components/GameBackground.js +10 -65
- package/lib/module/games/space-fighter/components/GameBackground.js.map +1 -1
- package/lib/module/games/space-fighter/components/ScoreBoard.js +9 -7
- package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/space-fighter/components/Spacecraft3D.js +90 -250
- package/lib/module/games/space-fighter/components/Spacecraft3D.js.map +1 -1
- package/lib/module/games/space-fighter/components/SpacecraftPath.js +42 -27
- package/lib/module/games/space-fighter/components/SpacecraftPath.js.map +1 -1
- package/lib/module/games/space-fighter/components/index.js +0 -3
- package/lib/module/games/space-fighter/components/index.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMole.js +63 -73
- package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +17 -19
- package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js +20 -7
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js.map +1 -1
- package/lib/module/games/whack-a-mole/components/GameHole.js +2 -2
- package/lib/module/games/whack-a-mole/components/GameHole.js.map +1 -1
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js +5 -1
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/whack-a-mole/components/index.js +0 -1
- package/lib/module/games/whack-a-mole/components/index.js.map +1 -1
- package/lib/module/services/GamesConstants.js +13 -21
- package/lib/module/services/GamesConstants.js.map +1 -1
- package/lib/module/services/GamesService.js +30 -26
- package/lib/module/services/GamesService.js.map +1 -1
- package/lib/module/services/SoundsService.js +21 -21
- package/lib/module/shared/helpers/AnimationFrame.js +120 -0
- package/lib/module/shared/helpers/AnimationFrame.js.map +1 -0
- package/lib/module/shared/helpers/AnimationTracker.js +89 -0
- package/lib/module/shared/helpers/AnimationTracker.js.map +1 -0
- package/lib/module/shared/helpers/ErrorHandler.js +269 -0
- package/lib/module/shared/helpers/ErrorHandler.js.map +1 -0
- package/lib/module/shared/helpers/GameControlButton.js +67 -58
- package/lib/module/shared/helpers/GameControlButton.js.map +1 -1
- package/lib/module/{games/whack-a-mole/components → shared/helpers}/GameOverModal.js +23 -13
- package/lib/module/shared/helpers/GameOverModal.js.map +1 -0
- package/lib/module/shared/helpers/GameSettingsModal.js +287 -0
- package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -0
- package/lib/module/shared/helpers/ParticleBlast.js +133 -0
- package/lib/module/shared/helpers/ParticleBlast.js.map +1 -0
- package/lib/module/shared/helpers/index.js +7 -0
- package/lib/module/shared/helpers/index.js.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +2 -14
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +10 -9
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -2
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +1 -15
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +1 -7
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +0 -3
- package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +2 -14
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +5 -5
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +8 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +1 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +1 -15
- package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +1 -7
- package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/index.d.ts +0 -3
- package/lib/typescript/src/games/fruit-ninja/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +2 -8
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +4 -4
- package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/index.d.ts +0 -1
- package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +2 -8
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +4 -4
- package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -21
- package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +1 -5
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts +2 -2
- package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +2 -2
- package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/components/index.d.ts +0 -2
- package/lib/typescript/src/games/popit-fidget/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +3 -8
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +4 -4
- package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -1
- package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +1 -15
- package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +1 -6
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/index.d.ts +0 -3
- package/lib/typescript/src/games/space-fighter/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +2 -11
- 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 +2 -2
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/components/index.d.ts +0 -1
- package/lib/typescript/src/games/whack-a-mole/components/index.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesConstants.d.ts +47 -38
- package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesService.d.ts +20 -3
- package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
- package/lib/typescript/src/services/SoundsService.d.ts +20 -20
- package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts +41 -0
- package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts +45 -0
- package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts +124 -0
- package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +1 -1
- package/lib/typescript/src/{games/balloon-blaster/components → shared/helpers}/GameOverModal.d.ts +5 -0
- package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts +9 -0
- package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts +12 -0
- package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/index.d.ts +9 -0
- package/lib/typescript/src/shared/helpers/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/lib/module/games/balloon-blaster/components/GameOverModal.js +0 -133
- package/lib/module/games/balloon-blaster/components/GameOverModal.js.map +0 -1
- package/lib/module/games/balloon-blaster/components/ParticleSystem.js +0 -55
- package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +0 -1
- package/lib/module/games/balloon-blaster/components/SliceTrail.js +0 -58
- package/lib/module/games/balloon-blaster/components/SliceTrail.js.map +0 -1
- package/lib/module/games/fruit-ninja/components/GameOverModal.js +0 -189
- package/lib/module/games/fruit-ninja/components/GameOverModal.js.map +0 -1
- package/lib/module/games/fruit-ninja/components/ParticleSystem.js +0 -52
- package/lib/module/games/fruit-ninja/components/ParticleSystem.js.map +0 -1
- package/lib/module/games/fruit-ninja/components/SliceTrail.js +0 -58
- package/lib/module/games/fruit-ninja/components/SliceTrail.js.map +0 -1
- package/lib/module/games/maze-runner/components/GameOverModal.js +0 -134
- package/lib/module/games/maze-runner/components/GameOverModal.js.map +0 -1
- package/lib/module/games/popit-fidget/components/GameOverModal.js +0 -132
- package/lib/module/games/popit-fidget/components/GameOverModal.js.map +0 -1
- package/lib/module/games/popit-fidget/components/ParticleSystem.js +0 -89
- package/lib/module/games/popit-fidget/components/ParticleSystem.js.map +0 -1
- package/lib/module/games/space-fighter/components/GameOverModal.js +0 -182
- package/lib/module/games/space-fighter/components/GameOverModal.js.map +0 -1
- package/lib/module/games/space-fighter/components/ParticleComponent.js +0 -34
- package/lib/module/games/space-fighter/components/ParticleComponent.js.map +0 -1
- package/lib/module/games/space-fighter/components/SettingsModal.js +0 -222
- package/lib/module/games/space-fighter/components/SettingsModal.js.map +0 -1
- package/lib/module/games/whack-a-mole/components/GameOverModal.js.map +0 -1
- package/lib/module/shared/settings/GameSettings.js +0 -295
- package/lib/module/shared/settings/GameSettings.js.map +0 -1
- package/lib/module/shared/settings/SettingsService.js +0 -125
- package/lib/module/shared/settings/SettingsService.js.map +0 -1
- package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts +0 -8
- package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +0 -1
- package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts +0 -11
- package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts.map +0 -1
- package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts +0 -9
- package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts +0 -8
- package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts.map +0 -1
- package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts +0 -11
- package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts.map +0 -1
- package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts +0 -11
- package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts +0 -9
- package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts +0 -9
- package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts.map +0 -1
- package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts +0 -8
- package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts.map +0 -1
- package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts.map +0 -1
- package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts +0 -9
- package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/shared/settings/GameSettings.d.ts +0 -36
- package/lib/typescript/src/shared/settings/GameSettings.d.ts.map +0 -1
- package/lib/typescript/src/shared/settings/SettingsService.d.ts +0 -33
- package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -38,181 +38,171 @@ Follow the installation guides for each peer dependency:
|
|
|
38
38
|
- **[react-native-gesture-handler](https://docs.swmansion.com/react-native-gesture-handler/docs/fundamentals/installation)** - Gestures
|
|
39
39
|
- **[expo-speech](https://docs.expo.dev/versions/latest/sdk/speech/)** - Text-to-speech functionality
|
|
40
40
|
- **[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
|
|
41
42
|
|
|
42
43
|
## 🚀 Usage
|
|
43
44
|
|
|
44
|
-
###
|
|
45
|
+
### Simple Implementation
|
|
46
|
+
|
|
47
|
+
For basic usage without settings persistence:
|
|
45
48
|
|
|
46
49
|
```tsx
|
|
47
50
|
import React, { useState } from 'react';
|
|
48
|
-
import { View
|
|
49
|
-
import {
|
|
51
|
+
import { View } from 'react-native';
|
|
52
|
+
import { DEFAULT_GAME_SETTINGS, BalloonBlaster } from 'react-native-games';
|
|
50
53
|
|
|
51
54
|
export default function GameScreen() {
|
|
52
|
-
const [
|
|
55
|
+
const [settings, setSettings] = useState(DEFAULT_GAME_SETTINGS);
|
|
53
56
|
|
|
54
57
|
return (
|
|
55
|
-
<View style={
|
|
56
|
-
{
|
|
57
|
-
<WhackAMole
|
|
58
|
-
showSettingsModal={showSettings}
|
|
59
|
-
onToggleSettingsModal={() => setShowSettings(!showSettings)}
|
|
60
|
-
/>
|
|
61
|
-
|
|
62
|
-
{/* Or choose any other game */}
|
|
63
|
-
{/* <PopitFidget /> */}
|
|
64
|
-
{/* <FruitNinja /> */}
|
|
65
|
-
{/* <MazeRunner /> */}
|
|
66
|
-
{/* <SpaceFighter /> */}
|
|
67
|
-
{/* <BalloonBlaster /> */}
|
|
58
|
+
<View style={{ flex: 1 }}>
|
|
59
|
+
<BalloonBlaster settings={settings} onSettingsChange={setSettings} />
|
|
68
60
|
</View>
|
|
69
61
|
);
|
|
70
62
|
}
|
|
71
|
-
|
|
72
|
-
const styles = StyleSheet.create({
|
|
73
|
-
container: {
|
|
74
|
-
flex: 1,
|
|
75
|
-
backgroundColor: '#1a1a2e'
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
63
|
```
|
|
79
64
|
|
|
80
|
-
###
|
|
65
|
+
### Advanced Implementation Example
|
|
66
|
+
|
|
67
|
+
All games use the same props pattern for consistency. Here's a complete example with settings persistence and navigation integration:
|
|
81
68
|
|
|
82
|
-
#### Whack A Mole
|
|
83
69
|
```tsx
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
70
|
+
import { View, TouchableOpacity } from 'react-native';
|
|
71
|
+
import { useState, useLayoutEffect } from 'react';
|
|
72
|
+
import { useNavigation, useTheme } from '@react-navigation/native';
|
|
73
|
+
import { Ionicons } from '@expo/vector-icons';
|
|
74
|
+
import { DEFAULT_GAME_SETTINGS, GAME_IDS, type GameSettings, FruitNinja } from 'react-native-games';
|
|
75
|
+
import { StorageService } from '../services/StorageService';
|
|
76
|
+
|
|
77
|
+
export default function FruitNinjaScreen() {
|
|
78
|
+
const { colors } = useTheme();
|
|
79
|
+
const storedSettings = StorageService.get(GAME_IDS.FRUIT_NINJA);
|
|
80
|
+
const [settings, setSettings] = useState(storedSettings || DEFAULT_GAME_SETTINGS);
|
|
81
|
+
const navigation = useNavigation();
|
|
82
|
+
|
|
83
|
+
const handleSettingsChange = (newSettings: GameSettings) => {
|
|
84
|
+
setSettings(newSettings);
|
|
85
|
+
StorageService.set(GAME_IDS.FRUIT_NINJA, newSettings);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const handleToggleSettingsModal = () => {
|
|
89
|
+
setSettings({...settings, isVisible: !settings.isVisible});
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
useLayoutEffect(() => {
|
|
93
|
+
navigation.setOptions({
|
|
94
|
+
headerRight: () => (
|
|
95
|
+
<TouchableOpacity
|
|
96
|
+
onPress={handleToggleSettingsModal}
|
|
97
|
+
className="p-2"
|
|
98
|
+
>
|
|
99
|
+
<Ionicons name="settings-outline" size={24} color={colors.text} />
|
|
100
|
+
</TouchableOpacity>
|
|
101
|
+
),
|
|
102
|
+
});
|
|
103
|
+
}, [navigation, handleToggleSettingsModal]);
|
|
88
104
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
// }
|
|
96
|
-
// Available: difficulty ['easy','medium','hard']
|
|
97
|
-
// Cat spawn intervals: easy 2000ms, medium 1500ms, hard 1000ms
|
|
98
|
-
// Cat visible duration: easy 2500ms, medium 2000ms, hard 1500ms
|
|
99
|
-
// Grid sizes: easy/medium 3x3, hard 4x4
|
|
105
|
+
return (
|
|
106
|
+
<View className="flex-1 bg-background">
|
|
107
|
+
<FruitNinja settings={settings} onSettingsChange={handleSettingsChange} />
|
|
108
|
+
</View>
|
|
109
|
+
);
|
|
110
|
+
}
|
|
100
111
|
```
|
|
101
112
|
|
|
102
|
-
|
|
103
|
-
```tsx
|
|
104
|
-
<PopitFidget
|
|
105
|
-
showSettingsModal={boolean} // Control settings modal visibility
|
|
106
|
-
onToggleSettingsModal={() => void} // Settings modal toggle callback
|
|
107
|
-
/>
|
|
113
|
+
### Available Games
|
|
108
114
|
|
|
109
|
-
|
|
110
|
-
// {
|
|
111
|
-
// difficulty: 'medium', // Balanced challenge
|
|
112
|
-
// soundEnabled: true, // Audio feedback enabled
|
|
113
|
-
// hapticEnabled: true, // Haptic feedback enabled
|
|
114
|
-
// gameDuration: 120 // Auto-set based on difficulty (Easy: 60s, Medium: 120s, Hard: 180s)
|
|
115
|
-
// }
|
|
116
|
-
// Available: difficulty ['easy','medium','hard']
|
|
117
|
-
// Relaxing bubble popping with satisfying sound effects
|
|
118
|
-
// Different bubble shapes and colors for variety
|
|
119
|
-
```
|
|
115
|
+
All games use the same props interface:
|
|
120
116
|
|
|
121
|
-
#### Fruit Ninja
|
|
122
117
|
```tsx
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
118
|
+
// Import any game you want
|
|
119
|
+
import {
|
|
120
|
+
WhackAMole,
|
|
121
|
+
PopitFidget,
|
|
122
|
+
FruitNinja,
|
|
123
|
+
MazeRunner,
|
|
124
|
+
SpaceFighter,
|
|
125
|
+
BalloonBlaster
|
|
126
|
+
} from 'react-native-games';
|
|
127
|
+
|
|
128
|
+
// All games accept the same props:
|
|
129
|
+
<GameComponent
|
|
130
|
+
settings={settings}
|
|
131
|
+
onSettingsChange={handleSettingsChange}
|
|
126
132
|
/>
|
|
127
|
-
|
|
128
|
-
// Default Settings:
|
|
129
|
-
// {
|
|
130
|
-
// difficulty: 'medium', // Balanced challenge
|
|
131
|
-
// soundEnabled: true, // Audio feedback enabled
|
|
132
|
-
// hapticEnabled: true, // Haptic feedback enabled
|
|
133
|
-
// gameDuration: 120 // Auto-set based on difficulty (Easy: 60s, Medium: 120s, Hard: 180s)
|
|
134
|
-
// }
|
|
135
|
-
// Available: difficulty ['easy','medium','hard']
|
|
136
|
-
// Balloons rise from bottom to top with physics-based movement
|
|
137
|
-
// Spawn intervals and speeds adjust automatically with difficulty
|
|
138
133
|
```
|
|
139
134
|
|
|
140
|
-
|
|
141
|
-
```tsx
|
|
142
|
-
<SpaceFighter
|
|
143
|
-
showSettingsModal={boolean} // Control settings modal visibility
|
|
144
|
-
onToggleSettingsModal={() => void} // Settings modal toggle callback
|
|
145
|
-
/>
|
|
135
|
+
### Game Settings & Configuration
|
|
146
136
|
|
|
147
|
-
|
|
148
|
-
// {
|
|
149
|
-
// difficulty: 'medium', // Balanced challenge
|
|
150
|
-
// soundEnabled: true, // Audio feedback enabled
|
|
151
|
-
// hapticEnabled: true, // Haptic feedback enabled
|
|
152
|
-
// gameDuration: 120 // Auto-set based on difficulty (Easy: 60s, Medium: 120s, Hard: 180s)
|
|
153
|
-
// }
|
|
154
|
-
// Available: difficulty ['easy','medium','hard']
|
|
155
|
-
// Spawn intervals: easy 2000ms, medium 1500ms, hard 1000ms
|
|
156
|
-
```
|
|
137
|
+
All games use the unified `GameSettings` interface:
|
|
157
138
|
|
|
158
|
-
#### Maze Runner
|
|
159
139
|
```tsx
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
140
|
+
interface GameSettings {
|
|
141
|
+
isVisible: boolean; // Settings modal visibility
|
|
142
|
+
difficulty: 'easy' | 'medium' | 'hard';
|
|
143
|
+
enableSounds: boolean; // Audio feedback
|
|
144
|
+
enableHaptics: boolean; // Haptic feedback
|
|
145
|
+
}
|
|
164
146
|
|
|
165
|
-
// Default
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
// showHints: false // No hints by default
|
|
173
|
-
// }
|
|
174
|
-
// Available: difficulty ['easy','medium','hard']
|
|
175
|
-
// Grid sizes: easy 8x8, medium 10x10, hard 12x12 (auto-adjusts with difficulty)
|
|
176
|
-
// Procedurally generated mazes with intelligent pathfinding
|
|
147
|
+
// Default settings for all games
|
|
148
|
+
const DEFAULT_GAME_SETTINGS = {
|
|
149
|
+
isVisible: false,
|
|
150
|
+
difficulty: 'medium',
|
|
151
|
+
enableSounds: true,
|
|
152
|
+
enableHaptics: true,
|
|
153
|
+
};
|
|
177
154
|
```
|
|
178
155
|
|
|
179
|
-
####
|
|
180
|
-
```tsx
|
|
181
|
-
<BalloonBlaster
|
|
182
|
-
showSettingsModal={boolean} // Control settings modal visibility
|
|
183
|
-
onToggleSettingsModal={() => void} // Settings modal toggle callback
|
|
184
|
-
/>
|
|
156
|
+
#### Game-Specific Behaviors
|
|
185
157
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
158
|
+
**Whack A Mole**
|
|
159
|
+
- Cat spawn intervals: easy 2000ms, medium 1500ms, hard 1000ms
|
|
160
|
+
- Cat visible duration: easy 2500ms, medium 2000ms, hard 1500ms
|
|
161
|
+
- Grid sizes: easy/medium 3x3, hard 4x4
|
|
162
|
+
|
|
163
|
+
**Popit Fidget**
|
|
164
|
+
- Relaxing bubble popping with satisfying sound effects
|
|
165
|
+
- Different bubble shapes and colors for variety
|
|
166
|
+
- Difficulty affects bubble responsiveness and patterns
|
|
167
|
+
|
|
168
|
+
**Fruit Ninja**
|
|
169
|
+
- Fixed 60-second gameplay sessions
|
|
170
|
+
- Physics-based slicing with particle effects and combo system
|
|
171
|
+
- Difficulty affects fruit spawn rate and bomb frequency
|
|
172
|
+
|
|
173
|
+
**Space Fighter**
|
|
174
|
+
- Progressive difficulty with asteroid spawn intervals
|
|
175
|
+
- Horizontal drag controls with collision immunity system
|
|
176
|
+
- Difficulty affects asteroid speed and spawn frequency
|
|
177
|
+
|
|
178
|
+
**Maze Runner**
|
|
179
|
+
- Grid sizes: easy 8x8, medium 10x10, hard 12x12
|
|
180
|
+
- Procedurally generated mazes with intelligent pathfinding
|
|
181
|
+
- Difficulty affects maze complexity and time limits
|
|
182
|
+
|
|
183
|
+
**Balloon Blaster**
|
|
184
|
+
- Fixed 60-second gameplay sessions
|
|
185
|
+
- Balloon spawn interval: 1200ms, rise speed: 0.08
|
|
186
|
+
- Physics-based balloon movement with particle effects
|
|
199
187
|
|
|
200
188
|
### Game Settings
|
|
201
189
|
|
|
202
190
|
Each game includes built-in settings screens with a unified, simplified interface:
|
|
203
191
|
|
|
204
|
-
- **Difficulty Levels**: Easy
|
|
192
|
+
- **Difficulty Levels**: Easy, Medium, Hard - each game has custom difficulty descriptions and behaviors
|
|
205
193
|
- **Sound Effects**: Toggle audio feedback on/off
|
|
206
194
|
- **Haptic Feedback**: Toggle vibration feedback on/off
|
|
207
195
|
|
|
208
|
-
All games use a centralized settings system for consistency and ease of maintenance.
|
|
196
|
+
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.
|
|
209
197
|
|
|
210
198
|
## 🎨 Features
|
|
211
199
|
|
|
212
200
|
### 🚀 **High Performance**
|
|
213
201
|
- Built with React Native Skia for 60fps gameplay
|
|
214
|
-
- Optimized animations using Reanimated 3
|
|
215
|
-
-
|
|
202
|
+
- Optimized animations using Reanimated 3 with worklets
|
|
203
|
+
- Delta time physics loops for consistent performance
|
|
204
|
+
- React.memo optimizations and efficient state management
|
|
205
|
+
- Minimal re-renders with direct store subscriptions
|
|
216
206
|
|
|
217
207
|
### 🎵 **Rich Audio & Haptics**
|
|
218
208
|
- Sound effects and speech synthesis
|
|
@@ -268,7 +258,8 @@ See the complete [LICENSE](LICENSE) file for detailed terms and definitions.
|
|
|
268
258
|
|
|
269
259
|
- Built with [React Native Skia](https://shopify.github.io/react-native-skia/) for high-performance graphics
|
|
270
260
|
- Powered by [React Native Reanimated](https://docs.swmansion.com/react-native-reanimated/) for smooth animations
|
|
271
|
-
-
|
|
261
|
+
- Enhanced with [React Native Worklets](https://github.com/margelo/react-native-worklets) for high-performance JavaScript
|
|
262
|
+
- State management with [Zustand](https://github.com/pmndrs/zustand) and [Immer](https://github.com/immerjs/immer)
|
|
272
263
|
- Created with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
|
|
273
264
|
|
|
274
265
|
## 📞 Support
|