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
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { useEffect, useMemo, useCallback } from 'react';
|
|
4
|
-
import { TouchableOpacity } from 'react-native';
|
|
4
|
+
import { TouchableOpacity, Dimensions } from 'react-native';
|
|
5
5
|
import { Canvas, vec, Path, Skia, Oval, Circle } from '@shopify/react-native-skia';
|
|
6
6
|
import Animated, { useSharedValue, useAnimatedStyle, withSpring, withTiming } from 'react-native-reanimated';
|
|
7
7
|
import { GAME_CONFIG, ANIMATION_CONFIG } from "../BalloonBlasterService.js";
|
|
8
|
+
|
|
9
|
+
// Constants for better maintainability
|
|
8
10
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
const BALLOON_HEIGHT_MULTIPLIER = 1.2;
|
|
12
|
+
const STRING_LENGTH = 25;
|
|
13
|
+
const HIGHLIGHT_OPACITY = 0.5;
|
|
14
|
+
const BALLOON_OPACITY = 0.8;
|
|
15
|
+
const DANGER_CIRCLE_RADIUS = 8;
|
|
16
|
+
const GLOW_RADIUS_MULTIPLIER = 0.6;
|
|
17
|
+
const GLOW_OPACITY = 0.3;
|
|
18
|
+
|
|
19
|
+
// Types for better type safety
|
|
20
|
+
|
|
9
21
|
export const BalloonComponent = /*#__PURE__*/React.memo(({
|
|
10
22
|
balloon,
|
|
11
23
|
onPop
|
|
12
24
|
}) => {
|
|
25
|
+
// Get screen dimensions
|
|
26
|
+
const {
|
|
27
|
+
height
|
|
28
|
+
} = Dimensions.get('window');
|
|
29
|
+
|
|
30
|
+
// FORCE all balloons to start from bottom - override any wrong positions
|
|
31
|
+
const initialY = balloon.position.y > height ? balloon.position.y : height + 20;
|
|
32
|
+
|
|
13
33
|
// Animated values for smooth movement
|
|
14
34
|
const translateX = useSharedValue(balloon.position.x);
|
|
15
|
-
const translateY = useSharedValue(
|
|
35
|
+
const translateY = useSharedValue(initialY); // Force bottom start
|
|
16
36
|
const rotation = useSharedValue(balloon.rotation);
|
|
17
37
|
const scale = useSharedValue(balloon.isPopped ? 0 : 1);
|
|
18
38
|
const opacity = useSharedValue(balloon.isPopped ? 0 : 1);
|
|
@@ -56,27 +76,43 @@ export const BalloonComponent = /*#__PURE__*/React.memo(({
|
|
|
56
76
|
height: GAME_CONFIG.BALLOON_SIZE,
|
|
57
77
|
zIndex: balloon.isBomb ? 10 : 5
|
|
58
78
|
};
|
|
59
|
-
|
|
79
|
+
|
|
80
|
+
// Optimized color manipulation functions
|
|
81
|
+
const lightenColor = useCallback((color, amount) => {
|
|
82
|
+
const hex = color.replace('#', '');
|
|
83
|
+
const r = Math.min(255, parseInt(hex.substring(0, 2), 16) + Math.round(255 * amount));
|
|
84
|
+
const g = Math.min(255, parseInt(hex.substring(2, 4), 16) + Math.round(255 * amount));
|
|
85
|
+
const b = Math.min(255, parseInt(hex.substring(4, 6), 16) + Math.round(255 * amount));
|
|
86
|
+
return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
|
|
87
|
+
}, []);
|
|
88
|
+
const darkenColor = useCallback((color, amount) => {
|
|
89
|
+
const hex = color.replace('#', '');
|
|
90
|
+
const r = Math.max(0, parseInt(hex.substring(0, 2), 16) - Math.round(255 * amount));
|
|
91
|
+
const g = Math.max(0, parseInt(hex.substring(2, 4), 16) - Math.round(255 * amount));
|
|
92
|
+
const b = Math.max(0, parseInt(hex.substring(4, 6), 16) - Math.round(255 * amount));
|
|
93
|
+
return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
|
|
94
|
+
}, []);
|
|
95
|
+
|
|
96
|
+
// Optimized balloon color calculation with proper memoization
|
|
97
|
+
const colors = useMemo(() => {
|
|
60
98
|
if (balloon.isBomb) {
|
|
61
|
-
// Black bomb balloons with danger symbol
|
|
62
99
|
return {
|
|
63
100
|
primary: '#1a1a1a',
|
|
64
|
-
// Dark black
|
|
65
101
|
secondary: '#333333',
|
|
66
|
-
// Slightly lighter black
|
|
67
102
|
highlight: '#555555',
|
|
68
|
-
|
|
69
|
-
|
|
103
|
+
shadow: '#000000'
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (balloon.isBonus) {
|
|
107
|
+
return {
|
|
108
|
+
primary: '#FFD700',
|
|
109
|
+
secondary: '#FFEB3B',
|
|
110
|
+
highlight: '#FFF59D',
|
|
111
|
+
shadow: '#CC8800'
|
|
70
112
|
};
|
|
71
113
|
}
|
|
72
|
-
if (balloon.isBonus) return {
|
|
73
|
-
primary: '#FFD700',
|
|
74
|
-
secondary: '#FFEB3B',
|
|
75
|
-
highlight: '#FFF59D',
|
|
76
|
-
shadow: '#CC8800'
|
|
77
|
-
};
|
|
78
114
|
|
|
79
|
-
//
|
|
115
|
+
// Regular balloon colors with optimized calculation
|
|
80
116
|
const baseColor = balloon.type.color || '#FF0080';
|
|
81
117
|
return {
|
|
82
118
|
primary: baseColor,
|
|
@@ -84,106 +120,97 @@ export const BalloonComponent = /*#__PURE__*/React.memo(({
|
|
|
84
120
|
highlight: lightenColor(baseColor, 0.5),
|
|
85
121
|
shadow: darkenColor(baseColor, 0.3)
|
|
86
122
|
};
|
|
87
|
-
};
|
|
123
|
+
}, [balloon.isBomb, balloon.isBonus, balloon.type.color, lightenColor, darkenColor]);
|
|
88
124
|
|
|
89
|
-
// Memoized
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
return
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const b = Math.max(0, parseInt(hex.substr(4, 2), 16) - Math.round(255 * amount));
|
|
102
|
-
return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
|
|
125
|
+
// Memoized dimensions for better performance
|
|
126
|
+
const dimensions = useMemo(() => {
|
|
127
|
+
const balloonWidth = GAME_CONFIG.BALLOON_SIZE;
|
|
128
|
+
const balloonHeight = GAME_CONFIG.BALLOON_SIZE * BALLOON_HEIGHT_MULTIPLIER;
|
|
129
|
+
const totalHeight = balloonHeight + STRING_LENGTH;
|
|
130
|
+
const center = vec(balloonWidth / 2, balloonHeight / 2);
|
|
131
|
+
return {
|
|
132
|
+
balloonWidth,
|
|
133
|
+
balloonHeight,
|
|
134
|
+
totalHeight,
|
|
135
|
+
center
|
|
136
|
+
};
|
|
103
137
|
}, []);
|
|
104
138
|
|
|
105
|
-
//
|
|
106
|
-
const colors = useMemo(() => getBalloonColors(), [balloon.isBomb, balloon.isBonus, balloon.type.color]);
|
|
107
|
-
const balloonWidth = GAME_CONFIG.BALLOON_SIZE;
|
|
108
|
-
const balloonHeight = GAME_CONFIG.BALLOON_SIZE * 1.2; // Make it oval - taller than wide
|
|
109
|
-
const stringLength = 25; // Length of balloon string
|
|
110
|
-
const totalHeight = balloonHeight + stringLength; // Total height including string
|
|
111
|
-
const center = vec(balloonWidth / 2, balloonHeight / 2);
|
|
112
|
-
|
|
113
|
-
// Memoize expensive curved string path generation
|
|
139
|
+
// Optimized curved string path generation with better memoization
|
|
114
140
|
const curvedStringPath = useMemo(() => {
|
|
115
141
|
const path = Skia.Path.Make();
|
|
116
|
-
const startX = center.x;
|
|
117
|
-
const startY = balloonHeight - 2;
|
|
142
|
+
const startX = dimensions.center.x;
|
|
143
|
+
const startY = dimensions.balloonHeight - 2;
|
|
118
144
|
|
|
119
|
-
//
|
|
145
|
+
// Optimized seed generation for consistent random curves
|
|
120
146
|
const seed = balloon.id.split('').reduce((acc, char) => acc + char.charCodeAt(0), 0);
|
|
121
147
|
const random = index => (seed + index * 17) % 100 / 100;
|
|
122
148
|
path.moveTo(startX, startY);
|
|
123
149
|
|
|
124
|
-
//
|
|
125
|
-
const segments = 2;
|
|
126
|
-
const segmentHeight =
|
|
150
|
+
// Optimized string generation with minimal segments
|
|
151
|
+
const segments = 2;
|
|
152
|
+
const segmentHeight = STRING_LENGTH / segments;
|
|
127
153
|
for (let i = 1; i <= segments; i++) {
|
|
128
154
|
const y = startY + segmentHeight * i;
|
|
129
|
-
const waveAmplitude = 2 + random(i) * 2;
|
|
155
|
+
const waveAmplitude = 2 + random(i) * 2;
|
|
130
156
|
const waveOffset = (random(i + 10) - 0.5) * waveAmplitude;
|
|
131
157
|
const x = startX + waveOffset;
|
|
132
|
-
|
|
133
|
-
// Simplified curve with fewer control points
|
|
134
158
|
const controlX1 = startX + (random(i + 20) - 0.5) * waveAmplitude * 0.5;
|
|
135
159
|
const controlY1 = y - segmentHeight * 0.5;
|
|
136
|
-
path.quadTo(controlX1, controlY1, x, y);
|
|
160
|
+
path.quadTo(controlX1, controlY1, x, y);
|
|
137
161
|
}
|
|
138
162
|
return path;
|
|
139
|
-
}, [balloon.id, center.x, balloonHeight
|
|
163
|
+
}, [balloon.id, dimensions.center.x, dimensions.balloonHeight]);
|
|
164
|
+
|
|
165
|
+
// Memoized tap handler for better performance
|
|
166
|
+
const handleTap = useCallback(() => {
|
|
167
|
+
onPop?.(balloon.id);
|
|
168
|
+
}, [onPop, balloon.id]);
|
|
140
169
|
return /*#__PURE__*/_jsx(Animated.View, {
|
|
141
170
|
style: [containerStyle, animatedStyle],
|
|
142
171
|
children: /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
143
|
-
onPress:
|
|
144
|
-
onPop?.(balloon.id);
|
|
145
|
-
},
|
|
172
|
+
onPress: handleTap,
|
|
146
173
|
activeOpacity: 0.8,
|
|
147
174
|
style: {
|
|
148
|
-
width: balloonWidth,
|
|
149
|
-
height: totalHeight
|
|
175
|
+
width: dimensions.balloonWidth,
|
|
176
|
+
height: dimensions.totalHeight
|
|
150
177
|
},
|
|
151
178
|
children: /*#__PURE__*/_jsxs(Canvas, {
|
|
152
179
|
style: {
|
|
153
|
-
width: balloonWidth,
|
|
154
|
-
height: totalHeight
|
|
180
|
+
width: dimensions.balloonWidth,
|
|
181
|
+
height: dimensions.totalHeight
|
|
155
182
|
},
|
|
156
183
|
pointerEvents: "none",
|
|
157
184
|
children: [/*#__PURE__*/_jsx(Oval, {
|
|
158
185
|
x: 0,
|
|
159
186
|
y: 0,
|
|
160
|
-
width: balloonWidth,
|
|
161
|
-
height: balloonHeight,
|
|
187
|
+
width: dimensions.balloonWidth,
|
|
188
|
+
height: dimensions.balloonHeight,
|
|
162
189
|
color: colors.primary,
|
|
163
|
-
opacity:
|
|
190
|
+
opacity: BALLOON_OPACITY
|
|
164
191
|
}), /*#__PURE__*/_jsx(Oval, {
|
|
165
|
-
x: balloonWidth * 0.2,
|
|
166
|
-
y: balloonHeight * 0.15,
|
|
167
|
-
width: balloonWidth * 0.3,
|
|
168
|
-
height: balloonHeight * 0.2,
|
|
192
|
+
x: dimensions.balloonWidth * 0.2,
|
|
193
|
+
y: dimensions.balloonHeight * 0.15,
|
|
194
|
+
width: dimensions.balloonWidth * 0.3,
|
|
195
|
+
height: dimensions.balloonHeight * 0.2,
|
|
169
196
|
color: colors.highlight,
|
|
170
|
-
opacity:
|
|
197
|
+
opacity: HIGHLIGHT_OPACITY
|
|
171
198
|
}), balloon.isBomb && /*#__PURE__*/_jsxs(_Fragment, {
|
|
172
199
|
children: [/*#__PURE__*/_jsx(Circle, {
|
|
173
|
-
cx: center.x,
|
|
174
|
-
cy: center.y,
|
|
175
|
-
r:
|
|
200
|
+
cx: dimensions.center.x,
|
|
201
|
+
cy: dimensions.center.y,
|
|
202
|
+
r: DANGER_CIRCLE_RADIUS,
|
|
176
203
|
color: "#FF0000",
|
|
177
204
|
opacity: 0.9
|
|
178
205
|
}), /*#__PURE__*/_jsx(Path, {
|
|
179
|
-
path: Skia.Path.Make().moveTo(center.x, center.y - 4).lineTo(center.x, center.y + 1),
|
|
206
|
+
path: Skia.Path.Make().moveTo(dimensions.center.x, dimensions.center.y - 4).lineTo(dimensions.center.x, dimensions.center.y + 1),
|
|
180
207
|
color: "#FFFFFF",
|
|
181
208
|
style: "stroke",
|
|
182
209
|
strokeWidth: 2,
|
|
183
210
|
strokeCap: "round"
|
|
184
211
|
}), /*#__PURE__*/_jsx(Circle, {
|
|
185
|
-
cx: center.x,
|
|
186
|
-
cy: center.y + 3,
|
|
212
|
+
cx: dimensions.center.x,
|
|
213
|
+
cy: dimensions.center.y + 3,
|
|
187
214
|
r: 1,
|
|
188
215
|
color: "#FFFFFF"
|
|
189
216
|
})]
|
|
@@ -194,11 +221,11 @@ export const BalloonComponent = /*#__PURE__*/React.memo(({
|
|
|
194
221
|
strokeWidth: 1.5,
|
|
195
222
|
strokeCap: "round"
|
|
196
223
|
}), balloon.isBonus && /*#__PURE__*/_jsx(Circle, {
|
|
197
|
-
cx: center.x,
|
|
198
|
-
cy: center.y,
|
|
199
|
-
r: balloonWidth *
|
|
224
|
+
cx: dimensions.center.x,
|
|
225
|
+
cy: dimensions.center.y,
|
|
226
|
+
r: dimensions.balloonWidth * GLOW_RADIUS_MULTIPLIER,
|
|
200
227
|
color: "#FFD700",
|
|
201
|
-
opacity:
|
|
228
|
+
opacity: GLOW_OPACITY
|
|
202
229
|
})]
|
|
203
230
|
})
|
|
204
231
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","useCallback","TouchableOpacity","Canvas","vec","Path","Skia","Oval","Circle","Animated","useSharedValue","useAnimatedStyle","withSpring","withTiming","GAME_CONFIG","ANIMATION_CONFIG","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","BalloonComponent","memo","balloon","onPop","translateX","position","x","translateY","y","rotation","scale","isPopped","opacity","value","BALLOON_SPRING","SLICE_TIMING","animatedStyle","transform","rotate","containerStyle","width","BALLOON_SIZE","height","zIndex","isBomb","getBalloonColors","primary","secondary","highlight","shadow","isBonus","baseColor","type","color","lightenColor","darkenColor","amount","hex","replace","r","Math","min","parseInt","substr","round","g","b","toString","padStart","max","colors","balloonWidth","balloonHeight","stringLength","totalHeight","center","curvedStringPath","path","Make","startX","startY","seed","id","split","reduce","acc","char","charCodeAt","random","index","moveTo","segments","segmentHeight","i","waveAmplitude","waveOffset","controlX1","controlY1","quadTo","View","style","children","onPress","activeOpacity","pointerEvents","cx","cy","lineTo","strokeWidth","strokeCap","prevProps","nextProps"],"sourceRoot":"../../../../../src","sources":["games/balloon-blaster/components/BalloonComponent.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,OAAO,EAAEC,WAAW,QAAQ,OAAO;AAC9D,SAASC,gBAAgB,QAAQ,cAAc;AAC/C,SAASC,MAAM,EAAEC,GAAG,EAAEC,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEC,MAAM,QAAQ,4BAA4B;AAClF,OAAOC,QAAQ,IACbC,cAAc,EACdC,gBAAgB,EAChBC,UAAU,EACVC,UAAU,QACL,yBAAyB;AAEhC,SAASC,WAAW,EAAEC,gBAAgB,QAAQ,6BAA0B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAQzE,OAAO,MAAMC,gBAAiD,gBAAGxB,KAAK,CAACyB,IAAI,CAAC,CAAC;EAAEC,OAAO;EAAEC;AAAM,CAAC,KAAK;EAClG;EACA,MAAMC,UAAU,GAAGhB,cAAc,CAACc,OAAO,CAACG,QAAQ,CAACC,CAAC,CAAC;EACrD,MAAMC,UAAU,GAAGnB,cAAc,CAACc,OAAO,CAACG,QAAQ,CAACG,CAAC,CAAC;EACrD,MAAMC,QAAQ,GAAGrB,cAAc,CAACc,OAAO,CAACO,QAAQ,CAAC;EACjD,MAAMC,KAAK,GAAGtB,cAAc,CAACc,OAAO,CAACS,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;EACtD,MAAMC,OAAO,GAAGxB,cAAc,CAACc,OAAO,CAACS,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;;EAExD;EACAlC,SAAS,CAAC,MAAM;IACd2B,UAAU,CAACS,KAAK,GAAGvB,UAAU,CAACY,OAAO,CAACG,QAAQ,CAACC,CAAC,EAAEb,gBAAgB,CAACqB,cAAc,CAAC;IAClFP,UAAU,CAACM,KAAK,GAAGvB,UAAU,CAACY,OAAO,CAACG,QAAQ,CAACG,CAAC,EAAEf,gBAAgB,CAACqB,cAAc,CAAC;IAClFL,QAAQ,CAACI,KAAK,GAAGvB,UAAU,CAACY,OAAO,CAACO,QAAQ,EAAEhB,gBAAgB,CAACqB,cAAc,CAAC;EAChF,CAAC,EAAE,CAACZ,OAAO,CAACG,QAAQ,CAACC,CAAC,EAAEJ,OAAO,CAACG,QAAQ,CAACG,CAAC,EAAEN,OAAO,CAACO,QAAQ,CAAC,CAAC;;EAE9D;EACAhC,SAAS,CAAC,MAAM;IACd,IAAIyB,OAAO,CAACS,QAAQ,EAAE;MACpBD,KAAK,CAACG,KAAK,GAAGtB,UAAU,CAAC,CAAC,EAAEE,gBAAgB,CAACsB,YAAY,CAAC;MAC1DH,OAAO,CAACC,KAAK,GAAGtB,UAAU,CAAC,CAAC,EAAEE,gBAAgB,CAACsB,YAAY,CAAC;IAC9D,CAAC,MAAM;MACLL,KAAK,CAACG,KAAK,GAAGvB,UAAU,CAAC,CAAC,EAAEG,gBAAgB,CAACqB,cAAc,CAAC;MAC5DF,OAAO,CAACC,KAAK,GAAGvB,UAAU,CAAC,CAAC,EAAEG,gBAAgB,CAACqB,cAAc,CAAC;IAChE;EACF,CAAC,EAAE,CAACZ,OAAO,CAACS,QAAQ,CAAC,CAAC;;EAEtB;EACA,MAAMK,aAAa,GAAG3B,gBAAgB,CAAC,MAAM;IAC3C,OAAO;MACL4B,SAAS,EAAE,CACT;QAAEb,UAAU,EAAEA,UAAU,CAACS;MAAM,CAAC,EAChC;QAAEN,UAAU,EAAEA,UAAU,CAACM;MAAM,CAAC,EAChC;QAAEK,MAAM,EAAE,GAAGT,QAAQ,CAACI,KAAK;MAAM,CAAC,EAClC;QAAEH,KAAK,EAAEA,KAAK,CAACG;MAAM,CAAC,CACvB;MACDD,OAAO,EAAEA,OAAO,CAACC;IACnB,CAAC;EACH,CAAC,CAAC;EAEF,MAAMM,cAAc,GAAG;IACrBd,QAAQ,EAAE,UAAmB;IAC7Be,KAAK,EAAE5B,WAAW,CAAC6B,YAAY;IAC/BC,MAAM,EAAE9B,WAAW,CAAC6B,YAAY;IAChCE,MAAM,EAAErB,OAAO,CAACsB,MAAM,GAAG,EAAE,GAAG;EAChC,CAAC;EAED,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;IAC7B,IAAIvB,OAAO,CAACsB,MAAM,EAAE;MAClB;MACA,OAAO;QACLE,OAAO,EAAE,SAAS;QAAM;QACxBC,SAAS,EAAE,SAAS;QAAI;QACxBC,SAAS,EAAE,SAAS;QAAI;QACxBC,MAAM,EAAE,SAAS,CAAO;MAC1B,CAAC;IACH;IACA,IAAI3B,OAAO,CAAC4B,OAAO,EAAE,OAAO;MAC1BJ,OAAO,EAAE,SAAS;MAClBC,SAAS,EAAE,SAAS;MACpBC,SAAS,EAAE,SAAS;MACpBC,MAAM,EAAE;IACV,CAAC;;IAED;IACA,MAAME,SAAS,GAAG7B,OAAO,CAAC8B,IAAI,CAACC,KAAK,IAAI,SAAS;IACjD,OAAO;MACLP,OAAO,EAAEK,SAAS;MAClBJ,SAAS,EAAEO,YAAY,CAACH,SAAS,EAAE,GAAG,CAAC;MACvCH,SAAS,EAAEM,YAAY,CAACH,SAAS,EAAE,GAAG,CAAC;MACvCF,MAAM,EAAEM,WAAW,CAACJ,SAAS,EAAE,GAAG;IACpC,CAAC;EACH,CAAC;;EAED;EACA,MAAMG,YAAY,GAAGvD,WAAW,CAAC,CAACsD,KAAa,EAAEG,MAAc,KAAK;IAClE,MAAMC,GAAG,GAAGJ,KAAK,CAACK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAClC,MAAMC,CAAC,GAAGC,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEC,QAAQ,CAACL,GAAG,CAACM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGH,IAAI,CAACI,KAAK,CAAC,GAAG,GAAGR,MAAM,CAAC,CAAC;IAClF,MAAMS,CAAC,GAAGL,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEC,QAAQ,CAACL,GAAG,CAACM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGH,IAAI,CAACI,KAAK,CAAC,GAAG,GAAGR,MAAM,CAAC,CAAC;IAClF,MAAMU,CAAC,GAAGN,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEC,QAAQ,CAACL,GAAG,CAACM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGH,IAAI,CAACI,KAAK,CAAC,GAAG,GAAGR,MAAM,CAAC,CAAC;IAClF,OAAO,IAAIG,CAAC,CAACQ,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAGH,CAAC,CAACE,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAGF,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;EAClH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMb,WAAW,GAAGxD,WAAW,CAAC,CAACsD,KAAa,EAAEG,MAAc,KAAK;IACjE,MAAMC,GAAG,GAAGJ,KAAK,CAACK,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;IAClC,MAAMC,CAAC,GAAGC,IAAI,CAACS,GAAG,CAAC,CAAC,EAAEP,QAAQ,CAACL,GAAG,CAACM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGH,IAAI,CAACI,KAAK,CAAC,GAAG,GAAGR,MAAM,CAAC,CAAC;IAChF,MAAMS,CAAC,GAAGL,IAAI,CAACS,GAAG,CAAC,CAAC,EAAEP,QAAQ,CAACL,GAAG,CAACM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGH,IAAI,CAACI,KAAK,CAAC,GAAG,GAAGR,MAAM,CAAC,CAAC;IAChF,MAAMU,CAAC,GAAGN,IAAI,CAACS,GAAG,CAAC,CAAC,EAAEP,QAAQ,CAACL,GAAG,CAACM,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAGH,IAAI,CAACI,KAAK,CAAC,GAAG,GAAGR,MAAM,CAAC,CAAC;IAChF,OAAO,IAAIG,CAAC,CAACQ,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAGH,CAAC,CAACE,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAGF,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;EAClH,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAME,MAAM,GAAGxE,OAAO,CAAC,MAAM+C,gBAAgB,CAAC,CAAC,EAAE,CAACvB,OAAO,CAACsB,MAAM,EAAEtB,OAAO,CAAC4B,OAAO,EAAE5B,OAAO,CAAC8B,IAAI,CAACC,KAAK,CAAC,CAAC;EACvG,MAAMkB,YAAY,GAAG3D,WAAW,CAAC6B,YAAY;EAC7C,MAAM+B,aAAa,GAAG5D,WAAW,CAAC6B,YAAY,GAAG,GAAG,CAAC,CAAC;EACtD,MAAMgC,YAAY,GAAG,EAAE,CAAC,CAAC;EACzB,MAAMC,WAAW,GAAGF,aAAa,GAAGC,YAAY,CAAC,CAAC;EAClD,MAAME,MAAM,GAAGzE,GAAG,CAACqE,YAAY,GAAG,CAAC,EAAEC,aAAa,GAAG,CAAC,CAAC;;EAEvD;EACA,MAAMI,gBAAgB,GAAG9E,OAAO,CAAC,MAAM;IACrC,MAAM+E,IAAI,GAAGzE,IAAI,CAACD,IAAI,CAAC2E,IAAI,CAAC,CAAC;IAC7B,MAAMC,MAAM,GAAGJ,MAAM,CAACjD,CAAC;IACvB,MAAMsD,MAAM,GAAGR,aAAa,GAAG,CAAC;;IAEhC;IACA,MAAMS,IAAI,GAAG3D,OAAO,CAAC4D,EAAE,CAACC,KAAK,CAAC,EAAE,CAAC,CAACC,MAAM,CAAC,CAACC,GAAG,EAAEC,IAAI,KAAKD,GAAG,GAAGC,IAAI,CAACC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACpF,MAAMC,MAAM,GAAIC,KAAa,IAAM,CAACR,IAAI,GAAGQ,KAAK,GAAG,EAAE,IAAI,GAAG,GAAI,GAAG;IAEnEZ,IAAI,CAACa,MAAM,CAACX,MAAM,EAAEC,MAAM,CAAC;;IAE3B;IACA,MAAMW,QAAQ,GAAG,CAAC,CAAC,CAAC;IACpB,MAAMC,aAAa,GAAGnB,YAAY,GAAGkB,QAAQ;IAE7C,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIF,QAAQ,EAAEE,CAAC,EAAE,EAAE;MAClC,MAAMjE,CAAC,GAAGoD,MAAM,GAAIY,aAAa,GAAGC,CAAE;MACtC,MAAMC,aAAa,GAAG,CAAC,GAAGN,MAAM,CAACK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;MACzC,MAAME,UAAU,GAAG,CAACP,MAAM,CAACK,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAIC,aAAa;MACzD,MAAMpE,CAAC,GAAGqD,MAAM,GAAGgB,UAAU;;MAE7B;MACA,MAAMC,SAAS,GAAGjB,MAAM,GAAG,CAACS,MAAM,CAACK,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,IAAIC,aAAa,GAAG,GAAG;MACvE,MAAMG,SAAS,GAAGrE,CAAC,GAAGgE,aAAa,GAAG,GAAG;MAEzCf,IAAI,CAACqB,MAAM,CAACF,SAAS,EAAEC,SAAS,EAAEvE,CAAC,EAAEE,CAAC,CAAC,CAAC,CAAC;IAC3C;IAEA,OAAOiD,IAAI;EACb,CAAC,EAAE,CAACvD,OAAO,CAAC4D,EAAE,EAAEP,MAAM,CAACjD,CAAC,EAAE8C,aAAa,EAAEC,YAAY,CAAC,CAAC;EAEvD,oBACE1D,IAAA,CAACR,QAAQ,CAAC4F,IAAI;IAACC,KAAK,EAAE,CAAC7D,cAAc,EAAEH,aAAa,CAAE;IAAAiE,QAAA,eACpDtF,IAAA,CAACf,gBAAgB;MACfsG,OAAO,EAAEA,CAAA,KAAM;QACb/E,KAAK,GAAGD,OAAO,CAAC4D,EAAE,CAAC;MACrB,CAAE;MACFqB,aAAa,EAAE,GAAI;MACnBH,KAAK,EAAE;QAAE5D,KAAK,EAAE+B,YAAY;QAAE7B,MAAM,EAAEgC;MAAY,CAAE;MAAA2B,QAAA,eAEpDlF,KAAA,CAAClB,MAAM;QAACmG,KAAK,EAAE;UAAE5D,KAAK,EAAE+B,YAAY;UAAE7B,MAAM,EAAEgC;QAAY,CAAE;QAAC8B,aAAa,EAAC,MAAM;QAAAH,QAAA,gBAI/EtF,IAAA,CAACV,IAAI;UACHqB,CAAC,EAAE,CAAE;UACLE,CAAC,EAAE,CAAE;UACLY,KAAK,EAAE+B,YAAa;UACpB7B,MAAM,EAAE8B,aAAc;UACtBnB,KAAK,EAAEiB,MAAM,CAACxB,OAAQ;UACtBd,OAAO,EAAE;QAAI,CACd,CAAC,eAGFjB,IAAA,CAACV,IAAI;UACHqB,CAAC,EAAE6C,YAAY,GAAG,GAAI;UACtB3C,CAAC,EAAE4C,aAAa,GAAG,IAAK;UACxBhC,KAAK,EAAE+B,YAAY,GAAG,GAAI;UAC1B7B,MAAM,EAAE8B,aAAa,GAAG,GAAI;UAC5BnB,KAAK,EAAEiB,MAAM,CAACtB,SAAU;UACxBhB,OAAO,EAAE;QAAI,CACd,CAAC,EAGDV,OAAO,CAACsB,MAAM,iBACbzB,KAAA,CAAAF,SAAA;UAAAoF,QAAA,gBAEEtF,IAAA,CAACT,MAAM;YACLmG,EAAE,EAAE9B,MAAM,CAACjD,CAAE;YACbgF,EAAE,EAAE/B,MAAM,CAAC/C,CAAE;YACb+B,CAAC,EAAE,CAAE;YACLN,KAAK,EAAC,SAAS;YACfrB,OAAO,EAAE;UAAI,CACd,CAAC,eAEFjB,IAAA,CAACZ,IAAI;YACH0E,IAAI,EAAEzE,IAAI,CAACD,IAAI,CAAC2E,IAAI,CAAC,CAAC,CACnBY,MAAM,CAACf,MAAM,CAACjD,CAAC,EAAEiD,MAAM,CAAC/C,CAAC,GAAG,CAAC,CAAC,CAC9B+E,MAAM,CAAChC,MAAM,CAACjD,CAAC,EAAEiD,MAAM,CAAC/C,CAAC,GAAG,CAAC,CAAE;YAClCyB,KAAK,EAAC,SAAS;YACf+C,KAAK,EAAC,QAAQ;YACdQ,WAAW,EAAE,CAAE;YACfC,SAAS,EAAC;UAAO,CAClB,CAAC,eACF9F,IAAA,CAACT,MAAM;YACLmG,EAAE,EAAE9B,MAAM,CAACjD,CAAE;YACbgF,EAAE,EAAE/B,MAAM,CAAC/C,CAAC,GAAG,CAAE;YACjB+B,CAAC,EAAE,CAAE;YACLN,KAAK,EAAC;UAAS,CAChB,CAAC;QAAA,CACF,CACH,EAGA,CAAC/B,OAAO,CAAC4B,OAAO,iBACfnC,IAAA,CAACZ,IAAI;UACH0E,IAAI,EAAED,gBAAiB;UACvBvB,KAAK,EAAC,SAAS;UACf+C,KAAK,EAAC,QAAQ;UACdQ,WAAW,EAAE,GAAI;UACjBC,SAAS,EAAC;QAAO,CAClB,CACF,EAGAvF,OAAO,CAAC4B,OAAO,iBACdnC,IAAA,CAACT,MAAM;UACLmG,EAAE,EAAE9B,MAAM,CAACjD,CAAE;UACbgF,EAAE,EAAE/B,MAAM,CAAC/C,CAAE;UACb+B,CAAC,EAAEY,YAAY,GAAG,GAAI;UACtBlB,KAAK,EAAC,SAAS;UACfrB,OAAO,EAAE;QAAI,CACd,CACF;MAAA,CACK;IAAC,CAEO;EAAC,CACN,CAAC;AAEpB,CAAC,EAAE,CAAC8E,SAAS,EAAEC,SAAS,KAAK;EAC3B;EACA,OACED,SAAS,CAACxF,OAAO,CAAC4D,EAAE,KAAK6B,SAAS,CAACzF,OAAO,CAAC4D,EAAE,IAC7C4B,SAAS,CAACxF,OAAO,CAACG,QAAQ,CAACC,CAAC,KAAKqF,SAAS,CAACzF,OAAO,CAACG,QAAQ,CAACC,CAAC,IAC7DoF,SAAS,CAACxF,OAAO,CAACG,QAAQ,CAACG,CAAC,KAAKmF,SAAS,CAACzF,OAAO,CAACG,QAAQ,CAACG,CAAC,IAC7DkF,SAAS,CAACxF,OAAO,CAACO,QAAQ,KAAKkF,SAAS,CAACzF,OAAO,CAACO,QAAQ,IACzDiF,SAAS,CAACxF,OAAO,CAACS,QAAQ,KAAKgF,SAAS,CAACzF,OAAO,CAACS,QAAQ,IACzD+E,SAAS,CAACxF,OAAO,CAACsB,MAAM,KAAKmE,SAAS,CAACzF,OAAO,CAACsB,MAAM,IACrDkE,SAAS,CAACxF,OAAO,CAAC4B,OAAO,KAAK6D,SAAS,CAACzF,OAAO,CAAC4B,OAAO;AAE3D,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","useCallback","TouchableOpacity","Dimensions","Canvas","vec","Path","Skia","Oval","Circle","Animated","useSharedValue","useAnimatedStyle","withSpring","withTiming","GAME_CONFIG","ANIMATION_CONFIG","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","BALLOON_HEIGHT_MULTIPLIER","STRING_LENGTH","HIGHLIGHT_OPACITY","BALLOON_OPACITY","DANGER_CIRCLE_RADIUS","GLOW_RADIUS_MULTIPLIER","GLOW_OPACITY","BalloonComponent","memo","balloon","onPop","height","get","initialY","position","y","translateX","x","translateY","rotation","scale","isPopped","opacity","value","BALLOON_SPRING","SLICE_TIMING","animatedStyle","transform","rotate","containerStyle","width","BALLOON_SIZE","zIndex","isBomb","lightenColor","color","amount","hex","replace","r","Math","min","parseInt","substring","round","g","b","toString","padStart","darkenColor","max","colors","primary","secondary","highlight","shadow","isBonus","baseColor","type","dimensions","balloonWidth","balloonHeight","totalHeight","center","curvedStringPath","path","Make","startX","startY","seed","id","split","reduce","acc","char","charCodeAt","random","index","moveTo","segments","segmentHeight","i","waveAmplitude","waveOffset","controlX1","controlY1","quadTo","handleTap","View","style","children","onPress","activeOpacity","pointerEvents","cx","cy","lineTo","strokeWidth","strokeCap","prevProps","nextProps"],"sourceRoot":"../../../../../src","sources":["games/balloon-blaster/components/BalloonComponent.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,46 +1,155 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React from 'react';
|
|
3
|
+
import React, { useEffect, useState, useCallback, useMemo } from 'react';
|
|
4
4
|
import { View, StyleSheet } from 'react-native';
|
|
5
|
+
import { useBalloonBlasterStore } from "../BalloonBlasterStore.js";
|
|
6
|
+
import { GAME_CONFIG } from "../BalloonBlasterService.js";
|
|
7
|
+
import { playSound, GAME_SOUNDS } from "../../../services/SoundsService.js";
|
|
8
|
+
import { playHaptic, HapticType } from "../../../services/HapticsService.js";
|
|
9
|
+
import { ParticleBlast, useAnimationTracker } from "../../../shared/helpers/index.js";
|
|
5
10
|
import { BalloonComponent } from "./BalloonComponent.js";
|
|
6
|
-
|
|
7
|
-
|
|
11
|
+
|
|
12
|
+
// Constants for better maintainability
|
|
8
13
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
const BALLOON_REMOVAL_DELAY = 500; // ms
|
|
15
|
+
const PARTICLE_COUNT = 8;
|
|
16
|
+
const PARTICLE_DURATION = 1000; // ms
|
|
17
|
+
|
|
18
|
+
// Types for better type safety
|
|
19
|
+
|
|
20
|
+
export const GameArea = /*#__PURE__*/React.memo(() => {
|
|
21
|
+
// Optimized store subscriptions - only subscribe to what we need
|
|
22
|
+
const balloons = useBalloonBlasterStore(state => state.balloons);
|
|
23
|
+
const isPlaying = useBalloonBlasterStore(state => state.isPlaying);
|
|
24
|
+
const gameOver = useBalloonBlasterStore(state => state.gameOver);
|
|
25
|
+
|
|
26
|
+
// Get store actions (these don't cause re-renders)
|
|
27
|
+
const {
|
|
28
|
+
popBalloon,
|
|
29
|
+
removeBalloon,
|
|
30
|
+
updateBalloon,
|
|
31
|
+
resetCombo,
|
|
32
|
+
loseLife,
|
|
33
|
+
addLife
|
|
34
|
+
} = useBalloonBlasterStore();
|
|
35
|
+
|
|
36
|
+
// Animation tracking for balloons using shared utility
|
|
37
|
+
const balloonAnimations = useAnimationTracker();
|
|
38
|
+
|
|
39
|
+
// State for managing active particle blasts with proper typing
|
|
40
|
+
const [activeBlasts, setActiveBlasts] = useState([]);
|
|
41
|
+
|
|
42
|
+
// Memoized sound and haptic feedback functions (using default enabled state)
|
|
43
|
+
const playPopSound = useCallback(() => {
|
|
44
|
+
playSound(GAME_SOUNDS.BALLOON_BLASTER.POP, true);
|
|
45
|
+
playHaptic(HapticType.LIGHT, true);
|
|
46
|
+
}, []);
|
|
47
|
+
const playBombSound = useCallback(() => {
|
|
48
|
+
playSound(GAME_SOUNDS.BALLOON_BLASTER.BOMB, true);
|
|
49
|
+
playHaptic(HapticType.HEAVY, true);
|
|
50
|
+
}, []);
|
|
51
|
+
|
|
52
|
+
// Optimized blast particle creation
|
|
53
|
+
const createBlastParticles = useCallback(balloon => {
|
|
54
|
+
const blastX = balloon.position.x + GAME_CONFIG.BALLOON_SIZE / 2;
|
|
55
|
+
const blastY = balloon.position.y + GAME_CONFIG.BALLOON_SIZE / 2;
|
|
56
|
+
const blastId = `blast_${Date.now()}_${Math.random()}`;
|
|
57
|
+
setActiveBlasts(prev => [...prev, {
|
|
58
|
+
id: blastId,
|
|
59
|
+
x: blastX,
|
|
60
|
+
y: blastY
|
|
61
|
+
}]);
|
|
62
|
+
}, []);
|
|
63
|
+
|
|
64
|
+
// Optimized blast completion handler
|
|
65
|
+
const handleBlastComplete = useCallback(blastId => {
|
|
66
|
+
setActiveBlasts(prev => prev.filter(blast => blast.id !== blastId));
|
|
67
|
+
}, []);
|
|
68
|
+
|
|
69
|
+
// Optimized balloon popping logic with better error handling
|
|
70
|
+
const handleBalloonPop = useCallback(balloonId => {
|
|
71
|
+
// Early exit if game is not active
|
|
72
|
+
if (!isPlaying || gameOver) return;
|
|
73
|
+
|
|
74
|
+
// Get current balloon state
|
|
75
|
+
const currentBalloons = useBalloonBlasterStore.getState().balloons;
|
|
76
|
+
const balloon = currentBalloons.find(b => b.id === balloonId);
|
|
77
|
+
|
|
78
|
+
// Validate balloon exists and is not already popped
|
|
79
|
+
if (!balloon || balloon.isPopped) return;
|
|
80
|
+
|
|
81
|
+
// Handle different balloon types with optimized logic
|
|
82
|
+
if (balloon.isBomb) {
|
|
83
|
+
// Bomb balloon - lose life and reset combo
|
|
84
|
+
playBombSound();
|
|
85
|
+
loseLife();
|
|
86
|
+
resetCombo();
|
|
87
|
+
updateBalloon(balloonId, {
|
|
88
|
+
isPopped: true
|
|
89
|
+
});
|
|
90
|
+
} else if (balloon.isBonus) {
|
|
91
|
+
// Bonus balloon - add life
|
|
92
|
+
playPopSound();
|
|
93
|
+
addLife();
|
|
94
|
+
updateBalloon(balloonId, {
|
|
95
|
+
isPopped: true
|
|
96
|
+
});
|
|
97
|
+
} else {
|
|
98
|
+
// Regular balloon - add points (popBalloon handles marking as popped)
|
|
99
|
+
playPopSound();
|
|
100
|
+
popBalloon(balloonId);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Create visual blast effect
|
|
104
|
+
createBlastParticles(balloon);
|
|
105
|
+
|
|
106
|
+
// Schedule balloon removal after animation completes
|
|
107
|
+
setTimeout(() => {
|
|
108
|
+
removeBalloon(balloonId);
|
|
109
|
+
balloonAnimations.delete(balloonId);
|
|
110
|
+
}, BALLOON_REMOVAL_DELAY);
|
|
111
|
+
}, [isPlaying, gameOver, playBombSound, playPopSound, loseLife, resetCombo, addLife, popBalloon, updateBalloon, createBlastParticles, removeBalloon, balloonAnimations]);
|
|
112
|
+
|
|
113
|
+
// Optimized balloon animation tracking
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
balloons.forEach(balloon => {
|
|
116
|
+
if (!balloonAnimations.has(balloon.id)) {
|
|
117
|
+
balloonAnimations.initialize(balloon.id);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}, [balloons, balloonAnimations]);
|
|
121
|
+
|
|
122
|
+
// Memoized balloon components for better performance
|
|
123
|
+
const balloonComponents = useMemo(() => {
|
|
124
|
+
return balloons.map(balloon => {
|
|
21
125
|
const animation = balloonAnimations.get(balloon.id);
|
|
22
126
|
return /*#__PURE__*/_jsx(BalloonComponent, {
|
|
23
127
|
balloon: balloon,
|
|
24
128
|
animation: animation,
|
|
25
|
-
onPop:
|
|
129
|
+
onPop: handleBalloonPop
|
|
26
130
|
}, balloon.id);
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
131
|
+
});
|
|
132
|
+
}, [balloons, balloonAnimations, handleBalloonPop]);
|
|
133
|
+
|
|
134
|
+
// Memoized particle blast components
|
|
135
|
+
const blastComponents = useMemo(() => {
|
|
136
|
+
return activeBlasts.map(blast => /*#__PURE__*/_jsx(ParticleBlast, {
|
|
137
|
+
x: blast.x,
|
|
138
|
+
y: blast.y,
|
|
139
|
+
particleCount: PARTICLE_COUNT,
|
|
140
|
+
duration: PARTICLE_DURATION,
|
|
141
|
+
onComplete: () => handleBlastComplete(blast.id)
|
|
142
|
+
}, blast.id));
|
|
143
|
+
}, [activeBlasts, handleBlastComplete]);
|
|
144
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
145
|
+
style: styles.gameArea,
|
|
146
|
+
children: [balloonComponents, blastComponents]
|
|
33
147
|
});
|
|
34
|
-
};
|
|
148
|
+
});
|
|
35
149
|
const styles = StyleSheet.create({
|
|
36
150
|
gameArea: {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
left: 0,
|
|
40
|
-
right: 0,
|
|
41
|
-
bottom: 0,
|
|
42
|
-
width: '100%',
|
|
43
|
-
height: '100%',
|
|
151
|
+
flex: 1,
|
|
152
|
+
position: 'relative',
|
|
44
153
|
overflow: 'hidden'
|
|
45
154
|
}
|
|
46
155
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","useCallback","useMemo","View","StyleSheet","useBalloonBlasterStore","GAME_CONFIG","playSound","GAME_SOUNDS","playHaptic","HapticType","ParticleBlast","useAnimationTracker","BalloonComponent","jsx","_jsx","jsxs","_jsxs","BALLOON_REMOVAL_DELAY","PARTICLE_COUNT","PARTICLE_DURATION","GameArea","memo","balloons","state","isPlaying","gameOver","popBalloon","removeBalloon","updateBalloon","resetCombo","loseLife","addLife","balloonAnimations","activeBlasts","setActiveBlasts","playPopSound","BALLOON_BLASTER","POP","LIGHT","playBombSound","BOMB","HEAVY","createBlastParticles","balloon","blastX","position","x","BALLOON_SIZE","blastY","y","blastId","Date","now","Math","random","prev","id","handleBlastComplete","filter","blast","handleBalloonPop","balloonId","currentBalloons","getState","find","b","isPopped","isBomb","isBonus","setTimeout","delete","forEach","has","initialize","balloonComponents","map","animation","get","onPop","blastComponents","particleCount","duration","onComplete","style","styles","gameArea","children","create","flex","overflow"],"sourceRoot":"../../../../../src","sources":["games/balloon-blaster/components/GameArea.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACxE,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,sBAAsB,QAAQ,2BAAwB;AAC/D,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,SAAS,EAAEC,WAAW,QAAQ,oCAAiC;AACxE,SAASC,UAAU,EAAEC,UAAU,QAAQ,qCAAkC;AACzE,SAASC,aAAa,EAAEC,mBAAmB,QAAQ,kCAAyB;AAC5E,SAASC,gBAAgB,QAAQ,uBAAoB;;AAErD;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AACA,MAAMC,qBAAqB,GAAG,GAAG,CAAC,CAAC;AACnC,MAAMC,cAAc,GAAG,CAAC;AACxB,MAAMC,iBAAiB,GAAG,IAAI,CAAC,CAAC;;AAEhC;;AAOA,OAAO,MAAMC,QAAkB,gBAAGvB,KAAK,CAACwB,IAAI,CAAC,MAAM;EACjD;EACA,MAAMC,QAAQ,GAAGlB,sBAAsB,CAACmB,KAAK,IAAIA,KAAK,CAACD,QAAQ,CAAC;EAChE,MAAME,SAAS,GAAGpB,sBAAsB,CAACmB,KAAK,IAAIA,KAAK,CAACC,SAAS,CAAC;EAClE,MAAMC,QAAQ,GAAGrB,sBAAsB,CAACmB,KAAK,IAAIA,KAAK,CAACE,QAAQ,CAAC;;EAEhE;EACA,MAAM;IACJC,UAAU;IACVC,aAAa;IACbC,aAAa;IACbC,UAAU;IACVC,QAAQ;IACRC;EACF,CAAC,GAAG3B,sBAAsB,CAAC,CAAC;;EAE5B;EACA,MAAM4B,iBAAiB,GAAGrB,mBAAmB,CAAC,CAAC;;EAE/C;EACA,MAAM,CAACsB,YAAY,EAAEC,eAAe,CAAC,GAAGnC,QAAQ,CAAgB,EAAE,CAAC;;EAEnE;EACA,MAAMoC,YAAY,GAAGnC,WAAW,CAAC,MAAM;IACrCM,SAAS,CAACC,WAAW,CAAC6B,eAAe,CAACC,GAAG,EAAE,IAAI,CAAC;IAChD7B,UAAU,CAACC,UAAU,CAAC6B,KAAK,EAAE,IAAI,CAAC;EACpC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,aAAa,GAAGvC,WAAW,CAAC,MAAM;IACtCM,SAAS,CAACC,WAAW,CAAC6B,eAAe,CAACI,IAAI,EAAE,IAAI,CAAC;IACjDhC,UAAU,CAACC,UAAU,CAACgC,KAAK,EAAE,IAAI,CAAC;EACpC,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMC,oBAAoB,GAAG1C,WAAW,CAAE2C,OAAY,IAAK;IACzD,MAAMC,MAAM,GAAGD,OAAO,CAACE,QAAQ,CAACC,CAAC,GAAIzC,WAAW,CAAC0C,YAAY,GAAG,CAAE;IAClE,MAAMC,MAAM,GAAGL,OAAO,CAACE,QAAQ,CAACI,CAAC,GAAI5C,WAAW,CAAC0C,YAAY,GAAG,CAAE;IAElE,MAAMG,OAAO,GAAG,SAASC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,EAAE;IACtDpB,eAAe,CAACqB,IAAI,IAAI,CAAC,GAAGA,IAAI,EAAE;MAAEC,EAAE,EAAEN,OAAO;MAAEJ,CAAC,EAAEF,MAAM;MAAEK,CAAC,EAAED;IAAO,CAAC,CAAC,CAAC;EAC3E,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMS,mBAAmB,GAAGzD,WAAW,CAAEkD,OAAe,IAAK;IAC3DhB,eAAe,CAACqB,IAAI,IAAIA,IAAI,CAACG,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACH,EAAE,KAAKN,OAAO,CAAC,CAAC;EACrE,CAAC,EAAE,EAAE,CAAC;;EAGN;EACA,MAAMU,gBAAgB,GAAG5D,WAAW,CAAE6D,SAAiB,IAAK;IAC1D;IACA,IAAI,CAACrC,SAAS,IAAIC,QAAQ,EAAE;;IAE5B;IACA,MAAMqC,eAAe,GAAG1D,sBAAsB,CAAC2D,QAAQ,CAAC,CAAC,CAACzC,QAAQ;IAClE,MAAMqB,OAAO,GAAGmB,eAAe,CAACE,IAAI,CAACC,CAAC,IAAIA,CAAC,CAACT,EAAE,KAAKK,SAAS,CAAC;;IAE7D;IACA,IAAI,CAAClB,OAAO,IAAIA,OAAO,CAACuB,QAAQ,EAAE;;IAElC;IACA,IAAIvB,OAAO,CAACwB,MAAM,EAAE;MAClB;MACA5B,aAAa,CAAC,CAAC;MACfT,QAAQ,CAAC,CAAC;MACVD,UAAU,CAAC,CAAC;MACZD,aAAa,CAACiC,SAAS,EAAE;QAAEK,QAAQ,EAAE;MAAK,CAAC,CAAC;IAC9C,CAAC,MAAM,IAAIvB,OAAO,CAACyB,OAAO,EAAE;MAC1B;MACAjC,YAAY,CAAC,CAAC;MACdJ,OAAO,CAAC,CAAC;MACTH,aAAa,CAACiC,SAAS,EAAE;QAAEK,QAAQ,EAAE;MAAK,CAAC,CAAC;IAC9C,CAAC,MAAM;MACL;MACA/B,YAAY,CAAC,CAAC;MACdT,UAAU,CAACmC,SAAS,CAAC;IACvB;;IAEA;IACAnB,oBAAoB,CAACC,OAAO,CAAC;;IAE7B;IACA0B,UAAU,CAAC,MAAM;MACf1C,aAAa,CAACkC,SAAS,CAAC;MACxB7B,iBAAiB,CAACsC,MAAM,CAACT,SAAS,CAAC;IACrC,CAAC,EAAE5C,qBAAqB,CAAC;EAC3B,CAAC,EAAE,CACDO,SAAS,EACTC,QAAQ,EACRc,aAAa,EACbJ,YAAY,EACZL,QAAQ,EACRD,UAAU,EACVE,OAAO,EACPL,UAAU,EACVE,aAAa,EACbc,oBAAoB,EACpBf,aAAa,EACbK,iBAAiB,CAClB,CAAC;;EAGF;EACAlC,SAAS,CAAC,MAAM;IACdwB,QAAQ,CAACiD,OAAO,CAAC5B,OAAO,IAAI;MAC1B,IAAI,CAACX,iBAAiB,CAACwC,GAAG,CAAC7B,OAAO,CAACa,EAAE,CAAC,EAAE;QACtCxB,iBAAiB,CAACyC,UAAU,CAAC9B,OAAO,CAACa,EAAE,CAAC;MAC1C;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAAClC,QAAQ,EAAEU,iBAAiB,CAAC,CAAC;;EAEjC;EACA,MAAM0C,iBAAiB,GAAGzE,OAAO,CAAC,MAAM;IACtC,OAAOqB,QAAQ,CAACqD,GAAG,CAAChC,OAAO,IAAI;MAC7B,MAAMiC,SAAS,GAAG5C,iBAAiB,CAAC6C,GAAG,CAAClC,OAAO,CAACa,EAAE,CAAC;MACnD,oBACE1C,IAAA,CAACF,gBAAgB;QAEf+B,OAAO,EAAEA,OAAQ;QACjBiC,SAAS,EAAEA,SAAU;QACrBE,KAAK,EAAElB;MAAiB,GAHnBjB,OAAO,CAACa,EAId,CAAC;IAEN,CAAC,CAAC;EACJ,CAAC,EAAE,CAAClC,QAAQ,EAAEU,iBAAiB,EAAE4B,gBAAgB,CAAC,CAAC;;EAEnD;EACA,MAAMmB,eAAe,GAAG9E,OAAO,CAAC,MAAM;IACpC,OAAOgC,YAAY,CAAC0C,GAAG,CAAChB,KAAK,iBAC3B7C,IAAA,CAACJ,aAAa;MAEZoC,CAAC,EAAEa,KAAK,CAACb,CAAE;MACXG,CAAC,EAAEU,KAAK,CAACV,CAAE;MACX+B,aAAa,EAAE9D,cAAe;MAC9B+D,QAAQ,EAAE9D,iBAAkB;MAC5B+D,UAAU,EAAEA,CAAA,KAAMzB,mBAAmB,CAACE,KAAK,CAACH,EAAE;IAAE,GAL3CG,KAAK,CAACH,EAMZ,CACF,CAAC;EACJ,CAAC,EAAE,CAACvB,YAAY,EAAEwB,mBAAmB,CAAC,CAAC;EAEvC,oBACEzC,KAAA,CAACd,IAAI;IAACiF,KAAK,EAAEC,MAAM,CAACC,QAAS;IAAAC,QAAA,GAE1BZ,iBAAiB,EAGjBK,eAAe;EAAA,CACZ,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMK,MAAM,GAAGjF,UAAU,CAACoF,MAAM,CAAC;EAC/BF,QAAQ,EAAE;IACRG,IAAI,EAAE,CAAC;IACP3C,QAAQ,EAAE,UAAU;IACpB4C,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { View, Text, StyleSheet } from 'react-native';
|
|
5
|
+
import { useBalloonBlasterStore } from "../BalloonBlasterStore.js";
|
|
5
6
|
import { GAME_CONFIG } from "../BalloonBlasterService.js";
|
|
6
7
|
import { RESPONSIVE_SCOREBOARD_CONTAINER, RESPONSIVE_SCOREBOARD_FONTS } from "../../../shared/helpers/index.js";
|
|
7
8
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
-
export const ScoreBoard = ({
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
export const ScoreBoard = /*#__PURE__*/React.memo(() => {
|
|
10
|
+
// Read state directly from store to reduce main component re-renders
|
|
11
|
+
const score = useBalloonBlasterStore(state => state.score);
|
|
12
|
+
const timeLeft = useBalloonBlasterStore(state => state.timeLeft);
|
|
13
|
+
const lives = useBalloonBlasterStore(state => state.lives);
|
|
13
14
|
return /*#__PURE__*/_jsxs(View, {
|
|
14
15
|
style: styles.scoreBoard,
|
|
15
16
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
@@ -46,7 +47,7 @@ export const ScoreBoard = ({
|
|
|
46
47
|
})]
|
|
47
48
|
})]
|
|
48
49
|
});
|
|
49
|
-
};
|
|
50
|
+
});
|
|
50
51
|
const styles = StyleSheet.create({
|
|
51
52
|
scoreBoard: {
|
|
52
53
|
...RESPONSIVE_SCOREBOARD_CONTAINER,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","StyleSheet","GAME_CONFIG","RESPONSIVE_SCOREBOARD_CONTAINER","RESPONSIVE_SCOREBOARD_FONTS","jsx","_jsx","jsxs","_jsxs","ScoreBoard","score","timeLeft","lives","style","styles","scoreBoard","children","scoreSection","scoreLabel","scoreValue","timeValue","livesRow","Array","from","length","MAX_LIVES","map","_","index","heartIcon","heartActive","heartInactive","create","flexDirection","justifyContent","alignItems","backgroundColor","borderRadius","padding","borderWidth","borderColor","flex","fontSize","labelSize","fontWeight","color","marginBottom","valueSize","timeSize","marginHorizontal","opacity","textShadowColor","textShadowOffset","width","height","textShadowRadius"],"sourceRoot":"../../../../../src","sources":["games/balloon-blaster/components/ScoreBoard.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AACrD,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,+BAA+B,EAAEC,2BAA2B,QAAQ,kCAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;
|
|
1
|
+
{"version":3,"names":["React","View","Text","StyleSheet","useBalloonBlasterStore","GAME_CONFIG","RESPONSIVE_SCOREBOARD_CONTAINER","RESPONSIVE_SCOREBOARD_FONTS","jsx","_jsx","jsxs","_jsxs","ScoreBoard","memo","score","state","timeLeft","lives","style","styles","scoreBoard","children","scoreSection","scoreLabel","scoreValue","timeValue","livesRow","Array","from","length","MAX_LIVES","map","_","index","heartIcon","heartActive","heartInactive","create","flexDirection","justifyContent","alignItems","backgroundColor","borderRadius","padding","borderWidth","borderColor","flex","fontSize","labelSize","fontWeight","color","marginBottom","valueSize","timeSize","marginHorizontal","opacity","textShadowColor","textShadowOffset","width","height","textShadowRadius"],"sourceRoot":"../../../../../src","sources":["games/balloon-blaster/components/ScoreBoard.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,8 +3,5 @@
|
|
|
3
3
|
export { BalloonComponent } from "./BalloonComponent.js";
|
|
4
4
|
export { GameArea } from "./GameArea.js";
|
|
5
5
|
export { GameBackground } from "./GameBackground.js";
|
|
6
|
-
export { GameOverModal } from "./GameOverModal.js";
|
|
7
|
-
export { ParticleSystem } from "./ParticleSystem.js";
|
|
8
6
|
export { ScoreBoard } from "./ScoreBoard.js";
|
|
9
|
-
export { SliceTrail } from "./SliceTrail.js";
|
|
10
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BalloonComponent","GameArea","GameBackground","
|
|
1
|
+
{"version":3,"names":["BalloonComponent","GameArea","GameBackground","ScoreBoard"],"sourceRoot":"../../../../../src","sources":["games/balloon-blaster/components/index.ts"],"mappings":";;AAAA,SAASA,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,QAAQ,QAAQ,eAAY;AACrC,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,UAAU,QAAQ,iBAAc","ignoreList":[]}
|