react-native-games 0.3.0 → 0.5.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 (429) hide show
  1. package/README.md +134 -130
  2. package/lib/module/games/balloon-blaster/BalloonBlaster.js +116 -343
  3. package/lib/module/games/balloon-blaster/BalloonBlaster.js.map +1 -1
  4. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js +182 -0
  5. package/lib/module/games/balloon-blaster/BalloonBlasterConstants.js.map +1 -0
  6. package/lib/module/games/balloon-blaster/BalloonBlasterService.js +123 -101
  7. package/lib/module/games/balloon-blaster/BalloonBlasterService.js.map +1 -1
  8. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js +119 -92
  9. package/lib/module/games/balloon-blaster/BalloonBlasterStore.js.map +1 -1
  10. package/lib/module/games/balloon-blaster/components/BalloonComponent.js +123 -113
  11. package/lib/module/games/balloon-blaster/components/BalloonComponent.js.map +1 -1
  12. package/lib/module/games/balloon-blaster/components/GameArea.js +137 -23
  13. package/lib/module/games/balloon-blaster/components/GameArea.js.map +1 -1
  14. package/lib/module/games/balloon-blaster/components/GameBackground.js +8 -83
  15. package/lib/module/games/balloon-blaster/components/GameBackground.js.map +1 -1
  16. package/lib/module/games/balloon-blaster/components/ScoreBoard.js +15 -22
  17. package/lib/module/games/balloon-blaster/components/ScoreBoard.js.map +1 -1
  18. package/lib/module/games/balloon-blaster/components/index.js +0 -4
  19. package/lib/module/games/balloon-blaster/components/index.js.map +1 -1
  20. package/lib/module/games/fruit-ninja/FruitNinja.js +143 -0
  21. package/lib/module/games/fruit-ninja/FruitNinja.js.map +1 -0
  22. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js +148 -0
  23. package/lib/module/games/fruit-ninja/FruitNinjaConstants.js.map +1 -0
  24. package/lib/module/games/{fruit-slicer/FruitSlicerService.js → fruit-ninja/FruitNinjaService.js} +43 -21
  25. package/lib/module/games/fruit-ninja/FruitNinjaService.js.map +1 -0
  26. package/lib/module/games/fruit-ninja/FruitNinjaStore.js +191 -0
  27. package/lib/module/games/fruit-ninja/FruitNinjaStore.js.map +1 -0
  28. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/FruitComponent.js +1 -1
  29. package/lib/module/games/fruit-ninja/components/FruitComponent.js.map +1 -0
  30. package/lib/module/games/fruit-ninja/components/GameArea.js +215 -0
  31. package/lib/module/games/fruit-ninja/components/GameArea.js.map +1 -0
  32. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/GameBackground.js +250 -304
  33. package/lib/module/games/fruit-ninja/components/GameBackground.js.map +1 -0
  34. package/lib/module/games/{fruit-slicer → fruit-ninja}/components/ScoreBoard.js +17 -47
  35. package/lib/module/games/fruit-ninja/components/ScoreBoard.js.map +1 -0
  36. package/lib/module/games/fruit-ninja/components/index.js +7 -0
  37. package/lib/module/games/fruit-ninja/components/index.js.map +1 -0
  38. package/lib/module/games/maze-runner/MazeRunner.js +184 -169
  39. package/lib/module/games/maze-runner/MazeRunner.js.map +1 -1
  40. package/lib/module/games/maze-runner/MazeRunnerConstants.js +100 -0
  41. package/lib/module/games/maze-runner/MazeRunnerConstants.js.map +1 -0
  42. package/lib/module/games/maze-runner/MazeRunnerService.js +37 -14
  43. package/lib/module/games/maze-runner/MazeRunnerService.js.map +1 -1
  44. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js +5 -4
  45. package/lib/module/games/maze-runner/components/EnhancedBallComponent.js.map +1 -1
  46. package/lib/module/games/maze-runner/components/EnhancedGameArea.js +20 -15
  47. package/lib/module/games/maze-runner/components/EnhancedGameArea.js.map +1 -1
  48. package/lib/module/games/maze-runner/components/GameBackground.js +151 -192
  49. package/lib/module/games/maze-runner/components/GameBackground.js.map +1 -1
  50. package/lib/module/games/maze-runner/components/ScoreBoard.js +15 -25
  51. package/lib/module/games/maze-runner/components/ScoreBoard.js.map +1 -1
  52. package/lib/module/games/maze-runner/components/WallComponent.js +3 -2
  53. package/lib/module/games/maze-runner/components/WallComponent.js.map +1 -1
  54. package/lib/module/games/maze-runner/components/index.js +0 -2
  55. package/lib/module/games/maze-runner/components/index.js.map +1 -1
  56. package/lib/module/games/popit-fidget/PopitFidget.js +294 -0
  57. package/lib/module/games/popit-fidget/PopitFidget.js.map +1 -0
  58. package/lib/module/games/popit-fidget/PopitFidgetConstants.js +113 -0
  59. package/lib/module/games/popit-fidget/PopitFidgetConstants.js.map +1 -0
  60. package/lib/module/games/popit-fidget/PopitFidgetService.js +132 -0
  61. package/lib/module/games/popit-fidget/PopitFidgetService.js.map +1 -0
  62. package/lib/module/games/popit-fidget/PopitFidgetStore.js +163 -0
  63. package/lib/module/games/popit-fidget/PopitFidgetStore.js.map +1 -0
  64. package/lib/module/games/popit-fidget/components/BubbleComponent.js +198 -0
  65. package/lib/module/games/popit-fidget/components/BubbleComponent.js.map +1 -0
  66. package/lib/module/games/popit-fidget/components/FidgetGrid.js +165 -0
  67. package/lib/module/games/popit-fidget/components/FidgetGrid.js.map +1 -0
  68. package/lib/module/games/popit-fidget/components/GameBackground.js +177 -0
  69. package/lib/module/games/popit-fidget/components/GameBackground.js.map +1 -0
  70. package/lib/module/games/popit-fidget/components/ScoreBoard.js +75 -0
  71. package/lib/module/games/popit-fidget/components/ScoreBoard.js.map +1 -0
  72. package/lib/module/games/popit-fidget/components/index.js +7 -0
  73. package/lib/module/games/popit-fidget/components/index.js.map +1 -0
  74. package/lib/module/games/space-fighter/SpaceFighter.js +169 -0
  75. package/lib/module/games/space-fighter/SpaceFighter.js.map +1 -0
  76. package/lib/module/games/space-fighter/SpaceFighterConstants.js +108 -0
  77. package/lib/module/games/space-fighter/SpaceFighterConstants.js.map +1 -0
  78. package/lib/module/games/{space-traveller/SpaceTravellerService.js → space-fighter/SpaceFighterService.js} +48 -21
  79. package/lib/module/games/space-fighter/SpaceFighterService.js.map +1 -0
  80. package/lib/module/games/space-fighter/SpaceFighterStore.js +195 -0
  81. package/lib/module/games/space-fighter/SpaceFighterStore.js.map +1 -0
  82. package/lib/module/games/{space-traveller → space-fighter}/components/AsteroidComponent.js +7 -5
  83. package/lib/module/games/space-fighter/components/AsteroidComponent.js.map +1 -0
  84. package/lib/module/games/space-fighter/components/GameArea.js +295 -0
  85. package/lib/module/games/space-fighter/components/GameArea.js.map +1 -0
  86. package/lib/module/games/{space-traveller → space-fighter}/components/GameBackground.js +10 -65
  87. package/lib/module/games/space-fighter/components/GameBackground.js.map +1 -0
  88. package/lib/module/games/{space-traveller → space-fighter}/components/ScoreBoard.js +20 -26
  89. package/lib/module/games/space-fighter/components/ScoreBoard.js.map +1 -0
  90. package/lib/module/games/{space-traveller → space-fighter}/components/Spacecraft3D.js +72 -111
  91. package/lib/module/games/space-fighter/components/Spacecraft3D.js.map +1 -0
  92. package/lib/module/games/space-fighter/components/SpacecraftPath.js +52 -0
  93. package/lib/module/games/space-fighter/components/SpacecraftPath.js.map +1 -0
  94. package/lib/module/games/{space-traveller → space-fighter}/components/index.js +0 -4
  95. package/lib/module/games/space-fighter/components/index.js.map +1 -0
  96. package/lib/module/games/whack-a-mole/WhackAMole.js +263 -0
  97. package/lib/module/games/whack-a-mole/WhackAMole.js.map +1 -0
  98. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js +115 -0
  99. package/lib/module/games/whack-a-mole/WhackAMoleConstants.js.map +1 -0
  100. package/lib/module/games/whack-a-mole/WhackAMoleService.js +120 -0
  101. package/lib/module/games/whack-a-mole/WhackAMoleService.js.map +1 -0
  102. package/lib/module/games/whack-a-mole/WhackAMoleStore.js +172 -0
  103. package/lib/module/games/whack-a-mole/WhackAMoleStore.js.map +1 -0
  104. package/lib/module/games/{cat-popper → whack-a-mole}/components/GameBackground.js +31 -91
  105. package/lib/module/games/whack-a-mole/components/GameBackground.js.map +1 -0
  106. package/lib/module/games/whack-a-mole/components/GameGrid.js +97 -0
  107. package/lib/module/games/whack-a-mole/components/GameGrid.js.map +1 -0
  108. package/lib/module/games/{cat-popper → whack-a-mole}/components/GameHole.js +67 -54
  109. package/lib/module/games/whack-a-mole/components/GameHole.js.map +1 -0
  110. package/lib/module/games/{cat-popper/components/CatCharacter.js → whack-a-mole/components/MoleCharacter.js} +75 -115
  111. package/lib/module/games/whack-a-mole/components/MoleCharacter.js.map +1 -0
  112. package/lib/module/games/{cat-popper → whack-a-mole}/components/ScoreBoard.js +13 -17
  113. package/lib/module/games/whack-a-mole/components/ScoreBoard.js.map +1 -0
  114. package/lib/module/games/{cat-popper → whack-a-mole}/components/index.js +1 -3
  115. package/lib/module/games/whack-a-mole/components/index.js.map +1 -0
  116. package/lib/module/index.js +4 -3
  117. package/lib/module/index.js.map +1 -1
  118. package/lib/module/services/GamesConstants.js +41 -519
  119. package/lib/module/services/GamesConstants.js.map +1 -1
  120. package/lib/module/services/GamesService.js +35 -23
  121. package/lib/module/services/GamesService.js.map +1 -1
  122. package/lib/module/services/HapticsService.js +77 -0
  123. package/lib/module/services/HapticsService.js.map +1 -0
  124. package/lib/module/services/SoundsService.js +171 -0
  125. package/lib/module/services/SoundsService.js.map +1 -0
  126. package/lib/module/shared/helpers/AnimationFrame.js +120 -0
  127. package/lib/module/shared/helpers/AnimationFrame.js.map +1 -0
  128. package/lib/module/shared/helpers/AnimationTracker.js +89 -0
  129. package/lib/module/shared/helpers/AnimationTracker.js.map +1 -0
  130. package/lib/module/shared/helpers/ErrorHandler.js +269 -0
  131. package/lib/module/shared/helpers/ErrorHandler.js.map +1 -0
  132. package/lib/module/shared/helpers/GameControlButton.js +219 -0
  133. package/lib/module/shared/helpers/GameControlButton.js.map +1 -0
  134. package/lib/module/{games/balloon-blaster/components → shared/helpers}/GameOverModal.js +25 -17
  135. package/lib/module/shared/helpers/GameOverModal.js.map +1 -0
  136. package/lib/module/shared/helpers/GameSettingsModal.js +287 -0
  137. package/lib/module/shared/helpers/GameSettingsModal.js.map +1 -0
  138. package/lib/module/shared/helpers/ParticleBlast.js +133 -0
  139. package/lib/module/shared/helpers/ParticleBlast.js.map +1 -0
  140. package/lib/module/shared/helpers/ResponsiveScoreBoard.js +81 -0
  141. package/lib/module/shared/helpers/ResponsiveScoreBoard.js.map +1 -0
  142. package/lib/module/shared/helpers/index.js +12 -0
  143. package/lib/module/shared/helpers/index.js.map +1 -0
  144. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts +2 -14
  145. package/lib/typescript/src/games/balloon-blaster/BalloonBlaster.d.ts.map +1 -1
  146. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts +144 -0
  147. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterConstants.d.ts.map +1 -0
  148. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts +1 -1
  149. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterService.d.ts.map +1 -1
  150. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts +12 -2
  151. package/lib/typescript/src/games/balloon-blaster/BalloonBlasterStore.d.ts.map +1 -1
  152. package/lib/typescript/src/games/balloon-blaster/components/BalloonComponent.d.ts.map +1 -1
  153. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts +1 -15
  154. package/lib/typescript/src/games/balloon-blaster/components/GameArea.d.ts.map +1 -1
  155. package/lib/typescript/src/games/balloon-blaster/components/GameBackground.d.ts.map +1 -1
  156. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts +1 -7
  157. package/lib/typescript/src/games/balloon-blaster/components/ScoreBoard.d.ts.map +1 -1
  158. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts +0 -4
  159. package/lib/typescript/src/games/balloon-blaster/components/index.d.ts.map +1 -1
  160. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts +4 -0
  161. package/lib/typescript/src/games/fruit-ninja/FruitNinja.d.ts.map +1 -0
  162. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts +112 -0
  163. package/lib/typescript/src/games/fruit-ninja/FruitNinjaConstants.d.ts.map +1 -0
  164. package/lib/typescript/src/games/{fruit-slicer/FruitSlicerService.d.ts → fruit-ninja/FruitNinjaService.d.ts} +13 -5
  165. package/lib/typescript/src/games/fruit-ninja/FruitNinjaService.d.ts.map +1 -0
  166. package/lib/typescript/src/games/{fruit-slicer/FruitSlicerStore.d.ts → fruit-ninja/FruitNinjaStore.d.ts} +13 -4
  167. package/lib/typescript/src/games/fruit-ninja/FruitNinjaStore.d.ts.map +1 -0
  168. package/lib/typescript/src/games/{fruit-slicer → fruit-ninja}/components/FruitComponent.d.ts +1 -1
  169. package/lib/typescript/src/games/fruit-ninja/components/FruitComponent.d.ts.map +1 -0
  170. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts +3 -0
  171. package/lib/typescript/src/games/fruit-ninja/components/GameArea.d.ts.map +1 -0
  172. package/lib/typescript/src/games/fruit-ninja/components/GameBackground.d.ts.map +1 -0
  173. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts +3 -0
  174. package/lib/typescript/src/games/fruit-ninja/components/ScoreBoard.d.ts.map +1 -0
  175. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts +5 -0
  176. package/lib/typescript/src/games/fruit-ninja/components/index.d.ts.map +1 -0
  177. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts +2 -16
  178. package/lib/typescript/src/games/maze-runner/MazeRunner.d.ts.map +1 -1
  179. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts +41 -0
  180. package/lib/typescript/src/games/maze-runner/MazeRunnerConstants.d.ts.map +1 -0
  181. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts +4 -2
  182. package/lib/typescript/src/games/maze-runner/MazeRunnerService.d.ts.map +1 -1
  183. package/lib/typescript/src/games/maze-runner/components/EnhancedBallComponent.d.ts.map +1 -1
  184. package/lib/typescript/src/games/maze-runner/components/EnhancedGameArea.d.ts.map +1 -1
  185. package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts +2 -1
  186. package/lib/typescript/src/games/maze-runner/components/GameBackground.d.ts.map +1 -1
  187. package/lib/typescript/src/games/maze-runner/components/ScoreBoard.d.ts.map +1 -1
  188. package/lib/typescript/src/games/maze-runner/components/WallComponent.d.ts.map +1 -1
  189. package/lib/typescript/src/games/maze-runner/components/index.d.ts +0 -2
  190. package/lib/typescript/src/games/maze-runner/components/index.d.ts.map +1 -1
  191. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts +5 -0
  192. package/lib/typescript/src/games/popit-fidget/PopitFidget.d.ts.map +1 -0
  193. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts +45 -0
  194. package/lib/typescript/src/games/popit-fidget/PopitFidgetConstants.d.ts.map +1 -0
  195. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts +33 -0
  196. package/lib/typescript/src/games/popit-fidget/PopitFidgetService.d.ts.map +1 -0
  197. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts +36 -0
  198. package/lib/typescript/src/games/popit-fidget/PopitFidgetStore.d.ts.map +1 -0
  199. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts +12 -0
  200. package/lib/typescript/src/games/popit-fidget/components/BubbleComponent.d.ts.map +1 -0
  201. package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts +12 -0
  202. package/lib/typescript/src/games/popit-fidget/components/FidgetGrid.d.ts.map +1 -0
  203. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts +9 -0
  204. package/lib/typescript/src/games/popit-fidget/components/GameBackground.d.ts.map +1 -0
  205. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts +8 -0
  206. package/lib/typescript/src/games/popit-fidget/components/ScoreBoard.d.ts.map +1 -0
  207. package/lib/typescript/src/games/popit-fidget/components/index.d.ts +5 -0
  208. package/lib/typescript/src/games/popit-fidget/components/index.d.ts.map +1 -0
  209. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts +4 -0
  210. package/lib/typescript/src/games/space-fighter/SpaceFighter.d.ts.map +1 -0
  211. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts +71 -0
  212. package/lib/typescript/src/games/space-fighter/SpaceFighterConstants.d.ts.map +1 -0
  213. package/lib/typescript/src/games/{space-traveller/SpaceTravellerService.d.ts → space-fighter/SpaceFighterService.d.ts} +7 -4
  214. package/lib/typescript/src/games/space-fighter/SpaceFighterService.d.ts.map +1 -0
  215. package/lib/typescript/src/games/{space-traveller/SpaceTravellerStore.d.ts → space-fighter/SpaceFighterStore.d.ts} +12 -4
  216. package/lib/typescript/src/games/space-fighter/SpaceFighterStore.d.ts.map +1 -0
  217. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts +8 -0
  218. package/lib/typescript/src/games/space-fighter/components/AsteroidComponent.d.ts.map +1 -0
  219. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts +3 -0
  220. package/lib/typescript/src/games/space-fighter/components/GameArea.d.ts.map +1 -0
  221. package/lib/typescript/src/games/space-fighter/components/GameBackground.d.ts.map +1 -0
  222. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts +3 -0
  223. package/lib/typescript/src/games/space-fighter/components/ScoreBoard.d.ts.map +1 -0
  224. package/lib/typescript/src/games/{space-traveller → space-fighter}/components/Spacecraft3D.d.ts +1 -1
  225. package/lib/typescript/src/games/space-fighter/components/Spacecraft3D.d.ts.map +1 -0
  226. package/lib/typescript/src/games/space-fighter/components/SpacecraftPath.d.ts.map +1 -0
  227. package/lib/typescript/src/games/{space-traveller → space-fighter}/components/index.d.ts +0 -4
  228. package/lib/typescript/src/games/space-fighter/components/index.d.ts.map +1 -0
  229. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts +4 -0
  230. package/lib/typescript/src/games/whack-a-mole/WhackAMole.d.ts.map +1 -0
  231. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts +79 -0
  232. package/lib/typescript/src/games/whack-a-mole/WhackAMoleConstants.d.ts.map +1 -0
  233. package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts +33 -0
  234. package/lib/typescript/src/games/whack-a-mole/WhackAMoleService.d.ts.map +1 -0
  235. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts +41 -0
  236. package/lib/typescript/src/games/whack-a-mole/WhackAMoleStore.d.ts.map +1 -0
  237. package/lib/typescript/src/games/whack-a-mole/components/GameBackground.d.ts.map +1 -0
  238. package/lib/typescript/src/games/{cat-popper → whack-a-mole}/components/GameGrid.d.ts +2 -2
  239. package/lib/typescript/src/games/whack-a-mole/components/GameGrid.d.ts.map +1 -0
  240. package/lib/typescript/src/games/{cat-popper → whack-a-mole}/components/GameHole.d.ts +3 -2
  241. package/lib/typescript/src/games/whack-a-mole/components/GameHole.d.ts.map +1 -0
  242. package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts +7 -0
  243. package/lib/typescript/src/games/whack-a-mole/components/MoleCharacter.d.ts.map +1 -0
  244. package/lib/typescript/src/games/whack-a-mole/components/ScoreBoard.d.ts.map +1 -0
  245. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts +6 -0
  246. package/lib/typescript/src/games/whack-a-mole/components/index.d.ts.map +1 -0
  247. package/lib/typescript/src/index.d.ts +4 -3
  248. package/lib/typescript/src/index.d.ts.map +1 -1
  249. package/lib/typescript/src/services/GamesConstants.d.ts +61 -340
  250. package/lib/typescript/src/services/GamesConstants.d.ts.map +1 -1
  251. package/lib/typescript/src/services/GamesService.d.ts +21 -3
  252. package/lib/typescript/src/services/GamesService.d.ts.map +1 -1
  253. package/lib/typescript/src/services/HapticsService.d.ts +16 -0
  254. package/lib/typescript/src/services/HapticsService.d.ts.map +1 -0
  255. package/lib/typescript/src/services/SoundsService.d.ts +154 -0
  256. package/lib/typescript/src/services/SoundsService.d.ts.map +1 -0
  257. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts +41 -0
  258. package/lib/typescript/src/shared/helpers/AnimationFrame.d.ts.map +1 -0
  259. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts +45 -0
  260. package/lib/typescript/src/shared/helpers/AnimationTracker.d.ts.map +1 -0
  261. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts +124 -0
  262. package/lib/typescript/src/shared/helpers/ErrorHandler.d.ts.map +1 -0
  263. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts +17 -0
  264. package/lib/typescript/src/shared/helpers/GameControlButton.d.ts.map +1 -0
  265. package/lib/typescript/src/{games/cat-popper/components → shared/helpers}/GameOverModal.d.ts +5 -0
  266. package/lib/typescript/src/shared/helpers/GameOverModal.d.ts.map +1 -0
  267. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts +9 -0
  268. package/lib/typescript/src/shared/helpers/GameSettingsModal.d.ts.map +1 -0
  269. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts +12 -0
  270. package/lib/typescript/src/shared/helpers/ParticleBlast.d.ts.map +1 -0
  271. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts +42 -0
  272. package/lib/typescript/src/shared/helpers/ResponsiveScoreBoard.d.ts.map +1 -0
  273. package/lib/typescript/src/shared/helpers/index.d.ts +13 -0
  274. package/lib/typescript/src/shared/helpers/index.d.ts.map +1 -0
  275. package/package.json +9 -6
  276. package/lib/module/games/balloon-blaster/components/GameControls.js +0 -229
  277. package/lib/module/games/balloon-blaster/components/GameControls.js.map +0 -1
  278. package/lib/module/games/balloon-blaster/components/GameOverModal.js.map +0 -1
  279. package/lib/module/games/balloon-blaster/components/ParticleSystem.js +0 -52
  280. package/lib/module/games/balloon-blaster/components/ParticleSystem.js.map +0 -1
  281. package/lib/module/games/balloon-blaster/components/SliceTrail.js +0 -58
  282. package/lib/module/games/balloon-blaster/components/SliceTrail.js.map +0 -1
  283. package/lib/module/games/cat-popper/CatPopper.js +0 -230
  284. package/lib/module/games/cat-popper/CatPopper.js.map +0 -1
  285. package/lib/module/games/cat-popper/CatPopperService.js +0 -100
  286. package/lib/module/games/cat-popper/CatPopperService.js.map +0 -1
  287. package/lib/module/games/cat-popper/CatPopperStore.js +0 -113
  288. package/lib/module/games/cat-popper/CatPopperStore.js.map +0 -1
  289. package/lib/module/games/cat-popper/components/CatCharacter.js.map +0 -1
  290. package/lib/module/games/cat-popper/components/GameBackground.js.map +0 -1
  291. package/lib/module/games/cat-popper/components/GameControls.js +0 -230
  292. package/lib/module/games/cat-popper/components/GameControls.js.map +0 -1
  293. package/lib/module/games/cat-popper/components/GameGrid.js +0 -66
  294. package/lib/module/games/cat-popper/components/GameGrid.js.map +0 -1
  295. package/lib/module/games/cat-popper/components/GameHole.js.map +0 -1
  296. package/lib/module/games/cat-popper/components/GameOverModal.js +0 -131
  297. package/lib/module/games/cat-popper/components/GameOverModal.js.map +0 -1
  298. package/lib/module/games/cat-popper/components/ScoreBoard.js.map +0 -1
  299. package/lib/module/games/cat-popper/components/index.js.map +0 -1
  300. package/lib/module/games/fruit-slicer/FruitSlicer.js +0 -411
  301. package/lib/module/games/fruit-slicer/FruitSlicer.js.map +0 -1
  302. package/lib/module/games/fruit-slicer/FruitSlicerService.js.map +0 -1
  303. package/lib/module/games/fruit-slicer/FruitSlicerStore.js +0 -156
  304. package/lib/module/games/fruit-slicer/FruitSlicerStore.js.map +0 -1
  305. package/lib/module/games/fruit-slicer/components/FruitComponent.js.map +0 -1
  306. package/lib/module/games/fruit-slicer/components/GameArea.js +0 -50
  307. package/lib/module/games/fruit-slicer/components/GameArea.js.map +0 -1
  308. package/lib/module/games/fruit-slicer/components/GameBackground.js.map +0 -1
  309. package/lib/module/games/fruit-slicer/components/GameControls.js +0 -230
  310. package/lib/module/games/fruit-slicer/components/GameControls.js.map +0 -1
  311. package/lib/module/games/fruit-slicer/components/GameOverModal.js +0 -189
  312. package/lib/module/games/fruit-slicer/components/GameOverModal.js.map +0 -1
  313. package/lib/module/games/fruit-slicer/components/ParticleSystem.js +0 -52
  314. package/lib/module/games/fruit-slicer/components/ParticleSystem.js.map +0 -1
  315. package/lib/module/games/fruit-slicer/components/ScoreBoard.js.map +0 -1
  316. package/lib/module/games/fruit-slicer/components/SliceTrail.js +0 -58
  317. package/lib/module/games/fruit-slicer/components/SliceTrail.js.map +0 -1
  318. package/lib/module/games/fruit-slicer/components/index.js +0 -11
  319. package/lib/module/games/fruit-slicer/components/index.js.map +0 -1
  320. package/lib/module/games/maze-runner/components/GameControls.js +0 -129
  321. package/lib/module/games/maze-runner/components/GameControls.js.map +0 -1
  322. package/lib/module/games/maze-runner/components/GameOverModal.js +0 -134
  323. package/lib/module/games/maze-runner/components/GameOverModal.js.map +0 -1
  324. package/lib/module/games/space-traveller/SpaceTraveller.js +0 -393
  325. package/lib/module/games/space-traveller/SpaceTraveller.js.map +0 -1
  326. package/lib/module/games/space-traveller/SpaceTravellerService.js.map +0 -1
  327. package/lib/module/games/space-traveller/SpaceTravellerStore.js +0 -139
  328. package/lib/module/games/space-traveller/SpaceTravellerStore.js.map +0 -1
  329. package/lib/module/games/space-traveller/components/AsteroidComponent.js.map +0 -1
  330. package/lib/module/games/space-traveller/components/GameArea.js +0 -75
  331. package/lib/module/games/space-traveller/components/GameArea.js.map +0 -1
  332. package/lib/module/games/space-traveller/components/GameBackground.js.map +0 -1
  333. package/lib/module/games/space-traveller/components/GameControls.js +0 -177
  334. package/lib/module/games/space-traveller/components/GameControls.js.map +0 -1
  335. package/lib/module/games/space-traveller/components/GameOverModal.js +0 -182
  336. package/lib/module/games/space-traveller/components/GameOverModal.js.map +0 -1
  337. package/lib/module/games/space-traveller/components/ParticleComponent.js +0 -34
  338. package/lib/module/games/space-traveller/components/ParticleComponent.js.map +0 -1
  339. package/lib/module/games/space-traveller/components/ScoreBoard.js.map +0 -1
  340. package/lib/module/games/space-traveller/components/SettingsModal.js +0 -222
  341. package/lib/module/games/space-traveller/components/SettingsModal.js.map +0 -1
  342. package/lib/module/games/space-traveller/components/Spacecraft3D.js.map +0 -1
  343. package/lib/module/games/space-traveller/components/SpacecraftPath.js +0 -37
  344. package/lib/module/games/space-traveller/components/SpacecraftPath.js.map +0 -1
  345. package/lib/module/games/space-traveller/components/index.js.map +0 -1
  346. package/lib/module/shared/settings/GameSettings.js +0 -295
  347. package/lib/module/shared/settings/GameSettings.js.map +0 -1
  348. package/lib/module/shared/settings/SettingsService.js +0 -119
  349. package/lib/module/shared/settings/SettingsService.js.map +0 -1
  350. package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts +0 -10
  351. package/lib/typescript/src/games/balloon-blaster/components/GameControls.d.ts.map +0 -1
  352. package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts +0 -9
  353. package/lib/typescript/src/games/balloon-blaster/components/GameOverModal.d.ts.map +0 -1
  354. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts +0 -8
  355. package/lib/typescript/src/games/balloon-blaster/components/ParticleSystem.d.ts.map +0 -1
  356. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts +0 -11
  357. package/lib/typescript/src/games/balloon-blaster/components/SliceTrail.d.ts.map +0 -1
  358. package/lib/typescript/src/games/cat-popper/CatPopper.d.ts +0 -13
  359. package/lib/typescript/src/games/cat-popper/CatPopper.d.ts.map +0 -1
  360. package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts +0 -32
  361. package/lib/typescript/src/games/cat-popper/CatPopperService.d.ts.map +0 -1
  362. package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts +0 -21
  363. package/lib/typescript/src/games/cat-popper/CatPopperStore.d.ts.map +0 -1
  364. package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts +0 -7
  365. package/lib/typescript/src/games/cat-popper/components/CatCharacter.d.ts.map +0 -1
  366. package/lib/typescript/src/games/cat-popper/components/GameBackground.d.ts.map +0 -1
  367. package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts +0 -10
  368. package/lib/typescript/src/games/cat-popper/components/GameControls.d.ts.map +0 -1
  369. package/lib/typescript/src/games/cat-popper/components/GameGrid.d.ts.map +0 -1
  370. package/lib/typescript/src/games/cat-popper/components/GameHole.d.ts.map +0 -1
  371. package/lib/typescript/src/games/cat-popper/components/GameOverModal.d.ts.map +0 -1
  372. package/lib/typescript/src/games/cat-popper/components/ScoreBoard.d.ts.map +0 -1
  373. package/lib/typescript/src/games/cat-popper/components/index.d.ts +0 -8
  374. package/lib/typescript/src/games/cat-popper/components/index.d.ts.map +0 -1
  375. package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts +0 -16
  376. package/lib/typescript/src/games/fruit-slicer/FruitSlicer.d.ts.map +0 -1
  377. package/lib/typescript/src/games/fruit-slicer/FruitSlicerService.d.ts.map +0 -1
  378. package/lib/typescript/src/games/fruit-slicer/FruitSlicerStore.d.ts.map +0 -1
  379. package/lib/typescript/src/games/fruit-slicer/components/FruitComponent.d.ts.map +0 -1
  380. package/lib/typescript/src/games/fruit-slicer/components/GameArea.d.ts +0 -17
  381. package/lib/typescript/src/games/fruit-slicer/components/GameArea.d.ts.map +0 -1
  382. package/lib/typescript/src/games/fruit-slicer/components/GameBackground.d.ts.map +0 -1
  383. package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts +0 -10
  384. package/lib/typescript/src/games/fruit-slicer/components/GameControls.d.ts.map +0 -1
  385. package/lib/typescript/src/games/fruit-slicer/components/GameOverModal.d.ts +0 -9
  386. package/lib/typescript/src/games/fruit-slicer/components/GameOverModal.d.ts.map +0 -1
  387. package/lib/typescript/src/games/fruit-slicer/components/ParticleSystem.d.ts +0 -8
  388. package/lib/typescript/src/games/fruit-slicer/components/ParticleSystem.d.ts.map +0 -1
  389. package/lib/typescript/src/games/fruit-slicer/components/ScoreBoard.d.ts +0 -9
  390. package/lib/typescript/src/games/fruit-slicer/components/ScoreBoard.d.ts.map +0 -1
  391. package/lib/typescript/src/games/fruit-slicer/components/SliceTrail.d.ts +0 -11
  392. package/lib/typescript/src/games/fruit-slicer/components/SliceTrail.d.ts.map +0 -1
  393. package/lib/typescript/src/games/fruit-slicer/components/index.d.ts +0 -9
  394. package/lib/typescript/src/games/fruit-slicer/components/index.d.ts.map +0 -1
  395. package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts +0 -10
  396. package/lib/typescript/src/games/maze-runner/components/GameControls.d.ts.map +0 -1
  397. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts +0 -11
  398. package/lib/typescript/src/games/maze-runner/components/GameOverModal.d.ts.map +0 -1
  399. package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts +0 -17
  400. package/lib/typescript/src/games/space-traveller/SpaceTraveller.d.ts.map +0 -1
  401. package/lib/typescript/src/games/space-traveller/SpaceTravellerService.d.ts.map +0 -1
  402. package/lib/typescript/src/games/space-traveller/SpaceTravellerStore.d.ts.map +0 -1
  403. package/lib/typescript/src/games/space-traveller/components/AsteroidComponent.d.ts +0 -9
  404. package/lib/typescript/src/games/space-traveller/components/AsteroidComponent.d.ts.map +0 -1
  405. package/lib/typescript/src/games/space-traveller/components/GameArea.d.ts +0 -17
  406. package/lib/typescript/src/games/space-traveller/components/GameArea.d.ts.map +0 -1
  407. package/lib/typescript/src/games/space-traveller/components/GameBackground.d.ts.map +0 -1
  408. package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts +0 -10
  409. package/lib/typescript/src/games/space-traveller/components/GameControls.d.ts.map +0 -1
  410. package/lib/typescript/src/games/space-traveller/components/GameOverModal.d.ts +0 -9
  411. package/lib/typescript/src/games/space-traveller/components/GameOverModal.d.ts.map +0 -1
  412. package/lib/typescript/src/games/space-traveller/components/ParticleComponent.d.ts +0 -8
  413. package/lib/typescript/src/games/space-traveller/components/ParticleComponent.d.ts.map +0 -1
  414. package/lib/typescript/src/games/space-traveller/components/ScoreBoard.d.ts +0 -8
  415. package/lib/typescript/src/games/space-traveller/components/ScoreBoard.d.ts.map +0 -1
  416. package/lib/typescript/src/games/space-traveller/components/SettingsModal.d.ts +0 -9
  417. package/lib/typescript/src/games/space-traveller/components/SettingsModal.d.ts.map +0 -1
  418. package/lib/typescript/src/games/space-traveller/components/Spacecraft3D.d.ts.map +0 -1
  419. package/lib/typescript/src/games/space-traveller/components/SpacecraftPath.d.ts.map +0 -1
  420. package/lib/typescript/src/games/space-traveller/components/index.d.ts.map +0 -1
  421. package/lib/typescript/src/shared/settings/GameSettings.d.ts +0 -36
  422. package/lib/typescript/src/shared/settings/GameSettings.d.ts.map +0 -1
  423. package/lib/typescript/src/shared/settings/SettingsService.d.ts +0 -32
  424. package/lib/typescript/src/shared/settings/SettingsService.d.ts.map +0 -1
  425. /package/lib/typescript/src/games/{cat-popper → fruit-ninja}/components/GameBackground.d.ts +0 -0
  426. /package/lib/typescript/src/games/{fruit-slicer → space-fighter}/components/GameBackground.d.ts +0 -0
  427. /package/lib/typescript/src/games/{space-traveller → space-fighter}/components/SpacecraftPath.d.ts +0 -0
  428. /package/lib/typescript/src/games/{space-traveller → whack-a-mole}/components/GameBackground.d.ts +0 -0
  429. /package/lib/typescript/src/games/{cat-popper → whack-a-mole}/components/ScoreBoard.d.ts +0 -0
