react-native-games 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useBlockBlastStore","BlockBlastService","setCallbacks","onClearLines","onPlacePiece","onGameOver","startGame","gridSize","getState","stopGame","resetGame","placePiece","pieceId","row","col","store","success","linesCleared","clearLines","freshStore","addNewPiece","isGameOver","checkGameOver","canPlacePiece","piece","nextPieces","find","p","id","shape","r","length","shapeRow","c","gridRow","gridCol","grid","getGridPosition","x","y","gridStartX","gridStartY","cellSize","cellGap","totalCellSize","relativeX","relativeY","Math","floor","cleanup","undefined"],"sourceRoot":"../../../../src","sources":["games/block-blast/BlockBlastService.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";import{BLOCK_BLAST_GAME_CONFIG,getRandomBlockShape,getRandomBlockColor}from "./BlockBlastConstants.js";const createEmptyGrid = size =>{return Array(size).fill(null).map(()=> Array(size).fill(null));};const generateRandomPiece =()=>{const shape = getRandomBlockShape();const color = getRandomBlockColor();if(!shape || !color){throw new Error('Failed to generate random piece');}return{id:`piece-${Date.now()}-${Math.random()}`,shape:shape.map(row => [...row]),color:color};};export const useBlockBlastStore = create()(subscribeWithSelector(immerMiddleware((set,get)=>({score:0,isPlaying:false,gameOver:false,gameWon:false,timeRemaining:0,gameDuration:300,grid:createEmptyGrid(BLOCK_BLAST_GAME_CONFIG.GRID_SIZE),gridSize:BLOCK_BLAST_GAME_CONFIG.GRID_SIZE,nextPieces:[],selectedPieceId:null,dragPosition:null,previewPosition:null,canPlace:false,startGame:(gridSize,gameDuration)=>{const size = gridSize || BLOCK_BLAST_GAME_CONFIG.GRID_SIZE;const duration = gameDuration || 300;set(draft =>{draft.score = 0;draft.isPlaying = true;draft.gameOver = false;draft.gameWon = false;draft.timeRemaining = duration;draft.gameDuration = duration;draft.grid = createEmptyGrid(size);draft.gridSize = size;draft.nextPieces = Array(BLOCK_BLAST_GAME_CONFIG.NEXT_PIECES_COUNT).fill(null).map(()=> generateRandomPiece());draft.selectedPieceId = null;draft.dragPosition = null;draft.previewPosition = null;draft.canPlace = false;});},stopGame:()=>{set(draft =>{draft.isPlaying = false;draft.selectedPieceId = null;draft.dragPosition = null;draft.previewPosition = null;});},resetGame:()=>{set(draft =>{draft.score = 0;draft.isPlaying = false;draft.gameOver = false;draft.gameWon = false;draft.timeRemaining = 0;draft.grid = createEmptyGrid(draft.gridSize);draft.nextPieces = [];draft.selectedPieceId = null;draft.dragPosition = null;draft.previewPosition = null;draft.canPlace = false;});},updateScore:points =>{set(draft =>{draft.score = draft.score + points;});},selectPiece:pieceId =>{set(draft =>{draft.selectedPieceId = pieceId;});},deselectPiece:()=>{set(draft =>{draft.selectedPieceId = null;draft.dragPosition = null;draft.previewPosition = null;draft.canPlace = false;});},updateDragPosition:(x,y)=>{set(draft =>{draft.dragPosition ={x,y};});},updatePreviewPosition:(row,col,canPlace)=>{set(draft =>{draft.previewPosition ={row,col};draft.canPlace = canPlace;});},clearPreview:()=>{set(draft =>{draft.previewPosition = null;draft.canPlace = false;});},placePiece:(pieceId,row,col)=>{const state = get();const piece = state.nextPieces.find(p => p.id === pieceId);if(!piece)return false;const{shape,color}= piece;for(let r = 0;r < shape.length;r++){for(let c = 0;c < shape[r].length;c++){if(shape[r][c] === 1){const gridRow = row + r;const gridCol = col + c;if(gridRow < 0 || gridRow >= state.gridSize || gridCol < 0 || gridCol >= state.gridSize || state.grid[gridRow][gridCol] !== null){return false;}}}}set(draft =>{for(let r = 0;r < shape.length;r++){for(let c = 0;c < shape[r].length;c++){if(shape[r][c] === 1){draft.grid[row + r][col + c] = color;}}}const blockCount = shape.flat().filter(cell => cell === 1).length;draft.score += blockCount * BLOCK_BLAST_GAME_CONFIG.POINTS_PER_BLOCK;draft.nextPieces = draft.nextPieces.filter(p => p.id !== pieceId);draft.selectedPieceId = null;draft.dragPosition = null;draft.previewPosition = null;draft.canPlace = false;});return true;},generateNextPieces:()=>{set(draft =>{draft.nextPieces = Array(BLOCK_BLAST_GAME_CONFIG.NEXT_PIECES_COUNT).fill(null).map(()=> generateRandomPiece());});},addNewPiece:()=>{set(draft =>{draft.nextPieces.push(generateRandomPiece());});},clearLines:()=>{const state = get();let linesCleared = 0;const linesToClear = [];const colsToClear = [];const gridSize = state.gridSize;const grid = state.grid;for(let row = 0;row < gridSize;row++){let isRowFull = true;const rowData = grid[row];if(!rowData)continue;for(let col = 0;col < gridSize;col++){if(rowData[col] === null){isRowFull = false;break;}}if(isRowFull){linesToClear.push(row);linesCleared++;}}for(let col = 0;col < gridSize;col++){let isColFull = true;for(let row = 0;row < gridSize;row++){const rowData = grid[row];if(!rowData || rowData[col] === null){isColFull = false;break;}}if(isColFull){colsToClear.push(col);linesCleared++;}}if(linesCleared === 0){return 0;}set(draft =>{linesToClear.forEach(row =>{for(let col = 0;col < gridSize;col++){draft.grid[row][col] = null;}});colsToClear.forEach(col =>{for(let row = 0;row < gridSize;row++){draft.grid[row][col] = null;}});const totalPoints = linesCleared * BLOCK_BLAST_GAME_CONFIG.POINTS_PER_LINE;draft.score += totalPoints;});return linesCleared;},checkGameOver:()=>{const state = get();for(const piece of state.nextPieces){for(let row = 0;row < state.gridSize;row++){for(let col = 0;col < state.gridSize;col++){let canPlace = true;for(let r = 0;r < piece.shape.length;r++){for(let c = 0;c < piece.shape[r].length;c++){if(piece.shape[r][c] === 1){const gridRow = row + r;const gridCol = col + c;if(gridRow < 0 || gridRow >= state.gridSize || gridCol < 0 || gridCol >= state.gridSize || state.grid[gridRow][gridCol] !== null){canPlace = false;break;}}}if(!canPlace)break;}if(canPlace)return false;}}}set(draft =>{draft.gameOver = true;draft.isPlaying = false;});return true;},decrementTime:()=>{set(draft =>{if(draft.timeRemaining > 0){draft.timeRemaining -= 1;}if(draft.timeRemaining === 0 && draft.isPlaying){draft.gameWon = true;draft.gameOver = true;draft.isPlaying = false;}});},checkWinCondition:()=>{const state = get();if(state.timeRemaining === 0 && state.isPlaying){set(draft =>{draft.gameWon = true;draft.gameOver = true;draft.isPlaying = false;});}}}))));export const useScore =()=> useBlockBlastStore(state => state.score);export const useIsPlaying =()=> useBlockBlastStore(state => state.isPlaying);export const useGameOver =()=> useBlockBlastStore(state => state.gameOver);export const useGameWon =()=> useBlockBlastStore(state => state.gameWon);export const useTimeRemaining =()=> useBlockBlastStore(state => state.timeRemaining);export const useGrid =()=> useBlockBlastStore(state => state.grid);export const useNextPieces =()=> useBlockBlastStore(state => state.nextPieces);export const useSelectedPieceId =()=> useBlockBlastStore(state => state.selectedPieceId);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["create","subscribeWithSelector","immerMiddleware","BLOCK_BLAST_GAME_CONFIG","getRandomBlockShape","getRandomBlockColor","createEmptyGrid","size","Array","fill","map","generateRandomPiece","shape","color","Error","id","Date","now","Math","random","row","useBlockBlastStore","set","get","score","isPlaying","gameOver","gameWon","timeRemaining","gameDuration","grid","GRID_SIZE","gridSize","nextPieces","selectedPieceId","dragPosition","previewPosition","canPlace","startGame","duration","draft","NEXT_PIECES_COUNT","stopGame","resetGame","updateScore","points","selectPiece","pieceId","deselectPiece","updateDragPosition","x","y","updatePreviewPosition","col","clearPreview","placePiece","state","piece","find","p","r","length","c","gridRow","gridCol","blockCount","flat","filter","cell","POINTS_PER_BLOCK","generateNextPieces","addNewPiece","push","clearLines","linesCleared","linesToClear","colsToClear","isRowFull","rowData","isColFull","forEach","totalPoints","POINTS_PER_LINE","checkGameOver","decrementTime","checkWinCondition","useScore","useIsPlaying","useGameOver","useGameWon","useTimeRemaining","useGrid","useNextPieces","useSelectedPieceId"],"sourceRoot":"../../../../src","sources":["games/block-blast/BlockBlastStore.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{Canvas,RoundedRect,Group}from '@shopify/react-native-skia';import Animated,{useAnimatedStyle,withSpring}from 'react-native-reanimated';import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const BlockPieceComponentView =({shape,color,cellSize,cellGap,scale = 1,x = 0,y = 0,isDragging = false})=>{const scaledCellSize = cellSize * scale;const scaledGap = cellGap * scale;const scaledTotalSize = scaledCellSize + scaledGap;const pieceWidth = shape[0] ? shape[0].length * scaledTotalSize + scaledGap:0;const pieceHeight = shape.length * scaledTotalSize + scaledGap;const animatedStyle = useAnimatedStyle(()=>{if(isDragging){return{transform:[{translateX:x},{translateY:y},{scale:withSpring(1.1,{damping:15,stiffness:200})}]};}return{transform:[{translateX:0},{translateY:0},{scale:withSpring(1,{damping:15,stiffness:200})}]};},[isDragging,x,y]);return _jsx(Animated.View,{style:[{width:pieceWidth,height:pieceHeight},animatedStyle],children:_jsx(Canvas,{style:{width:pieceWidth,height:pieceHeight},children:shape.map((row,rowIndex)=> row.map((cell,colIndex)=>{if(cell === 1){const cellX = colIndex * scaledTotalSize + scaledGap;const cellY = rowIndex * scaledTotalSize + scaledGap;return _jsxs(Group,{children:[_jsx(RoundedRect,{x:cellX,y:cellY,width:scaledCellSize,height:scaledCellSize,r:4 * scale,color:color}),_jsx(RoundedRect,{x:cellX + 2 * scale,y:cellY + 2 * scale,width:scaledCellSize - 4 * scale,height:scaledCellSize / 3,r:3 * scale,color:"rgba(255,255,255,0.4)"}),_jsx(RoundedRect,{x:cellX,y:cellY + scaledCellSize * 0.7,width:scaledCellSize,height:scaledCellSize * 0.3,r:4 * scale,color:"rgba(0,0,0,0.2)"})]},`block-${rowIndex}-${colIndex}`);}return null;}))})});};const arePropsEqual =(prevProps,nextProps)=>{return prevProps.color === nextProps.color && prevProps.cellSize === nextProps.cellSize && prevProps.cellGap === nextProps.cellGap && prevProps.scale === nextProps.scale && prevProps.x === nextProps.x && prevProps.y === nextProps.y && prevProps.isDragging === nextProps.isDragging && prevProps.shape.length === nextProps.shape.length && prevProps.shape[0]?.length === nextProps.shape[0]?.length;};export const BlockPieceComponent = React.memo(BlockPieceComponentView,arePropsEqual);BlockPieceComponent.displayName = 'BlockPieceComponent';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Canvas","RoundedRect","Group","Animated","useAnimatedStyle","withSpring","jsx","_jsx","jsxs","_jsxs","BlockPieceComponentView","shape","color","cellSize","cellGap","scale","x","y","isDragging","scaledCellSize","scaledGap","scaledTotalSize","pieceWidth","length","pieceHeight","animatedStyle","transform","translateX","translateY","damping","stiffness","View","style","width","height","children","map","row","rowIndex","cell","colIndex","cellX","cellY","r","arePropsEqual","prevProps","nextProps","BlockPieceComponent","memo","displayName"],"sourceRoot":"../../../../../src","sources":["games/block-blast/components/BlockPieceComponent.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,MAAM,EAAEC,WAAW,EAAEC,KAAK,QAAQ,4BAA4B;AACvE,OAAOC,QAAQ,IAAIC,gBAAgB,EAAEC,UAAU,QAAQ,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAajF,MAAMC,uBAAuB,GAAGA,CAAC;EAC/BC,KAAK;EACLC,KAAK;EACLC,QAAQ;EACRC,OAAO;EACPC,KAAK,GAAG,CAAC;EACTC,CAAC,GAAG,CAAC;EACLC,CAAC,GAAG,CAAC;EACLC,UAAU,GAAG;AACW,CAAC,KAAK;EAC9B,MAAMC,cAAc,GAAGN,QAAQ,GAAGE,KAAK;EACvC,MAAMK,SAAS,GAAGN,OAAO,GAAGC,KAAK;EACjC,MAAMM,eAAe,GAAGF,cAAc,GAAGC,SAAS;;EAElD;EACA,MAAME,UAAU,GAAGX,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAACY,MAAM,GAAGF,eAAe,GAAGD,SAAS,GAAG,CAAC;EAC/E,MAAMI,WAAW,GAAGb,KAAK,CAACY,MAAM,GAAGF,eAAe,GAAGD,SAAS;;EAE9D;EACA,MAAMK,aAAa,GAAGrB,gBAAgB,CAAC,MAAM;IAC3C,IAAIc,UAAU,EAAE;MACd,OAAO;QACLQ,SAAS,EAAE,CACT;UAAEC,UAAU,EAAEX;QAAE,CAAC,EACjB;UAAEY,UAAU,EAAEX;QAAE,CAAC,EACjB;UAAEF,KAAK,EAAEV,UAAU,CAAC,GAAG,EAAE;YAAEwB,OAAO,EAAE,EAAE;YAAEC,SAAS,EAAE;UAAI,CAAC;QAAE,CAAC;MAE/D,CAAC;IACH;IACA,OAAO;MACLJ,SAAS,EAAE,CACT;QAAEC,UAAU,EAAE;MAAE,CAAC,EACjB;QAAEC,UAAU,EAAE;MAAE,CAAC,EACjB;QAAEb,KAAK,EAAEV,UAAU,CAAC,CAAC,EAAE;UAAEwB,OAAO,EAAE,EAAE;UAAEC,SAAS,EAAE;QAAI,CAAC;MAAE,CAAC;IAE7D,CAAC;EACH,CAAC,EAAE,CAACZ,UAAU,EAAEF,CAAC,EAAEC,CAAC,CAAC,CAAC;EAEtB,oBACEV,IAAA,CAACJ,QAAQ,CAAC4B,IAAI;IACZC,KAAK,EAAE,CACL;MACEC,KAAK,EAAEX,UAAU;MACjBY,MAAM,EAAEV;IACV,CAAC,EACDC,aAAa,CACb;IAAAU,QAAA,eAEF5B,IAAA,CAACP,MAAM;MAACgC,KAAK,EAAE;QAAEC,KAAK,EAAEX,UAAU;QAAEY,MAAM,EAAEV;MAAY,CAAE;MAAAW,QAAA,EACvDxB,KAAK,CAACyB,GAAG,CAAC,CAACC,GAAG,EAAEC,QAAQ,KACvBD,GAAG,CAACD,GAAG,CAAC,CAACG,IAAI,EAAEC,QAAQ,KAAK;QAC1B,IAAID,IAAI,KAAK,CAAC,EAAE;UACd,MAAME,KAAK,GAAGD,QAAQ,GAAGnB,eAAe,GAAGD,SAAS;UACpD,MAAMsB,KAAK,GAAGJ,QAAQ,GAAGjB,eAAe,GAAGD,SAAS;UAEpD,oBACEX,KAAA,CAACP,KAAK;YAAAiC,QAAA,gBAEJ5B,IAAA,CAACN,WAAW;cACVe,CAAC,EAAEyB,KAAM;cACTxB,CAAC,EAAEyB,KAAM;cACTT,KAAK,EAAEd,cAAe;cACtBe,MAAM,EAAEf,cAAe;cACvBwB,CAAC,EAAE,CAAC,GAAG5B,KAAM;cACbH,KAAK,EAAEA;YAAM,CACd,CAAC,eAEFL,IAAA,CAACN,WAAW;cACVe,CAAC,EAAEyB,KAAK,GAAG,CAAC,GAAG1B,KAAM;cACrBE,CAAC,EAAEyB,KAAK,GAAG,CAAC,GAAG3B,KAAM;cACrBkB,KAAK,EAAEd,cAAc,GAAG,CAAC,GAAGJ,KAAM;cAClCmB,MAAM,EAAGf,cAAc,GAAG,CAAG;cAC7BwB,CAAC,EAAE,CAAC,GAAG5B,KAAM;cACbH,KAAK,EAAC;YAA0B,CACjC,CAAC,eAEFL,IAAA,CAACN,WAAW;cACVe,CAAC,EAAEyB,KAAM;cACTxB,CAAC,EAAEyB,KAAK,GAAGvB,cAAc,GAAG,GAAI;cAChCc,KAAK,EAAEd,cAAe;cACtBe,MAAM,EAAEf,cAAc,GAAG,GAAI;cAC7BwB,CAAC,EAAE,CAAC,GAAG5B,KAAM;cACbH,KAAK,EAAC;YAAoB,CAC3B,CAAC;UAAA,GA3BQ,SAAS0B,QAAQ,IAAIE,QAAQ,EA4BlC,CAAC;QAEZ;QACA,OAAO,IAAI;MACb,CAAC,CACH;IAAC,CACK;EAAC,CACI,CAAC;AAEpB,CAAC;;AAED;AACA,MAAMI,aAAa,GAAGA,CAACC,SAAmC,EAAEC,SAAmC,KAAK;EAClG,OACED,SAAS,CAACjC,KAAK,KAAKkC,SAAS,CAAClC,KAAK,IACnCiC,SAAS,CAAChC,QAAQ,KAAKiC,SAAS,CAACjC,QAAQ,IACzCgC,SAAS,CAAC/B,OAAO,KAAKgC,SAAS,CAAChC,OAAO,IACvC+B,SAAS,CAAC9B,KAAK,KAAK+B,SAAS,CAAC/B,KAAK,IACnC8B,SAAS,CAAC7B,CAAC,KAAK8B,SAAS,CAAC9B,CAAC,IAC3B6B,SAAS,CAAC5B,CAAC,KAAK6B,SAAS,CAAC7B,CAAC,IAC3B4B,SAAS,CAAC3B,UAAU,KAAK4B,SAAS,CAAC5B,UAAU,IAC7C2B,SAAS,CAAClC,KAAK,CAACY,MAAM,KAAKuB,SAAS,CAACnC,KAAK,CAACY,MAAM,IACjDsB,SAAS,CAAClC,KAAK,CAAC,CAAC,CAAC,EAAEY,MAAM,KAAKuB,SAAS,CAACnC,KAAK,CAAC,CAAC,CAAC,EAAEY,MAAM;AAE7D,CAAC;AAED,OAAO,MAAMwB,mBAAmB,gBAAGhD,KAAK,CAACiD,IAAI,CAACtC,uBAAuB,EAAEkC,aAAa,CAAC;AACrFG,mBAAmB,CAACE,WAAW,GAAG,qBAAqB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{View,StyleSheet,Dimensions}from 'react-native';import{Gesture,GestureDetector}from 'react-native-gesture-handler';import{runOnJS}from 'react-native-reanimated';import{GridComponent}from "./GridComponent.js";import{BlockPieceComponent}from "./BlockPieceComponent.js";import{useBlockBlastStore}from "../BlockBlastStore.js";import{BLOCK_BLAST_GAME_CONFIG}from "../BlockBlastConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const GameAreaComponent =({gridSize,cellSize,cellGap,gameService,offset})=>{const grid = useBlockBlastStore(state => state.grid);const nextPieces = useBlockBlastStore(state => state.nextPieces);const selectedPieceId = useBlockBlastStore(state => state.selectedPieceId);const previewPosition = useBlockBlastStore(state => state.previewPosition);const canPlace = useBlockBlastStore(state => state.canPlace);const [dragState,setDragState] = React.useState({pieceId:null,x:0,y:0});const dragOffsetRef = React.useRef({x:0,y:0});const layoutDimensions = React.useMemo(()=>{const totalCellSize = cellSize + cellGap;const gridWidth = gridSize * totalCellSize - cellGap;const gridHeight = gridSize * totalCellSize - cellGap;const piecesAreaHeight = 120;const controlButtonHeight = 80;const gapBetweenGridAndPieces = 20;const topPadding = 30;const gridPadding = 10;const totalContentHeight = gridHeight + gapBetweenGridAndPieces + piecesAreaHeight;const availableHeight = height - offset - controlButtonHeight - topPadding;const contentStartY = offset + topPadding +(availableHeight - totalContentHeight)/ 2;const gridStartX =(width - gridWidth)/ 2;const gridStartY = Math.max(contentStartY,offset + topPadding);const piecesAreaY = gridStartY + gridHeight + gapBetweenGridAndPieces;return{totalCellSize,gridWidth,gridHeight,piecesAreaHeight,gridStartX,gridStartY,piecesAreaY,gridPadding};},[gridSize,cellSize,cellGap,offset,width,height]);const{piecesAreaHeight,gridStartX,gridStartY,piecesAreaY,gridPadding}= layoutDimensions;const handlePieceDeselect = React.useCallback(()=>{useBlockBlastStore.getState().deselectPiece();setDragState({pieceId:null,x:0,y:0});},[]);const handleTouchBegin = React.useCallback((touchX,touchY)=>{const store = useBlockBlastStore.getState();if(!store.isPlaying)return;const totalPadding = 60;const availableWidth = width - totalPadding * 2;const spaceBetweenPieces = 30;const totalSpacing = spaceBetweenPieces *(store.nextPieces.length - 1);const startX = totalPadding;for(let i = 0;i < store.nextPieces.length;i++){const piece = store.nextPieces[i];if(!piece || !piece.shape || !piece.shape[0])continue;const previewCellSize = cellSize * BLOCK_BLAST_GAME_CONFIG.PREVIEW_PIECE_SCALE;const previewGap = cellGap * BLOCK_BLAST_GAME_CONFIG.PREVIEW_PIECE_SCALE;const previewPieceWidth = piece.shape[0].length *(previewCellSize + previewGap);const previewPieceHeight = piece.shape.length *(previewCellSize + previewGap);const sectionWidth =(availableWidth - totalSpacing)/ store.nextPieces.length;const pieceCenterX = startX + i *(sectionWidth + spaceBetweenPieces)+ sectionWidth / 2;const pieceLeft = pieceCenterX - previewPieceWidth / 2;const pieceTop = piecesAreaY +(piecesAreaHeight - previewPieceHeight)/ 2;const touchPadding = 10;const pieceRight = pieceLeft + previewPieceWidth;const pieceBottom = pieceTop + previewPieceHeight;if(touchX >= pieceLeft - touchPadding && touchX <= pieceRight + touchPadding && touchY >= pieceTop - touchPadding && touchY <= pieceBottom + touchPadding){store.selectPiece(piece.id);const draggingCellSize = cellSize * BLOCK_BLAST_GAME_CONFIG.DRAGGING_PIECE_SCALE;const draggingGap = cellGap * BLOCK_BLAST_GAME_CONFIG.DRAGGING_PIECE_SCALE;const draggingPieceWidth = piece.shape[0].length *(draggingCellSize + draggingGap);const draggingPieceHeight = piece.shape.length *(draggingCellSize + draggingGap);const previewPieceCenterX = pieceLeft + previewPieceWidth / 2;const previewPieceCenterY = pieceTop + previewPieceHeight / 2;dragOffsetRef.current ={x:touchX - previewPieceCenterX,y:touchY - previewPieceCenterY};setDragState({pieceId:piece.id,x:touchX - dragOffsetRef.current.x - draggingPieceWidth / 2,y:touchY - dragOffsetRef.current.y - draggingPieceHeight / 2});return;}}},[cellSize,cellGap,piecesAreaY,piecesAreaHeight,width]);const handleTouchMove = React.useCallback((touchX,touchY)=>{if(!dragState.pieceId)return;const store = useBlockBlastStore.getState();const piece = store.nextPieces.find(p => p.id === dragState.pieceId);if(!piece || !piece.shape || !piece.shape[0])return;const draggingCellSize = cellSize * BLOCK_BLAST_GAME_CONFIG.DRAGGING_PIECE_SCALE;const draggingGap = cellGap * BLOCK_BLAST_GAME_CONFIG.DRAGGING_PIECE_SCALE;const pieceWidth = piece.shape[0].length *(draggingCellSize + draggingGap);const pieceHeight = piece.shape.length *(draggingCellSize + draggingGap);setDragState({pieceId:dragState.pieceId,x:touchX - dragOffsetRef.current.x - pieceWidth / 2,y:touchY - dragOffsetRef.current.y - pieceHeight / 2});const pieceCenterX = touchX - dragOffsetRef.current.x;const pieceCenterY = touchY - dragOffsetRef.current.y;const gridPos = gameService.getGridPosition(pieceCenterX,pieceCenterY,gridStartX,gridStartY,cellSize,cellGap);if(gridPos){const adjustedRow = gridPos.row - Math.floor(piece.shape.length / 2);const adjustedCol = gridPos.col - Math.floor(piece.shape[0].length / 2);const canPlacePiece = gameService.canPlacePiece(dragState.pieceId,adjustedRow,adjustedCol);store.updatePreviewPosition(adjustedRow,adjustedCol,canPlacePiece);}else{store.clearPreview();}},[dragState.pieceId,cellSize,cellGap,gridStartX,gridStartY,gameService]);const handleTouchEnd = React.useCallback((touchX,touchY)=>{if(!dragState.pieceId)return;const store = useBlockBlastStore.getState();const piece = store.nextPieces.find(p => p.id === dragState.pieceId);if(!piece || !piece.shape || !piece.shape[0])return;const pieceCenterX = touchX - dragOffsetRef.current.x;const pieceCenterY = touchY - dragOffsetRef.current.y;const gridPos = gameService.getGridPosition(pieceCenterX,pieceCenterY,gridStartX,gridStartY,cellSize,cellGap);if(gridPos){const adjustedRow = gridPos.row - Math.floor(piece.shape.length / 2);const adjustedCol = gridPos.col - Math.floor(piece.shape[0].length / 2);gameService.placePiece(dragState.pieceId,adjustedRow,adjustedCol);}handlePieceDeselect();},[dragState.pieceId,cellSize,cellGap,gridStartX,gridStartY,gameService,handlePieceDeselect]);const panGesture = React.useMemo(()=> Gesture.Pan().onBegin(event =>{'worklet';runOnJS(handleTouchBegin)(event.absoluteX,event.absoluteY);}).onUpdate(event =>{'worklet';runOnJS(handleTouchMove)(event.absoluteX,event.absoluteY);}).onEnd(event =>{'worklet';runOnJS(handleTouchEnd)(event.absoluteX,event.absoluteY);}),[handleTouchBegin,handleTouchMove,handleTouchEnd]);return _jsx(GestureDetector,{gesture:panGesture,children:_jsxs(View,{style:styles.container,children:[_jsx(View,{style:[styles.gridContainer,{left:gridStartX - gridPadding,top:gridStartY - gridPadding,padding:gridPadding,paddingTop:gridPadding + 20}],pointerEvents:"box-none",children:_jsx(GridComponent,{grid:grid,gridSize:gridSize,cellSize:cellSize,cellGap:cellGap,previewPiece:previewPosition && selectedPieceId ?(()=>{const piece = nextPieces.find(p => p.id === selectedPieceId);return piece ?{shape:piece.shape,color:piece.color,row:previewPosition.row,col:previewPosition.col,canPlace:canPlace}:null;})():null})}),_jsx(View,{style:[styles.piecesContainer,{top:piecesAreaY,left:0,right:0,height:piecesAreaHeight}],pointerEvents:"box-none",children:nextPieces.map((piece,index)=>{if(!piece || !piece.shape)return null;const isDragging = selectedPieceId === piece.id;const scaledCellSize = cellSize * BLOCK_BLAST_GAME_CONFIG.PREVIEW_PIECE_SCALE;const scaledGap = cellGap * BLOCK_BLAST_GAME_CONFIG.PREVIEW_PIECE_SCALE;const pieceWidth = piece.shape && piece.shape[0] ? piece.shape[0].length *(scaledCellSize + scaledGap):0;const totalPadding = 60;const availableWidth = width - totalPadding * 2;const spaceBetweenPieces = 30;const totalSpacing = spaceBetweenPieces *(nextPieces.length - 1);const startX = totalPadding;const sectionWidth =(availableWidth - totalSpacing)/ nextPieces.length;const pieceX = startX + index *(sectionWidth + spaceBetweenPieces)+ sectionWidth / 2;const pieceHeight = piece.shape && piece.shape.length ? piece.shape.length *(scaledCellSize + scaledGap):0;const pieceTopInContainer =(piecesAreaHeight - pieceHeight)/ 2;return _jsx(View,{style:[styles.pieceWrapper,{left:pieceX - pieceWidth / 2,top:pieceTopInContainer,width:pieceWidth,height:pieceHeight,opacity:isDragging ? 0.3:1}],pointerEvents:"box-none",children:_jsx(BlockPieceComponent,{shape:piece.shape,color:piece.color,cellSize:cellSize,cellGap:cellGap,scale:BLOCK_BLAST_GAME_CONFIG.PREVIEW_PIECE_SCALE})},piece.id);})}),dragState.pieceId &&(()=>{const piece = nextPieces.find(p => p.id === dragState.pieceId);if(!piece)return null;return _jsx(View,{style:[styles.draggedPiece,{left:dragState.x,top:dragState.y}],pointerEvents:"none",children:_jsx(BlockPieceComponent,{shape:piece.shape,color:piece.color,cellSize:cellSize,cellGap:cellGap,scale:BLOCK_BLAST_GAME_CONFIG.DRAGGING_PIECE_SCALE,isDragging:true})});})()]})});};const styles = StyleSheet.create({container:{flex:1},gridContainer:{position:'absolute',borderRadius:10},piecesContainer:{position:'absolute'},pieceWrapper:{position:'absolute'},draggedPiece:{position:'absolute',zIndex:1000}});const areGameAreaPropsEqual =(prevProps,nextProps)=>{return prevProps.gridSize === nextProps.gridSize && prevProps.cellSize === nextProps.cellSize && prevProps.cellGap === nextProps.cellGap && prevProps.offset === nextProps.offset && prevProps.gameService === nextProps.gameService;};export const GameArea = React.memo(GameAreaComponent,areGameAreaPropsEqual);GameArea.displayName = 'GameArea';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","Dimensions","Gesture","GestureDetector","runOnJS","GridComponent","BlockPieceComponent","useBlockBlastStore","BLOCK_BLAST_GAME_CONFIG","jsx","_jsx","jsxs","_jsxs","width","height","get","GameAreaComponent","gridSize","cellSize","cellGap","gameService","offset","grid","state","nextPieces","selectedPieceId","previewPosition","canPlace","dragState","setDragState","useState","pieceId","x","y","dragOffsetRef","useRef","layoutDimensions","useMemo","totalCellSize","gridWidth","gridHeight","piecesAreaHeight","controlButtonHeight","gapBetweenGridAndPieces","topPadding","gridPadding","totalContentHeight","availableHeight","contentStartY","gridStartX","gridStartY","Math","max","piecesAreaY","handlePieceDeselect","useCallback","getState","deselectPiece","handleTouchBegin","touchX","touchY","store","isPlaying","totalPadding","availableWidth","spaceBetweenPieces","totalSpacing","length","startX","i","piece","shape","previewCellSize","PREVIEW_PIECE_SCALE","previewGap","previewPieceWidth","previewPieceHeight","sectionWidth","pieceCenterX","pieceLeft","pieceTop","touchPadding","pieceRight","pieceBottom","selectPiece","id","draggingCellSize","DRAGGING_PIECE_SCALE","draggingGap","draggingPieceWidth","draggingPieceHeight","previewPieceCenterX","previewPieceCenterY","current","handleTouchMove","find","p","pieceWidth","pieceHeight","pieceCenterY","gridPos","getGridPosition","adjustedRow","row","floor","adjustedCol","col","canPlacePiece","updatePreviewPosition","clearPreview","handleTouchEnd","placePiece","panGesture","Pan","onBegin","event","absoluteX","absoluteY","onUpdate","onEnd","gesture","children","style","styles","container","gridContainer","left","top","padding","paddingTop","pointerEvents","previewPiece","color","piecesContainer","right","map","index","isDragging","scaledCellSize","scaledGap","pieceX","pieceTopInContainer","pieceWrapper","opacity","scale","draggedPiece","create","flex","position","borderRadius","zIndex","areGameAreaPropsEqual","prevProps","nextProps","GameArea","memo","displayName"],"sourceRoot":"../../../../../src","sources":["games/block-blast/components/GameArea.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,RoundedRect}from '@shopify/react-native-skia';import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const PUZZLE_COLORS = ['#E91E63','#F44336','#FF5722','#FF9800','#FFC107','#CDDC39','#4CAF50','#009688','#00BCD4','#2196F3','#3F51B5','#9C27B0' ];const GameBackgroundView =({children})=>{const generateFloatingBlocks = React.useMemo(()=>{const elements = [];const tileCount = 25;for(let i = 0;i < tileCount;i++){const baseX = width / tileCount * i;const baseY = height / tileCount * i;const x = baseX + Math.sin(i * 0.5)* 50 + Math.random()* 100;const y = baseY + Math.cos(i * 0.7)* 60 + Math.random()* 120;const tileSize = 20 + Math.random()* 20;const colorIndex = i % PUZZLE_COLORS.length;const opacity = 0.3 + Math.sin(i)* 0.15;const tileX = Math.max(tileSize / 2,Math.min(width - tileSize,x));const tileY = Math.max(tileSize / 2,Math.min(height - tileSize,y));if(i % 4 === 0){elements.push(_jsx(RoundedRect,{x:tileX,y:tileY,width:tileSize,height:tileSize,r:tileSize * 0.2,color:`${PUZZLE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2,'0')}`},`square-tile-${i}`));}else if(i % 4 === 1){elements.push(_jsx(RoundedRect,{x:tileX,y:tileY,width:tileSize * 0.6,height:tileSize,r:tileSize * 0.15,color:`${PUZZLE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2,'0')}`},`rect-tile-${i}`));}else if(i % 4 === 2){elements.push(_jsx(RoundedRect,{x:tileX,y:tileY,width:tileSize * 1.2,height:tileSize * 0.8,r:tileSize * 0.1,color:`${PUZZLE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2,'0')}`},`wide-tile-${i}`));}else{elements.push(_jsx(Circle,{cx:tileX + tileSize / 2,cy:tileY + tileSize / 2,r:tileSize / 2,color:`${PUZZLE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2,'0')}`},`circle-tile-${i}`));}}return elements;},[width,height]);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:[`${PUZZLE_COLORS[0]}30`,`${PUZZLE_COLORS[3]}25`,`${PUZZLE_COLORS[6]}30`,`${PUZZLE_COLORS[9]}25`,`${PUZZLE_COLORS[11]}30` ]})}),_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width / 2,height / 2),colors:[`${PUZZLE_COLORS[1]}20`,'transparent',`${PUZZLE_COLORS[4]}20`,'transparent',`${PUZZLE_COLORS[7]}20`,'transparent']})}),_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(width,0),end:vec(0,height),colors:[`${PUZZLE_COLORS[2]}15`,'transparent',`${PUZZLE_COLORS[5]}15`,'transparent',`${PUZZLE_COLORS[8]}15`,'transparent']})}),generateFloatingBlocks,_jsx(RoundedRect,{x:width * 0.08,y:height * 0.12,width:50,height:50,r:8,color:`${PUZZLE_COLORS[0]}50`}),_jsx(RoundedRect,{x:width * 0.85,y:height * 0.82,width:45,height:45,r:7,color:`${PUZZLE_COLORS[3]}50`}),_jsx(RoundedRect,{x:width * 0.82,y:height * 0.18,width:40,height:40,r:6,color:`${PUZZLE_COLORS[6]}50`}),_jsx(RoundedRect,{x:width * 0.12,y:height * 0.75,width:55,height:55,r:9,color:`${PUZZLE_COLORS[9]}50`}),_jsx(RoundedRect,{x:width * 0.47,y:height * 0.08,width:35,height:35,r:5,color:`${PUZZLE_COLORS[11]}50`}),_jsx(RoundedRect,{x:width * 0.15,y:height * 0.47,width:42,height:42,r:6,color:`${PUZZLE_COLORS[5]}50`}),_jsx(RoundedRect,{x:width * 0.75,y:height * 0.57,width:38,height:38,r:6,color:`${PUZZLE_COLORS[8]}50`}),_jsx(RoundedRect,{x:width * 0.57,y:height * 0.87,width:32,height:32,r:5,color:`${PUZZLE_COLORS[1]}50`}),_jsx(Circle,{cx:width * 0.25,cy:height * 0.25,r:18,color:`${PUZZLE_COLORS[4]}45`}),_jsx(Circle,{cx:width * 0.65,cy:height * 0.35,r:22,color:`${PUZZLE_COLORS[7]}45`}),_jsx(Circle,{cx:width * 0.35,cy:height * 0.65,r:16,color:`${PUZZLE_COLORS[10]}45`}),Array.from({length:Math.floor(width / 60)},(_,i)=> _jsx(Rect,{x:i * 60,y:0,width:1,height:height,color:"rgba(255,255,255,0.03)"},`grid-v-${i}`)),Array.from({length:Math.floor(height / 60)},(_,i)=> _jsx(Rect,{x:0,y:i * 60,width:width,height:1,color:"rgba(255,255,255,0.03)"},`grid-h-${i}`))]}),children]});};export const GameBackground = React.memo(GameBackgroundView);GameBackground.displayName = 'GameBackground';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Dimensions","Canvas","LinearGradient","Rect","vec","Circle","RoundedRect","jsx","_jsx","jsxs","_jsxs","width","height","get","PUZZLE_COLORS","GameBackgroundView","children","generateFloatingBlocks","useMemo","elements","tileCount","i","baseX","baseY","x","Math","sin","random","y","cos","tileSize","colorIndex","length","opacity","tileX","max","min","tileY","push","r","color","floor","toString","padStart","cx","cy","style","flex","position","top","left","right","bottom","start","end","colors","Array","from","_","GameBackground","memo","displayName"],"sourceRoot":"../../../../../src","sources":["games/block-blast/components/GameBackground.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{Canvas,RoundedRect,Group}from '@shopify/react-native-skia';import{BLOCK_BLAST_COLORS}from "../BlockBlastConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const GridComponentView =({grid,gridSize,cellSize,cellGap,previewPiece})=>{const totalCellSize = cellSize + cellGap;const canvasSize = gridSize * totalCellSize + cellGap;return _jsxs(Canvas,{style:{width:canvasSize,height:canvasSize},children:[_jsx(RoundedRect,{x:0,y:0,width:canvasSize,height:canvasSize,r:12,color:"rgba(26,29,58,0.8)"}),grid.map((row,rowIndex)=> row.map((cell,colIndex)=>{const x = colIndex * totalCellSize + cellGap;const y = rowIndex * totalCellSize + cellGap;const color = cell || BLOCK_BLAST_COLORS.EMPTY_CELL;return _jsxs(Group,{children:[_jsx(RoundedRect,{x:x,y:y,width:cellSize,height:cellSize,r:4,color:color}),cell && _jsx(RoundedRect,{x:x + 2,y:y + 2,width:cellSize - 4,height:cellSize / 3,r:3,color:"rgba(255,255,255,0.3)"})]},`cell-${rowIndex}-${colIndex}`);})),previewPiece && previewPiece.shape.map((row,rowIndex)=> row.map((cell,colIndex)=>{if(cell === 1){const gridRow = previewPiece.row + rowIndex;const gridCol = previewPiece.col + colIndex;if(gridRow >= 0 && gridRow < gridSize && gridCol >= 0 && gridCol < gridSize){const x = gridCol * totalCellSize + cellGap;const y = gridRow * totalCellSize + cellGap;const previewColor = previewPiece.canPlace ? previewPiece.color:'#ff4444';const opacity = previewPiece.canPlace ? 0.5:0.3;return _jsx(RoundedRect,{x:x,y:y,width:cellSize,height:cellSize,r:4,color:`${previewColor}${Math.floor(opacity * 255).toString(16).padStart(2,'0')}`},`preview-${rowIndex}-${colIndex}`);}}return null;}))]});};const areGridPropsEqual =(prevProps,nextProps)=>{if(prevProps.gridSize !== nextProps.gridSize || prevProps.cellSize !== nextProps.cellSize || prevProps.cellGap !== nextProps.cellGap){return false;}if(prevProps.previewPiece !== nextProps.previewPiece){if(!prevProps.previewPiece || !nextProps.previewPiece)return false;if(prevProps.previewPiece.row !== nextProps.previewPiece.row || prevProps.previewPiece.col !== nextProps.previewPiece.col || prevProps.previewPiece.canPlace !== nextProps.previewPiece.canPlace || prevProps.previewPiece.color !== nextProps.previewPiece.color){return false;}}for(let i = 0;i < prevProps.grid.length;i++){const prevRow = prevProps.grid[i];const nextRow = nextProps.grid[i];if(!prevRow || !nextRow)return false;for(let j = 0;j < prevRow.length;j++){if(prevRow[j] !== nextRow[j]){return false;}}}return true;};export const GridComponent = React.memo(GridComponentView,areGridPropsEqual);GridComponent.displayName = 'GridComponent';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Canvas","RoundedRect","Group","BLOCK_BLAST_COLORS","jsx","_jsx","jsxs","_jsxs","GridComponentView","grid","gridSize","cellSize","cellGap","previewPiece","totalCellSize","canvasSize","style","width","height","children","x","y","r","color","map","row","rowIndex","cell","colIndex","EMPTY_CELL","shape","gridRow","gridCol","col","previewColor","canPlace","opacity","Math","floor","toString","padStart","areGridPropsEqual","prevProps","nextProps","i","length","prevRow","nextRow","j","GridComponent","memo","displayName"],"sourceRoot":"../../../../../src","sources":["games/block-blast/components/GridComponent.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{ScoreBoardContainer}from "../../../helpers/index.js";import{useScore,useTimeRemaining}from "../BlockBlastStore.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const ScoreBoard = React.memo(({offset = 0})=>{const score = useScore();const timeRemaining = useTimeRemaining();const formattedTime = React.useMemo(()=>{const mins = Math.floor(timeRemaining / 60);const secs = timeRemaining % 60;return `${mins}:${secs.toString().padStart(2,'0')}`;},[timeRemaining]);const isLowTime = React.useMemo(()=> timeRemaining < 30,[timeRemaining]);return _jsx(ScoreBoardContainer,{offset:offset,backgroundColor:"rgba(255,105,180,0.4)",borderColor:"rgba(255,105,180,0.4)",children:_jsxs(View,{style:styles.rowContainer,children:[_jsxs(View,{style:styles.scoreSection,children:[_jsx(Text,{style:styles.label,children:"SCORE"}),_jsx(Text,{style:styles.value,children:score})]}),_jsxs(View,{style:styles.timerSection,children:[_jsx(Text,{style:styles.label,children:"TIME"}),_jsx(Text,{style:[styles.value,isLowTime && styles.lowTime],children:formattedTime})]})]})});});ScoreBoard.displayName = 'ScoreBoard';const styles = StyleSheet.create({rowContainer:{flexDirection:'row',justifyContent:'space-between',alignItems:'center',width:'100%'},scoreSection:{flex:1,alignItems:'center'},timerSection:{flex:1,alignItems:'center'},lowTime:{color:'#ff4444'},label:{fontSize:16,fontWeight:'bold',color:'#ffffff',marginBottom:4,letterSpacing:0.5},value:{fontSize:25,fontWeight:'bold',color:'#ffffff'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Text","StyleSheet","ScoreBoardContainer","useScore","useTimeRemaining","jsx","_jsx","jsxs","_jsxs","ScoreBoard","memo","offset","score","timeRemaining","formattedTime","useMemo","mins","Math","floor","secs","toString","padStart","isLowTime","backgroundColor","borderColor","children","style","styles","rowContainer","scoreSection","label","value","timerSection","lowTime","displayName","create","flexDirection","justifyContent","alignItems","width","flex","color","fontSize","fontWeight","marginBottom","letterSpacing"],"sourceRoot":"../../../../../src","sources":["games/block-blast/components/ScoreBoard.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export{ScoreBoard}from "./ScoreBoard.js";export{GridComponent}from "./GridComponent.js";export{BlockPieceComponent}from "./BlockPieceComponent.js";export{GameArea}from "./GameArea.js";export{GameBackground}from "./GameBackground.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ScoreBoard","GridComponent","BlockPieceComponent","GameArea","GameBackground"],"sourceRoot":"../../../../../src","sources":["games/block-blast/components/index.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,iBAAc;AACzC,SAASC,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,mBAAmB,QAAQ,0BAAuB;AAC3D,SAASC,QAAQ,QAAQ,eAAY;AACrC,SAASC,cAAc,QAAQ,qBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export{BlockBlast}from "./BlockBlast.js";export{BlockBlastService}from "./BlockBlastService.js";export{useBlockBlastStore}from "./BlockBlastStore.js";export * from "./BlockBlastConstants.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BlockBlast","BlockBlastService","useBlockBlastStore"],"sourceRoot":"../../../../src","sources":["games/block-blast/index.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,iBAAc;AACzC,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,kBAAkB,QAAQ,sBAAmB;AACtD,cAAc,0BAAuB","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{useBubbleShooterStore,useScore,useIsPlaying,useGameOver,useGameWon}from "./BubbleShooterStore.js";import{BubbleShooterService}from "./BubbleShooterService.js";import{BUBBLE_SHOOTER_COLORS,getDifficultySettings}from "./BubbleShooterConstants.js";import{ScoreBoard}from "./components/ScoreBoard.js";import{GameArea}from "./components/GameArea.js";import{GameBackground}from "./components/GameBackground.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const BubbleShooterComponent =({settings:externalSettings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const settings = 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{difficulty,soundEnabled,hapticEnabled,offset}= settings;const score = useScore();const isPlaying = useIsPlaying();const gameOver = useGameOver();const gameWon = useGameWon();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 resetGame = React.useCallback(()=> useBubbleShooterStore.getState().resetGame(),[]);const difficultySettings = React.useMemo(()=> getDifficultySettings(difficulty),[difficulty]);const gameService = React.useMemo(()=> new BubbleShooterService(),[]);React.useEffect(()=>{gameService.setDifficulty(difficultySettings.rowCount,difficultySettings.colorCount);},[gameService,difficultySettings.rowCount,difficultySettings.colorCount]);const handleShoot = React.useCallback(()=>{playSound(GAME_SOUNDS.BLOCK_BLAST.PLACE,soundEnabled);playHaptic(HapticType.LIGHT,hapticEnabled);},[soundEnabled,hapticEnabled]);const handleBubbleMatch = React.useCallback(()=>{playSound(GAME_SOUNDS.BLOCK_BLAST.CLEAR,soundEnabled);playHaptic(HapticType.SUCCESS,hapticEnabled);},[soundEnabled,hapticEnabled]);const handleGameWon = React.useCallback(()=>{playSound(GAME_SOUNDS.BLOCK_BLAST.START,soundEnabled);playHaptic(HapticType.SUCCESS,hapticEnabled);},[soundEnabled,hapticEnabled]);React.useEffect(()=>{gameService.setCallbacks(handleShoot,handleBubbleMatch,handleGameWon);},[gameService,handleShoot,handleBubbleMatch,handleGameWon]);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();useBubbleShooterStore.getState().resetGame();};},[gameService]);React.useEffect(()=>{if(!isPlaying)return;const gameLoop = setInterval(()=>{gameService.updateShootingBubble(offset);},1000 / 60);return()=> clearInterval(gameLoop);},[isPlaying,gameService,offset]);const handleStartGame = React.useCallback(()=>{gameReportedRef.current = false;useBubbleShooterStore.getState().startGame(difficultySettings.rowCount,difficultySettings.colorCount);gameService.startGame();playSound(GAME_SOUNDS.BLOCK_BLAST.START,soundEnabled);playHaptic(HapticType.SUCCESS,hapticEnabled);},[gameService,difficultySettings.rowCount,difficultySettings.colorCount,soundEnabled,hapticEnabled]);const handleStopGame = React.useCallback(()=>{reportGameEnd('cancel');resetGame();gameService.resetGame();},[resetGame,gameService,reportGameEnd]);const handleResetGame = React.useCallback(()=>{resetGame();gameService.resetGame();gameService.startGame();},[resetGame,gameService]);const handlePlayAgain = React.useCallback(()=>{handleResetGame();},[handleResetGame]);const gameControlButtonProps = React.useMemo(()=>({isPlaying,gameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonColor:BUBBLE_SHOOTER_COLORS.UI,stopButtonColor:BUBBLE_SHOOTER_COLORS.UI,startButtonBorderColor:BUBBLE_SHOOTER_COLORS.UI,stopButtonBorderColor:BUBBLE_SHOOTER_COLORS.UI,startButtonText:'START GAME',stopButtonText:'STOP GAME',startButtonSubtext:'Match 3+ bubbles of same color!'}),[isPlaying,gameOver,handleStartGame,handleStopGame]);const gameOverModalProps = React.useMemo(()=>({isVisible:gameOver,score,onPlayAgain:handlePlayAgain,buttonText:'Shoot Again!',primaryColor:'rgba(255,107,157,0.85)',borderColor:'rgba(255,107,157,0.9)',buttonColor:BUBBLE_SHOOTER_COLORS.UI,buttonBorderColor:BUBBLE_SHOOTER_COLORS.UI,buttonTextColor:'#ffffff',title:gameWon ? 'YOU WON!':'GAME OVER',message:gameWon ? 'All bubbles cleared!':'Great shooting!'}),[gameOver,score,handlePlayAgain,gameWon]);return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(GameBackground,{offset:offset,children:[_jsx(GameArea,{gameService:gameService,offset:offset + 15}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{gameId:GAME_IDS.BUBBLE_SHOOTER,settings:externalSettings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]})})});};const styles = StyleSheet.create({container:{flex:1}});export const BubbleShooter = React.memo(BubbleShooterComponent);BubbleShooter.displayName = 'BubbleShooter';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","GestureHandlerRootView","GameControlButton","GameOverModal","GameSettingsModal","DEFAULT_GAME_SETTINGS","GAME_IDS","playSound","GAME_SOUNDS","playHaptic","HapticType","useBubbleShooterStore","useScore","useIsPlaying","useGameOver","useGameWon","BubbleShooterService","BUBBLE_SHOOTER_COLORS","getDifficultySettings","ScoreBoard","GameArea","GameBackground","jsx","_jsx","jsxs","_jsxs","BubbleShooterComponent","settings","externalSettings","onSettingsChange","onEndGame","useMemo","difficulty","soundEnabled","enableSounds","hapticEnabled","enableHaptics","offset","score","isPlaying","gameOver","gameWon","gameReportedRef","useRef","reportGameEnd","useCallback","status","current","toString","resetGame","getState","difficultySettings","gameService","useEffect","setDifficulty","rowCount","colorCount","handleShoot","BLOCK_BLAST","PLACE","LIGHT","handleBubbleMatch","CLEAR","SUCCESS","handleGameWon","START","setCallbacks","cleanup","gameLoop","setInterval","updateShootingBubble","clearInterval","handleStartGame","startGame","handleStopGame","handleResetGame","handlePlayAgain","gameControlButtonProps","onStartGame","onStopGame","startButtonColor","UI","stopButtonColor","startButtonBorderColor","stopButtonBorderColor","startButtonText","stopButtonText","startButtonSubtext","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","title","message","style","styles","container","children","gameId","BUBBLE_SHOOTER","create","flex","BubbleShooter","memo","displayName"],"sourceRoot":"../../../../src","sources":["games/bubble-shooter/BubbleShooter.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export const BUBBLE_SHOOTER_DIFFICULTY_CONFIG ={easy:{rowCount:6,colorCount:4},medium:{rowCount:8,colorCount:5},hard:{rowCount:10,colorCount:6}};export const getDifficultySettings = difficulty =>{return BUBBLE_SHOOTER_DIFFICULTY_CONFIG[difficulty];};export const DEFAULT_BUBBLE_SHOOTER_SETTINGS ={difficulty:'medium',soundEnabled:true,hapticEnabled:true,rowCount:BUBBLE_SHOOTER_DIFFICULTY_CONFIG.medium.rowCount,colorCount:BUBBLE_SHOOTER_DIFFICULTY_CONFIG.medium.colorCount};export const BUBBLE_SHOOTER_GAME_CONFIG ={BUBBLE_RADIUS:18,BUBBLE_SPACING:2,SHOOTER_SIZE:50,SHOOTER_Y_OFFSET:40,BUBBLE_SPEED:12,POINTS_PER_BUBBLE:10,POINTS_PER_DROP:20,MIN_MATCH_COUNT:3,COLS_PER_ROW:9,ROW_OFFSET:0.5};export const BUBBLE_COLORS = ['#FF3B30','#FF9500','#FFCC00','#34C759','#007AFF','#5856D6','#FF2D55','#00C7BE' ];export const BUBBLE_SHOOTER_COLORS ={BACKGROUND:'#87CEEB',SHOOTER:'#ffffff',SHOOTER_ARROW:'#ff6b9d',SCORE:'#ffffff',UI:'#ff6b9d',CEILING:'#e0e0e0'};export const BUBBLE_SHOOTER_THEME ={backgroundColor:'rgba(0,0,0,0.7)',headerBackgroundColor:'#ff6b9d',headerTextColor:'#ffffff',sectionBackgroundColor:'rgba(255,107,157,0.15)',sectionTitleColor:'#ff6b9d',buttonSelectedColor:'#ff6b9d',buttonUnselectedColor:'rgba(255,255,255,0.2)',buttonSelectedTextColor:'#ffffff',buttonUnselectedTextColor:'rgba(255,255,255,0.7)',switchTrackColorFalse:'rgba(255,107,157,0.3)',switchTrackColorTrue:'#ff6b9d',switchThumbColor:'#ffffff',infoTextColor:'rgba(255,255,255,0.9)'};export const BUBBLE_SHOOTER_DIFFICULTY_DESCRIPTIONS ={easy:'Fewer rows and colors,easier matches',medium:'Balanced challenge with more bubbles',hard:'Many rows and colors,strategic play!'};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BUBBLE_SHOOTER_DIFFICULTY_CONFIG","easy","rowCount","colorCount","medium","hard","getDifficultySettings","difficulty","DEFAULT_BUBBLE_SHOOTER_SETTINGS","soundEnabled","hapticEnabled","BUBBLE_SHOOTER_GAME_CONFIG","BUBBLE_RADIUS","BUBBLE_SPACING","SHOOTER_SIZE","SHOOTER_Y_OFFSET","BUBBLE_SPEED","POINTS_PER_BUBBLE","POINTS_PER_DROP","MIN_MATCH_COUNT","COLS_PER_ROW","ROW_OFFSET","BUBBLE_COLORS","BUBBLE_SHOOTER_COLORS","BACKGROUND","SHOOTER","SHOOTER_ARROW","SCORE","UI","CEILING","BUBBLE_SHOOTER_THEME","backgroundColor","headerBackgroundColor","headerTextColor","sectionBackgroundColor","sectionTitleColor","buttonSelectedColor","buttonUnselectedColor","buttonSelectedTextColor","buttonUnselectedTextColor","switchTrackColorFalse","switchTrackColorTrue","switchThumbColor","infoTextColor","BUBBLE_SHOOTER_DIFFICULTY_DESCRIPTIONS"],"sourceRoot":"../../../../src","sources":["games/bubble-shooter/BubbleShooterConstants.ts"],"mappings":";;AAEA;;AASA;AACA,OAAO,MAAMA,gCAAgC,GAAG;EAC9CC,IAAI,EAAE;IACJC,QAAQ,EAAE,CAAC;IAAE;IACbC,UAAU,EAAE,CAAC,CAAE;EACjB,CAAC;EACDC,MAAM,EAAE;IACNF,QAAQ,EAAE,CAAC;IAAE;IACbC,UAAU,EAAE,CAAC,CAAE;EACjB,CAAC;EACDE,IAAI,EAAE;IACJH,QAAQ,EAAE,EAAE;IAAE;IACdC,UAAU,EAAE,CAAC,CAAE;EACjB;AACF,CAAU;;AAEV;AACA,OAAO,MAAMG,qBAAqB,GAAIC,UAAsC,IAAK;EAC/E,OAAOP,gCAAgC,CAACO,UAAU,CAAC;AACrD,CAAC;;AAED;AACA,OAAO,MAAMC,+BAAsD,GAAG;EACpED,UAAU,EAAE,QAAQ;EACpBE,YAAY,EAAE,IAAI;EAClBC,aAAa,EAAE,IAAI;EACnBR,QAAQ,EAAEF,gCAAgC,CAACI,MAAM,CAACF,QAAQ;EAC1DC,UAAU,EAAEH,gCAAgC,CAACI,MAAM,CAACD;AACtD,CAAC;;AAED;AACA,OAAO,MAAMQ,0BAA0B,GAAG;EACxCC,aAAa,EAAE,EAAE;EAAE;EACnBC,cAAc,EAAE,CAAC;EAAE;EACnBC,YAAY,EAAE,EAAE;EAAE;EAClBC,gBAAgB,EAAE,EAAE;EAAE;EACtBC,YAAY,EAAE,EAAE;EAAE;EAClBC,iBAAiB,EAAE,EAAE;EACrBC,eAAe,EAAE,EAAE;EAAE;EACrBC,eAAe,EAAE,CAAC;EAAE;EACpBC,YAAY,EAAE,CAAC;EAAE;EACjBC,UAAU,EAAE,GAAG,CAAE;AACnB,CAAU;;AAEV;AACA,OAAO,MAAMC,aAAa,GAAG,CAC3B,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS;AAAE;AACX,SAAS,CAAE;AAAA,CACH;AAEV,OAAO,MAAMC,qBAAqB,GAAG;EACnCC,UAAU,EAAE,SAAS;EAAE;EACvBC,OAAO,EAAE,SAAS;EAClBC,aAAa,EAAE,SAAS;EACxBC,KAAK,EAAE,SAAS;EAChBC,EAAE,EAAE,SAAS;EACbC,OAAO,EAAE;AACX,CAAU;;AAEV;AACA,OAAO,MAAMC,oBAAuC,GAAG;EACrDC,eAAe,EAAE,oBAAoB;EACrCC,qBAAqB,EAAE,SAAS;EAChCC,eAAe,EAAE,SAAS;EAC1BC,sBAAsB,EAAE,2BAA2B;EACnDC,iBAAiB,EAAE,SAAS;EAC5BC,mBAAmB,EAAE,SAAS;EAC9BC,qBAAqB,EAAE,0BAA0B;EACjDC,uBAAuB,EAAE,SAAS;EAClCC,yBAAyB,EAAE,0BAA0B;EACrDC,qBAAqB,EAAE,0BAA0B;EACjDC,oBAAoB,EAAE,SAAS;EAC/BC,gBAAgB,EAAE,SAAS;EAC3BC,aAAa,EAAE;AACjB,CAAC;;AAED;AACA,OAAO,MAAMC,sCAAsC,GAAG;EACpD3C,IAAI,EAAE,uCAAuC;EAC7CG,MAAM,EAAE,sCAAsC;EAC9CC,IAAI,EAAE;AACR,CAAU","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{Dimensions}from 'react-native';import{useBubbleShooterStore}from "./BubbleShooterStore.js";import{BUBBLE_SHOOTER_GAME_CONFIG,BUBBLE_COLORS}from "./BubbleShooterConstants.js";const{width}= Dimensions.get('window');export class BubbleShooterService{rowCount = 8;colorCount = 5;shooterX = width / 2;shooterY = 0;offset = 0;constructor(){}setCallbacks(onShoot,onBubbleMatch,onGameWon){this.onShoot = onShoot;this.onBubbleMatch = onBubbleMatch;this.onGameWon = onGameWon;}setDifficulty(rowCount,colorCount){this.rowCount = rowCount;this.colorCount = colorCount;}setShooterPosition(x,y,offset = 0){this.shooterX = x;this.shooterY = y;this.offset = offset;}startGame(){this.initializeBubbles();}stopGame(){}resetGame(){}cleanup(){}initializeBubbles(){const store = useBubbleShooterStore.getState();const bubbles = [];const radius = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_RADIUS;const spacing = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_SPACING;const diameter =(radius + spacing)* 2;const cols = BUBBLE_SHOOTER_GAME_CONFIG.COLS_PER_ROW;const gridWidth = cols * diameter;const startX =(width - gridWidth)/ 2 + radius;const availableColors = BUBBLE_COLORS.slice(0,this.colorCount);for(let row = 0;row < this.rowCount;row++){for(let col = 0;col < cols;col++){const xOffset = row % 2 === 1 ? diameter / 2:0;const x = startX + col * diameter + xOffset;const y = row * diameter * 0.866 + radius + 120 + this.offset;const color = availableColors[Math.floor(Math.random()* availableColors.length)];bubbles.push({id:`bubble-${row}-${col}`,row,col,color,x,y});}}store.updateBubbles(bubbles);const uniqueColors = [...new Set(bubbles.map(b => b.color))];const randomColor1 = uniqueColors[Math.floor(Math.random()* uniqueColors.length)];const randomColor2 = uniqueColors[Math.floor(Math.random()* uniqueColors.length)];useBubbleShooterStore.setState({currentBubbleColor:randomColor1,nextBubbleColor:randomColor2});}updateShootingBubble(_offset){const store = useBubbleShooterStore.getState();if(!store.shootingBubble)return;const bubble = store.shootingBubble;const radius = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_RADIUS;let newX = bubble.x + bubble.vx;let newY = bubble.y + bubble.vy;let newVx = bubble.vx;const wallPadding = 5;if(newX - radius < wallPadding){newX = radius + wallPadding;newVx = -newVx;}else if(newX + radius > width - wallPadding){newX = width - radius - wallPadding;newVx = -newVx;}if(newY - radius <= 50 + this.offset){this.snapBubbleToGrid(newX,newY,bubble.color);return;}const hitBubble = this.checkBubbleCollision(newX,newY);if(hitBubble){this.snapBubbleToGrid(newX,newY,bubble.color);return;}store.updateShootingBubble({...bubble,x:newX,y:newY,vx:newVx});}checkBubbleCollision(x,y){const bubbles = useBubbleShooterStore.getState().bubbles;const radius = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_RADIUS;const collisionDist = radius * 2;for(const bubble of bubbles){const dx = x - bubble.x;const dy = y - bubble.y;const dist = Math.sqrt(dx * dx + dy * dy);if(dist < collisionDist){return bubble;}}return null;}snapBubbleToGrid(x,y,color){const radius = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_RADIUS;const spacing = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_SPACING;const diameter =(radius + spacing)* 2;const store = useBubbleShooterStore.getState();if(store.bubbles.length === 0){const newBubble ={id:`bubble-${Date.now()}`,row:0,col:0,color,x:x,y:Math.max(y,50 + this.offset + radius)};store.addBubble(newBubble);store.clearShootingBubble();store.generateNextBubble();return;}const currentBubbles = store.bubbles;let collidedBubble = currentBubbles[0];let minDist = Infinity;for(let i = 0;i < currentBubbles.length;i++){const bubble = currentBubbles[i];if(!bubble)continue;const dx = x - bubble.x;const dy = y - bubble.y;const dist = Math.sqrt(dx * dx + dy * dy);if(dist < minDist){minDist = dist;collidedBubble = bubble;}}if(!collidedBubble)return;const dx = x - collidedBubble.x;const dy = y - collidedBubble.y;const distance = Math.sqrt(dx * dx + dy * dy);if(distance < 0.1){const newBubble ={id:`bubble-${Date.now()}`,row:0,col:0,color,x:collidedBubble.x,y:collidedBubble.y + diameter};store.addBubble(newBubble);const updatedBubbles = useBubbleShooterStore.getState().bubbles;const matches = this.findConnectedBubbles(newBubble,updatedBubbles);if(matches.length >= BUBBLE_SHOOTER_GAME_CONFIG.MIN_MATCH_COUNT){const matchIds = matches.map(b => b.id);store.removeBubbles(matchIds);const points = matches.length * BUBBLE_SHOOTER_GAME_CONFIG.POINTS_PER_BUBBLE;store.updateScore(points);this.onBubbleMatch?.();const remainingBubbles = useBubbleShooterStore.getState().bubbles;if(remainingBubbles.length === 0){this.onGameWon?.();store.setGameWon();}}store.clearShootingBubble();store.generateNextBubble();return;}const normalizedDx = dx / distance;const normalizedDy = dy / distance;let snapX = collidedBubble.x + normalizedDx * diameter;let snapY = collidedBubble.y + normalizedDy * diameter;const minY = 50 + this.offset + radius;const maxY = collidedBubble.y + diameter * 2;snapY = Math.max(minY,Math.min(maxY,snapY));const minX = radius + 5;const maxX = width - radius - 5;snapX = Math.max(minX,Math.min(maxX,snapX));const newBubble ={id:`bubble-${Date.now()}`,row:0,col:0,color,x:snapX,y:snapY};store.addBubble(newBubble);const updatedBubbles = useBubbleShooterStore.getState().bubbles;const matches = this.findConnectedBubbles(newBubble,updatedBubbles);if(matches.length >= BUBBLE_SHOOTER_GAME_CONFIG.MIN_MATCH_COUNT){const matchIds = matches.map(b => b.id);store.removeBubbles(matchIds);const points = matches.length * BUBBLE_SHOOTER_GAME_CONFIG.POINTS_PER_BUBBLE;store.updateScore(points);this.onBubbleMatch?.();const remainingBubbles = useBubbleShooterStore.getState().bubbles;if(remainingBubbles.length === 0){this.onGameWon?.();store.setGameWon();}}store.clearShootingBubble();store.generateNextBubble();}findConnectedBubbles(startBubble,allBubbles){const matches = [];const visited = new Set();const queue = [startBubble];const radius = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_RADIUS;const neighborDist = radius * 2.5;while(queue.length > 0){const current = queue.shift();if(visited.has(current.id))continue;visited.add(current.id);if(current.color === startBubble.color){matches.push(current);for(let i = 0;i < allBubbles.length;i++){const bubble = allBubbles[i];if(!bubble)continue;if(!visited.has(bubble.id)){const dx = current.x - bubble.x;const dy = current.y - bubble.y;const dist = Math.sqrt(dx * dx + dy * dy);if(dist < neighborDist && bubble.color === startBubble.color){queue.push(bubble);}}}}}return matches;}shoot(){const store = useBubbleShooterStore.getState();if(!store.isPlaying || store.shootingBubble){return;}const angle = store.shooterAngle;const speed = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_SPEED;const shootingBubble ={id:`shooting-${Date.now()}`,x:this.shooterX,y:this.shooterY,vx:Math.sin(angle)* speed,vy:-Math.cos(angle)* speed,color:store.currentBubbleColor};useBubbleShooterStore.getState().updateShootingBubble(shootingBubble);this.onShoot?.();}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Dimensions","useBubbleShooterStore","BUBBLE_SHOOTER_GAME_CONFIG","BUBBLE_COLORS","width","get","BubbleShooterService","rowCount","colorCount","shooterX","shooterY","offset","constructor","setCallbacks","onShoot","onBubbleMatch","onGameWon","setDifficulty","setShooterPosition","x","y","startGame","initializeBubbles","stopGame","resetGame","cleanup","store","getState","bubbles","radius","BUBBLE_RADIUS","spacing","BUBBLE_SPACING","diameter","cols","COLS_PER_ROW","gridWidth","startX","availableColors","slice","row","col","xOffset","color","Math","floor","random","length","push","id","updateBubbles","uniqueColors","Set","map","b","randomColor1","randomColor2","setState","currentBubbleColor","nextBubbleColor","updateShootingBubble","_offset","shootingBubble","bubble","newX","vx","newY","vy","newVx","wallPadding","snapBubbleToGrid","hitBubble","checkBubbleCollision","collisionDist","dx","dy","dist","sqrt","newBubble","Date","now","max","addBubble","clearShootingBubble","generateNextBubble","currentBubbles","collidedBubble","minDist","Infinity","i","distance","updatedBubbles","matches","findConnectedBubbles","MIN_MATCH_COUNT","matchIds","removeBubbles","points","POINTS_PER_BUBBLE","updateScore","remainingBubbles","setGameWon","normalizedDx","normalizedDy","snapX","snapY","minY","maxY","min","minX","maxX","startBubble","allBubbles","visited","queue","neighborDist","current","shift","has","add","shoot","isPlaying","angle","shooterAngle","speed","BUBBLE_SPEED","sin","cos"],"sourceRoot":"../../../../src","sources":["games/bubble-shooter/BubbleShooterService.ts"],"mappings":";;AAAA,SAASA,UAAU,QAAQ,cAAc;AACzC,SAASC,qBAAqB,QAAqB,yBAAsB;AACzE,SAASC,0BAA0B,EAAEC,aAAa,QAAQ,6BAA0B;AAEpF,MAAM;EAAEC;AAAM,CAAC,GAAGJ,UAAU,CAACK,GAAG,CAAC,QAAQ,CAAC;AAE1C,OAAO,MAAMC,oBAAoB,CAAC;EACxBC,QAAQ,GAAW,CAAC;EACpBC,UAAU,GAAW,CAAC;EACtBC,QAAQ,GAAWL,KAAK,GAAG,CAAC;EAC5BM,QAAQ,GAAW,CAAC;EACpBC,MAAM,GAAW,CAAC;;EAE1B;;EAKAC,WAAWA,CAAA,EAAG,CAAC;EAEfC,YAAYA,CACVC,OAAoB,EACpBC,aAA0B,EAC1BC,SAAsB,EACtB;IACA,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,SAAS,GAAGA,SAAS;EAC5B;EAEAC,aAAaA,CAACV,QAAgB,EAAEC,UAAkB,EAAE;IAClD,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,UAAU,GAAGA,UAAU;EAC9B;EAEAU,kBAAkBA,CAACC,CAAS,EAAEC,CAAS,EAAET,MAAc,GAAG,CAAC,EAAE;IAC3D,IAAI,CAACF,QAAQ,GAAGU,CAAC;IACjB,IAAI,CAACT,QAAQ,GAAGU,CAAC;IACjB,IAAI,CAACT,MAAM,GAAGA,MAAM;EACtB;EAEAU,SAASA,CAAA,EAAG;IACV,IAAI,CAACC,iBAAiB,CAAC,CAAC;EAC1B;EAEAC,QAAQA,CAAA,EAAG;IACT;EAAA;EAGFC,SAASA,CAAA,EAAG;IACV;EAAA;EAGFC,OAAOA,CAAA,EAAG;IACR;EAAA;;EAGF;EACAH,iBAAiBA,CAAA,EAAG;IAClB,MAAMI,KAAK,GAAGzB,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC;IAC9C,MAAMC,OAAiB,GAAG,EAAE;IAC5B,MAAMC,MAAM,GAAG3B,0BAA0B,CAAC4B,aAAa;IACvD,MAAMC,OAAO,GAAG7B,0BAA0B,CAAC8B,cAAc;IACzD,MAAMC,QAAQ,GAAG,CAACJ,MAAM,GAAGE,OAAO,IAAI,CAAC;IACvC,MAAMG,IAAI,GAAGhC,0BAA0B,CAACiC,YAAY;;IAEpD;IACA,MAAMC,SAAS,GAAGF,IAAI,GAAGD,QAAQ;IACjC,MAAMI,MAAM,GAAG,CAACjC,KAAK,GAAGgC,SAAS,IAAI,CAAC,GAAGP,MAAM;;IAE/C;IACA,MAAMS,eAAe,GAAGnC,aAAa,CAACoC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC/B,UAAU,CAAC;IAE/D,KAAK,IAAIgC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAG,IAAI,CAACjC,QAAQ,EAAEiC,GAAG,EAAE,EAAE;MAC5C,KAAK,IAAIC,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGP,IAAI,EAAEO,GAAG,EAAE,EAAE;QACnC;QACA,MAAMC,OAAO,GAAGF,GAAG,GAAG,CAAC,KAAK,CAAC,GAAGP,QAAQ,GAAG,CAAC,GAAG,CAAC;QAChD,MAAMd,CAAC,GAAGkB,MAAM,GAAGI,GAAG,GAAGR,QAAQ,GAAGS,OAAO;QAC3C,MAAMtB,CAAC,GAAGoB,GAAG,GAAGP,QAAQ,GAAG,KAAK,GAAGJ,MAAM,GAAG,GAAG,GAAG,IAAI,CAAClB,MAAM,CAAC,CAAC;;QAE/D;QACA,MAAMgC,KAAK,GAAGL,eAAe,CAACM,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAGR,eAAe,CAACS,MAAM,CAAC,CAAW;QAE3FnB,OAAO,CAACoB,IAAI,CAAC;UACXC,EAAE,EAAE,UAAUT,GAAG,IAAIC,GAAG,EAAE;UAC1BD,GAAG;UACHC,GAAG;UACHE,KAAK;UACLxB,CAAC;UACDC;QACF,CAAC,CAAC;MACJ;IACF;IAEAM,KAAK,CAACwB,aAAa,CAACtB,OAAO,CAAC;;IAE5B;IACA,MAAMuB,YAAY,GAAG,CAAC,GAAG,IAAIC,GAAG,CAACxB,OAAO,CAACyB,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACX,KAAK,CAAC,CAAC,CAAC;IAC9D,MAAMY,YAAY,GAAGJ,YAAY,CAACP,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAGK,YAAY,CAACJ,MAAM,CAAC,CAAC;IAClF,MAAMS,YAAY,GAAGL,YAAY,CAACP,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAGK,YAAY,CAACJ,MAAM,CAAC,CAAC;;IAElF;IACA9C,qBAAqB,CAACwD,QAAQ,CAAC;MAC7BC,kBAAkB,EAAEH,YAAY;MAChCI,eAAe,EAAEH;IACnB,CAAC,CAAC;EACJ;;EAEA;EACAI,oBAAoBA,CAACC,OAAe,EAAE;IACpC,MAAMnC,KAAK,GAAGzB,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAACD,KAAK,CAACoC,cAAc,EAAE;IAE3B,MAAMC,MAAM,GAAGrC,KAAK,CAACoC,cAAc;IACnC,MAAMjC,MAAM,GAAG3B,0BAA0B,CAAC4B,aAAa;;IAEvD;IACA,IAAIkC,IAAI,GAAGD,MAAM,CAAC5C,CAAC,GAAG4C,MAAM,CAACE,EAAE;IAC/B,IAAIC,IAAI,GAAGH,MAAM,CAAC3C,CAAC,GAAG2C,MAAM,CAACI,EAAE;IAC/B,IAAIC,KAAK,GAAGL,MAAM,CAACE,EAAE;;IAErB;IACA,MAAMI,WAAW,GAAG,CAAC;IACrB,IAAIL,IAAI,GAAGnC,MAAM,GAAGwC,WAAW,EAAE;MAC/BL,IAAI,GAAGnC,MAAM,GAAGwC,WAAW;MAC3BD,KAAK,GAAG,CAACA,KAAK;IAChB,CAAC,MAAM,IAAIJ,IAAI,GAAGnC,MAAM,GAAGzB,KAAK,GAAGiE,WAAW,EAAE;MAC9CL,IAAI,GAAG5D,KAAK,GAAGyB,MAAM,GAAGwC,WAAW;MACnCD,KAAK,GAAG,CAACA,KAAK;IAChB;;IAEA;IACA,IAAIF,IAAI,GAAGrC,MAAM,IAAI,EAAE,GAAG,IAAI,CAAClB,MAAM,EAAE;MACrC,IAAI,CAAC2D,gBAAgB,CAACN,IAAI,EAAEE,IAAI,EAAEH,MAAM,CAACpB,KAAK,CAAC;MAC/C;IACF;;IAEA;IACA,MAAM4B,SAAS,GAAG,IAAI,CAACC,oBAAoB,CAACR,IAAI,EAAEE,IAAI,CAAC;IACvD,IAAIK,SAAS,EAAE;MACb,IAAI,CAACD,gBAAgB,CAACN,IAAI,EAAEE,IAAI,EAAEH,MAAM,CAACpB,KAAK,CAAC;MAC/C;IACF;IAEAjB,KAAK,CAACkC,oBAAoB,CAAC;MACzB,GAAGG,MAAM;MACT5C,CAAC,EAAE6C,IAAI;MACP5C,CAAC,EAAE8C,IAAI;MACPD,EAAE,EAAEG;IACN,CAAC,CAAC;EACJ;;EAEA;EACAI,oBAAoBA,CAACrD,CAAS,EAAEC,CAAS,EAAiB;IACxD,MAAMQ,OAAO,GAAG3B,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC,CAACC,OAAO;IACxD,MAAMC,MAAM,GAAG3B,0BAA0B,CAAC4B,aAAa;IACvD,MAAM2C,aAAa,GAAG5C,MAAM,GAAG,CAAC;IAEhC,KAAK,MAAMkC,MAAM,IAAInC,OAAO,EAAE;MAC5B,MAAM8C,EAAE,GAAGvD,CAAC,GAAG4C,MAAM,CAAC5C,CAAC;MACvB,MAAMwD,EAAE,GAAGvD,CAAC,GAAG2C,MAAM,CAAC3C,CAAC;MACvB,MAAMwD,IAAI,GAAGhC,IAAI,CAACiC,IAAI,CAACH,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,CAAC;MAEzC,IAAIC,IAAI,GAAGH,aAAa,EAAE;QACxB,OAAOV,MAAM;MACf;IACF;IAEA,OAAO,IAAI;EACb;;EAEA;EACAO,gBAAgBA,CAACnD,CAAS,EAAEC,CAAS,EAAEuB,KAAa,EAAE;IACpD,MAAMd,MAAM,GAAG3B,0BAA0B,CAAC4B,aAAa;IACvD,MAAMC,OAAO,GAAG7B,0BAA0B,CAAC8B,cAAc;IACzD,MAAMC,QAAQ,GAAG,CAACJ,MAAM,GAAGE,OAAO,IAAI,CAAC;;IAEvC;IACA,MAAML,KAAK,GAAGzB,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC;;IAE9C;IACA,IAAID,KAAK,CAACE,OAAO,CAACmB,MAAM,KAAK,CAAC,EAAE;MAC9B,MAAM+B,SAAiB,GAAG;QACxB7B,EAAE,EAAE,UAAU8B,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE;QAC1BxC,GAAG,EAAE,CAAC;QACNC,GAAG,EAAE,CAAC;QACNE,KAAK;QACLxB,CAAC,EAAEA,CAAC;QACJC,CAAC,EAAEwB,IAAI,CAACqC,GAAG,CAAC7D,CAAC,EAAE,EAAE,GAAG,IAAI,CAACT,MAAM,GAAGkB,MAAM;MAC1C,CAAC;MACDH,KAAK,CAACwD,SAAS,CAACJ,SAAS,CAAC;MAC1BpD,KAAK,CAACyD,mBAAmB,CAAC,CAAC;MAC3BzD,KAAK,CAAC0D,kBAAkB,CAAC,CAAC;MAC1B;IACF;;IAEA;IACA,MAAMC,cAAc,GAAG3D,KAAK,CAACE,OAAO;IACpC,IAAI0D,cAAc,GAAGD,cAAc,CAAC,CAAC,CAAC;IACtC,IAAIE,OAAO,GAAGC,QAAQ;IAEtB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,cAAc,CAACtC,MAAM,EAAE0C,CAAC,EAAE,EAAE;MAC9C,MAAM1B,MAAM,GAAGsB,cAAc,CAACI,CAAC,CAAC;MAChC,IAAI,CAAC1B,MAAM,EAAE;MACb,MAAMW,EAAE,GAAGvD,CAAC,GAAG4C,MAAM,CAAC5C,CAAC;MACvB,MAAMwD,EAAE,GAAGvD,CAAC,GAAG2C,MAAM,CAAC3C,CAAC;MACvB,MAAMwD,IAAI,GAAGhC,IAAI,CAACiC,IAAI,CAACH,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,CAAC;MACzC,IAAIC,IAAI,GAAGW,OAAO,EAAE;QAClBA,OAAO,GAAGX,IAAI;QACdU,cAAc,GAAGvB,MAAM;MACzB;IACF;IAEA,IAAI,CAACuB,cAAc,EAAE;;IAErB;IACA,MAAMZ,EAAE,GAAGvD,CAAC,GAAGmE,cAAc,CAACnE,CAAC;IAC/B,MAAMwD,EAAE,GAAGvD,CAAC,GAAGkE,cAAc,CAAClE,CAAC;IAC/B,MAAMsE,QAAQ,GAAG9C,IAAI,CAACiC,IAAI,CAACH,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,CAAC;;IAE7C;IACA,IAAIe,QAAQ,GAAG,GAAG,EAAE;MAClB,MAAMZ,SAAiB,GAAG;QACxB7B,EAAE,EAAE,UAAU8B,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE;QAC1BxC,GAAG,EAAE,CAAC;QACNC,GAAG,EAAE,CAAC;QACNE,KAAK;QACLxB,CAAC,EAAEmE,cAAc,CAAEnE,CAAC;QACpBC,CAAC,EAAEkE,cAAc,CAAElE,CAAC,GAAGa;MACzB,CAAC;MACDP,KAAK,CAACwD,SAAS,CAACJ,SAAS,CAAC;MAE1B,MAAMa,cAAc,GAAG1F,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC,CAACC,OAAO;MAC/D,MAAMgE,OAAO,GAAG,IAAI,CAACC,oBAAoB,CAACf,SAAS,EAAEa,cAAc,CAAC;MAEpE,IAAIC,OAAO,CAAC7C,MAAM,IAAI7C,0BAA0B,CAAC4F,eAAe,EAAE;QAChE,MAAMC,QAAQ,GAAGH,OAAO,CAACvC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACL,EAAE,CAAC;QACzCvB,KAAK,CAACsE,aAAa,CAACD,QAAQ,CAAC;QAC7B,MAAME,MAAM,GAAGL,OAAO,CAAC7C,MAAM,GAAG7C,0BAA0B,CAACgG,iBAAiB;QAC5ExE,KAAK,CAACyE,WAAW,CAACF,MAAM,CAAC;QACzB,IAAI,CAAClF,aAAa,GAAG,CAAC;QAEtB,MAAMqF,gBAAgB,GAAGnG,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC,CAACC,OAAO;QACjE,IAAIwE,gBAAgB,CAACrD,MAAM,KAAK,CAAC,EAAE;UACjC,IAAI,CAAC/B,SAAS,GAAG,CAAC;UAClBU,KAAK,CAAC2E,UAAU,CAAC,CAAC;QACpB;MACF;MAEA3E,KAAK,CAACyD,mBAAmB,CAAC,CAAC;MAC3BzD,KAAK,CAAC0D,kBAAkB,CAAC,CAAC;MAC1B;IACF;;IAEA;IACA,MAAMkB,YAAY,GAAG5B,EAAE,GAAGgB,QAAQ;IAClC,MAAMa,YAAY,GAAG5B,EAAE,GAAGe,QAAQ;IAElC,IAAIc,KAAK,GAAGlB,cAAc,CAAEnE,CAAC,GAAGmF,YAAY,GAAGrE,QAAQ;IACvD,IAAIwE,KAAK,GAAGnB,cAAc,CAAElE,CAAC,GAAGmF,YAAY,GAAGtE,QAAQ;;IAEvD;IACA,MAAMyE,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC/F,MAAM,GAAGkB,MAAM;IACtC,MAAM8E,IAAI,GAAGrB,cAAc,CAAElE,CAAC,GAAGa,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC/CwE,KAAK,GAAG7D,IAAI,CAACqC,GAAG,CAACyB,IAAI,EAAE9D,IAAI,CAACgE,GAAG,CAACD,IAAI,EAAEF,KAAK,CAAC,CAAC;;IAE7C;IACA,MAAMI,IAAI,GAAGhF,MAAM,GAAG,CAAC;IACvB,MAAMiF,IAAI,GAAG1G,KAAK,GAAGyB,MAAM,GAAG,CAAC;IAC/B2E,KAAK,GAAG5D,IAAI,CAACqC,GAAG,CAAC4B,IAAI,EAAEjE,IAAI,CAACgE,GAAG,CAACE,IAAI,EAAEN,KAAK,CAAC,CAAC;IAE7C,MAAM1B,SAAiB,GAAG;MACxB7B,EAAE,EAAE,UAAU8B,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE;MAC1BxC,GAAG,EAAE,CAAC;MACNC,GAAG,EAAE,CAAC;MACNE,KAAK;MACLxB,CAAC,EAAEqF,KAAK;MACRpF,CAAC,EAAEqF;IACL,CAAC;;IAED;IACA/E,KAAK,CAACwD,SAAS,CAACJ,SAAS,CAAC;;IAE1B;IACA,MAAMa,cAAc,GAAG1F,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC,CAACC,OAAO;;IAE/D;IACA,MAAMgE,OAAO,GAAG,IAAI,CAACC,oBAAoB,CAACf,SAAS,EAAEa,cAAc,CAAC;IAEpE,IAAIC,OAAO,CAAC7C,MAAM,IAAI7C,0BAA0B,CAAC4F,eAAe,EAAE;MAChE;MACA,MAAMC,QAAQ,GAAGH,OAAO,CAACvC,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACL,EAAE,CAAC;MACzCvB,KAAK,CAACsE,aAAa,CAACD,QAAQ,CAAC;;MAE7B;MACA,MAAME,MAAM,GAAGL,OAAO,CAAC7C,MAAM,GAAG7C,0BAA0B,CAACgG,iBAAiB;MAC5ExE,KAAK,CAACyE,WAAW,CAACF,MAAM,CAAC;MAEzB,IAAI,CAAClF,aAAa,GAAG,CAAC;;MAEtB;MACA,MAAMqF,gBAAgB,GAAGnG,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC,CAACC,OAAO;MACjE,IAAIwE,gBAAgB,CAACrD,MAAM,KAAK,CAAC,EAAE;QACjC,IAAI,CAAC/B,SAAS,GAAG,CAAC;QAClBU,KAAK,CAAC2E,UAAU,CAAC,CAAC;MACpB;IACF;;IAEA;IACA3E,KAAK,CAACyD,mBAAmB,CAAC,CAAC;IAC3BzD,KAAK,CAAC0D,kBAAkB,CAAC,CAAC;EAC5B;;EAGA;EACAS,oBAAoBA,CAACkB,WAAmB,EAAEC,UAAoB,EAAY;IACxE,MAAMpB,OAAiB,GAAG,EAAE;IAC5B,MAAMqB,OAAO,GAAG,IAAI7D,GAAG,CAAS,CAAC;IACjC,MAAM8D,KAAK,GAAG,CAACH,WAAW,CAAC;IAC3B,MAAMlF,MAAM,GAAG3B,0BAA0B,CAAC4B,aAAa;IACvD,MAAMqF,YAAY,GAAGtF,MAAM,GAAG,GAAG,CAAC,CAAC;;IAEnC,OAAOqF,KAAK,CAACnE,MAAM,GAAG,CAAC,EAAE;MACvB,MAAMqE,OAAO,GAAGF,KAAK,CAACG,KAAK,CAAC,CAAE;MAE9B,IAAIJ,OAAO,CAACK,GAAG,CAACF,OAAO,CAACnE,EAAE,CAAC,EAAE;MAC7BgE,OAAO,CAACM,GAAG,CAACH,OAAO,CAACnE,EAAE,CAAC;MAEvB,IAAImE,OAAO,CAACzE,KAAK,KAAKoE,WAAW,CAACpE,KAAK,EAAE;QACvCiD,OAAO,CAAC5C,IAAI,CAACoE,OAAO,CAAC;;QAErB;QACA,KAAK,IAAI3B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuB,UAAU,CAACjE,MAAM,EAAE0C,CAAC,EAAE,EAAE;UAC1C,MAAM1B,MAAM,GAAGiD,UAAU,CAACvB,CAAC,CAAC;UAC5B,IAAI,CAAC1B,MAAM,EAAE;UACb,IAAI,CAACkD,OAAO,CAACK,GAAG,CAACvD,MAAM,CAACd,EAAE,CAAC,EAAE;YAC3B,MAAMyB,EAAE,GAAG0C,OAAO,CAACjG,CAAC,GAAG4C,MAAM,CAAC5C,CAAC;YAC/B,MAAMwD,EAAE,GAAGyC,OAAO,CAAChG,CAAC,GAAG2C,MAAM,CAAC3C,CAAC;YAC/B,MAAMwD,IAAI,GAAGhC,IAAI,CAACiC,IAAI,CAACH,EAAE,GAAGA,EAAE,GAAGC,EAAE,GAAGA,EAAE,CAAC;YAEzC,IAAIC,IAAI,GAAGuC,YAAY,IAAIpD,MAAM,CAACpB,KAAK,KAAKoE,WAAW,CAACpE,KAAK,EAAE;cAC7DuE,KAAK,CAAClE,IAAI,CAACe,MAAM,CAAC;YACpB;UACF;QACF;MACF;IACF;IAEA,OAAO6B,OAAO;EAChB;;EAEA;EACA4B,KAAKA,CAAA,EAAG;IACN,MAAM9F,KAAK,GAAGzB,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC;IAE9C,IAAI,CAACD,KAAK,CAAC+F,SAAS,IAAI/F,KAAK,CAACoC,cAAc,EAAE;MAC5C;IACF;;IAEA;IACA,MAAM4D,KAAK,GAAGhG,KAAK,CAACiG,YAAY;IAChC,MAAMC,KAAK,GAAG1H,0BAA0B,CAAC2H,YAAY;IAErD,MAAM/D,cAAc,GAAG;MACrBb,EAAE,EAAE,YAAY8B,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE;MAC5B7D,CAAC,EAAE,IAAI,CAACV,QAAQ;MAChBW,CAAC,EAAE,IAAI,CAACV,QAAQ;MAChBuD,EAAE,EAAErB,IAAI,CAACkF,GAAG,CAACJ,KAAK,CAAC,GAAGE,KAAK;MAC3BzD,EAAE,EAAE,CAACvB,IAAI,CAACmF,GAAG,CAACL,KAAK,CAAC,GAAGE,KAAK;MAC5BjF,KAAK,EAAEjB,KAAK,CAACgC;IACf,CAAC;IAEDzD,qBAAqB,CAAC0B,QAAQ,CAAC,CAAC,CAACiC,oBAAoB,CAACE,cAAc,CAAC;IAErE,IAAI,CAAChD,OAAO,GAAG,CAAC;EAClB;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import{create}from 'zustand';import{subscribeWithSelector}from 'zustand/middleware';import{immerMiddleware}from "../../services/UtilsService.js";import{BUBBLE_SHOOTER_GAME_CONFIG}from "./BubbleShooterConstants.js";export const useBubbleShooterStore = create()(subscribeWithSelector(immerMiddleware((set,get)=>({score:0,isPlaying:false,gameOver:false,gameWon:false,shooterAngle:0,bubbles:[],shootingBubble:null,nextBubbleColor:'#FF3B30',currentBubbleColor:'#FF3B30',startGame:(_rowCount,_colorCount)=>{set(draft =>{draft.score = 0;draft.isPlaying = true;draft.gameOver = false;draft.gameWon = false;draft.shootingBubble = null;draft.bubbles = [];});},stopGame:()=>{set(draft =>{draft.isPlaying = false;});},resetGame:()=>{set(draft =>{draft.score = 0;draft.isPlaying = false;draft.gameOver = false;draft.gameWon = false;draft.shooterAngle = 0;draft.bubbles = [];draft.shootingBubble = null;});},updateScore:points =>{set(draft =>{draft.score = draft.score + points;});},setShooterAngle:angle =>{set(draft =>{draft.shooterAngle = angle;});},shootBubble:()=>{const state = get();if(state.shootingBubble)return;const angle = state.shooterAngle;const speed = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_SPEED;set(draft =>{draft.shootingBubble ={id:`shooting-${Date.now()}`,x:0,y:0,vx:Math.sin(angle)* speed,vy:-Math.cos(angle)* speed,color:draft.currentBubbleColor};});},updateShootingBubble:bubble =>{set(draft =>{const{width}= require('react-native').Dimensions.get('window');const radius = 18;const minX = radius + 5;const maxX = width - radius - 5;draft.shootingBubble ={...bubble,x:Math.max(minX,Math.min(maxX,bubble.x))};});},clearShootingBubble:()=>{set(draft =>{draft.currentBubbleColor = draft.nextBubbleColor;draft.shootingBubble = null;});},addBubble:bubble =>{set(draft =>{const{width}= require('react-native').Dimensions.get('window');const radius = 18;const minX = radius + 5;const maxX = width - radius - 5;const clampedBubble ={...bubble,x:Math.max(minX,Math.min(maxX,bubble.x))};draft.bubbles.push(clampedBubble);});},removeBubbles:bubbleIds =>{set(draft =>{draft.bubbles = draft.bubbles.filter(b => !bubbleIds.includes(b.id));});},updateBubbles:bubbles =>{set(draft =>{const{width}= require('react-native').Dimensions.get('window');const radius = 18;const minX = radius + 5;const maxX = width - radius - 5;draft.bubbles = bubbles.map(bubble =>({...bubble,x:Math.max(minX,Math.min(maxX,bubble.x))}));});},setGameOver:()=>{set(draft =>{draft.gameOver = true;draft.isPlaying = false;});},setGameWon:()=>{set(draft =>{draft.gameWon = true;draft.gameOver = true;draft.isPlaying = false;});},generateNextBubble:()=>{set(draft =>{const uniqueColors = [...new Set(draft.bubbles.map(b => b.color))];if(uniqueColors.length === 0){const defaultColors = ['#FF3B30','#FF9500','#FFCC00','#34C759','#007AFF'];draft.nextBubbleColor = defaultColors[Math.floor(Math.random()* defaultColors.length)];}else{draft.nextBubbleColor = uniqueColors[Math.floor(Math.random()* uniqueColors.length)];}});}}))));export const useScore =()=> useBubbleShooterStore(state => state.score);export const useIsPlaying =()=> useBubbleShooterStore(state => state.isPlaying);export const useGameOver =()=> useBubbleShooterStore(state => state.gameOver);export const useGameWon =()=> useBubbleShooterStore(state => state.gameWon);export const useShooterAngle =()=> useBubbleShooterStore(state => state.shooterAngle);export const useBubbles =()=> useBubbleShooterStore(state => state.bubbles);export const useShootingBubble =()=> useBubbleShooterStore(state => state.shootingBubble);export const useCurrentBubbleColor =()=> useBubbleShooterStore(state => state.currentBubbleColor);export const useNextBubbleColor =()=> useBubbleShooterStore(state => state.nextBubbleColor);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["create","subscribeWithSelector","immerMiddleware","BUBBLE_SHOOTER_GAME_CONFIG","useBubbleShooterStore","set","get","score","isPlaying","gameOver","gameWon","shooterAngle","bubbles","shootingBubble","nextBubbleColor","currentBubbleColor","startGame","_rowCount","_colorCount","draft","stopGame","resetGame","updateScore","points","setShooterAngle","angle","shootBubble","state","speed","BUBBLE_SPEED","id","Date","now","x","y","vx","Math","sin","vy","cos","color","updateShootingBubble","bubble","width","require","Dimensions","radius","minX","maxX","max","min","clearShootingBubble","addBubble","clampedBubble","push","removeBubbles","bubbleIds","filter","b","includes","updateBubbles","map","setGameOver","setGameWon","generateNextBubble","uniqueColors","Set","length","defaultColors","floor","random","useScore","useIsPlaying","useGameOver","useGameWon","useShooterAngle","useBubbles","useShootingBubble","useCurrentBubbleColor","useNextBubbleColor"],"sourceRoot":"../../../../src","sources":["games/bubble-shooter/BubbleShooterStore.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{View,StyleSheet,Dimensions}from 'react-native';import{Gesture,GestureDetector}from 'react-native-gesture-handler';import{runOnJS,useSharedValue,withRepeat,withSpring,useDerivedValue}from 'react-native-reanimated';import{Canvas,Circle,Group,Line,vec}from '@shopify/react-native-skia';import{useBubbleShooterStore}from "../BubbleShooterStore.js";import{BUBBLE_SHOOTER_GAME_CONFIG,BUBBLE_SHOOTER_COLORS}from "../BubbleShooterConstants.js";import{ParticleBlast}from "../../../helpers/index.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const GameAreaComponent =({gameService,offset})=>{const bubbles = useBubbleShooterStore(state => state.bubbles);const shootingBubble = useBubbleShooterStore(state => state.shootingBubble);const shooterAngle = useBubbleShooterStore(state => state.shooterAngle);const currentBubbleColor = useBubbleShooterStore(state => state.currentBubbleColor);const nextBubbleColor = useBubbleShooterStore(state => state.nextBubbleColor);const isPlaying = useBubbleShooterStore(state => state.isPlaying);const [activeBlasts,setActiveBlasts] = React.useState([]);const bubbleScale = useSharedValue(1);const nextBubbleScale = useSharedValue(1);const shooterX = width / 2;const shooterY = height - offset - BUBBLE_SHOOTER_GAME_CONFIG.SHOOTER_Y_OFFSET;const radius = BUBBLE_SHOOTER_GAME_CONFIG.BUBBLE_RADIUS;React.useEffect(()=>{gameService.setShooterPosition(shooterX,shooterY,offset);},[gameService,shooterX,shooterY,offset]);React.useEffect(()=>{if(isPlaying && !shootingBubble){bubbleScale.value = withRepeat(withSpring(1.1,{damping:3,stiffness:100,mass:0.5}),-1,true);nextBubbleScale.value = withRepeat(withSpring(1.15,{damping:2.5,stiffness:90,mass:0.6}),-1,true);}else{bubbleScale.value = withSpring(1,{damping:10,stiffness:100});nextBubbleScale.value = withSpring(1,{damping:10,stiffness:100});}},[isPlaying,shootingBubble]);const animatedRadius = useDerivedValue(()=> radius * bubbleScale.value);const animatedNextRadius = useDerivedValue(()=> radius * 0.6 * nextBubbleScale.value);const handleTouchMove = React.useCallback((x,y)=>{if(!isPlaying)return;const dx = x - shooterX;const dy = y - shooterY;const angle = Math.atan2(dx,-dy);const clampedAngle = Math.max(-Math.PI * 0.4,Math.min(Math.PI * 0.4,angle));useBubbleShooterStore.getState().setShooterAngle(clampedAngle);},[isPlaying,shooterX,shooterY]);const handleTap = React.useCallback(()=>{if(!isPlaying || shootingBubble){return;}gameService.shoot();},[gameService,isPlaying,shootingBubble]);const createBlastParticles = React.useCallback((x,y,color)=>{const newBlast ={id:`blast-${Date.now()}-${Math.random()}`,x,y,color};setActiveBlasts(prev => [...prev,newBlast]);},[]);const handleBlastComplete = React.useCallback(blastId =>{setActiveBlasts(prev => prev.filter(blast => blast.id !== blastId));},[]);React.useEffect(()=>{const unsubscribe = useBubbleShooterStore.subscribe(state => state.bubbles,(currentBubbles,previousBubbles)=>{if(!isPlaying || previousBubbles.length === 0)return;if(previousBubbles.length > currentBubbles.length){const removedBubbles = previousBubbles.filter(prevBubble => !currentBubbles.some(currBubble => currBubble.id === prevBubble.id));removedBubbles.forEach(bubble =>{createBlastParticles(bubble.x,bubble.y,bubble.color);});}});return()=> unsubscribe();},[createBlastParticles,isPlaying]);const panGesture = React.useMemo(()=> Gesture.Pan().onBegin(event =>{'worklet';runOnJS(handleTouchMove)(event.absoluteX,event.absoluteY);}).onUpdate(event =>{'worklet';runOnJS(handleTouchMove)(event.absoluteX,event.absoluteY);}).onEnd(()=>{'worklet';runOnJS(handleTap)();}),[handleTouchMove,handleTap]);const tapGesture = React.useMemo(()=> Gesture.Tap().onStart(event =>{'worklet';runOnJS(handleTouchMove)(event.absoluteX,event.absoluteY);}).onEnd(()=>{'worklet';runOnJS(handleTap)();}),[handleTouchMove,handleTap]);const composedGesture = Gesture.Race(panGesture,tapGesture);const aimLineLength = 150;const aimEndX = shooterX + Math.sin(shooterAngle)* aimLineLength;const aimEndY = shooterY - Math.cos(shooterAngle)* aimLineLength;return _jsx(GestureDetector,{gesture:composedGesture,children:_jsxs(View,{style:styles.container,children:[_jsxs(Canvas,{style:styles.canvas,children:[bubbles.map(bubble => _jsxs(Group,{children:[_jsx(Circle,{cx:bubble.x,cy:bubble.y,r:radius,color:bubble.color}),_jsx(Circle,{cx:bubble.x - radius * 0.3,cy:bubble.y - radius * 0.3,r:radius * 0.3,color:"rgba(255,255,255,0.4)"})]},bubble.id)),shootingBubble && _jsxs(Group,{children:[_jsx(Circle,{cx:shootingBubble.x,cy:shootingBubble.y,r:radius,color:shootingBubble.color}),_jsx(Circle,{cx:shootingBubble.x - radius * 0.3,cy:shootingBubble.y - radius * 0.3,r:radius * 0.3,color:"rgba(255,255,255,0.4)"})]}),isPlaying && !shootingBubble && _jsxs(Group,{children:[_jsx(Line,{p1:vec(shooterX,shooterY),p2:vec(aimEndX,aimEndY),color:BUBBLE_SHOOTER_COLORS.SHOOTER_ARROW,style:"stroke",strokeWidth:2}),_jsx(Circle,{cx:shooterX,cy:shooterY,r:animatedRadius,color:currentBubbleColor}),_jsx(Circle,{cx:shooterX - radius * 0.3,cy:shooterY - radius * 0.3,r:radius * 0.3,color:"rgba(255,255,255,0.4)"}),_jsx(Circle,{cx:shooterX + 50,cy:shooterY,r:animatedNextRadius,color:nextBubbleColor}),_jsx(Circle,{cx:shooterX + 50 - radius * 0.18,cy:shooterY - radius * 0.18,r:radius * 0.18,color:"rgba(255,255,255,0.4)"})]})]}),activeBlasts.map(blast => _jsx(ParticleBlast,{x:blast.x,y:blast.y,colors:[blast.color],particleCount:12,onComplete:()=> handleBlastComplete(blast.id)},blast.id))]})});};const styles = StyleSheet.create({container:{flex:1},canvas:{flex:1,width,height}});const areGameAreaPropsEqual =(prevProps,nextProps)=>{return prevProps.offset === nextProps.offset && prevProps.gameService === nextProps.gameService;};export const GameArea = React.memo(GameAreaComponent,areGameAreaPropsEqual);GameArea.displayName = 'GameArea';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","Dimensions","Gesture","GestureDetector","runOnJS","useSharedValue","withRepeat","withSpring","useDerivedValue","Canvas","Circle","Group","Line","vec","useBubbleShooterStore","BUBBLE_SHOOTER_GAME_CONFIG","BUBBLE_SHOOTER_COLORS","ParticleBlast","jsx","_jsx","jsxs","_jsxs","width","height","get","GameAreaComponent","gameService","offset","bubbles","state","shootingBubble","shooterAngle","currentBubbleColor","nextBubbleColor","isPlaying","activeBlasts","setActiveBlasts","useState","bubbleScale","nextBubbleScale","shooterX","shooterY","SHOOTER_Y_OFFSET","radius","BUBBLE_RADIUS","useEffect","setShooterPosition","value","damping","stiffness","mass","animatedRadius","animatedNextRadius","handleTouchMove","useCallback","x","y","dx","dy","angle","Math","atan2","clampedAngle","max","PI","min","getState","setShooterAngle","handleTap","shoot","createBlastParticles","color","newBlast","id","Date","now","random","prev","handleBlastComplete","blastId","filter","blast","unsubscribe","subscribe","currentBubbles","previousBubbles","length","removedBubbles","prevBubble","some","currBubble","forEach","bubble","panGesture","useMemo","Pan","onBegin","event","absoluteX","absoluteY","onUpdate","onEnd","tapGesture","Tap","onStart","composedGesture","Race","aimLineLength","aimEndX","sin","aimEndY","cos","gesture","children","style","styles","container","canvas","map","cx","cy","r","p1","p2","SHOOTER_ARROW","strokeWidth","colors","particleCount","onComplete","create","flex","areGameAreaPropsEqual","prevProps","nextProps","GameArea","memo","displayName"],"sourceRoot":"../../../../../src","sources":["games/bubble-shooter/components/GameArea.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{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');const BUBBLE_COLORS = ['#FF1493','#FF69B4','#FF6347','#FF8C00','#FFD700','#ADFF2F','#00FA9A','#00CED1','#1E90FF','#9370DB','#BA55D3','#FF1493' ];export const GameBackground = React.memo(({children})=>{const generateFloatingBubbles = React.useMemo(()=>{const elements = [];const bubbleCount = 30;for(let i = 0;i < bubbleCount;i++){const baseX = width / bubbleCount * i;const baseY = height / bubbleCount * i;const x = baseX + Math.sin(i * 0.8)* 70 + Math.random()* 120;const y = baseY + Math.cos(i * 0.6)* 80 + Math.random()* 100;const bubbleSize = 15 + Math.random()* 35;const colorIndex = i % BUBBLE_COLORS.length;const opacity = 0.2 + Math.sin(i * 1.2)* 0.15;const bubbleX = Math.max(bubbleSize,Math.min(width - bubbleSize,x));const bubbleY = Math.max(bubbleSize,Math.min(height - bubbleSize,y));elements.push(_jsx(Circle,{cx:bubbleX,cy:bubbleY,r:bubbleSize,color:`${BUBBLE_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2,'0')}`},`bubble-${i}`));}return elements;},[]);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:[`${BUBBLE_COLORS[0]}35`,`${BUBBLE_COLORS[4]}30`,`${BUBBLE_COLORS[6]}35`,`${BUBBLE_COLORS[8]}30`,`${BUBBLE_COLORS[10]}35` ]})}),_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(width / 2,height / 2),end:vec(width,height),colors:[`${BUBBLE_COLORS[2]}25`,'transparent',`${BUBBLE_COLORS[5]}25`,'transparent',`${BUBBLE_COLORS[7]}25`,'transparent']})}),_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(width * 0.3,height * 0.3),end:vec(width * 0.7,height * 0.7),colors:[`${BUBBLE_COLORS[3]}18`,'transparent',`${BUBBLE_COLORS[9]}18`,'transparent',`${BUBBLE_COLORS[1]}18`,'transparent']})}),generateFloatingBubbles,_jsx(Circle,{cx:width * 0.12,cy:height * 0.15,r:45,color:`${BUBBLE_COLORS[0]}40`}),_jsx(Circle,{cx:width * 0.88,cy:height * 0.85,r:38,color:`${BUBBLE_COLORS[4]}40`}),_jsx(Circle,{cx:width * 0.85,cy:height * 0.20,r:32,color:`${BUBBLE_COLORS[6]}40`}),_jsx(Circle,{cx:width * 0.15,cy:height * 0.78,r:50,color:`${BUBBLE_COLORS[8]}40`}),_jsx(Circle,{cx:width * 0.50,cy:height * 0.10,r:35,color:`${BUBBLE_COLORS[10]}40`}),_jsx(Circle,{cx:width * 0.18,cy:height * 0.48,r:40,color:`${BUBBLE_COLORS[2]}40`}),_jsx(Circle,{cx:width * 0.82,cy:height * 0.55,r:42,color:`${BUBBLE_COLORS[7]}40`}),_jsx(Circle,{cx:width * 0.60,cy:height * 0.90,r:30,color:`${BUBBLE_COLORS[1]}40`}),_jsx(Circle,{cx:width * 0.28,cy:height * 0.28,r:25,color:`${BUBBLE_COLORS[5]}38`}),_jsx(Circle,{cx:width * 0.68,cy:height * 0.38,r:28,color:`${BUBBLE_COLORS[9]}38`}),_jsx(Circle,{cx:width * 0.38,cy:height * 0.68,r:22,color:`${BUBBLE_COLORS[3]}38`}),_jsx(Circle,{cx:width * 0.72,cy:height * 0.72,r:26,color:`${BUBBLE_COLORS[11]}38`}),Array.from({length:Math.floor(width / 60)},(_,i)=> _jsx(Rect,{x:i * 60,y:0,width:1,height:height,color:"rgba(255,255,255,0.05)"},`grid-v-${i}`)),Array.from({length:Math.floor(height / 60)},(_,i)=> _jsx(Rect,{x:0,y:i * 60,width:width,height:1,color:"rgba(255,255,255,0.05)"},`grid-h-${i}`))]}),children]});});GameBackground.displayName = 'GameBackground';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","View","Dimensions","Canvas","LinearGradient","Rect","vec","Circle","jsx","_jsx","jsxs","_jsxs","width","height","get","BUBBLE_COLORS","GameBackground","memo","children","generateFloatingBubbles","useMemo","elements","bubbleCount","i","baseX","baseY","x","Math","sin","random","y","cos","bubbleSize","colorIndex","length","opacity","bubbleX","max","min","bubbleY","push","cx","cy","r","color","floor","toString","padStart","style","flex","position","top","left","right","bottom","start","end","colors","Array","from","_","displayName"],"sourceRoot":"../../../../../src","sources":["games/bubble-shooter/components/GameBackground.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{Text,StyleSheet}from 'react-native';import{ScoreBoardContainer}from "../../../helpers/index.js";import{useScore}from "../BubbleShooterStore.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const ScoreBoard = React.memo(({offset = 0})=>{const score = useScore();return _jsxs(ScoreBoardContainer,{offset:offset,backgroundColor:"rgba(255,107,157,0.4)",borderColor:"rgba(255,107,157,0.4)",children:[_jsx(Text,{style:styles.label,children:"SCORE"}),_jsx(Text,{style:styles.value,children:score})]});});ScoreBoard.displayName = 'ScoreBoard';const styles = StyleSheet.create({label:{fontSize:16,fontWeight:'bold',color:'#ffffff',marginBottom:4,letterSpacing:0.5,textAlign:'center'},value:{fontSize:25,fontWeight:'bold',color:'#ffffff',textAlign:'center'}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Text","StyleSheet","ScoreBoardContainer","useScore","jsx","_jsx","jsxs","_jsxs","ScoreBoard","memo","offset","score","backgroundColor","borderColor","children","style","styles","label","value","displayName","create","fontSize","fontWeight","color","marginBottom","letterSpacing","textAlign"],"sourceRoot":"../../../../../src","sources":["games/bubble-shooter/components/ScoreBoard.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,EAAEC,UAAU,QAAQ,cAAc;AAC/C,SAASC,mBAAmB,QAAQ,2BAAkB;AACtD,SAASC,QAAQ,QAAQ,0BAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAMjD,OAAO,MAAMC,UAAU,gBAAGT,KAAK,CAACU,IAAI,CAAC,CAAC;EAAEC,MAAM,GAAG;AAAmB,CAAC,KAAK;EACxE,MAAMC,KAAK,GAAGR,QAAQ,CAAC,CAAC;EAExB,oBACEI,KAAA,CAACL,mBAAmB;IAClBQ,MAAM,EAAEA,MAAO;IACfE,eAAe,EAAC,0BAA0B;IAC1CC,WAAW,EAAC,0BAA0B;IAAAC,QAAA,gBAEtCT,IAAA,CAACL,IAAI;MAACe,KAAK,EAAEC,MAAM,CAACC,KAAM;MAAAH,QAAA,EAAC;IAAK,CAAM,CAAC,eACvCT,IAAA,CAACL,IAAI;MAACe,KAAK,EAAEC,MAAM,CAACE,KAAM;MAAAJ,QAAA,EAAEH;IAAK,CAAO,CAAC;EAAA,CACtB,CAAC;AAE1B,CAAC,CAAC;AAEFH,UAAU,CAACW,WAAW,GAAG,YAAY;AAErC,MAAMH,MAAM,GAAGf,UAAU,CAACmB,MAAM,CAAC;EAC/BH,KAAK,EAAE;IACLI,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE,SAAS;IAChBC,YAAY,EAAE,CAAC;IACfC,aAAa,EAAE,GAAG;IAClBC,SAAS,EAAE;EACb,CAAC;EACDR,KAAK,EAAE;IACLG,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,KAAK,EAAE,SAAS;IAChBG,SAAS,EAAE;EACb;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export{GameBackground}from "./GameBackground.js";export{ScoreBoard}from "./ScoreBoard.js";export{GameArea}from "./GameArea.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["GameBackground","ScoreBoard","GameArea"],"sourceRoot":"../../../../../src","sources":["games/bubble-shooter/components/index.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,qBAAkB;AACjD,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,QAAQ,QAAQ,eAAY","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";export{BubbleShooter}from "./BubbleShooter.js";export{BUBBLE_SHOOTER_THEME}from "./BubbleShooterConstants.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BubbleShooter","BUBBLE_SHOOTER_THEME"],"sourceRoot":"../../../../src","sources":["games/bubble-shooter/index.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,oBAAiB;AAC/C,SAASC,oBAAoB,QAAQ,6BAA0B","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{useCandyCrushStore,useScore,useIsPlaying,useIsGameOver}from "./CandyCrushStore.js";import{CANDY_CRUSH_COLORS}from "./CandyCrushConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const CandyCrush = React.memo(({settings,onSettingsChange})=>{const score = useScore();const isPlaying = useIsPlaying();const isGameOver = useIsGameOver();const startGame = useCandyCrushStore(state => state.startGame);const stopGame = useCandyCrushStore(state => state.stopGame);const resetGame = useCandyCrushStore(state => state.resetGame);const initializeGame = useCandyCrushStore(state => state.initializeGame);const updateSettings = useCandyCrushStore(state => state.updateSettings);React.useEffect(()=>{const enableSounds = settings?.enableSounds ?? true;const enableHaptics = settings?.enableHaptics ?? true;updateSettings(enableSounds,enableHaptics);},[settings?.enableSounds,settings?.enableHaptics,updateSettings]);React.useEffect(()=>{const difficulty = settings?.difficulty || 'easy';initializeGame(difficulty);},[settings?.difficulty,initializeGame]);const handleStartGame = React.useCallback(()=>{startGame();},[startGame]);const handleResetGame = React.useCallback(()=>{resetGame();},[resetGame]);const handleStopGame = React.useCallback(()=>{stopGame();},[stopGame]);const gameControlButtonProps = React.useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,onResetGame:handleResetGame,startButtonText:'Start Crushing!',startButtonSubtext:'Match 3 or more',startButtonColor:CANDY_CRUSH_COLORS.BUTTON_PRIMARY,startButtonBorderColor:CANDY_CRUSH_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame,handleResetGame]);const gameOverModalProps = React.useMemo(()=>({isVisible:isGameOver,score,onPlayAgain:handleResetGame,buttonText:'Crush Again!',primaryColor:'rgba(255,149,0,0.5)',borderColor:'rgba(255,149,0,0.5)',buttonColor:'#ffffff',buttonBorderColor:'#ffffff',buttonTextColor:'#FF9500',scoreFormatter:s => `${s}`}),[isGameOver,score,handleResetGame]);const gameSettingsModalProps = React.useMemo(()=>({gameId:GAME_IDS.CANDY_CRUSH,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const dynamicStyles = React.useMemo(()=>({gridContainer:{...styles.gridContainer,paddingTop:offset}}),[offset]);return _jsx(GameBackground,{children:_jsxs(View,{style:styles.container,children:[_jsx(View,{style:dynamicStyles.gridContainer,children:_jsx(GameGrid,{})}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})});});CandyCrush.displayName = 'CandyCrush';const styles = StyleSheet.create({container:{flex:1},gridContainer:{flex:1,justifyContent:'center',alignItems:'center'},scoreboardContainer:{position:'absolute',top:0,left:0,right:0,zIndex:10}});
|
|
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{useCandyCrushStore,useScore,useIsPlaying,useIsGameOver}from "./CandyCrushStore.js";import{CANDY_CRUSH_COLORS}from "./CandyCrushConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const CandyCrush = 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 = useCandyCrushStore(state => state.startGame);const stopGame = useCandyCrushStore(state => state.stopGame);const resetGame = useCandyCrushStore(state => state.resetGame);const initializeGame = useCandyCrushStore(state => state.initializeGame);const updateSettings = useCandyCrushStore(state => state.updateSettings);React.useEffect(()=>{const enableSounds = settings?.enableSounds ?? true;const enableHaptics = settings?.enableHaptics ?? true;updateSettings(enableSounds,enableHaptics);},[settings?.enableSounds,settings?.enableHaptics,updateSettings]);React.useEffect(()=>{const difficulty = settings?.difficulty || 'easy';initializeGame(difficulty);},[settings?.difficulty,initializeGame]);React.useEffect(()=>{if(isGameOver && !gameReportedRef.current){reportGameEnd('win');}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 gameControlButtonProps = React.useMemo(()=>({isPlaying,gameOver:isGameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,onResetGame:handleResetGame,startButtonText:'Start Crushing!',startButtonSubtext:'Match 3 or more',startButtonColor:CANDY_CRUSH_COLORS.BUTTON_PRIMARY,startButtonBorderColor:CANDY_CRUSH_COLORS.BUTTON_SECONDARY}),[isPlaying,isGameOver,handleStartGame,handleStopGame,handleResetGame]);const gameOverModalProps = React.useMemo(()=>({isVisible:isGameOver,score,onPlayAgain:handleResetGame,buttonText:'Crush Again!',primaryColor:'rgba(255,149,0,0.5)',borderColor:'rgba(255,149,0,0.5)',buttonColor:'#ffffff',buttonBorderColor:'#ffffff',buttonTextColor:'#FF9500',scoreFormatter:s => `${s}`}),[isGameOver,score,handleResetGame]);const gameSettingsModalProps = React.useMemo(()=>({gameId:GAME_IDS.CANDY_CRUSH,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const dynamicStyles = React.useMemo(()=>({gridContainer:{...styles.gridContainer,paddingTop:offset}}),[offset]);return _jsx(GameBackground,{children:_jsxs(View,{style:styles.container,children:[_jsx(View,{style:dynamicStyles.gridContainer,children:_jsx(GameGrid,{})}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})});});CandyCrush.displayName = 'CandyCrush';const styles = StyleSheet.create({container:{flex:1},gridContainer:{flex:1,justifyContent:'center',alignItems:'center'},scoreboardContainer:{position:'absolute',top:0,left:0,right:0,zIndex:10}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","StyleSheet","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","GameBackground","GameGrid","ScoreBoard","useCandyCrushStore","useScore","useIsPlaying","useIsGameOver","CANDY_CRUSH_COLORS","jsx","_jsx","jsxs","_jsxs","CandyCrush","memo","settings","onSettingsChange","score","isPlaying","isGameOver","startGame","state","stopGame","resetGame","initializeGame","updateSettings","useEffect","enableSounds","enableHaptics","difficulty","handleStartGame","
|
|
1
|
+
{"version":3,"names":["React","View","StyleSheet","GameControlButton","GameOverModal","GameSettingsModal","GAME_IDS","DEFAULT_GAME_SETTINGS","GameBackground","GameGrid","ScoreBoard","useCandyCrushStore","useScore","useIsPlaying","useIsGameOver","CANDY_CRUSH_COLORS","jsx","_jsx","jsxs","_jsxs","CandyCrush","memo","settings","onSettingsChange","onEndGame","score","isPlaying","isGameOver","gameReportedRef","useRef","reportGameEnd","useCallback","status","current","toString","startGame","state","stopGame","resetGame","initializeGame","updateSettings","useEffect","enableSounds","enableHaptics","difficulty","handleStartGame","handleResetGame","handleStopGame","gameControlButtonProps","useMemo","gameOver","onStartGame","onStopGame","onResetGame","startButtonText","startButtonSubtext","startButtonColor","BUTTON_PRIMARY","startButtonBorderColor","BUTTON_SECONDARY","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","scoreFormatter","s","gameSettingsModalProps","gameId","CANDY_CRUSH","offset","dynamicStyles","gridContainer","styles","paddingTop","children","style","container","displayName","create","flex","justifyContent","alignItems","scoreboardContainer","position","top","left","right","zIndex"],"sourceRoot":"../../../../src","sources":["games/candy-crush/CandyCrush.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";import React from 'react';import{View,StyleSheet,Dimensions}from 'react-native';import{GestureDetector,Gesture,GestureHandlerRootView}from 'react-native-gesture-handler';import{useCarRacingStore,useScore,useIsPlaying,useGameOver,useObstacles,usePlayerCar,useRoadOffset,useParticleEffects,useLives}from "./CarRacingStore.js";import{CarRacingService}from "./CarRacingService.js";import{GameBackground,CarComponent,ScoreBoard}from "./components/index.js";import{GameControlButton,GameOverModal,GameSettingsModal,ParticleBlast}from "../../helpers/index.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{getDifficultySettings,CAR_RACING_COLORS,CAR_RACING_GAME_CONFIG}from "./CarRacingConstants.js";import{playSound,GAME_SOUNDS}from "../../services/SoundsService.js";import{playHaptic,HapticType}from "../../services/HapticsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const{width,height}= Dimensions.get('window');export const CarRacing =({settings:externalSettings = DEFAULT_GAME_SETTINGS,onSettingsChange,onEndGame})=>{const difficulty = externalSettings?.difficulty || 'medium';const soundEnabled = externalSettings?.enableSounds ?? true;const hapticEnabled = externalSettings?.enableHaptics ?? true;const offset = externalSettings?.offset ?? 0;const score = useScore();const isPlaying = useIsPlaying();const gameOver = useGameOver();const lives = useLives();const obstacles = useObstacles();const playerCar = usePlayerCar();const roadOffset = useRoadOffset();const particleEffects = useParticleEffects();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 = React.useCallback((duration,offset)=> useCarRacingStore.getState().startGame(duration,offset),[]);const stopGame = React.useCallback(()=> useCarRacingStore.getState().stopGame(),[]);const resetGame = React.useCallback(()=> useCarRacingStore.getState().resetGame(),[]);const handleParticleComplete = React.useCallback(effectId =>{useCarRacingStore.getState().removeParticleEffect(effectId);},[]);const difficultySettings = React.useMemo(()=> getDifficultySettings(difficulty),[difficulty]);const gameService = React.useMemo(()=> new CarRacingService(difficultySettings.roadSpeed,difficultySettings.obstacleSpawnInterval),[difficultySettings.roadSpeed,difficultySettings.obstacleSpawnInterval]);React.useEffect(()=>{useCarRacingStore.getState().setOffset(offset);},[offset]);React.useEffect(()=>{const handleCollision =()=>{playSound(GAME_SOUNDS.CAR_RACING.CRASH,soundEnabled);playHaptic(HapticType.ERROR,hapticEnabled);};const handlePass =()=>{playSound(GAME_SOUNDS.CAR_RACING.PASS,soundEnabled);playHaptic(HapticType.LIGHT,hapticEnabled);};gameService.setCallbacks(handleCollision,handlePass);},[gameService,soundEnabled,hapticEnabled]);React.useEffect(()=>{if(!isPlaying)return;const timer = setInterval(()=>{useCarRacingStore.getState().decrementTime();},1000);return()=> clearInterval(timer);},[isPlaying]);React.useEffect(()=>{if(gameOver && !gameReportedRef.current){const status = lives > 0 ? 'win':'lose';reportGameEnd(status);}if(!gameOver){gameReportedRef.current = false;}},[gameOver,lives,reportGameEnd]);React.useEffect(()=>{return()=>{gameService.cleanup();stopGame();};},[gameService]);const handleStartGame = React.useCallback(()=>{gameReportedRef.current = false;startGame(difficultySettings.gameDuration,offset);gameService.startGame();playSound(GAME_SOUNDS.CAR_RACING.START,soundEnabled);playHaptic(HapticType.SUCCESS,hapticEnabled);},[startGame,gameService,difficultySettings.gameDuration,offset,soundEnabled,hapticEnabled]);const handleStopGame = React.useCallback(()=>{reportGameEnd('cancel');stopGame();gameService.stopGame();},[stopGame,gameService,reportGameEnd]);const handleResetGame = React.useCallback(()=>{resetGame();gameService.cleanup();},[resetGame,gameService]);const handlePlayAgain = React.useCallback(()=>{handleResetGame();},[handleResetGame]);const previousLaneRef = React.useRef(1);const panGesture = Gesture.Pan().onUpdate(event =>{if(!isPlaying)return;const roadWidth = CAR_RACING_GAME_CONFIG.LANE_WIDTH * CAR_RACING_GAME_CONFIG.ROAD_LANES;const roadStartX =(width - roadWidth)/ 2;const relativeX = event.absoluteX - roadStartX;const lane = Math.floor(relativeX / CAR_RACING_GAME_CONFIG.LANE_WIDTH);const clampedLane = Math.max(0,Math.min(CAR_RACING_GAME_CONFIG.ROAD_LANES - 1,lane));if(clampedLane !== previousLaneRef.current){previousLaneRef.current = clampedLane;playSound(GAME_SOUNDS.CAR_RACING.LANE_SWITCH,soundEnabled);playHaptic(HapticType.SELECTION,hapticEnabled);}gameService.movePlayerToLane(clampedLane);}).runOnJS(true);const gameControlButtonProps = React.useMemo(()=>({isPlaying,gameOver,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonColor:CAR_RACING_COLORS.UI,stopButtonColor:CAR_RACING_COLORS.UI,startButtonBorderColor:CAR_RACING_COLORS.UI,stopButtonBorderColor:CAR_RACING_COLORS.UI,startButtonText:'START RACING',stopButtonText:'STOP GAME',startButtonSubtext:'Dodge traffic to score!'}),[isPlaying,gameOver,handleStartGame,handleStopGame]);const gameOverModalProps = React.useMemo(()=>({isVisible:gameOver,score,onPlayAgain:handlePlayAgain,buttonText:"Race Again!",primaryColor:"rgba(255,68,68,0.5)",borderColor:"rgba(255,68,68,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:CAR_RACING_COLORS.UI}),[gameOver,score,handlePlayAgain]);return _jsx(GestureHandlerRootView,{style:styles.container,children:_jsxs(View,{style:styles.container,children:[_jsx(View,{style:StyleSheet.absoluteFillObject,children:_jsx(GameBackground,{width:width,height:height,roadOffset:roadOffset})}),_jsx(ScoreBoard,{offset:offset}),_jsx(GestureDetector,{gesture:panGesture,children:_jsxs(View,{style:styles.gameArea,children:[obstacles.map(obstacle => _jsx(CarComponent,{x:obstacle.x,y:obstacle.y,width:obstacle.width,height:obstacle.height,color:obstacle.color,isPlayer:false},obstacle.id)),_jsx(CarComponent,{x:playerCar.x,y:playerCar.y,width:playerCar.width,height:playerCar.height,color:CAR_RACING_COLORS.PLAYER_CAR,isPlayer:true})]})}),particleEffects.map(effect => _jsx(ParticleBlast,{x:effect.x,y:effect.y,particleCount:12,colors:['#ff4444','#ff6b6b','#ff8888','#ffaa00','#ffcc00','#ffffff'],duration:800,onComplete:()=> handleParticleComplete(effect.id)},effect.id)),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{gameId:GAME_IDS.CAR_RACING,settings:externalSettings || DEFAULT_GAME_SETTINGS,onSettingsChange:onSettingsChange})]})});};const styles = StyleSheet.create({container:{flex:1,backgroundColor:'#000'},gameArea:{flex:1}});
|