react-native-games 1.0.0 → 1.2.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.
Files changed (212) hide show
  1. package/README.md +80 -368
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +1 -167
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +1 -182
  5. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -1
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +1 -318
  7. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +1 -183
  8. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +1 -237
  9. package/lib/module/games/balloon-blaster/components/GameArea.js +1 -156
  10. package/lib/module/games/balloon-blaster/components/GameBackground.js +1 -476
  11. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +1 -112
  12. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  13. package/lib/module/games/balloon-blaster/components/index.js +1 -7
  14. package/lib/module/games/candy-crush/CandyCrush.js +1 -131
  15. package/lib/module/games/candy-crush/CandyCrush.js.map +1 -1
  16. package/lib/module/games/candy-crush/CandyCrushConstants.js +1 -125
  17. package/lib/module/games/candy-crush/CandyCrushConstants.js.map +1 -1
  18. package/lib/module/games/candy-crush/CandyCrushService.js +1 -370
  19. package/lib/module/games/candy-crush/CandyCrushStore.js +1 -303
  20. package/lib/module/games/candy-crush/components/CandyItem.js +1 -191
  21. package/lib/module/games/candy-crush/components/GameBackground.js +1 -85
  22. package/lib/module/games/candy-crush/components/GameGrid.js +1 -314
  23. package/lib/module/games/candy-crush/components/ScoreBoard.js +1 -79
  24. package/lib/module/games/candy-crush/components/index.js +1 -7
  25. package/lib/module/games/candy-crush/index.js +1 -6
  26. package/lib/module/games/colors-sort/ColorsSort.js +1 -143
  27. package/lib/module/games/colors-sort/ColorsSort.js.map +1 -1
  28. package/lib/module/games/colors-sort/ColorsSortConstants.js +1 -72
  29. package/lib/module/games/colors-sort/ColorsSortConstants.js.map +1 -1
  30. package/lib/module/games/colors-sort/ColorsSortService.js +1 -255
  31. package/lib/module/games/colors-sort/ColorsSortStore.js +1 -257
  32. package/lib/module/games/colors-sort/ColorsSortStore.js.map +1 -1
  33. package/lib/module/games/colors-sort/components/ColorContainer.js +1 -140
  34. package/lib/module/games/colors-sort/components/GameBackground.js +1 -135
  35. package/lib/module/games/colors-sort/components/ScoreBoard.js +1 -70
  36. package/lib/module/games/colors-sort/components/index.js +1 -6
  37. package/lib/module/games/dino-jump/DinoJump.js +1 -209
  38. package/lib/module/games/dino-jump/DinoJump.js.map +1 -1
  39. package/lib/module/games/dino-jump/DinoJumpConstants.js +1 -189
  40. package/lib/module/games/dino-jump/DinoJumpConstants.js.map +1 -1
  41. package/lib/module/games/dino-jump/DinoJumpService.js +1 -270
  42. package/lib/module/games/dino-jump/DinoJumpStore.js +1 -381
  43. package/lib/module/games/dino-jump/components/DinoSprite.js +1 -418
  44. package/lib/module/games/dino-jump/components/DinoSprite.js.map +1 -1
  45. package/lib/module/games/dino-jump/components/GameArea.js +1 -68
  46. package/lib/module/games/dino-jump/components/GameBackground.js +1 -444
  47. package/lib/module/games/dino-jump/components/ObstacleSprite.js +1 -306
  48. package/lib/module/games/dino-jump/components/ScoreBoard.js +1 -105
  49. package/lib/module/games/dino-jump/components/ScoreBoard.js.map +1 -1
  50. package/lib/module/games/dino-jump/components/StarSprite.js +1 -45
  51. package/lib/module/games/dino-jump/components/index.js +1 -9
  52. package/lib/module/games/flappy-bird/FlappyBird.js +1 -126
  53. package/lib/module/games/flappy-bird/FlappyBird.js.map +1 -1
  54. package/lib/module/games/flappy-bird/FlappyBirdConstants.js +1 -90
  55. package/lib/module/games/flappy-bird/FlappyBirdConstants.js.map +1 -1
  56. package/lib/module/games/flappy-bird/FlappyBirdStore.js +1 -300
  57. package/lib/module/games/flappy-bird/components/Bird.js +1 -87
  58. package/lib/module/games/flappy-bird/components/GameArea.js +1 -87
  59. package/lib/module/games/flappy-bird/components/GameBackground.js +1 -79
  60. package/lib/module/games/flappy-bird/components/Pipes.js +1 -172
  61. package/lib/module/games/flappy-bird/components/ScoreBoard.js +1 -73
  62. package/lib/module/games/flappy-bird/components/index.js +1 -8
  63. package/lib/module/games/fruit-merger/FruitMerger.js +1 -120
  64. package/lib/module/games/fruit-merger/FruitMerger.js.map +1 -1
  65. package/lib/module/games/fruit-merger/FruitMergerConstants.js +1 -119
  66. package/lib/module/games/fruit-merger/FruitMergerConstants.js.map +1 -1
  67. package/lib/module/games/fruit-merger/FruitMergerService.js +1 -13
  68. package/lib/module/games/fruit-merger/FruitMergerStore.js +1 -315
  69. package/lib/module/games/fruit-merger/components/FruitItem.js +1 -102
  70. package/lib/module/games/fruit-merger/components/GameArea.js +1 -103
  71. package/lib/module/games/fruit-merger/components/GameBackground.js +1 -498
  72. package/lib/module/games/fruit-merger/components/ScoreBoard.js +1 -58
  73. package/lib/module/games/fruit-merger/components/index.js +1 -7
  74. package/lib/module/games/fruit-ninja/FruitNinja.js +1 -134
  75. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -1
  76. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +1 -148
  77. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -1
  78. package/lib/module/games/fruit-ninja/FruitNinjaService.js +1 -311
  79. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +1 -191
  80. package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -1
  81. package/lib/module/games/fruit-ninja/components/FruitComponent.js +1 -99
  82. package/lib/module/games/fruit-ninja/components/GameArea.js +1 -215
  83. package/lib/module/games/fruit-ninja/components/GameBackground.js +1 -1267
  84. package/lib/module/games/fruit-ninja/components/ScoreBoard.js +1 -92
  85. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -1
  86. package/lib/module/games/fruit-ninja/components/index.js +1 -7
  87. package/lib/module/games/game-2048/Game2048.js +1 -149
  88. package/lib/module/games/game-2048/Game2048.js.map +1 -1
  89. package/lib/module/games/game-2048/Game2048Constants.js +1 -263
  90. package/lib/module/games/game-2048/Game2048Constants.js.map +1 -1
  91. package/lib/module/games/game-2048/Game2048Service.js +1 -457
  92. package/lib/module/games/game-2048/Game2048Store.js +1 -236
  93. package/lib/module/games/game-2048/components/GameBackground.js +1 -247
  94. package/lib/module/games/game-2048/components/GameGrid.js +1 -139
  95. package/lib/module/games/game-2048/components/GameTile.js +1 -72
  96. package/lib/module/games/game-2048/components/ScoreBoard.js +1 -52
  97. package/lib/module/games/game-2048/components/index.js +1 -7
  98. package/lib/module/games/maze-runner/MazeRunner.js +1 -267
  99. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  100. package/lib/module/games/maze-runner/MazeRunnerConstants.js +1 -100
  101. package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -1
  102. package/lib/module/games/maze-runner/MazeRunnerService.js +1 -586
  103. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +1 -150
  104. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +1 -370
  105. package/lib/module/games/maze-runner/components/GameBackground.js +1 -175
  106. package/lib/module/games/maze-runner/components/ScoreBoard.js +1 -61
  107. package/lib/module/games/maze-runner/components/SkiaPipeComponent.js +1 -209
  108. package/lib/module/games/maze-runner/components/StaticGameBackground.js +1 -169
  109. package/lib/module/games/maze-runner/components/WallComponent.js +1 -91
  110. package/lib/module/games/maze-runner/components/index.js +1 -8
  111. package/lib/module/games/popit-fidget/PopitFidget.js +1 -285
  112. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -1
  113. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +1 -113
  114. package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -1
  115. package/lib/module/games/popit-fidget/PopitFidgetService.js +1 -132
  116. package/lib/module/games/popit-fidget/PopitFidgetStore.js +1 -125
  117. package/lib/module/games/popit-fidget/components/BubbleComponent.js +1 -198
  118. package/lib/module/games/popit-fidget/components/FidgetGrid.js +1 -165
  119. package/lib/module/games/popit-fidget/components/GameBackground.js +1 -177
  120. package/lib/module/games/popit-fidget/components/ScoreBoard.js +1 -61
  121. package/lib/module/games/popit-fidget/components/index.js +1 -7
  122. package/lib/module/games/sliding-numbers/SlidingNumbers.js +1 -159
  123. package/lib/module/games/sliding-numbers/SlidingNumbers.js.map +1 -1
  124. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js +1 -207
  125. package/lib/module/games/sliding-numbers/SlidingNumbersConstants.js.map +1 -1
  126. package/lib/module/games/sliding-numbers/SlidingNumbersService.js +1 -248
  127. package/lib/module/games/sliding-numbers/SlidingNumbersStore.js +1 -274
  128. package/lib/module/games/sliding-numbers/components/GameBackground.js +1 -259
  129. package/lib/module/games/sliding-numbers/components/NumbersGrid.js +1 -174
  130. package/lib/module/games/sliding-numbers/components/NumbersTile.js +1 -116
  131. package/lib/module/games/sliding-numbers/components/ScoreBoard.js +1 -64
  132. package/lib/module/games/sliding-numbers/components/index.js +1 -7
  133. package/lib/module/games/snake/Snake.js +1 -189
  134. package/lib/module/games/snake/Snake.js.map +1 -1
  135. package/lib/module/games/snake/SnakeConstants.js +1 -138
  136. package/lib/module/games/snake/SnakeConstants.js.map +1 -1
  137. package/lib/module/games/snake/SnakeService.js +1 -148
  138. package/lib/module/games/snake/SnakeStore.js +1 -182
  139. package/lib/module/games/snake/components/GameBackground.js +1 -221
  140. package/lib/module/games/snake/components/GameGrid.js +1 -153
  141. package/lib/module/games/snake/components/ScoreBoard.js +1 -51
  142. package/lib/module/games/snake/components/index.js +1 -6
  143. package/lib/module/games/snake/index.js +1 -6
  144. package/lib/module/games/space-fighter/SpaceFighter.js +1 -165
  145. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -1
  146. package/lib/module/games/space-fighter/SpaceFighterConstants.js +1 -108
  147. package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -1
  148. package/lib/module/games/space-fighter/SpaceFighterService.js +1 -326
  149. package/lib/module/games/space-fighter/SpaceFighterStore.js +1 -209
  150. package/lib/module/games/space-fighter/components/AsteroidComponent.js +1 -113
  151. package/lib/module/games/space-fighter/components/GameArea.js +1 -289
  152. package/lib/module/games/space-fighter/components/GameBackground.js +1 -239
  153. package/lib/module/games/space-fighter/components/ScoreBoard.js +1 -136
  154. package/lib/module/games/space-fighter/components/Spacecraft3D.js +1 -202
  155. package/lib/module/games/space-fighter/components/SpacecraftPath.js +1 -52
  156. package/lib/module/games/space-fighter/components/index.js +1 -9
  157. package/lib/module/games/whack-a-mole/WhackAMole.js +1 -270
  158. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -1
  159. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +1 -115
  160. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -1
  161. package/lib/module/games/whack-a-mole/WhackAMoleService.js +1 -120
  162. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +1 -172
  163. package/lib/module/games/whack-a-mole/components/GameBackground.js +1 -477
  164. package/lib/module/games/whack-a-mole/components/GameGrid.js +1 -97
  165. package/lib/module/games/whack-a-mole/components/GameHole.js +1 -196
  166. package/lib/module/games/whack-a-mole/components/MoleCharacter.js +1 -241
  167. package/lib/module/games/whack-a-mole/components/ScoreBoard.js +1 -67
  168. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -1
  169. package/lib/module/games/whack-a-mole/components/index.js +1 -8
  170. package/lib/module/helpers/AnimationFrame.js +1 -120
  171. package/lib/module/helpers/AnimationTracker.js +1 -89
  172. package/lib/module/helpers/ErrorHandler.js +1 -269
  173. package/lib/module/helpers/GameControlButton.js +1 -219
  174. package/lib/module/helpers/GameOverModal.js +1 -144
  175. package/lib/module/helpers/GameOverModal.js.map +1 -1
  176. package/lib/module/helpers/GameSettingsModal.js +1 -287
  177. package/lib/module/helpers/ParticleBlast.js +1 -134
  178. package/lib/module/helpers/ScoreBoardContainer.js +1 -34
  179. package/lib/module/helpers/index.js +1 -12
  180. package/lib/module/index.js +1 -22
  181. package/lib/module/services/GamesConstants.js +1 -178
  182. package/lib/module/services/GamesService.js +1 -112
  183. package/lib/module/services/GamesService.js.map +1 -1
  184. package/lib/module/services/HapticsService.js +1 -77
  185. package/lib/module/services/SoundsService.js +1 -302
  186. package/lib/module/services/UtilsService.js +1 -32
  187. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  188. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +1 -1
  189. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  190. package/lib/typescript/src/games/candy-crush/CandyCrushConstants.d.ts +7 -7
  191. package/lib/typescript/src/games/colors-sort/ColorsSort.d.ts.map +1 -1
  192. package/lib/typescript/src/games/colors-sort/ColorsSortStore.d.ts.map +1 -1
  193. package/lib/typescript/src/games/dino-jump/DinoJump.d.ts.map +1 -1
  194. package/lib/typescript/src/games/dino-jump/components/DinoSprite.d.ts.map +1 -1
  195. package/lib/typescript/src/games/flappy-bird/FlappyBird.d.ts.map +1 -1
  196. package/lib/typescript/src/games/flappy-bird/FlappyBirdConstants.d.ts.map +1 -1
  197. package/lib/typescript/src/games/fruit-merger/FruitMerger.d.ts.map +1 -1
  198. package/lib/typescript/src/games/fruit-merger/FruitMergerConstants.d.ts.map +1 -1
  199. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -1
  200. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -1
  201. package/lib/typescript/src/games/game-2048/Game2048.d.ts.map +1 -1
  202. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  203. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -1
  204. package/lib/typescript/src/games/sliding-numbers/SlidingNumbers.d.ts.map +1 -1
  205. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -1
  206. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -1
  207. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +1 -1
  208. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -1
  209. package/lib/typescript/src/helpers/GameOverModal.d.ts +3 -0
  210. package/lib/typescript/src/helpers/GameOverModal.d.ts.map +1 -1
  211. package/lib/typescript/src/services/GamesConstants.d.ts +7 -7
  212. package/package.json +2 -2