@@ -1,77 +1,81 @@
1
1
  "use strict";
2
2
 
3
- import React, { useEffect } from 'react';
4
- import { Dimensions } from 'react-native';
3
+ import React from 'react';
4
+ import { View, Dimensions } from 'react-native';
5
5
  import { Canvas, LinearGradient, Rect, Circle, Path, Skia, vec, Group, Shadow } from '@shopify/react-native-skia';
6
- import { useSharedValue, useAnimatedStyle, withRepeat, withTiming, withSequence, interpolate, Extrapolation } from 'react-native-reanimated';
7
- import Animated from 'react-native-reanimated';
8
6
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
7
  const {
10
8
  width,
11
9
  height
12
10
  } = Dimensions.get('window');
13
- export const GameBackground = ({
14
- children
15
- }) => {
16
- // Animated values for dynamic background effects (removed grass animation)
17
- const cloudFloat = useSharedValue(0);
18
- const sunGlow = useSharedValue(0);
19
- const sunRotation = useSharedValue(0);
20
- useEffect(() => {
21
- // Removed grass swaying animation for static grass
11
+ // Pre-compute all static values outside component to ensure no animations
12
+ const buttonAreaHeight = 250;
13
+ const grassStartY = height - buttonAreaHeight;
22
14
 
23
- // Cloud floating animation
24
- cloudFloat.value = withRepeat(withTiming(1, {
25
- duration: 8000
26
- }), -1, false);
27
-
28
- // Sun glow pulsing
29
- sunGlow.value = withRepeat(withSequence(withTiming(1, {
30
- duration: 2000
31
- }), withTiming(0.7, {
32
- duration: 2000
33
- })), -1, false);
15
+ // Create static grass path
16
+ const createStaticGrassPath = () => {
17
+ const path = Skia.Path.Make();
18
+ const segmentWidth = width / 8;
19
+ path.moveTo(0, grassStartY);
20
+ for (let i = 0; i < 8; i++) {
21
+ const x = i * segmentWidth;
22
+ const y = grassStartY + Math.sin(i * 0.5) * 8;
23
+ const controlX = x + segmentWidth / 2;
24
+ const controlY = y + Math.cos(i * 0.3) * 6;
25
+ path.quadTo(controlX, controlY, x + segmentWidth, y);
26
+ }
27
+ path.lineTo(width, height);
28
+ path.lineTo(0, height);
29
+ path.close();
30
+ return path;
31
+ };
34
32
 
35
- // Sun rotation animation (slow continuous rotation)
36
- sunRotation.value = withRepeat(withTiming(360, {
37
- duration: 30000
38
- }), -1, false);
39
- }, []);
40
- const animatedBackgroundStyle = useAnimatedStyle(() => {
33
+ // Pre-compute static sun rays
34
+ const createStaticSunRays = () => {
35
+ return Array.from({
36
+ length: 16
37
+ }, (_, index) => {
38
+ const angle = 360 / 16 * index;
39
+ const radian = angle * Math.PI / 180;
40
+ const isLongRay = index % 2 === 0;
41
+ const rayLength = isLongRay ? 25 : 15;
42
+ const rayWidth = isLongRay ? 4 : 2;
43
+ const startDistance = 45;
44
+ const startX = width * 0.8 + Math.cos(radian) * startDistance;
45
+ const startY = height * 0.15 + Math.sin(radian) * startDistance;
46
+ const endX = width * 0.8 + Math.cos(radian) * (startDistance + rayLength);
47
+ const endY = height * 0.15 + Math.sin(radian) * (startDistance + rayLength);
48
+ const rayPath = Skia.Path.Make();
49
+ rayPath.moveTo(startX, startY);
50
+ rayPath.lineTo(endX, endY);
41
51
  return {
42
- transform: []
52
+ path: rayPath,
53
+ width: rayWidth
43
54
  };
44
55
  });
56
+ };
45
57
 
46
- // Create grass path - UNUSED FUNCTION
47
- // const createGrassPath = (startX: number, segments: number = 8) => {
48
- // const path = Skia.Path.Make();
49
- // const segmentWidth = width / segments;
50
- //
51
- // path.moveTo(startX, height * 0.7);
52
- //
53
- // for (let i = 0; i < segments; i++) {
54
- // const x = startX + i * segmentWidth;
55
- // const y = height * 0.7 + Math.sin(i * 0.5) * 10;
56
- // const controlX = x + segmentWidth / 2;
57
- // const controlY = y + Math.cos(i * 0.3) * 8;
58
- //
59
- // path.quadTo(controlX, controlY, x + segmentWidth, y);
60
- // }
61
- //
62
- // path.lineTo(width, height);
63
- // path.lineTo(startX, height);
64
- // path.close();
65
- //
66
- // return path;
67
- // };
68
-
69
- // const grassPath = createGrassPath(0); // Unused variable
58
+ // Create static flower positions
59
+ const createStaticFlowerPositions = () => {
60
+ return Array.from({
61
+ length: 12
62
+ }, (_, i) => ({
63
+ x: width / 12 * i + i % 3 * 15 + 20,
64
+ y: grassStartY - 10 - i % 4 * 8
65
+ }));
66
+ };
70
67
 
71
- return /*#__PURE__*/_jsxs(Animated.View, {
72
- style: [{
68
+ // Static computed values
69
+ const staticGrassPath = createStaticGrassPath();
70
+ const staticSunRays = createStaticSunRays();
71
+ const flowerPositions = createStaticFlowerPositions();
72
+ export const GameBackground = ({
73
+ children
74
+ }) => {
75
+ return /*#__PURE__*/_jsxs(View, {
76
+ style: {
73
77
  flex: 1
74
- }, animatedBackgroundStyle],
78
+ },
75
79
  children: [/*#__PURE__*/_jsxs(Canvas, {
76
80
  style: {
77
81
  position: 'absolute',
@@ -86,24 +90,23 @@ export const GameBackground = ({
86
90
  x: 0,
87
91
  y: 0,
88
92
  width: width,
89
- height: height,
93
+ height: grassStartY,
90
94
  children: /*#__PURE__*/_jsx(LinearGradient, {
91
95
  start: vec(0, 0),
96
+ end: vec(0, grassStartY),
97
+ colors: ['#87CEEB', '#98D8E8', '#B0E0E6']
98
+ })
99
+ }), /*#__PURE__*/_jsx(Rect, {
100
+ x: 0,
101
+ y: grassStartY,
102
+ width: width,
103
+ height: buttonAreaHeight,
104
+ children: /*#__PURE__*/_jsx(LinearGradient, {
105
+ start: vec(0, grassStartY),
92
106
  end: vec(0, height),
93
- colors: ['#87CEEB', '#98D8E8', '#B0E0E6', '#90EE90', '#228B22']
107
+ colors: ['#8B4513', '#A0522D', '#654321']
94
108
  })
95
109
  }), /*#__PURE__*/_jsxs(Group, {
96
- transform: [{
97
- translateX: width * 0.8
98
- }, {
99
- translateY: height * 0.15
100
- }, {
101
- rotate: sunRotation.value * Math.PI / 180
102
- }, {
103
- translateX: -width * 0.8
104
- }, {
105
- translateY: -height * 0.15
106
- }],
107
110
  children: [/*#__PURE__*/_jsxs(Circle, {
108
111
  cx: width * 0.8,
109
112
  cy: height * 0.15,
@@ -115,7 +118,7 @@ export const GameBackground = ({
115
118
  }), /*#__PURE__*/_jsx(Shadow, {
116
119
  dx: 0,
117
120
  dy: 0,
118
- blur: interpolate(sunGlow.value, [0.7, 1], [25, 40], Extrapolation.CLAMP),
121
+ blur: 32,
119
122
  color: "#FFD700"
120
123
  })]
121
124
  }), /*#__PURE__*/_jsx(Circle, {
@@ -127,30 +130,13 @@ export const GameBackground = ({
127
130
  end: vec(15, 15),
128
131
  colors: ['#FFFFFF', '#FFFF99']
129
132
  })
130
- }), Array.from({
131
- length: 16
132
- }, (_, index) => {
133
- const angle = 360 / 16 * index;
134
- const radian = angle * Math.PI / 180;
135
- const isLongRay = index % 2 === 0;
136
- const rayLength = isLongRay ? 25 : 15;
137
- const rayWidth = isLongRay ? 4 : 2;
138
- const startDistance = 45;
139
- const startX = width * 0.8 + Math.cos(radian) * startDistance;
140
- const startY = height * 0.15 + Math.sin(radian) * startDistance;
141
- const endX = width * 0.8 + Math.cos(radian) * (startDistance + rayLength);
142
- const endY = height * 0.15 + Math.sin(radian) * (startDistance + rayLength);
143
- const rayPath = Skia.Path.Make();
144
- rayPath.moveTo(startX, startY);
145
- rayPath.lineTo(endX, endY);
146
- return /*#__PURE__*/_jsx(Path, {
147
- path: rayPath,
148
- style: "stroke",
149
- strokeWidth: rayWidth,
150
- color: "#FFD700",
151
- opacity: interpolate(sunGlow.value, [0.7, 1], [0.6, 0.9], Extrapolation.CLAMP)
152
- }, index);
153
- }), /*#__PURE__*/_jsx(Circle, {
133
+ }), staticSunRays.map((ray, index) => /*#__PURE__*/_jsx(Path, {
134
+ path: ray.path,
135
+ style: "stroke",
136
+ strokeWidth: ray.width,
137
+ color: "#FFD700",
138
+ opacity: 0.75
139
+ }, index)), /*#__PURE__*/_jsx(Circle, {
154
140
  cx: width * 0.8,
155
141
  cy: height * 0.15,
156
142
  r: 60,
@@ -163,9 +149,6 @@ export const GameBackground = ({
163
149
  })]
164
150
  }), /*#__PURE__*/_jsxs(Group, {
165
151
  children: [/*#__PURE__*/_jsxs(Group, {
166
- transform: [{
167
- translateX: interpolate(cloudFloat.value, [0, 1], [-4, 4], Extrapolation.CLAMP)
168
- }],
169
152
  children: [/*#__PURE__*/_jsx(Circle, {
170
153
  cx: width * 0.12,
171
154
  cy: height * 0.24,
@@ -258,9 +241,6 @@ export const GameBackground = ({
258
241
  opacity: 0.25
259
242
  })]
260
243
  }), /*#__PURE__*/_jsxs(Group, {
261
- transform: [{
262
- translateX: interpolate(cloudFloat.value, [0, 1], [3, -3], Extrapolation.CLAMP)
263
- }],
264
244
  children: [/*#__PURE__*/_jsx(Circle, {
265
245
  cx: width * 0.62,
266
246
  cy: height * 0.27,
@@ -329,9 +309,6 @@ export const GameBackground = ({
329
309
  opacity: 0.30
330
310
  })]
331
311
  }), /*#__PURE__*/_jsxs(Group, {
332
- transform: [{
333
- translateX: interpolate(cloudFloat.value, [0, 1], [1.5, -1.5], Extrapolation.CLAMP)
334
- }],
335
312
  children: [/*#__PURE__*/_jsx(Circle, {
336
313
  cx: width * 0.84,
337
314
  cy: height * 0.19,
@@ -382,9 +359,6 @@ export const GameBackground = ({
382
359
  opacity: 0.20
383
360
  })]
384
361
  }), /*#__PURE__*/_jsxs(Group, {
385
- transform: [{
386
- translateX: interpolate(cloudFloat.value, [0, 1], [-2, 2], Extrapolation.CLAMP)
387
- }],
388
362
  children: [/*#__PURE__*/_jsx(Circle, {
389
363
  cx: width * 0.45,
390
364
  cy: height * 0.15,
@@ -423,70 +397,70 @@ export const GameBackground = ({
423
397
  })
424
398
  })]
425
399
  })]
400
+ }), /*#__PURE__*/_jsxs(Path, {
401
+ path: staticGrassPath,
402
+ children: [/*#__PURE__*/_jsx(LinearGradient, {
403
+ start: vec(0, grassStartY - 20),
404
+ end: vec(0, grassStartY + 20),
405
+ colors: ['#32CD32', '#228B22', '#006400']
406
+ }), /*#__PURE__*/_jsx(Shadow, {
407
+ dx: 0,
408
+ dy: -2,
409
+ blur: 4,
410
+ color: "rgba(0,0,0,0.2)"
411
+ })]
426
412
  }), Array.from({
427
- length: 50
413
+ length: 25
428
414
  }, (_, i) => {
429
- const x = width / 50 * i + i % 3 * 5; // Static positioning
430
- const grassHeight = 12 + i % 4 * 6; // Deterministic height
431
- const swayAmount = 0; // No sway animation
432
- const grassType = i % 10 / 10; // Deterministic grass type
415
+ const x = width / 25 * i + i % 3 * 5; // Fixed pattern instead of random
416
+ const grassHeight = 15 + i % 4 * 5; // Fixed heights
417
+ const grassType = i % 3; // Fixed types
433
418
 
434
419
  const bladePath = Skia.Path.Make();
435
- bladePath.moveTo(x, height * 0.7);
436
- if (grassType < 0.4) {
437
- // Tall thin grass with slight curve
438
- bladePath.quadTo(x + swayAmount + 1, height * 0.7 - grassHeight * 0.6, x + swayAmount + i % 2, height * 0.7 - grassHeight);
420
+ bladePath.moveTo(x, grassStartY);
421
+ if (grassType === 0) {
422
+ bladePath.quadTo(x + 1, grassStartY - grassHeight * 0.6, x + 1, grassStartY - grassHeight);
439
423
  return /*#__PURE__*/_jsx(Path, {
440
424
  path: bladePath,
441
425
  style: "stroke",
442
426
  strokeWidth: 1.5,
443
427
  color: "#16a34a",
444
- opacity: 0.8 + i % 3 * 0.1
428
+ opacity: 0.8
445
429
  }, `grass-${i}`);
446
- } else if (grassType < 0.7) {
447
- // Medium curved grass
448
- bladePath.quadTo(x + swayAmount + 2, height * 0.7 - grassHeight * 0.4, x + swayAmount + 3, height * 0.7 - grassHeight);
430
+ } else if (grassType === 1) {
431
+ bladePath.quadTo(x + 2, grassStartY - grassHeight * 0.4, x + 3, grassStartY - grassHeight);
449
432
  return /*#__PURE__*/_jsx(Path, {
450
433
  path: bladePath,
451
434
  style: "stroke",
452
435
  strokeWidth: 2,
453
436
  color: "#15803d",
454
- opacity: 0.7 + i % 4 * 0.1
437
+ opacity: 0.7
455
438
  }, `grass-${i}`);
456
439
  } else {
457
- // Short wide grass with multiple segments
458
440
  const midHeight = grassHeight * 0.5;
459
- bladePath.quadTo(x + swayAmount + 1, height * 0.7 - midHeight, x + swayAmount + 2, height * 0.7 - grassHeight);
460
- return /*#__PURE__*/_jsxs(Group, {
461
- children: [/*#__PURE__*/_jsx(Path, {
462
- path: bladePath,
463
- style: "stroke",
464
- strokeWidth: 2.5,
465
- color: "#166534",
466
- opacity: 0.6 + i % 5 * 0.08
467
- }), i % 4 === 0 && /*#__PURE__*/_jsx(Circle, {
468
- cx: x + swayAmount + 2,
469
- cy: height * 0.7 - grassHeight,
470
- r: 0.8,
471
- color: "#22c55e",
472
- opacity: 0.8
473
- })]
474
- }, `grass-group-${i}`);
441
+ bladePath.quadTo(x + 1, grassStartY - midHeight, x + 2, grassStartY - grassHeight);
442
+ return /*#__PURE__*/_jsx(Path, {
443
+ path: bladePath,
444
+ style: "stroke",
445
+ strokeWidth: 2.5,
446
+ color: "#166534",
447
+ opacity: 0.6
448
+ }, `grass-${i}`);
475
449
  }
476
450
  }), Array.from({
477
- length: 30
451
+ length: 20
478
452
  }, (_, i) => {
479
- const x = width / 30 * i + i % 2 * 10; // Static positioning
480
- const y = height * 0.68 + i % 3 * (height * 0.01); // Static positioning
481
- const grassClusterHeight = 8 + i % 3 * 2; // Deterministic height
453
+ const x = width / 20 * i + i % 2 * 10; // Fixed positions
454
+ const y = grassStartY - 5 + i % 3 * 5; // Fixed Y positions
455
+ const grassClusterHeight = 10 + i % 3 * 2; // Fixed heights
482
456
 
483
457
  const clusterPath = Skia.Path.Make();
484
458
  clusterPath.moveTo(x, y);
485
- clusterPath.lineTo(x + i % 2, y - grassClusterHeight);
459
+ clusterPath.lineTo(x + 1, y - grassClusterHeight);
486
460
  clusterPath.moveTo(x + 2, y);
487
- clusterPath.lineTo(x + 2 + i % 2, y - grassClusterHeight * 0.8);
461
+ clusterPath.lineTo(x + 3, y - grassClusterHeight * 0.8);
488
462
  clusterPath.moveTo(x + 4, y);
489
- clusterPath.lineTo(x + 4 + i % 2, y - grassClusterHeight * 0.6);
463
+ clusterPath.lineTo(x + 5, y - grassClusterHeight * 0.6);
490
464
  return /*#__PURE__*/_jsx(Path, {
491
465
  path: clusterPath,
492
466
  style: "stroke",
@@ -494,13 +468,27 @@ export const GameBackground = ({
494
468
  color: "#22c55e",
495
469
  opacity: 0.4
496
470
  }, `cluster-${i}`);
471
+ }), Array.from({
472
+ length: 8
473
+ }, (_, i) => {
474
+ const x = width / 8 * i + i % 3 * 20; // Fixed positions
475
+ const y = grassStartY + 30 + i % 4 * 15; // Fixed Y positions
476
+ const size = 2 + i % 3; // Fixed sizes
477
+
478
+ return /*#__PURE__*/_jsx(Circle, {
479
+ cx: x,
480
+ cy: y,
481
+ r: size,
482
+ color: "#8B4513",
483
+ opacity: 0.6
484
+ }, i);
497
485
  }), /*#__PURE__*/_jsxs(Group, {
498
486
  children: [/*#__PURE__*/_jsxs(Group, {
499
487
  children: [/*#__PURE__*/_jsxs(Rect, {
500
488
  x: width * 0.05,
501
- y: height * 0.45,
489
+ y: grassStartY - 150,
502
490
  width: 20,
503
- height: height * 0.25,
491
+ height: 150,
504
492
  children: [/*#__PURE__*/_jsx(LinearGradient, {
505
493
  start: vec(0, 0),
506
494
  end: vec(20, 0),
@@ -513,35 +501,35 @@ export const GameBackground = ({
513
501
  })]
514
502
  }), /*#__PURE__*/_jsx(Rect, {
515
503
  x: width * 0.05 + 3,
516
- y: height * 0.50,
504
+ y: grassStartY - 120,
517
505
  width: 1,
518
- height: height * 0.15,
506
+ height: 90,
519
507
  color: "#5D4037",
520
508
  opacity: 0.8
521
509
  }), /*#__PURE__*/_jsx(Rect, {
522
510
  x: width * 0.05 + 7,
523
- y: height * 0.48,
511
+ y: grassStartY - 140,
524
512
  width: 1.5,
525
- height: height * 0.18,
513
+ height: 110,
526
514
  color: "#4A2C2A",
527
515
  opacity: 0.7
528
516
  }), /*#__PURE__*/_jsx(Rect, {
529
517
  x: width * 0.05 + 12,
530
- y: height * 0.52,
518
+ y: grassStartY - 100,
531
519
  width: 1,
532
- height: height * 0.12,
520
+ height: 70,
533
521
  color: "#5D4037",
534
522
  opacity: 0.6
535
523
  }), /*#__PURE__*/_jsx(Rect, {
536
524
  x: width * 0.05 + 16,
537
- y: height * 0.49,
525
+ y: grassStartY - 130,
538
526
  width: 1.5,
539
- height: height * 0.16,
527
+ height: 100,
540
528
  color: "#4A2C2A",
541
529
  opacity: 0.8
542
530
  }), /*#__PURE__*/_jsx(Rect, {
543
531
  x: width * 0.05 + 18,
544
- y: height * 0.48,
532
+ y: grassStartY - 130,
545
533
  width: 12,
546
534
  height: 4,
547
535
  color: "#8B4513",
@@ -554,7 +542,7 @@ export const GameBackground = ({
554
542
  })
555
543
  }), /*#__PURE__*/_jsx(Rect, {
556
544
  x: width * 0.05 - 2,
557
- y: height * 0.52,
545
+ y: grassStartY - 100,
558
546
  width: 10,
559
547
  height: 3,
560
548
  color: "#A0522D",
@@ -567,7 +555,7 @@ export const GameBackground = ({
567
555
  })
568
556
  }), /*#__PURE__*/_jsx(Rect, {
569
557
  x: width * 0.05 + 15,
570
- y: height * 0.42,
558
+ y: grassStartY - 160,
571
559
  width: 8,
572
560
  height: 3,
573
561
  color: "#8B4513",
@@ -580,7 +568,7 @@ export const GameBackground = ({
580
568
  })
581
569
  }), /*#__PURE__*/_jsx(Circle, {
582
570
  cx: width * 0.05 + 10,
583
- cy: height * 0.45,
571
+ cy: grassStartY - 150,
584
572
  r: 38,
585
573
  color: "#1B5E20",
586
574
  opacity: 0.9,
@@ -592,91 +580,91 @@ export const GameBackground = ({
592
580
  })
593
581
  }), /*#__PURE__*/_jsx(Circle, {
594
582
  cx: width * 0.05 + 18,
595
- cy: height * 0.42,
583
+ cy: grassStartY - 180,
596
584
  r: 32,
597
585
  color: "#2E7D32",
598
586
  opacity: 0.8
599
587
  }), /*#__PURE__*/_jsx(Circle, {
600
588
  cx: width * 0.05 + 25,
601
- cy: height * 0.46,
589
+ cy: grassStartY - 140,
602
590
  r: 28,
603
591
  color: "#388E3C",
604
592
  opacity: 0.7
605
593
  }), /*#__PURE__*/_jsx(Circle, {
606
594
  cx: width * 0.05 + 2,
607
- cy: height * 0.48,
595
+ cy: grassStartY - 120,
608
596
  r: 30,
609
597
  color: "#2E7D32",
610
598
  opacity: 0.75
611
599
  }), /*#__PURE__*/_jsx(Circle, {
612
600
  cx: width * 0.05 - 5,
613
- cy: height * 0.44,
601
+ cy: grassStartY - 160,
614
602
  r: 25,
615
603
  color: "#1B5E20",
616
604
  opacity: 0.8
617
605
  }), /*#__PURE__*/_jsx(Circle, {
618
606
  cx: width * 0.05 + 8,
619
- cy: height * 0.38,
607
+ cy: grassStartY - 200,
620
608
  r: 26,
621
609
  color: "#4CAF50",
622
610
  opacity: 0.6
623
611
  }), /*#__PURE__*/_jsx(Circle, {
624
612
  cx: width * 0.05 + 20,
625
- cy: height * 0.38,
613
+ cy: grassStartY - 200,
626
614
  r: 22,
627
615
  color: "#66BB6A",
628
616
  opacity: 0.5
629
617
  }), /*#__PURE__*/_jsx(Circle, {
630
618
  cx: width * 0.05 + 12,
631
- cy: height * 0.43,
619
+ cy: grassStartY - 170,
632
620
  r: 20,
633
621
  color: "#388E3C",
634
622
  opacity: 0.9
635
623
  }), /*#__PURE__*/_jsx(Circle, {
636
624
  cx: width * 0.05 + 6,
637
- cy: height * 0.46,
625
+ cy: grassStartY - 140,
638
626
  r: 18,
639
627
  color: "#2E7D32",
640
628
  opacity: 0.8
641
629
  }), /*#__PURE__*/_jsx(Circle, {
642
630
  cx: width * 0.05 + 15,
643
- cy: height * 0.35,
631
+ cy: grassStartY - 220,
644
632
  r: 15,
645
633
  color: "#81C784",
646
634
  opacity: 0.6
647
635
  }), /*#__PURE__*/_jsx(Circle, {
648
636
  cx: width * 0.05 + 3,
649
- cy: height * 0.37,
637
+ cy: grassStartY - 210,
650
638
  r: 12,
651
639
  color: "#A5D6A7",
652
640
  opacity: 0.5
653
641
  }), /*#__PURE__*/_jsx(Circle, {
654
642
  cx: width * 0.05 + 28,
655
- cy: height * 0.41,
643
+ cy: grassStartY - 180,
656
644
  r: 14,
657
645
  color: "#81C784",
658
646
  opacity: 0.6
659
647
  }), /*#__PURE__*/_jsx(Circle, {
660
648
  cx: width * 0.05 - 8,
661
- cy: height * 0.41,
649
+ cy: grassStartY - 180,
662
650
  r: 16,
663
651
  color: "#66BB6A",
664
652
  opacity: 0.7
665
653
  }), /*#__PURE__*/_jsx(Circle, {
666
654
  cx: width * 0.05 + 5,
667
- cy: height * 0.36,
655
+ cy: grassStartY - 230,
668
656
  r: 10,
669
657
  color: "#C8E6C9",
670
658
  opacity: 0.7
671
659
  }), /*#__PURE__*/_jsx(Circle, {
672
660
  cx: width * 0.05 + 18,
673
- cy: height * 0.34,
661
+ cy: grassStartY - 240,
674
662
  r: 8,
675
663
  color: "#E8F5E8",
676
664
  opacity: 0.6
677
665
  }), /*#__PURE__*/_jsx(Circle, {
678
666
  cx: width * 0.05 + 22,
679
- cy: height * 0.39,
667
+ cy: grassStartY - 190,
680
668
  r: 6,
681
669
  color: "#C8E6C9",
682
670
  opacity: 0.8
@@ -684,9 +672,9 @@ export const GameBackground = ({
684
672
  }), /*#__PURE__*/_jsxs(Group, {
685
673
  children: [/*#__PURE__*/_jsxs(Rect, {
686
674
  x: width * 0.88,
687
- y: height * 0.35,
675
+ y: grassStartY - 200,
688
676
  width: 18,
689
- height: height * 0.35,
677
+ height: 200,
690
678
  children: [/*#__PURE__*/_jsx(LinearGradient, {
691
679
  start: vec(0, 0),
692
680
  end: vec(18, 0),
@@ -699,35 +687,35 @@ export const GameBackground = ({
699
687
  })]
700
688
  }), /*#__PURE__*/_jsx(Rect, {
701
689
  x: width * 0.88 + 2,
702
- y: height * 0.38,
690
+ y: grassStartY - 170,
703
691
  width: 1,
704
- height: height * 0.25,
692
+ height: 150,
705
693
  color: "#3E2723",
706
694
  opacity: 0.9
707
695
  }), /*#__PURE__*/_jsx(Rect, {
708
696
  x: width * 0.88 + 6,
709
- y: height * 0.36,
697
+ y: grassStartY - 190,
710
698
  width: 1.5,
711
- height: height * 0.28,
699
+ height: 170,
712
700
  color: "#2E1A16",
713
701
  opacity: 0.8
714
702
  }), /*#__PURE__*/_jsx(Rect, {
715
703
  x: width * 0.88 + 11,
716
- y: height * 0.39,
704
+ y: grassStartY - 160,
717
705
  width: 1,
718
- height: height * 0.22,
706
+ height: 130,
719
707
  color: "#3E2723",
720
708
  opacity: 0.7
721
709
  }), /*#__PURE__*/_jsx(Rect, {
722
710
  x: width * 0.88 + 14,
723
- y: height * 0.37,
711
+ y: grassStartY - 180,
724
712
  width: 1.5,
725
- height: height * 0.26,
713
+ height: 160,
726
714
  color: "#2E1A16",
727
715
  opacity: 0.9
728
716
  }), /*#__PURE__*/_jsx(Circle, {
729
717
  cx: width * 0.88 + 9,
730
- cy: height * 0.48,
718
+ cy: grassStartY - 120,
731
719
  r: 35,
732
720
  color: "#0D4F0C",
733
721
  opacity: 0.95,
@@ -739,109 +727,109 @@ export const GameBackground = ({
739
727
  })
740
728
  }), /*#__PURE__*/_jsx(Circle, {
741
729
  cx: width * 0.88 + 5,
742
- cy: height * 0.50,
730
+ cy: grassStartY - 100,
743
731
  r: 30,
744
732
  color: "#1B5E20",
745
733
  opacity: 0.9
746
734
  }), /*#__PURE__*/_jsx(Circle, {
747
735
  cx: width * 0.88 + 13,
748
- cy: height * 0.49,
736
+ cy: grassStartY - 110,
749
737
  r: 28,
750
738
  color: "#2E7D32",
751
739
  opacity: 0.8
752
740
  }), /*#__PURE__*/_jsx(Circle, {
753
741
  cx: width * 0.88 + 9,
754
- cy: height * 0.42,
742
+ cy: grassStartY - 180,
755
743
  r: 32,
756
744
  color: "#1B5E20",
757
745
  opacity: 0.9
758
746
  }), /*#__PURE__*/_jsx(Circle, {
759
747
  cx: width * 0.88 + 6,
760
- cy: height * 0.43,
748
+ cy: grassStartY - 170,
761
749
  r: 26,
762
750
  color: "#2E7D32",
763
751
  opacity: 0.85
764
752
  }), /*#__PURE__*/_jsx(Circle, {
765
753
  cx: width * 0.88 + 12,
766
- cy: height * 0.41,
754
+ cy: grassStartY - 190,
767
755
  r: 24,
768
756
  color: "#388E3C",
769
757
  opacity: 0.8
770
758
  }), /*#__PURE__*/_jsx(Circle, {
771
759
  cx: width * 0.88 + 9,
772
- cy: height * 0.36,
760
+ cy: grassStartY - 240,
773
761
  r: 28,
774
762
  color: "#2E7D32",
775
763
  opacity: 0.9
776
764
  }), /*#__PURE__*/_jsx(Circle, {
777
765
  cx: width * 0.88 + 7,
778
- cy: height * 0.37,
766
+ cy: grassStartY - 230,
779
767
  r: 22,
780
768
  color: "#388E3C",
781
769
  opacity: 0.85
782
770
  }), /*#__PURE__*/_jsx(Circle, {
783
771
  cx: width * 0.88 + 11,
784
- cy: height * 0.35,
772
+ cy: grassStartY - 250,
785
773
  r: 20,
786
774
  color: "#4CAF50",
787
775
  opacity: 0.8
788
776
  }), /*#__PURE__*/_jsx(Circle, {
789
777
  cx: width * 0.88 + 9,
790
- cy: height * 0.30,
778
+ cy: grassStartY - 300,
791
779
  r: 22,
792
780
  color: "#388E3C",
793
781
  opacity: 0.9
794
782
  }), /*#__PURE__*/_jsx(Circle, {
795
783
  cx: width * 0.88 + 8,
796
- cy: height * 0.31,
784
+ cy: grassStartY - 290,
797
785
  r: 18,
798
786
  color: "#4CAF50",
799
787
  opacity: 0.8
800
788
  }), /*#__PURE__*/_jsx(Circle, {
801
789
  cx: width * 0.88 + 10,
802
- cy: height * 0.29,
790
+ cy: grassStartY - 310,
803
791
  r: 15,
804
792
  color: "#66BB6A",
805
793
  opacity: 0.7
806
794
  }), /*#__PURE__*/_jsx(Circle, {
807
795
  cx: width * 0.88 + 4,
808
- cy: height * 0.45,
796
+ cy: grassStartY - 150,
809
797
  r: 8,
810
798
  color: "#0D4F0C",
811
799
  opacity: 0.8
812
800
  }), /*#__PURE__*/_jsx(Circle, {
813
801
  cx: width * 0.88 + 14,
814
- cy: height * 0.43,
802
+ cy: grassStartY - 170,
815
803
  r: 6,
816
804
  color: "#1B5E20",
817
805
  opacity: 0.9
818
806
  }), /*#__PURE__*/_jsx(Circle, {
819
807
  cx: width * 0.88 + 3,
820
- cy: height * 0.38,
808
+ cy: grassStartY - 220,
821
809
  r: 5,
822
810
  color: "#0D4F0C",
823
811
  opacity: 0.7
824
812
  }), /*#__PURE__*/_jsx(Circle, {
825
813
  cx: width * 0.88 + 15,
826
- cy: height * 0.36,
814
+ cy: grassStartY - 240,
827
815
  r: 7,
828
816
  color: "#2E7D32",
829
817
  opacity: 0.8
830
818
  }), /*#__PURE__*/_jsx(Circle, {
831
819
  cx: width * 0.88 + 12,
832
- cy: height * 0.32,
820
+ cy: grassStartY - 280,
833
821
  r: 8,
834
822
  color: "#81C784",
835
823
  opacity: 0.6
836
824
  }), /*#__PURE__*/_jsx(Circle, {
837
825
  cx: width * 0.88 + 11,
838
- cy: height * 0.28,
826
+ cy: grassStartY - 320,
839
827
  r: 6,
840
828
  color: "#A5D6A7",
841
829
  opacity: 0.5
842
830
  }), /*#__PURE__*/_jsx(Circle, {
843
831
  cx: width * 0.88 + 13,
844
- cy: height * 0.39,
832
+ cy: grassStartY - 190,
845
833
  r: 5,
846
834
  color: "#C8E6C9",
847
835
  opacity: 0.7
@@ -851,7 +839,7 @@ export const GameBackground = ({
851
839
  children: [/*#__PURE__*/_jsxs(Group, {
852
840
  children: [/*#__PURE__*/_jsx(Circle, {
853
841
  cx: width * 0.15,
854
- cy: height * 0.64,
842
+ cy: grassStartY - 60,
855
843
  r: 26,
856
844
  color: "#1B5E20",
857
845
  opacity: 0.95,
@@ -863,85 +851,85 @@ export const GameBackground = ({
863
851
  })
864
852
  }), /*#__PURE__*/_jsx(Circle, {
865
853
  cx: width * 0.18,
866
- cy: height * 0.61,
854
+ cy: grassStartY - 90,
867
855
  r: 22,
868
856
  color: "#2E7D32",
869
857
  opacity: 0.9
870
858
  }), /*#__PURE__*/_jsx(Circle, {
871
859
  cx: width * 0.21,
872
- cy: height * 0.63,
860
+ cy: grassStartY - 70,
873
861
  r: 18,
874
862
  color: "#388E3C",
875
863
  opacity: 0.8
876
864
  }), /*#__PURE__*/_jsx(Circle, {
877
865
  cx: width * 0.12,
878
- cy: height * 0.62,
866
+ cy: grassStartY - 80,
879
867
  r: 20,
880
868
  color: "#2E7D32",
881
869
  opacity: 0.85
882
870
  }), /*#__PURE__*/_jsx(Circle, {
883
871
  cx: width * 0.09,
884
- cy: height * 0.65,
872
+ cy: grassStartY - 50,
885
873
  r: 16,
886
874
  color: "#1B5E20",
887
875
  opacity: 0.9
888
876
  }), /*#__PURE__*/_jsx(Circle, {
889
877
  cx: width * 0.16,
890
- cy: height * 0.58,
878
+ cy: grassStartY - 100,
891
879
  r: 19,
892
880
  color: "#4CAF50",
893
881
  opacity: 0.7
894
882
  }), /*#__PURE__*/_jsx(Circle, {
895
883
  cx: width * 0.19,
896
- cy: height * 0.59,
884
+ cy: grassStartY - 95,
897
885
  r: 15,
898
886
  color: "#66BB6A",
899
887
  opacity: 0.6
900
888
  }), /*#__PURE__*/_jsx(Circle, {
901
889
  cx: width * 0.15,
902
- cy: height * 0.61,
890
+ cy: grassStartY - 90,
903
891
  r: 14,
904
892
  color: "#388E3C",
905
893
  opacity: 0.9
906
894
  }), /*#__PURE__*/_jsx(Circle, {
907
895
  cx: width * 0.17,
908
- cy: height * 0.63,
896
+ cy: grassStartY - 70,
909
897
  r: 12,
910
898
  color: "#2E7D32",
911
899
  opacity: 0.8
912
900
  }), /*#__PURE__*/_jsx(Circle, {
913
901
  cx: width * 0.13,
914
- cy: height * 0.59,
902
+ cy: grassStartY - 95,
915
903
  r: 10,
916
904
  color: "#81C784",
917
905
  opacity: 0.7
918
906
  }), /*#__PURE__*/_jsx(Circle, {
919
907
  cx: width * 0.20,
920
- cy: height * 0.60,
908
+ cy: grassStartY - 85,
921
909
  r: 8,
922
910
  color: "#A5D6A7",
923
911
  opacity: 0.6
924
912
  }), /*#__PURE__*/_jsx(Circle, {
925
913
  cx: width * 0.11,
926
- cy: height * 0.63,
914
+ cy: grassStartY - 70,
927
915
  r: 9,
928
916
  color: "#66BB6A",
929
917
  opacity: 0.8
930
918
  }), /*#__PURE__*/_jsx(Circle, {
931
919
  cx: width * 0.22,
932
- cy: height * 0.62,
920
+ cy: grassStartY - 80,
933
921
  r: 7,
934
922
  color: "#81C784",
935
923
  opacity: 0.7
936
924
  }), /*#__PURE__*/_jsx(Circle, {
937
925
  cx: width * 0.16,
938
- cy: height * 0.57,
926
+ cy: grassStartY - 105,
939
927
  r: 6,
940
928
  color: "#C8E6C9",
941
929
  opacity: 0.8
942
930
  }), /*#__PURE__*/_jsx(Circle, {
943
931
  cx: width * 0.19,
944
- cy: height * 0.58,
932
+ cy: grassStartY - 100,
945
933
  r: 4,
946
934
  color: "#E8F5E8",
947
935
  opacity: 0.7
@@ -949,7 +937,7 @@ export const GameBackground = ({
949
937
  }), /*#__PURE__*/_jsxs(Group, {
950
938
  children: [/*#__PURE__*/_jsx(Circle, {
951
939
  cx: width * 0.35,
952
- cy: height * 0.66,
940
+ cy: grassStartY - 40,
953
941
  r: 21,
954
942
  color: "#1B5E20",
955
943
  opacity: 0.9,
@@ -961,37 +949,37 @@ export const GameBackground = ({
961
949
  })
962
950
  }), /*#__PURE__*/_jsx(Circle, {
963
951
  cx: width * 0.37,
964
- cy: height * 0.64,
952
+ cy: grassStartY - 60,
965
953
  r: 17,
966
954
  color: "#2E7D32",
967
955
  opacity: 0.85
968
956
  }), /*#__PURE__*/_jsx(Circle, {
969
957
  cx: width * 0.33,
970
- cy: height * 0.67,
958
+ cy: grassStartY - 30,
971
959
  r: 15,
972
960
  color: "#388E3C",
973
961
  opacity: 0.8
974
962
  }), /*#__PURE__*/_jsx(Circle, {
975
963
  cx: width * 0.36,
976
- cy: height * 0.62,
964
+ cy: grassStartY - 80,
977
965
  r: 13,
978
966
  color: "#4CAF50",
979
967
  opacity: 0.7
980
968
  }), /*#__PURE__*/_jsx(Circle, {
981
969
  cx: width * 0.32,
982
- cy: height * 0.64,
970
+ cy: grassStartY - 60,
983
971
  r: 10,
984
972
  color: "#66BB6A",
985
973
  opacity: 0.8
986
974
  }), /*#__PURE__*/_jsx(Circle, {
987
975
  cx: width * 0.38,
988
- cy: height * 0.65,
976
+ cy: grassStartY - 50,
989
977
  r: 8,
990
978
  color: "#81C784",
991
979
  opacity: 0.7
992
980
  }), /*#__PURE__*/_jsx(Circle, {
993
981
  cx: width * 0.34,
994
- cy: height * 0.61,
982
+ cy: grassStartY - 90,
995
983
  r: 5,
996
984
  color: "#A5D6A7",
997
985
  opacity: 0.8
@@ -999,7 +987,7 @@ export const GameBackground = ({
999
987
  }), /*#__PURE__*/_jsxs(Group, {
1000
988
  children: [/*#__PURE__*/_jsx(Circle, {
1001
989
  cx: width * 0.52,
1002
- cy: height * 0.65,
990
+ cy: grassStartY - 45,
1003
991
  r: 25,
1004
992
  color: "#1B5E20",
1005
993
  opacity: 0.95,
@@ -1011,61 +999,61 @@ export const GameBackground = ({
1011
999
  })
1012
1000
  }), /*#__PURE__*/_jsx(Circle, {
1013
1001
  cx: width * 0.55,
1014
- cy: height * 0.62,
1002
+ cy: grassStartY - 75,
1015
1003
  r: 21,
1016
1004
  color: "#2E7D32",
1017
1005
  opacity: 0.9
1018
1006
  }), /*#__PURE__*/_jsx(Circle, {
1019
1007
  cx: width * 0.49,
1020
- cy: height * 0.66,
1008
+ cy: grassStartY - 35,
1021
1009
  r: 19,
1022
1010
  color: "#388E3C",
1023
1011
  opacity: 0.85
1024
1012
  }), /*#__PURE__*/_jsx(Circle, {
1025
1013
  cx: width * 0.54,
1026
- cy: height * 0.59,
1014
+ cy: grassStartY - 100,
1027
1015
  r: 16,
1028
1016
  color: "#4CAF50",
1029
1017
  opacity: 0.8
1030
1018
  }), /*#__PURE__*/_jsx(Circle, {
1031
1019
  cx: width * 0.50,
1032
- cy: height * 0.63,
1020
+ cy: grassStartY - 70,
1033
1021
  r: 14,
1034
1022
  color: "#66BB6A",
1035
1023
  opacity: 0.75
1036
1024
  }), /*#__PURE__*/_jsx(Circle, {
1037
1025
  cx: width * 0.47,
1038
- cy: height * 0.61,
1026
+ cy: grassStartY - 90,
1039
1027
  r: 11,
1040
1028
  color: "#81C784",
1041
1029
  opacity: 0.7
1042
1030
  }), /*#__PURE__*/_jsx(Circle, {
1043
1031
  cx: width * 0.56,
1044
- cy: height * 0.64,
1032
+ cy: grassStartY - 55,
1045
1033
  r: 9,
1046
1034
  color: "#A5D6A7",
1047
1035
  opacity: 0.6
1048
1036
  }), /*#__PURE__*/_jsx(Circle, {
1049
1037
  cx: width * 0.51,
1050
- cy: height * 0.60,
1038
+ cy: grassStartY - 85,
1051
1039
  r: 4,
1052
1040
  color: "#FF69B4",
1053
1041
  opacity: 0.9
1054
1042
  }), /*#__PURE__*/_jsx(Circle, {
1055
1043
  cx: width * 0.54,
1056
- cy: height * 0.62,
1044
+ cy: grassStartY - 75,
1057
1045
  r: 3.5,
1058
1046
  color: "#FF6B6B",
1059
1047
  opacity: 0.85
1060
1048
  }), /*#__PURE__*/_jsx(Circle, {
1061
1049
  cx: width * 0.49,
1062
- cy: height * 0.64,
1050
+ cy: grassStartY - 55,
1063
1051
  r: 3,
1064
1052
  color: "#FF1744",
1065
1053
  opacity: 0.8
1066
1054
  }), /*#__PURE__*/_jsx(Circle, {
1067
1055
  cx: width * 0.52,
1068
- cy: height * 0.58,
1056
+ cy: grassStartY - 105,
1069
1057
  r: 6,
1070
1058
  color: "#C8E6C9",
1071
1059
  opacity: 0.8
@@ -1073,7 +1061,7 @@ export const GameBackground = ({
1073
1061
  }), /*#__PURE__*/_jsxs(Group, {
1074
1062
  children: [/*#__PURE__*/_jsx(Circle, {
1075
1063
  cx: width * 0.72,
1076
- cy: height * 0.66,
1064
+ cy: grassStartY - 35,
1077
1065
  r: 28,
1078
1066
  color: "#0D4F0C",
1079
1067
  opacity: 0.95,
@@ -1085,73 +1073,73 @@ export const GameBackground = ({
1085
1073
  })
1086
1074
  }), /*#__PURE__*/_jsx(Circle, {
1087
1075
  cx: width * 0.75,
1088
- cy: height * 0.63,
1076
+ cy: grassStartY - 70,
1089
1077
  r: 24,
1090
1078
  color: "#1B5E20",
1091
1079
  opacity: 0.9
1092
1080
  }), /*#__PURE__*/_jsx(Circle, {
1093
1081
  cx: width * 0.69,
1094
- cy: height * 0.67,
1082
+ cy: grassStartY - 25,
1095
1083
  r: 22,
1096
1084
  color: "#2E7D32",
1097
1085
  opacity: 0.85
1098
1086
  }), /*#__PURE__*/_jsx(Circle, {
1099
1087
  cx: width * 0.74,
1100
- cy: height * 0.60,
1088
+ cy: grassStartY - 85,
1101
1089
  r: 19,
1102
1090
  color: "#388E3C",
1103
1091
  opacity: 0.8
1104
1092
  }), /*#__PURE__*/_jsx(Circle, {
1105
1093
  cx: width * 0.68,
1106
- cy: height * 0.64,
1094
+ cy: grassStartY - 55,
1107
1095
  r: 17,
1108
1096
  color: "#4CAF50",
1109
1097
  opacity: 0.75
1110
1098
  }), /*#__PURE__*/_jsx(Circle, {
1111
1099
  cx: width * 0.77,
1112
- cy: height * 0.65,
1100
+ cy: grassStartY - 45,
1113
1101
  r: 14,
1114
1102
  color: "#66BB6A",
1115
1103
  opacity: 0.7
1116
1104
  }), /*#__PURE__*/_jsx(Circle, {
1117
1105
  cx: width * 0.66,
1118
- cy: height * 0.62,
1106
+ cy: grassStartY - 75,
1119
1107
  r: 12,
1120
1108
  color: "#81C784",
1121
1109
  opacity: 0.65
1122
1110
  }), /*#__PURE__*/_jsx(Circle, {
1123
1111
  cx: width * 0.71,
1124
- cy: height * 0.58,
1112
+ cy: grassStartY - 95,
1125
1113
  r: 10,
1126
1114
  color: "#A5D6A7",
1127
1115
  opacity: 0.6
1128
1116
  }), /*#__PURE__*/_jsx(Circle, {
1129
1117
  cx: width * 0.73,
1130
- cy: height * 0.59,
1118
+ cy: grassStartY - 100,
1131
1119
  r: 3,
1132
1120
  color: "#9C27B0",
1133
1121
  opacity: 0.9
1134
1122
  }), /*#__PURE__*/_jsx(Circle, {
1135
1123
  cx: width * 0.70,
1136
- cy: height * 0.61,
1124
+ cy: grassStartY - 90,
1137
1125
  r: 2.5,
1138
1126
  color: "#673AB7",
1139
1127
  opacity: 0.85
1140
1128
  }), /*#__PURE__*/_jsx(Circle, {
1141
1129
  cx: width * 0.76,
1142
- cy: height * 0.64,
1130
+ cy: grassStartY - 55,
1143
1131
  r: 3.5,
1144
1132
  color: "#FF9800",
1145
1133
  opacity: 0.8
1146
1134
  }), /*#__PURE__*/_jsx(Circle, {
1147
1135
  cx: width * 0.73,
1148
- cy: height * 0.57,
1136
+ cy: grassStartY - 110,
1149
1137
  r: 7,
1150
1138
  color: "#C8E6C9",
1151
1139
  opacity: 0.8
1152
1140
  }), /*#__PURE__*/_jsx(Circle, {
1153
1141
  cx: width * 0.75,
1154
- cy: height * 0.61,
1142
+ cy: grassStartY - 90,
1155
1143
  r: 5,
1156
1144
  color: "#E8F5E8",
1157
1145
  opacity: 0.7
@@ -1159,7 +1147,7 @@ export const GameBackground = ({
1159
1147
  }), /*#__PURE__*/_jsxs(Group, {
1160
1148
  children: [/*#__PURE__*/_jsx(Circle, {
1161
1149
  cx: width * 0.25,
1162
- cy: height * 0.68,
1150
+ cy: grassStartY - 15,
1163
1151
  r: 15,
1164
1152
  color: "#1B5E20",
1165
1153
  opacity: 0.8,
@@ -1171,25 +1159,25 @@ export const GameBackground = ({
1171
1159
  })
1172
1160
  }), /*#__PURE__*/_jsx(Circle, {
1173
1161
  cx: width * 0.27,
1174
- cy: height * 0.66,
1162
+ cy: grassStartY - 35,
1175
1163
  r: 12,
1176
1164
  color: "#2E7D32",
1177
1165
  opacity: 0.75
1178
1166
  }), /*#__PURE__*/_jsx(Circle, {
1179
1167
  cx: width * 0.23,
1180
- cy: height * 0.69,
1168
+ cy: grassStartY - 5,
1181
1169
  r: 10,
1182
1170
  color: "#388E3C",
1183
1171
  opacity: 0.7
1184
1172
  }), /*#__PURE__*/_jsx(Circle, {
1185
1173
  cx: width * 0.26,
1186
- cy: height * 0.65,
1174
+ cy: grassStartY - 45,
1187
1175
  r: 7,
1188
1176
  color: "#66BB6A",
1189
1177
  opacity: 0.6
1190
1178
  }), /*#__PURE__*/_jsx(Circle, {
1191
1179
  cx: width * 0.65,
1192
- cy: height * 0.69,
1180
+ cy: grassStartY - 5,
1193
1181
  r: 13,
1194
1182
  color: "#2E7D32",
1195
1183
  opacity: 0.8,
@@ -1201,72 +1189,30 @@ export const GameBackground = ({
1201
1189
  })
1202
1190
  }), /*#__PURE__*/_jsx(Circle, {
1203
1191
  cx: width * 0.67,
1204
- cy: height * 0.67,
1192
+ cy: grassStartY - 25,
1205
1193
  r: 10,
1206
1194
  color: "#388E3C",
1207
1195
  opacity: 0.75
1208
1196
  }), /*#__PURE__*/_jsx(Circle, {
1209
1197
  cx: width * 0.63,
1210
- cy: height * 0.70,
1198
+ cy: grassStartY + 5,
1211
1199
  r: 8,
1212
1200
  color: "#4CAF50",
1213
1201
  opacity: 0.7
1214
1202
  }), /*#__PURE__*/_jsx(Circle, {
1215
1203
  cx: width * 0.66,
1216
- cy: height * 0.66,
1204
+ cy: grassStartY - 35,
1217
1205
  r: 5,
1218
1206
  color: "#81C784",
1219
1207
  opacity: 0.6
1220
1208
  })]
1221
1209
  })]
1222
1210
  }), /*#__PURE__*/_jsx(Group, {
1223
- children: Array.from({
1224
- length: 12
1225
- }, (_, i) => {
1226
- const positions = [{
1227
- x: width * 0.20,
1228
- y: height * 0.69
1229
- }, {
1230
- x: width * 0.28,
1231
- y: height * 0.71
1232
- }, {
1233
- x: width * 0.38,
1234
- y: height * 0.68
1235
- }, {
1236
- x: width * 0.45,
1237
- y: height * 0.70
1238
- }, {
1239
- x: width * 0.58,
1240
- y: height * 0.69
1241
- }, {
1242
- x: width * 0.63,
1243
- y: height * 0.71
1244
- }, {
1245
- x: width * 0.77,
1246
- y: height * 0.68
1247
- }, {
1248
- x: width * 0.82,
1249
- y: height * 0.70
1250
- }, {
1251
- x: width * 0.22,
1252
- y: height * 0.73
1253
- }, {
1254
- x: width * 0.48,
1255
- y: height * 0.72
1256
- }, {
1257
- x: width * 0.68,
1258
- y: height * 0.73
1259
- }, {
1260
- x: width * 0.85,
1261
- y: height * 0.72
1262
- }];
1211
+ children: flowerPositions.map((pos, i) => {
1263
1212
  const colors = ['#FF6B6B', '#FF69B4', '#9370DB', '#4169E1', '#FF8C00', '#32CD32'];
1264
- const pos = positions[i] || {
1265
- x: Math.random() * width,
1266
- y: height * 0.70
1267
- };
1268
1213
  const color = colors[i % colors.length];
1269
- const size = 3 + Math.random() * 2;
1214
+ const size = 3 + i % 3; // Simplified size calculation
1215
+
1270
1216
  return /*#__PURE__*/_jsxs(Group, {
1271
1217
  children: [/*#__PURE__*/_jsx(Circle, {
1272
1218
  cx: pos.x,
@@ -1277,7 +1223,7 @@ export const GameBackground = ({
1277
1223
  children: /*#__PURE__*/_jsx(Shadow, {
1278
1224
  dx: 0,
1279
1225
  dy: 1,
1280
- blur: 2,
1226
+ blur: 1,
1281
1227
  color: "rgba(0,0,0,0.2)"
1282
1228
  })
1283
1229
  }), /*#__PURE__*/_jsx(Circle, {