react-native-games 0.3.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/LICENSE +66 -0
- package/README.md +269 -0
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +391 -0
- package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js +293 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +156 -0
- package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -0
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js +227 -0
- package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -0
- package/lib/module/games/balloon-blaster/components/GameArea.js +42 -0
- package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -0
- package/lib/module/games/balloon-blaster/components/GameBackground.js +544 -0
- package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -0
- package/lib/module/games/balloon-blaster/components/GameControls.js +229 -0
- package/lib/module/games/balloon-blaster/components/GameControls.js.map +1 -0
- package/lib/module/games/balloon-blaster/components/GameOverModal.js +133 -0
- package/lib/module/games/balloon-blaster/components/GameOverModal.js.map +1 -0
- package/lib/module/games/balloon-blaster/components/ParticleSystem.js +52 -0
- package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +1 -0
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js +119 -0
- package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/balloon-blaster/components/SliceTrail.js +58 -0
- package/lib/module/games/balloon-blaster/components/SliceTrail.js.map +1 -0
- package/lib/module/games/balloon-blaster/components/index.js +11 -0
- package/lib/module/games/balloon-blaster/components/index.js.map +1 -0
- package/lib/module/games/cat-popper/CatPopper.js +230 -0
- package/lib/module/games/cat-popper/CatPopper.js.map +1 -0
- package/lib/module/games/cat-popper/CatPopperService.js +100 -0
- package/lib/module/games/cat-popper/CatPopperService.js.map +1 -0
- package/lib/module/games/cat-popper/CatPopperStore.js +113 -0
- package/lib/module/games/cat-popper/CatPopperStore.js.map +1 -0
- package/lib/module/games/cat-popper/components/CatCharacter.js +281 -0
- package/lib/module/games/cat-popper/components/CatCharacter.js.map +1 -0
- package/lib/module/games/cat-popper/components/GameBackground.js +531 -0
- package/lib/module/games/cat-popper/components/GameBackground.js.map +1 -0
- package/lib/module/games/cat-popper/components/GameControls.js +230 -0
- package/lib/module/games/cat-popper/components/GameControls.js.map +1 -0
- package/lib/module/games/cat-popper/components/GameGrid.js +66 -0
- package/lib/module/games/cat-popper/components/GameGrid.js.map +1 -0
- package/lib/module/games/cat-popper/components/GameHole.js +183 -0
- package/lib/module/games/cat-popper/components/GameHole.js.map +1 -0
- package/lib/module/games/cat-popper/components/GameOverModal.js +131 -0
- package/lib/module/games/cat-popper/components/GameOverModal.js.map +1 -0
- package/lib/module/games/cat-popper/components/ScoreBoard.js +77 -0
- package/lib/module/games/cat-popper/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/cat-popper/components/index.js +10 -0
- package/lib/module/games/cat-popper/components/index.js.map +1 -0
- package/lib/module/games/fruit-slicer/FruitSlicer.js +411 -0
- package/lib/module/games/fruit-slicer/FruitSlicer.js.map +1 -0
- package/lib/module/games/fruit-slicer/FruitSlicerService.js +293 -0
- package/lib/module/games/fruit-slicer/FruitSlicerService.js.map +1 -0
- package/lib/module/games/fruit-slicer/FruitSlicerStore.js +156 -0
- package/lib/module/games/fruit-slicer/FruitSlicerStore.js.map +1 -0
- package/lib/module/games/fruit-slicer/components/FruitComponent.js +99 -0
- package/lib/module/games/fruit-slicer/components/FruitComponent.js.map +1 -0
- package/lib/module/games/fruit-slicer/components/GameArea.js +50 -0
- package/lib/module/games/fruit-slicer/components/GameArea.js.map +1 -0
- package/lib/module/games/fruit-slicer/components/GameBackground.js +1296 -0
- package/lib/module/games/fruit-slicer/components/GameBackground.js.map +1 -0
- package/lib/module/games/fruit-slicer/components/GameControls.js +230 -0
- package/lib/module/games/fruit-slicer/components/GameControls.js.map +1 -0
- package/lib/module/games/fruit-slicer/components/GameOverModal.js +189 -0
- package/lib/module/games/fruit-slicer/components/GameOverModal.js.map +1 -0
- package/lib/module/games/fruit-slicer/components/ParticleSystem.js +52 -0
- package/lib/module/games/fruit-slicer/components/ParticleSystem.js.map +1 -0
- package/lib/module/games/fruit-slicer/components/ScoreBoard.js +121 -0
- package/lib/module/games/fruit-slicer/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/fruit-slicer/components/SliceTrail.js +58 -0
- package/lib/module/games/fruit-slicer/components/SliceTrail.js.map +1 -0
- package/lib/module/games/fruit-slicer/components/index.js +11 -0
- package/lib/module/games/fruit-slicer/components/index.js.map +1 -0
- package/lib/module/games/maze-runner/MazeRunner.js +242 -0
- package/lib/module/games/maze-runner/MazeRunner.js.map +1 -0
- package/lib/module/games/maze-runner/MazeRunnerService.js +560 -0
- package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -0
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +149 -0
- package/lib/module/games/maze-runner/components/EnhancedBallComponent.js.map +1 -0
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js +357 -0
- package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -0
- package/lib/module/games/maze-runner/components/GameBackground.js +216 -0
- package/lib/module/games/maze-runner/components/GameBackground.js.map +1 -0
- package/lib/module/games/maze-runner/components/GameControls.js +129 -0
- package/lib/module/games/maze-runner/components/GameControls.js.map +1 -0
- package/lib/module/games/maze-runner/components/GameOverModal.js +134 -0
- package/lib/module/games/maze-runner/components/GameOverModal.js.map +1 -0
- package/lib/module/games/maze-runner/components/ScoreBoard.js +81 -0
- package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +209 -0
- package/lib/module/games/maze-runner/components/SkiaPipeComponent.js.map +1 -0
- package/lib/module/games/maze-runner/components/StaticGameBackground.js +169 -0
- package/lib/module/games/maze-runner/components/StaticGameBackground.js.map +1 -0
- package/lib/module/games/maze-runner/components/WallComponent.js +90 -0
- package/lib/module/games/maze-runner/components/WallComponent.js.map +1 -0
- package/lib/module/games/maze-runner/components/index.js +10 -0
- package/lib/module/games/maze-runner/components/index.js.map +1 -0
- package/lib/module/games/space-traveller/SpaceTraveller.js +393 -0
- package/lib/module/games/space-traveller/SpaceTraveller.js.map +1 -0
- package/lib/module/games/space-traveller/SpaceTravellerService.js +298 -0
- package/lib/module/games/space-traveller/SpaceTravellerService.js.map +1 -0
- package/lib/module/games/space-traveller/SpaceTravellerStore.js +139 -0
- package/lib/module/games/space-traveller/SpaceTravellerStore.js.map +1 -0
- package/lib/module/games/space-traveller/components/AsteroidComponent.js +111 -0
- package/lib/module/games/space-traveller/components/AsteroidComponent.js.map +1 -0
- package/lib/module/games/space-traveller/components/GameArea.js +75 -0
- package/lib/module/games/space-traveller/components/GameArea.js.map +1 -0
- package/lib/module/games/space-traveller/components/GameBackground.js +294 -0
- package/lib/module/games/space-traveller/components/GameBackground.js.map +1 -0
- package/lib/module/games/space-traveller/components/GameControls.js +177 -0
- package/lib/module/games/space-traveller/components/GameControls.js.map +1 -0
- package/lib/module/games/space-traveller/components/GameOverModal.js +182 -0
- package/lib/module/games/space-traveller/components/GameOverModal.js.map +1 -0
- package/lib/module/games/space-traveller/components/ParticleComponent.js +34 -0
- package/lib/module/games/space-traveller/components/ParticleComponent.js.map +1 -0
- package/lib/module/games/space-traveller/components/ScoreBoard.js +143 -0
- package/lib/module/games/space-traveller/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/space-traveller/components/SettingsModal.js +222 -0
- package/lib/module/games/space-traveller/components/SettingsModal.js.map +1 -0
- package/lib/module/games/space-traveller/components/Spacecraft3D.js +362 -0
- package/lib/module/games/space-traveller/components/Spacecraft3D.js.map +1 -0
- package/lib/module/games/space-traveller/components/SpacecraftPath.js +37 -0
- package/lib/module/games/space-traveller/components/SpacecraftPath.js.map +1 -0
- package/lib/module/games/space-traveller/components/index.js +13 -0
- package/lib/module/games/space-traveller/components/index.js.map +1 -0
- package/lib/module/index.js +12 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/services/GamesConstants.js +561 -0
- package/lib/module/services/GamesConstants.js.map +1 -0
- package/lib/module/services/GamesService.js +34 -0
- package/lib/module/services/GamesService.js.map +1 -0
- package/lib/module/shared/settings/GameSettings.js +295 -0
- package/lib/module/shared/settings/GameSettings.js.map +1 -0
- package/lib/module/shared/settings/SettingsService.js +119 -0
- package/lib/module/shared/settings/SettingsService.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +16 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +66 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +37 -0
- package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts +10 -0
- package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +17 -0
- package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts +10 -0
- package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts +9 -0
- package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts +8 -0
- package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +9 -0
- package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts +11 -0
- package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts.map +1 -0
- package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +9 -0
- package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/CatPopper.d.ts +13 -0
- package/lib/typescript/src/games/cat-popper/CatPopper.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts +32 -0
- package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts +21 -0
- package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts +7 -0
- package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/cat-popper/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts +10 -0
- package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/components/GameGrid.d.ts +13 -0
- package/lib/typescript/src/games/cat-popper/components/GameGrid.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/components/GameHole.d.ts +12 -0
- package/lib/typescript/src/games/cat-popper/components/GameHole.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/components/GameOverModal.d.ts +9 -0
- package/lib/typescript/src/games/cat-popper/components/GameOverModal.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/components/ScoreBoard.d.ts +8 -0
- package/lib/typescript/src/games/cat-popper/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/cat-popper/components/index.d.ts +8 -0
- package/lib/typescript/src/games/cat-popper/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts +16 -0
- package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/FruitSlicerService.d.ts +67 -0
- package/lib/typescript/src/games/fruit-slicer/FruitSlicerService.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/FruitSlicerStore.d.ts +37 -0
- package/lib/typescript/src/games/fruit-slicer/FruitSlicerStore.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/components/FruitComponent.d.ts +10 -0
- package/lib/typescript/src/games/fruit-slicer/components/FruitComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/components/GameArea.d.ts +17 -0
- package/lib/typescript/src/games/fruit-slicer/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/fruit-slicer/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts +10 -0
- package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/components/GameOverModal.d.ts +9 -0
- package/lib/typescript/src/games/fruit-slicer/components/GameOverModal.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/components/ParticleSystem.d.ts +8 -0
- package/lib/typescript/src/games/fruit-slicer/components/ParticleSystem.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/components/ScoreBoard.d.ts +9 -0
- package/lib/typescript/src/games/fruit-slicer/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/components/SliceTrail.d.ts +11 -0
- package/lib/typescript/src/games/fruit-slicer/components/SliceTrail.d.ts.map +1 -0
- package/lib/typescript/src/games/fruit-slicer/components/index.d.ts +9 -0
- package/lib/typescript/src/games/fruit-slicer/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +18 -0
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts +82 -0
- package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts +11 -0
- package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts +12 -0
- package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts +10 -0
- package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts +11 -0
- package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts +8 -0
- package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts +25 -0
- package/lib/typescript/src/games/maze-runner/components/SkiaPipeComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/StaticGameBackground.d.ts +7 -0
- package/lib/typescript/src/games/maze-runner/components/StaticGameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts +10 -0
- package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/maze-runner/components/index.d.ts +8 -0
- package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts +17 -0
- package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/SpaceTravellerService.d.ts +65 -0
- package/lib/typescript/src/games/space-traveller/SpaceTravellerService.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/SpaceTravellerStore.d.ts +35 -0
- package/lib/typescript/src/games/space-traveller/SpaceTravellerStore.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/AsteroidComponent.d.ts +9 -0
- package/lib/typescript/src/games/space-traveller/components/AsteroidComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/GameArea.d.ts +17 -0
- package/lib/typescript/src/games/space-traveller/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/space-traveller/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts +10 -0
- package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/GameOverModal.d.ts +9 -0
- package/lib/typescript/src/games/space-traveller/components/GameOverModal.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/ParticleComponent.d.ts +8 -0
- package/lib/typescript/src/games/space-traveller/components/ParticleComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/ScoreBoard.d.ts +8 -0
- package/lib/typescript/src/games/space-traveller/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/SettingsModal.d.ts +9 -0
- package/lib/typescript/src/games/space-traveller/components/SettingsModal.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/Spacecraft3D.d.ts +9 -0
- package/lib/typescript/src/games/space-traveller/components/Spacecraft3D.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/SpacecraftPath.d.ts +10 -0
- package/lib/typescript/src/games/space-traveller/components/SpacecraftPath.d.ts.map +1 -0
- package/lib/typescript/src/games/space-traveller/components/index.d.ts +11 -0
- package/lib/typescript/src/games/space-traveller/components/index.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +7 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/services/GamesConstants.d.ts +372 -0
- package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -0
- package/lib/typescript/src/services/GamesService.d.ts +8 -0
- package/lib/typescript/src/services/GamesService.d.ts.map +1 -0
- package/lib/typescript/src/shared/settings/GameSettings.d.ts +36 -0
- package/lib/typescript/src/shared/settings/GameSettings.d.ts.map +1 -0
- package/lib/typescript/src/shared/settings/SettingsService.d.ts +32 -0
- package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +1 -0
- package/package.json +125 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Canvas, Circle, RadialGradient, vec, Shadow } from '@shopify/react-native-skia';
|
|
5
|
+
import { useSharedValue, useAnimatedStyle, withRepeat, withTiming, withSequence } from 'react-native-reanimated';
|
|
6
|
+
import Animated from 'react-native-reanimated';
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
export const EnhancedBallComponent = ({
|
|
9
|
+
position,
|
|
10
|
+
size,
|
|
11
|
+
isDragging,
|
|
12
|
+
isCompleted
|
|
13
|
+
}) => {
|
|
14
|
+
// Animation values
|
|
15
|
+
const rotation = useSharedValue(0);
|
|
16
|
+
const glowIntensity = useSharedValue(0.6);
|
|
17
|
+
const pulseScale = useSharedValue(1);
|
|
18
|
+
const completionGlow = useSharedValue(0);
|
|
19
|
+
React.useEffect(() => {
|
|
20
|
+
// Continuous rotation
|
|
21
|
+
rotation.value = withRepeat(withTiming(360, {
|
|
22
|
+
duration: 4000
|
|
23
|
+
}), -1, false);
|
|
24
|
+
|
|
25
|
+
// Glow intensity animation
|
|
26
|
+
glowIntensity.value = withRepeat(withSequence(withTiming(0.3, {
|
|
27
|
+
duration: 1500
|
|
28
|
+
}), withTiming(0.8, {
|
|
29
|
+
duration: 1500
|
|
30
|
+
})), -1, true);
|
|
31
|
+
}, []);
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
if (isDragging) {
|
|
34
|
+
pulseScale.value = withTiming(1.2, {
|
|
35
|
+
duration: 200
|
|
36
|
+
});
|
|
37
|
+
} else {
|
|
38
|
+
pulseScale.value = withTiming(1, {
|
|
39
|
+
duration: 200
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}, [isDragging]);
|
|
43
|
+
React.useEffect(() => {
|
|
44
|
+
if (isCompleted) {
|
|
45
|
+
completionGlow.value = withRepeat(withSequence(withTiming(1, {
|
|
46
|
+
duration: 300
|
|
47
|
+
}), withTiming(0.3, {
|
|
48
|
+
duration: 300
|
|
49
|
+
})), 5, true);
|
|
50
|
+
} else {
|
|
51
|
+
completionGlow.value = withTiming(0, {
|
|
52
|
+
duration: 200
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}, [isCompleted]);
|
|
56
|
+
const animatedStyle = useAnimatedStyle(() => {
|
|
57
|
+
const scale = pulseScale.value;
|
|
58
|
+
const rotationDegrees = rotation.value;
|
|
59
|
+
return {
|
|
60
|
+
position: 'absolute',
|
|
61
|
+
left: position.x - size / 2,
|
|
62
|
+
top: position.y - size / 2,
|
|
63
|
+
width: size * 1.5,
|
|
64
|
+
height: size * 1.5,
|
|
65
|
+
transform: [{
|
|
66
|
+
scale
|
|
67
|
+
}, {
|
|
68
|
+
rotate: `${rotationDegrees}deg`
|
|
69
|
+
}]
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
const canvasSize = size * 1.5;
|
|
73
|
+
const ballRadius = size / 2;
|
|
74
|
+
const centerX = canvasSize / 2;
|
|
75
|
+
const centerY = canvasSize / 2;
|
|
76
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
77
|
+
style: animatedStyle,
|
|
78
|
+
children: /*#__PURE__*/_jsxs(Canvas, {
|
|
79
|
+
style: {
|
|
80
|
+
width: canvasSize,
|
|
81
|
+
height: canvasSize
|
|
82
|
+
},
|
|
83
|
+
children: [/*#__PURE__*/_jsx(Circle, {
|
|
84
|
+
cx: centerX,
|
|
85
|
+
cy: centerY,
|
|
86
|
+
r: ballRadius * 1.3,
|
|
87
|
+
opacity: glowIntensity,
|
|
88
|
+
children: /*#__PURE__*/_jsx(RadialGradient, {
|
|
89
|
+
c: vec(centerX, centerY),
|
|
90
|
+
r: ballRadius * 1.3,
|
|
91
|
+
colors: isDragging ? ['#ff6b6b', '#ff8e8e', 'transparent'] : ['#4ecdc4', '#45b7b8', 'transparent']
|
|
92
|
+
})
|
|
93
|
+
}), isCompleted && /*#__PURE__*/_jsx(Circle, {
|
|
94
|
+
cx: centerX,
|
|
95
|
+
cy: centerY,
|
|
96
|
+
r: ballRadius * 1.6,
|
|
97
|
+
opacity: completionGlow,
|
|
98
|
+
children: /*#__PURE__*/_jsx(RadialGradient, {
|
|
99
|
+
c: vec(centerX, centerY),
|
|
100
|
+
r: ballRadius * 1.6,
|
|
101
|
+
colors: ['#ffd700', '#ffed4e', '#fff9c4', 'transparent']
|
|
102
|
+
})
|
|
103
|
+
}), /*#__PURE__*/_jsxs(Circle, {
|
|
104
|
+
cx: centerX,
|
|
105
|
+
cy: centerY,
|
|
106
|
+
r: ballRadius,
|
|
107
|
+
children: [/*#__PURE__*/_jsx(RadialGradient, {
|
|
108
|
+
c: vec(centerX - ballRadius * 0.3, centerY - ballRadius * 0.3),
|
|
109
|
+
r: ballRadius * 1.2,
|
|
110
|
+
colors: isDragging ? ['#ff6b6b', '#e55656', '#cc4545'] : ['#4ecdc4', '#45b7b8', '#3ca6a6']
|
|
111
|
+
}), /*#__PURE__*/_jsx(Shadow, {
|
|
112
|
+
dx: 2,
|
|
113
|
+
dy: 2,
|
|
114
|
+
blur: 4,
|
|
115
|
+
color: "rgba(0,0,0,0.3)"
|
|
116
|
+
})]
|
|
117
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
118
|
+
cx: centerX - ballRadius * 0.3,
|
|
119
|
+
cy: centerY - ballRadius * 0.3,
|
|
120
|
+
r: ballRadius * 0.3,
|
|
121
|
+
opacity: 0.8,
|
|
122
|
+
children: /*#__PURE__*/_jsx(RadialGradient, {
|
|
123
|
+
c: vec(centerX - ballRadius * 0.3, centerY - ballRadius * 0.3),
|
|
124
|
+
r: ballRadius * 0.3,
|
|
125
|
+
colors: ['rgba(255,255,255,0.9)', 'rgba(255,255,255,0.3)', 'transparent']
|
|
126
|
+
})
|
|
127
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
128
|
+
cx: centerX,
|
|
129
|
+
cy: centerY,
|
|
130
|
+
r: ballRadius * 0.4,
|
|
131
|
+
opacity: 0.7,
|
|
132
|
+
children: /*#__PURE__*/_jsx(RadialGradient, {
|
|
133
|
+
c: vec(centerX, centerY),
|
|
134
|
+
r: ballRadius * 0.4,
|
|
135
|
+
colors: ['rgba(255,255,255,0.8)', 'rgba(255,255,255,0.2)', 'transparent']
|
|
136
|
+
})
|
|
137
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
138
|
+
cx: centerX,
|
|
139
|
+
cy: centerY,
|
|
140
|
+
r: ballRadius * 0.8,
|
|
141
|
+
opacity: 0.4,
|
|
142
|
+
style: "stroke",
|
|
143
|
+
strokeWidth: 2,
|
|
144
|
+
color: isDragging ? '#ff8e8e' : '#7dd3d8'
|
|
145
|
+
})]
|
|
146
|
+
})
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=EnhancedBallComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Canvas","Circle","RadialGradient","vec","Shadow","useSharedValue","useAnimatedStyle","withRepeat","withTiming","withSequence","Animated","jsx","_jsx","jsxs","_jsxs","EnhancedBallComponent","position","size","isDragging","isCompleted","rotation","glowIntensity","pulseScale","completionGlow","useEffect","value","duration","animatedStyle","scale","rotationDegrees","left","x","top","y","width","height","transform","rotate","canvasSize","ballRadius","centerX","centerY","View","style","children","cx","cy","r","opacity","c","colors","dx","dy","blur","color","strokeWidth"],"sourceRoot":"../../../../../src","sources":["games/maze-runner/components/EnhancedBallComponent.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, StyleSheet } from 'react-native';
|
|
5
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
6
|
+
import Animated, { useSharedValue, useAnimatedStyle, runOnJS, withSpring } from 'react-native-reanimated';
|
|
7
|
+
import * as Haptics from 'expo-haptics';
|
|
8
|
+
import { EnhancedBallComponent } from "./EnhancedBallComponent.js";
|
|
9
|
+
import { WallComponent } from "./WallComponent.js";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
export const EnhancedGameArea = ({
|
|
12
|
+
gameState,
|
|
13
|
+
gameConfig,
|
|
14
|
+
walls,
|
|
15
|
+
onBallPositionChange,
|
|
16
|
+
hapticEnabled
|
|
17
|
+
}) => {
|
|
18
|
+
const translateX = useSharedValue(gameState.ballPosition.x);
|
|
19
|
+
const translateY = useSharedValue(gameState.ballPosition.y);
|
|
20
|
+
const isDragging = useSharedValue(false);
|
|
21
|
+
|
|
22
|
+
// Create shared values for walls to use in worklet
|
|
23
|
+
const wallsSharedValue = useSharedValue(walls);
|
|
24
|
+
|
|
25
|
+
// Update ball position when game state changes
|
|
26
|
+
React.useEffect(() => {
|
|
27
|
+
translateX.value = withSpring(gameState.ballPosition.x);
|
|
28
|
+
translateY.value = withSpring(gameState.ballPosition.y);
|
|
29
|
+
}, [gameState.ballPosition]);
|
|
30
|
+
|
|
31
|
+
// Update walls when they change
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
wallsSharedValue.value = walls;
|
|
34
|
+
}, [walls]);
|
|
35
|
+
const triggerHaptic = () => {
|
|
36
|
+
if (hapticEnabled) {
|
|
37
|
+
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const triggerCollisionHaptic = () => {
|
|
41
|
+
if (hapticEnabled) {
|
|
42
|
+
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// Store the initial position when gesture starts
|
|
47
|
+
const startPosition = useSharedValue({
|
|
48
|
+
x: 0,
|
|
49
|
+
y: 0
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Worklet function to check collision with walls
|
|
53
|
+
const checkWallCollision = (ballX, ballY, ballRadius) => {
|
|
54
|
+
'worklet';
|
|
55
|
+
|
|
56
|
+
const currentWalls = wallsSharedValue.value;
|
|
57
|
+
|
|
58
|
+
// Use minimal margin to allow ball to fit better in maze paths
|
|
59
|
+
const collisionMargin = 0.5;
|
|
60
|
+
const effectiveRadius = ballRadius + collisionMargin;
|
|
61
|
+
for (let i = 0; i < currentWalls.length; i++) {
|
|
62
|
+
const wall = currentWalls[i];
|
|
63
|
+
|
|
64
|
+
// Calculate the closest point on the wall rectangle to the ball center
|
|
65
|
+
const closestX = Math.max(wall.x, Math.min(ballX, wall.x + wall.width));
|
|
66
|
+
const closestY = Math.max(wall.y, Math.min(ballY, wall.y + wall.height));
|
|
67
|
+
|
|
68
|
+
// Calculate the distance from the ball center to this closest point
|
|
69
|
+
const distanceX = ballX - closestX;
|
|
70
|
+
const distanceY = ballY - closestY;
|
|
71
|
+
const distanceSquared = distanceX * distanceX + distanceY * distanceY;
|
|
72
|
+
|
|
73
|
+
// Check if the distance is less than the effective radius
|
|
74
|
+
if (distanceSquared < effectiveRadius * effectiveRadius) {
|
|
75
|
+
return true; // Collision detected
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return false; // No collision
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// Worklet function to check path collision (prevents jumping over walls)
|
|
82
|
+
const checkPathCollision = (fromX, fromY, toX, toY, ballRadius) => {
|
|
83
|
+
'worklet';
|
|
84
|
+
|
|
85
|
+
// Calculate the distance of the movement
|
|
86
|
+
const deltaX = toX - fromX;
|
|
87
|
+
const deltaY = toY - fromY;
|
|
88
|
+
const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
|
|
89
|
+
|
|
90
|
+
// If movement is very small, just check the destination
|
|
91
|
+
if (distance < 3) {
|
|
92
|
+
return checkWallCollision(toX, toY, ballRadius);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// For larger movements, check fewer points but more strategically
|
|
96
|
+
// Only check path collision for fast movements that could jump over walls
|
|
97
|
+
if (distance > 10) {
|
|
98
|
+
const steps = Math.ceil(distance / 4); // Check every 4 pixels for performance
|
|
99
|
+
|
|
100
|
+
for (let i = 1; i < steps; i++) {
|
|
101
|
+
// Skip start and end points
|
|
102
|
+
const t = i / steps;
|
|
103
|
+
const checkX = fromX + deltaX * t;
|
|
104
|
+
const checkY = fromY + deltaY * t;
|
|
105
|
+
if (checkWallCollision(checkX, checkY, ballRadius)) {
|
|
106
|
+
return true; // Collision detected along the path
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Always check the final destination
|
|
112
|
+
return checkWallCollision(toX, toY, ballRadius);
|
|
113
|
+
};
|
|
114
|
+
const panGesture = Gesture.Pan().onStart(() => {
|
|
115
|
+
if (!gameState.isPlaying || gameState.isPaused) return;
|
|
116
|
+
|
|
117
|
+
// Store the current ball position when gesture starts
|
|
118
|
+
startPosition.value = {
|
|
119
|
+
x: gameState.ballPosition.x,
|
|
120
|
+
y: gameState.ballPosition.y
|
|
121
|
+
};
|
|
122
|
+
isDragging.value = true;
|
|
123
|
+
runOnJS(triggerHaptic)();
|
|
124
|
+
}).onUpdate(event => {
|
|
125
|
+
if (!gameState.isPlaying || gameState.isPaused) return;
|
|
126
|
+
|
|
127
|
+
// Calculate new position based on gesture translation from start position
|
|
128
|
+
const newX = startPosition.value.x + event.translationX;
|
|
129
|
+
const newY = startPosition.value.y + event.translationY;
|
|
130
|
+
|
|
131
|
+
// Boundary checks
|
|
132
|
+
const ballRadius = gameConfig.BALL_SIZE / 2;
|
|
133
|
+
const clampedX = Math.max(ballRadius, Math.min(gameConfig.GAME_AREA_WIDTH - ballRadius, newX));
|
|
134
|
+
const clampedY = Math.max(ballRadius, Math.min(gameConfig.GAME_AREA_HEIGHT - ballRadius, newY));
|
|
135
|
+
|
|
136
|
+
// Get current ball position
|
|
137
|
+
const currentX = translateX.value;
|
|
138
|
+
const currentY = translateY.value;
|
|
139
|
+
|
|
140
|
+
// Calculate movement distance to determine collision strategy
|
|
141
|
+
const deltaX = clampedX - currentX;
|
|
142
|
+
const deltaY = clampedY - currentY;
|
|
143
|
+
const movementDistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
|
|
144
|
+
let finalX = clampedX;
|
|
145
|
+
let finalY = clampedY;
|
|
146
|
+
let hasCollision = false;
|
|
147
|
+
|
|
148
|
+
// Use different collision detection strategies based on movement distance
|
|
149
|
+
if (movementDistance < 5) {
|
|
150
|
+
// For small movements, just check destination for smooth gameplay
|
|
151
|
+
hasCollision = checkWallCollision(clampedX, clampedY, ballRadius);
|
|
152
|
+
} else {
|
|
153
|
+
// For larger movements, use path collision detection to prevent wall jumping
|
|
154
|
+
hasCollision = checkPathCollision(currentX, currentY, clampedX, clampedY, ballRadius);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// If there's a collision, try to slide along walls more carefully
|
|
158
|
+
if (hasCollision) {
|
|
159
|
+
let foundValidPosition = false;
|
|
160
|
+
|
|
161
|
+
// Try moving only horizontally (slide along vertical walls)
|
|
162
|
+
// But only if the horizontal movement is small to prevent wall jumping
|
|
163
|
+
const horizontalOnlyX = clampedX;
|
|
164
|
+
const horizontalOnlyY = currentY;
|
|
165
|
+
const horizontalDistance = Math.abs(horizontalOnlyX - currentX);
|
|
166
|
+
if (horizontalDistance < ballRadius * 2 && !checkWallCollision(horizontalOnlyX, horizontalOnlyY, ballRadius)) {
|
|
167
|
+
// Also check that we're not jumping over a wall by testing intermediate points
|
|
168
|
+
const steps = Math.max(2, Math.ceil(horizontalDistance / 2));
|
|
169
|
+
let canSlideHorizontally = true;
|
|
170
|
+
for (let i = 1; i <= steps; i++) {
|
|
171
|
+
const t = i / steps;
|
|
172
|
+
const testX = currentX + (horizontalOnlyX - currentX) * t;
|
|
173
|
+
if (checkWallCollision(testX, horizontalOnlyY, ballRadius)) {
|
|
174
|
+
canSlideHorizontally = false;
|
|
175
|
+
break;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (canSlideHorizontally) {
|
|
179
|
+
finalX = horizontalOnlyX;
|
|
180
|
+
finalY = horizontalOnlyY;
|
|
181
|
+
foundValidPosition = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Try moving only vertically (slide along horizontal walls) if horizontal sliding failed
|
|
186
|
+
if (!foundValidPosition) {
|
|
187
|
+
const verticalOnlyX = currentX;
|
|
188
|
+
const verticalOnlyY = clampedY;
|
|
189
|
+
const verticalDistance = Math.abs(verticalOnlyY - currentY);
|
|
190
|
+
if (verticalDistance < ballRadius * 2 && !checkWallCollision(verticalOnlyX, verticalOnlyY, ballRadius)) {
|
|
191
|
+
// Also check that we're not jumping over a wall by testing intermediate points
|
|
192
|
+
const steps = Math.max(2, Math.ceil(verticalDistance / 2));
|
|
193
|
+
let canSlideVertically = true;
|
|
194
|
+
for (let i = 1; i <= steps; i++) {
|
|
195
|
+
const t = i / steps;
|
|
196
|
+
const testY = currentY + (verticalOnlyY - currentY) * t;
|
|
197
|
+
if (checkWallCollision(verticalOnlyX, testY, ballRadius)) {
|
|
198
|
+
canSlideVertically = false;
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (canSlideVertically) {
|
|
203
|
+
finalX = verticalOnlyX;
|
|
204
|
+
finalY = verticalOnlyY;
|
|
205
|
+
foundValidPosition = true;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
hasCollision = !foundValidPosition;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Update position if we found a valid position (either original or sliding)
|
|
213
|
+
if (!hasCollision) {
|
|
214
|
+
translateX.value = finalX;
|
|
215
|
+
translateY.value = finalY;
|
|
216
|
+
|
|
217
|
+
// Update game state on the JS thread
|
|
218
|
+
runOnJS(onBallPositionChange)({
|
|
219
|
+
x: finalX,
|
|
220
|
+
y: finalY
|
|
221
|
+
});
|
|
222
|
+
} else {
|
|
223
|
+
// If still collision after trying to slide, trigger haptic feedback
|
|
224
|
+
runOnJS(triggerCollisionHaptic)();
|
|
225
|
+
}
|
|
226
|
+
}).onEnd(() => {
|
|
227
|
+
isDragging.value = false;
|
|
228
|
+
});
|
|
229
|
+
const animatedBallStyle = useAnimatedStyle(() => ({
|
|
230
|
+
transform: [{
|
|
231
|
+
translateX: translateX.value - gameConfig.BALL_SIZE / 2
|
|
232
|
+
}, {
|
|
233
|
+
translateY: translateY.value - gameConfig.BALL_SIZE / 2
|
|
234
|
+
}]
|
|
235
|
+
}));
|
|
236
|
+
const renderStartMarker = () => {
|
|
237
|
+
const startPos = {
|
|
238
|
+
x: gameConfig.CELL_SIZE / 2,
|
|
239
|
+
y: gameConfig.CELL_SIZE / 2
|
|
240
|
+
};
|
|
241
|
+
return /*#__PURE__*/_jsx(View, {
|
|
242
|
+
style: [styles.marker, styles.startMarker, {
|
|
243
|
+
left: startPos.x - 15,
|
|
244
|
+
top: startPos.y - 15
|
|
245
|
+
}],
|
|
246
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
247
|
+
style: styles.startMarkerInner
|
|
248
|
+
})
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
const renderEndMarker = () => {
|
|
252
|
+
const endPos = {
|
|
253
|
+
x: (gameConfig.GRID_SIZE - 1) * gameConfig.CELL_SIZE + gameConfig.CELL_SIZE / 2,
|
|
254
|
+
y: (gameConfig.GRID_SIZE - 1) * gameConfig.CELL_SIZE + gameConfig.CELL_SIZE / 2
|
|
255
|
+
};
|
|
256
|
+
return /*#__PURE__*/_jsx(View, {
|
|
257
|
+
style: [styles.marker, styles.endMarker, {
|
|
258
|
+
left: endPos.x - 15,
|
|
259
|
+
top: endPos.y - 15
|
|
260
|
+
}],
|
|
261
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
262
|
+
style: styles.endMarkerInner
|
|
263
|
+
})
|
|
264
|
+
});
|
|
265
|
+
};
|
|
266
|
+
return /*#__PURE__*/_jsx(View, {
|
|
267
|
+
style: [styles.container, {
|
|
268
|
+
width: gameConfig.GAME_AREA_WIDTH,
|
|
269
|
+
height: gameConfig.GAME_AREA_HEIGHT
|
|
270
|
+
}],
|
|
271
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
272
|
+
style: [styles.gameArea, {
|
|
273
|
+
width: gameConfig.GRID_SIZE * gameConfig.CELL_SIZE,
|
|
274
|
+
height: gameConfig.GRID_SIZE * gameConfig.CELL_SIZE
|
|
275
|
+
}],
|
|
276
|
+
children: [/*#__PURE__*/_jsx(WallComponent, {
|
|
277
|
+
walls: walls,
|
|
278
|
+
width: gameConfig.GRID_SIZE * gameConfig.CELL_SIZE,
|
|
279
|
+
height: gameConfig.GRID_SIZE * gameConfig.CELL_SIZE
|
|
280
|
+
}), renderStartMarker(), renderEndMarker(), /*#__PURE__*/_jsx(GestureDetector, {
|
|
281
|
+
gesture: panGesture,
|
|
282
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
283
|
+
style: [styles.ballContainer, animatedBallStyle],
|
|
284
|
+
children: /*#__PURE__*/_jsx(EnhancedBallComponent, {
|
|
285
|
+
position: {
|
|
286
|
+
x: gameConfig.BALL_SIZE / 2,
|
|
287
|
+
y: gameConfig.BALL_SIZE / 2
|
|
288
|
+
},
|
|
289
|
+
size: gameConfig.BALL_SIZE,
|
|
290
|
+
isDragging: isDragging.value,
|
|
291
|
+
isCompleted: gameState.isCompleted
|
|
292
|
+
})
|
|
293
|
+
})
|
|
294
|
+
})]
|
|
295
|
+
})
|
|
296
|
+
});
|
|
297
|
+
};
|
|
298
|
+
const styles = StyleSheet.create({
|
|
299
|
+
container: {
|
|
300
|
+
backgroundColor: 'transparent',
|
|
301
|
+
// Make transparent so walls are visible
|
|
302
|
+
overflow: 'hidden',
|
|
303
|
+
justifyContent: 'center',
|
|
304
|
+
alignItems: 'center'
|
|
305
|
+
},
|
|
306
|
+
gameArea: {
|
|
307
|
+
position: 'relative',
|
|
308
|
+
backgroundColor: 'transparent' // Ensure game area is also transparent
|
|
309
|
+
},
|
|
310
|
+
ballContainer: {
|
|
311
|
+
position: 'absolute',
|
|
312
|
+
width: 40,
|
|
313
|
+
// Fixed size for the ball container
|
|
314
|
+
height: 40,
|
|
315
|
+
top: 0,
|
|
316
|
+
left: 0
|
|
317
|
+
},
|
|
318
|
+
marker: {
|
|
319
|
+
position: 'absolute',
|
|
320
|
+
width: 30,
|
|
321
|
+
height: 30,
|
|
322
|
+
borderRadius: 15,
|
|
323
|
+
justifyContent: 'center',
|
|
324
|
+
alignItems: 'center',
|
|
325
|
+
elevation: 5,
|
|
326
|
+
shadowColor: '#000',
|
|
327
|
+
shadowOffset: {
|
|
328
|
+
width: 0,
|
|
329
|
+
height: 2
|
|
330
|
+
},
|
|
331
|
+
shadowOpacity: 0.3,
|
|
332
|
+
shadowRadius: 4
|
|
333
|
+
},
|
|
334
|
+
startMarker: {
|
|
335
|
+
backgroundColor: '#4CAF50',
|
|
336
|
+
borderWidth: 3,
|
|
337
|
+
borderColor: '#2E7D32'
|
|
338
|
+
},
|
|
339
|
+
startMarkerInner: {
|
|
340
|
+
width: 12,
|
|
341
|
+
height: 12,
|
|
342
|
+
borderRadius: 6,
|
|
343
|
+
backgroundColor: '#81C784'
|
|
344
|
+
},
|
|
345
|
+
endMarker: {
|
|
346
|
+
backgroundColor: '#FF5722',
|
|
347
|
+
borderWidth: 3,
|
|
348
|
+
borderColor: '#D84315'
|
|
349
|
+
},
|
|
350
|
+
endMarkerInner: {
|
|
351
|
+
width: 12,
|
|
352
|
+
height: 12,
|
|
353
|
+
borderRadius: 6,
|
|
354
|
+
backgroundColor: '#FF8A65'
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
//# sourceMappingURL=EnhancedGameArea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","Gesture","GestureDetector","Animated","useSharedValue","useAnimatedStyle","runOnJS","withSpring","Haptics","EnhancedBallComponent","WallComponent","jsx","_jsx","jsxs","_jsxs","EnhancedGameArea","gameState","gameConfig","walls","onBallPositionChange","hapticEnabled","translateX","ballPosition","x","translateY","y","isDragging","wallsSharedValue","useEffect","value","triggerHaptic","impactAsync","ImpactFeedbackStyle","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":[]}
|