react-native-games 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -23
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +5 -8
- package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
- package/lib/module/games/candy-crush/CandyCrush.js +121 -0
- package/lib/module/games/candy-crush/CandyCrush.js.map +1 -0
- package/lib/module/games/candy-crush/CandyCrushConstants.js +125 -0
- package/lib/module/games/candy-crush/CandyCrushConstants.js.map +1 -0
- package/lib/module/games/candy-crush/CandyCrushService.js +370 -0
- package/lib/module/games/candy-crush/CandyCrushService.js.map +1 -0
- package/lib/module/games/candy-crush/CandyCrushStore.js +305 -0
- package/lib/module/games/candy-crush/CandyCrushStore.js.map +1 -0
- package/lib/module/games/candy-crush/components/CandyItem.js +191 -0
- package/lib/module/games/candy-crush/components/CandyItem.js.map +1 -0
- package/lib/module/games/candy-crush/components/GameBackground.js +85 -0
- package/lib/module/games/candy-crush/components/GameBackground.js.map +1 -0
- package/lib/module/games/candy-crush/components/GameGrid.js +314 -0
- package/lib/module/games/candy-crush/components/GameGrid.js.map +1 -0
- package/lib/module/games/candy-crush/components/ScoreBoard.js +112 -0
- package/lib/module/games/candy-crush/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/candy-crush/components/index.js +7 -0
- package/lib/module/games/candy-crush/components/index.js.map +1 -0
- package/lib/module/games/candy-crush/index.js +6 -0
- package/lib/module/games/candy-crush/index.js.map +1 -0
- package/lib/module/games/color-sort/ColorSort.js +130 -0
- package/lib/module/games/color-sort/ColorSort.js.map +1 -0
- package/lib/module/games/color-sort/ColorSortConstants.js +68 -0
- package/lib/module/games/color-sort/ColorSortConstants.js.map +1 -0
- package/lib/module/games/color-sort/ColorSortService.js +255 -0
- package/lib/module/games/color-sort/ColorSortService.js.map +1 -0
- package/lib/module/games/color-sort/ColorSortStore.js +258 -0
- package/lib/module/games/color-sort/ColorSortStore.js.map +1 -0
- package/lib/module/games/color-sort/components/ColorContainer.js +140 -0
- package/lib/module/games/color-sort/components/ColorContainer.js.map +1 -0
- package/lib/module/games/color-sort/components/GameBackground.js +135 -0
- package/lib/module/games/color-sort/components/GameBackground.js.map +1 -0
- package/lib/module/games/color-sort/components/ScoreBoard.js +78 -0
- package/lib/module/games/color-sort/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/color-sort/components/index.js +6 -0
- package/lib/module/games/color-sort/components/index.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJump.js +209 -0
- package/lib/module/games/dino-jump/DinoJump.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJumpConstants.js +179 -0
- package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJumpService.js +268 -0
- package/lib/module/games/dino-jump/DinoJumpService.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJumpStore.js +387 -0
- package/lib/module/games/dino-jump/DinoJumpStore.js.map +1 -0
- package/lib/module/games/dino-jump/components/DinoSprite.js +409 -0
- package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -0
- package/lib/module/games/dino-jump/components/GameArea.js +68 -0
- package/lib/module/games/dino-jump/components/GameArea.js.map +1 -0
- package/lib/module/games/dino-jump/components/GameBackground.js +421 -0
- package/lib/module/games/dino-jump/components/GameBackground.js.map +1 -0
- package/lib/module/games/dino-jump/components/ObstacleSprite.js +306 -0
- package/lib/module/games/dino-jump/components/ObstacleSprite.js.map +1 -0
- package/lib/module/games/dino-jump/components/ScoreBoard.js +107 -0
- package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/dino-jump/components/StarSprite.js +45 -0
- package/lib/module/games/dino-jump/components/StarSprite.js.map +1 -0
- package/lib/module/games/dino-jump/components/index.js +9 -0
- package/lib/module/games/dino-jump/components/index.js.map +1 -0
- package/lib/module/games/flappy-bird/FlappyBird.js +131 -0
- package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -0
- package/lib/module/games/flappy-bird/FlappyBirdConstants.js +90 -0
- package/lib/module/games/flappy-bird/FlappyBirdConstants.js.map +1 -0
- package/lib/module/games/flappy-bird/FlappyBirdStore.js +276 -0
- package/lib/module/games/flappy-bird/FlappyBirdStore.js.map +1 -0
- package/lib/module/games/flappy-bird/components/Bird.js +87 -0
- package/lib/module/games/flappy-bird/components/Bird.js.map +1 -0
- package/lib/module/games/flappy-bird/components/GameArea.js +86 -0
- package/lib/module/games/flappy-bird/components/GameArea.js.map +1 -0
- package/lib/module/games/flappy-bird/components/GameBackground.js +112 -0
- package/lib/module/games/flappy-bird/components/GameBackground.js.map +1 -0
- package/lib/module/games/flappy-bird/components/Pipes.js +175 -0
- package/lib/module/games/flappy-bird/components/Pipes.js.map +1 -0
- package/lib/module/games/flappy-bird/components/ScoreBoard.js +72 -0
- package/lib/module/games/flappy-bird/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/flappy-bird/components/index.js +8 -0
- package/lib/module/games/flappy-bird/components/index.js.map +1 -0
- package/lib/module/games/fruit-merger/FruitMerger.js +112 -0
- package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -0
- package/lib/module/games/fruit-merger/FruitMergerConstants.js +119 -0
- package/lib/module/games/fruit-merger/FruitMergerConstants.js.map +1 -0
- package/lib/module/games/fruit-merger/FruitMergerService.js +13 -0
- package/lib/module/games/fruit-merger/FruitMergerService.js.map +1 -0
- package/lib/module/games/fruit-merger/FruitMergerStore.js +318 -0
- package/lib/module/games/fruit-merger/FruitMergerStore.js.map +1 -0
- package/lib/module/games/fruit-merger/components/FruitItem.js +102 -0
- package/lib/module/games/fruit-merger/components/FruitItem.js.map +1 -0
- package/lib/module/games/fruit-merger/components/GameArea.js +123 -0
- package/lib/module/games/fruit-merger/components/GameArea.js.map +1 -0
- package/lib/module/games/fruit-merger/components/GameBackground.js +477 -0
- package/lib/module/games/fruit-merger/components/GameBackground.js.map +1 -0
- package/lib/module/games/fruit-merger/components/ScoreBoard.js +66 -0
- package/lib/module/games/fruit-merger/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/fruit-merger/components/index.js +7 -0
- package/lib/module/games/fruit-merger/components/index.js.map +1 -0
- package/lib/module/games/fruit-ninja/FruitNinja.js +6 -9
- package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
- package/lib/module/games/game-2048/Game2048.js +120 -0
- package/lib/module/games/game-2048/Game2048.js.map +1 -0
- package/lib/module/games/game-2048/Game2048Constants.js +263 -0
- package/lib/module/games/game-2048/Game2048Constants.js.map +1 -0
- package/lib/module/games/game-2048/Game2048Service.js +457 -0
- package/lib/module/games/game-2048/Game2048Service.js.map +1 -0
- package/lib/module/games/game-2048/Game2048Store.js +238 -0
- package/lib/module/games/game-2048/Game2048Store.js.map +1 -0
- package/lib/module/games/game-2048/components/GameBackground.js +247 -0
- package/lib/module/games/game-2048/components/GameBackground.js.map +1 -0
- package/lib/module/games/game-2048/components/GameGrid.js +139 -0
- package/lib/module/games/game-2048/components/GameGrid.js.map +1 -0
- package/lib/module/games/game-2048/components/GameTile.js +72 -0
- package/lib/module/games/game-2048/components/GameTile.js.map +1 -0
- package/lib/module/games/game-2048/components/ScoreBoard.js +70 -0
- package/lib/module/games/game-2048/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/game-2048/components/index.js +7 -0
- package/lib/module/games/game-2048/components/index.js.map +1 -0
- package/lib/module/games/maze-runner/MazeRunner.js +33 -31
- package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidget.js +34 -32
- package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbers.js +161 -0
- package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +207 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js.map +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersService.js +248 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersService.js.map +1 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +275 -0
- package/lib/module/games/sliding-numbers/SlidingNumbersStore.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/GameBackground.js +259 -0
- package/lib/module/games/sliding-numbers/components/GameBackground.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/NumbersGrid.js +174 -0
- package/lib/module/games/sliding-numbers/components/NumbersGrid.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/NumbersTile.js +116 -0
- package/lib/module/games/sliding-numbers/components/NumbersTile.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/ScoreBoard.js +66 -0
- package/lib/module/games/sliding-numbers/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/sliding-numbers/components/index.js +7 -0
- package/lib/module/games/sliding-numbers/components/index.js.map +1 -0
- package/lib/module/games/snake/Snake.js +192 -0
- package/lib/module/games/snake/Snake.js.map +1 -0
- package/lib/module/games/snake/SnakeConstants.js +138 -0
- package/lib/module/games/snake/SnakeConstants.js.map +1 -0
- package/lib/module/games/snake/SnakeService.js +148 -0
- package/lib/module/games/snake/SnakeService.js.map +1 -0
- package/lib/module/games/snake/SnakeStore.js +184 -0
- package/lib/module/games/snake/SnakeStore.js.map +1 -0
- package/lib/module/games/snake/components/GameBackground.js +221 -0
- package/lib/module/games/snake/components/GameBackground.js.map +1 -0
- package/lib/module/games/snake/components/GameGrid.js +153 -0
- package/lib/module/games/snake/components/GameGrid.js.map +1 -0
- package/lib/module/games/snake/components/ScoreBoard.js +57 -0
- package/lib/module/games/snake/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/snake/components/index.js +6 -0
- package/lib/module/games/snake/components/index.js.map +1 -0
- package/lib/module/games/snake/index.js +6 -0
- package/lib/module/games/snake/index.js.map +1 -0
- package/lib/module/games/space-fighter/SpaceFighter.js +7 -10
- package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMole.js +6 -6
- package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/services/GamesConstants.js +58 -2
- package/lib/module/services/GamesConstants.js.map +1 -1
- package/lib/module/services/GamesService.js +40 -0
- package/lib/module/services/GamesService.js.map +1 -1
- package/lib/module/services/SoundsService.js +132 -1
- package/lib/module/services/SoundsService.js.map +1 -1
- package/lib/module/shared/helpers/GameOverModal.js +6 -3
- package/lib/module/shared/helpers/GameOverModal.js.map +1 -1
- package/lib/module/shared/helpers/GameSettingsModal.js +3 -3
- package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -1
- package/lib/module/shared/helpers/ParticleBlast.js +3 -2
- package/lib/module/shared/helpers/ParticleBlast.js.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
- package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts +4 -0
- package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +104 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts +40 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushService.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts +48 -0
- package/lib/typescript/src/games/candy-crush/CandyCrushStore.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts +13 -0
- package/lib/typescript/src/games/candy-crush/components/CandyItem.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts +5 -0
- package/lib/typescript/src/games/candy-crush/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts +3 -0
- package/lib/typescript/src/games/candy-crush/components/GameGrid.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/candy-crush/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/components/index.d.ts +5 -0
- package/lib/typescript/src/games/candy-crush/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/index.d.ts +4 -0
- package/lib/typescript/src/games/candy-crush/index.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/ColorSort.d.ts +4 -0
- package/lib/typescript/src/games/color-sort/ColorSort.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/ColorSortConstants.d.ts +52 -0
- package/lib/typescript/src/games/color-sort/ColorSortConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/ColorSortService.d.ts +66 -0
- package/lib/typescript/src/games/color-sort/ColorSortService.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/ColorSortStore.d.ts +48 -0
- package/lib/typescript/src/games/color-sort/ColorSortStore.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/components/ColorContainer.d.ts +11 -0
- package/lib/typescript/src/games/color-sort/components/ColorContainer.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/color-sort/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/color-sort/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/color-sort/components/index.d.ts +4 -0
- package/lib/typescript/src/games/color-sort/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/DinoJump.d.ts +4 -0
- package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts +95 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts +40 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpService.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts +103 -0
- package/lib/typescript/src/games/dino-jump/DinoJumpStore.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts +3 -0
- package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts +8 -0
- package/lib/typescript/src/games/dino-jump/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/dino-jump/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts +3 -0
- package/lib/typescript/src/games/dino-jump/components/ObstacleSprite.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/dino-jump/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts +3 -0
- package/lib/typescript/src/games/dino-jump/components/StarSprite.d.ts.map +1 -0
- package/lib/typescript/src/games/dino-jump/components/index.d.ts +7 -0
- package/lib/typescript/src/games/dino-jump/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts +4 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts +83 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts +53 -0
- package/lib/typescript/src/games/flappy-bird/FlappyBirdStore.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts +8 -0
- package/lib/typescript/src/games/flappy-bird/components/Bird.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts +8 -0
- package/lib/typescript/src/games/flappy-bird/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/flappy-bird/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts +8 -0
- package/lib/typescript/src/games/flappy-bird/components/Pipes.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/flappy-bird/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/flappy-bird/components/index.d.ts +6 -0
- package/lib/typescript/src/games/flappy-bird/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts +4 -0
- package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts +115 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts +5 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerService.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts +43 -0
- package/lib/typescript/src/games/fruit-merger/FruitMergerStore.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts +10 -0
- package/lib/typescript/src/games/fruit-merger/components/FruitItem.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts +8 -0
- package/lib/typescript/src/games/fruit-merger/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/fruit-merger/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/fruit-merger/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-merger/components/index.d.ts +5 -0
- package/lib/typescript/src/games/fruit-merger/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
- package/lib/typescript/src/games/game-2048/Game2048.d.ts +4 -0
- package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts +163 -0
- package/lib/typescript/src/games/game-2048/Game2048Constants.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/Game2048Service.d.ts +113 -0
- package/lib/typescript/src/games/game-2048/Game2048Service.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/Game2048Store.d.ts +48 -0
- package/lib/typescript/src/games/game-2048/Game2048Store.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/game-2048/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts +7 -0
- package/lib/typescript/src/games/game-2048/components/GameGrid.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/GameTile.d.ts +13 -0
- package/lib/typescript/src/games/game-2048/components/GameTile.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/game-2048/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/game-2048/components/index.d.ts +5 -0
- package/lib/typescript/src/games/game-2048/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts +4 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts +108 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts +34 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersService.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts +56 -0
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbersStore.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/sliding-numbers/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts +7 -0
- package/lib/typescript/src/games/sliding-numbers/components/NumbersGrid.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts +11 -0
- package/lib/typescript/src/games/sliding-numbers/components/NumbersTile.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/sliding-numbers/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/sliding-numbers/components/index.d.ts +5 -0
- package/lib/typescript/src/games/sliding-numbers/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/Snake.d.ts +4 -0
- package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/SnakeConstants.d.ts +93 -0
- package/lib/typescript/src/games/snake/SnakeConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/SnakeService.d.ts +30 -0
- package/lib/typescript/src/games/snake/SnakeService.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/SnakeStore.d.ts +43 -0
- package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/components/GameBackground.d.ts +5 -0
- package/lib/typescript/src/games/snake/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/components/GameGrid.d.ts +3 -0
- package/lib/typescript/src/games/snake/components/GameGrid.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts +3 -0
- package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/components/index.d.ts +4 -0
- package/lib/typescript/src/games/snake/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/snake/index.d.ts +4 -0
- package/lib/typescript/src/games/snake/index.d.ts.map +1 -0
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +8 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesConstants.d.ts +156 -0
- package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesService.d.ts +10 -2
- package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
- package/lib/typescript/src/services/SoundsService.d.ts +103 -0
- package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
- package/lib/typescript/src/shared/helpers/GameOverModal.d.ts +2 -0
- package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -1
- package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Dimensions } from 'react-native';
|
|
4
|
+
const {
|
|
5
|
+
width,
|
|
6
|
+
height
|
|
7
|
+
} = Dimensions.get('window');
|
|
8
|
+
export const FLAPPY_BIRD_GAME_CONFIG = {
|
|
9
|
+
BIRD_SIZE: 40,
|
|
10
|
+
BIRD_START_X: width * 0.2,
|
|
11
|
+
BIRD_START_Y: height * 0.4,
|
|
12
|
+
GRAVITY: 0.25,
|
|
13
|
+
JUMP_VELOCITY: -6.5,
|
|
14
|
+
MAX_FALL_SPEED: 7,
|
|
15
|
+
VELOCITY_DAMPING: 0.98,
|
|
16
|
+
PIPE_WIDTH: 60,
|
|
17
|
+
PIPE_GAP: 200,
|
|
18
|
+
PIPE_SPEED_EASY: 1.5,
|
|
19
|
+
PIPE_SPEED_MEDIUM: 2.5,
|
|
20
|
+
PIPE_SPEED_HARD: 3.5,
|
|
21
|
+
PIPE_SPAWN_INTERVAL: 2800,
|
|
22
|
+
MIN_PIPE_HEIGHT: 100,
|
|
23
|
+
MAX_PIPE_HEIGHT: height * 0.6,
|
|
24
|
+
GROUND_HEIGHT: 80,
|
|
25
|
+
GAME_WIDTH: width,
|
|
26
|
+
GAME_HEIGHT: height
|
|
27
|
+
};
|
|
28
|
+
export const FLAPPY_BIRD_COLORS = {
|
|
29
|
+
SKY_START: '#87CEEB',
|
|
30
|
+
SKY_END: '#E0F6FF',
|
|
31
|
+
GROUND: '#DEB887',
|
|
32
|
+
GROUND_DARK: '#8B7355',
|
|
33
|
+
PIPE_GREEN: '#5CB85C',
|
|
34
|
+
PIPE_DARK: '#4A934A',
|
|
35
|
+
BIRD_YELLOW: '#FFD700',
|
|
36
|
+
BIRD_ORANGE: '#FF8C00',
|
|
37
|
+
SCORE_TEXT: '#FFFFFF',
|
|
38
|
+
BUTTON_PRIMARY: '#5CB85C',
|
|
39
|
+
BUTTON_SECONDARY: '#4A934A',
|
|
40
|
+
GAME_OVER_BG: 'rgba(74, 147, 74, 0.95)',
|
|
41
|
+
SCORE_BACKGROUND: 'rgba(92, 184, 92, 0.4)',
|
|
42
|
+
SCORE_BORDER: 'rgba(255, 215, 0, 0.8)'
|
|
43
|
+
};
|
|
44
|
+
export const FLAPPY_BIRD_THEME = {
|
|
45
|
+
backgroundColor: '#87CEEB',
|
|
46
|
+
headerBackgroundColor: '#5CB85C',
|
|
47
|
+
headerTextColor: '#FFFFFF',
|
|
48
|
+
sectionBackgroundColor: 'rgba(255, 255, 255, 0.95)',
|
|
49
|
+
sectionTitleColor: '#2C3E50',
|
|
50
|
+
buttonSelectedColor: '#5CB85C',
|
|
51
|
+
buttonUnselectedColor: '#E8E8E8',
|
|
52
|
+
buttonSelectedTextColor: '#FFFFFF',
|
|
53
|
+
buttonUnselectedTextColor: '#7F8C8D',
|
|
54
|
+
switchTrackColorFalse: '#D1D5DB',
|
|
55
|
+
switchTrackColorTrue: '#5CB85C',
|
|
56
|
+
switchThumbColor: '#FFFFFF',
|
|
57
|
+
infoTextColor: '#7F8C8D'
|
|
58
|
+
};
|
|
59
|
+
export const FLAPPY_BIRD_DIFFICULTY_DESCRIPTIONS = {
|
|
60
|
+
easy: {
|
|
61
|
+
title: 'Easy Mode',
|
|
62
|
+
description: 'Perfect for beginners! Slower pipes and more time to react.',
|
|
63
|
+
features: ['Slower pipe speed', 'Easier timing', 'Great for learning']
|
|
64
|
+
},
|
|
65
|
+
medium: {
|
|
66
|
+
title: 'Medium Mode',
|
|
67
|
+
description: 'Balanced challenge for casual players.',
|
|
68
|
+
features: ['Moderate pipe speed', 'Standard difficulty', 'Good practice']
|
|
69
|
+
},
|
|
70
|
+
hard: {
|
|
71
|
+
title: 'Hard Mode',
|
|
72
|
+
description: 'Fast-paced action for experienced players!',
|
|
73
|
+
features: ['Fast pipe speed', 'Quick reflexes needed', 'Maximum challenge']
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
export const DIFFICULTY_CONFIG = {
|
|
77
|
+
easy: {
|
|
78
|
+
pipeSpeed: FLAPPY_BIRD_GAME_CONFIG.PIPE_SPEED_EASY,
|
|
79
|
+
pipeGap: 250
|
|
80
|
+
},
|
|
81
|
+
medium: {
|
|
82
|
+
pipeSpeed: FLAPPY_BIRD_GAME_CONFIG.PIPE_SPEED_MEDIUM,
|
|
83
|
+
pipeGap: 220
|
|
84
|
+
},
|
|
85
|
+
hard: {
|
|
86
|
+
pipeSpeed: FLAPPY_BIRD_GAME_CONFIG.PIPE_SPEED_HARD,
|
|
87
|
+
pipeGap: 200
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=FlappyBirdConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Dimensions","width","height","get","FLAPPY_BIRD_GAME_CONFIG","BIRD_SIZE","BIRD_START_X","BIRD_START_Y","GRAVITY","JUMP_VELOCITY","MAX_FALL_SPEED","VELOCITY_DAMPING","PIPE_WIDTH","PIPE_GAP","PIPE_SPEED_EASY","PIPE_SPEED_MEDIUM","PIPE_SPEED_HARD","PIPE_SPAWN_INTERVAL","MIN_PIPE_HEIGHT","MAX_PIPE_HEIGHT","GROUND_HEIGHT","GAME_WIDTH","GAME_HEIGHT","FLAPPY_BIRD_COLORS","SKY_START","SKY_END","GROUND","GROUND_DARK","PIPE_GREEN","PIPE_DARK","BIRD_YELLOW","BIRD_ORANGE","SCORE_TEXT","BUTTON_PRIMARY","BUTTON_SECONDARY","GAME_OVER_BG","SCORE_BACKGROUND","SCORE_BORDER","FLAPPY_BIRD_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","FLAPPY_BIRD_DIFFICULTY_DESCRIPTIONS","easy","title","description","features","medium","hard","DIFFICULTY_CONFIG","pipeSpeed","pipeGap"],"sourceRoot":"../../../../src","sources":["games/flappy-bird/FlappyBirdConstants.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AAEzC,MAAM;EAAEC,KAAK;EAAEC;AAAO,CAAC,GAAGF,UAAU,CAACG,GAAG,CAAC,QAAQ,CAAC;AAElD,OAAO,MAAMC,uBAAuB,GAAG;EACrCC,SAAS,EAAE,EAAE;EACbC,YAAY,EAAEL,KAAK,GAAG,GAAG;EACzBM,YAAY,EAAEL,MAAM,GAAG,GAAG;EAC1BM,OAAO,EAAE,IAAI;EACbC,aAAa,EAAE,CAAC,GAAG;EACnBC,cAAc,EAAE,CAAC;EACjBC,gBAAgB,EAAE,IAAI;EACtBC,UAAU,EAAE,EAAE;EACdC,QAAQ,EAAE,GAAG;EACbC,eAAe,EAAE,GAAG;EACpBC,iBAAiB,EAAE,GAAG;EACtBC,eAAe,EAAE,GAAG;EACpBC,mBAAmB,EAAE,IAAI;EACzBC,eAAe,EAAE,GAAG;EACpBC,eAAe,EAAEjB,MAAM,GAAG,GAAG;EAC7BkB,aAAa,EAAE,EAAE;EACjBC,UAAU,EAAEpB,KAAK;EACjBqB,WAAW,EAAEpB;AACf,CAAC;AAED,OAAO,MAAMqB,kBAAkB,GAAG;EAChCC,SAAS,EAAE,SAAS;EACpBC,OAAO,EAAE,SAAS;EAClBC,MAAM,EAAE,SAAS;EACjBC,WAAW,EAAE,SAAS;EACtBC,UAAU,EAAE,SAAS;EACrBC,SAAS,EAAE,SAAS;EACpBC,WAAW,EAAE,SAAS;EACtBC,WAAW,EAAE,SAAS;EACtBC,UAAU,EAAE,SAAS;EACrBC,cAAc,EAAE,SAAS;EACzBC,gBAAgB,EAAE,SAAS;EAC3BC,YAAY,EAAE,yBAAyB;EACvCC,gBAAgB,EAAE,wBAAwB;EAC1CC,YAAY,EAAE;AAChB,CAAC;AAED,OAAO,MAAMC,iBAAiB,GAAG;EAC/BC,eAAe,EAAE,SAAS;EAC1BC,qBAAqB,EAAE,SAAS;EAChCC,eAAe,EAAE,SAAS;EAC1BC,sBAAsB,EAAE,2BAA2B;EACnDC,iBAAiB,EAAE,SAAS;EAC5BC,mBAAmB,EAAE,SAAS;EAC9BC,qBAAqB,EAAE,SAAS;EAChCC,uBAAuB,EAAE,SAAS;EAClCC,yBAAyB,EAAE,SAAS;EACpCC,qBAAqB,EAAE,SAAS;EAChCC,oBAAoB,EAAE,SAAS;EAC/BC,gBAAgB,EAAE,SAAS;EAC3BC,aAAa,EAAE;AACjB,CAAC;AAED,OAAO,MAAMC,mCAAmC,GAAG;EACjDC,IAAI,EAAE;IACJC,KAAK,EAAE,WAAW;IAClBC,WAAW,EAAE,6DAA6D;IAC1EC,QAAQ,EAAE,CAAC,mBAAmB,EAAE,eAAe,EAAE,oBAAoB;EACvE,CAAC;EACDC,MAAM,EAAE;IACNH,KAAK,EAAE,aAAa;IACpBC,WAAW,EAAE,wCAAwC;IACrDC,QAAQ,EAAE,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,eAAe;EAC1E,CAAC;EACDE,IAAI,EAAE;IACJJ,KAAK,EAAE,WAAW;IAClBC,WAAW,EAAE,4CAA4C;IACzDC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,uBAAuB,EAAE,mBAAmB;EAC5E;AACF,CAAC;AAED,OAAO,MAAMG,iBAAiB,GAAG;EAC/BN,IAAI,EAAE;IACJO,SAAS,EAAExD,uBAAuB,CAACU,eAAe;IAClD+C,OAAO,EAAE;EACX,CAAC;EACDJ,MAAM,EAAE;IACNG,SAAS,EAAExD,uBAAuB,CAACW,iBAAiB;IACpD8C,OAAO,EAAE;EACX,CAAC;EACDH,IAAI,EAAE;IACJE,SAAS,EAAExD,uBAAuB,CAACY,eAAe;IAClD6C,OAAO,EAAE;EACX;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { create } from 'zustand';
|
|
4
|
+
import { subscribeWithSelector } from 'zustand/middleware';
|
|
5
|
+
import { immerMiddleware } from "../../services/GamesService.js";
|
|
6
|
+
import { FLAPPY_BIRD_GAME_CONFIG, DIFFICULTY_CONFIG } from "./FlappyBirdConstants.js";
|
|
7
|
+
const BRICK_WALL_HEIGHT = 150; // Must match Pipes.tsx
|
|
8
|
+
|
|
9
|
+
const generateRandomPipeHeight = () => {
|
|
10
|
+
const {
|
|
11
|
+
MIN_PIPE_HEIGHT,
|
|
12
|
+
GAME_HEIGHT,
|
|
13
|
+
GROUND_HEIGHT
|
|
14
|
+
} = FLAPPY_BIRD_GAME_CONFIG;
|
|
15
|
+
const playableHeight = GAME_HEIGHT - GROUND_HEIGHT - BRICK_WALL_HEIGHT * 2;
|
|
16
|
+
const minHeight = BRICK_WALL_HEIGHT + MIN_PIPE_HEIGHT;
|
|
17
|
+
const maxHeight = BRICK_WALL_HEIGHT + playableHeight * 0.6;
|
|
18
|
+
return minHeight + Math.random() * (maxHeight - minHeight);
|
|
19
|
+
};
|
|
20
|
+
export const useFlappyBirdStore = create()(subscribeWithSelector(immerMiddleware((set, get) => ({
|
|
21
|
+
isPlaying: false,
|
|
22
|
+
isGameOver: false,
|
|
23
|
+
score: 0,
|
|
24
|
+
survivalTime: 0,
|
|
25
|
+
birdY: FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y,
|
|
26
|
+
birdVelocity: 0,
|
|
27
|
+
pipes: [],
|
|
28
|
+
collisionBlasts: [],
|
|
29
|
+
gameLoopInterval: null,
|
|
30
|
+
pipeSpawnInterval: null,
|
|
31
|
+
timerInterval: null,
|
|
32
|
+
initializeGame: () => {
|
|
33
|
+
set(state => {
|
|
34
|
+
state.isPlaying = false;
|
|
35
|
+
state.isGameOver = false;
|
|
36
|
+
state.score = 0;
|
|
37
|
+
state.survivalTime = 0;
|
|
38
|
+
state.birdY = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y;
|
|
39
|
+
state.birdVelocity = 0;
|
|
40
|
+
state.pipes = [];
|
|
41
|
+
state.collisionBlasts = [];
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
startGame: settings => {
|
|
45
|
+
const state = get();
|
|
46
|
+
if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
|
|
47
|
+
if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
|
|
48
|
+
if (state.timerInterval) clearInterval(state.timerInterval);
|
|
49
|
+
set(state => {
|
|
50
|
+
state.isPlaying = true;
|
|
51
|
+
state.isGameOver = false;
|
|
52
|
+
state.birdY = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y;
|
|
53
|
+
state.birdVelocity = 0;
|
|
54
|
+
state.pipes = [];
|
|
55
|
+
state.score = 0;
|
|
56
|
+
state.survivalTime = 0;
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Start game loop (60fps)
|
|
60
|
+
const gameLoop = setInterval(() => {
|
|
61
|
+
get().updatePhysics(settings);
|
|
62
|
+
}, 1000 / 60);
|
|
63
|
+
|
|
64
|
+
// Start pipe spawning
|
|
65
|
+
const pipeSpawn = setInterval(() => {
|
|
66
|
+
get().spawnPipe(settings);
|
|
67
|
+
}, FLAPPY_BIRD_GAME_CONFIG.PIPE_SPAWN_INTERVAL);
|
|
68
|
+
|
|
69
|
+
// Start survival timer (1 second intervals)
|
|
70
|
+
const timer = setInterval(() => {
|
|
71
|
+
set(state => {
|
|
72
|
+
state.survivalTime += 1;
|
|
73
|
+
});
|
|
74
|
+
}, 1000);
|
|
75
|
+
set(state => {
|
|
76
|
+
state.gameLoopInterval = gameLoop;
|
|
77
|
+
state.pipeSpawnInterval = pipeSpawn;
|
|
78
|
+
state.timerInterval = timer;
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
// Spawn first pipe immediately
|
|
82
|
+
setTimeout(() => get().spawnPipe(settings), 500);
|
|
83
|
+
},
|
|
84
|
+
stopGame: () => {
|
|
85
|
+
const state = get();
|
|
86
|
+
if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
|
|
87
|
+
if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
|
|
88
|
+
if (state.timerInterval) clearInterval(state.timerInterval);
|
|
89
|
+
set(state => {
|
|
90
|
+
state.isPlaying = false;
|
|
91
|
+
state.isGameOver = true;
|
|
92
|
+
state.gameLoopInterval = null;
|
|
93
|
+
state.pipeSpawnInterval = null;
|
|
94
|
+
state.timerInterval = null;
|
|
95
|
+
});
|
|
96
|
+
},
|
|
97
|
+
resetGame: () => {
|
|
98
|
+
const state = get();
|
|
99
|
+
if (state.gameLoopInterval) clearInterval(state.gameLoopInterval);
|
|
100
|
+
if (state.pipeSpawnInterval) clearInterval(state.pipeSpawnInterval);
|
|
101
|
+
if (state.timerInterval) clearInterval(state.timerInterval);
|
|
102
|
+
set(state => {
|
|
103
|
+
state.isPlaying = false;
|
|
104
|
+
state.isGameOver = false;
|
|
105
|
+
state.score = 0;
|
|
106
|
+
state.survivalTime = 0;
|
|
107
|
+
state.birdY = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_Y;
|
|
108
|
+
state.birdVelocity = 0;
|
|
109
|
+
state.pipes = [];
|
|
110
|
+
state.collisionBlasts = [];
|
|
111
|
+
state.gameLoopInterval = null;
|
|
112
|
+
state.pipeSpawnInterval = null;
|
|
113
|
+
state.timerInterval = null;
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
jump: () => {
|
|
117
|
+
const state = get();
|
|
118
|
+
if (!state.isPlaying || state.isGameOver) return;
|
|
119
|
+
set(state => {
|
|
120
|
+
state.birdVelocity = FLAPPY_BIRD_GAME_CONFIG.JUMP_VELOCITY;
|
|
121
|
+
});
|
|
122
|
+
},
|
|
123
|
+
updatePhysics: settings => {
|
|
124
|
+
const state = get();
|
|
125
|
+
if (!state.isPlaying || state.isGameOver) return;
|
|
126
|
+
const config = DIFFICULTY_CONFIG[settings.difficulty];
|
|
127
|
+
const {
|
|
128
|
+
GAME_HEIGHT,
|
|
129
|
+
GROUND_HEIGHT,
|
|
130
|
+
GRAVITY,
|
|
131
|
+
BIRD_SIZE,
|
|
132
|
+
MAX_FALL_SPEED,
|
|
133
|
+
VELOCITY_DAMPING
|
|
134
|
+
} = FLAPPY_BIRD_GAME_CONFIG;
|
|
135
|
+
let topWallCollision = false;
|
|
136
|
+
let bottomWallCollision = false;
|
|
137
|
+
set(draftState => {
|
|
138
|
+
// Update bird physics with damping for smoother movement
|
|
139
|
+
draftState.birdVelocity += GRAVITY;
|
|
140
|
+
draftState.birdVelocity *= VELOCITY_DAMPING;
|
|
141
|
+
|
|
142
|
+
// Cap maximum fall speed for more control
|
|
143
|
+
if (draftState.birdVelocity > MAX_FALL_SPEED) {
|
|
144
|
+
draftState.birdVelocity = MAX_FALL_SPEED;
|
|
145
|
+
}
|
|
146
|
+
draftState.birdY += draftState.birdVelocity;
|
|
147
|
+
|
|
148
|
+
// Update pipes
|
|
149
|
+
for (let i = draftState.pipes.length - 1; i >= 0; i--) {
|
|
150
|
+
const pipe = draftState.pipes[i];
|
|
151
|
+
if (!pipe) continue;
|
|
152
|
+
pipe.x -= config.pipeSpeed;
|
|
153
|
+
|
|
154
|
+
// Check if bird passed pipe
|
|
155
|
+
if (!pipe.passed && pipe.x + FLAPPY_BIRD_GAME_CONFIG.PIPE_WIDTH < FLAPPY_BIRD_GAME_CONFIG.BIRD_START_X) {
|
|
156
|
+
pipe.passed = true;
|
|
157
|
+
draftState.score += 1;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Remove off-screen pipes
|
|
161
|
+
if (pipe.x + FLAPPY_BIRD_GAME_CONFIG.PIPE_WIDTH < 0) {
|
|
162
|
+
draftState.pipes.splice(i, 1);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
// Check boundaries - brick walls are at 150px from top and bottom
|
|
167
|
+
// Top brick wall collision
|
|
168
|
+
if (draftState.birdY < BRICK_WALL_HEIGHT) {
|
|
169
|
+
draftState.birdY = BRICK_WALL_HEIGHT;
|
|
170
|
+
draftState.birdVelocity = 0;
|
|
171
|
+
draftState.isGameOver = true;
|
|
172
|
+
draftState.isPlaying = false;
|
|
173
|
+
topWallCollision = true;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Bottom brick wall collision
|
|
177
|
+
if (draftState.birdY + BIRD_SIZE > GAME_HEIGHT - GROUND_HEIGHT - BRICK_WALL_HEIGHT) {
|
|
178
|
+
draftState.birdY = GAME_HEIGHT - GROUND_HEIGHT - BRICK_WALL_HEIGHT - BIRD_SIZE;
|
|
179
|
+
draftState.isGameOver = true;
|
|
180
|
+
draftState.isPlaying = false;
|
|
181
|
+
bottomWallCollision = true;
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
// Add collision blasts after state update
|
|
186
|
+
if (topWallCollision) {
|
|
187
|
+
const blastX = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_X + BIRD_SIZE / 2;
|
|
188
|
+
const blastY = BRICK_WALL_HEIGHT + BIRD_SIZE / 2;
|
|
189
|
+
get().addCollisionBlast(blastX, blastY);
|
|
190
|
+
get().stopGame(); // Stop game and clear all intervals including timer
|
|
191
|
+
}
|
|
192
|
+
if (bottomWallCollision) {
|
|
193
|
+
const blastX = FLAPPY_BIRD_GAME_CONFIG.BIRD_START_X + BIRD_SIZE / 2;
|
|
194
|
+
const blastY = GAME_HEIGHT - GROUND_HEIGHT - BRICK_WALL_HEIGHT - BIRD_SIZE / 2;
|
|
195
|
+
get().addCollisionBlast(blastX, blastY);
|
|
196
|
+
get().stopGame(); // Stop game and clear all intervals including timer
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Check collision with pipes
|
|
200
|
+
if (get().checkCollision()) {
|
|
201
|
+
get().stopGame();
|
|
202
|
+
}
|
|
203
|
+
},
|
|
204
|
+
spawnPipe: settings => {
|
|
205
|
+
const state = get();
|
|
206
|
+
if (!state.isPlaying || state.isGameOver) return;
|
|
207
|
+
const config = DIFFICULTY_CONFIG[settings.difficulty];
|
|
208
|
+
const topHeight = generateRandomPipeHeight();
|
|
209
|
+
const bottomY = topHeight + config.pipeGap;
|
|
210
|
+
const pipe = {
|
|
211
|
+
id: `pipe-${Date.now()}-${Math.random()}`,
|
|
212
|
+
x: FLAPPY_BIRD_GAME_CONFIG.GAME_WIDTH,
|
|
213
|
+
topHeight,
|
|
214
|
+
bottomY,
|
|
215
|
+
passed: false
|
|
216
|
+
};
|
|
217
|
+
set(state => {
|
|
218
|
+
state.pipes.push(pipe);
|
|
219
|
+
});
|
|
220
|
+
},
|
|
221
|
+
checkCollision: () => {
|
|
222
|
+
const state = get();
|
|
223
|
+
const {
|
|
224
|
+
BIRD_START_X,
|
|
225
|
+
BIRD_SIZE,
|
|
226
|
+
PIPE_WIDTH
|
|
227
|
+
} = FLAPPY_BIRD_GAME_CONFIG;
|
|
228
|
+
const birdLeft = BIRD_START_X;
|
|
229
|
+
const birdRight = BIRD_START_X + BIRD_SIZE;
|
|
230
|
+
const birdTop = state.birdY;
|
|
231
|
+
const birdBottom = state.birdY + BIRD_SIZE;
|
|
232
|
+
const birdCenterX = BIRD_START_X + BIRD_SIZE / 2;
|
|
233
|
+
const birdCenterY = state.birdY + BIRD_SIZE / 2;
|
|
234
|
+
for (const pipe of state.pipes) {
|
|
235
|
+
const pipeLeft = pipe.x;
|
|
236
|
+
const pipeRight = pipe.x + PIPE_WIDTH;
|
|
237
|
+
|
|
238
|
+
// Check if bird is in pipe's horizontal range
|
|
239
|
+
if (birdRight > pipeLeft && birdLeft < pipeRight) {
|
|
240
|
+
// Check collision with top pipe
|
|
241
|
+
if (birdTop < pipe.topHeight) {
|
|
242
|
+
get().addCollisionBlast(birdCenterX, birdCenterY);
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
// Check collision with bottom pipe
|
|
246
|
+
if (birdBottom > pipe.bottomY) {
|
|
247
|
+
get().addCollisionBlast(birdCenterX, birdCenterY);
|
|
248
|
+
return true;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return false;
|
|
253
|
+
},
|
|
254
|
+
addCollisionBlast: (x, y) => {
|
|
255
|
+
set(state => {
|
|
256
|
+
state.collisionBlasts.push({
|
|
257
|
+
id: `blast-${Date.now()}-${Math.random()}`,
|
|
258
|
+
x,
|
|
259
|
+
y
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
},
|
|
263
|
+
removeCollisionBlast: id => {
|
|
264
|
+
set(state => {
|
|
265
|
+
state.collisionBlasts = state.collisionBlasts.filter(blast => blast.id !== id);
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}))));
|
|
269
|
+
export const useIsPlaying = () => useFlappyBirdStore(state => state.isPlaying);
|
|
270
|
+
export const useIsGameOver = () => useFlappyBirdStore(state => state.isGameOver);
|
|
271
|
+
export const useScore = () => useFlappyBirdStore(state => state.score);
|
|
272
|
+
export const useSurvivalTime = () => useFlappyBirdStore(state => state.survivalTime);
|
|
273
|
+
export const useBirdY = () => useFlappyBirdStore(state => state.birdY);
|
|
274
|
+
export const usePipes = () => useFlappyBirdStore(state => state.pipes);
|
|
275
|
+
export const useCollisionBlasts = () => useFlappyBirdStore(state => state.collisionBlasts);
|
|
276
|
+
//# sourceMappingURL=FlappyBirdStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["create","subscribeWithSelector","immerMiddleware","FLAPPY_BIRD_GAME_CONFIG","DIFFICULTY_CONFIG","BRICK_WALL_HEIGHT","generateRandomPipeHeight","MIN_PIPE_HEIGHT","GAME_HEIGHT","GROUND_HEIGHT","playableHeight","minHeight","maxHeight","Math","random","useFlappyBirdStore","set","get","isPlaying","isGameOver","score","survivalTime","birdY","BIRD_START_Y","birdVelocity","pipes","collisionBlasts","gameLoopInterval","pipeSpawnInterval","timerInterval","initializeGame","state","startGame","settings","clearInterval","gameLoop","setInterval","updatePhysics","pipeSpawn","spawnPipe","PIPE_SPAWN_INTERVAL","timer","setTimeout","stopGame","resetGame","jump","JUMP_VELOCITY","config","difficulty","GRAVITY","BIRD_SIZE","MAX_FALL_SPEED","VELOCITY_DAMPING","topWallCollision","bottomWallCollision","draftState","i","length","pipe","x","pipeSpeed","passed","PIPE_WIDTH","BIRD_START_X","splice","blastX","blastY","addCollisionBlast","checkCollision","topHeight","bottomY","pipeGap","id","Date","now","GAME_WIDTH","push","birdLeft","birdRight","birdTop","birdBottom","birdCenterX","birdCenterY","pipeLeft","pipeRight","y","removeCollisionBlast","filter","blast","useIsPlaying","useIsGameOver","useScore","useSurvivalTime","useBirdY","usePipes","useCollisionBlasts"],"sourceRoot":"../../../../src","sources":["games/flappy-bird/FlappyBirdStore.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import Animated, { useAnimatedStyle, interpolate, Extrapolate } from 'react-native-reanimated';
|
|
5
|
+
import { Canvas, Circle, Group } from '@shopify/react-native-skia';
|
|
6
|
+
import { FLAPPY_BIRD_GAME_CONFIG, FLAPPY_BIRD_COLORS } from "../FlappyBirdConstants.js";
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
const {
|
|
9
|
+
BIRD_SIZE
|
|
10
|
+
} = FLAPPY_BIRD_GAME_CONFIG;
|
|
11
|
+
|
|
12
|
+
// Define styles outside component to prevent re-creation
|
|
13
|
+
const birdContainerStyle = {
|
|
14
|
+
position: 'absolute',
|
|
15
|
+
width: BIRD_SIZE,
|
|
16
|
+
height: BIRD_SIZE
|
|
17
|
+
};
|
|
18
|
+
const canvasStyle = {
|
|
19
|
+
width: BIRD_SIZE,
|
|
20
|
+
height: BIRD_SIZE
|
|
21
|
+
};
|
|
22
|
+
export const Bird = /*#__PURE__*/React.memo(({
|
|
23
|
+
birdY,
|
|
24
|
+
velocity
|
|
25
|
+
}) => {
|
|
26
|
+
const {
|
|
27
|
+
BIRD_START_X
|
|
28
|
+
} = FLAPPY_BIRD_GAME_CONFIG;
|
|
29
|
+
|
|
30
|
+
// Use derived value instead of useEffect (PERFORMANCE OPTIMIZATION)
|
|
31
|
+
const animatedStyle = useAnimatedStyle(() => {
|
|
32
|
+
'worklet';
|
|
33
|
+
|
|
34
|
+
const targetRotation = interpolate(velocity, [-15, 15], [-30, 90], Extrapolate.CLAMP);
|
|
35
|
+
return {
|
|
36
|
+
transform: [{
|
|
37
|
+
translateX: BIRD_START_X
|
|
38
|
+
}, {
|
|
39
|
+
translateY: birdY
|
|
40
|
+
}, {
|
|
41
|
+
rotate: `${targetRotation}deg`
|
|
42
|
+
}]
|
|
43
|
+
};
|
|
44
|
+
}, [birdY, velocity]);
|
|
45
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
46
|
+
style: [birdContainerStyle, animatedStyle],
|
|
47
|
+
children: /*#__PURE__*/_jsx(Canvas, {
|
|
48
|
+
style: canvasStyle,
|
|
49
|
+
children: /*#__PURE__*/_jsxs(Group, {
|
|
50
|
+
children: [/*#__PURE__*/_jsx(Circle, {
|
|
51
|
+
cx: BIRD_SIZE / 2,
|
|
52
|
+
cy: BIRD_SIZE / 2,
|
|
53
|
+
r: BIRD_SIZE / 2,
|
|
54
|
+
color: FLAPPY_BIRD_COLORS.BIRD_YELLOW
|
|
55
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
56
|
+
cx: BIRD_SIZE / 2,
|
|
57
|
+
cy: BIRD_SIZE / 2 + 5,
|
|
58
|
+
r: BIRD_SIZE / 3,
|
|
59
|
+
color: FLAPPY_BIRD_COLORS.BIRD_ORANGE
|
|
60
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
61
|
+
cx: BIRD_SIZE / 2 + 8,
|
|
62
|
+
cy: BIRD_SIZE / 2 - 5,
|
|
63
|
+
r: 4,
|
|
64
|
+
color: "#FFFFFF"
|
|
65
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
66
|
+
cx: BIRD_SIZE / 2 + 8,
|
|
67
|
+
cy: BIRD_SIZE / 2 - 5,
|
|
68
|
+
r: 2,
|
|
69
|
+
color: "#000000"
|
|
70
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
71
|
+
cx: BIRD_SIZE / 2 + 15,
|
|
72
|
+
cy: BIRD_SIZE / 2,
|
|
73
|
+
r: 5,
|
|
74
|
+
color: "#FF8C00"
|
|
75
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
76
|
+
cx: BIRD_SIZE / 2 - 5,
|
|
77
|
+
cy: BIRD_SIZE / 2 + 5,
|
|
78
|
+
r: 10,
|
|
79
|
+
color: FLAPPY_BIRD_COLORS.BIRD_ORANGE,
|
|
80
|
+
opacity: 0.8
|
|
81
|
+
})]
|
|
82
|
+
})
|
|
83
|
+
})
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
Bird.displayName = 'Bird';
|
|
87
|
+
//# sourceMappingURL=Bird.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Animated","useAnimatedStyle","interpolate","Extrapolate","Canvas","Circle","Group","FLAPPY_BIRD_GAME_CONFIG","FLAPPY_BIRD_COLORS","jsx","_jsx","jsxs","_jsxs","BIRD_SIZE","birdContainerStyle","position","width","height","canvasStyle","Bird","memo","birdY","velocity","BIRD_START_X","animatedStyle","targetRotation","CLAMP","transform","translateX","translateY","rotate","View","style","children","cx","cy","r","color","BIRD_YELLOW","BIRD_ORANGE","opacity","displayName"],"sourceRoot":"../../../../../src","sources":["games/flappy-bird/components/Bird.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useCallback, useEffect, useRef } from 'react';
|
|
4
|
+
import { View, StyleSheet, TouchableOpacity } from 'react-native';
|
|
5
|
+
import { GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
6
|
+
import { usePipes, useFlappyBirdStore, useCollisionBlasts } from "../FlappyBirdStore.js";
|
|
7
|
+
import { Bird } from "./Bird.js";
|
|
8
|
+
import { Pipes } from "./Pipes.js";
|
|
9
|
+
import { ParticleBlast } from "../../../shared/helpers/index.js";
|
|
10
|
+
import { playSound, GAME_SOUNDS } from "../../../services/SoundsService.js";
|
|
11
|
+
import { playHaptic, HapticType } from "../../../services/HapticsService.js";
|
|
12
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
// Constant particle colors - defined outside component to prevent re-creation
|
|
14
|
+
const PARTICLE_COLORS = ['#FFD700', '#FF8C00', '#FF6B6B', '#FF4757', '#FFA500', '#FF6347'];
|
|
15
|
+
export const GameArea = /*#__PURE__*/React.memo(({
|
|
16
|
+
settings
|
|
17
|
+
}) => {
|
|
18
|
+
const birdY = useFlappyBirdStore(state => state.birdY);
|
|
19
|
+
const birdVelocity = useFlappyBirdStore(state => state.birdVelocity);
|
|
20
|
+
const isPlaying = useFlappyBirdStore(state => state.isPlaying);
|
|
21
|
+
const score = useFlappyBirdStore(state => state.score);
|
|
22
|
+
const pipes = usePipes();
|
|
23
|
+
const collisionBlasts = useCollisionBlasts();
|
|
24
|
+
|
|
25
|
+
// Stable references - don't change on re-renders
|
|
26
|
+
const jump = useFlappyBirdStore(state => state.jump);
|
|
27
|
+
const removeCollisionBlast = useFlappyBirdStore(state => state.removeCollisionBlast);
|
|
28
|
+
const prevScoreRef = useRef(0);
|
|
29
|
+
|
|
30
|
+
// Play sound when score increases (bird passes through pipe)
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (score > prevScoreRef.current && isPlaying) {
|
|
33
|
+
playSound(GAME_SOUNDS.FLAPPY_BIRD.SCORE, settings.enableSounds);
|
|
34
|
+
playHaptic(HapticType.LIGHT, settings.enableHaptics);
|
|
35
|
+
}
|
|
36
|
+
prevScoreRef.current = score;
|
|
37
|
+
}, [score, isPlaying, settings.enableSounds, settings.enableHaptics]);
|
|
38
|
+
const handleTap = useCallback(() => {
|
|
39
|
+
if (!isPlaying) return;
|
|
40
|
+
jump();
|
|
41
|
+
playSound(GAME_SOUNDS.FLAPPY_BIRD.FLAP, settings.enableSounds);
|
|
42
|
+
playHaptic(HapticType.LIGHT, settings.enableHaptics);
|
|
43
|
+
}, [isPlaying, jump, settings.enableSounds, settings.enableHaptics]);
|
|
44
|
+
|
|
45
|
+
// Memoize particle blast callback to prevent re-creating on every render
|
|
46
|
+
const handleBlastComplete = useCallback(id => {
|
|
47
|
+
removeCollisionBlast(id);
|
|
48
|
+
}, [removeCollisionBlast]);
|
|
49
|
+
return /*#__PURE__*/_jsx(View, {
|
|
50
|
+
style: styles.container,
|
|
51
|
+
children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
|
|
52
|
+
children: /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
53
|
+
style: styles.container,
|
|
54
|
+
activeOpacity: 1,
|
|
55
|
+
onPress: handleTap,
|
|
56
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
57
|
+
style: styles.gameContainer,
|
|
58
|
+
children: [/*#__PURE__*/_jsx(Pipes, {
|
|
59
|
+
pipes: pipes
|
|
60
|
+
}), /*#__PURE__*/_jsx(Bird, {
|
|
61
|
+
birdY: birdY,
|
|
62
|
+
velocity: birdVelocity
|
|
63
|
+
}), collisionBlasts.map(blast => /*#__PURE__*/_jsx(ParticleBlast, {
|
|
64
|
+
x: blast.x,
|
|
65
|
+
y: blast.y,
|
|
66
|
+
particleCount: 12,
|
|
67
|
+
colors: PARTICLE_COLORS,
|
|
68
|
+
duration: 800,
|
|
69
|
+
onComplete: () => handleBlastComplete(blast.id)
|
|
70
|
+
}, blast.id))]
|
|
71
|
+
})
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
const styles = StyleSheet.create({
|
|
77
|
+
container: {
|
|
78
|
+
flex: 1
|
|
79
|
+
},
|
|
80
|
+
gameContainer: {
|
|
81
|
+
flex: 1,
|
|
82
|
+
position: 'relative'
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
GameArea.displayName = 'GameArea';
|
|
86
|
+
//# sourceMappingURL=GameArea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useRef","View","StyleSheet","TouchableOpacity","GestureHandlerRootView","usePipes","useFlappyBirdStore","useCollisionBlasts","Bird","Pipes","ParticleBlast","playSound","GAME_SOUNDS","playHaptic","HapticType","jsx","_jsx","jsxs","_jsxs","PARTICLE_COLORS","GameArea","memo","settings","birdY","state","birdVelocity","isPlaying","score","pipes","collisionBlasts","jump","removeCollisionBlast","prevScoreRef","current","FLAPPY_BIRD","SCORE","enableSounds","LIGHT","enableHaptics","handleTap","FLAP","handleBlastComplete","id","style","styles","container","children","activeOpacity","onPress","gameContainer","velocity","map","blast","x","y","particleCount","colors","duration","onComplete","create","flex","position","displayName"],"sourceRoot":"../../../../../src","sources":["games/flappy-bird/components/GameArea.tsx"],"mappings":"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","ignoreList":[]}
|