@@ -1,177 +1 @@
1
- "use strict";
2
-
3
- import React from 'react';
4
- import { StyleSheet, View } from 'react-native';
5
- import { Canvas, LinearGradient, Rect, Circle, vec } from '@shopify/react-native-skia';
6
- import { RAINBOW_COLORS } from "../PopitFidgetConstants.js";
7
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
- const GameBackground = ({
9
- width,
10
- height
11
- }) => {
12
- // Generate static colorful floating bubble decorations with subtle positioning variations
13
- const generateFloatingBubbles = React.useMemo(() => {
14
- const bubbles = [];
15
- const bubbleCount = 15; // Reduced count for better performance
16
-
17
- for (let i = 0; i < bubbleCount; i++) {
18
- const baseX = width / bubbleCount * i;
19
- const baseY = height / bubbleCount * i;
20
-
21
- // Add subtle random offset for natural look
22
- const x = baseX + Math.sin(i * 0.5) * 30 + Math.random() * 60;
23
- const y = baseY + Math.cos(i * 0.7) * 40 + Math.random() * 80;
24
- const radius = 8 + Math.random() * 12;
25
- const colorIndex = i % RAINBOW_COLORS.length; // Cycle through colors for consistency
26
- const opacity = 0.2 + Math.sin(i) * 0.1; // Subtle opacity variation
27
-
28
- bubbles.push(/*#__PURE__*/_jsx(Circle, {
29
- cx: Math.max(radius, Math.min(width - radius, x)),
30
- cy: Math.max(radius, Math.min(height - radius, y)),
31
- r: radius,
32
- color: `${RAINBOW_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2, '0')}`
33
- }, `floating-bubble-${i}`));
34
- }
35
- return bubbles;
36
- }, [width, height]);
37
- return /*#__PURE__*/_jsx(View, {
38
- style: StyleSheet.absoluteFillObject,
39
- children: /*#__PURE__*/_jsxs(Canvas, {
40
- style: {
41
- width,
42
- height
43
- },
44
- children: [/*#__PURE__*/_jsx(Rect, {
45
- x: 0,
46
- y: 0,
47
- width: width,
48
- height: height,
49
- children: /*#__PURE__*/_jsx(LinearGradient, {
50
- start: vec(0, 0),
51
- end: vec(width, height),
52
- colors: [`${RAINBOW_COLORS[0]}40`,
53
- // Vibrant pink
54
- `${RAINBOW_COLORS[2]}35`,
55
- // Vibrant orange
56
- `${RAINBOW_COLORS[4]}40`,
57
- // Vibrant yellow
58
- `${RAINBOW_COLORS[6]}35`,
59
- // Vibrant lime
60
- `${RAINBOW_COLORS[8]}40`,
61
- // Vibrant green
62
- `${RAINBOW_COLORS[10]}35`,
63
- // Vibrant cyan
64
- `${RAINBOW_COLORS[12]}40`,
65
- // Vibrant blue
66
- `${RAINBOW_COLORS[14]}35` // Vibrant purple
67
- ]
68
- })
69
- }), /*#__PURE__*/_jsx(Rect, {
70
- x: 0,
71
- y: 0,
72
- width: width,
73
- height: height,
74
- children: /*#__PURE__*/_jsx(LinearGradient, {
75
- start: vec(0, 0),
76
- end: vec(width / 2, height / 2),
77
- colors: [`${RAINBOW_COLORS[1]}25`,
78
- // Bright red
79
- 'transparent', `${RAINBOW_COLORS[5]}25`,
80
- // Bright deep purple
81
- 'transparent', `${RAINBOW_COLORS[9]}25`,
82
- // Bright teal
83
- 'transparent', `${RAINBOW_COLORS[13]}25`,
84
- // Bright indigo
85
- 'transparent']
86
- })
87
- }), /*#__PURE__*/_jsx(Rect, {
88
- x: 0,
89
- y: 0,
90
- width: width,
91
- height: height,
92
- children: /*#__PURE__*/_jsx(LinearGradient, {
93
- start: vec(width, 0),
94
- end: vec(0, height),
95
- colors: [`${RAINBOW_COLORS[3]}20`,
96
- // Bright orange
97
- 'transparent', `${RAINBOW_COLORS[7]}20`,
98
- // Bright light green
99
- 'transparent', `${RAINBOW_COLORS[11]}20`,
100
- // Bright light blue
101
- 'transparent']
102
- })
103
- }), generateFloatingBubbles, /*#__PURE__*/_jsx(Circle, {
104
- cx: width * 0.1,
105
- cy: height * 0.15,
106
- r: 40,
107
- color: `${RAINBOW_COLORS[0]}30` // Vibrant pink
108
- }), /*#__PURE__*/_jsx(Circle, {
109
- cx: width * 0.9,
110
- cy: height * 0.85,
111
- r: 35,
112
- color: `${RAINBOW_COLORS[3]}30` // Vibrant orange
113
- }), /*#__PURE__*/_jsx(Circle, {
114
- cx: width * 0.85,
115
- cy: height * 0.2,
116
- r: 30,
117
- color: `${RAINBOW_COLORS[8]}30` // Vibrant green
118
- }), /*#__PURE__*/_jsx(Circle, {
119
- cx: width * 0.15,
120
- cy: height * 0.8,
121
- r: 45,
122
- color: `${RAINBOW_COLORS[12]}30` // Vibrant blue
123
- }), /*#__PURE__*/_jsx(Circle, {
124
- cx: width * 0.5,
125
- cy: height * 0.1,
126
- r: 25,
127
- color: `${RAINBOW_COLORS[14]}30` // Vibrant purple
128
- }), /*#__PURE__*/_jsx(Circle, {
129
- cx: width * 0.2,
130
- cy: height * 0.5,
131
- r: 32,
132
- color: `${RAINBOW_COLORS[6]}30` // Vibrant lime
133
- }), /*#__PURE__*/_jsx(Circle, {
134
- cx: width * 0.8,
135
- cy: height * 0.6,
136
- r: 28,
137
- color: `${RAINBOW_COLORS[10]}30` // Vibrant cyan
138
- }), /*#__PURE__*/_jsx(Circle, {
139
- cx: width * 0.6,
140
- cy: height * 0.9,
141
- r: 20,
142
- color: `${RAINBOW_COLORS[1]}30` // Vibrant red
143
- }), /*#__PURE__*/_jsx(Circle, {
144
- cx: width * 0.3,
145
- cy: height * 0.25,
146
- r: 24,
147
- color: `${RAINBOW_COLORS[4]}30` // Vibrant yellow
148
- }), /*#__PURE__*/_jsx(Circle, {
149
- cx: width * 0.7,
150
- cy: height * 0.35,
151
- r: 26,
152
- color: `${RAINBOW_COLORS[9]}30` // Vibrant teal
153
- }), Array.from({
154
- length: Math.floor(width / 40)
155
- }, (_, i) => /*#__PURE__*/_jsx(Rect, {
156
- x: i * 40,
157
- y: 0,
158
- width: 1,
159
- height: height,
160
- color: "rgba(0, 0, 0, 0.02)"
161
- }, `grid-v-${i}`)), Array.from({
162
- length: Math.floor(height / 40)
163
- }, (_, i) => /*#__PURE__*/_jsx(Rect, {
164
- x: 0,
165
- y: i * 40,
166
- width: width,
167
- height: 1,
168
- color: "rgba(0, 0, 0, 0.02)"
169
- }, `grid-h-${i}`))]
170
- })
171
- });
172
- };
173
-
174
- // Memoize GameBackground to prevent unnecessary re-renders
175
- const MemoizedGameBackground = /*#__PURE__*/React.memo(GameBackground);
176
- export default MemoizedGameBackground;
177
- //# sourceMappingURL=GameBackground.js.map
1
+ "use strict";import React from 'react';import{StyleSheet,View}from 'react-native';import{Canvas,LinearGradient,Rect,Circle,vec}from '@shopify/react-native-skia';import{RAINBOW_COLORS}from "../PopitFidgetConstants.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const GameBackground =({width,height})=>{const generateFloatingBubbles = React.useMemo(()=>{const bubbles = [];const bubbleCount = 15;for(let i = 0;i < bubbleCount;i++){const baseX = width / bubbleCount * i;const baseY = height / bubbleCount * i;const x = baseX + Math.sin(i * 0.5)* 30 + Math.random()* 60;const y = baseY + Math.cos(i * 0.7)* 40 + Math.random()* 80;const radius = 8 + Math.random()* 12;const colorIndex = i % RAINBOW_COLORS.length;const opacity = 0.2 + Math.sin(i)* 0.1;bubbles.push(_jsx(Circle,{cx:Math.max(radius,Math.min(width - radius,x)),cy:Math.max(radius,Math.min(height - radius,y)),r:radius,color:`${RAINBOW_COLORS[colorIndex]}${Math.floor(opacity * 255).toString(16).padStart(2,'0')}`},`floating-bubble-${i}`));}return bubbles;},[width,height]);return _jsx(View,{style:StyleSheet.absoluteFillObject,children:_jsxs(Canvas,{style:{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:[`${RAINBOW_COLORS[0]}40`,`${RAINBOW_COLORS[2]}35`,`${RAINBOW_COLORS[4]}40`,`${RAINBOW_COLORS[6]}35`,`${RAINBOW_COLORS[8]}40`,`${RAINBOW_COLORS[10]}35`,`${RAINBOW_COLORS[12]}40`,`${RAINBOW_COLORS[14]}35` ]})}),_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(0,0),end:vec(width / 2,height / 2),colors:[`${RAINBOW_COLORS[1]}25`,'transparent',`${RAINBOW_COLORS[5]}25`,'transparent',`${RAINBOW_COLORS[9]}25`,'transparent',`${RAINBOW_COLORS[13]}25`,'transparent']})}),_jsx(Rect,{x:0,y:0,width:width,height:height,children:_jsx(LinearGradient,{start:vec(width,0),end:vec(0,height),colors:[`${RAINBOW_COLORS[3]}20`,'transparent',`${RAINBOW_COLORS[7]}20`,'transparent',`${RAINBOW_COLORS[11]}20`,'transparent']})}),generateFloatingBubbles,_jsx(Circle,{cx:width * 0.1,cy:height * 0.15,r:40,color:`${RAINBOW_COLORS[0]}30`}),_jsx(Circle,{cx:width * 0.9,cy:height * 0.85,r:35,color:`${RAINBOW_COLORS[3]}30`}),_jsx(Circle,{cx:width * 0.85,cy:height * 0.2,r:30,color:`${RAINBOW_COLORS[8]}30`}),_jsx(Circle,{cx:width * 0.15,cy:height * 0.8,r:45,color:`${RAINBOW_COLORS[12]}30`}),_jsx(Circle,{cx:width * 0.5,cy:height * 0.1,r:25,color:`${RAINBOW_COLORS[14]}30`}),_jsx(Circle,{cx:width * 0.2,cy:height * 0.5,r:32,color:`${RAINBOW_COLORS[6]}30`}),_jsx(Circle,{cx:width * 0.8,cy:height * 0.6,r:28,color:`${RAINBOW_COLORS[10]}30`}),_jsx(Circle,{cx:width * 0.6,cy:height * 0.9,r:20,color:`${RAINBOW_COLORS[1]}30`}),_jsx(Circle,{cx:width * 0.3,cy:height * 0.25,r:24,color:`${RAINBOW_COLORS[4]}30`}),_jsx(Circle,{cx:width * 0.7,cy:height * 0.35,r:26,color:`${RAINBOW_COLORS[9]}30`}),Array.from({length:Math.floor(width / 40)},(_,i)=> _jsx(Rect,{x:i * 40,y:0,width:1,height:height,color:"rgba(0,0,0,0.02)"},`grid-v-${i}`)),Array.from({length:Math.floor(height / 40)},(_,i)=> _jsx(Rect,{x:0,y:i * 40,width:width,height:1,color:"rgba(0,0,0,0.02)"},`grid-h-${i}`))]})});};const MemoizedGameBackground = React.memo(GameBackground);export default MemoizedGameBackground;
@@ -1,61 +1 @@
1
- "use strict";
2
-
3
- import React from 'react';
4
- import { View, Text, StyleSheet } from 'react-native';
5
- import { ScoreBoardContainer } from "../../../helpers/index.js";
6
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
- const ScoreBoard = ({
8
- timeElapsed,
9
- offset = 0
10
- }) => {
11
- // Format time as MM:SS
12
- const formatTime = seconds => {
13
- const mins = Math.floor(seconds / 60);
14
- const secs = seconds % 60;
15
- return `${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
16
- };
17
- return /*#__PURE__*/_jsx(ScoreBoardContainer, {
18
- offset: offset,
19
- backgroundColor: "rgba(108, 92, 231, 0.4)",
20
- borderColor: "rgba(139, 92, 246, 0.3)",
21
- children: /*#__PURE__*/_jsx(View, {
22
- style: styles.scoreBoard,
23
- children: /*#__PURE__*/_jsxs(View, {
24
- style: styles.scoreSection,
25
- children: [/*#__PURE__*/_jsx(Text, {
26
- style: styles.scoreLabel,
27
- children: "Time Elapsed"
28
- }), /*#__PURE__*/_jsx(Text, {
29
- style: styles.timeValue,
30
- children: formatTime(timeElapsed)
31
- })]
32
- })
33
- })
34
- });
35
- };
36
-
37
- // Memoize ScoreBoard to prevent unnecessary re-renders
38
- const MemoizedScoreBoard = /*#__PURE__*/React.memo(ScoreBoard);
39
- const styles = StyleSheet.create({
40
- scoreBoard: {
41
- flexDirection: 'row',
42
- justifyContent: 'center',
43
- alignItems: 'center'
44
- },
45
- scoreSection: {
46
- alignItems: 'center'
47
- },
48
- scoreLabel: {
49
- fontSize: 18,
50
- fontWeight: 'bold',
51
- color: '#ffffff',
52
- marginBottom: 4
53
- },
54
- timeValue: {
55
- fontSize: 30,
56
- fontWeight: 'bold',
57
- color: '#1e1b4b' // Dark purple color for Pop It theme
58
- }
59
- });
60
- export default MemoizedScoreBoard;
61
- //# sourceMappingURL=ScoreBoard.js.map
1
+ "use strict";import React from 'react';import{View,Text,StyleSheet}from 'react-native';import{ScoreBoardContainer}from "../../../helpers/index.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";const ScoreBoard =({timeElapsed,offset = 0})=>{const formatTime = seconds =>{const mins = Math.floor(seconds / 60);const secs = seconds % 60;return `${mins.toString().padStart(2,'0')}:${secs.toString().padStart(2,'0')}`;};return _jsx(ScoreBoardContainer,{offset:offset,backgroundColor:"rgba(108,92,231,0.4)",borderColor:"rgba(139,92,246,0.3)",children:_jsx(View,{style:styles.scoreBoard,children:_jsxs(View,{style:styles.scoreSection,children:[_jsx(Text,{style:styles.scoreLabel,children:"Time Elapsed"}),_jsx(Text,{style:styles.timeValue,children:formatTime(timeElapsed)})]})})});};const MemoizedScoreBoard = React.memo(ScoreBoard);const styles = StyleSheet.create({scoreBoard:{flexDirection:'row',justifyContent:'center',alignItems:'center'},scoreSection:{alignItems:'center'},scoreLabel:{fontSize:16,fontWeight:'bold',color:'#ffffff',marginBottom:4},timeValue:{fontSize:25,fontWeight:'bold',color:'#1e1b4b'}});export default MemoizedScoreBoard;
@@ -1,7 +1 @@
1
- "use strict";
2
-
3
- export { default as BubbleComponent } from "./BubbleComponent.js";
4
- export { default as FidgetGrid } from "./FidgetGrid.js";
5
- export { default as ScoreBoard } from "./ScoreBoard.js";
6
- export { default as GameBackground } from "./GameBackground.js";
7
- //# sourceMappingURL=index.js.map
1
+ "use strict";export{default as BubbleComponent}from "./BubbleComponent.js";export{default as FidgetGrid}from "./FidgetGrid.js";export{default as ScoreBoard}from "./ScoreBoard.js";export{default as GameBackground}from "./GameBackground.js";
@@ -1,159 +1 @@
1
- "use strict";
2
-
3
- import React, { useEffect, useMemo, useCallback } from 'react';
4
- import { View, StyleSheet } from 'react-native';
5
- import { GestureHandlerRootView } from 'react-native-gesture-handler';
6
- import { useSlidingNumbersStore } from "./SlidingNumbersStore.js";
7
- import { SlidingNumbersService } from "./SlidingNumbersService.js";
8
- import { GameBackground, NumbersGrid, ScoreBoard } from "./components/index.js";
9
- import { GameControlButton, GameOverModal } from "../../helpers/index.js";
10
- import { GameSettingsModal } from "../../helpers/index.js";
11
- import { SLIDING_NUMBERS_COLORS } from "./SlidingNumbersConstants.js";
12
- import { GAME_IDS, DEFAULT_GAME_SETTINGS } from "../../services/UtilsService.js";
13
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
- export const SlidingNumbers = /*#__PURE__*/React.memo(({
15
- settings = DEFAULT_GAME_SETTINGS,
16
- onSettingsChange
17
- }) => {
18
- // Read UI-critical state independently to minimize re-renders
19
- const isPlaying = useSlidingNumbersStore(state => state.isPlaying);
20
- const isCompleted = useSlidingNumbersStore(state => state.isCompleted);
21
- const score = useSlidingNumbersStore(state => state.score);
22
-
23
- // Get store actions independently (these don't cause re-renders)
24
- const initializePuzzle = useSlidingNumbersStore(state => state.initializePuzzle);
25
- const shufflePuzzle = useSlidingNumbersStore(state => state.shufflePuzzle);
26
- const startGame = useSlidingNumbersStore(state => state.startGame);
27
- const stopGame = useSlidingNumbersStore(state => state.stopGame);
28
- const resetGame = useSlidingNumbersStore(state => state.resetGame);
29
- const decrementTime = useSlidingNumbersStore(state => state.decrementTime);
30
-
31
- // Get difficulty from external settings
32
- const difficulty = settings?.difficulty || 'easy';
33
-
34
- // Memoized game service creation to prevent recreation
35
- const gameService = useMemo(() => new SlidingNumbersService(), []);
36
-
37
- // Memoized difficulty settings
38
- const difficultySettings = useMemo(() => gameService.getDifficultySettings(difficulty), [gameService, difficulty]);
39
-
40
- // Initialize puzzle when difficulty changes
41
- useEffect(() => {
42
- initializePuzzle(difficultySettings.gridSize);
43
- }, [difficulty, difficultySettings.gridSize, initializePuzzle]);
44
-
45
- // Game timer effect
46
- useEffect(() => {
47
- if (isPlaying) {
48
- gameService.startTimer(() => {
49
- decrementTime();
50
- });
51
- } else {
52
- gameService.stopTimer();
53
- }
54
- return () => {
55
- gameService.stopTimer();
56
- };
57
- }, [isPlaying, gameService, decrementTime]);
58
-
59
- // Cleanup on unmount
60
- useEffect(() => {
61
- return () => {
62
- gameService.cleanup();
63
- };
64
- }, [gameService]);
65
-
66
- // Memoized game control handlers
67
- const handleStartGame = useCallback(() => {
68
- shufflePuzzle();
69
- startGame();
70
- }, [shufflePuzzle, startGame]);
71
- const handleStopGame = useCallback(() => {
72
- stopGame();
73
- }, [stopGame]);
74
- const handleResetGame = useCallback(() => {
75
- resetGame();
76
- // Re-initialize with current difficulty from settings
77
- initializePuzzle(difficultySettings.gridSize);
78
- }, [resetGame, initializePuzzle, difficultySettings.gridSize]);
79
-
80
- // Memoize GameControlButton props to prevent re-renders (CRITICAL)
81
- const gameControlButtonProps = useMemo(() => ({
82
- isPlaying,
83
- gameOver: isCompleted,
84
- onStartGame: handleStartGame,
85
- onStopGame: handleStopGame,
86
- startButtonText: "START GAME",
87
- stopButtonText: "STOP GAME",
88
- startButtonSubtext: "Shuffle and begin solving!",
89
- stopButtonSubtext: "End current game",
90
- startButtonColor: SLIDING_NUMBERS_COLORS.START_BUTTON,
91
- stopButtonColor: "#dc2626",
92
- startButtonBorderColor: SLIDING_NUMBERS_COLORS.BUTTON_BORDER,
93
- stopButtonBorderColor: "#f87171"
94
- }), [isPlaying, isCompleted, handleStartGame, handleStopGame]);
95
-
96
- // Memoize GameOverModal props
97
- const gameOverModalProps = useMemo(() => ({
98
- isVisible: isCompleted,
99
- score,
100
- onPlayAgain: handleResetGame,
101
- buttonText: "Play Again!",
102
- primaryColor: SLIDING_NUMBERS_COLORS.COMPLETION_OVERLAY,
103
- borderColor: "rgba(245, 158, 11, 0.9)",
104
- buttonColor: SLIDING_NUMBERS_COLORS.START_BUTTON,
105
- buttonBorderColor: SLIDING_NUMBERS_COLORS.BUTTON_BORDER
106
- }), [isCompleted, score, handleResetGame]);
107
-
108
- // Memoize GameSettingsModal props
109
- const gameSettingsModalProps = useMemo(() => ({
110
- gameId: GAME_IDS.SLIDING_NUMBERS,
111
- settings: settings || DEFAULT_GAME_SETTINGS,
112
- onSettingsChange
113
- }), [settings, onSettingsChange]);
114
-
115
- // Get offset from settings
116
- const offset = settings?.offset ?? 0;
117
-
118
- // Memoized dynamic styles based on offset
119
- const dynamicStyles = useMemo(() => ({
120
- gameArea: {
121
- ...styles.gameArea,
122
- marginTop: offset // Add margin to shift grid down while maintaining centering
123
- }
124
- }), [offset]);
125
- return /*#__PURE__*/_jsx(View, {
126
- style: styles.container,
127
- children: /*#__PURE__*/_jsx(GestureHandlerRootView, {
128
- children: /*#__PURE__*/_jsxs(GameBackground, {
129
- children: [/*#__PURE__*/_jsx(View, {
130
- style: dynamicStyles.gameArea,
131
- children: /*#__PURE__*/_jsx(NumbersGrid, {
132
- difficulty: difficulty
133
- })
134
- }), /*#__PURE__*/_jsx(ScoreBoard, {
135
- offset: offset
136
- }), /*#__PURE__*/_jsx(GameControlButton, {
137
- ...gameControlButtonProps
138
- }), /*#__PURE__*/_jsx(GameOverModal, {
139
- ...gameOverModalProps
140
- }), /*#__PURE__*/_jsx(GameSettingsModal, {
141
- ...gameSettingsModalProps
142
- })]
143
- })
144
- })
145
- });
146
- });
147
- const styles = StyleSheet.create({
148
- container: {
149
- flex: 1,
150
- backgroundColor: SLIDING_NUMBERS_COLORS.BACKGROUND
151
- },
152
- gameArea: {
153
- flex: 1,
154
- justifyContent: 'center',
155
- alignItems: 'center'
156
- }
157
- });
158
- SlidingNumbers.displayName = 'SlidingNumbers';
159
- //# sourceMappingURL=SlidingNumbers.js.map
1
+ "use strict";import React,{useEffect,useMemo,useCallback}from 'react';import{View,StyleSheet}from 'react-native';import{GestureHandlerRootView}from 'react-native-gesture-handler';import{useSlidingNumbersStore}from "./SlidingNumbersStore.js";import{SlidingNumbersService}from "./SlidingNumbersService.js";import{GameBackground,NumbersGrid,ScoreBoard}from "./components/index.js";import{GameControlButton,GameOverModal}from "../../helpers/index.js";import{GameSettingsModal}from "../../helpers/index.js";import{SLIDING_NUMBERS_COLORS}from "./SlidingNumbersConstants.js";import{GAME_IDS,DEFAULT_GAME_SETTINGS}from "../../services/UtilsService.js";import{jsx as _jsx,jsxs as _jsxs}from "react/jsx-runtime";export const SlidingNumbers = React.memo(({settings = DEFAULT_GAME_SETTINGS,onSettingsChange})=>{const isPlaying = useSlidingNumbersStore(state => state.isPlaying);const isCompleted = useSlidingNumbersStore(state => state.isCompleted);const score = useSlidingNumbersStore(state => state.score);const initializePuzzle = useSlidingNumbersStore(state => state.initializePuzzle);const shufflePuzzle = useSlidingNumbersStore(state => state.shufflePuzzle);const startGame = useSlidingNumbersStore(state => state.startGame);const stopGame = useSlidingNumbersStore(state => state.stopGame);const resetGame = useSlidingNumbersStore(state => state.resetGame);const decrementTime = useSlidingNumbersStore(state => state.decrementTime);const difficulty = settings?.difficulty || 'easy';const gameService = useMemo(()=> new SlidingNumbersService(),[]);const difficultySettings = useMemo(()=> gameService.getDifficultySettings(difficulty),[gameService,difficulty]);useEffect(()=>{initializePuzzle(difficultySettings.gridSize);},[difficulty,difficultySettings.gridSize,initializePuzzle]);useEffect(()=>{if(isPlaying){gameService.startTimer(()=>{decrementTime();});}else{gameService.stopTimer();}return()=>{gameService.stopTimer();};},[isPlaying,gameService,decrementTime]);useEffect(()=>{return()=>{gameService.cleanup();};},[gameService]);const handleStartGame = useCallback(()=>{shufflePuzzle();startGame();},[shufflePuzzle,startGame]);const handleStopGame = useCallback(()=>{stopGame();},[stopGame]);const handleResetGame = useCallback(()=>{resetGame();initializePuzzle(difficultySettings.gridSize);},[resetGame,initializePuzzle,difficultySettings.gridSize]);const gameControlButtonProps = useMemo(()=>({isPlaying,gameOver:isCompleted,onStartGame:handleStartGame,onStopGame:handleStopGame,startButtonText:"START GAME",stopButtonText:"STOP GAME",startButtonSubtext:"Shuffle and begin solving!",stopButtonSubtext:"End current game",startButtonColor:SLIDING_NUMBERS_COLORS.START_BUTTON,stopButtonColor:"#dc2626",startButtonBorderColor:SLIDING_NUMBERS_COLORS.BUTTON_BORDER,stopButtonBorderColor:"#f87171"}),[isPlaying,isCompleted,handleStartGame,handleStopGame]);const gameOverModalProps = useMemo(()=>({isVisible:isCompleted,score,onPlayAgain:handleResetGame,buttonText:"Play Again!",primaryColor:"rgba(245,158,11,0.5)",borderColor:"rgba(245,158,11,0.5)",buttonColor:"#ffffff",buttonBorderColor:"#ffffff",buttonTextColor:"#f59e0b"}),[isCompleted,score,handleResetGame]);const gameSettingsModalProps = useMemo(()=>({gameId:GAME_IDS.SLIDING_NUMBERS,settings:settings || DEFAULT_GAME_SETTINGS,onSettingsChange}),[settings,onSettingsChange]);const offset = settings?.offset ?? 0;const dynamicStyles = useMemo(()=>({gameArea:{...styles.gameArea,marginTop:offset}}),[offset]);return _jsx(View,{style:styles.container,children:_jsx(GestureHandlerRootView,{children:_jsxs(GameBackground,{children:[_jsx(View,{style:dynamicStyles.gameArea,children:_jsx(NumbersGrid,{difficulty:difficulty})}),_jsx(ScoreBoard,{offset:offset}),_jsx(GameControlButton,{...gameControlButtonProps}),_jsx(GameOverModal,{...gameOverModalProps}),_jsx(GameSettingsModal,{...gameSettingsModalProps})]})})});});const styles = StyleSheet.create({container:{flex:1,backgroundColor:SLIDING_NUMBERS_COLORS.BACKGROUND},gameArea:{flex:1,justifyContent:'center',alignItems:'center'}});SlidingNumbers.displayName = 'SlidingNumbers';
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useMemo","useCallback","View","StyleSheet","GestureHandlerRootView","useSlidingNumbersStore","SlidingNumbersService","GameBackground","NumbersGrid","ScoreBoard","GameControlButton","GameOverModal","GameSettingsModal","SLIDING_NUMBERS_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","SlidingNumbers","memo","settings","onSettingsChange","isPlaying","state","isCompleted","score","initializePuzzle","shufflePuzzle","startGame","stopGame","resetGame","decrementTime","difficulty","gameService","difficultySettings","getDifficultySettings","gridSize","startTimer","stopTimer","cleanup","handleStartGame","handleStopGame","handleResetGame","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","START_BUTTON","stopButtonColor","startButtonBorderColor","BUTTON_BORDER","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","COMPLETION_OVERLAY","borderColor","buttonColor","buttonBorderColor","gameSettingsModalProps","gameId","SLIDING_NUMBERS","offset","dynamicStyles","gameArea","styles","marginTop","style","container","children","create","flex","backgroundColor","BACKGROUND","justifyContent","alignItems","displayName"],"sourceRoot":"../../../../src","sources":["games/sliding-numbers/SlidingNumbers.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useMemo","useCallback","View","StyleSheet","GestureHandlerRootView","useSlidingNumbersStore","SlidingNumbersService","GameBackground","NumbersGrid","ScoreBoard","GameControlButton","GameOverModal","GameSettingsModal","SLIDING_NUMBERS_COLORS","GAME_IDS","DEFAULT_GAME_SETTINGS","jsx","_jsx","jsxs","_jsxs","SlidingNumbers","memo","settings","onSettingsChange","isPlaying","state","isCompleted","score","initializePuzzle","shufflePuzzle","startGame","stopGame","resetGame","decrementTime","difficulty","gameService","difficultySettings","getDifficultySettings","gridSize","startTimer","stopTimer","cleanup","handleStartGame","handleStopGame","handleResetGame","gameControlButtonProps","gameOver","onStartGame","onStopGame","startButtonText","stopButtonText","startButtonSubtext","stopButtonSubtext","startButtonColor","START_BUTTON","stopButtonColor","startButtonBorderColor","BUTTON_BORDER","stopButtonBorderColor","gameOverModalProps","isVisible","onPlayAgain","buttonText","primaryColor","borderColor","buttonColor","buttonBorderColor","buttonTextColor","gameSettingsModalProps","gameId","SLIDING_NUMBERS","offset","dynamicStyles","gameArea","styles","marginTop","style","container","children","create","flex","backgroundColor","BACKGROUND","justifyContent","alignItems","displayName"],"sourceRoot":"../../../../src","sources":["games/sliding-numbers/SlidingNumbers.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,207 +1 @@
1
- "use strict";
2
-
3
- import { Dimensions } from 'react-native';
4
- // Memoize screen dimensions for better performance
5
- const {
6
- width
7
- } = Dimensions.get('window');
8
-
9
- // Sliding Numbers Game Constants
10
- export const SLIDING_NUMBERS_CONSTANTS = {
11
- gridSize: {
12
- easy: 3,
13
- // 3x3 grid (numbers 1-8 + empty)
14
- medium: 4,
15
- // 4x4 grid (numbers 1-15 + empty)
16
- hard: 5 // 5x5 grid (numbers 1-24 + empty)
17
- },
18
- maxNumbers: {
19
- easy: 8,
20
- // 1-8 numbers
21
- medium: 15,
22
- // 1-15 numbers
23
- hard: 24 // 1-24 numbers
24
- },
25
- baseScore: {
26
- easy: 1000,
27
- medium: 2000,
28
- hard: 3000
29
- },
30
- // Score decreases over time - faster completion = higher score
31
- scoreMultiplier: {
32
- easy: 5,
33
- medium: 10,
34
- hard: 15
35
- }
36
- };
37
- export const SLIDING_NUMBERS_GAME_CONFIG = {
38
- TILE_SIZE: Math.min(width * 0.16, 70),
39
- // Responsive tile size that fits all difficulties
40
- TILE_GAP: 4,
41
- GRID_PADDING: 20,
42
- GAME_DURATION: 600,
43
- // 10 minutes
44
- SHUFFLE_MOVES: 100,
45
- // Number of moves to shuffle the puzzle
46
- ANIMATION_DURATION: 200 // ms for tile sliding animation
47
- };
48
- export const SLIDING_NUMBERS_ANIMATION_CONFIG = {
49
- TILE_SLIDE: {
50
- damping: 25,
51
- stiffness: 400,
52
- mass: 1,
53
- restDisplacementThreshold: 0.01,
54
- restSpeedThreshold: 0.01
55
- },
56
- TILE_PRESS: {
57
- damping: 15,
58
- stiffness: 200
59
- },
60
- GESTURE: {
61
- activeScale: 1.05,
62
- snapThreshold: 0.3,
63
- // 30% of tile size to trigger snap
64
- velocityThreshold: 500 // minimum velocity for gesture recognition
65
- },
66
- COMPLETION_CELEBRATION: {
67
- duration: 500
68
- }
69
- };
70
- export const SLIDING_NUMBERS_COLORS = {
71
- BACKGROUND: '#F5F5DC',
72
- // Beige background like the physical puzzle
73
- GRID_BACKGROUND: '#FFFFFF',
74
- // White grid background
75
- GRID_BORDER: '#E0E0E0',
76
- // Light gray border
77
- TILE_COLORS: ['#FFB3D9',
78
- // Soft pink (like tiles 1, 14, 11 in image)
79
- '#B3E5FC',
80
- // Soft light blue (like tiles 2, 13, 15 in image)
81
- '#C8E6C9',
82
- // Soft light green (like tiles 6, 9 in image)
83
- '#FFF9C4',
84
- // Soft light yellow (like tile 3 in image)
85
- '#E1BEE7',
86
- // Soft lavender (like tiles 7, 10 in image)
87
- '#FFCDD2',
88
- // Soft coral pink
89
- '#B2DFDB',
90
- // Soft mint green
91
- '#F8BBD9',
92
- // Soft rose pink
93
- '#A5D6A7',
94
- // Soft green
95
- '#FFECB3',
96
- // Soft cream yellow
97
- '#D1C4E9',
98
- // Soft purple
99
- '#B3E5FC',
100
- // Soft sky blue
101
- '#FFE0B2',
102
- // Soft peach
103
- '#C8E6C9',
104
- // Soft mint
105
- '#F8BBD9',
106
- // Soft pink
107
- '#E0F2F1',
108
- // Very soft mint
109
- '#FCE4EC',
110
- // Very soft pink
111
- '#E8F5E8',
112
- // Very soft green
113
- '#FFF3E0',
114
- // Very soft orange
115
- '#F3E5F5',
116
- // Very soft purple
117
- '#E1F5FE',
118
- // Very soft blue
119
- '#F9FBE7',
120
- // Very soft lime
121
- '#FFF8E1',
122
- // Very soft yellow
123
- '#EFEBE9' // Very soft brown
124
- ],
125
- TILE_BORDER: '#D0D0D0',
126
- TILE_SHADOW: 'rgba(0,0,0,0.1)',
127
- NUMBER_TEXT: '#333333',
128
- WORD_TEXT: '#666666',
129
- EMPTY_TILE: '#F8F8F8',
130
- SCORE_BOARD: '#f59e0b',
131
- // Yellow to match scoreboard
132
- SCORE_TEXT: '#FFFFFF',
133
- TIMER_TEXT: '#f59e0b',
134
- // Yellow for timer
135
- UI: '#f59e0b',
136
- // Yellow UI elements
137
- BUTTON_ACTIVE: '#f59e0b',
138
- // Yellow active button
139
- BUTTON_INACTIVE: '#fbbf24',
140
- // Lighter yellow for inactive
141
- TEXT_PRIMARY: '#FFFFFF',
142
- TEXT_SECONDARY: '#fef3c7',
143
- // Light yellow text
144
- WHITE: '#FFFFFF',
145
- START_BUTTON: '#f59e0b',
146
- // Yellow start button
147
- COMPLETION_OVERLAY: 'rgba(245, 158, 11, 0.9)',
148
- // Yellow overlay
149
- BUTTON_BORDER: '#fbbf24' // Light yellow border
150
- };
151
-
152
- // Number word mappings for tiles
153
- export const NUMBER_WORDS = {
154
- 1: 'one',
155
- 2: 'two',
156
- 3: 'three',
157
- 4: 'four',
158
- 5: 'five',
159
- 6: 'six',
160
- 7: 'seven',
161
- 8: 'eight',
162
- 9: 'nine',
163
- 10: 'ten',
164
- 11: 'eleven',
165
- 12: 'twelve',
166
- 13: 'thirteen',
167
- 14: 'fourteen',
168
- 15: 'fifteen',
169
- 16: 'sixteen',
170
- 17: 'seventeen',
171
- 18: 'eighteen',
172
- 19: 'nineteen',
173
- 20: 'twenty',
174
- 21: 'twenty-one',
175
- 22: 'twenty-two',
176
- 23: 'twenty-three',
177
- 24: 'twenty-four'
178
- };
179
-
180
- // Sliding Numbers Game Theme - Yellow theme matching the scoreboard
181
- export const SLIDING_NUMBERS_THEME = {
182
- backgroundColor: '#F5F5DC',
183
- // Beige background like physical puzzle
184
- headerBackgroundColor: 'rgba(245, 158, 11, 0.9)',
185
- // Yellow header
186
- headerTextColor: '#ffffff',
187
- sectionBackgroundColor: 'rgba(245, 158, 11, 0.4)',
188
- // Light yellow sections
189
- sectionTitleColor: '#ffffff',
190
- buttonSelectedColor: '#f59e0b',
191
- // Yellow for selected
192
- buttonUnselectedColor: 'rgba(255, 255, 255, 0.3)',
193
- buttonSelectedTextColor: '#ffffff',
194
- buttonUnselectedTextColor: '#1f2937',
195
- switchTrackColorFalse: 'rgba(245, 158, 11, 0.5)',
196
- switchTrackColorTrue: '#f59e0b',
197
- switchThumbColor: '#ffffff',
198
- infoTextColor: '#1f2937' // Dark text for readability
199
- };
200
-
201
- // Sliding Numbers Difficulty Descriptions
202
- export const SLIDING_NUMBERS_DIFFICULTY_DESCRIPTIONS = {
203
- easy: '3x3 grid with numbers 1-8, perfect for beginners',
204
- medium: '4x4 grid with numbers 1-15, moderate challenge',
205
- hard: '5x5 grid with numbers 1-24, expert level puzzle'
206
- };
207
- //# sourceMappingURL=SlidingNumbersConstants.js.map
1
+ "use strict";import{Dimensions}from 'react-native';const{width}= Dimensions.get('window');export const SLIDING_NUMBERS_CONSTANTS ={gridSize:{easy:3,medium:4,hard:5},maxNumbers:{easy:8,medium:15,hard:24},baseScore:{easy:1000,medium:2000,hard:3000},scoreMultiplier:{easy:5,medium:10,hard:15}};export const SLIDING_NUMBERS_GAME_CONFIG ={TILE_SIZE:Math.min(width * 0.16,70),TILE_GAP:4,GRID_PADDING:20,GAME_DURATION:600,SHUFFLE_MOVES:100,ANIMATION_DURATION:200};export const SLIDING_NUMBERS_ANIMATION_CONFIG ={TILE_SLIDE:{damping:25,stiffness:400,mass:1,restDisplacementThreshold:0.01,restSpeedThreshold:0.01},TILE_PRESS:{damping:15,stiffness:200},GESTURE:{activeScale:1.05,snapThreshold:0.3,velocityThreshold:500},COMPLETION_CELEBRATION:{duration:500}};export const SLIDING_NUMBERS_COLORS ={BACKGROUND:'#F5F5DC',GRID_BACKGROUND:'#FFFFFF',GRID_BORDER:'#E0E0E0',TILE_COLORS:['#FFB3D9','#B3E5FC','#C8E6C9','#FFF9C4','#E1BEE7','#FFCDD2','#B2DFDB','#F8BBD9','#A5D6A7','#FFECB3','#D1C4E9','#B3E5FC','#FFE0B2','#C8E6C9','#F8BBD9','#E0F2F1','#FCE4EC','#E8F5E8','#FFF3E0','#F3E5F5','#E1F5FE','#F9FBE7','#FFF8E1','#EFEBE9' ],TILE_BORDER:'#D0D0D0',TILE_SHADOW:'rgba(0,0,0,0.1)',NUMBER_TEXT:'#333333',WORD_TEXT:'#666666',EMPTY_TILE:'#F8F8F8',SCORE_BOARD:'#f59e0b',SCORE_TEXT:'#FFFFFF',TIMER_TEXT:'#f59e0b',UI:'#f59e0b',BUTTON_ACTIVE:'#f59e0b',BUTTON_INACTIVE:'#fbbf24',TEXT_PRIMARY:'#FFFFFF',TEXT_SECONDARY:'#fef3c7',WHITE:'#FFFFFF',START_BUTTON:'#f59e0b',COMPLETION_OVERLAY:'rgba(245,158,11,0.9)',BUTTON_BORDER:'#fbbf24'};export const NUMBER_WORDS ={1:'one',2:'two',3:'three',4:'four',5:'five',6:'six',7:'seven',8:'eight',9:'nine',10:'ten',11:'eleven',12:'twelve',13:'thirteen',14:'fourteen',15:'fifteen',16:'sixteen',17:'seventeen',18:'eighteen',19:'nineteen',20:'twenty',21:'twenty-one',22:'twenty-two',23:'twenty-three',24:'twenty-four'};export const SLIDING_NUMBERS_THEME ={backgroundColor:'rgba(0,0,0,0.7)',headerBackgroundColor:'#f59e0b',headerTextColor:'#ffffff',sectionBackgroundColor:'rgba(245,158,11,0.15)',sectionTitleColor:'#f59e0b',buttonSelectedColor:'#f59e0b',buttonUnselectedColor:'rgba(255,255,255,0.2)',buttonSelectedTextColor:'#ffffff',buttonUnselectedTextColor:'rgba(255,255,255,0.7)',switchTrackColorFalse:'rgba(245,158,11,0.3)',switchTrackColorTrue:'#f59e0b',switchThumbColor:'#ffffff',infoTextColor:'rgba(255,255,255,0.9)'};export const SLIDING_NUMBERS_DIFFICULTY_DESCRIPTIONS ={easy:'3x3 grid with numbers 1-8,perfect for beginners',medium:'4x4 grid with numbers 1-15,moderate challenge',hard:'5x5 grid with numbers 1-24,expert level puzzle'};