react-native-games 0.7.0 → 1.0.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 +507 -84
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +13 -21
- package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +1 -1
- package/lib/module/games/balloon-blaster/components/GameArea.js +1 -1
- package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/GameBackground.js +24 -17
- package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js +47 -47
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/candy-crush/CandyCrush.js +131 -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 +303 -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 +79 -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/colors-sort/ColorsSort.js +143 -0
- package/lib/module/games/colors-sort/ColorsSort.js.map +1 -0
- package/lib/module/games/colors-sort/ColorsSortConstants.js +72 -0
- package/lib/module/games/colors-sort/ColorsSortConstants.js.map +1 -0
- package/lib/module/games/colors-sort/ColorsSortService.js +255 -0
- package/lib/module/games/colors-sort/ColorsSortService.js.map +1 -0
- package/lib/module/games/colors-sort/ColorsSortStore.js +257 -0
- package/lib/module/games/colors-sort/ColorsSortStore.js.map +1 -0
- package/lib/module/games/colors-sort/components/ColorContainer.js +140 -0
- package/lib/module/games/colors-sort/components/ColorContainer.js.map +1 -0
- package/lib/module/games/colors-sort/components/GameBackground.js +135 -0
- package/lib/module/games/colors-sort/components/GameBackground.js.map +1 -0
- package/lib/module/games/colors-sort/components/ScoreBoard.js +70 -0
- package/lib/module/games/colors-sort/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/colors-sort/components/index.js +6 -0
- package/lib/module/games/colors-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 +189 -0
- package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJumpService.js +270 -0
- package/lib/module/games/dino-jump/DinoJumpService.js.map +1 -0
- package/lib/module/games/dino-jump/DinoJumpStore.js +381 -0
- package/lib/module/games/dino-jump/DinoJumpStore.js.map +1 -0
- package/lib/module/games/dino-jump/components/DinoSprite.js +418 -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 +444 -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 +105 -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 +126 -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 +300 -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 +87 -0
- package/lib/module/games/flappy-bird/components/GameArea.js.map +1 -0
- package/lib/module/games/flappy-bird/components/GameBackground.js +79 -0
- package/lib/module/games/flappy-bird/components/GameBackground.js.map +1 -0
- package/lib/module/games/flappy-bird/components/Pipes.js +172 -0
- package/lib/module/games/flappy-bird/components/Pipes.js.map +1 -0
- package/lib/module/games/flappy-bird/components/ScoreBoard.js +73 -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 +120 -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 +315 -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 +103 -0
- package/lib/module/games/fruit-merger/components/GameArea.js.map +1 -0
- package/lib/module/games/fruit-merger/components/GameBackground.js +498 -0
- package/lib/module/games/fruit-merger/components/GameBackground.js.map +1 -0
- package/lib/module/games/fruit-merger/components/ScoreBoard.js +58 -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 +14 -22
- package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js +1 -1
- package/lib/module/games/fruit-ninja/components/GameArea.js +1 -1
- package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/GameBackground.js +70 -45
- package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js +47 -46
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/game-2048/Game2048.js +149 -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 +236 -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 +52 -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 +51 -41
- package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
- package/lib/module/games/maze-runner/MazeRunnerService.js +19 -17
- package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -1
- package/lib/module/games/maze-runner/components/ScoreBoard.js +32 -42
- package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidget.js +57 -66
- package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetStore.js +6 -44
- package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -1
- package/lib/module/games/popit-fidget/components/ScoreBoard.js +31 -45
- package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbers.js +159 -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 +274 -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 +64 -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 +189 -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 +182 -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 +51 -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 +22 -26
- package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterService.js +7 -6
- package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterStore.js +25 -11
- package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -1
- package/lib/module/games/space-fighter/components/GameArea.js +1 -7
- package/lib/module/games/space-fighter/components/GameArea.js.map +1 -1
- package/lib/module/games/space-fighter/components/ScoreBoard.js +47 -48
- package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMole.js +17 -10
- package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js +1 -1
- package/lib/module/games/whack-a-mole/components/GameBackground.js +37 -30
- package/lib/module/games/whack-a-mole/components/GameBackground.js.map +1 -1
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js +32 -38
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
- package/lib/module/helpers/AnimationFrame.js.map +1 -0
- package/lib/module/helpers/AnimationTracker.js.map +1 -0
- package/lib/module/helpers/ErrorHandler.js.map +1 -0
- package/lib/module/helpers/GameControlButton.js.map +1 -0
- package/lib/module/{shared/helpers → helpers}/GameOverModal.js +6 -3
- package/lib/module/helpers/GameOverModal.js.map +1 -0
- package/lib/module/{shared/helpers → helpers}/GameSettingsModal.js +5 -5
- package/lib/module/helpers/GameSettingsModal.js.map +1 -0
- package/lib/module/{shared/helpers → helpers}/ParticleBlast.js +3 -2
- package/lib/module/helpers/ParticleBlast.js.map +1 -0
- package/lib/module/helpers/ScoreBoardContainer.js +34 -0
- package/lib/module/helpers/ScoreBoardContainer.js.map +1 -0
- package/lib/module/{shared/helpers → helpers}/index.js +1 -1
- package/lib/module/helpers/index.js.map +1 -0
- package/lib/module/index.js +9 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/services/GamesConstants.js +100 -5
- package/lib/module/services/GamesConstants.js.map +1 -1
- package/lib/module/services/GamesService.js +108 -42
- 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/services/UtilsService.js +32 -0
- package/lib/module/services/UtilsService.js.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +1 -0
- 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 +5 -1
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.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 +6 -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/colors-sort/ColorsSort.d.ts +4 -0
- package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts.map +1 -0
- package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts +54 -0
- package/lib/typescript/src/games/colors-sort/ColorsSortConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts +66 -0
- package/lib/typescript/src/games/colors-sort/ColorsSortService.d.ts.map +1 -0
- package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts +48 -0
- package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts.map +1 -0
- package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts +11 -0
- package/lib/typescript/src/games/colors-sort/components/ColorContainer.d.ts.map +1 -0
- package/lib/typescript/src/games/colors-sort/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/colors-sort/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/colors-sort/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/colors-sort/components/index.d.ts +4 -0
- package/lib/typescript/src/games/colors-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 +97 -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 +8 -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 +7 -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 +8 -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 +9 -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 +7 -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 +8 -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 +7 -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 +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts +1 -0
- 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 +5 -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 +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 +7 -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 +1 -1
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts +1 -0
- package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +1 -0
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +2 -5
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.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/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 +7 -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 +7 -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 +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighter.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 +2 -0
- package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +5 -1
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts +1 -0
- package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts +1 -0
- package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/helpers/AnimationFrame.d.ts.map +1 -0
- package/lib/typescript/src/helpers/AnimationTracker.d.ts.map +1 -0
- package/lib/typescript/src/helpers/ErrorHandler.d.ts.map +1 -0
- package/lib/typescript/src/helpers/GameControlButton.d.ts.map +1 -0
- package/lib/typescript/src/{shared/helpers → helpers}/GameOverModal.d.ts +2 -0
- package/lib/typescript/src/helpers/GameOverModal.d.ts.map +1 -0
- package/lib/typescript/src/{shared/helpers → helpers}/GameSettingsModal.d.ts +1 -1
- package/lib/typescript/src/helpers/GameSettingsModal.d.ts.map +1 -0
- package/lib/typescript/src/helpers/ParticleBlast.d.ts.map +1 -0
- package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts +9 -0
- package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts.map +1 -0
- package/lib/typescript/src/{shared/helpers → helpers}/index.d.ts +2 -1
- package/lib/typescript/src/helpers/index.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +9 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesConstants.d.ts +162 -0
- package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesService.d.ts +3 -25
- 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/services/UtilsService.d.ts +38 -0
- package/lib/typescript/src/services/UtilsService.d.ts.map +1 -0
- package/package.json +1 -1
- package/lib/module/shared/helpers/AnimationFrame.js.map +0 -1
- package/lib/module/shared/helpers/AnimationTracker.js.map +0 -1
- package/lib/module/shared/helpers/ErrorHandler.js.map +0 -1
- package/lib/module/shared/helpers/GameControlButton.js.map +0 -1
- package/lib/module/shared/helpers/GameOverModal.js.map +0 -1
- package/lib/module/shared/helpers/GameSettingsModal.js.map +0 -1
- package/lib/module/shared/helpers/ParticleBlast.js.map +0 -1
- package/lib/module/shared/helpers/ResponsiveScoreBoard.js +0 -81
- package/lib/module/shared/helpers/ResponsiveScoreBoard.js.map +0 -1
- package/lib/module/shared/helpers/index.js.map +0 -1
- package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +0 -1
- package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +0 -1
- package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +0 -1
- package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +0 -1
- package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +0 -1
- package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +0 -1
- package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts +0 -42
- package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts.map +0 -1
- package/lib/typescript/src/shared/helpers/index.d.ts.map +0 -1
- /package/lib/module/{shared/helpers → helpers}/AnimationFrame.js +0 -0
- /package/lib/module/{shared/helpers → helpers}/AnimationTracker.js +0 -0
- /package/lib/module/{shared/helpers → helpers}/ErrorHandler.js +0 -0
- /package/lib/module/{shared/helpers → helpers}/GameControlButton.js +0 -0
- /package/lib/typescript/src/{shared/helpers → helpers}/AnimationFrame.d.ts +0 -0
- /package/lib/typescript/src/{shared/helpers → helpers}/AnimationTracker.d.ts +0 -0
- /package/lib/typescript/src/{shared/helpers → helpers}/ErrorHandler.d.ts +0 -0
- /package/lib/typescript/src/{shared/helpers → helpers}/GameControlButton.d.ts +0 -0
- /package/lib/typescript/src/{shared/helpers → helpers}/ParticleBlast.d.ts +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, StyleSheet } from 'react-native';
|
|
5
|
+
import { GameControlButton, GameOverModal, GameSettingsModal } from "../../helpers/index.js";
|
|
6
|
+
import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/UtilsService.js";
|
|
7
|
+
import { GameBackground, GameGrid, ScoreBoard } from "./components/index.js";
|
|
8
|
+
import { useCandyCrushStore, useScore, useIsPlaying, useIsGameOver } from "./CandyCrushStore.js";
|
|
9
|
+
import { CANDY_CRUSH_COLORS } from "./CandyCrushConstants.js";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
export const CandyCrush = /*#__PURE__*/React.memo(({
|
|
12
|
+
settings,
|
|
13
|
+
onSettingsChange
|
|
14
|
+
}) => {
|
|
15
|
+
// Zustand store selectors for optimal re-renders
|
|
16
|
+
const score = useScore();
|
|
17
|
+
const isPlaying = useIsPlaying();
|
|
18
|
+
const isGameOver = useIsGameOver();
|
|
19
|
+
|
|
20
|
+
// Store actions (memoized to prevent re-creation)
|
|
21
|
+
const startGame = useCandyCrushStore(state => state.startGame);
|
|
22
|
+
const stopGame = useCandyCrushStore(state => state.stopGame);
|
|
23
|
+
const resetGame = useCandyCrushStore(state => state.resetGame);
|
|
24
|
+
const initializeGame = useCandyCrushStore(state => state.initializeGame);
|
|
25
|
+
const updateSettings = useCandyCrushStore(state => state.updateSettings);
|
|
26
|
+
|
|
27
|
+
// Update settings when they change
|
|
28
|
+
React.useEffect(() => {
|
|
29
|
+
const enableSounds = settings?.enableSounds ?? true;
|
|
30
|
+
const enableHaptics = settings?.enableHaptics ?? true;
|
|
31
|
+
updateSettings(enableSounds, enableHaptics);
|
|
32
|
+
}, [settings?.enableSounds, settings?.enableHaptics, updateSettings]);
|
|
33
|
+
|
|
34
|
+
// Initialize on mount and when difficulty changes
|
|
35
|
+
React.useEffect(() => {
|
|
36
|
+
const difficulty = settings?.difficulty || 'easy';
|
|
37
|
+
initializeGame(difficulty);
|
|
38
|
+
}, [settings?.difficulty, initializeGame]);
|
|
39
|
+
|
|
40
|
+
// Game control handlers
|
|
41
|
+
const handleStartGame = React.useCallback(() => {
|
|
42
|
+
startGame();
|
|
43
|
+
}, [startGame]);
|
|
44
|
+
const handleResetGame = React.useCallback(() => {
|
|
45
|
+
resetGame();
|
|
46
|
+
}, [resetGame]);
|
|
47
|
+
const handleStopGame = React.useCallback(() => {
|
|
48
|
+
stopGame();
|
|
49
|
+
}, [stopGame]);
|
|
50
|
+
|
|
51
|
+
// Memoized GameControlButton props
|
|
52
|
+
const gameControlButtonProps = React.useMemo(() => ({
|
|
53
|
+
isPlaying,
|
|
54
|
+
gameOver: isGameOver,
|
|
55
|
+
onStartGame: handleStartGame,
|
|
56
|
+
onStopGame: handleStopGame,
|
|
57
|
+
onResetGame: handleResetGame,
|
|
58
|
+
startButtonText: 'Start Crushing!',
|
|
59
|
+
startButtonSubtext: 'Match 3 or more',
|
|
60
|
+
startButtonColor: CANDY_CRUSH_COLORS.BUTTON_PRIMARY,
|
|
61
|
+
startButtonBorderColor: CANDY_CRUSH_COLORS.BUTTON_SECONDARY
|
|
62
|
+
}), [isPlaying, isGameOver, handleStartGame, handleStopGame, handleResetGame]);
|
|
63
|
+
|
|
64
|
+
// Memoized GameOverModal props
|
|
65
|
+
const gameOverModalProps = React.useMemo(() => ({
|
|
66
|
+
isVisible: isGameOver,
|
|
67
|
+
score,
|
|
68
|
+
onPlayAgain: handleResetGame,
|
|
69
|
+
buttonText: 'Crush Again!',
|
|
70
|
+
primaryColor: CANDY_CRUSH_COLORS.MODAL_PRIMARY,
|
|
71
|
+
borderColor: CANDY_CRUSH_COLORS.MODAL_BORDER,
|
|
72
|
+
buttonColor: CANDY_CRUSH_COLORS.MODAL_BUTTON,
|
|
73
|
+
buttonBorderColor: CANDY_CRUSH_COLORS.MODAL_BUTTON_BORDER,
|
|
74
|
+
scoreFormatter: s => `${s}`,
|
|
75
|
+
additionalInfo: 'Time\'s up!'
|
|
76
|
+
}), [isGameOver, score, handleResetGame]);
|
|
77
|
+
|
|
78
|
+
// Memoized GameSettingsModal props
|
|
79
|
+
const gameSettingsModalProps = React.useMemo(() => ({
|
|
80
|
+
gameId: GAME_IDS.CANDY_CRUSH,
|
|
81
|
+
settings: settings || DEFAULT_GAME_SETTINGS,
|
|
82
|
+
onSettingsChange
|
|
83
|
+
}), [settings, onSettingsChange]);
|
|
84
|
+
|
|
85
|
+
// Get offset from settings
|
|
86
|
+
const offset = settings?.offset ?? 0;
|
|
87
|
+
|
|
88
|
+
// Memoized dynamic styles based on offset
|
|
89
|
+
const dynamicStyles = React.useMemo(() => ({
|
|
90
|
+
gridContainer: {
|
|
91
|
+
...styles.gridContainer,
|
|
92
|
+
paddingTop: offset
|
|
93
|
+
}
|
|
94
|
+
}), [offset]);
|
|
95
|
+
return /*#__PURE__*/_jsx(GameBackground, {
|
|
96
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
97
|
+
style: styles.container,
|
|
98
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
99
|
+
style: dynamicStyles.gridContainer,
|
|
100
|
+
children: /*#__PURE__*/_jsx(GameGrid, {})
|
|
101
|
+
}), /*#__PURE__*/_jsx(ScoreBoard, {
|
|
102
|
+
offset: offset
|
|
103
|
+
}), /*#__PURE__*/_jsx(GameControlButton, {
|
|
104
|
+
...gameControlButtonProps
|
|
105
|
+
}), /*#__PURE__*/_jsx(GameOverModal, {
|
|
106
|
+
...gameOverModalProps
|
|
107
|
+
}), /*#__PURE__*/_jsx(GameSettingsModal, {
|
|
108
|
+
...gameSettingsModalProps
|
|
109
|
+
})]
|
|
110
|
+
})
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
CandyCrush.displayName = 'CandyCrush';
|
|
114
|
+
const styles = StyleSheet.create({
|
|
115
|
+
container: {
|
|
116
|
+
flex: 1
|
|
117
|
+
},
|
|
118
|
+
gridContainer: {
|
|
119
|
+
flex: 1,
|
|
120
|
+
justifyContent: 'center',
|
|
121
|
+
alignItems: 'center'
|
|
122
|
+
},
|
|
123
|
+
scoreboardContainer: {
|
|
124
|
+
position: 'absolute',
|
|
125
|
+
top: 0,
|
|
126
|
+
left: 0,
|
|
127
|
+
right: 0,
|
|
128
|
+
zIndex: 10
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
//# sourceMappingURL=CandyCrush.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","GameBackground","GameGrid","ScoreBoard","useCandyCrushStore","useScore","useIsPlaying","useIsGameOver","CANDY_CRUSH_COLORS","jsx","_jsx","jsxs","_jsxs","CandyCrush","memo","settings","onSettingsChange","score","isPlaying","isGameOver","startGame","state","stopGame","resetGame","initializeGame","updateSettings","useEffect","enableSounds","enableHaptics","difficulty","handleStartGame","useCallback","handleResetGame","handleStopGame","gameControlButtonProps","useMemo","gameOver","onStartGame","onStopGame","onResetGame","startButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","MODAL_PRIMARY","borderColor","MODAL_BORDER","buttonColor","MODAL_BUTTON","buttonBorderColor","MODAL_BUTTON_BORDER","scoreFormatter","s","additionalInfo","gameSettingsModalProps","gameId","CANDY_CRUSH","offset","dynamicStyles","gridContainer","styles","paddingTop","children","style","container","displayName","create","flex","justifyContent","alignItems","scoreboardContainer","position","top","left","right","zIndex"],"sourceRoot":"../../../../src","sources":["games/candy-crush/CandyCrush.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// Candy Crush Game Constants
|
|
4
|
+
export const CANDY_CRUSH_GAME_CONFIG = {
|
|
5
|
+
GRID_SIZE: 8,
|
|
6
|
+
CANDY_TYPES: 6,
|
|
7
|
+
MIN_MATCH: 3,
|
|
8
|
+
ANIMATION_DURATION: 300,
|
|
9
|
+
FALL_DURATION: 400,
|
|
10
|
+
SWAP_DURATION: 200,
|
|
11
|
+
POINTS_PER_CANDY: 10,
|
|
12
|
+
COMBO_MULTIPLIER: 1.5,
|
|
13
|
+
SPECIAL_CANDY_THRESHOLD: 4
|
|
14
|
+
};
|
|
15
|
+
export const CANDY_COLORS = ['#FF3B30',
|
|
16
|
+
// Bright Red
|
|
17
|
+
'#34C759',
|
|
18
|
+
// Bright Green
|
|
19
|
+
'#007AFF',
|
|
20
|
+
// Bright Blue
|
|
21
|
+
'#FFCC00',
|
|
22
|
+
// Bright Yellow
|
|
23
|
+
'#9D4EDD',
|
|
24
|
+
// Bright Purple (replaced cyan)
|
|
25
|
+
'#FF6B9D' // Bright Pink
|
|
26
|
+
];
|
|
27
|
+
export const CANDY_TYPES = {
|
|
28
|
+
NORMAL: 'normal',
|
|
29
|
+
STRIPED_HORIZONTAL: 'striped_h',
|
|
30
|
+
STRIPED_VERTICAL: 'striped_v',
|
|
31
|
+
WRAPPED: 'wrapped',
|
|
32
|
+
COLOR_BOMB: 'color_bomb'
|
|
33
|
+
};
|
|
34
|
+
export const CANDY_CRUSH_COLORS = {
|
|
35
|
+
BACKGROUND: '#2C3E50',
|
|
36
|
+
GRID_BACKGROUND: 'rgba(255, 149, 0, 0.1)',
|
|
37
|
+
GRID_BORDER: 'rgba(255, 149, 0, 0.3)',
|
|
38
|
+
SELECTED: 'rgba(255, 149, 0, 0.5)',
|
|
39
|
+
BUTTON_PRIMARY: '#FF9500',
|
|
40
|
+
BUTTON_SECONDARY: '#E68600',
|
|
41
|
+
SCORE_BACKGROUND: 'rgba(255, 149, 0, 0.4)',
|
|
42
|
+
SCORE_TEXT: '#FFFFFF',
|
|
43
|
+
TIME_GOOD: '#FF9500',
|
|
44
|
+
TIME_WARNING: '#FF9500',
|
|
45
|
+
TIME_CRITICAL: '#FF9500',
|
|
46
|
+
COMBO_TEXT: '#FF9500',
|
|
47
|
+
MODAL_PRIMARY: 'rgba(255, 149, 0, 0.95)',
|
|
48
|
+
MODAL_BORDER: 'rgba(230, 134, 0, 0.9)',
|
|
49
|
+
MODAL_BUTTON: '#FF9500',
|
|
50
|
+
MODAL_BUTTON_BORDER: '#E68600'
|
|
51
|
+
};
|
|
52
|
+
export const DIFFICULTY_CONFIG = {
|
|
53
|
+
easy: {
|
|
54
|
+
gameDuration: 60,
|
|
55
|
+
// 1 minute
|
|
56
|
+
candyTypes: 4
|
|
57
|
+
},
|
|
58
|
+
medium: {
|
|
59
|
+
gameDuration: 180,
|
|
60
|
+
// 3 minutes
|
|
61
|
+
candyTypes: 5
|
|
62
|
+
},
|
|
63
|
+
hard: {
|
|
64
|
+
gameDuration: 300,
|
|
65
|
+
// 5 minutes
|
|
66
|
+
candyTypes: 6
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
export const CANDY_CRUSH_SOUNDS = {
|
|
70
|
+
MATCH: {
|
|
71
|
+
text: 'Pop!',
|
|
72
|
+
pitch: 1.2,
|
|
73
|
+
rate: 1.5
|
|
74
|
+
},
|
|
75
|
+
SWAP: {
|
|
76
|
+
text: 'Swap',
|
|
77
|
+
pitch: 1.0,
|
|
78
|
+
rate: 1.8
|
|
79
|
+
},
|
|
80
|
+
SPECIAL: {
|
|
81
|
+
text: 'Boom!',
|
|
82
|
+
pitch: 1.5,
|
|
83
|
+
rate: 2.0
|
|
84
|
+
},
|
|
85
|
+
COMBO: {
|
|
86
|
+
text: 'Combo!',
|
|
87
|
+
pitch: 1.8,
|
|
88
|
+
rate: 2.2
|
|
89
|
+
},
|
|
90
|
+
WIN: {
|
|
91
|
+
text: 'Victory!',
|
|
92
|
+
pitch: 1.6,
|
|
93
|
+
rate: 1.8
|
|
94
|
+
},
|
|
95
|
+
LOSE: {
|
|
96
|
+
text: 'Game Over',
|
|
97
|
+
pitch: 0.8,
|
|
98
|
+
rate: 1.2
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// Theme for settings modal
|
|
103
|
+
export const CANDY_CRUSH_THEME = {
|
|
104
|
+
backgroundColor: '#2C3E50',
|
|
105
|
+
headerBackgroundColor: '#FF9500',
|
|
106
|
+
headerTextColor: '#FFFFFF',
|
|
107
|
+
sectionBackgroundColor: 'rgba(255, 149, 0, 0.15)',
|
|
108
|
+
sectionTitleColor: '#FF9500',
|
|
109
|
+
buttonSelectedColor: '#FF9500',
|
|
110
|
+
buttonUnselectedColor: 'rgba(255, 149, 0, 0.2)',
|
|
111
|
+
buttonSelectedTextColor: '#FFFFFF',
|
|
112
|
+
buttonUnselectedTextColor: '#FF9500',
|
|
113
|
+
switchTrackColorFalse: 'rgba(255, 149, 0, 0.3)',
|
|
114
|
+
switchTrackColorTrue: '#FF9500',
|
|
115
|
+
switchThumbColor: '#FFFFFF',
|
|
116
|
+
infoTextColor: 'rgba(255, 255, 255, 0.7)'
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// Difficulty descriptions
|
|
120
|
+
export const CANDY_CRUSH_DIFFICULTY_DESCRIPTIONS = {
|
|
121
|
+
easy: '1 minute • 4 candy types',
|
|
122
|
+
medium: '3 minutes • 5 candy types',
|
|
123
|
+
hard: '5 minutes • 6 candy types'
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=CandyCrushConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["CANDY_CRUSH_GAME_CONFIG","GRID_SIZE","CANDY_TYPES","MIN_MATCH","ANIMATION_DURATION","FALL_DURATION","SWAP_DURATION","POINTS_PER_CANDY","COMBO_MULTIPLIER","SPECIAL_CANDY_THRESHOLD","CANDY_COLORS","NORMAL","STRIPED_HORIZONTAL","STRIPED_VERTICAL","WRAPPED","COLOR_BOMB","CANDY_CRUSH_COLORS","BACKGROUND","GRID_BACKGROUND","GRID_BORDER","SELECTED","BUTTON_PRIMARY","BUTTON_SECONDARY","SCORE_BACKGROUND","SCORE_TEXT","TIME_GOOD","TIME_WARNING","TIME_CRITICAL","COMBO_TEXT","MODAL_PRIMARY","MODAL_BORDER","MODAL_BUTTON","MODAL_BUTTON_BORDER","DIFFICULTY_CONFIG","easy","gameDuration","candyTypes","medium","hard","CANDY_CRUSH_SOUNDS","MATCH","text","pitch","rate","SWAP","SPECIAL","COMBO","WIN","LOSE","CANDY_CRUSH_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","CANDY_CRUSH_DIFFICULTY_DESCRIPTIONS"],"sourceRoot":"../../../../src","sources":["games/candy-crush/CandyCrushConstants.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Animated } from 'react-native';
|
|
4
|
+
import { CANDY_CRUSH_GAME_CONFIG, CANDY_COLORS, CANDY_TYPES } from "./CandyCrushConstants.js";
|
|
5
|
+
export class CandyCrushService {
|
|
6
|
+
nextCandyId = 1;
|
|
7
|
+
|
|
8
|
+
// Create empty grid
|
|
9
|
+
createGrid() {
|
|
10
|
+
return Array(CANDY_CRUSH_GAME_CONFIG.GRID_SIZE).fill(null).map(() => Array(CANDY_CRUSH_GAME_CONFIG.GRID_SIZE).fill(null));
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// Initialize grid with random candies (ensuring no initial matches)
|
|
14
|
+
initializeGrid(candyTypes) {
|
|
15
|
+
const grid = this.createGrid();
|
|
16
|
+
const size = CANDY_CRUSH_GAME_CONFIG.GRID_SIZE;
|
|
17
|
+
for (let row = 0; row < size; row++) {
|
|
18
|
+
for (let col = 0; col < size; col++) {
|
|
19
|
+
let candyType;
|
|
20
|
+
let attempts = 0;
|
|
21
|
+
|
|
22
|
+
// Generate candy type that doesn't create initial matches
|
|
23
|
+
do {
|
|
24
|
+
candyType = Math.floor(Math.random() * candyTypes);
|
|
25
|
+
attempts++;
|
|
26
|
+
} while (attempts < 10 && this.wouldCreateMatch(grid, row, col, candyType));
|
|
27
|
+
const candy = {
|
|
28
|
+
id: this.nextCandyId++,
|
|
29
|
+
row,
|
|
30
|
+
col,
|
|
31
|
+
type: candyType,
|
|
32
|
+
specialType: CANDY_TYPES.NORMAL,
|
|
33
|
+
animatedValue: new Animated.Value(1),
|
|
34
|
+
scaleValue: new Animated.Value(1),
|
|
35
|
+
isMatched: false,
|
|
36
|
+
isFalling: false
|
|
37
|
+
};
|
|
38
|
+
const gridRow = grid[row];
|
|
39
|
+
if (gridRow) {
|
|
40
|
+
gridRow[col] = candy;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return grid;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Check if placing candy would create a match
|
|
48
|
+
wouldCreateMatch(grid, row, col, type) {
|
|
49
|
+
// Check horizontal
|
|
50
|
+
let horizontalCount = 1;
|
|
51
|
+
|
|
52
|
+
// Check left
|
|
53
|
+
for (let c = col - 1; c >= 0; c--) {
|
|
54
|
+
const gridRow = grid[row];
|
|
55
|
+
const candy = gridRow ? gridRow[c] : null;
|
|
56
|
+
if (candy && candy.type === type) {
|
|
57
|
+
horizontalCount++;
|
|
58
|
+
} else {
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Check right
|
|
64
|
+
for (let c = col + 1; c < CANDY_CRUSH_GAME_CONFIG.GRID_SIZE; c++) {
|
|
65
|
+
const gridRow = grid[row];
|
|
66
|
+
const candy = gridRow ? gridRow[c] : null;
|
|
67
|
+
if (candy && candy.type === type) {
|
|
68
|
+
horizontalCount++;
|
|
69
|
+
} else {
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (horizontalCount >= CANDY_CRUSH_GAME_CONFIG.MIN_MATCH) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Check vertical
|
|
78
|
+
let verticalCount = 1;
|
|
79
|
+
|
|
80
|
+
// Check up
|
|
81
|
+
for (let r = row - 1; r >= 0; r--) {
|
|
82
|
+
const gridRow = grid[r];
|
|
83
|
+
const candy = gridRow ? gridRow[col] : null;
|
|
84
|
+
if (candy && candy.type === type) {
|
|
85
|
+
verticalCount++;
|
|
86
|
+
} else {
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Check down
|
|
92
|
+
for (let r = row + 1; r < CANDY_CRUSH_GAME_CONFIG.GRID_SIZE; r++) {
|
|
93
|
+
const gridRow = grid[r];
|
|
94
|
+
const candy = gridRow ? gridRow[col] : null;
|
|
95
|
+
if (candy && candy.type === type) {
|
|
96
|
+
verticalCount++;
|
|
97
|
+
} else {
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return verticalCount >= CANDY_CRUSH_GAME_CONFIG.MIN_MATCH;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Check if two candies can be swapped
|
|
105
|
+
canSwap(candy1, candy2) {
|
|
106
|
+
const rowDiff = Math.abs(candy1.row - candy2.row);
|
|
107
|
+
const colDiff = Math.abs(candy1.col - candy2.col);
|
|
108
|
+
|
|
109
|
+
// Must be adjacent (horizontally or vertically)
|
|
110
|
+
return rowDiff === 1 && colDiff === 0 || rowDiff === 0 && colDiff === 1;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Swap two candies
|
|
114
|
+
swapCandies(grid, candy1, candy2) {
|
|
115
|
+
const row1 = candy1.row;
|
|
116
|
+
const col1 = candy1.col;
|
|
117
|
+
const row2 = candy2.row;
|
|
118
|
+
const col2 = candy2.col;
|
|
119
|
+
|
|
120
|
+
// Get references from grid
|
|
121
|
+
const gridRow1 = grid[row1];
|
|
122
|
+
const gridRow2 = grid[row2];
|
|
123
|
+
if (gridRow1 && gridRow2) {
|
|
124
|
+
const temp1 = gridRow1[col1];
|
|
125
|
+
const temp2 = gridRow2[col2];
|
|
126
|
+
|
|
127
|
+
// Swap in grid
|
|
128
|
+
gridRow1[col1] = temp2 || null;
|
|
129
|
+
gridRow2[col2] = temp1 || null;
|
|
130
|
+
|
|
131
|
+
// Update positions (these are mutable in Immer draft)
|
|
132
|
+
if (temp1) {
|
|
133
|
+
temp1.row = row2;
|
|
134
|
+
temp1.col = col2;
|
|
135
|
+
}
|
|
136
|
+
if (temp2) {
|
|
137
|
+
temp2.row = row1;
|
|
138
|
+
temp2.col = col1;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Find all matches in the grid
|
|
144
|
+
findMatches(grid) {
|
|
145
|
+
const matches = [];
|
|
146
|
+
const matchedSet = new Set();
|
|
147
|
+
const size = CANDY_CRUSH_GAME_CONFIG.GRID_SIZE;
|
|
148
|
+
|
|
149
|
+
// Check horizontal matches
|
|
150
|
+
for (let row = 0; row < size; row++) {
|
|
151
|
+
for (let col = 0; col < size - 2; col++) {
|
|
152
|
+
const gridRow = grid[row];
|
|
153
|
+
if (!gridRow) continue;
|
|
154
|
+
const candy1 = gridRow[col];
|
|
155
|
+
const candy2 = gridRow[col + 1];
|
|
156
|
+
const candy3 = gridRow[col + 2];
|
|
157
|
+
if (candy1 && candy2 && candy3 && candy1.type === candy2.type && candy2.type === candy3.type) {
|
|
158
|
+
let matchLength = 3;
|
|
159
|
+
const matchCandies = [candy1, candy2, candy3];
|
|
160
|
+
|
|
161
|
+
// Check for longer matches
|
|
162
|
+
for (let c = col + 3; c < size; c++) {
|
|
163
|
+
const nextCandy = gridRow[c];
|
|
164
|
+
if (nextCandy && nextCandy.type === candy1.type) {
|
|
165
|
+
matchLength++;
|
|
166
|
+
matchCandies.push(nextCandy);
|
|
167
|
+
} else {
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// Add to matches
|
|
173
|
+
matchCandies.forEach(candy => {
|
|
174
|
+
if (!matchedSet.has(candy.id)) {
|
|
175
|
+
matchedSet.add(candy.id);
|
|
176
|
+
matches.push(candy);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
col += matchLength - 1;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Check vertical matches
|
|
185
|
+
for (let col = 0; col < size; col++) {
|
|
186
|
+
for (let row = 0; row < size - 2; row++) {
|
|
187
|
+
const gridRow1 = grid[row];
|
|
188
|
+
const gridRow2 = grid[row + 1];
|
|
189
|
+
const gridRow3 = grid[row + 2];
|
|
190
|
+
if (!gridRow1 || !gridRow2 || !gridRow3) continue;
|
|
191
|
+
const candy1 = gridRow1[col];
|
|
192
|
+
const candy2 = gridRow2[col];
|
|
193
|
+
const candy3 = gridRow3[col];
|
|
194
|
+
if (candy1 && candy2 && candy3 && candy1.type === candy2.type && candy2.type === candy3.type) {
|
|
195
|
+
let matchLength = 3;
|
|
196
|
+
const matchCandies = [candy1, candy2, candy3];
|
|
197
|
+
|
|
198
|
+
// Check for longer matches
|
|
199
|
+
for (let r = row + 3; r < size; r++) {
|
|
200
|
+
const nextRow = grid[r];
|
|
201
|
+
const nextCandy = nextRow ? nextRow[col] : null;
|
|
202
|
+
if (nextCandy && nextCandy.type === candy1.type) {
|
|
203
|
+
matchLength++;
|
|
204
|
+
matchCandies.push(nextCandy);
|
|
205
|
+
} else {
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Add to matches
|
|
211
|
+
matchCandies.forEach(candy => {
|
|
212
|
+
if (!matchedSet.has(candy.id)) {
|
|
213
|
+
matchedSet.add(candy.id);
|
|
214
|
+
matches.push(candy);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
row += matchLength - 1;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const score = matches.length * CANDY_CRUSH_GAME_CONFIG.POINTS_PER_CANDY;
|
|
222
|
+
return {
|
|
223
|
+
matches,
|
|
224
|
+
score,
|
|
225
|
+
hasMatches: matches.length > 0
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// Remove matched candies from grid
|
|
230
|
+
removeMatches(grid, matches) {
|
|
231
|
+
matches.forEach(candy => {
|
|
232
|
+
const gridRow = grid[candy.row];
|
|
233
|
+
if (gridRow) {
|
|
234
|
+
gridRow[candy.col] = null;
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Apply gravity - make candies fall down
|
|
240
|
+
applyGravity(grid) {
|
|
241
|
+
let hasMoved = false;
|
|
242
|
+
const size = CANDY_CRUSH_GAME_CONFIG.GRID_SIZE;
|
|
243
|
+
|
|
244
|
+
// Process from bottom to top
|
|
245
|
+
for (let col = 0; col < size; col++) {
|
|
246
|
+
for (let row = size - 1; row >= 0; row--) {
|
|
247
|
+
const gridRow = grid[row];
|
|
248
|
+
if (!gridRow) continue;
|
|
249
|
+
const candy = gridRow[col];
|
|
250
|
+
if (candy) {
|
|
251
|
+
// Find the lowest empty position below this candy
|
|
252
|
+
let newRow = row;
|
|
253
|
+
for (let r = row + 1; r < size; r++) {
|
|
254
|
+
const checkRow = grid[r];
|
|
255
|
+
if (checkRow && !checkRow[col]) {
|
|
256
|
+
newRow = r;
|
|
257
|
+
} else {
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Move candy down if there's an empty space
|
|
263
|
+
if (newRow !== row) {
|
|
264
|
+
const targetRow = grid[newRow];
|
|
265
|
+
if (targetRow) {
|
|
266
|
+
targetRow[col] = candy;
|
|
267
|
+
gridRow[col] = null;
|
|
268
|
+
candy.row = newRow;
|
|
269
|
+
candy.isFalling = true;
|
|
270
|
+
hasMoved = true;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return hasMoved;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// Fill empty spaces with new candies
|
|
280
|
+
fillEmptySpaces(grid, candyTypes) {
|
|
281
|
+
const newCandies = [];
|
|
282
|
+
const size = CANDY_CRUSH_GAME_CONFIG.GRID_SIZE;
|
|
283
|
+
for (let col = 0; col < size; col++) {
|
|
284
|
+
// Count empty spaces in this column
|
|
285
|
+
let emptyCount = 0;
|
|
286
|
+
for (let row = 0; row < size; row++) {
|
|
287
|
+
const gridRow = grid[row];
|
|
288
|
+
if (gridRow && !gridRow[col]) {
|
|
289
|
+
emptyCount++;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
// Fill from top
|
|
294
|
+
for (let i = 0; i < emptyCount; i++) {
|
|
295
|
+
const row = i;
|
|
296
|
+
const candy = {
|
|
297
|
+
id: this.nextCandyId++,
|
|
298
|
+
row,
|
|
299
|
+
col,
|
|
300
|
+
type: Math.floor(Math.random() * candyTypes),
|
|
301
|
+
specialType: CANDY_TYPES.NORMAL,
|
|
302
|
+
animatedValue: new Animated.Value(0),
|
|
303
|
+
scaleValue: new Animated.Value(1),
|
|
304
|
+
isMatched: false,
|
|
305
|
+
isFalling: true
|
|
306
|
+
};
|
|
307
|
+
const gridRow = grid[row];
|
|
308
|
+
if (gridRow) {
|
|
309
|
+
gridRow[col] = candy;
|
|
310
|
+
newCandies.push(candy);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return newCandies;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// Check if there are any possible moves
|
|
318
|
+
hasPossibleMoves(grid) {
|
|
319
|
+
const size = CANDY_CRUSH_GAME_CONFIG.GRID_SIZE;
|
|
320
|
+
for (let row = 0; row < size; row++) {
|
|
321
|
+
for (let col = 0; col < size; col++) {
|
|
322
|
+
const gridRow = grid[row];
|
|
323
|
+
if (!gridRow) continue;
|
|
324
|
+
const candy = gridRow[col];
|
|
325
|
+
if (!candy) continue;
|
|
326
|
+
|
|
327
|
+
// Try swapping with right neighbor
|
|
328
|
+
if (col < size - 1) {
|
|
329
|
+
const rightCandy = gridRow[col + 1];
|
|
330
|
+
if (rightCandy) {
|
|
331
|
+
this.swapCandies(grid, candy, rightCandy);
|
|
332
|
+
const result = this.findMatches(grid);
|
|
333
|
+
this.swapCandies(grid, candy, rightCandy); // Swap back
|
|
334
|
+
|
|
335
|
+
if (result.hasMatches) {
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
// Try swapping with bottom neighbor
|
|
342
|
+
if (row < size - 1) {
|
|
343
|
+
const bottomRow = grid[row + 1];
|
|
344
|
+
const bottomCandy = bottomRow ? bottomRow[col] : null;
|
|
345
|
+
if (bottomCandy) {
|
|
346
|
+
this.swapCandies(grid, candy, bottomCandy);
|
|
347
|
+
const result = this.findMatches(grid);
|
|
348
|
+
this.swapCandies(grid, candy, bottomCandy); // Swap back
|
|
349
|
+
|
|
350
|
+
if (result.hasMatches) {
|
|
351
|
+
return true;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Get candy color
|
|
361
|
+
getCandyColor(type) {
|
|
362
|
+
return CANDY_COLORS[type % CANDY_COLORS.length] || CANDY_COLORS[0];
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// Reset candy ID counter
|
|
366
|
+
resetIdCounter() {
|
|
367
|
+
this.nextCandyId = 1;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=CandyCrushService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Animated","CANDY_CRUSH_GAME_CONFIG","CANDY_COLORS","CANDY_TYPES","CandyCrushService","nextCandyId","createGrid","Array","GRID_SIZE","fill","map","initializeGrid","candyTypes","grid","size","row","col","candyType","attempts","Math","floor","random","wouldCreateMatch","candy","id","type","specialType","NORMAL","animatedValue","Value","scaleValue","isMatched","isFalling","gridRow","horizontalCount","c","MIN_MATCH","verticalCount","r","canSwap","candy1","candy2","rowDiff","abs","colDiff","swapCandies","row1","col1","row2","col2","gridRow1","gridRow2","temp1","temp2","findMatches","matches","matchedSet","Set","candy3","matchLength","matchCandies","nextCandy","push","forEach","has","add","gridRow3","nextRow","score","length","POINTS_PER_CANDY","hasMatches","removeMatches","applyGravity","hasMoved","newRow","checkRow","targetRow","fillEmptySpaces","newCandies","emptyCount","i","hasPossibleMoves","rightCandy","result","bottomRow","bottomCandy","getCandyColor","resetIdCounter"],"sourceRoot":"../../../../src","sources":["games/candy-crush/CandyCrushService.ts"],"mappings":"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","ignoreList":[]}
|