react-native-games 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -130
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +111 -423
- package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +27 -28
- package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js +42 -117
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +12 -1
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js +102 -75
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/GameArea.js +139 -30
- package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js +7 -6
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/balloon-blaster/components/index.js +0 -3
- package/lib/module/games/balloon-blaster/components/index.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinja.js +94 -376
- package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +19 -22
- package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaService.js +30 -9
- package/lib/module/games/fruit-ninja/FruitNinjaService.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js +29 -4
- package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/GameArea.js +194 -29
- package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/GameBackground.js +107 -190
- package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js +9 -30
- package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/fruit-ninja/components/index.js +0 -3
- package/lib/module/games/fruit-ninja/components/index.js.map +1 -1
- package/lib/module/games/maze-runner/MazeRunner.js +106 -109
- package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
- package/lib/module/games/maze-runner/MazeRunnerConstants.js +19 -24
- package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -1
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +5 -4
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js.map +1 -1
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js +16 -7
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -1
- package/lib/module/games/maze-runner/components/ScoreBoard.js +8 -3
- package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/maze-runner/components/WallComponent.js +3 -2
- package/lib/module/games/maze-runner/components/WallComponent.js.map +1 -1
- package/lib/module/games/maze-runner/components/index.js +0 -1
- package/lib/module/games/maze-runner/components/index.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidget.js +113 -112
- package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetConstants.js +20 -23
- package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetService.js +0 -59
- package/lib/module/games/popit-fidget/PopitFidgetService.js.map +1 -1
- package/lib/module/games/popit-fidget/PopitFidgetStore.js +0 -27
- package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -1
- package/lib/module/games/popit-fidget/components/BubbleComponent.js +24 -22
- package/lib/module/games/popit-fidget/components/BubbleComponent.js.map +1 -1
- package/lib/module/games/popit-fidget/components/GameBackground.js +4 -1
- package/lib/module/games/popit-fidget/components/GameBackground.js.map +1 -1
- package/lib/module/games/popit-fidget/components/ScoreBoard.js +9 -2
- package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/popit-fidget/components/index.js +0 -2
- package/lib/module/games/popit-fidget/components/index.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighter.js +121 -369
- package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterConstants.js +21 -23
- package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterService.js +30 -11
- package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighterStore.js +54 -2
- package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -1
- package/lib/module/games/space-fighter/components/AsteroidComponent.js +7 -5
- package/lib/module/games/space-fighter/components/AsteroidComponent.js.map +1 -1
- package/lib/module/games/space-fighter/components/GameArea.js +234 -14
- package/lib/module/games/space-fighter/components/GameArea.js.map +1 -1
- package/lib/module/games/space-fighter/components/GameBackground.js +10 -65
- package/lib/module/games/space-fighter/components/GameBackground.js.map +1 -1
- package/lib/module/games/space-fighter/components/ScoreBoard.js +9 -7
- package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/space-fighter/components/Spacecraft3D.js +72 -111
- package/lib/module/games/space-fighter/components/Spacecraft3D.js.map +1 -1
- package/lib/module/games/space-fighter/components/SpacecraftPath.js +42 -27
- package/lib/module/games/space-fighter/components/SpacecraftPath.js.map +1 -1
- package/lib/module/games/space-fighter/components/index.js +0 -3
- package/lib/module/games/space-fighter/components/index.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMole.js +63 -73
- package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +17 -19
- package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js +20 -7
- package/lib/module/games/whack-a-mole/WhackAMoleStore.js.map +1 -1
- package/lib/module/games/whack-a-mole/components/GameHole.js +2 -2
- package/lib/module/games/whack-a-mole/components/GameHole.js.map +1 -1
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js +5 -1
- package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/whack-a-mole/components/index.js +0 -1
- package/lib/module/games/whack-a-mole/components/index.js.map +1 -1
- package/lib/module/services/GamesConstants.js +13 -21
- package/lib/module/services/GamesConstants.js.map +1 -1
- package/lib/module/services/GamesService.js +30 -26
- package/lib/module/services/GamesService.js.map +1 -1
- package/lib/module/services/SoundsService.js +21 -21
- package/lib/module/shared/helpers/AnimationFrame.js +120 -0
- package/lib/module/shared/helpers/AnimationFrame.js.map +1 -0
- package/lib/module/shared/helpers/AnimationTracker.js +89 -0
- package/lib/module/shared/helpers/AnimationTracker.js.map +1 -0
- package/lib/module/shared/helpers/ErrorHandler.js +269 -0
- package/lib/module/shared/helpers/ErrorHandler.js.map +1 -0
- package/lib/module/shared/helpers/GameControlButton.js +67 -58
- package/lib/module/shared/helpers/GameControlButton.js.map +1 -1
- package/lib/module/{games/whack-a-mole/components → shared/helpers}/GameOverModal.js +23 -13
- package/lib/module/shared/helpers/GameOverModal.js.map +1 -0
- package/lib/module/shared/helpers/GameSettingsModal.js +287 -0
- package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -0
- package/lib/module/shared/helpers/ParticleBlast.js +133 -0
- package/lib/module/shared/helpers/ParticleBlast.js.map +1 -0
- package/lib/module/shared/helpers/index.js +7 -0
- package/lib/module/shared/helpers/index.js.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +2 -14
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +8 -7
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +0 -2
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +1 -15
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +1 -7
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +0 -3
- package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +2 -14
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +5 -5
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts +9 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts +1 -0
- package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +1 -15
- package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +1 -7
- package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/components/index.d.ts +0 -3
- package/lib/typescript/src/games/fruit-ninja/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +2 -8
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +4 -4
- package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/components/index.d.ts +0 -1
- package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +2 -8
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +4 -4
- package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +0 -21
- package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +1 -5
- package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts +2 -2
- package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +2 -2
- package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/popit-fidget/components/index.d.ts +0 -2
- package/lib/typescript/src/games/popit-fidget/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +3 -8
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +4 -4
- package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +0 -1
- package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +1 -15
- package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +1 -6
- package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/components/index.d.ts +0 -3
- package/lib/typescript/src/games/space-fighter/components/index.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +2 -11
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +2 -2
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/components/index.d.ts +0 -1
- package/lib/typescript/src/games/whack-a-mole/components/index.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesConstants.d.ts +47 -38
- package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesService.d.ts +20 -3
- package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
- package/lib/typescript/src/services/SoundsService.d.ts +20 -20
- package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts +41 -0
- package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts +45 -0
- package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts +124 -0
- package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +1 -1
- package/lib/typescript/src/{games/balloon-blaster/components → shared/helpers}/GameOverModal.d.ts +5 -0
- package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts +9 -0
- package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts +12 -0
- package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -0
- package/lib/typescript/src/shared/helpers/index.d.ts +9 -0
- package/lib/typescript/src/shared/helpers/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/lib/module/games/balloon-blaster/components/GameOverModal.js +0 -133
- package/lib/module/games/balloon-blaster/components/GameOverModal.js.map +0 -1
- package/lib/module/games/balloon-blaster/components/ParticleSystem.js +0 -55
- package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +0 -1
- package/lib/module/games/balloon-blaster/components/SliceTrail.js +0 -58
- package/lib/module/games/balloon-blaster/components/SliceTrail.js.map +0 -1
- package/lib/module/games/fruit-ninja/components/GameOverModal.js +0 -189
- package/lib/module/games/fruit-ninja/components/GameOverModal.js.map +0 -1
- package/lib/module/games/fruit-ninja/components/ParticleSystem.js +0 -52
- package/lib/module/games/fruit-ninja/components/ParticleSystem.js.map +0 -1
- package/lib/module/games/fruit-ninja/components/SliceTrail.js +0 -58
- package/lib/module/games/fruit-ninja/components/SliceTrail.js.map +0 -1
- package/lib/module/games/maze-runner/components/GameOverModal.js +0 -134
- package/lib/module/games/maze-runner/components/GameOverModal.js.map +0 -1
- package/lib/module/games/popit-fidget/components/GameOverModal.js +0 -132
- package/lib/module/games/popit-fidget/components/GameOverModal.js.map +0 -1
- package/lib/module/games/popit-fidget/components/ParticleSystem.js +0 -89
- package/lib/module/games/popit-fidget/components/ParticleSystem.js.map +0 -1
- package/lib/module/games/space-fighter/components/GameOverModal.js +0 -182
- package/lib/module/games/space-fighter/components/GameOverModal.js.map +0 -1
- package/lib/module/games/space-fighter/components/ParticleComponent.js +0 -34
- package/lib/module/games/space-fighter/components/ParticleComponent.js.map +0 -1
- package/lib/module/games/space-fighter/components/SettingsModal.js +0 -222
- package/lib/module/games/space-fighter/components/SettingsModal.js.map +0 -1
- package/lib/module/games/whack-a-mole/components/GameOverModal.js.map +0 -1
- package/lib/module/shared/settings/GameSettings.js +0 -295
- package/lib/module/shared/settings/GameSettings.js.map +0 -1
- package/lib/module/shared/settings/SettingsService.js +0 -125
- package/lib/module/shared/settings/SettingsService.js.map +0 -1
- package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts +0 -8
- package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +0 -1
- package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts +0 -11
- package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts.map +0 -1
- package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts +0 -9
- package/lib/typescript/src/games/fruit-ninja/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts +0 -8
- package/lib/typescript/src/games/fruit-ninja/components/ParticleSystem.d.ts.map +0 -1
- package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts +0 -11
- package/lib/typescript/src/games/fruit-ninja/components/SliceTrail.d.ts.map +0 -1
- package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts +0 -11
- package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts +0 -9
- package/lib/typescript/src/games/popit-fidget/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts +0 -9
- package/lib/typescript/src/games/popit-fidget/components/ParticleSystem.d.ts.map +0 -1
- package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts +0 -8
- package/lib/typescript/src/games/space-fighter/components/ParticleComponent.d.ts.map +0 -1
- package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts +0 -9
- package/lib/typescript/src/games/space-fighter/components/SettingsModal.d.ts.map +0 -1
- package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts +0 -9
- package/lib/typescript/src/games/whack-a-mole/components/GameOverModal.d.ts.map +0 -1
- package/lib/typescript/src/shared/settings/GameSettings.d.ts +0 -36
- package/lib/typescript/src/shared/settings/GameSettings.d.ts.map +0 -1
- package/lib/typescript/src/shared/settings/SettingsService.d.ts +0 -33
- package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +0 -1
|
@@ -8,7 +8,8 @@ import { playHaptic, HapticType } from "../../../services/HapticsService.js";
|
|
|
8
8
|
import { EnhancedBallComponent } from "./EnhancedBallComponent.js";
|
|
9
9
|
import { WallComponent } from "./WallComponent.js";
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
-
|
|
11
|
+
// Memoized EnhancedGameArea component to prevent unnecessary re-renders
|
|
12
|
+
export const EnhancedGameArea = /*#__PURE__*/React.memo(({
|
|
12
13
|
gameState,
|
|
13
14
|
gameConfig,
|
|
14
15
|
walls,
|
|
@@ -32,12 +33,14 @@ export const EnhancedGameArea = ({
|
|
|
32
33
|
React.useEffect(() => {
|
|
33
34
|
wallsSharedValue.value = walls;
|
|
34
35
|
}, [walls]);
|
|
35
|
-
|
|
36
|
+
|
|
37
|
+
// Memoized haptic callback functions
|
|
38
|
+
const triggerMoveHaptic = React.useCallback(() => {
|
|
36
39
|
playHaptic(HapticType.LIGHT, hapticEnabled);
|
|
37
|
-
};
|
|
38
|
-
const triggerCollisionHaptic = () => {
|
|
40
|
+
}, [hapticEnabled]);
|
|
41
|
+
const triggerCollisionHaptic = React.useCallback(() => {
|
|
39
42
|
playHaptic(HapticType.MEDIUM, hapticEnabled);
|
|
40
|
-
};
|
|
43
|
+
}, [hapticEnabled]);
|
|
41
44
|
|
|
42
45
|
// Store the initial position when gesture starts
|
|
43
46
|
const startPosition = useSharedValue({
|
|
@@ -52,7 +55,7 @@ export const EnhancedGameArea = ({
|
|
|
52
55
|
const currentWalls = wallsSharedValue.value;
|
|
53
56
|
|
|
54
57
|
// Use minimal margin to allow ball to fit better in maze paths
|
|
55
|
-
const collisionMargin = 0.5
|
|
58
|
+
const collisionMargin = 0.2; // Reduced from 0.5 for more precise collision
|
|
56
59
|
const effectiveRadius = ballRadius + collisionMargin;
|
|
57
60
|
for (let i = 0; i < currentWalls.length; i++) {
|
|
58
61
|
const wall = currentWalls[i];
|
|
@@ -252,6 +255,7 @@ export const EnhancedGameArea = ({
|
|
|
252
255
|
return /*#__PURE__*/_jsx(View, {
|
|
253
256
|
style: [styles.marker, styles.endMarker, {
|
|
254
257
|
left: endPos.x - 15,
|
|
258
|
+
// Half of 30px marker size
|
|
255
259
|
top: endPos.y - 15
|
|
256
260
|
}],
|
|
257
261
|
children: /*#__PURE__*/_jsx(View, {
|
|
@@ -290,7 +294,7 @@ export const EnhancedGameArea = ({
|
|
|
290
294
|
})]
|
|
291
295
|
})
|
|
292
296
|
});
|
|
293
|
-
};
|
|
297
|
+
});
|
|
294
298
|
const styles = StyleSheet.create({
|
|
295
299
|
container: {
|
|
296
300
|
backgroundColor: 'transparent',
|
|
@@ -314,6 +318,7 @@ const styles = StyleSheet.create({
|
|
|
314
318
|
marker: {
|
|
315
319
|
position: 'absolute',
|
|
316
320
|
width: 30,
|
|
321
|
+
// Revert to original size for proper collision detection
|
|
317
322
|
height: 30,
|
|
318
323
|
borderRadius: 15,
|
|
319
324
|
justifyContent: 'center',
|
|
@@ -330,10 +335,12 @@ const styles = StyleSheet.create({
|
|
|
330
335
|
startMarker: {
|
|
331
336
|
backgroundColor: '#4CAF50',
|
|
332
337
|
borderWidth: 3,
|
|
338
|
+
// Revert to original border width
|
|
333
339
|
borderColor: '#2E7D32'
|
|
334
340
|
},
|
|
335
341
|
startMarkerInner: {
|
|
336
342
|
width: 12,
|
|
343
|
+
// Revert to original size
|
|
337
344
|
height: 12,
|
|
338
345
|
borderRadius: 6,
|
|
339
346
|
backgroundColor: '#81C784'
|
|
@@ -341,10 +348,12 @@ const styles = StyleSheet.create({
|
|
|
341
348
|
endMarker: {
|
|
342
349
|
backgroundColor: '#FF5722',
|
|
343
350
|
borderWidth: 3,
|
|
351
|
+
// Revert to original border width
|
|
344
352
|
borderColor: '#D84315'
|
|
345
353
|
},
|
|
346
354
|
endMarkerInner: {
|
|
347
355
|
width: 12,
|
|
356
|
+
// Revert to original size
|
|
348
357
|
height: 12,
|
|
349
358
|
borderRadius: 6,
|
|
350
359
|
backgroundColor: '#FF8A65'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","Gesture","GestureDetector","Animated","useSharedValue","useAnimatedStyle","runOnJS","withSpring","playHaptic","HapticType","EnhancedBallComponent","WallComponent","jsx","_jsx","jsxs","_jsxs","EnhancedGameArea","gameState","gameConfig","walls","onBallPositionChange","hapticEnabled","translateX","ballPosition","x","translateY","y","isDragging","wallsSharedValue","useEffect","value","triggerMoveHaptic","LIGHT","triggerCollisionHaptic","MEDIUM","startPosition","checkWallCollision","ballX","ballY","ballRadius","currentWalls","collisionMargin","effectiveRadius","i","length","wall","closestX","Math","max","min","width","closestY","height","distanceX","distanceY","distanceSquared","checkPathCollision","fromX","fromY","toX","toY","deltaX","deltaY","distance","sqrt","steps","ceil","t","checkX","checkY","panGesture","Pan","onStart","isPlaying","isPaused","onUpdate","event","newX","translationX","newY","translationY","BALL_SIZE","clampedX","GAME_AREA_WIDTH","clampedY","GAME_AREA_HEIGHT","currentX","currentY","movementDistance","finalX","finalY","hasCollision","foundValidPosition","horizontalOnlyX","horizontalOnlyY","horizontalDistance","abs","canSlideHorizontally","testX","verticalOnlyX","verticalOnlyY","verticalDistance","canSlideVertically","testY","onEnd","animatedBallStyle","transform","renderStartMarker","startPos","CELL_SIZE","style","styles","marker","startMarker","left","top","children","startMarkerInner","renderEndMarker","endPos","GRID_SIZE","endMarker","endMarkerInner","container","gameArea","gesture","ballContainer","position","size","isCompleted","create","backgroundColor","overflow","justifyContent","alignItems","borderRadius","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","borderWidth","borderColor"],"sourceRoot":"../../../../../src","sources":["games/maze-runner/components/EnhancedGameArea.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","Gesture","GestureDetector","Animated","useSharedValue","useAnimatedStyle","runOnJS","withSpring","playHaptic","HapticType","EnhancedBallComponent","WallComponent","jsx","_jsx","jsxs","_jsxs","EnhancedGameArea","memo","gameState","gameConfig","walls","onBallPositionChange","hapticEnabled","translateX","ballPosition","x","translateY","y","isDragging","wallsSharedValue","useEffect","value","triggerMoveHaptic","useCallback","LIGHT","triggerCollisionHaptic","MEDIUM","startPosition","checkWallCollision","ballX","ballY","ballRadius","currentWalls","collisionMargin","effectiveRadius","i","length","wall","closestX","Math","max","min","width","closestY","height","distanceX","distanceY","distanceSquared","checkPathCollision","fromX","fromY","toX","toY","deltaX","deltaY","distance","sqrt","steps","ceil","t","checkX","checkY","panGesture","Pan","onStart","isPlaying","isPaused","onUpdate","event","newX","translationX","newY","translationY","BALL_SIZE","clampedX","GAME_AREA_WIDTH","clampedY","GAME_AREA_HEIGHT","currentX","currentY","movementDistance","finalX","finalY","hasCollision","foundValidPosition","horizontalOnlyX","horizontalOnlyY","horizontalDistance","abs","canSlideHorizontally","testX","verticalOnlyX","verticalOnlyY","verticalDistance","canSlideVertically","testY","onEnd","animatedBallStyle","transform","renderStartMarker","startPos","CELL_SIZE","style","styles","marker","startMarker","left","top","children","startMarkerInner","renderEndMarker","endPos","GRID_SIZE","endMarker","endMarkerInner","container","gameArea","gesture","ballContainer","position","size","isCompleted","create","backgroundColor","overflow","justifyContent","alignItems","borderRadius","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","borderWidth","borderColor"],"sourceRoot":"../../../../../src","sources":["games/maze-runner/components/EnhancedGameArea.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,8 @@ import React from 'react';
|
|
|
4
4
|
import { View, Text, StyleSheet } from 'react-native';
|
|
5
5
|
import { RESPONSIVE_SCOREBOARD_CONTAINER, RESPONSIVE_SCOREBOARD_FONTS } from "../../../shared/helpers/index.js";
|
|
6
6
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
-
|
|
7
|
+
// Memoized ScoreBoard component to prevent unnecessary re-renders
|
|
8
|
+
export const ScoreBoard = /*#__PURE__*/React.memo(({
|
|
8
9
|
gameState
|
|
9
10
|
}) => {
|
|
10
11
|
return /*#__PURE__*/_jsxs(View, {
|
|
@@ -29,16 +30,20 @@ export const ScoreBoard = ({
|
|
|
29
30
|
})]
|
|
30
31
|
})]
|
|
31
32
|
});
|
|
32
|
-
};
|
|
33
|
+
});
|
|
33
34
|
const styles = StyleSheet.create({
|
|
34
35
|
scoreBoard: {
|
|
35
36
|
...RESPONSIVE_SCOREBOARD_CONTAINER,
|
|
37
|
+
position: 'absolute',
|
|
38
|
+
top: 0,
|
|
39
|
+
left: 20,
|
|
40
|
+
right: 20,
|
|
41
|
+
zIndex: 100,
|
|
36
42
|
flexDirection: 'row',
|
|
37
43
|
justifyContent: 'space-between',
|
|
38
44
|
alignItems: 'center',
|
|
39
45
|
backgroundColor: 'rgba(139, 69, 19, 0.4)',
|
|
40
46
|
// Semi-transparent brown for maze theme
|
|
41
|
-
marginBottom: 20,
|
|
42
47
|
borderWidth: 1,
|
|
43
48
|
borderColor: 'rgba(255, 255, 255, 0.3)' // Subtle white border
|
|
44
49
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","StyleSheet","RESPONSIVE_SCOREBOARD_CONTAINER","RESPONSIVE_SCOREBOARD_FONTS","jsx","_jsx","jsxs","_jsxs","ScoreBoard","gameState","style","styles","scoreBoard","children","scoreSection","scoreLabel","scoreValue","score","timeValue","timeElapsed","create","flexDirection","justifyContent","alignItems","backgroundColor","
|
|
1
|
+
{"version":3,"names":["React","View","Text","StyleSheet","RESPONSIVE_SCOREBOARD_CONTAINER","RESPONSIVE_SCOREBOARD_FONTS","jsx","_jsx","jsxs","_jsxs","ScoreBoard","memo","gameState","style","styles","scoreBoard","children","scoreSection","scoreLabel","scoreValue","score","timeValue","timeElapsed","create","position","top","left","right","zIndex","flexDirection","justifyContent","alignItems","backgroundColor","borderWidth","borderColor","flex","fontSize","labelSize","fontWeight","color","marginBottom","valueSize","timeSize"],"sourceRoot":"../../../../../src","sources":["games/maze-runner/components/ScoreBoard.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAErD,SAASC,+BAA+B,EAAEC,2BAA2B,QAAQ,kCAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMvG;AACA,OAAO,MAAMC,UAAqC,gBAAGV,KAAK,CAACW,IAAI,CAAC,CAAC;EAC/DC;AACF,CAAC,KAAK;EACJ,oBACEH,KAAA,CAACR,IAAI;IAACY,KAAK,EAAEC,MAAM,CAACC,UAAW;IAAAC,QAAA,gBAC7BP,KAAA,CAACR,IAAI;MAACY,KAAK,EAAEC,MAAM,CAACG,YAAa;MAAAD,QAAA,gBAC/BT,IAAA,CAACL,IAAI;QAACW,KAAK,EAAEC,MAAM,CAACI,UAAW;QAAAF,QAAA,EAAC;MAAK,CAAM,CAAC,eAC5CT,IAAA,CAACL,IAAI;QAACW,KAAK,EAAEC,MAAM,CAACK,UAAW;QAAAH,QAAA,EAAEJ,SAAS,CAACQ;MAAK,CAAO,CAAC;IAAA,CACpD,CAAC,eACPX,KAAA,CAACR,IAAI;MAACY,KAAK,EAAEC,MAAM,CAACG,YAAa;MAAAD,QAAA,gBAC/BT,IAAA,CAACL,IAAI;QAACW,KAAK,EAAEC,MAAM,CAACI,UAAW;QAAAF,QAAA,EAAC;MAAI,CAAM,CAAC,eAC3CT,IAAA,CAACL,IAAI;QAACW,KAAK,EAAEC,MAAM,CAACO,SAAU;QAAAL,QAAA,EAAEJ,SAAS,CAACU;MAAW,CAAO,CAAC;IAAA,CACzD,CAAC;EAAA,CACH,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMR,MAAM,GAAGX,UAAU,CAACoB,MAAM,CAAC;EAC/BR,UAAU,EAAE;IACV,GAAGX,+BAA+B;IAClCoB,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,EAAE;IACRC,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,GAAG;IACXC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,eAAe;IAC/BC,UAAU,EAAE,QAAQ;IACpBC,eAAe,EAAE,wBAAwB;IAAE;IAC3CC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,0BAA0B,CAAE;EAC3C,CAAC;EACDjB,YAAY,EAAE;IACZc,UAAU,EAAE,QAAQ;IACpBI,IAAI,EAAE;EACR,CAAC;EACDjB,UAAU,EAAE;IACVkB,QAAQ,EAAE/B,2BAA2B,CAACgC,SAAS;IAC/CC,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE,SAAS;IAChBC,YAAY,EAAE;EAChB,CAAC;EACDrB,UAAU,EAAE;IACViB,QAAQ,EAAE/B,2BAA2B,CAACoC,SAAS;IAC/CH,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE,SAAS,CAAE;EACpB,CAAC;EACDlB,SAAS,EAAE;IACTe,QAAQ,EAAE/B,2BAA2B,CAACqC,QAAQ;IAC9CJ,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE,SAAS,CAAE;EACpB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { Canvas, Rect, LinearGradient, vec, Shadow, RoundedRect } from '@shopify/react-native-skia';
|
|
5
5
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
-
|
|
6
|
+
// Memoized WallComponent to prevent unnecessary re-renders
|
|
7
|
+
export const WallComponent = /*#__PURE__*/React.memo(({
|
|
7
8
|
walls,
|
|
8
9
|
width,
|
|
9
10
|
height
|
|
@@ -86,5 +87,5 @@ export const WallComponent = ({
|
|
|
86
87
|
},
|
|
87
88
|
children: walls.map((wall, index) => renderWall(wall, index))
|
|
88
89
|
});
|
|
89
|
-
};
|
|
90
|
+
});
|
|
90
91
|
//# sourceMappingURL=WallComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Canvas","Rect","LinearGradient","vec","Shadow","RoundedRect","jsx","_jsx","jsxs","_jsxs","WallComponent","walls","width","height","renderWall","wall","index","cornerRadius","shadowOffset","Fragment","children","x","y","r","start","end","type","colors","dx","dy","blur","color","Math","max","style","map"],"sourceRoot":"../../../../../src","sources":["games/maze-runner/components/WallComponent.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,EAAEC,IAAI,EAAEC,cAAc,EAAEC,GAAG,EAAEC,MAAM,EAAEC,WAAW,QAAQ,4BAA4B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AASpG,OAAO,MAAMC,aAA2C,
|
|
1
|
+
{"version":3,"names":["React","Canvas","Rect","LinearGradient","vec","Shadow","RoundedRect","jsx","_jsx","jsxs","_jsxs","WallComponent","memo","walls","width","height","renderWall","wall","index","cornerRadius","shadowOffset","Fragment","children","x","y","r","start","end","type","colors","dx","dy","blur","color","Math","max","style","map"],"sourceRoot":"../../../../../src","sources":["games/maze-runner/components/WallComponent.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,5 +5,4 @@ export { WallComponent } from "./WallComponent.js";
|
|
|
5
5
|
export { EnhancedGameArea } from "./EnhancedGameArea.js";
|
|
6
6
|
export { GameBackground } from "./GameBackground.js";
|
|
7
7
|
export { ScoreBoard } from "./ScoreBoard.js";
|
|
8
|
-
export { GameOverModal } from "./GameOverModal.js";
|
|
9
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EnhancedBallComponent","WallComponent","EnhancedGameArea","GameBackground","ScoreBoard"
|
|
1
|
+
{"version":3,"names":["EnhancedBallComponent","WallComponent","EnhancedGameArea","GameBackground","ScoreBoard"],"sourceRoot":"../../../../../src","sources":["games/maze-runner/components/index.ts"],"mappings":";;AAAA,SAASA,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,UAAU,QAAQ,iBAAc","ignoreList":[]}
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { useEffect, useRef, useCallback } from 'react';
|
|
4
|
-
import { View, StyleSheet, Dimensions
|
|
3
|
+
import React, { useEffect, useRef, useCallback, useMemo } from 'react';
|
|
4
|
+
import { View, StyleSheet, Dimensions } from 'react-native';
|
|
5
5
|
import { GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
6
6
|
import { usePopitFidgetStore } from "./PopitFidgetStore.js";
|
|
7
7
|
import { PopitFidgetService } from "./PopitFidgetService.js";
|
|
8
|
-
import {
|
|
8
|
+
import { POPIT_FIDGET_GAME_CONFIG } from "./PopitFidgetConstants.js";
|
|
9
|
+
import { GAME_IDS } from "../../services/GamesService.js";
|
|
9
10
|
import { playSound, GAME_SOUNDS } from "../../services/SoundsService.js";
|
|
10
11
|
import { playHaptic, HapticType } from "../../services/HapticsService.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { GameSettings as GameSettingsComponent } from "../../shared/settings/GameSettings.js";
|
|
12
|
+
import { GameBackground, FidgetGrid as FidgetGridComponent, ScoreBoard } from "./components/index.js";
|
|
13
|
+
import { GameControlButton, GameOverModal } from "../../shared/helpers/index.js";
|
|
14
|
+
import { GameSettingsModal } from "../../shared/helpers/index.js";
|
|
15
15
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
16
|
const {
|
|
17
17
|
width,
|
|
18
18
|
height
|
|
19
19
|
} = Dimensions.get('window');
|
|
20
20
|
const PopitFidget = ({
|
|
21
|
-
|
|
22
|
-
onToggleSettingsModal,
|
|
23
|
-
externalSettings,
|
|
21
|
+
settings,
|
|
24
22
|
onSettingsChange
|
|
25
23
|
}) => {
|
|
26
24
|
// Use selective subscriptions to prevent unnecessary re-renders
|
|
@@ -39,10 +37,13 @@ const PopitFidget = ({
|
|
|
39
37
|
const popBubble = usePopitFidgetStore(state => state.popBubble);
|
|
40
38
|
const setTimeLeft = usePopitFidgetStore(state => state.setTimeLeft);
|
|
41
39
|
const serviceRef = useRef(null);
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
40
|
+
|
|
41
|
+
// Use settings from props
|
|
42
|
+
const {
|
|
43
|
+
difficulty,
|
|
44
|
+
enableSounds,
|
|
45
|
+
enableHaptics
|
|
46
|
+
} = settings;
|
|
46
47
|
|
|
47
48
|
// Initialize service and generate initial fidget grid
|
|
48
49
|
useEffect(() => {
|
|
@@ -52,92 +53,83 @@ const PopitFidget = ({
|
|
|
52
53
|
|
|
53
54
|
// Generate initial fidget grid so it shows before game starts
|
|
54
55
|
if (serviceRef.current && !fidgetGrid) {
|
|
55
|
-
const grid = serviceRef.current.generateFidgetGrid(
|
|
56
|
+
const grid = serviceRef.current.generateFidgetGrid(difficulty);
|
|
56
57
|
setFidgetGrid(grid);
|
|
57
58
|
}
|
|
59
|
+
}, [fidgetGrid, setFidgetGrid, difficulty]);
|
|
60
|
+
|
|
61
|
+
// Unmount-only cleanup to fully reset without causing state update loops
|
|
62
|
+
useEffect(() => {
|
|
58
63
|
return () => {
|
|
59
|
-
|
|
64
|
+
// Stop timers and reset store, but do NOT generate a new grid on unmount
|
|
65
|
+
try {
|
|
66
|
+
serviceRef.current?.stopGameTimer();
|
|
67
|
+
} catch {}
|
|
68
|
+
try {
|
|
69
|
+
resetGame();
|
|
70
|
+
} catch {}
|
|
71
|
+
try {
|
|
72
|
+
serviceRef.current?.cleanup();
|
|
73
|
+
} catch {}
|
|
60
74
|
};
|
|
61
|
-
}, [
|
|
75
|
+
}, []);
|
|
62
76
|
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
if (!
|
|
66
|
-
|
|
67
|
-
const hasChanged = !prev || prev.difficulty !== externalSettings.difficulty || prev.soundEnabled !== externalSettings.soundEnabled || prev.hapticEnabled !== externalSettings.hapticEnabled;
|
|
68
|
-
if (hasChanged) {
|
|
69
|
-
const commonSettings = {
|
|
70
|
-
difficulty: externalSettings.difficulty,
|
|
71
|
-
soundEnabled: externalSettings.soundEnabled,
|
|
72
|
-
hapticEnabled: externalSettings.hapticEnabled
|
|
73
|
-
};
|
|
74
|
-
settings.setDifficulty(commonSettings.difficulty);
|
|
75
|
-
settings.setSoundEnabled(commonSettings.soundEnabled);
|
|
76
|
-
settings.setHapticEnabled(commonSettings.hapticEnabled);
|
|
77
|
-
prevSettingsRef.current = externalSettings;
|
|
77
|
+
// Memoize service to prevent recreation
|
|
78
|
+
const service = useMemo(() => {
|
|
79
|
+
if (!serviceRef.current) {
|
|
80
|
+
serviceRef.current = new PopitFidgetService();
|
|
78
81
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
// Settings change callback
|
|
82
|
-
useEffect(() => {
|
|
83
|
-
if (!onSettingsChange) return;
|
|
84
|
-
const unsubscribe = useSettings.subscribe(state => {
|
|
85
|
-
onSettingsChange({
|
|
86
|
-
difficulty: state.difficulty,
|
|
87
|
-
soundEnabled: state.soundEnabled,
|
|
88
|
-
hapticEnabled: state.hapticEnabled
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
return unsubscribe;
|
|
92
|
-
}, [onSettingsChange, useSettings]);
|
|
82
|
+
return serviceRef.current;
|
|
83
|
+
}, []);
|
|
93
84
|
|
|
94
85
|
// Generate new fidget grid (simplified - always square based on difficulty)
|
|
95
86
|
const generateNewFidget = useCallback(() => {
|
|
96
|
-
|
|
97
|
-
const grid = serviceRef.current.generateFidgetGrid(settings.difficulty);
|
|
87
|
+
const grid = service.generateFidgetGrid(difficulty);
|
|
98
88
|
setFidgetGrid(grid);
|
|
99
|
-
}, [setFidgetGrid,
|
|
89
|
+
}, [service, setFidgetGrid, difficulty]);
|
|
100
90
|
|
|
101
91
|
// Track previous difficulty to avoid infinite loops
|
|
102
|
-
const prevDifficultyRef = React.useRef(
|
|
92
|
+
const prevDifficultyRef = React.useRef(difficulty);
|
|
103
93
|
|
|
104
94
|
// Watch for difficulty changes and regenerate grid when difficulty changes
|
|
105
|
-
|
|
95
|
+
const handleDifficultyChange = useCallback(() => {
|
|
106
96
|
// Only regenerate if difficulty actually changed
|
|
107
|
-
if (prevDifficultyRef.current !==
|
|
97
|
+
if (prevDifficultyRef.current !== difficulty) {
|
|
108
98
|
if (!isPlaying) {
|
|
109
99
|
// Game not playing - just regenerate grid
|
|
110
|
-
|
|
111
|
-
setFidgetGrid(grid);
|
|
100
|
+
generateNewFidget();
|
|
112
101
|
} else {
|
|
113
102
|
// Game is playing - restart with new difficulty duration
|
|
114
|
-
const newDuration =
|
|
103
|
+
const newDuration = POPIT_FIDGET_GAME_CONFIG.GAME_DURATION;
|
|
115
104
|
|
|
116
105
|
// Stop current timer
|
|
117
|
-
|
|
106
|
+
service.stopGameTimer();
|
|
118
107
|
|
|
119
108
|
// Start new timer with new duration
|
|
120
|
-
|
|
109
|
+
service.startGameTimer(newDuration, timeLeft => setTimeLeft(timeLeft), () => stopGame());
|
|
121
110
|
|
|
122
111
|
// Update store with new duration
|
|
123
112
|
setTimeLeft(newDuration);
|
|
124
113
|
}
|
|
125
|
-
prevDifficultyRef.current =
|
|
114
|
+
prevDifficultyRef.current = difficulty;
|
|
126
115
|
}
|
|
127
|
-
}, [
|
|
116
|
+
}, [difficulty, isPlaying, generateNewFidget, service, setTimeLeft, stopGame]);
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
handleDifficultyChange();
|
|
119
|
+
}, [handleDifficultyChange]);
|
|
128
120
|
|
|
129
121
|
// Watch for game completion events and play appropriate sounds
|
|
130
122
|
React.useEffect(() => {
|
|
131
123
|
if (gameOver && !isPlaying) {
|
|
132
124
|
if (gameWon) {
|
|
133
125
|
// All bubbles popped - game completed successfully
|
|
134
|
-
playSound(GAME_SOUNDS.BUBBLE_POPPER.COMPLETE,
|
|
126
|
+
playSound(GAME_SOUNDS.BUBBLE_POPPER.COMPLETE, enableSounds);
|
|
135
127
|
} else {
|
|
136
128
|
// Time ran out - game over
|
|
137
|
-
playSound(GAME_SOUNDS.TIME_UP,
|
|
129
|
+
playSound(GAME_SOUNDS.TIME_UP, enableSounds);
|
|
138
130
|
}
|
|
139
131
|
}
|
|
140
|
-
}, [gameOver, gameWon, isPlaying,
|
|
132
|
+
}, [gameOver, gameWon, isPlaying, enableSounds]);
|
|
141
133
|
|
|
142
134
|
// Timer effect - handles countdown when game is playing
|
|
143
135
|
useEffect(() => {
|
|
@@ -163,73 +155,101 @@ const PopitFidget = ({
|
|
|
163
155
|
|
|
164
156
|
// Start game
|
|
165
157
|
const startGameHandler = useCallback(() => {
|
|
166
|
-
if (!serviceRef.current) return;
|
|
167
|
-
|
|
168
158
|
// Always generate new fidget when starting a new game
|
|
169
159
|
generateNewFidget();
|
|
170
160
|
|
|
171
161
|
// Play game start sound
|
|
172
|
-
playSound(GAME_SOUNDS.BUBBLE_POPPER.START,
|
|
162
|
+
playSound(GAME_SOUNDS.BUBBLE_POPPER.START, enableSounds);
|
|
173
163
|
|
|
174
164
|
// Store uses fixed 60s duration internally
|
|
175
165
|
startGame();
|
|
176
166
|
|
|
177
167
|
// Haptic feedback
|
|
178
|
-
playHaptic(HapticType.MEDIUM,
|
|
179
|
-
}, [startGame,
|
|
168
|
+
playHaptic(HapticType.MEDIUM, enableHaptics);
|
|
169
|
+
}, [startGame, enableSounds, enableHaptics, generateNewFidget]);
|
|
180
170
|
|
|
181
171
|
// Stop game - simply reset the game state without showing game over popup
|
|
182
172
|
const stopGameHandler = useCallback(() => {
|
|
183
|
-
|
|
184
|
-
serviceRef.current.stopGameTimer();
|
|
185
|
-
serviceRef.current.clearParticles();
|
|
173
|
+
service.stopGameTimer();
|
|
186
174
|
resetGame();
|
|
187
175
|
generateNewFidget();
|
|
188
|
-
}, [resetGame, generateNewFidget]);
|
|
176
|
+
}, [service, resetGame, generateNewFidget]);
|
|
189
177
|
|
|
190
178
|
// Reset game
|
|
191
179
|
const resetGameHandler = useCallback(() => {
|
|
192
|
-
|
|
193
|
-
serviceRef.current.stopGameTimer();
|
|
194
|
-
serviceRef.current.clearParticles();
|
|
180
|
+
service.stopGameTimer();
|
|
195
181
|
resetGame();
|
|
196
182
|
generateNewFidget();
|
|
197
|
-
}, [resetGame, generateNewFidget]);
|
|
183
|
+
}, [service, resetGame, generateNewFidget]);
|
|
198
184
|
|
|
199
185
|
// Handle bubble pop with stable callback reference
|
|
200
186
|
const handleBubblePop = useCallback((row, col) => {
|
|
201
|
-
if (!
|
|
187
|
+
if (!fidgetGrid) return;
|
|
202
188
|
const bubble = fidgetGrid.bubbles[row]?.[col];
|
|
203
189
|
if (!bubble || bubble.isPopped) return;
|
|
204
190
|
|
|
205
191
|
// Play pop sound
|
|
206
|
-
playSound(GAME_SOUNDS.BUBBLE_POPPER.POP,
|
|
192
|
+
playSound(GAME_SOUNDS.BUBBLE_POPPER.POP, enableSounds);
|
|
207
193
|
|
|
208
194
|
// Pop the bubble in store
|
|
209
195
|
popBubble(row, col);
|
|
210
196
|
|
|
211
197
|
// Haptic feedback
|
|
212
|
-
playHaptic(HapticType.LIGHT,
|
|
198
|
+
playHaptic(HapticType.LIGHT, enableHaptics);
|
|
213
199
|
|
|
214
200
|
// Completion percentage is already calculated efficiently in the store
|
|
215
|
-
}, [fidgetGrid, popBubble,
|
|
201
|
+
}, [fidgetGrid, popBubble, enableSounds, enableHaptics]);
|
|
202
|
+
|
|
203
|
+
// Memoize screen dimensions to prevent recalculation
|
|
204
|
+
const screenDimensions = useMemo(() => ({
|
|
205
|
+
width,
|
|
206
|
+
height
|
|
207
|
+
}), []);
|
|
216
208
|
|
|
217
209
|
// Calculate bubble size based on grid - made bigger for Pop It appearance
|
|
218
|
-
const
|
|
210
|
+
const bubbleSize = useMemo(() => {
|
|
219
211
|
if (!fidgetGrid) return 60;
|
|
220
|
-
const availableWidth = width * 0.85;
|
|
221
|
-
const availableHeight = height * 0.6;
|
|
212
|
+
const availableWidth = screenDimensions.width * 0.85;
|
|
213
|
+
const availableHeight = screenDimensions.height * 0.6;
|
|
222
214
|
const maxSize = Math.min(availableWidth / fidgetGrid.size, availableHeight / fidgetGrid.size);
|
|
223
215
|
// Increased minimum and maximum sizes for bigger, more prominent bubbles
|
|
224
216
|
return Math.max(45, Math.min(80, maxSize * 0.9));
|
|
225
|
-
}, [fidgetGrid]);
|
|
217
|
+
}, [fidgetGrid, screenDimensions]);
|
|
218
|
+
|
|
219
|
+
// Memoize game control button props to prevent unnecessary re-renders
|
|
220
|
+
const gameControlButtonProps = useMemo(() => ({
|
|
221
|
+
isPlaying,
|
|
222
|
+
gameOver,
|
|
223
|
+
onStartGame: startGameHandler,
|
|
224
|
+
onStopGame: stopGameHandler,
|
|
225
|
+
startButtonText: "START POPPING",
|
|
226
|
+
stopButtonText: "STOP GAME",
|
|
227
|
+
startButtonSubtext: "Pop bubbles to relax!",
|
|
228
|
+
stopButtonSubtext: "End current game",
|
|
229
|
+
startButtonColor: "#9c27b0",
|
|
230
|
+
stopButtonColor: "#dc2626",
|
|
231
|
+
startButtonBorderColor: "#ce93d8",
|
|
232
|
+
stopButtonBorderColor: "#f87171"
|
|
233
|
+
}), [isPlaying, gameOver, startGameHandler, stopGameHandler]);
|
|
234
|
+
|
|
235
|
+
// Memoize game over modal props to prevent unnecessary re-renders
|
|
236
|
+
const gameOverModalProps = useMemo(() => ({
|
|
237
|
+
isVisible: gameOver,
|
|
238
|
+
score,
|
|
239
|
+
onPlayAgain: resetGameHandler,
|
|
240
|
+
buttonText: "Pop Again!",
|
|
241
|
+
primaryColor: "rgba(108, 92, 231, 0.85)",
|
|
242
|
+
borderColor: "rgba(108, 92, 231, 0.95)",
|
|
243
|
+
buttonColor: "#9c27b0",
|
|
244
|
+
buttonBorderColor: "#ce93d8"
|
|
245
|
+
}), [gameOver, score, resetGameHandler]);
|
|
226
246
|
return /*#__PURE__*/_jsx(GestureHandlerRootView, {
|
|
227
247
|
style: styles.container,
|
|
228
248
|
children: /*#__PURE__*/_jsxs(View, {
|
|
229
249
|
style: styles.gameContainer,
|
|
230
250
|
children: [/*#__PURE__*/_jsx(GameBackground, {
|
|
231
|
-
width: width,
|
|
232
|
-
height: height,
|
|
251
|
+
width: screenDimensions.width,
|
|
252
|
+
height: screenDimensions.height,
|
|
233
253
|
isPlaying: isPlaying
|
|
234
254
|
}), /*#__PURE__*/_jsx(ScoreBoard, {
|
|
235
255
|
score: score,
|
|
@@ -238,38 +258,19 @@ const PopitFidget = ({
|
|
|
238
258
|
style: styles.gameArea,
|
|
239
259
|
children: fidgetGrid && /*#__PURE__*/_jsx(FidgetGridComponent, {
|
|
240
260
|
grid: fidgetGrid,
|
|
241
|
-
bubbleSize:
|
|
261
|
+
bubbleSize: bubbleSize,
|
|
242
262
|
onBubblePop: handleBubblePop,
|
|
243
|
-
hapticEnabled:
|
|
263
|
+
hapticEnabled: enableHaptics,
|
|
244
264
|
isPlaying: isPlaying
|
|
245
265
|
})
|
|
246
266
|
}), /*#__PURE__*/_jsx(GameControlButton, {
|
|
247
|
-
|
|
248
|
-
gameOver: gameOver,
|
|
249
|
-
onStartGame: startGameHandler,
|
|
250
|
-
onStopGame: stopGameHandler,
|
|
251
|
-
startButtonText: "START POPPING",
|
|
252
|
-
stopButtonText: "STOP GAME",
|
|
253
|
-
startButtonSubtext: "Pop bubbles to relax!",
|
|
254
|
-
stopButtonSubtext: "End current game",
|
|
255
|
-
startButtonColor: "#9c27b0",
|
|
256
|
-
stopButtonColor: "#dc2626",
|
|
257
|
-
startButtonBorderColor: "#ce93d8",
|
|
258
|
-
stopButtonBorderColor: "#f87171"
|
|
267
|
+
...gameControlButtonProps
|
|
259
268
|
}), /*#__PURE__*/_jsx(GameOverModal, {
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
animationType: "slide",
|
|
266
|
-
presentationStyle: "pageSheet",
|
|
267
|
-
onRequestClose: onToggleSettingsModal,
|
|
268
|
-
children: /*#__PURE__*/_jsx(GameSettingsComponent, {
|
|
269
|
-
gameId: "popit-fidget",
|
|
270
|
-
onClose: onToggleSettingsModal || (() => {}),
|
|
271
|
-
settingsStore: settings
|
|
272
|
-
})
|
|
269
|
+
...gameOverModalProps
|
|
270
|
+
}), /*#__PURE__*/_jsx(GameSettingsModal, {
|
|
271
|
+
gameId: GAME_IDS.POPIT_FIDGET,
|
|
272
|
+
settings: settings,
|
|
273
|
+
onSettingsChange: onSettingsChange
|
|
273
274
|
})]
|
|
274
275
|
})
|
|
275
276
|
});
|