react-native-games 1.2.0 → 1.4.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 +43 -23
- package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -1
- package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
- package/lib/module/games/bike-racing/BikeRacing.js +1 -0
- package/lib/module/games/bike-racing/BikeRacing.js.map +1 -0
- package/lib/module/games/bike-racing/BikeRacingConstants.js +1 -0
- package/lib/module/games/bike-racing/BikeRacingConstants.js.map +1 -0
- package/lib/module/games/bike-racing/BikeRacingService.js +1 -0
- package/lib/module/games/bike-racing/BikeRacingService.js.map +1 -0
- package/lib/module/games/bike-racing/BikeRacingStore.js +1 -0
- package/lib/module/games/bike-racing/BikeRacingStore.js.map +1 -0
- package/lib/module/games/bike-racing/components/BikeComponent.js +1 -0
- package/lib/module/games/bike-racing/components/BikeComponent.js.map +1 -0
- package/lib/module/games/bike-racing/components/GameBackground.js +1 -0
- package/lib/module/games/bike-racing/components/GameBackground.js.map +1 -0
- package/lib/module/games/bike-racing/components/ScoreBoard.js +1 -0
- package/lib/module/games/bike-racing/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/bike-racing/components/index.js +1 -0
- package/lib/module/games/bike-racing/components/index.js.map +1 -0
- package/lib/module/games/bike-racing/index.js +1 -0
- package/lib/module/games/bike-racing/index.js.map +1 -0
- package/lib/module/games/block-blast/BlockBlast.js +1 -0
- package/lib/module/games/block-blast/BlockBlast.js.map +1 -0
- package/lib/module/games/block-blast/BlockBlastConstants.js +1 -0
- package/lib/module/games/block-blast/BlockBlastConstants.js.map +1 -0
- package/lib/module/games/block-blast/BlockBlastService.js +1 -0
- package/lib/module/games/block-blast/BlockBlastService.js.map +1 -0
- package/lib/module/games/block-blast/BlockBlastStore.js +1 -0
- package/lib/module/games/block-blast/BlockBlastStore.js.map +1 -0
- package/lib/module/games/block-blast/components/BlockPieceComponent.js +1 -0
- package/lib/module/games/block-blast/components/BlockPieceComponent.js.map +1 -0
- package/lib/module/games/block-blast/components/GameArea.js +1 -0
- package/lib/module/games/block-blast/components/GameArea.js.map +1 -0
- package/lib/module/games/block-blast/components/GameBackground.js +1 -0
- package/lib/module/games/block-blast/components/GameBackground.js.map +1 -0
- package/lib/module/games/block-blast/components/GridComponent.js +1 -0
- package/lib/module/games/block-blast/components/GridComponent.js.map +1 -0
- package/lib/module/games/block-blast/components/ScoreBoard.js +1 -0
- package/lib/module/games/block-blast/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/block-blast/components/index.js +1 -0
- package/lib/module/games/block-blast/components/index.js.map +1 -0
- package/lib/module/games/block-blast/index.js +1 -0
- package/lib/module/games/block-blast/index.js.map +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooter.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooter.js.map +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterConstants.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterConstants.js.map +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterService.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterService.js.map +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterStore.js +1 -0
- package/lib/module/games/bubble-shooter/BubbleShooterStore.js.map +1 -0
- package/lib/module/games/bubble-shooter/components/GameArea.js +1 -0
- package/lib/module/games/bubble-shooter/components/GameArea.js.map +1 -0
- package/lib/module/games/bubble-shooter/components/GameBackground.js +1 -0
- package/lib/module/games/bubble-shooter/components/GameBackground.js.map +1 -0
- package/lib/module/games/bubble-shooter/components/ScoreBoard.js +1 -0
- package/lib/module/games/bubble-shooter/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/bubble-shooter/components/index.js +1 -0
- package/lib/module/games/bubble-shooter/components/index.js.map +1 -0
- package/lib/module/games/bubble-shooter/index.js +1 -0
- package/lib/module/games/bubble-shooter/index.js.map +1 -0
- package/lib/module/games/candy-crush/CandyCrush.js +1 -1
- package/lib/module/games/candy-crush/CandyCrush.js.map +1 -1
- package/lib/module/games/car-racing/CarRacing.js +1 -0
- package/lib/module/games/car-racing/CarRacing.js.map +1 -0
- package/lib/module/games/car-racing/CarRacingConstants.js +1 -0
- package/lib/module/games/car-racing/CarRacingConstants.js.map +1 -0
- package/lib/module/games/car-racing/CarRacingService.js +1 -0
- package/lib/module/games/car-racing/CarRacingService.js.map +1 -0
- package/lib/module/games/car-racing/CarRacingStore.js +1 -0
- package/lib/module/games/car-racing/CarRacingStore.js.map +1 -0
- package/lib/module/games/car-racing/components/CarComponent.js +1 -0
- package/lib/module/games/car-racing/components/CarComponent.js.map +1 -0
- package/lib/module/games/car-racing/components/GameBackground.js +1 -0
- package/lib/module/games/car-racing/components/GameBackground.js.map +1 -0
- package/lib/module/games/car-racing/components/ScoreBoard.js +1 -0
- package/lib/module/games/car-racing/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/car-racing/components/index.js +1 -0
- package/lib/module/games/car-racing/components/index.js.map +1 -0
- package/lib/module/games/colors-sort/ColorsSort.js +1 -1
- package/lib/module/games/colors-sort/ColorsSort.js.map +1 -1
- package/lib/module/games/dino-jump/DinoJump.js +1 -1
- package/lib/module/games/dino-jump/DinoJump.js.map +1 -1
- package/lib/module/games/flappy-bird/FlappyBird.js +1 -1
- package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -1
- package/lib/module/games/fruit-merger/FruitMerger.js +1 -1
- package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -1
- package/lib/module/games/fruit-ninja/FruitNinja.js +1 -1
- package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
- package/lib/module/games/game-2048/Game2048.js +1 -1
- package/lib/module/games/game-2048/Game2048.js.map +1 -1
- package/lib/module/games/maze-runner/MazeRunner.js +1 -1
- package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
- package/lib/module/games/perfect-circle/PerfectCircle.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircle.js.map +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleConstants.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleConstants.js.map +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleService.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleService.js.map +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleStore.js +1 -0
- package/lib/module/games/perfect-circle/PerfectCircleStore.js.map +1 -0
- package/lib/module/games/perfect-circle/components/DrawingCanvas.js +1 -0
- package/lib/module/games/perfect-circle/components/DrawingCanvas.js.map +1 -0
- package/lib/module/games/perfect-circle/components/GameBackground.js +1 -0
- package/lib/module/games/perfect-circle/components/GameBackground.js.map +1 -0
- package/lib/module/games/perfect-circle/components/ScoreBoard.js +1 -0
- package/lib/module/games/perfect-circle/components/ScoreBoard.js.map +1 -0
- package/lib/module/games/perfect-circle/index.js +1 -0
- package/lib/module/games/perfect-circle/index.js.map +1 -0
- package/lib/module/games/popit-fidget/PopitFidget.js +1 -1
- package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -1
- package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -1
- package/lib/module/games/snake/Snake.js +1 -1
- package/lib/module/games/snake/Snake.js.map +1 -1
- package/lib/module/games/snake/SnakeStore.js +1 -1
- package/lib/module/games/snake/SnakeStore.js.map +1 -1
- package/lib/module/games/snake/components/ScoreBoard.js +1 -1
- package/lib/module/games/snake/components/ScoreBoard.js.map +1 -1
- package/lib/module/games/space-fighter/SpaceFighter.js +1 -1
- package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
- package/lib/module/games/whack-a-mole/WhackAMole.js +1 -1
- package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
- package/lib/module/helpers/GameOverModal.js +1 -1
- package/lib/module/helpers/GameOverModal.js.map +1 -1
- package/lib/module/helpers/GameSettingsModal.js +1 -1
- package/lib/module/helpers/GameSettingsModal.js.map +1 -1
- package/lib/module/helpers/ScoreBoardContainer.js +1 -1
- package/lib/module/helpers/ScoreBoardContainer.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/services/GamesConstants.js +1 -1
- package/lib/module/services/GamesConstants.js.map +1 -1
- package/lib/module/services/GamesService.js +1 -1
- package/lib/module/services/GamesService.js.map +1 -1
- package/lib/module/services/ScoringService.js +1 -0
- package/lib/module/services/ScoringService.js.map +1 -0
- package/lib/module/services/SoundsService.js +1 -1
- package/lib/module/services/SoundsService.js.map +1 -1
- package/lib/module/services/UtilsService.js +1 -1
- package/lib/module/services/UtilsService.js.map +1 -1
- package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
- package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts +4 -0
- package/lib/typescript/src/games/bike-racing/BikeRacing.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts +76 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts +22 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingService.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts +72 -0
- package/lib/typescript/src/games/bike-racing/BikeRacingStore.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts +12 -0
- package/lib/typescript/src/games/bike-racing/components/BikeComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts +9 -0
- package/lib/typescript/src/games/bike-racing/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/bike-racing/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/components/index.d.ts +4 -0
- package/lib/typescript/src/games/bike-racing/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/bike-racing/index.d.ts +5 -0
- package/lib/typescript/src/games/bike-racing/index.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/BlockBlast.d.ts +4 -0
- package/lib/typescript/src/games/block-blast/BlockBlast.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts +82 -0
- package/lib/typescript/src/games/block-blast/BlockBlastConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts +17 -0
- package/lib/typescript/src/games/block-blast/BlockBlastService.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts +62 -0
- package/lib/typescript/src/games/block-blast/BlockBlastStore.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts +14 -0
- package/lib/typescript/src/games/block-blast/components/BlockPieceComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/GameArea.d.ts +12 -0
- package/lib/typescript/src/games/block-blast/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts +7 -0
- package/lib/typescript/src/games/block-blast/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts +17 -0
- package/lib/typescript/src/games/block-blast/components/GridComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/block-blast/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/components/index.d.ts +6 -0
- package/lib/typescript/src/games/block-blast/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/block-blast/index.d.ts +5 -0
- package/lib/typescript/src/games/block-blast/index.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts +4 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooter.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts +61 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts +26 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterService.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts +62 -0
- package/lib/typescript/src/games/bubble-shooter/BubbleShooterStore.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts +9 -0
- package/lib/typescript/src/games/bubble-shooter/components/GameArea.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts +8 -0
- package/lib/typescript/src/games/bubble-shooter/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/bubble-shooter/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/components/index.d.ts +4 -0
- package/lib/typescript/src/games/bubble-shooter/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/bubble-shooter/index.d.ts +3 -0
- package/lib/typescript/src/games/bubble-shooter/index.d.ts.map +1 -0
- package/lib/typescript/src/games/candy-crush/CandyCrush.d.ts.map +1 -1
- package/lib/typescript/src/games/car-racing/CarRacing.d.ts +4 -0
- package/lib/typescript/src/games/car-racing/CarRacing.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts +76 -0
- package/lib/typescript/src/games/car-racing/CarRacingConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/CarRacingService.d.ts +22 -0
- package/lib/typescript/src/games/car-racing/CarRacingService.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts +72 -0
- package/lib/typescript/src/games/car-racing/CarRacingStore.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts +13 -0
- package/lib/typescript/src/games/car-racing/components/CarComponent.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts +9 -0
- package/lib/typescript/src/games/car-racing/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/car-racing/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/car-racing/components/index.d.ts +4 -0
- package/lib/typescript/src/games/car-racing/components/index.d.ts.map +1 -0
- package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts.map +1 -1
- package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -1
- package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -1
- package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
- package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -1
- package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
- package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts +4 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircle.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts +81 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleConstants.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts +14 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleService.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts +40 -0
- package/lib/typescript/src/games/perfect-circle/PerfectCircleStore.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts +9 -0
- package/lib/typescript/src/games/perfect-circle/components/DrawingCanvas.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts +8 -0
- package/lib/typescript/src/games/perfect-circle/components/GameBackground.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts +7 -0
- package/lib/typescript/src/games/perfect-circle/components/ScoreBoard.d.ts.map +1 -0
- package/lib/typescript/src/games/perfect-circle/index.d.ts +3 -0
- package/lib/typescript/src/games/perfect-circle/index.d.ts.map +1 -0
- package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
- package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -1
- package/lib/typescript/src/games/snake/Snake.d.ts.map +1 -1
- package/lib/typescript/src/games/snake/SnakeStore.d.ts +4 -0
- package/lib/typescript/src/games/snake/SnakeStore.d.ts.map +1 -1
- package/lib/typescript/src/games/snake/components/ScoreBoard.d.ts.map +1 -1
- package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
- package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
- package/lib/typescript/src/helpers/ScoreBoardContainer.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +6 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesConstants.d.ts +50 -0
- package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
- package/lib/typescript/src/services/GamesService.d.ts +2 -1
- package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
- package/lib/typescript/src/services/ScoringService.d.ts +2 -0
- package/lib/typescript/src/services/ScoringService.d.ts.map +1 -0
- package/lib/typescript/src/services/SoundsService.d.ts +88 -0
- package/lib/typescript/src/services/SoundsService.d.ts.map +1 -1
- package/lib/typescript/src/services/UtilsService.d.ts +12 -1
- package/lib/typescript/src/services/UtilsService.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","View","StyleSheet","GestureHandlerRootView","useFruitNinjaStore","registerGameService","createFruitNinjaService","getDifficultySpawnInterval","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","useAnimationTrackers","useGameErrorHandler","GameErrorType","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","FruitNinja","settings","onSettingsChange","isPlaying","state","gameOver","score","startGame","stopGame","resetGame","decrementTime","addFruit","removeFruit","updateFruit","fruitAnimations","particleAnimations","wrapFunction","safeExecute","FRUIT_NINJA","gameService","INITIALIZATION_ERROR","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","View","StyleSheet","GestureHandlerRootView","useFruitNinjaStore","registerGameService","createFruitNinjaService","getDifficultySpawnInterval","ScoreBoard","GameArea","GameBackground","GameControlButton","GameOverModal","useAnimationTrackers","useGameErrorHandler","GameErrorType","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","FruitNinja","settings","onSettingsChange","onEndGame","isPlaying","state","gameOver","score","startGame","stopGame","resetGame","decrementTime","addFruit","removeFruit","updateFruit","gameReportedRef","reportGameEnd","status","current","currentState","getState","toString","fruitAnimations","particleAnimations","wrapFunction","safeExecute","FRUIT_NINJA","gameService","INITIALIZATION_ERROR","handleResetGame","lives","handleStartGame","resetAnimations","startGameTimer","startFruitSpawning","spawnFruit","difficulty","startPhysicsLoop","fruits","handleStopGame","cleanup","UNKNOWN_ERROR","fruit","offset","style","styles","container","children","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","gameId","create","flex"],"sourceRoot":"../../../../src","sources":["games/fruit-ninja/FruitNinja.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import React from 'react';import{View,StyleSheet}from 'react-native';import{GameControlButton,GameOverModal,GameSettingsModal}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{GameBackground,GameGrid,ScoreBoard}from "./components/index.js";import{Game2048Service}from "./Game2048Service.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{useGame2048Store,useTimeElapsed,useIsPlaying,useIsGameOver,useIsWon}from "./Game2048Store.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const Game2048 = React.memo(({settings,onSettingsChange})=>{const timeElapsed = useTimeElapsed();const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const isWon = useIsWon();const{startGame,resetGame,initializeGame,updateSettings,incrementTime}= useGame2048Store();const gameSettings = React.useMemo(()=>({difficulty:settings?.difficulty || 'easy',enableSounds:settings?.enableSounds ?? true,enableHaptics:settings?.enableHaptics ?? true}),[settings?.difficulty,settings?.enableSounds,settings?.enableHaptics]);const initGame = React.useCallback(()=>{initializeGame(gameSettings.difficulty);},[initializeGame,gameSettings.difficulty]);React.useEffect(()=>{updateSettings(gameSettings.enableSounds,gameSettings.enableHaptics);},[updateSettings,gameSettings.enableSounds,gameSettings.enableHaptics]);React.useEffect(()=>{initGame();},[initGame]);React.useEffect(()=>{if(isPlaying && !isGameOver && !isWon){const timer = setInterval(()=>{incrementTime();},1000);return()=> clearInterval(timer);}return undefined;},[isPlaying,isGameOver,isWon,incrementTime]);React.useEffect(()=>{const gameService = new Game2048Service();return()=>{gameService.cleanup();};},[]);const offset = settings?.offset ?? 0;const dynamicStyles = React.useMemo(()=>({gameArea:{...styles.gameArea,marginTop:offset}}),[offset]);return _jsxs(GameBackground,{children:[_jsx(ScoreBoard,{offset:offset}),_jsx(View,{style:dynamicStyles.gameArea,children:_jsx(GameGrid,{difficulty:gameSettings.difficulty})}),_jsx(View,{style:styles.controlsContainer,children:_jsx(GameControlButton,{isPlaying:isPlaying,gameOver:isGameOver,onStartGame:React.useCallback(()=>{if(!isPlaying){playHaptic(HapticType.SELECTION,gameSettings.enableHaptics);startGame();}},[isPlaying,gameSettings.enableHaptics,startGame]),onStopGame:React.useCallback(()=>{playHaptic(HapticType.SELECTION,gameSettings.enableHaptics);resetGame();},[gameSettings.enableHaptics,resetGame]),startButtonText:isPlaying ? 'PLAYING':'START GAME',stopButtonText:"STOP GAME",startButtonSubtext:isPlaying ? 'Swipe to play':'Tap to start',stopButtonSubtext:"Stop game and reset",startButtonColor:"#8f7a66",stopButtonColor:"#dc2626",startButtonBorderColor:"#776e65",stopButtonBorderColor:"#f87171"})}),_jsx(GameOverModal,{isVisible:isGameOver || isWon,score:timeElapsed,scoreLabel:isWon ? "Time to Win":"Time Played",scoreFormatter:time =>{const minutes = Math.floor(time / 60);const seconds = time % 60;return `${minutes}:${seconds.toString().padStart(2,'0')}`;},onPlayAgain:resetGame,buttonText:isWon ? "Continue Playing!":"Play Again!",primaryColor:"rgba(143,122,102,0.5)",borderColor:"rgba(143,122,102,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#8f7a66"}),_jsx(GameSettingsModal,{gameId:GAME_IDS.GAME_2048,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]});});const styles = StyleSheet.create({gameArea:{flex:1,justifyContent:'center',alignItems:'center'},controlsContainer:{marginTop:25,zIndex:10,position:'relative'}});Game2048.displayName = 'Game2048';
|
|
1
|
+
"use strict";import React from 'react';import{View,StyleSheet}from 'react-native';import{GameControlButton,GameOverModal,GameSettingsModal}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{GameBackground,GameGrid,ScoreBoard}from "./components/index.js";import{Game2048Service}from "./Game2048Service.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{calculateTimeBasedScore}from "../../services/ScoringService.js";import{useGame2048Store,useTimeElapsed,useIsPlaying,useIsGameOver,useIsWon}from "./Game2048Store.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const Game2048 = React.memo(({settings,onSettingsChange,onEndGame})=>{const timeElapsed = useTimeElapsed();const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const isWon = useIsWon();const gameReportedRef = React.useRef(false);const reportGameEnd = React.useCallback(status =>{if(onEndGame && !gameReportedRef.current){const expectedTimes ={easy:180,medium:300,hard:420};const difficulty = settings?.difficulty || 'easy';const expectedTime = expectedTimes[difficulty];const calculatedScore = status === 'win' ? calculateTimeBasedScore(timeElapsed,expectedTime):0;onEndGame({status,score:calculatedScore.toString()});gameReportedRef.current = true;}},[onEndGame,timeElapsed,settings?.difficulty]);const{startGame,resetGame,initializeGame,updateSettings,incrementTime}= useGame2048Store();const gameSettings = React.useMemo(()=>({difficulty:settings?.difficulty || 'easy',enableSounds:settings?.enableSounds ?? true,enableHaptics:settings?.enableHaptics ?? true}),[settings?.difficulty,settings?.enableSounds,settings?.enableHaptics]);const initGame = React.useCallback(()=>{initializeGame(gameSettings.difficulty);},[initializeGame,gameSettings.difficulty]);React.useEffect(()=>{updateSettings(gameSettings.enableSounds,gameSettings.enableHaptics);},[updateSettings,gameSettings.enableSounds,gameSettings.enableHaptics]);React.useEffect(()=>{initGame();},[initGame]);React.useEffect(()=>{if((isGameOver || isWon)&& !gameReportedRef.current){const status = isWon ? 'win':'lose';reportGameEnd(status);}if(!isGameOver && !isWon){gameReportedRef.current = false;}},[isGameOver,isWon,reportGameEnd]);React.useEffect(()=>{if(isPlaying && !isGameOver && !isWon){const timer = setInterval(()=>{incrementTime();},1000);return()=> clearInterval(timer);}return undefined;},[isPlaying,isGameOver,isWon,incrementTime]);React.useEffect(()=>{const gameService = new Game2048Service();return()=>{gameService.cleanup();};},[]);const offset = settings?.offset ?? 0;const dynamicStyles = React.useMemo(()=>({gameArea:{...styles.gameArea,marginTop:offset}}),[offset]);return _jsxs(GameBackground,{children:[_jsx(ScoreBoard,{offset:offset}),_jsx(View,{style:dynamicStyles.gameArea,children:_jsx(GameGrid,{difficulty:gameSettings.difficulty})}),_jsx(View,{style:styles.controlsContainer,children:_jsx(GameControlButton,{isPlaying:isPlaying,gameOver:isGameOver,onStartGame:React.useCallback(()=>{if(!isPlaying){playHaptic(HapticType.SELECTION,gameSettings.enableHaptics);startGame();}},[isPlaying,gameSettings.enableHaptics,startGame]),onStopGame:React.useCallback(()=>{playHaptic(HapticType.SELECTION,gameSettings.enableHaptics);resetGame();},[gameSettings.enableHaptics,resetGame]),startButtonText:isPlaying ? 'PLAYING':'START GAME',stopButtonText:"STOP GAME",startButtonSubtext:isPlaying ? 'Swipe to play':'Tap to start',stopButtonSubtext:"Stop game and reset",startButtonColor:"#8f7a66",stopButtonColor:"#dc2626",startButtonBorderColor:"#776e65",stopButtonBorderColor:"#f87171"})}),_jsx(GameOverModal,{isVisible:isGameOver || isWon,score:timeElapsed,scoreLabel:isWon ? "Time to Win":"Time Played",scoreFormatter:time =>{const minutes = Math.floor(time / 60);const seconds = time % 60;return `${minutes}:${seconds.toString().padStart(2,'0')}`;},onPlayAgain:resetGame,buttonText:isWon ? "Continue Playing!":"Play Again!",primaryColor:"rgba(143,122,102,0.5)",borderColor:"rgba(143,122,102,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#8f7a66"}),_jsx(GameSettingsModal,{gameId:GAME_IDS.GAME_2048,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]});});const styles = StyleSheet.create({gameArea:{flex:1,justifyContent:'center',alignItems:'center'},controlsContainer:{marginTop:25,zIndex:10,position:'relative'}});Game2048.displayName = 'Game2048';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","GameBackground","GameGrid","ScoreBoard","Game2048Service","playHaptic","HapticType","useGame2048Store","useTimeElapsed","useIsPlaying","useIsGameOver","useIsWon","jsx","_jsx","jsxs","_jsxs","Game2048","memo","settings","onSettingsChange","timeElapsed","isPlaying","isGameOver","isWon","startGame","resetGame","initializeGame","updateSettings","incrementTime","gameSettings","useMemo","
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","GameBackground","GameGrid","ScoreBoard","Game2048Service","playHaptic","HapticType","calculateTimeBasedScore","useGame2048Store","useTimeElapsed","useIsPlaying","useIsGameOver","useIsWon","jsx","_jsx","jsxs","_jsxs","Game2048","memo","settings","onSettingsChange","onEndGame","timeElapsed","isPlaying","isGameOver","isWon","gameReportedRef","useRef","reportGameEnd","useCallback","status","current","expectedTimes","easy","medium","hard","difficulty","expectedTime","calculatedScore","score","toString","startGame","resetGame","initializeGame","updateSettings","incrementTime","gameSettings","useMemo","enableSounds","enableHaptics","initGame","useEffect","timer","setInterval","clearInterval","undefined","gameService","cleanup","offset","dynamicStyles","gameArea","styles","marginTop","children","style","controlsContainer","gameOver","onStartGame","SELECTION","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","isVisible","scoreLabel","scoreFormatter","time","minutes","Math","floor","seconds","padStart","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","gameId","GAME_2048","create","flex","justifyContent","alignItems","zIndex","position","displayName"],"sourceRoot":"../../../../src","sources":["games/game-2048/Game2048.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import React,{useState,useEffect,useCallback,useRef,useMemo}from 'react';import{View,StyleSheet,Dimensions}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{MazeRunnerService}from "./MazeRunnerService.js";import{DEFAULT_MAZE_RUNNER_SETTINGS,MAZE_RUNNER_DIFFICULTY_CONFIG}from "./MazeRunnerConstants.js";import{GameBackground,ScoreBoard,EnhancedGameArea}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const useResponsiveDimensions =()=>{const [dimensions,setDimensions] = useState(()=>{const{width,height}= Dimensions.get('window');return{width,height};});useEffect(()=>{const handleDimensionChange =({window})=>{setDimensions(prev =>{if(prev.width !== window.width || prev.height !== window.height){return{width:window.width,height:window.height};}return prev;});};const subscription = Dimensions.addEventListener('change',handleDimensionChange);return()=> subscription?.remove();},[]);return dimensions;};export const MazeRunner =({settings = DEFAULT_GAME_SETTINGS,onSettingsChange})=>{const{width:screenWidth,height:screenHeight}= useResponsiveDimensions();const responsiveDimensions = useMemo(()=>{const reservedHeight = 220;const availableHeight = screenHeight - reservedHeight;const availableWidth = screenWidth - 40;const maxDimension = Math.min(availableWidth,availableHeight);const gameAreaSize = Math.max(300,Math.min(maxDimension,600));return{width:gameAreaSize,height:gameAreaSize};},[screenWidth,screenHeight]);const gameService = useMemo(()=>{const currentSettings ={...DEFAULT_MAZE_RUNNER_SETTINGS,...settings};const{width:initialWidth,height:initialHeight}= Dimensions.get('window');const reservedHeight = 220;const availableHeight = initialHeight - reservedHeight;const availableWidth = initialWidth - 40;const maxDimension = Math.min(availableWidth,availableHeight);const gameAreaSize = Math.max(300,Math.min(maxDimension,600));return new MazeRunnerService(currentSettings.gridSize,gameAreaSize,gameAreaSize,currentSettings.gameDuration);},[]);const [gameState,setGameState] = useState(gameService.getGameState());const [showGameOverModal,setShowGameOverModal] = useState(false);const [walls,setWalls] = useState(()=> gameService.getWalls());const completionHandledRef = useRef(false);const gameConfig = useMemo(()=> gameService.getGameConfig(),[gameService,responsiveDimensions]);const gameControlButtonProps = useMemo(()=>({isPlaying:gameState.isPlaying,gameOver:gameState.isCompleted || gameState.gameOver,startButtonText:"START MAZE",stopButtonText:"STOP GAME",startButtonSubtext:"Navigate the maze!",stopButtonSubtext:"End current game",startButtonColor:"#8b4513",stopButtonColor:"#dc2626",startButtonBorderColor:"#cd853f",stopButtonBorderColor:"#f87171"}),[gameState.isPlaying,gameState.isCompleted,gameState.gameOver]);const gameOverModalProps = useMemo(()=>({isVisible:showGameOverModal,score:gameState.timeElapsed,scoreLabel:"Completion Time",scoreFormatter:time =>{const minutes = Math.floor(time / 60);const seconds = time % 60;return `${minutes}:${seconds.toString().padStart(2,'0')}`;},buttonText:gameState.isCompleted ? "Navigate Again!":"Try Again!",primaryColor:"rgba(139,69,19,0.5)",borderColor:"rgba(139,69,19,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#8b4513"}),[showGameOverModal,gameState.timeElapsed,gameState.isCompleted]);useEffect(()=>{gameService.resetGame();},[gameService]);useEffect(()=>{const difficultyConfig = MAZE_RUNNER_DIFFICULTY_CONFIG[settings.difficulty];const gridSize = difficultyConfig.gridSize;const gameDuration = difficultyConfig.gameDuration;gameService.updateSettings(gridSize,gameDuration,responsiveDimensions.width,responsiveDimensions.height);},[settings.difficulty,gameService,responsiveDimensions]);const handleStateChange = useCallback(newState =>{setGameState(()=>{if(newState.isCompleted && !completionHandledRef.current){completionHandledRef.current = true;handleGameCompleted();setTimeout(()=>{setShowGameOverModal(true);},500);}return newState;});setWalls(gameService.getWalls());},[gameService]);useEffect(()=>{gameService.setGameStateChangeCallback(handleStateChange);return()=>{try{gameService.stopGame();}catch{}try{gameService.resetGame();}catch{}gameService.cleanup();};},[gameService,handleStateChange]);const handleGameCompleted = useCallback(()=>{playSound(GAME_SOUNDS.MAZE_RUNNER.COMPLETE,settings.enableSounds);playHaptic(HapticType.SUCCESS,settings.enableHaptics);},[settings.enableSounds,settings.enableHaptics]);const handleStartGame = useCallback(()=>{completionHandledRef.current = false;gameService.startGame();setShowGameOverModal(false);playSound(GAME_SOUNDS.MAZE_RUNNER.START,settings.enableSounds);playHaptic(HapticType.MEDIUM,settings.enableHaptics);},[gameService,settings.enableSounds,settings.enableHaptics]);const handleStopGame = useCallback(()=>{gameService.stopGame();playSound(GAME_SOUNDS.MAZE_RUNNER.STOP,settings.enableSounds);},[gameService,settings.enableSounds]);const handleBallPositionChange = useCallback(position =>{return gameService.updateBallPosition(position);},[gameService]);const handlePlayAgain = useCallback(()=>{completionHandledRef.current = false;setShowGameOverModal(false);gameService.resetGame();},[gameService]);const offset = settings?.offset ?? 0;return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(View,{style:styles.gameContainer,children:[_jsx(GameBackground,{width:screenWidth,height:screenHeight}),_jsx(ScoreBoard,{gameState:gameState,offset:offset}),_jsx(View,{style:[styles.gameAreaContainer,{marginTop:offset}],children:_jsx(EnhancedGameArea,{gameState:gameState,gameConfig:gameConfig,walls:walls,onBallPositionChange:handleBallPositionChange,hapticEnabled:settings.enableHaptics})}),_jsx(GameControlButton,{...gameControlButtonProps,onStartGame:handleStartGame,onStopGame:handleStopGame}),_jsx(GameOverModal,{...gameOverModalProps,onPlayAgain:handlePlayAgain}),_jsx(GameSettingsModal,{gameId:GAME_IDS.MAZE_RUNNER,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]})})});};const styles = StyleSheet.create({container:{flex:1},gameContainer:{flex:1},gameAreaContainer:{flex:1,justifyContent:'center',alignItems:'center',paddingHorizontal:10,paddingVertical:5}});
|
|
1
|
+
"use strict";import React,{useState,useEffect,useCallback,useRef,useMemo}from 'react';import{View,StyleSheet,Dimensions}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{calculateTimeBasedScore}from "../../services/ScoringService.js";import{MazeRunnerService}from "./MazeRunnerService.js";import{DEFAULT_MAZE_RUNNER_SETTINGS,MAZE_RUNNER_DIFFICULTY_CONFIG}from "./MazeRunnerConstants.js";import{GameBackground,ScoreBoard,EnhancedGameArea}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const useResponsiveDimensions =()=>{const [dimensions,setDimensions] = useState(()=>{const{width,height}= Dimensions.get('window');return{width,height};});useEffect(()=>{const handleDimensionChange =({window})=>{setDimensions(prev =>{if(prev.width !== window.width || prev.height !== window.height){return{width:window.width,height:window.height};}return prev;});};const subscription = Dimensions.addEventListener('change',handleDimensionChange);return()=> subscription?.remove();},[]);return dimensions;};export const MazeRunner =({settings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const{width:screenWidth,height:screenHeight}= useResponsiveDimensions();const gameReportedRef = useRef(false);const reportGameEnd = useCallback((status,currentScore)=>{if(onEndGame && !gameReportedRef.current){const difficultyConfig = MAZE_RUNNER_DIFFICULTY_CONFIG[settings.difficulty];const expectedTime = difficultyConfig.gameDuration;const calculatedScore = status === 'win' ? calculateTimeBasedScore(currentScore,expectedTime):0;onEndGame({status,score:calculatedScore.toString()});gameReportedRef.current = true;}},[onEndGame,settings.difficulty]);const responsiveDimensions = useMemo(()=>{const reservedHeight = 220;const availableHeight = screenHeight - reservedHeight;const availableWidth = screenWidth - 40;const maxDimension = Math.min(availableWidth,availableHeight);const gameAreaSize = Math.max(300,Math.min(maxDimension,600));return{width:gameAreaSize,height:gameAreaSize};},[screenWidth,screenHeight]);const gameService = useMemo(()=>{const currentSettings ={...DEFAULT_MAZE_RUNNER_SETTINGS,...settings};const{width:initialWidth,height:initialHeight}= Dimensions.get('window');const reservedHeight = 220;const availableHeight = initialHeight - reservedHeight;const availableWidth = initialWidth - 40;const maxDimension = Math.min(availableWidth,availableHeight);const gameAreaSize = Math.max(300,Math.min(maxDimension,600));return new MazeRunnerService(currentSettings.gridSize,gameAreaSize,gameAreaSize,currentSettings.gameDuration);},[]);const [gameState,setGameState] = useState(gameService.getGameState());const [showGameOverModal,setShowGameOverModal] = useState(false);const [walls,setWalls] = useState(()=> gameService.getWalls());const completionHandledRef = useRef(false);const gameConfig = useMemo(()=> gameService.getGameConfig(),[gameService,responsiveDimensions]);const gameControlButtonProps = useMemo(()=>({isPlaying:gameState.isPlaying,gameOver:gameState.isCompleted || gameState.gameOver,startButtonText:"START MAZE",stopButtonText:"STOP GAME",startButtonSubtext:"Navigate the maze!",stopButtonSubtext:"End current game",startButtonColor:"#8b4513",stopButtonColor:"#dc2626",startButtonBorderColor:"#cd853f",stopButtonBorderColor:"#f87171"}),[gameState.isPlaying,gameState.isCompleted,gameState.gameOver]);const gameOverModalProps = useMemo(()=>({isVisible:showGameOverModal,score:gameState.timeElapsed,scoreLabel:"Completion Time",scoreFormatter:time =>{const minutes = Math.floor(time / 60);const seconds = time % 60;return `${minutes}:${seconds.toString().padStart(2,'0')}`;},buttonText:gameState.isCompleted ? "Navigate Again!":"Try Again!",primaryColor:"rgba(139,69,19,0.5)",borderColor:"rgba(139,69,19,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#8b4513"}),[showGameOverModal,gameState.timeElapsed,gameState.isCompleted]);useEffect(()=>{gameService.resetGame();},[gameService]);useEffect(()=>{const difficultyConfig = MAZE_RUNNER_DIFFICULTY_CONFIG[settings.difficulty];const gridSize = difficultyConfig.gridSize;const gameDuration = difficultyConfig.gameDuration;gameService.updateSettings(gridSize,gameDuration,responsiveDimensions.width,responsiveDimensions.height);},[settings.difficulty,gameService,responsiveDimensions]);const handleStateChange = useCallback(newState =>{setGameState(()=>{if(newState.isCompleted && !completionHandledRef.current){completionHandledRef.current = true;handleGameCompleted();reportGameEnd('win',newState.timeElapsed);setTimeout(()=>{setShowGameOverModal(true);},500);}return newState;});setWalls(gameService.getWalls());},[gameService,reportGameEnd]);useEffect(()=>{gameService.setGameStateChangeCallback(handleStateChange);return()=>{try{gameService.stopGame();}catch{}try{gameService.resetGame();}catch{}gameService.cleanup();};},[gameService,handleStateChange]);const handleGameCompleted = useCallback(()=>{playSound(GAME_SOUNDS.MAZE_RUNNER.COMPLETE,settings.enableSounds);playHaptic(HapticType.SUCCESS,settings.enableHaptics);},[settings.enableSounds,settings.enableHaptics]);const handleStartGame = useCallback(()=>{gameReportedRef.current = false;completionHandledRef.current = false;gameService.startGame();setShowGameOverModal(false);playSound(GAME_SOUNDS.MAZE_RUNNER.START,settings.enableSounds);playHaptic(HapticType.MEDIUM,settings.enableHaptics);},[gameService,settings.enableSounds,settings.enableHaptics]);const handleStopGame = useCallback(()=>{reportGameEnd('cancel',gameState.timeElapsed);gameService.stopGame();playSound(GAME_SOUNDS.MAZE_RUNNER.STOP,settings.enableSounds);},[gameService,settings.enableSounds,reportGameEnd,gameState.timeElapsed]);const handleBallPositionChange = useCallback(position =>{return gameService.updateBallPosition(position);},[gameService]);const handlePlayAgain = useCallback(()=>{completionHandledRef.current = false;setShowGameOverModal(false);gameService.resetGame();},[gameService]);const offset = settings?.offset ?? 0;return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(View,{style:styles.gameContainer,children:[_jsx(GameBackground,{width:screenWidth,height:screenHeight}),_jsx(ScoreBoard,{gameState:gameState,offset:offset}),_jsx(View,{style:[styles.gameAreaContainer,{marginTop:offset}],children:_jsx(EnhancedGameArea,{gameState:gameState,gameConfig:gameConfig,walls:walls,onBallPositionChange:handleBallPositionChange,hapticEnabled:settings.enableHaptics})}),_jsx(GameControlButton,{...gameControlButtonProps,onStartGame:handleStartGame,onStopGame:handleStopGame}),_jsx(GameOverModal,{...gameOverModalProps,onPlayAgain:handlePlayAgain}),_jsx(GameSettingsModal,{gameId:GAME_IDS.MAZE_RUNNER,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]})})});};const styles = StyleSheet.create({container:{flex:1},gameContainer:{flex:1},gameAreaContainer:{flex:1,justifyContent:'center',alignItems:'center',paddingHorizontal:10,paddingVertical:5}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useEffect","useCallback","useRef","useMemo","View","StyleSheet","Dimensions","GestureHandlerRootView","playSound","GAME_SOUNDS","playHaptic","HapticType","MazeRunnerService","DEFAULT_MAZE_RUNNER_SETTINGS","MAZE_RUNNER_DIFFICULTY_CONFIG","GameBackground","ScoreBoard","EnhancedGameArea","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","useResponsiveDimensions","dimensions","setDimensions","width","height","get","handleDimensionChange","window","prev","subscription","addEventListener","remove","MazeRunner","settings","onSettingsChange","screenWidth","screenHeight","responsiveDimensions","reservedHeight","availableHeight","availableWidth","maxDimension","Math","min","gameAreaSize","max","gameService","currentSettings","initialWidth","initialHeight","gridSize","gameDuration","gameState","setGameState","getGameState","showGameOverModal","setShowGameOverModal","walls","setWalls","getWalls","completionHandledRef","gameConfig","getGameConfig","gameControlButtonProps","isPlaying","gameOver","isCompleted","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","score","timeElapsed","scoreLabel","scoreFormatter","time","minutes","floor","seconds","toString","padStart","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","resetGame","difficultyConfig","difficulty","updateSettings","handleStateChange","newState","current","handleGameCompleted","setTimeout","setGameStateChangeCallback","stopGame","cleanup","MAZE_RUNNER","COMPLETE","enableSounds","SUCCESS","enableHaptics","handleStartGame","startGame","START","MEDIUM","handleStopGame","STOP","handleBallPositionChange","position","updateBallPosition","handlePlayAgain","offset","style","styles","container","children","gameContainer","gameAreaContainer","marginTop","onBallPositionChange","hapticEnabled","onStartGame","onStopGame","onPlayAgain","gameId","create","flex","justifyContent","alignItems","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../src","sources":["games/maze-runner/MazeRunner.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","useCallback","useRef","useMemo","View","StyleSheet","Dimensions","GestureHandlerRootView","playSound","GAME_SOUNDS","playHaptic","HapticType","calculateTimeBasedScore","MazeRunnerService","DEFAULT_MAZE_RUNNER_SETTINGS","MAZE_RUNNER_DIFFICULTY_CONFIG","GameBackground","ScoreBoard","EnhancedGameArea","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","useResponsiveDimensions","dimensions","setDimensions","width","height","get","handleDimensionChange","window","prev","subscription","addEventListener","remove","MazeRunner","settings","onSettingsChange","onEndGame","screenWidth","screenHeight","gameReportedRef","reportGameEnd","status","currentScore","current","difficultyConfig","difficulty","expectedTime","gameDuration","calculatedScore","score","toString","responsiveDimensions","reservedHeight","availableHeight","availableWidth","maxDimension","Math","min","gameAreaSize","max","gameService","currentSettings","initialWidth","initialHeight","gridSize","gameState","setGameState","getGameState","showGameOverModal","setShowGameOverModal","walls","setWalls","getWalls","completionHandledRef","gameConfig","getGameConfig","gameControlButtonProps","isPlaying","gameOver","isCompleted","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","timeElapsed","scoreLabel","scoreFormatter","time","minutes","floor","seconds","padStart","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","resetGame","updateSettings","handleStateChange","newState","handleGameCompleted","setTimeout","setGameStateChangeCallback","stopGame","cleanup","MAZE_RUNNER","COMPLETE","enableSounds","SUCCESS","enableHaptics","handleStartGame","startGame","START","MEDIUM","handleStopGame","STOP","handleBallPositionChange","position","updateBallPosition","handlePlayAgain","offset","style","styles","container","children","gameContainer","gameAreaContainer","marginTop","onBallPositionChange","hapticEnabled","onStartGame","onStopGame","onPlayAgain","gameId","create","flex","justifyContent","alignItems","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../src","sources":["games/maze-runner/MazeRunner.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{GameControlButton,GameOverModal,GameSettingsModal}from "../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{usePerfectCircleStore,useIsPlaying,useGameOver,useGameWon,useAccuracy}from "./PerfectCircleStore.js";import{PerfectCircleService}from "./PerfectCircleService.js";import{PERFECT_CIRCLE_COLORS,getDifficultySettings,ACCURACY_LEVELS}from "./PerfectCircleConstants.js";import{GameBackground}from "./components/GameBackground.js";import{ScoreBoard}from "./components/ScoreBoard.js";import{DrawingCanvas}from "./components/DrawingCanvas.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const PerfectCircleComponent =({settings:externalSettings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const{difficulty,soundEnabled,hapticEnabled,offset}= React.useMemo(()=>({difficulty:externalSettings?.difficulty || 'medium',soundEnabled:externalSettings?.enableSounds ?? true,hapticEnabled:externalSettings?.enableHaptics ?? true,offset:externalSettings?.offset ?? 0}),[externalSettings?.difficulty,externalSettings?.enableSounds,externalSettings?.enableHaptics,externalSettings?.offset]);const isPlaying = useIsPlaying();const gameOver = useGameOver();const gameWon = useGameWon();const accuracy = useAccuracy();const gameReportedRef = React.useRef(false);const reportGameEnd = React.useCallback(status =>{if(onEndGame && !gameReportedRef.current){onEndGame({status,score:accuracy.toFixed(2)});gameReportedRef.current = true;}},[onEndGame,accuracy]);const resetGame = React.useCallback(()=> usePerfectCircleStore.getState().resetGame(),[]);const gameService = React.useMemo(()=> new PerfectCircleService(),[]);const difficultySettings = React.useMemo(()=> getDifficultySettings(difficulty),[difficulty]);const handleAccuracyCalculated = React.useCallback(calculatedAccuracy =>{if(calculatedAccuracy >= difficultySettings.minAccuracy){playSound(GAME_SOUNDS.PERFECT_CIRCLE.SUCCESS,soundEnabled);playHaptic(HapticType.SUCCESS,hapticEnabled);}else{playSound(GAME_SOUNDS.PERFECT_CIRCLE.FAIL,soundEnabled);playHaptic(HapticType.HEAVY,hapticEnabled);}},[soundEnabled,hapticEnabled,difficultySettings.minAccuracy]);React.useEffect(()=>{gameService.setCallbacks(handleAccuracyCalculated);},[gameService,handleAccuracyCalculated]);React.useEffect(()=>{if((gameOver || gameWon)&& !gameReportedRef.current){const status = gameWon ? 'win':'lose';reportGameEnd(status);}if(!gameOver && !gameWon){gameReportedRef.current = false;}},[gameOver,gameWon,reportGameEnd]);React.useEffect(()=>{return()=>{gameService.cleanup();usePerfectCircleStore.getState().resetGame();};},[gameService]);const handleStartGame = React.useCallback(()=>{gameReportedRef.current = false;gameService.startGame();playSound(GAME_SOUNDS.PERFECT_CIRCLE.START,soundEnabled);playHaptic(HapticType.SUCCESS,hapticEnabled);},[gameService,soundEnabled,hapticEnabled]);const handleStopGame = React.useCallback(()=>{reportGameEnd('cancel');resetGame();gameService.resetGame();},[resetGame,gameService,reportGameEnd]);const handleResetGame = React.useCallback(()=>{resetGame();gameService.resetGame();},[resetGame,gameService]);const handlePlayAgain = React.useCallback(()=>{handleResetGame();},[handleResetGame]);const accuracyLevel = React.useMemo(()=>{for(const level of Object.values(ACCURACY_LEVELS)){if(accuracy >= level.min){return level;}}return ACCURACY_LEVELS.POOR;},[accuracy]);const gameControlButtonProps = React.useMemo(()=>({isPlaying,gameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonColor:PERFECT_CIRCLE_COLORS.UI,stopButtonColor:PERFECT_CIRCLE_COLORS.UI,startButtonBorderColor:PERFECT_CIRCLE_COLORS.UI,stopButtonBorderColor:PERFECT_CIRCLE_COLORS.UI,startButtonText:'START DRAWING',stopButtonText:'STOP GAME',startButtonSubtext:'Draw the perfect circle!'}),[isPlaying,gameOver,handleStartGame,handleStopGame]);const gameOverModalProps = React.useMemo(()=>({isVisible:gameOver,score:accuracy,onPlayAgain:handlePlayAgain,buttonText:'Try Again',primaryColor:'rgba(0,212,255,0.85)',borderColor:PERFECT_CIRCLE_COLORS.UI,buttonColor:'#ffffff',buttonBorderColor:'#ffffff',buttonTextColor:PERFECT_CIRCLE_COLORS.UI,title:gameWon ? `${accuracyLevel.emoji}${accuracyLevel.label}`:'😔 NOT QUITE!',message:gameWon ? `${accuracy}% accuracy - Amazing circle!`:`${accuracy}% accuracy - Need >50% to win`}),[gameOver,accuracy,handlePlayAgain,gameWon,accuracyLevel]);return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{style:styles.gestureRoot,children:_jsxs(GameBackground,{offset:offset,children:[_jsx(ScoreBoard,{offset:offset}),_jsx(DrawingCanvas,{gameService:gameService,offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{gameId:GAME_IDS.PERFECT_CIRCLE,settings:{...DEFAULT_GAME_SETTINGS,...externalSettings},onSettingsChange:onSettingsChange})]})})});};const styles = StyleSheet.create({container:{flex:1},gestureRoot:{flex:1}});const arePropsEqual =(prevProps,nextProps)=>{return prevProps.settings?.difficulty === nextProps.settings?.difficulty && prevProps.settings?.enableSounds === nextProps.settings?.enableSounds && prevProps.settings?.enableHaptics === nextProps.settings?.enableHaptics && prevProps.settings?.offset === nextProps.settings?.offset && prevProps.settings?.isVisible === nextProps.settings?.isVisible && prevProps.onSettingsChange === nextProps.onSettingsChange;};export const PerfectCircle = React.memo(PerfectCircleComponent,arePropsEqual);PerfectCircle.displayName = 'PerfectCircle';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","GestureHandlerRootView","GameControlButton","GameOverModal","GameSettingsModal","DEFAULT_GAME_SETTINGS","GAME_IDS","playSound","GAME_SOUNDS","playHaptic","HapticType","usePerfectCircleStore","useIsPlaying","useGameOver","useGameWon","useAccuracy","PerfectCircleService","PERFECT_CIRCLE_COLORS","getDifficultySettings","ACCURACY_LEVELS","GameBackground","ScoreBoard","DrawingCanvas","jsx","_jsx","jsxs","_jsxs","PerfectCircleComponent","settings","externalSettings","onSettingsChange","onEndGame","difficulty","soundEnabled","hapticEnabled","offset","useMemo","enableSounds","enableHaptics","isPlaying","gameOver","gameWon","accuracy","gameReportedRef","useRef","reportGameEnd","useCallback","status","current","score","toFixed","resetGame","getState","gameService","difficultySettings","handleAccuracyCalculated","calculatedAccuracy","minAccuracy","PERFECT_CIRCLE","SUCCESS","FAIL","HEAVY","useEffect","setCallbacks","cleanup","handleStartGame","startGame","START","handleStopGame","handleResetGame","handlePlayAgain","accuracyLevel","level","Object","values","min","POOR","gameControlButtonProps","onStartGame","onStopGame","startButtonColor","UI","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","startButtonText","stopButtonText","startButtonSubtext","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","title","emoji","label","message","style","styles","container","children","gestureRoot","gameId","create","flex","arePropsEqual","prevProps","nextProps","PerfectCircle","memo","displayName"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/PerfectCircle.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const PERFECT_CIRCLE_DIFFICULTY_CONFIG ={easy:{minAccuracy:70},medium:{minAccuracy:80},hard:{minAccuracy:90}};export const getDifficultySettings = difficulty =>{return PERFECT_CIRCLE_DIFFICULTY_CONFIG[difficulty];};export const DEFAULT_PERFECT_CIRCLE_SETTINGS ={difficulty:'medium',soundEnabled:true,hapticEnabled:true,minAccuracy:PERFECT_CIRCLE_DIFFICULTY_CONFIG.medium.minAccuracy};export const PERFECT_CIRCLE_GAME_CONFIG ={MIN_POINTS:20,SAMPLE_POINTS:100,STROKE_WIDTH:4,GUIDE_CIRCLE_OPACITY:0.15};export const PERFECT_CIRCLE_COLORS ={BACKGROUND:'#1a1a2e',CANVAS:'#16213e',STROKE:'#00d4ff',GUIDE:'#ffffff',SUCCESS:'#4ecca3',FAIL:'#ff6b6b',UI:'#00d4ff',TEXT:'#ffffff'};export const PERFECT_CIRCLE_THEME ={backgroundColor:'rgba(0,0,0,0.7)',headerBackgroundColor:'#00d4ff',headerTextColor:'#ffffff',sectionBackgroundColor:'rgba(0,212,255,0.15)',sectionTitleColor:'#00d4ff',buttonSelectedColor:'#00d4ff',buttonUnselectedColor:'rgba(255,255,255,0.2)',buttonSelectedTextColor:'#ffffff',buttonUnselectedTextColor:'rgba(255,255,255,0.7)',switchTrackColorFalse:'rgba(0,212,255,0.3)',switchTrackColorTrue:'#00d4ff',switchThumbColor:'#ffffff',infoTextColor:'rgba(255,255,255,0.9)'};export const PERFECT_CIRCLE_DIFFICULTY_DESCRIPTIONS ={easy:'70% accuracy needed to win',medium:'80% accuracy needed to win',hard:'90% accuracy needed to win'};export const ACCURACY_LEVELS ={PERFECT:{min:95,label:'PERFECT!',emoji:'🎯'},EXCELLENT:{min:90,label:'EXCELLENT!',emoji:'⭐'},GREAT:{min:85,label:'GREAT!',emoji:'✨'},GOOD:{min:80,label:'GOOD!',emoji:'👍'},NICE:{min:70,label:'NICE TRY!',emoji:'👌'},POOR:{min:0,label:'KEEP TRYING!',emoji:'💪'}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PERFECT_CIRCLE_DIFFICULTY_CONFIG","easy","minAccuracy","medium","hard","getDifficultySettings","difficulty","DEFAULT_PERFECT_CIRCLE_SETTINGS","soundEnabled","hapticEnabled","PERFECT_CIRCLE_GAME_CONFIG","MIN_POINTS","SAMPLE_POINTS","STROKE_WIDTH","GUIDE_CIRCLE_OPACITY","PERFECT_CIRCLE_COLORS","BACKGROUND","CANVAS","STROKE","GUIDE","SUCCESS","FAIL","UI","TEXT","PERFECT_CIRCLE_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","PERFECT_CIRCLE_DIFFICULTY_DESCRIPTIONS","ACCURACY_LEVELS","PERFECT","min","label","emoji","EXCELLENT","GREAT","GOOD","NICE","POOR"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/PerfectCircleConstants.ts"],"mappings":";;AAEA;;AAQA;AACA,OAAO,MAAMA,gCAAgC,GAAG;EAC9CC,IAAI,EAAE;IACJC,WAAW,EAAE,EAAE,CAAE;EACnB,CAAC;EACDC,MAAM,EAAE;IACND,WAAW,EAAE,EAAE,CAAE;EACnB,CAAC;EACDE,IAAI,EAAE;IACJF,WAAW,EAAE,EAAE,CAAE;EACnB;AACF,CAAU;;AAEV;AACA,OAAO,MAAMG,qBAAqB,GAAIC,UAAsC,IAAK;EAC/E,OAAON,gCAAgC,CAACM,UAAU,CAAC;AACrD,CAAC;;AAED;AACA,OAAO,MAAMC,+BAAsD,GAAG;EACpED,UAAU,EAAE,QAAQ;EACpBE,YAAY,EAAE,IAAI;EAClBC,aAAa,EAAE,IAAI;EACnBP,WAAW,EAAEF,gCAAgC,CAACG,MAAM,CAACD;AACvD,CAAC;;AAED;AACA,OAAO,MAAMQ,0BAA0B,GAAG;EACxCC,UAAU,EAAE,EAAE;EAAE;EAChBC,aAAa,EAAE,GAAG;EAAE;EACpBC,YAAY,EAAE,CAAC;EAAE;EACjBC,oBAAoB,EAAE,IAAI,CAAE;AAC9B,CAAU;;AAEV;AACA,OAAO,MAAMC,qBAAqB,GAAG;EACnCC,UAAU,EAAE,SAAS;EACrBC,MAAM,EAAE,SAAS;EACjBC,MAAM,EAAE,SAAS;EACjBC,KAAK,EAAE,SAAS;EAChBC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE,SAAS;EACfC,EAAE,EAAE,SAAS;EACbC,IAAI,EAAE;AACR,CAAU;;AAEV;AACA,OAAO,MAAMC,oBAAuC,GAAG;EACrDC,eAAe,EAAE,oBAAoB;EACrCC,qBAAqB,EAAE,SAAS;EAChCC,eAAe,EAAE,SAAS;EAC1BC,sBAAsB,EAAE,yBAAyB;EACjDC,iBAAiB,EAAE,SAAS;EAC5BC,mBAAmB,EAAE,SAAS;EAC9BC,qBAAqB,EAAE,0BAA0B;EACjDC,uBAAuB,EAAE,SAAS;EAClCC,yBAAyB,EAAE,0BAA0B;EACrDC,qBAAqB,EAAE,wBAAwB;EAC/CC,oBAAoB,EAAE,SAAS;EAC/BC,gBAAgB,EAAE,SAAS;EAC3BC,aAAa,EAAE;AACjB,CAAC;;AAED;AACA,OAAO,MAAMC,sCAAsC,GAAG;EACpDrC,IAAI,EAAE,4BAA4B;EAClCE,MAAM,EAAE,4BAA4B;EACpCC,IAAI,EAAE;AACR,CAAU;;AAEV;AACA,OAAO,MAAMmC,eAAe,GAAG;EAC7BC,OAAO,EAAE;IAAEC,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,UAAU;IAAEC,KAAK,EAAE;EAAK,CAAC;EACpDC,SAAS,EAAE;IAAEH,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,YAAY;IAAEC,KAAK,EAAE;EAAI,CAAC;EACvDE,KAAK,EAAE;IAAEJ,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,QAAQ;IAAEC,KAAK,EAAE;EAAI,CAAC;EAC/CG,IAAI,EAAE;IAAEL,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,OAAO;IAAEC,KAAK,EAAE;EAAK,CAAC;EAC9CI,IAAI,EAAE;IAAEN,GAAG,EAAE,EAAE;IAAEC,KAAK,EAAE,WAAW;IAAEC,KAAK,EAAE;EAAK,CAAC;EAClDK,IAAI,EAAE;IAAEP,GAAG,EAAE,CAAC;IAAEC,KAAK,EAAE,cAAc;IAAEC,KAAK,EAAE;EAAK;AACrD,CAAU","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{usePerfectCircleStore}from "./PerfectCircleStore.js";import{PERFECT_CIRCLE_GAME_CONFIG}from "./PerfectCircleConstants.js";export class PerfectCircleService{constructor(){}setCallbacks(onAccuracyCalculated){this.onAccuracyCalculated = onAccuracyCalculated;}startGame(){const store = usePerfectCircleStore.getState();store.startGame();}stopGame(){usePerfectCircleStore.getState().stopGame();}resetGame(){usePerfectCircleStore.getState().resetGame();}cleanup(){}calculateCircleAccuracy(points){if(points.length < PERFECT_CIRCLE_GAME_CONFIG.MIN_POINTS){return 0;}const centerX = points.reduce((sum,p)=> sum + p.x,0)/ points.length;const centerY = points.reduce((sum,p)=> sum + p.y,0)/ points.length;const radii = points.map(p =>{const dx = p.x - centerX;const dy = p.y - centerY;return Math.sqrt(dx * dx + dy * dy);});const avgRadius = radii.reduce((sum,r)=> sum + r,0)/ radii.length;if(avgRadius === 0){return 0;}const variance = radii.reduce((sum,r)=> sum + Math.pow(r - avgRadius,2),0)/ radii.length;const stdDev = Math.sqrt(variance);const coefficientOfVariation = stdDev / avgRadius;const accuracy = 100 * Math.exp(-coefficientOfVariation * 2.5);return Math.round(accuracy);}evaluateDrawing(){const store = usePerfectCircleStore.getState();const points = store.drawnPoints;if(points.length < PERFECT_CIRCLE_GAME_CONFIG.MIN_POINTS){store.setAccuracy(0);store.setGameResult(false);return;}const accuracy = this.calculateCircleAccuracy(points);store.setAccuracy(accuracy);this.onAccuracyCalculated?.(accuracy);const won = accuracy > 50;store.setGameResult(won);}finishDrawing(){this.evaluateDrawing();}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["usePerfectCircleStore","PERFECT_CIRCLE_GAME_CONFIG","PerfectCircleService","constructor","setCallbacks","onAccuracyCalculated","startGame","store","getState","stopGame","resetGame","cleanup","calculateCircleAccuracy","points","length","MIN_POINTS","centerX","reduce","sum","p","x","centerY","y","radii","map","dx","dy","Math","sqrt","avgRadius","r","variance","pow","stdDev","coefficientOfVariation","accuracy","exp","round","evaluateDrawing","drawnPoints","setAccuracy","setGameResult","won","finishDrawing"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/PerfectCircleService.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{create}from 'zustand';import{subscribeWithSelector}from 'zustand/middleware';import{immerMiddleware}from "../../services/UtilsService.js";export const usePerfectCircleStore = create()(subscribeWithSelector(immerMiddleware(set =>({isPlaying:false,isDrawing:false,gameOver:false,gameWon:false,accuracy:0,drawnPoints:[],startPoint:null,startGame:()=>{set(draft =>{draft.isPlaying = true;draft.isDrawing = false;draft.gameOver = false;draft.gameWon = false;draft.accuracy = 0;draft.drawnPoints = [];draft.startPoint = null;});},stopGame:()=>{set(draft =>{draft.isPlaying = false;draft.isDrawing = false;});},resetGame:()=>{set(draft =>{draft.isPlaying = false;draft.isDrawing = false;draft.gameOver = false;draft.gameWon = false;draft.accuracy = 0;draft.drawnPoints = [];draft.startPoint = null;});},startDrawing:point =>{set(draft =>{draft.isDrawing = true;draft.startPoint = point;draft.drawnPoints = [point];});},addPoint:point =>{set(draft =>{draft.drawnPoints.push(point);});},finishDrawing:()=>{set(draft =>{draft.isDrawing = false;});},setAccuracy:accuracy =>{set(draft =>{draft.accuracy = accuracy;});},setGameResult:won =>{set(draft =>{draft.gameOver = true;draft.gameWon = won;draft.isPlaying = false;draft.isDrawing = false;});},clearDrawing:()=>{set(draft =>{draft.drawnPoints = [];draft.startPoint = null;draft.isDrawing = false;draft.accuracy = 0;});}}))));export const useIsPlaying =()=> usePerfectCircleStore(state => state.isPlaying);export const useIsDrawing =()=> usePerfectCircleStore(state => state.isDrawing);export const useGameOver =()=> usePerfectCircleStore(state => state.gameOver);export const useGameWon =()=> usePerfectCircleStore(state => state.gameWon);export const useAccuracy =()=> usePerfectCircleStore(state => state.accuracy);export const useDrawnPoints =()=> usePerfectCircleStore(state => state.drawnPoints);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["create","subscribeWithSelector","immerMiddleware","usePerfectCircleStore","set","isPlaying","isDrawing","gameOver","gameWon","accuracy","drawnPoints","startPoint","startGame","draft","stopGame","resetGame","startDrawing","point","addPoint","push","finishDrawing","setAccuracy","setGameResult","won","clearDrawing","useIsPlaying","state","useIsDrawing","useGameOver","useGameWon","useAccuracy","useDrawnPoints"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/PerfectCircleStore.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{View,Dimensions,StyleSheet}from 'react-native';import{Canvas,Path,Skia,Circle}from '@shopify/react-native-skia';import{Gesture,GestureDetector}from 'react-native-gesture-handler';import{runOnJS}from 'react-native-reanimated';import{usePerfectCircleStore,useDrawnPoints,useIsPlaying}from "../PerfectCircleStore.js";import{PERFECT_CIRCLE_COLORS,PERFECT_CIRCLE_GAME_CONFIG}from "../PerfectCircleConstants.js";import{playHaptic,HapticType}from "../../../services/HapticsService.js";import{playSound,GAME_SOUNDS}from "../../../services/SoundsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const GUIDE_CIRCLE_RADIUS = width / 2 - 20;const DrawingCanvasComponent =({gameService,offset = 0})=>{const drawnPoints = useDrawnPoints();const isPlaying = useIsPlaying();const path = React.useMemo(()=>{if(drawnPoints.length === 0)return null;const skPath = Skia.Path.Make();const firstPoint = drawnPoints[0];if(!firstPoint)return null;skPath.moveTo(firstPoint.x,firstPoint.y);for(let i = 1;i < drawnPoints.length;i++){const point = drawnPoints[i];if(point){skPath.lineTo(point.x,point.y);}}return skPath;},[drawnPoints]);const startDrawingJS = React.useCallback((x,y)=>{usePerfectCircleStore.getState().startDrawing({x,y});playHaptic(HapticType.LIGHT,true);},[]);const addPointJS = React.useCallback((x,y)=>{usePerfectCircleStore.getState().addPoint({x,y});},[]);const finishDrawingJS = React.useCallback(()=>{usePerfectCircleStore.getState().finishDrawing();playHaptic(HapticType.MEDIUM,true);playSound(GAME_SOUNDS.PERFECT_CIRCLE.DRAW_END,true);gameService.finishDrawing();},[gameService]);const panGesture = React.useMemo(()=> Gesture.Pan().onStart(event =>{'worklet';if(isPlaying){runOnJS(startDrawingJS)(event.x,event.y);}}).onUpdate(event =>{'worklet';if(isPlaying){runOnJS(addPointJS)(event.x,event.y);}}).onEnd(()=>{'worklet';if(isPlaying){runOnJS(finishDrawingJS)();}}),[isPlaying,startDrawingJS,addPointJS,finishDrawingJS]);const{circleCenterX,circleCenterY}= React.useMemo(()=>{const canvasHeight = height - offset + 100 - 350;return{circleCenterX:width / 2,circleCenterY:canvasHeight / 2};},[offset]);return _jsx(View,{style:[styles.container,{top:offset + 260}],children:_jsx(GestureDetector,{gesture:panGesture,children:_jsxs(Canvas,{style:styles.canvas,children:[_jsx(Circle,{cx:circleCenterX,cy:circleCenterY,r:GUIDE_CIRCLE_RADIUS,color:PERFECT_CIRCLE_COLORS.GUIDE,opacity:PERFECT_CIRCLE_GAME_CONFIG.GUIDE_CIRCLE_OPACITY,style:"stroke",strokeWidth:2}),path && _jsx(Path,{path:path,color:PERFECT_CIRCLE_COLORS.STROKE,style:"stroke",strokeWidth:PERFECT_CIRCLE_GAME_CONFIG.STROKE_WIDTH,strokeCap:"round",strokeJoin:"round"})]})})});};const styles = StyleSheet.create({container:{position:'absolute',left:0,right:0,bottom:250,justifyContent:'center',alignItems:'center'},canvas:{width,height:height - 350,justifyContent:'center',alignItems:'center'}});const arePropsEqual =(prevProps,nextProps)=>{return prevProps.offset === nextProps.offset && prevProps.gameService === nextProps.gameService;};export const DrawingCanvas = React.memo(DrawingCanvasComponent,arePropsEqual);DrawingCanvas.displayName = 'DrawingCanvas';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Dimensions","StyleSheet","Canvas","Path","Skia","Circle","Gesture","GestureDetector","runOnJS","usePerfectCircleStore","useDrawnPoints","useIsPlaying","PERFECT_CIRCLE_COLORS","PERFECT_CIRCLE_GAME_CONFIG","playHaptic","HapticType","playSound","GAME_SOUNDS","jsx","_jsx","jsxs","_jsxs","width","height","get","GUIDE_CIRCLE_RADIUS","DrawingCanvasComponent","gameService","offset","drawnPoints","isPlaying","path","useMemo","length","skPath","Make","firstPoint","moveTo","x","y","i","point","lineTo","startDrawingJS","useCallback","getState","startDrawing","LIGHT","addPointJS","addPoint","finishDrawingJS","finishDrawing","MEDIUM","PERFECT_CIRCLE","DRAW_END","panGesture","Pan","onStart","event","onUpdate","onEnd","circleCenterX","circleCenterY","canvasHeight","style","styles","container","top","children","gesture","canvas","cx","cy","r","color","GUIDE","opacity","GUIDE_CIRCLE_OPACITY","strokeWidth","STROKE","STROKE_WIDTH","strokeCap","strokeJoin","create","position","left","right","bottom","justifyContent","alignItems","arePropsEqual","prevProps","nextProps","DrawingCanvas","memo","displayName"],"sourceRoot":"../../../../../src","sources":["games/perfect-circle/components/DrawingCanvas.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{View,Dimensions}from 'react-native';import{Canvas,LinearGradient,Rect,vec,Circle}from '@shopify/react-native-skia';import{PERFECT_CIRCLE_COLORS}from "../PerfectCircleConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const verticalGridLines = Array.from({length:Math.floor(width / 80)},(_,i)=> i);const horizontalGridLines = Array.from({length:Math.floor(height / 80)},(_,i)=> i);export const GameBackground = React.memo(({children})=>{const decorativeCircles = React.useMemo(()=>{const circles = [];const circleCount = 15;for(let i = 0;i < circleCount;i++){const x = width / circleCount * i + Math.random()* 100;const y = height / circleCount * i + Math.random()* 100;const size = 20 + Math.random()* 40;const opacity = 0.05 + Math.random()* 0.1;circles.push(_jsx(Circle,{cx:x,cy:y,r:size,color:`${PERFECT_CIRCLE_COLORS.GUIDE}${Math.floor(opacity * 255).toString(16).padStart(2,'0')}`},`circle-${i}`));}return circles;},[]);return _jsxs(View,{style:{flex:1},children:[_jsxs(Canvas,{style:{position:'absolute',top:0,left:0,right:0,bottom:0,width,height},children:[_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width,height),colors:[PERFECT_CIRCLE_COLORS.BACKGROUND,PERFECT_CIRCLE_COLORS.CANVAS,PERFECT_CIRCLE_COLORS.BACKGROUND]})}),_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(width / 2,height / 2),end:vec(width,height),colors:['rgba(0,212,255,0.1)','transparent','rgba(0,212,255,0.05)']})}),decorativeCircles,verticalGridLines.map(i => _jsx(Rect,{x:i * 80,y:0,width:1,height:height,color:"rgba(255,255,255,0.03)"},`grid-v-${i}`)),horizontalGridLines.map(i => _jsx(Rect,{x:0,y:i * 80,width:width,height:1,color:"rgba(255,255,255,0.03)"},`grid-h-${i}`))]}),children]});});GameBackground.displayName = 'GameBackground';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Dimensions","Canvas","LinearGradient","Rect","vec","Circle","PERFECT_CIRCLE_COLORS","jsx","_jsx","jsxs","_jsxs","width","height","get","verticalGridLines","Array","from","length","Math","floor","_","i","horizontalGridLines","GameBackground","memo","children","decorativeCircles","useMemo","circles","circleCount","x","random","y","size","opacity","push","cx","cy","r","color","GUIDE","toString","padStart","style","flex","position","top","left","right","bottom","start","end","colors","BACKGROUND","CANVAS","map","displayName"],"sourceRoot":"../../../../../src","sources":["games/perfect-circle/components/GameBackground.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{View,Text,StyleSheet}from 'react-native';import{useAccuracy}from "../PerfectCircleStore.js";import{PERFECT_CIRCLE_COLORS}from "../PerfectCircleConstants.js";import{ScoreBoardContainer}from "../../../helpers/index.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const ScoreBoard = React.memo(({offset = 0})=>{const accuracy = useAccuracy();return _jsx(ScoreBoardContainer,{offset:offset,backgroundColor:"rgba(0,212,255,0.3)",borderColor:PERFECT_CIRCLE_COLORS.UI,children:_jsx(View,{style:styles.scoreBoard,children:_jsxs(View,{style:styles.scoreSection,children:[_jsx(Text,{style:styles.scoreLabel,children:"Accuracy"}),_jsx(Text,{style:[styles.scoreValue,accuracy > 0 && styles.accuracyActive],children:accuracy})]})})});});ScoreBoard.displayName = 'ScoreBoard';const styles = StyleSheet.create({scoreBoard:{flexDirection:'row',justifyContent:'center',alignItems:'center'},scoreSection:{alignItems:'center',flex:1},scoreLabel:{fontSize:16,fontWeight:'bold',color:PERFECT_CIRCLE_COLORS.TEXT,marginBottom:4},scoreValue:{fontSize:25,fontWeight:'bold',color:PERFECT_CIRCLE_COLORS.TEXT},accuracyActive:{color:PERFECT_CIRCLE_COLORS.UI}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Text","StyleSheet","useAccuracy","PERFECT_CIRCLE_COLORS","ScoreBoardContainer","jsx","_jsx","jsxs","_jsxs","ScoreBoard","memo","offset","accuracy","backgroundColor","borderColor","UI","children","style","styles","scoreBoard","scoreSection","scoreLabel","scoreValue","accuracyActive","displayName","create","flexDirection","justifyContent","alignItems","flex","fontSize","fontWeight","color","TEXT","marginBottom"],"sourceRoot":"../../../../../src","sources":["games/perfect-circle/components/ScoreBoard.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AACrD,SAASC,WAAW,QAAQ,0BAAuB;AACnD,SAASC,qBAAqB,QAAQ,8BAA2B;AACjE,SAASC,mBAAmB,QAAQ,2BAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMvD,OAAO,MAAMC,UAAqC,gBAAGX,KAAK,CAACY,IAAI,CAAC,CAAC;EAAEC,MAAM,GAAG;AAAE,CAAC,KAAK;EAClF;EACA,MAAMC,QAAQ,GAAGV,WAAW,CAAC,CAAC;EAE9B,oBACEI,IAAA,CAACF,mBAAmB;IAClBO,MAAM,EAAEA,MAAO;IACfE,eAAe,EAAC,wBAAwB;IACxCC,WAAW,EAAEX,qBAAqB,CAACY,EAAG;IAAAC,QAAA,eAEtCV,IAAA,CAACP,IAAI;MAACkB,KAAK,EAAEC,MAAM,CAACC,UAAW;MAAAH,QAAA,eAC7BR,KAAA,CAACT,IAAI;QAACkB,KAAK,EAAEC,MAAM,CAACE,YAAa;QAAAJ,QAAA,gBAC/BV,IAAA,CAACN,IAAI;UAACiB,KAAK,EAAEC,MAAM,CAACG,UAAW;UAAAL,QAAA,EAAC;QAAQ,CAAM,CAAC,eAC/CV,IAAA,CAACN,IAAI;UAACiB,KAAK,EAAE,CAACC,MAAM,CAACI,UAAU,EAAEV,QAAQ,GAAG,CAAC,IAAIM,MAAM,CAACK,cAAc,CAAE;UAAAP,QAAA,EACrEJ;QAAQ,CACL,CAAC;MAAA,CACH;IAAC,CACH;EAAC,CACY,CAAC;AAE1B,CAAC,CAAC;AAEFH,UAAU,CAACe,WAAW,GAAG,YAAY;AAErC,MAAMN,MAAM,GAAGjB,UAAU,CAACwB,MAAM,CAAC;EAC/BN,UAAU,EAAE;IACVO,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd,CAAC;EACDR,YAAY,EAAE;IACZQ,UAAU,EAAE,QAAQ;IACpBC,IAAI,EAAE;EACR,CAAC;EACDR,UAAU,EAAE;IACVS,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE7B,qBAAqB,CAAC8B,IAAI;IACjCC,YAAY,EAAE;EAChB,CAAC;EACDZ,UAAU,EAAE;IACVQ,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE7B,qBAAqB,CAAC8B;EAC/B,CAAC;EACDV,cAAc,EAAE;IACdS,KAAK,EAAE7B,qBAAqB,CAACY;EAC/B;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export{PerfectCircle}from "./PerfectCircle.js";export{PERFECT_CIRCLE_THEME}from "./PerfectCircleConstants.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PerfectCircle","PERFECT_CIRCLE_THEME"],"sourceRoot":"../../../../src","sources":["games/perfect-circle/index.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,oBAAoB,QAAQ,6BAA0B","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import React,{useEffect,useRef,useCallback,useMemo}from 'react';import{View,StyleSheet,Dimensions}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{usePopitFidgetStore}from "./PopitFidgetStore.js";import{PopitFidgetService}from "./PopitFidgetService.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{GameBackground,FidgetGrid as FidgetGridComponent,ScoreBoard}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const PopitFidget =({settings,onSettingsChange})=>{const fidgetGrid = usePopitFidgetStore(state => state.fidgetGrid);const timeElapsed = usePopitFidgetStore(state => state.timeElapsed);const isPlaying = usePopitFidgetStore(state => state.isPlaying);const gameOver = usePopitFidgetStore(state => state.gameOver);const gameWon = usePopitFidgetStore(state => state.gameWon);const startGame = usePopitFidgetStore(state => state.startGame);const resetGame = usePopitFidgetStore(state => state.resetGame);const setFidgetGrid = usePopitFidgetStore(state => state.setFidgetGrid);const popBubble = usePopitFidgetStore(state => state.popBubble);const incrementTime = usePopitFidgetStore(state => state.incrementTime);const serviceRef = useRef(null);
|
|
1
|
+
"use strict";import React,{useEffect,useRef,useCallback,useMemo}from 'react';import{View,StyleSheet,Dimensions}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{usePopitFidgetStore}from "./PopitFidgetStore.js";import{PopitFidgetService}from "./PopitFidgetService.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{calculateTimeBasedScore}from "../../services/ScoringService.js";import{GameBackground,FidgetGrid as FidgetGridComponent,ScoreBoard}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const PopitFidget =({settings,onSettingsChange,onEndGame})=>{const fidgetGrid = usePopitFidgetStore(state => state.fidgetGrid);const timeElapsed = usePopitFidgetStore(state => state.timeElapsed);const isPlaying = usePopitFidgetStore(state => state.isPlaying);const gameOver = usePopitFidgetStore(state => state.gameOver);const gameWon = usePopitFidgetStore(state => state.gameWon);const gameReportedRef = useRef(false);const{difficulty = 'medium',enableSounds = true,enableHaptics = true}= settings ||{};const reportGameEnd = useCallback((status,currentTime)=>{if(onEndGame && !gameReportedRef.current){const expectedTimes ={easy:30,medium:45,hard:60};const expectedTime = expectedTimes[difficulty];const calculatedScore = status === 'win' ? calculateTimeBasedScore(currentTime,expectedTime):0;onEndGame({status,score:calculatedScore.toString()});gameReportedRef.current = true;}},[onEndGame,difficulty]);const startGame = usePopitFidgetStore(state => state.startGame);const resetGame = usePopitFidgetStore(state => state.resetGame);const setFidgetGrid = usePopitFidgetStore(state => state.setFidgetGrid);const popBubble = usePopitFidgetStore(state => state.popBubble);const incrementTime = usePopitFidgetStore(state => state.incrementTime);const serviceRef = useRef(null);useEffect(()=>{if(!serviceRef.current){serviceRef.current = new PopitFidgetService();}if(serviceRef.current && !fidgetGrid){const grid = serviceRef.current.generateFidgetGrid(difficulty);setFidgetGrid(grid);}},[fidgetGrid,setFidgetGrid,difficulty]);useEffect(()=>{return()=>{try{serviceRef.current?.stopGameTimer();}catch{}try{resetGame();}catch{}try{serviceRef.current?.cleanup();}catch{}};},[]);const service = useMemo(()=>{if(!serviceRef.current){serviceRef.current = new PopitFidgetService();}return serviceRef.current;},[]);const generateNewFidget = useCallback(()=>{const grid = service.generateFidgetGrid(difficulty);setFidgetGrid(grid);},[service,setFidgetGrid,difficulty]);const prevDifficultyRef = React.useRef(difficulty);const handleDifficultyChange = useCallback(()=>{if(prevDifficultyRef.current !== difficulty){if(!isPlaying){generateNewFidget();}prevDifficultyRef.current = difficulty;}},[difficulty,isPlaying,generateNewFidget]);useEffect(()=>{handleDifficultyChange();},[handleDifficultyChange]);React.useEffect(()=>{if(gameOver && !isPlaying && !gameReportedRef.current){if(gameWon){playSound(GAME_SOUNDS.BUBBLE_POPPER.COMPLETE,enableSounds);reportGameEnd('win',timeElapsed);}else{playSound(GAME_SOUNDS.TIME_UP,enableSounds);reportGameEnd('lose',timeElapsed);}}if(!gameOver){gameReportedRef.current = false;}},[gameOver,gameWon,isPlaying,enableSounds,reportGameEnd,timeElapsed]);useEffect(()=>{let timerInterval = null;if(isPlaying){timerInterval = setInterval(()=>{incrementTime();},1000);}return()=>{if(timerInterval){clearInterval(timerInterval);}};},[isPlaying,incrementTime]);const startGameHandler = useCallback(()=>{gameReportedRef.current = false;generateNewFidget();playSound(GAME_SOUNDS.BUBBLE_POPPER.START,enableSounds);startGame();playHaptic(HapticType.MEDIUM,enableHaptics);},[startGame,enableSounds,enableHaptics,generateNewFidget]);const stopGameHandler = useCallback(()=>{reportGameEnd('cancel',timeElapsed);service.stopGameTimer();resetGame();generateNewFidget();},[service,resetGame,generateNewFidget,reportGameEnd,timeElapsed]);const resetGameHandler = useCallback(()=>{service.stopGameTimer();resetGame();generateNewFidget();},[service,resetGame,generateNewFidget]);const handleBubblePop = useCallback((row,col)=>{if(!fidgetGrid)return;const bubble = fidgetGrid.bubbles[row]?.[col];if(!bubble || bubble.isPopped)return;playSound(GAME_SOUNDS.BUBBLE_POPPER.POP,enableSounds);popBubble(row,col);playHaptic(HapticType.LIGHT,enableHaptics);},[fidgetGrid,popBubble,enableSounds,enableHaptics]);const screenDimensions = useMemo(()=>({width,height}),[]);const bubbleSize = useMemo(()=>{if(!fidgetGrid)return 60;const availableWidth = screenDimensions.width * 0.85;const availableHeight = screenDimensions.height * 0.6;const maxSize = Math.min(availableWidth / fidgetGrid.size,availableHeight / fidgetGrid.size);return Math.max(45,Math.min(80,maxSize * 0.9));},[fidgetGrid,screenDimensions]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver,onStartGame:startGameHandler,onStopGame:stopGameHandler,startButtonText:"START POPPING",stopButtonText:"STOP GAME",startButtonSubtext:"Pop bubbles to relax!",stopButtonSubtext:"End current game",startButtonColor:"#9c27b0",stopButtonColor:"#dc2626",startButtonBorderColor:"#ce93d8",stopButtonBorderColor:"#f87171"}),[isPlaying,gameOver,startGameHandler,stopGameHandler]);const gameOverModalProps = useMemo(()=>({isVisible:gameOver,score:timeElapsed,onPlayAgain:resetGameHandler,buttonText:"Pop Again!",primaryColor:"rgba(156,39,176,0.5)",borderColor:"rgba(156,39,176,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#9c27b0",scoreFormatter:time =>{const mins = Math.floor(time / 60);const secs = time % 60;return `${mins.toString().padStart(2,'0')}:${secs.toString().padStart(2,'0')}`;},scoreLabel:"Time Elapsed"}),[gameOver,timeElapsed,resetGameHandler]);const offset = settings?.offset ?? 0;return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(View,{style:[styles.gameContainer,{paddingTop:offset}],children:[_jsx(GameBackground,{width:screenDimensions.width,height:screenDimensions.height,isPlaying:isPlaying}),_jsx(ScoreBoard,{timeElapsed:timeElapsed,offset:offset}),_jsx(View,{style:styles.gameArea,children:fidgetGrid && _jsx(FidgetGridComponent,{grid:fidgetGrid,bubbleSize:bubbleSize,onBubblePop:handleBubblePop,hapticEnabled:enableHaptics,isPlaying:isPlaying})}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{gameId:GAME_IDS.POPIT_FIDGET,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]})})});};const styles = StyleSheet.create({container:{flex:1},gameContainer:{flex:1,backgroundColor:'#fef7ff'},gameArea:{flex:1,justifyContent:'center',alignItems:'center',paddingHorizontal:20}});export{PopitFidget};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","useCallback","useMemo","View","StyleSheet","Dimensions","GestureHandlerRootView","usePopitFidgetStore","PopitFidgetService","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","GameBackground","FidgetGrid","FidgetGridComponent","ScoreBoard","GameControlButton","GameOverModal","GameSettingsModal","jsx","_jsx","jsxs","_jsxs","width","height","get","PopitFidget","settings","onSettingsChange","fidgetGrid","state","timeElapsed","isPlaying","gameOver","gameWon","startGame","resetGame","setFidgetGrid","popBubble","incrementTime","serviceRef","difficulty","enableSounds","enableHaptics","current","grid","generateFidgetGrid","stopGameTimer","cleanup","service","generateNewFidget","prevDifficultyRef","handleDifficultyChange","BUBBLE_POPPER","COMPLETE","TIME_UP","timerInterval","setInterval","clearInterval","startGameHandler","START","MEDIUM","stopGameHandler","resetGameHandler","handleBubblePop","row","col","bubble","bubbles","isPopped","POP","LIGHT","screenDimensions","bubbleSize","availableWidth","availableHeight","maxSize","Math","min","size","max","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","score","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreFormatter","time","mins","floor","secs","toString","padStart","scoreLabel","offset","style","styles","container","children","gameContainer","paddingTop","gameArea","onBubblePop","hapticEnabled","gameId","POPIT_FIDGET","create","flex","backgroundColor","justifyContent","alignItems","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["games/popit-fidget/PopitFidget.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useCallback","useMemo","View","StyleSheet","Dimensions","GestureHandlerRootView","usePopitFidgetStore","PopitFidgetService","GAME_IDS","DEFAULT_GAME_SETTINGS","playSound","GAME_SOUNDS","playHaptic","HapticType","calculateTimeBasedScore","GameBackground","FidgetGrid","FidgetGridComponent","ScoreBoard","GameControlButton","GameOverModal","GameSettingsModal","jsx","_jsx","jsxs","_jsxs","width","height","get","PopitFidget","settings","onSettingsChange","onEndGame","fidgetGrid","state","timeElapsed","isPlaying","gameOver","gameWon","gameReportedRef","difficulty","enableSounds","enableHaptics","reportGameEnd","status","currentTime","current","expectedTimes","easy","medium","hard","expectedTime","calculatedScore","score","toString","startGame","resetGame","setFidgetGrid","popBubble","incrementTime","serviceRef","grid","generateFidgetGrid","stopGameTimer","cleanup","service","generateNewFidget","prevDifficultyRef","handleDifficultyChange","BUBBLE_POPPER","COMPLETE","TIME_UP","timerInterval","setInterval","clearInterval","startGameHandler","START","MEDIUM","stopGameHandler","resetGameHandler","handleBubblePop","row","col","bubble","bubbles","isPopped","POP","LIGHT","screenDimensions","bubbleSize","availableWidth","availableHeight","maxSize","Math","min","size","max","gameControlButtonProps","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreFormatter","time","mins","floor","secs","padStart","scoreLabel","offset","style","styles","container","children","gameContainer","paddingTop","gameArea","onBubblePop","hapticEnabled","gameId","POPIT_FIDGET","create","flex","backgroundColor","justifyContent","alignItems","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["games/popit-fidget/PopitFidget.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import React,{useEffect,useMemo,useCallback}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useSlidingNumbersStore}from "./SlidingNumbersStore.js";import{SlidingNumbersService}from "./SlidingNumbersService.js";import{GameBackground,NumbersGrid,ScoreBoard}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{SLIDING_NUMBERS_COLORS}from "./SlidingNumbersConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const SlidingNumbers = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange})=>{const isPlaying = useSlidingNumbersStore(state => state.isPlaying);const isCompleted = useSlidingNumbersStore(state => state.isCompleted);const
|
|
1
|
+
"use strict";import React,{useEffect,useMemo,useCallback}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useSlidingNumbersStore}from "./SlidingNumbersStore.js";import{SlidingNumbersService}from "./SlidingNumbersService.js";import{GameBackground,NumbersGrid,ScoreBoard}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{SLIDING_NUMBERS_COLORS}from "./SlidingNumbersConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{calculateTimeBasedScore}from "../../services/ScoringService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const SlidingNumbers = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const score = useSlidingNumbersStore(state => state.score);const timeElapsed = useSlidingNumbersStore(state => state.timeElapsed);const isPlaying = useSlidingNumbersStore(state => state.isPlaying);const isCompleted = useSlidingNumbersStore(state => state.isCompleted);const gameReportedRef = React.useRef(false);const difficulty = settings?.difficulty || 'easy';const reportGameEnd = React.useCallback(status =>{if(onEndGame && !gameReportedRef.current){const expectedTimes ={easy:120,medium:180,hard:240};const expectedTime = expectedTimes[difficulty];const calculatedScore = status === 'win' ? calculateTimeBasedScore(timeElapsed,expectedTime):0;onEndGame({status,score:calculatedScore.toString()});gameReportedRef.current = true;}},[onEndGame,timeElapsed,difficulty]);const initializePuzzle = useSlidingNumbersStore(state => state.initializePuzzle);const shufflePuzzle = useSlidingNumbersStore(state => state.shufflePuzzle);const startGame = useSlidingNumbersStore(state => state.startGame);const stopGame = useSlidingNumbersStore(state => state.stopGame);const resetGame = useSlidingNumbersStore(state => state.resetGame);const decrementTime = useSlidingNumbersStore(state => state.decrementTime);const gameService = useMemo(()=> new SlidingNumbersService(),[]);const difficultySettings = useMemo(()=> gameService.getDifficultySettings(difficulty),[gameService,difficulty]);useEffect(()=>{initializePuzzle(difficultySettings.gridSize);},[difficulty,difficultySettings.gridSize,initializePuzzle]);useEffect(()=>{if(isPlaying){gameService.startTimer(()=>{decrementTime();});}else{gameService.stopTimer();}return()=>{gameService.stopTimer();};},[isPlaying,gameService,decrementTime]);useEffect(()=>{if(isCompleted && !gameReportedRef.current){reportGameEnd('win');}if(!isCompleted){gameReportedRef.current = false;}},[isCompleted,reportGameEnd]);useEffect(()=>{return()=>{gameService.cleanup();};},[gameService]);const handleStartGame = useCallback(()=>{gameReportedRef.current = false;shufflePuzzle();startGame();},[shufflePuzzle,startGame]);const handleStopGame = useCallback(()=>{reportGameEnd('cancel');stopGame();},[stopGame,reportGameEnd]);const handleResetGame = useCallback(()=>{resetGame();initializePuzzle(difficultySettings.gridSize);},[resetGame,initializePuzzle,difficultySettings.gridSize]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isCompleted,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START GAME",stopButtonText:"STOP GAME",startButtonSubtext:"Shuffle and begin solving!",stopButtonSubtext:"End current game",startButtonColor:SLIDING_NUMBERS_COLORS.START_BUTTON,stopButtonColor:"#dc2626",startButtonBorderColor:SLIDING_NUMBERS_COLORS.BUTTON_BORDER,stopButtonBorderColor:"#f87171"}),[isPlaying,isCompleted,handleStartGame,handleStopGame]);const gameOverModalProps = useMemo(()=>({isVisible:isCompleted,score,onPlayAgain:handleResetGame,buttonText:"Play Again!",primaryColor:"rgba(245,158,11,0.5)",borderColor:"rgba(245,158,11,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#f59e0b"}),[isCompleted,score,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.SLIDING_NUMBERS,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const dynamicStyles = useMemo(()=>({gameArea:{...styles.gameArea,marginTop:offset}}),[offset]);return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(GameBackground,{children:[_jsx(View,{style:dynamicStyles.gameArea,children:_jsx(NumbersGrid,{difficulty:difficulty})}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})});});const styles = StyleSheet.create({container:{flex:1,backgroundColor:SLIDING_NUMBERS_COLORS.BACKGROUND},gameArea:{flex:1,justifyContent:'center',alignItems:'center'}});SlidingNumbers.displayName = 'SlidingNumbers';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","useCallback","View","StyleSheet","GestureHandlerRootView","useSlidingNumbersStore","SlidingNumbersService","GameBackground","NumbersGrid","ScoreBoard","GameControlButton","GameOverModal","GameSettingsModal","SLIDING_NUMBERS_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","SlidingNumbers","memo","settings","onSettingsChange","
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","useCallback","View","StyleSheet","GestureHandlerRootView","useSlidingNumbersStore","SlidingNumbersService","GameBackground","NumbersGrid","ScoreBoard","GameControlButton","GameOverModal","GameSettingsModal","SLIDING_NUMBERS_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","calculateTimeBasedScore","jsx","_jsx","jsxs","_jsxs","SlidingNumbers","memo","settings","onSettingsChange","onEndGame","score","state","timeElapsed","isPlaying","isCompleted","gameReportedRef","useRef","difficulty","reportGameEnd","status","current","expectedTimes","easy","medium","hard","expectedTime","calculatedScore","toString","initializePuzzle","shufflePuzzle","startGame","stopGame","resetGame","decrementTime","gameService","difficultySettings","getDifficultySettings","gridSize","startTimer","stopTimer","cleanup","handleStartGame","handleStopGame","handleResetGame","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","START_BUTTON","stopButtonColor","startButtonBorderColor","BUTTON_BORDER","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","gameSettingsModalProps","gameId","SLIDING_NUMBERS","offset","dynamicStyles","gameArea","styles","marginTop","style","container","children","create","flex","backgroundColor","BACKGROUND","justifyContent","alignItems","displayName"],"sourceRoot":"../../../../src","sources":["games/sliding-numbers/SlidingNumbers.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,OAAO,EAAEC,WAAW,QAAQ,OAAO;AAC9D,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,sBAAsB,QAAQ,0BAAuB;AAC9D,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,cAAc,EAAEC,WAAW,EAAEC,UAAU,QAAQ,uBAAc;AACtE,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,wBAAe;AAChE,SAASC,iBAAiB,QAAQ,wBAAe;AACjD,SAASC,sBAAsB,QAAQ,8BAA2B;AAClE,SAASC,QAAQ,EAAkBC,qBAAqB,QAAQ,gCAA6B;AAC7F,SAASC,uBAAuB,QAAQ,kCAA+B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AACxE,OAAO,MAAMC,cAAmC,gBAAGvB,KAAK,CAACwB,IAAI,CAAC,CAAC;EAC7DC,QAAQ,GAAGR,qBAAqB;EAChCS,gBAAgB;EAChBC;AACF,CAAC,KAAK;EACJ;EACA,MAAMC,KAAK,GAAGrB,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACD,KAAK,CAAC;EAC1D,MAAME,WAAW,GAAGvB,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACC,WAAW,CAAC;EACtE,MAAMC,SAAS,GAAGxB,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACE,SAAS,CAAC;EAClE,MAAMC,WAAW,GAAGzB,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACG,WAAW,CAAC;;EAEtE;EACA,MAAMC,eAAe,GAAGjC,KAAK,CAACkC,MAAM,CAAU,KAAK,CAAC;;EAEpD;EACA,MAAMC,UAAU,GAAGV,QAAQ,EAAEU,UAAU,IAAI,MAAM;;EAEjD;EACA,MAAMC,aAAa,GAAGpC,KAAK,CAACG,WAAW,CAAEkC,MAAiC,IAAK;IAC7E,IAAIV,SAAS,IAAI,CAACM,eAAe,CAACK,OAAO,EAAE;MACzC;MACA;MACA;MACA,MAAMC,aAAa,GAAG;QAAEC,IAAI,EAAE,GAAG;QAAEC,MAAM,EAAE,GAAG;QAAEC,IAAI,EAAE;MAAI,CAAC;MAC3D,MAAMC,YAAY,GAAGJ,aAAa,CAACJ,UAAU,CAAC;MAE9C,MAAMS,eAAe,GAAGP,MAAM,KAAK,KAAK,GACpCnB,uBAAuB,CAACY,WAAW,EAAEa,YAAY,CAAC,GAClD,CAAC;MAELhB,SAAS,CAAC;QACRU,MAAM;QACNT,KAAK,EAAEgB,eAAe,CAACC,QAAQ,CAAC;MAClC,CAAC,CAAC;MACFZ,eAAe,CAACK,OAAO,GAAG,IAAI;IAChC;EACF,CAAC,EAAE,CAACX,SAAS,EAAEG,WAAW,EAAEK,UAAU,CAAC,CAAC;;EAExC;EACA,MAAMW,gBAAgB,GAAGvC,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACiB,gBAAgB,CAAC;EAChF,MAAMC,aAAa,GAAGxC,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACkB,aAAa,CAAC;EAC1E,MAAMC,SAAS,GAAGzC,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACmB,SAAS,CAAC;EAClE,MAAMC,QAAQ,GAAG1C,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACoB,QAAQ,CAAC;EAChE,MAAMC,SAAS,GAAG3C,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACqB,SAAS,CAAC;EAClE,MAAMC,aAAa,GAAG5C,sBAAsB,CAACsB,KAAK,IAAIA,KAAK,CAACsB,aAAa,CAAC;;EAE1E;EACA,MAAMC,WAAW,GAAGlD,OAAO,CAAC,MAAM,IAAIM,qBAAqB,CAAC,CAAC,EAAE,EAAE,CAAC;;EAElE;EACA,MAAM6C,kBAAkB,GAAGnD,OAAO,CAAC,MACjCkD,WAAW,CAACE,qBAAqB,CAACnB,UAAU,CAAC,EAC7C,CAACiB,WAAW,EAAEjB,UAAU,CAC1B,CAAC;;EAED;EACAlC,SAAS,CAAC,MAAM;IACd6C,gBAAgB,CAACO,kBAAkB,CAACE,QAAQ,CAAC;EAC/C,CAAC,EAAE,CAACpB,UAAU,EAAEkB,kBAAkB,CAACE,QAAQ,EAAET,gBAAgB,CAAC,CAAC;;EAE/D;EACA7C,SAAS,CAAC,MAAM;IACd,IAAI8B,SAAS,EAAE;MACbqB,WAAW,CAACI,UAAU,CAAC,MAAM;QAC3BL,aAAa,CAAC,CAAC;MACjB,CAAC,CAAC;IACJ,CAAC,MAAM;MACLC,WAAW,CAACK,SAAS,CAAC,CAAC;IACzB;IAEA,OAAO,MAAM;MACXL,WAAW,CAACK,SAAS,CAAC,CAAC;IACzB,CAAC;EACH,CAAC,EAAE,CAAC1B,SAAS,EAAEqB,WAAW,EAAED,aAAa,CAAC,CAAC;;EAE3C;EACAlD,SAAS,CAAC,MAAM;IACd,IAAI+B,WAAW,IAAI,CAACC,eAAe,CAACK,OAAO,EAAE;MAC3CF,aAAa,CAAC,KAAK,CAAC;IACtB;;IAEA;IACA,IAAI,CAACJ,WAAW,EAAE;MAChBC,eAAe,CAACK,OAAO,GAAG,KAAK;IACjC;EACF,CAAC,EAAE,CAACN,WAAW,EAAEI,aAAa,CAAC,CAAC;;EAEhC;EACAnC,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXmD,WAAW,CAACM,OAAO,CAAC,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACN,WAAW,CAAC,CAAC;;EAEjB;EACA,MAAMO,eAAe,GAAGxD,WAAW,CAAC,MAAM;IACxC8B,eAAe,CAACK,OAAO,GAAG,KAAK,CAAC,CAAC;IACjCS,aAAa,CAAC,CAAC;IACfC,SAAS,CAAC,CAAC;EACb,CAAC,EAAE,CAACD,aAAa,EAAEC,SAAS,CAAC,CAAC;EAE9B,MAAMY,cAAc,GAAGzD,WAAW,CAAC,MAAM;IACvCiC,aAAa,CAAC,QAAQ,CAAC;IACvBa,QAAQ,CAAC,CAAC;EACZ,CAAC,EAAE,CAACA,QAAQ,EAAEb,aAAa,CAAC,CAAC;EAE7B,MAAMyB,eAAe,GAAG1D,WAAW,CAAC,MAAM;IACxC+C,SAAS,CAAC,CAAC;IACX;IACAJ,gBAAgB,CAACO,kBAAkB,CAACE,QAAQ,CAAC;EAC/C,CAAC,EAAE,CAACL,SAAS,EAAEJ,gBAAgB,EAAEO,kBAAkB,CAACE,QAAQ,CAAC,CAAC;;EAE9D;EACA,MAAMO,sBAAsB,GAAG5D,OAAO,CAAC,OAAO;IAC5C6B,SAAS;IACTgC,QAAQ,EAAE/B,WAAW;IACrBgC,WAAW,EAAEL,eAAe;IAC5BM,UAAU,EAAEL,cAAc;IAC1BM,eAAe,EAAE,YAAY;IAC7BC,cAAc,EAAE,WAAW;IAC3BC,kBAAkB,EAAE,4BAA4B;IAChDC,iBAAiB,EAAE,kBAAkB;IACrCC,gBAAgB,EAAEvD,sBAAsB,CAACwD,YAAY;IACrDC,eAAe,EAAE,SAAS;IAC1BC,sBAAsB,EAAE1D,sBAAsB,CAAC2D,aAAa;IAC5DC,qBAAqB,EAAE;EACzB,CAAC,CAAC,EAAE,CAAC5C,SAAS,EAAEC,WAAW,EAAE2B,eAAe,EAAEC,cAAc,CAAC,CAAC;;EAE9D;EACA,MAAMgB,kBAAkB,GAAG1E,OAAO,CAAC,OAAO;IACxC2E,SAAS,EAAE7C,WAAW;IACtBJ,KAAK;IACLkD,WAAW,EAAEjB,eAAe;IAC5BkB,UAAU,EAAE,aAAa;IACzBC,YAAY,EAAE,yBAAyB;IAAE;IACzCC,WAAW,EAAE,yBAAyB;IAAE;IACxCC,WAAW,EAAE,SAAS;IAAE;IACxBC,iBAAiB,EAAE,SAAS;IAAE;IAC9BC,eAAe,EAAE,SAAS,CAAE;EAC9B,CAAC,CAAC,EAAE,CAACpD,WAAW,EAAEJ,KAAK,EAAEiC,eAAe,CAAC,CAAC;;EAE1C;EACA,MAAMwB,sBAAsB,GAAGnF,OAAO,CAAC,OAAO;IAC5CoF,MAAM,EAAEtE,QAAQ,CAACuE,eAAe;IAChC9D,QAAQ,EAAEA,QAAQ,IAAIR,qBAAqB;IAC3CS;EACF,CAAC,CAAC,EAAE,CAACD,QAAQ,EAAEC,gBAAgB,CAAC,CAAC;;EAEjC;EACA,MAAM8D,MAAM,GAAG/D,QAAQ,EAAE+D,MAAM,IAAI,CAAC;;EAEpC;EACA,MAAMC,aAAa,GAAGvF,OAAO,CAAC,OAAO;IACnCwF,QAAQ,EAAE;MACR,GAAGC,MAAM,CAACD,QAAQ;MAClBE,SAAS,EAAEJ,MAAM,CAAC;IACpB;EACF,CAAC,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EAEb,oBACEpE,IAAA,CAAChB,IAAI;IAACyF,KAAK,EAAEF,MAAM,CAACG,SAAU;IAAAC,QAAA,eAC5B3E,IAAA,CAACd,sBAAsB;MAAAyF,QAAA,eACrBzE,KAAA,CAACb,cAAc;QAAAsF,QAAA,gBAEb3E,IAAA,CAAChB,IAAI;UAACyF,KAAK,EAAEJ,aAAa,CAACC,QAAS;UAAAK,QAAA,eAClC3E,IAAA,CAACV,WAAW;YAACyB,UAAU,EAAEA;UAAW,CAAE;QAAC,CACnC,CAAC,eAGPf,IAAA,CAACT,UAAU;UAAC6E,MAAM,EAAEA;QAAO,CAAE,CAAC,eAG9BpE,IAAA,CAACR,iBAAiB;UAAA,GAAKkD;QAAsB,CAAG,CAAC,eAEjD1C,IAAA,CAACP,aAAa;UAAA,GAAK+D;QAAkB,CAAG,CAAC,eAEzCxD,IAAA,CAACN,iBAAiB;UAAA,GAAKuE;QAAsB,CAAG,CAAC;MAAA,CACnC;IAAC,CACK;EAAC,CACrB,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMM,MAAM,GAAGtF,UAAU,CAAC2F,MAAM,CAAC;EAC/BF,SAAS,EAAE;IACTG,IAAI,EAAE,CAAC;IACPC,eAAe,EAAEnF,sBAAsB,CAACoF;EAC1C,CAAC;EACDT,QAAQ,EAAE;IACRO,IAAI,EAAE,CAAC;IACPG,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF9E,cAAc,CAAC+E,WAAW,GAAG,gBAAgB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import React from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView,Gesture,GestureDetector}from 'react-native-gesture-handler';import{runOnJS}from 'react-native-reanimated';import{GameControlButton,GameOverModal,GameSettingsModal}from "../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from "../../services/UtilsService.js";import{GameBackground,GameGrid,ScoreBoard}from "./components/index.js";import{useSnakeStore,useScore,useIsPlaying,useIsGameOver}from "./SnakeStore.js";import{SNAKE_COLORS}from "./SnakeConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const Snake = React.memo(({settings,onSettingsChange})=>{const score = useScore();const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const startGame = useSnakeStore(state => state.startGame);const stopGame = useSnakeStore(state => state.stopGame);const resetGame = useSnakeStore(state => state.resetGame);const initializeGame = useSnakeStore(state => state.initializeGame);const updateSettings = useSnakeStore(state => state.updateSettings);const changeDirection = useSnakeStore(state => state.changeDirection);const prevSettingsRef = React.useRef({enableSounds:true,enableHaptics:true});const prevDifficultyRef = React.useRef('easy');React.useEffect(()=>{const enableSounds = settings?.enableSounds ?? true;const enableHaptics = settings?.enableHaptics ?? true;if(prevSettingsRef.current.enableSounds !== enableSounds || prevSettingsRef.current.enableHaptics !== enableHaptics){prevSettingsRef.current ={enableSounds,enableHaptics};updateSettings(enableSounds,enableHaptics);}},[updateSettings,settings?.enableSounds,settings?.enableHaptics]);React.useEffect(()=>{const difficulty = settings?.difficulty || 'easy';if(prevDifficultyRef.current !== difficulty){prevDifficultyRef.current = difficulty;initializeGame(difficulty);}},[initializeGame,settings?.difficulty]);const handleStartGame = React.useCallback(()=>{startGame();},[startGame]);const handleResetGame = React.useCallback(()=>{resetGame();},[resetGame]);const handleStopGame = React.useCallback(()=>{stopGame();},[stopGame]);const handleSwipe = React.useCallback(direction =>{try{if(!isPlaying)return;requestAnimationFrame(()=>{try{changeDirection(direction);}catch(error){console.error('Direction change error:',error);}});}catch(error){console.error('Swipe handler error:',error);}},[isPlaying,changeDirection]);const panGesture = React.useMemo(()=> Gesture.Pan().onEnd(event =>{const threshold = 30;const absX = Math.abs(event.translationX);const absY = Math.abs(event.translationY);if(absX > threshold || absY > threshold){if(absX > absY){if(event.translationX > 0){runOnJS(handleSwipe)('RIGHT');}else{runOnJS(handleSwipe)('LEFT');}}else{if(event.translationY > 0){runOnJS(handleSwipe)('DOWN');}else{runOnJS(handleSwipe)('UP');}}}}),[handleSwipe]);const gameControlButtonProps = React.useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,onResetGame:handleResetGame,startButtonText:'Start Slithering!',startButtonSubtext:'Swipe to move or turn.',startButtonColor:SNAKE_COLORS.BUTTON_PRIMARY,startButtonBorderColor:SNAKE_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame,handleResetGame]);const gameOverModalProps = React.useMemo(()=>({isVisible:isGameOver,score,onPlayAgain:handleResetGame,buttonText:'Play Again!',primaryColor:"rgba(0,204,106,0.5)",borderColor:"rgba(0,204,106,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#00cc6a",scoreFormatter:s => `${s}`}),[isGameOver,score,handleResetGame]);const gameSettingsModalProps = React.useMemo(()=>({gameId:GAME_IDS.SNAKE,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;return _jsx(GameBackground,{children:_jsxs(GestureHandlerRootView,{style:styles.container,children:[_jsx(GestureDetector,{gesture:panGesture,children:_jsx(View,{style:styles.container,children:_jsx(View,{style:[styles.gridContainer,{paddingTop:offset}],children:_jsx(GameGrid,{})})})}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})});});Snake.displayName = 'Snake';const styles = StyleSheet.create({container:{flex:1},gridContainer:{flex:1,justifyContent:'center',alignItems:'center'}});
|
|
1
|
+
"use strict";import React from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView,Gesture,GestureDetector}from 'react-native-gesture-handler';import{runOnJS}from 'react-native-reanimated';import{GameControlButton,GameOverModal,GameSettingsModal}from "../../helpers/index.js";import{DEFAULT_GAME_SETTINGS,GAME_IDS}from "../../services/UtilsService.js";import{GameBackground,GameGrid,ScoreBoard}from "./components/index.js";import{useSnakeStore,useScore,useIsPlaying,useIsGameOver}from "./SnakeStore.js";import{SNAKE_COLORS}from "./SnakeConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const Snake = React.memo(({settings,onSettingsChange,onEndGame})=>{const score = useScore();const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const gameReportedRef = React.useRef(false);const reportGameEnd = React.useCallback(status =>{if(onEndGame && !gameReportedRef.current){onEndGame({status,score:score.toString()});gameReportedRef.current = true;}},[onEndGame,score]);const startGame = useSnakeStore(state => state.startGame);const stopGame = useSnakeStore(state => state.stopGame);const resetGame = useSnakeStore(state => state.resetGame);const initializeGame = useSnakeStore(state => state.initializeGame);const updateSettings = useSnakeStore(state => state.updateSettings);const changeDirection = useSnakeStore(state => state.changeDirection);const prevSettingsRef = React.useRef({enableSounds:true,enableHaptics:true});const prevDifficultyRef = React.useRef('easy');React.useEffect(()=>{const enableSounds = settings?.enableSounds ?? true;const enableHaptics = settings?.enableHaptics ?? true;if(prevSettingsRef.current.enableSounds !== enableSounds || prevSettingsRef.current.enableHaptics !== enableHaptics){prevSettingsRef.current ={enableSounds,enableHaptics};updateSettings(enableSounds,enableHaptics);}},[updateSettings,settings?.enableSounds,settings?.enableHaptics]);React.useEffect(()=>{const difficulty = settings?.difficulty || 'easy';if(prevDifficultyRef.current !== difficulty){prevDifficultyRef.current = difficulty;initializeGame(difficulty);}},[initializeGame,settings?.difficulty]);React.useEffect(()=>{if(isGameOver && !gameReportedRef.current){reportGameEnd('lose');}if(!isGameOver){gameReportedRef.current = false;}},[isGameOver,reportGameEnd]);const handleStartGame = React.useCallback(()=>{gameReportedRef.current = false;startGame();},[startGame]);const handleResetGame = React.useCallback(()=>{resetGame();},[resetGame]);const handleStopGame = React.useCallback(()=>{reportGameEnd('cancel');stopGame();},[stopGame,reportGameEnd]);const handleSwipe = React.useCallback(direction =>{try{if(!isPlaying)return;requestAnimationFrame(()=>{try{changeDirection(direction);}catch(error){console.error('Direction change error:',error);}});}catch(error){console.error('Swipe handler error:',error);}},[isPlaying,changeDirection]);const panGesture = React.useMemo(()=> Gesture.Pan().onEnd(event =>{const threshold = 30;const absX = Math.abs(event.translationX);const absY = Math.abs(event.translationY);if(absX > threshold || absY > threshold){if(absX > absY){if(event.translationX > 0){runOnJS(handleSwipe)('RIGHT');}else{runOnJS(handleSwipe)('LEFT');}}else{if(event.translationY > 0){runOnJS(handleSwipe)('DOWN');}else{runOnJS(handleSwipe)('UP');}}}}),[handleSwipe]);const gameControlButtonProps = React.useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,onResetGame:handleResetGame,startButtonText:'Start Slithering!',startButtonSubtext:'Swipe to move or turn.',startButtonColor:SNAKE_COLORS.BUTTON_PRIMARY,startButtonBorderColor:SNAKE_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame,handleResetGame]);const gameOverModalProps = React.useMemo(()=>({isVisible:isGameOver,score,onPlayAgain:handleResetGame,buttonText:'Play Again!',primaryColor:"rgba(0,204,106,0.5)",borderColor:"rgba(0,204,106,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#00cc6a",scoreFormatter:s => `${s}`}),[isGameOver,score,handleResetGame]);const gameSettingsModalProps = React.useMemo(()=>({gameId:GAME_IDS.SNAKE,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;return _jsx(GameBackground,{children:_jsxs(GestureHandlerRootView,{style:styles.container,children:[_jsx(GestureDetector,{gesture:panGesture,children:_jsx(View,{style:styles.container,children:_jsx(View,{style:[styles.gridContainer,{paddingTop:offset}],children:_jsx(GameGrid,{})})})}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})});});Snake.displayName = 'Snake';const styles = StyleSheet.create({container:{flex:1},gridContainer:{flex:1,justifyContent:'center',alignItems:'center'}});
|