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,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useRef, useEffect } from 'react';
|
|
4
|
+
import { View, TouchableOpacity, Text, StyleSheet, Animated } from 'react-native';
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
export const GameControls = ({
|
|
7
|
+
isPlaying,
|
|
8
|
+
gameOver,
|
|
9
|
+
onStartGame,
|
|
10
|
+
onStopGame
|
|
11
|
+
}) => {
|
|
12
|
+
const scaleAnim = useRef(new Animated.Value(1)).current;
|
|
13
|
+
const pulseAnim = useRef(new Animated.Value(1)).current;
|
|
14
|
+
const glowAnim = useRef(new Animated.Value(0)).current;
|
|
15
|
+
|
|
16
|
+
// Pulse animation for start button
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (!isPlaying && !gameOver) {
|
|
19
|
+
const pulseAnimation = Animated.loop(Animated.sequence([Animated.timing(pulseAnim, {
|
|
20
|
+
toValue: 1.05,
|
|
21
|
+
duration: 1000,
|
|
22
|
+
useNativeDriver: true
|
|
23
|
+
}), Animated.timing(pulseAnim, {
|
|
24
|
+
toValue: 1,
|
|
25
|
+
duration: 1000,
|
|
26
|
+
useNativeDriver: true
|
|
27
|
+
})]));
|
|
28
|
+
pulseAnimation.start();
|
|
29
|
+
return () => pulseAnimation.stop();
|
|
30
|
+
}
|
|
31
|
+
return () => {}; // Return empty cleanup function when condition is not met
|
|
32
|
+
}, [isPlaying, gameOver, pulseAnim]);
|
|
33
|
+
|
|
34
|
+
// Glow animation for stop button
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (isPlaying) {
|
|
37
|
+
const glowAnimation = Animated.loop(Animated.sequence([Animated.timing(glowAnim, {
|
|
38
|
+
toValue: 1,
|
|
39
|
+
duration: 800,
|
|
40
|
+
useNativeDriver: false
|
|
41
|
+
}), Animated.timing(glowAnim, {
|
|
42
|
+
toValue: 0,
|
|
43
|
+
duration: 800,
|
|
44
|
+
useNativeDriver: false
|
|
45
|
+
})]));
|
|
46
|
+
glowAnimation.start();
|
|
47
|
+
return () => glowAnimation.stop();
|
|
48
|
+
}
|
|
49
|
+
return () => {}; // Return empty cleanup function when condition is not met
|
|
50
|
+
}, [isPlaying, glowAnim]);
|
|
51
|
+
const handlePressIn = () => {
|
|
52
|
+
Animated.spring(scaleAnim, {
|
|
53
|
+
toValue: 0.95,
|
|
54
|
+
useNativeDriver: true
|
|
55
|
+
}).start();
|
|
56
|
+
};
|
|
57
|
+
const handlePressOut = () => {
|
|
58
|
+
Animated.spring(scaleAnim, {
|
|
59
|
+
toValue: 1,
|
|
60
|
+
friction: 3,
|
|
61
|
+
tension: 40,
|
|
62
|
+
useNativeDriver: true
|
|
63
|
+
}).start();
|
|
64
|
+
};
|
|
65
|
+
const glowColor = glowAnim.interpolate({
|
|
66
|
+
inputRange: [0, 1],
|
|
67
|
+
outputRange: ['rgba(255, 87, 34, 0.3)', 'rgba(255, 87, 34, 0.8)']
|
|
68
|
+
});
|
|
69
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
70
|
+
style: styles.gameControls,
|
|
71
|
+
children: [!isPlaying && !gameOver && /*#__PURE__*/_jsx(Animated.View, {
|
|
72
|
+
style: [{
|
|
73
|
+
transform: [{
|
|
74
|
+
scale: pulseAnim
|
|
75
|
+
}]
|
|
76
|
+
}],
|
|
77
|
+
children: /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
78
|
+
style: [styles.startButton],
|
|
79
|
+
onPress: onStartGame,
|
|
80
|
+
onPressIn: handlePressIn,
|
|
81
|
+
onPressOut: handlePressOut,
|
|
82
|
+
activeOpacity: 0.8,
|
|
83
|
+
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
84
|
+
style: [styles.buttonContent, {
|
|
85
|
+
transform: [{
|
|
86
|
+
scale: scaleAnim
|
|
87
|
+
}]
|
|
88
|
+
}],
|
|
89
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
90
|
+
style: styles.startButtonText,
|
|
91
|
+
children: "START GAME"
|
|
92
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
93
|
+
style: styles.buttonSubtext,
|
|
94
|
+
children: "Tap to begin!"
|
|
95
|
+
})]
|
|
96
|
+
})
|
|
97
|
+
})
|
|
98
|
+
}), isPlaying && /*#__PURE__*/_jsx(Animated.View, {
|
|
99
|
+
style: [styles.stopButtonContainer, {
|
|
100
|
+
shadowColor: glowColor
|
|
101
|
+
}],
|
|
102
|
+
children: /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
103
|
+
style: [styles.stopButton],
|
|
104
|
+
onPress: onStopGame,
|
|
105
|
+
onPressIn: handlePressIn,
|
|
106
|
+
onPressOut: handlePressOut,
|
|
107
|
+
activeOpacity: 0.8,
|
|
108
|
+
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
109
|
+
style: [styles.buttonContent, {
|
|
110
|
+
transform: [{
|
|
111
|
+
scale: scaleAnim
|
|
112
|
+
}]
|
|
113
|
+
}],
|
|
114
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
115
|
+
style: styles.stopButtonText,
|
|
116
|
+
children: "STOP GAME"
|
|
117
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
118
|
+
style: styles.buttonSubtext,
|
|
119
|
+
children: "End current game"
|
|
120
|
+
})]
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
})]
|
|
124
|
+
});
|
|
125
|
+
};
|
|
126
|
+
const styles = StyleSheet.create({
|
|
127
|
+
gameControls: {
|
|
128
|
+
height: 120,
|
|
129
|
+
justifyContent: 'center',
|
|
130
|
+
alignItems: 'center',
|
|
131
|
+
paddingVertical: 20,
|
|
132
|
+
paddingHorizontal: 20
|
|
133
|
+
},
|
|
134
|
+
startButton: {
|
|
135
|
+
backgroundColor: '#10b981',
|
|
136
|
+
// Emerald green
|
|
137
|
+
paddingHorizontal: 32,
|
|
138
|
+
paddingVertical: 20,
|
|
139
|
+
borderRadius: 30,
|
|
140
|
+
shadowColor: '#10b981',
|
|
141
|
+
shadowOffset: {
|
|
142
|
+
width: 0,
|
|
143
|
+
height: 8
|
|
144
|
+
},
|
|
145
|
+
shadowOpacity: 0.4,
|
|
146
|
+
shadowRadius: 12,
|
|
147
|
+
elevation: 8,
|
|
148
|
+
justifyContent: 'center',
|
|
149
|
+
alignItems: 'center',
|
|
150
|
+
minHeight: 70,
|
|
151
|
+
minWidth: 200,
|
|
152
|
+
borderWidth: 3,
|
|
153
|
+
borderColor: '#34d399',
|
|
154
|
+
// Light green border
|
|
155
|
+
position: 'relative',
|
|
156
|
+
overflow: 'hidden'
|
|
157
|
+
},
|
|
158
|
+
stopButton: {
|
|
159
|
+
backgroundColor: '#dc2626',
|
|
160
|
+
// Red
|
|
161
|
+
paddingHorizontal: 32,
|
|
162
|
+
paddingVertical: 20,
|
|
163
|
+
borderRadius: 30,
|
|
164
|
+
shadowColor: '#dc2626',
|
|
165
|
+
shadowOffset: {
|
|
166
|
+
width: 0,
|
|
167
|
+
height: 8
|
|
168
|
+
},
|
|
169
|
+
shadowOpacity: 0.4,
|
|
170
|
+
shadowRadius: 12,
|
|
171
|
+
elevation: 8,
|
|
172
|
+
justifyContent: 'center',
|
|
173
|
+
alignItems: 'center',
|
|
174
|
+
minHeight: 70,
|
|
175
|
+
minWidth: 200,
|
|
176
|
+
borderWidth: 3,
|
|
177
|
+
borderColor: '#f87171',
|
|
178
|
+
// Light red border
|
|
179
|
+
position: 'relative',
|
|
180
|
+
overflow: 'hidden'
|
|
181
|
+
},
|
|
182
|
+
stopButtonContainer: {
|
|
183
|
+
shadowOffset: {
|
|
184
|
+
width: 0,
|
|
185
|
+
height: 0
|
|
186
|
+
},
|
|
187
|
+
shadowOpacity: 0.6,
|
|
188
|
+
shadowRadius: 20,
|
|
189
|
+
elevation: 10
|
|
190
|
+
},
|
|
191
|
+
buttonContent: {
|
|
192
|
+
alignItems: 'center',
|
|
193
|
+
justifyContent: 'center'
|
|
194
|
+
},
|
|
195
|
+
startButtonText: {
|
|
196
|
+
fontSize: 20,
|
|
197
|
+
fontWeight: '800',
|
|
198
|
+
color: '#ffffff',
|
|
199
|
+
textAlign: 'center',
|
|
200
|
+
textShadowColor: 'rgba(0, 0, 0, 0.3)',
|
|
201
|
+
textShadowOffset: {
|
|
202
|
+
width: 1,
|
|
203
|
+
height: 1
|
|
204
|
+
},
|
|
205
|
+
textShadowRadius: 2,
|
|
206
|
+
letterSpacing: 1
|
|
207
|
+
},
|
|
208
|
+
stopButtonText: {
|
|
209
|
+
fontSize: 20,
|
|
210
|
+
fontWeight: '800',
|
|
211
|
+
color: '#ffffff',
|
|
212
|
+
textAlign: 'center',
|
|
213
|
+
textShadowColor: 'rgba(0, 0, 0, 0.3)',
|
|
214
|
+
textShadowOffset: {
|
|
215
|
+
width: 1,
|
|
216
|
+
height: 1
|
|
217
|
+
},
|
|
218
|
+
textShadowRadius: 2,
|
|
219
|
+
letterSpacing: 1
|
|
220
|
+
},
|
|
221
|
+
buttonSubtext: {
|
|
222
|
+
fontSize: 12,
|
|
223
|
+
fontWeight: '600',
|
|
224
|
+
color: 'rgba(255, 255, 255, 0.8)',
|
|
225
|
+
textAlign: 'center',
|
|
226
|
+
marginTop: 4,
|
|
227
|
+
letterSpacing: 0.5
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
//# sourceMappingURL=GameControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useRef","useEffect","View","TouchableOpacity","Text","StyleSheet","Animated","jsx","_jsx","jsxs","_jsxs","GameControls","isPlaying","gameOver","onStartGame","onStopGame","scaleAnim","Value","current","pulseAnim","glowAnim","pulseAnimation","loop","sequence","timing","toValue","duration","useNativeDriver","start","stop","glowAnimation","handlePressIn","spring","handlePressOut","friction","tension","glowColor","interpolate","inputRange","outputRange","style","styles","gameControls","children","transform","scale","startButton","onPress","onPressIn","onPressOut","activeOpacity","buttonContent","startButtonText","buttonSubtext","stopButtonContainer","shadowColor","stopButton","stopButtonText","create","height","justifyContent","alignItems","paddingVertical","paddingHorizontal","backgroundColor","borderRadius","shadowOffset","width","shadowOpacity","shadowRadius","elevation","minHeight","minWidth","borderWidth","borderColor","position","overflow","fontSize","fontWeight","color","textAlign","textShadowColor","textShadowOffset","textShadowRadius","letterSpacing","marginTop"],"sourceRoot":"../../../../../src","sources":["games/cat-popper/components/GameControls.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, StyleSheet } from 'react-native';
|
|
5
|
+
import { GAME_CONFIG } from "../CatPopperService.js";
|
|
6
|
+
import { GameHole } from "./GameHole.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
export const GameGrid = ({
|
|
9
|
+
holes,
|
|
10
|
+
catAnimations,
|
|
11
|
+
hitAnimations,
|
|
12
|
+
onHolePress,
|
|
13
|
+
gridSize = 3
|
|
14
|
+
}) => {
|
|
15
|
+
const gridStyle = {
|
|
16
|
+
width: gridSize * (GAME_CONFIG.HOLE_SIZE + 8) // Account for gaps
|
|
17
|
+
};
|
|
18
|
+
const containerPadding = gridSize === 4 ? 'px-2 py-3' : 'py-5';
|
|
19
|
+
const gridGap = gridSize === 4 ? 'gap-1' : 'gap-2';
|
|
20
|
+
return /*#__PURE__*/_jsx(View, {
|
|
21
|
+
style: [styles.gameArea, containerPadding === 'px-2 py-3' ? styles.smallPadding : styles.largePadding],
|
|
22
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
23
|
+
style: [styles.gameGrid, gridGap === 'gap-1' ? styles.smallGap : styles.largeGap, gridStyle],
|
|
24
|
+
children: holes.map((hole, index) => {
|
|
25
|
+
const catAnimation = catAnimations[index];
|
|
26
|
+
const hitAnimation = hitAnimations[index];
|
|
27
|
+
if (!catAnimation || !hitAnimation) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return /*#__PURE__*/_jsx(GameHole, {
|
|
31
|
+
hole: hole,
|
|
32
|
+
catAnimation: catAnimation,
|
|
33
|
+
hitAnimation: hitAnimation,
|
|
34
|
+
onPress: onHolePress
|
|
35
|
+
}, hole.id);
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const styles = StyleSheet.create({
|
|
41
|
+
gameArea: {
|
|
42
|
+
flex: 1,
|
|
43
|
+
justifyContent: 'center',
|
|
44
|
+
alignItems: 'center'
|
|
45
|
+
},
|
|
46
|
+
smallPadding: {
|
|
47
|
+
paddingHorizontal: 16,
|
|
48
|
+
paddingVertical: 20
|
|
49
|
+
},
|
|
50
|
+
largePadding: {
|
|
51
|
+
paddingVertical: 20
|
|
52
|
+
},
|
|
53
|
+
gameGrid: {
|
|
54
|
+
flexDirection: 'row',
|
|
55
|
+
flexWrap: 'wrap',
|
|
56
|
+
justifyContent: 'center',
|
|
57
|
+
alignItems: 'center'
|
|
58
|
+
},
|
|
59
|
+
smallGap: {
|
|
60
|
+
gap: 4
|
|
61
|
+
},
|
|
62
|
+
largeGap: {
|
|
63
|
+
gap: 8
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=GameGrid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","GAME_CONFIG","GameHole","jsx","_jsx","GameGrid","holes","catAnimations","hitAnimations","onHolePress","gridSize","gridStyle","width","HOLE_SIZE","containerPadding","gridGap","style","styles","gameArea","smallPadding","largePadding","children","gameGrid","smallGap","largeGap","map","hole","index","catAnimation","hitAnimation","onPress","id","create","flex","justifyContent","alignItems","paddingHorizontal","paddingVertical","flexDirection","flexWrap","gap"],"sourceRoot":"../../../../../src","sources":["games/cat-popper/components/GameGrid.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAG/C,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,QAAQ,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUtC,OAAO,MAAMC,QAAiC,GAAGA,CAAC;EAAEC,KAAK;EAAEC,aAAa;EAAEC,aAAa;EAAEC,WAAW;EAAEC,QAAQ,GAAG;AAAE,CAAC,KAAK;EACvH,MAAMC,SAAS,GAAG;IAChBC,KAAK,EAAEF,QAAQ,IAAIT,WAAW,CAACY,SAAS,GAAG,CAAC,CAAC,CAAC;EAChD,CAAC;EAED,MAAMC,gBAAgB,GAAGJ,QAAQ,KAAK,CAAC,GAAG,WAAW,GAAG,MAAM;EAC9D,MAAMK,OAAO,GAAGL,QAAQ,KAAK,CAAC,GAAG,OAAO,GAAG,OAAO;EAElD,oBACEN,IAAA,CAACL,IAAI;IAACiB,KAAK,EAAE,CAACC,MAAM,CAACC,QAAQ,EAAEJ,gBAAgB,KAAK,WAAW,GAAGG,MAAM,CAACE,YAAY,GAAGF,MAAM,CAACG,YAAY,CAAE;IAAAC,QAAA,eAC3GjB,IAAA,CAACL,IAAI;MAACiB,KAAK,EAAE,CAACC,MAAM,CAACK,QAAQ,EAAEP,OAAO,KAAK,OAAO,GAAGE,MAAM,CAACM,QAAQ,GAAGN,MAAM,CAACO,QAAQ,EAAEb,SAAS,CAAE;MAAAU,QAAA,EAChGf,KAAK,CAACmB,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;QAC1B,MAAMC,YAAY,GAAGrB,aAAa,CAACoB,KAAK,CAAC;QACzC,MAAME,YAAY,GAAGrB,aAAa,CAACmB,KAAK,CAAC;QAEzC,IAAI,CAACC,YAAY,IAAI,CAACC,YAAY,EAAE;UAClC,OAAO,IAAI;QACb;QAEA,oBACEzB,IAAA,CAACF,QAAQ;UAEPwB,IAAI,EAAEA,IAAK;UACXE,YAAY,EAAEA,YAAa;UAC3BC,YAAY,EAAEA,YAAa;UAC3BC,OAAO,EAAErB;QAAY,GAJhBiB,IAAI,CAACK,EAKX,CAAC;MAEN,CAAC;IAAC,CACE;EAAC,CACH,CAAC;AAEX,CAAC;AAED,MAAMd,MAAM,GAAGjB,UAAU,CAACgC,MAAM,CAAC;EAC/Bd,QAAQ,EAAE;IACRe,IAAI,EAAE,CAAC;IACPC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDhB,YAAY,EAAE;IACZiB,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB,CAAC;EACDjB,YAAY,EAAE;IACZiB,eAAe,EAAE;EACnB,CAAC;EACDf,QAAQ,EAAE;IACRgB,aAAa,EAAE,KAAK;IACpBC,QAAQ,EAAE,MAAM;IAChBL,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDZ,QAAQ,EAAE;IACRiB,GAAG,EAAE;EACP,CAAC;EACDhB,QAAQ,EAAE;IACRgB,GAAG,EAAE;EACP;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, TouchableOpacity, StyleSheet } from 'react-native';
|
|
5
|
+
import { useSharedValue, useAnimatedStyle, withSpring, withSequence, withTiming, interpolate, Extrapolation } from 'react-native-reanimated';
|
|
6
|
+
import Animated from 'react-native-reanimated';
|
|
7
|
+
import { Canvas as SkiaCanvas, Circle, Group } from '@shopify/react-native-skia';
|
|
8
|
+
import { GAME_CONFIG, COLORS } from "../CatPopperService.js";
|
|
9
|
+
import { CatCharacter } from "./CatCharacter.js";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
export const GameHole = ({
|
|
12
|
+
hole,
|
|
13
|
+
catAnimation,
|
|
14
|
+
hitAnimation,
|
|
15
|
+
onPress
|
|
16
|
+
}) => {
|
|
17
|
+
// Enhanced animation values for whack effect
|
|
18
|
+
const whackScale = useSharedValue(1);
|
|
19
|
+
const whackRotation = useSharedValue(0);
|
|
20
|
+
const whackBounce = useSharedValue(0);
|
|
21
|
+
const catStyle = useAnimatedStyle(() => {
|
|
22
|
+
// Cat emerges from deep inside the hole
|
|
23
|
+
const translateY = interpolate(catAnimation.value, [0, 0.3, 1], [GAME_CONFIG.HOLE_SIZE * 0.3, GAME_CONFIG.HOLE_SIZE * 0.1, -GAME_CONFIG.HOLE_SIZE * 0.05], Extrapolation.CLAMP);
|
|
24
|
+
|
|
25
|
+
// Cat grows as it emerges from the hole
|
|
26
|
+
const emergenceScale = interpolate(catAnimation.value, [0, 0.4, 1], [0.3, 0.8, 1], Extrapolation.CLAMP);
|
|
27
|
+
|
|
28
|
+
// Constrained bounce - keep cat within hole area
|
|
29
|
+
const bounceY = whackBounce.value * -8;
|
|
30
|
+
const finalTranslateY = Math.max(translateY + bounceY, -GAME_CONFIG.HOLE_SIZE * 0.1);
|
|
31
|
+
return {
|
|
32
|
+
transform: [{
|
|
33
|
+
translateY: finalTranslateY
|
|
34
|
+
}, {
|
|
35
|
+
scale: whackScale.value * emergenceScale
|
|
36
|
+
}, {
|
|
37
|
+
rotate: `${whackRotation.value}deg`
|
|
38
|
+
}],
|
|
39
|
+
opacity: catAnimation.value
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
const hitStyle = useAnimatedStyle(() => {
|
|
43
|
+
const scale = 1 + hitAnimation.value * 0.5;
|
|
44
|
+
return {
|
|
45
|
+
transform: [{
|
|
46
|
+
scale
|
|
47
|
+
}],
|
|
48
|
+
opacity: hitAnimation.value
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
// Enhanced hit handler with coordinated whack animation
|
|
53
|
+
const handlePress = () => {
|
|
54
|
+
// Only trigger whack animation if cat is active
|
|
55
|
+
if (hole.isActive || catAnimation.value > 0) {
|
|
56
|
+
// Whack animation sequence - constrained to hole area
|
|
57
|
+
whackScale.value = withSequence(withSpring(1.3, {
|
|
58
|
+
damping: 8,
|
|
59
|
+
stiffness: 400
|
|
60
|
+
}), withSpring(0.8, {
|
|
61
|
+
damping: 10,
|
|
62
|
+
stiffness: 300
|
|
63
|
+
}), withTiming(0, {
|
|
64
|
+
duration: 400
|
|
65
|
+
}));
|
|
66
|
+
whackRotation.value = withSequence(withSpring(15, {
|
|
67
|
+
damping: 10,
|
|
68
|
+
stiffness: 300
|
|
69
|
+
}), withSpring(-8, {
|
|
70
|
+
damping: 12,
|
|
71
|
+
stiffness: 250
|
|
72
|
+
}), withTiming(0, {
|
|
73
|
+
duration: 300
|
|
74
|
+
}));
|
|
75
|
+
whackBounce.value = withSequence(withSpring(1, {
|
|
76
|
+
damping: 8,
|
|
77
|
+
stiffness: 400
|
|
78
|
+
}), withSpring(0, {
|
|
79
|
+
damping: 12,
|
|
80
|
+
stiffness: 300
|
|
81
|
+
}));
|
|
82
|
+
|
|
83
|
+
// Delay hit effect to let cat animation show first
|
|
84
|
+
setTimeout(() => {
|
|
85
|
+
// Trigger hit effect after cat starts reacting
|
|
86
|
+
onPress(hole.id);
|
|
87
|
+
}, 150);
|
|
88
|
+
|
|
89
|
+
// Reset animations after whack sequence
|
|
90
|
+
setTimeout(() => {
|
|
91
|
+
whackScale.value = 1;
|
|
92
|
+
whackRotation.value = 0;
|
|
93
|
+
whackBounce.value = 0;
|
|
94
|
+
}, 800);
|
|
95
|
+
} else {
|
|
96
|
+
// No cat present, just trigger normal hit
|
|
97
|
+
onPress(hole.id);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
return /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
101
|
+
style: [styles.holeContainer, {
|
|
102
|
+
width: GAME_CONFIG.HOLE_SIZE,
|
|
103
|
+
height: GAME_CONFIG.HOLE_SIZE
|
|
104
|
+
}],
|
|
105
|
+
onPress: handlePress,
|
|
106
|
+
activeOpacity: 0.8,
|
|
107
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
108
|
+
style: [styles.hole, {
|
|
109
|
+
width: GAME_CONFIG.HOLE_SIZE * 0.8,
|
|
110
|
+
height: GAME_CONFIG.HOLE_SIZE * 0.8
|
|
111
|
+
}]
|
|
112
|
+
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
113
|
+
style: [styles.hitEffectContainer, {
|
|
114
|
+
width: GAME_CONFIG.HOLE_SIZE,
|
|
115
|
+
height: GAME_CONFIG.HOLE_SIZE
|
|
116
|
+
}, hitStyle],
|
|
117
|
+
children: /*#__PURE__*/_jsx(SkiaCanvas, {
|
|
118
|
+
style: {
|
|
119
|
+
width: GAME_CONFIG.HOLE_SIZE,
|
|
120
|
+
height: GAME_CONFIG.HOLE_SIZE
|
|
121
|
+
},
|
|
122
|
+
children: /*#__PURE__*/_jsxs(Group, {
|
|
123
|
+
children: [/*#__PURE__*/_jsx(Circle, {
|
|
124
|
+
cx: GAME_CONFIG.HOLE_SIZE / 2,
|
|
125
|
+
cy: GAME_CONFIG.HOLE_SIZE / 2,
|
|
126
|
+
r: 30,
|
|
127
|
+
color: COLORS.HIT_EFFECT_OUTER
|
|
128
|
+
}), /*#__PURE__*/_jsx(Circle, {
|
|
129
|
+
cx: GAME_CONFIG.HOLE_SIZE / 2,
|
|
130
|
+
cy: GAME_CONFIG.HOLE_SIZE / 2,
|
|
131
|
+
r: 20,
|
|
132
|
+
color: COLORS.HIT_EFFECT_INNER
|
|
133
|
+
})]
|
|
134
|
+
})
|
|
135
|
+
})
|
|
136
|
+
}), (hole.isActive || catAnimation.value > 0 || whackScale.value !== 1) && /*#__PURE__*/_jsx(Animated.View, {
|
|
137
|
+
style: [styles.catContainer, {
|
|
138
|
+
bottom: GAME_CONFIG.HOLE_SIZE * 0.1,
|
|
139
|
+
zIndex: 10
|
|
140
|
+
}, catStyle],
|
|
141
|
+
children: /*#__PURE__*/_jsx(CatCharacter, {
|
|
142
|
+
size: GAME_CONFIG.HOLE_SIZE * 0.6
|
|
143
|
+
})
|
|
144
|
+
})]
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
const styles = StyleSheet.create({
|
|
148
|
+
holeContainer: {
|
|
149
|
+
justifyContent: 'center',
|
|
150
|
+
alignItems: 'center',
|
|
151
|
+
position: 'relative'
|
|
152
|
+
},
|
|
153
|
+
hole: {
|
|
154
|
+
backgroundColor: '#92400e',
|
|
155
|
+
borderWidth: 4,
|
|
156
|
+
borderColor: '#a16207',
|
|
157
|
+
borderRadius: 9999,
|
|
158
|
+
shadowColor: '#000',
|
|
159
|
+
shadowOffset: {
|
|
160
|
+
width: 0,
|
|
161
|
+
height: 2
|
|
162
|
+
},
|
|
163
|
+
shadowOpacity: 0.25,
|
|
164
|
+
shadowRadius: 3.84,
|
|
165
|
+
elevation: 5
|
|
166
|
+
},
|
|
167
|
+
catContainer: {
|
|
168
|
+
position: 'absolute',
|
|
169
|
+
justifyContent: 'center',
|
|
170
|
+
alignItems: 'center',
|
|
171
|
+
zIndex: 10,
|
|
172
|
+
elevation: 10
|
|
173
|
+
},
|
|
174
|
+
hitEffectContainer: {
|
|
175
|
+
position: 'absolute',
|
|
176
|
+
justifyContent: 'center',
|
|
177
|
+
alignItems: 'center',
|
|
178
|
+
pointerEvents: 'none',
|
|
179
|
+
zIndex: 1,
|
|
180
|
+
elevation: 1
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
//# sourceMappingURL=GameHole.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","TouchableOpacity","StyleSheet","useSharedValue","useAnimatedStyle","withSpring","withSequence","withTiming","interpolate","Extrapolation","Animated","Canvas","SkiaCanvas","Circle","Group","GAME_CONFIG","COLORS","CatCharacter","jsx","_jsx","jsxs","_jsxs","GameHole","hole","catAnimation","hitAnimation","onPress","whackScale","whackRotation","whackBounce","catStyle","translateY","value","HOLE_SIZE","CLAMP","emergenceScale","bounceY","finalTranslateY","Math","max","transform","scale","rotate","opacity","hitStyle","handlePress","isActive","damping","stiffness","duration","setTimeout","id","style","styles","holeContainer","width","height","activeOpacity","children","hitEffectContainer","cx","cy","r","color","HIT_EFFECT_OUTER","HIT_EFFECT_INNER","catContainer","bottom","zIndex","size","create","justifyContent","alignItems","position","backgroundColor","borderWidth","borderColor","borderRadius","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","pointerEvents"],"sourceRoot":"../../../../../src","sources":["games/cat-popper/components/GameHole.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { View, TouchableOpacity, Text, StyleSheet, Modal } from 'react-native';
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
export const GameOverModal = ({
|
|
7
|
+
isVisible,
|
|
8
|
+
score,
|
|
9
|
+
onPlayAgain
|
|
10
|
+
}) => {
|
|
11
|
+
return /*#__PURE__*/_jsx(Modal, {
|
|
12
|
+
visible: isVisible,
|
|
13
|
+
animationType: "fade",
|
|
14
|
+
transparent: true,
|
|
15
|
+
onRequestClose: onPlayAgain,
|
|
16
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
17
|
+
style: styles.gameOverOverlay,
|
|
18
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
19
|
+
style: styles.gameOverModal,
|
|
20
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
21
|
+
style: styles.modalContent,
|
|
22
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
23
|
+
style: styles.gameOverTitle,
|
|
24
|
+
children: "Game Over!"
|
|
25
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
26
|
+
style: styles.finalScoreContainer,
|
|
27
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
28
|
+
style: styles.finalScoreLabel,
|
|
29
|
+
children: "Final Score"
|
|
30
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
31
|
+
style: styles.finalScoreValue,
|
|
32
|
+
children: score
|
|
33
|
+
})]
|
|
34
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
35
|
+
style: styles.playAgainContainer,
|
|
36
|
+
children: /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
37
|
+
style: styles.playAgainButton,
|
|
38
|
+
onPress: onPlayAgain,
|
|
39
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
40
|
+
style: styles.buttonText,
|
|
41
|
+
children: "Play Again"
|
|
42
|
+
})
|
|
43
|
+
})
|
|
44
|
+
})]
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
const styles = StyleSheet.create({
|
|
51
|
+
gameOverOverlay: {
|
|
52
|
+
flex: 1,
|
|
53
|
+
justifyContent: 'center',
|
|
54
|
+
alignItems: 'center',
|
|
55
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)' // Semi-transparent overlay
|
|
56
|
+
},
|
|
57
|
+
gameOverModal: {
|
|
58
|
+
backgroundColor: '#87CEEB',
|
|
59
|
+
// Sky blue background
|
|
60
|
+
borderRadius: 24,
|
|
61
|
+
minWidth: '80%',
|
|
62
|
+
shadowColor: '#000',
|
|
63
|
+
shadowOffset: {
|
|
64
|
+
width: 0,
|
|
65
|
+
height: 8
|
|
66
|
+
},
|
|
67
|
+
shadowOpacity: 0.4,
|
|
68
|
+
shadowRadius: 12,
|
|
69
|
+
elevation: 12,
|
|
70
|
+
borderWidth: 3,
|
|
71
|
+
borderColor: 'rgba(250, 204, 21, 0.8)'
|
|
72
|
+
},
|
|
73
|
+
modalContent: {
|
|
74
|
+
padding: 40,
|
|
75
|
+
alignItems: 'center'
|
|
76
|
+
},
|
|
77
|
+
gameOverTitle: {
|
|
78
|
+
fontSize: 30,
|
|
79
|
+
fontWeight: 'bold',
|
|
80
|
+
color: '#ffffff',
|
|
81
|
+
marginBottom: 32,
|
|
82
|
+
textAlign: 'center'
|
|
83
|
+
},
|
|
84
|
+
finalScoreContainer: {
|
|
85
|
+
alignItems: 'center',
|
|
86
|
+
marginBottom: 32,
|
|
87
|
+
backgroundColor: '#15803d',
|
|
88
|
+
borderRadius: 16,
|
|
89
|
+
padding: 20,
|
|
90
|
+
minWidth: 150
|
|
91
|
+
},
|
|
92
|
+
finalScoreLabel: {
|
|
93
|
+
fontSize: 18,
|
|
94
|
+
color: '#ffffff',
|
|
95
|
+
fontWeight: 'bold',
|
|
96
|
+
marginBottom: 8
|
|
97
|
+
},
|
|
98
|
+
finalScoreValue: {
|
|
99
|
+
fontSize: 48,
|
|
100
|
+
color: '#facc15',
|
|
101
|
+
fontWeight: 'bold',
|
|
102
|
+
textAlign: 'center'
|
|
103
|
+
},
|
|
104
|
+
playAgainContainer: {
|
|
105
|
+
alignItems: 'center'
|
|
106
|
+
},
|
|
107
|
+
playAgainButton: {
|
|
108
|
+
backgroundColor: '#22c55e',
|
|
109
|
+
paddingHorizontal: 40,
|
|
110
|
+
paddingVertical: 20,
|
|
111
|
+
borderRadius: 24,
|
|
112
|
+
shadowColor: '#000',
|
|
113
|
+
shadowOffset: {
|
|
114
|
+
width: 0,
|
|
115
|
+
height: 2
|
|
116
|
+
},
|
|
117
|
+
shadowOpacity: 0.25,
|
|
118
|
+
shadowRadius: 3.84,
|
|
119
|
+
elevation: 5,
|
|
120
|
+
borderWidth: 2,
|
|
121
|
+
borderColor: '#4ade80'
|
|
122
|
+
},
|
|
123
|
+
buttonText: {
|
|
124
|
+
fontSize: 18,
|
|
125
|
+
fontWeight: 'bold',
|
|
126
|
+
color: '#ffffff',
|
|
127
|
+
textAlign: 'center',
|
|
128
|
+
lineHeight: 24
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
//# sourceMappingURL=GameOverModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","TouchableOpacity","Text","StyleSheet","Modal","jsx","_jsx","jsxs","_jsxs","GameOverModal","isVisible","score","onPlayAgain","visible","animationType","transparent","onRequestClose","children","style","styles","gameOverOverlay","gameOverModal","modalContent","gameOverTitle","finalScoreContainer","finalScoreLabel","finalScoreValue","playAgainContainer","playAgainButton","onPress","buttonText","create","flex","justifyContent","alignItems","backgroundColor","borderRadius","minWidth","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","elevation","borderWidth","borderColor","padding","fontSize","fontWeight","color","marginBottom","textAlign","paddingHorizontal","paddingVertical","lineHeight"],"sourceRoot":"../../../../../src","sources":["games/cat-popper/components/GameOverModal.tsx"],"mappings":"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","ignoreList":[]}
|