@nice2dev/game-engine 1.1.6 → 1.1.9

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 (496) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/dist/cjs/core/GameConfig.js +21 -7
  3. package/dist/cjs/devtools/DeveloperExperience.js +5 -5
  4. package/dist/cjs/dialogue/DialogueSystem.js +1 -1
  5. package/dist/cjs/editor/AssetBrowser.js +26 -25
  6. package/dist/cjs/editor/NiceGameEditor.js +66 -49
  7. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js +33 -32
  8. package/dist/cjs/i18n/I18n.js +305 -0
  9. package/dist/cjs/kids/KidMode.js +36 -36
  10. package/dist/cjs/kids/KidTools.js +31 -31
  11. package/dist/cjs/native-engine/InputSystem.js +9 -2
  12. package/dist/cjs/package.json +3 -0
  13. package/dist/cjs/plugins/PluginSDK.js +1 -1
  14. package/dist/cjs/plugins/PluginTestKit.js +1 -1
  15. package/dist/cjs/quest/QuestSystem.js +5 -1
  16. package/dist/cjs/release/MobileExport.js +45 -12
  17. package/dist/cjs/tutorials/TutorialBranching.js +12 -12
  18. package/dist/cjs/tutorials/TutorialEngine.js +35 -35
  19. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js +106 -89
  20. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js +103 -55
  21. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js +79 -56
  22. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js +25 -24
  23. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js +28 -27
  24. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js +31 -30
  25. package/dist/esm/core/GameConfig.js +21 -7
  26. package/dist/esm/devtools/DeveloperExperience.js +5 -5
  27. package/dist/esm/dialogue/DialogueSystem.js +1 -1
  28. package/dist/esm/editor/AssetBrowser.js +26 -25
  29. package/dist/esm/editor/NiceGameEditor.js +67 -50
  30. package/dist/esm/godot-integration/components/GodotProjectBrowser.js +33 -32
  31. package/dist/esm/i18n/I18n.js +305 -0
  32. package/dist/esm/kids/KidMode.js +36 -36
  33. package/dist/esm/kids/KidTools.js +31 -31
  34. package/dist/esm/native-engine/InputSystem.js +9 -2
  35. package/dist/esm/plugins/PluginSDK.js +1 -1
  36. package/dist/esm/plugins/PluginTestKit.js +1 -1
  37. package/dist/esm/quest/QuestSystem.js +5 -1
  38. package/dist/esm/release/MobileExport.js +45 -12
  39. package/dist/esm/tutorials/TutorialBranching.js +12 -12
  40. package/dist/esm/tutorials/TutorialEngine.js +35 -35
  41. package/dist/esm/tutorials/content/Tutorials_T05_T08.js +106 -89
  42. package/dist/esm/tutorials/content/Tutorials_T09_T11.js +103 -55
  43. package/dist/esm/tutorials/content/Tutorials_T12_T15.js +79 -56
  44. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js +25 -24
  45. package/dist/esm/unity-integration/components/UnityProjectBrowser.js +28 -27
  46. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js +31 -30
  47. package/dist/types/core/index.d.ts +1 -1
  48. package/dist/types/editor/AssetBrowser.d.ts +1 -0
  49. package/dist/types/editor/behavior-tree/BTEditorNode.d.ts +2 -1
  50. package/dist/types/editor/behavior-tree/BTEditorToolbar.d.ts +1 -0
  51. package/dist/types/input/index.d.ts +1 -1
  52. package/dist/types/kids/KidMode.d.ts +4 -2
  53. package/dist/types/kids/KidTools.d.ts +1 -1
  54. package/dist/types/legendary/index.d.ts +7 -7
  55. package/dist/types/procedural/index.d.ts +1 -1
  56. package/dist/types/tutorials/TutorialBranching.d.ts +1 -1
  57. package/package.json +3 -2
  58. package/dist/cjs/accessibility/Accessibility.js.map +0 -1
  59. package/dist/cjs/ai/AI.js.map +0 -1
  60. package/dist/cjs/ai/BehaviorTree.js.map +0 -1
  61. package/dist/cjs/ai/StateMachine.js.map +0 -1
  62. package/dist/cjs/animation/Animation.js.map +0 -1
  63. package/dist/cjs/audio/AudioAdvanced.js.map +0 -1
  64. package/dist/cjs/audio/AudioBridge.js.map +0 -1
  65. package/dist/cjs/audio/AudioManager.js.map +0 -1
  66. package/dist/cjs/build-cloud/BuildOrchestration.js.map +0 -1
  67. package/dist/cjs/build-cloud/GodotBuildCloud.js.map +0 -1
  68. package/dist/cjs/build-cloud/UnityBuildCloud.js.map +0 -1
  69. package/dist/cjs/build-cloud/UnrealBuildCloud.js.map +0 -1
  70. package/dist/cjs/core/EventBus.js.map +0 -1
  71. package/dist/cjs/core/GameClock.js.map +0 -1
  72. package/dist/cjs/core/GameConfig.js.map +0 -1
  73. package/dist/cjs/core/GameLoop.js.map +0 -1
  74. package/dist/cjs/core/ServiceLocator.js.map +0 -1
  75. package/dist/cjs/core/Validation.js.map +0 -1
  76. package/dist/cjs/core/math.js.map +0 -1
  77. package/dist/cjs/devtools/DevTools.js.map +0 -1
  78. package/dist/cjs/devtools/DeveloperExperience.js.map +0 -1
  79. package/dist/cjs/devtools/GameplayAnalytics.js.map +0 -1
  80. package/dist/cjs/dialogue/DialogueSystem.js.map +0 -1
  81. package/dist/cjs/docs/DocGenerator.js.map +0 -1
  82. package/dist/cjs/ecs/World.js.map +0 -1
  83. package/dist/cjs/editor/AchievementEditor.js.map +0 -1
  84. package/dist/cjs/editor/AdvancedEditor.js.map +0 -1
  85. package/dist/cjs/editor/AnimationRetargeting.js.map +0 -1
  86. package/dist/cjs/editor/AssetBrowser.js.map +0 -1
  87. package/dist/cjs/editor/AssetManager.js.map +0 -1
  88. package/dist/cjs/editor/ConsolePro.js.map +0 -1
  89. package/dist/cjs/editor/CraftingEditor.js.map +0 -1
  90. package/dist/cjs/editor/DebugTools.js.map +0 -1
  91. package/dist/cjs/editor/DialogueSystem.js.map +0 -1
  92. package/dist/cjs/editor/LeaderboardSystem.js.map +0 -1
  93. package/dist/cjs/editor/NiceGameEditor.js.map +0 -1
  94. package/dist/cjs/editor/PrefabSystem.js.map +0 -1
  95. package/dist/cjs/editor/ProfilerPanel.js.map +0 -1
  96. package/dist/cjs/editor/QuestEditor.js.map +0 -1
  97. package/dist/cjs/editor/ReplaySystem.js.map +0 -1
  98. package/dist/cjs/editor/SceneEditor.js.map +0 -1
  99. package/dist/cjs/editor/ScreenshotMode.js.map +0 -1
  100. package/dist/cjs/editor/ShaderGraph.js.map +0 -1
  101. package/dist/cjs/editor/TimelineEditor.js.map +0 -1
  102. package/dist/cjs/editor/UndoRedoPro.js.map +0 -1
  103. package/dist/cjs/editor/VRARMode.js.map +0 -1
  104. package/dist/cjs/engine/NiceGameEngine.js.map +0 -1
  105. package/dist/cjs/engine/SaveSystem.js.map +0 -1
  106. package/dist/cjs/engine/SaveSystemV2.js +0 -530
  107. package/dist/cjs/engine/SaveSystemV2.js.map +0 -1
  108. package/dist/cjs/enterprise/Enterprise.js.map +0 -1
  109. package/dist/cjs/export/BevyExporter.js.map +0 -1
  110. package/dist/cjs/export/CocosExporter.js.map +0 -1
  111. package/dist/cjs/export/Construct3Exporter.js.map +0 -1
  112. package/dist/cjs/export/DefoldExporter.js.map +0 -1
  113. package/dist/cjs/export/GDevelopExporter.js.map +0 -1
  114. package/dist/cjs/export/GameMakerExporter.js.map +0 -1
  115. package/dist/cjs/export/GodotExporter.js.map +0 -1
  116. package/dist/cjs/export/MinecraftBedrockExporter.js.map +0 -1
  117. package/dist/cjs/export/MonoGameExporter.js.map +0 -1
  118. package/dist/cjs/export/Pico8Exporter.js.map +0 -1
  119. package/dist/cjs/export/PlatformExporter.js.map +0 -1
  120. package/dist/cjs/export/RPGMakerExporter.js.map +0 -1
  121. package/dist/cjs/export/RobloxExporter.js.map +0 -1
  122. package/dist/cjs/export/Solar2DExporter.js.map +0 -1
  123. package/dist/cjs/export/ThreeJSExporter.js.map +0 -1
  124. package/dist/cjs/export/Tic80Exporter.js.map +0 -1
  125. package/dist/cjs/export/UnityExporter.js.map +0 -1
  126. package/dist/cjs/export/UnrealExporter.js.map +0 -1
  127. package/dist/cjs/export/WebExporter.js.map +0 -1
  128. package/dist/cjs/export/index.js.map +0 -1
  129. package/dist/cjs/godot-integration/GodotAssetLibrary.js.map +0 -1
  130. package/dist/cjs/godot-integration/GodotImport.js.map +0 -1
  131. package/dist/cjs/godot-integration/GodotLiveLink.js.map +0 -1
  132. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js.map +0 -1
  133. package/dist/cjs/i18n/I18n.js.map +0 -1
  134. package/dist/cjs/i18n/useTranslation.js.map +0 -1
  135. package/dist/cjs/import/AsepriteImporter.js.map +0 -1
  136. package/dist/cjs/import/DragonBonesImporter.js.map +0 -1
  137. package/dist/cjs/import/GameMakerImporter.js.map +0 -1
  138. package/dist/cjs/import/GodotSceneImporter.js.map +0 -1
  139. package/dist/cjs/import/LDtkImporter.js.map +0 -1
  140. package/dist/cjs/import/Live2DImporter.js.map +0 -1
  141. package/dist/cjs/import/NdgFormat.js.map +0 -1
  142. package/dist/cjs/import/OgmoImporter.js.map +0 -1
  143. package/dist/cjs/import/RPGMakerImporter.js.map +0 -1
  144. package/dist/cjs/import/SceneImporter.js.map +0 -1
  145. package/dist/cjs/import/SpineImporter.js.map +0 -1
  146. package/dist/cjs/import/SpriterImporter.js.map +0 -1
  147. package/dist/cjs/import/TiledMapImporter.js.map +0 -1
  148. package/dist/cjs/import/UnitySceneImporter.js.map +0 -1
  149. package/dist/cjs/import/index.js.map +0 -1
  150. package/dist/cjs/index.js.map +0 -1
  151. package/dist/cjs/input/GamepadNavigation.js.map +0 -1
  152. package/dist/cjs/input/InputManager.js.map +0 -1
  153. package/dist/cjs/input/useGamepads.js.map +0 -1
  154. package/dist/cjs/integration/IconSprite.js.map +0 -1
  155. package/dist/cjs/inventory/InventorySystem.js.map +0 -1
  156. package/dist/cjs/kids/KidMode.js.map +0 -1
  157. package/dist/cjs/kids/KidTools.js.map +0 -1
  158. package/dist/cjs/monetization/Monetization.js.map +0 -1
  159. package/dist/cjs/multiplayer/LocalMultiplayer.js.map +0 -1
  160. package/dist/cjs/multiplayer/MiniGameTypes.js.map +0 -1
  161. package/dist/cjs/native-engine/AssetPipeline.js.map +0 -1
  162. package/dist/cjs/native-engine/AudioEngine.js.map +0 -1
  163. package/dist/cjs/native-engine/InputSystem.js.map +0 -1
  164. package/dist/cjs/native-engine/NetworkingSystem.js.map +0 -1
  165. package/dist/cjs/native-engine/PhysicsEngine.js.map +0 -1
  166. package/dist/cjs/native-engine/RenderingEngine.js.map +0 -1
  167. package/dist/cjs/native-engine/SceneGraph.js.map +0 -1
  168. package/dist/cjs/network/MultiplayerTransport.js.map +0 -1
  169. package/dist/cjs/network/Networking.js.map +0 -1
  170. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +0 -1
  171. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +0 -1
  172. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +0 -1
  173. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +0 -1
  174. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +0 -1
  175. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +0 -1
  176. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +0 -1
  177. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +0 -1
  178. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +0 -1
  179. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +0 -1
  180. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +0 -1
  181. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +0 -1
  182. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +0 -1
  183. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +0 -1
  184. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +0 -1
  185. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +0 -1
  186. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +0 -1
  187. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +0 -1
  188. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +0 -1
  189. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +0 -1
  190. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +0 -1
  191. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +0 -1
  192. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +0 -1
  193. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +0 -1
  194. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +0 -1
  195. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js.map +0 -1
  196. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +0 -1
  197. package/dist/cjs/pathfinding/Pathfinding.js.map +0 -1
  198. package/dist/cjs/performance/AssetStreaming.js.map +0 -1
  199. package/dist/cjs/performance/BenchmarkSuite.js.map +0 -1
  200. package/dist/cjs/performance/DeltaCompression.js.map +0 -1
  201. package/dist/cjs/performance/DeterministicPhysics.js.map +0 -1
  202. package/dist/cjs/performance/ECSOptimization.js.map +0 -1
  203. package/dist/cjs/performance/GameSaveSystem.js.map +0 -1
  204. package/dist/cjs/performance/HotReload.js.map +0 -1
  205. package/dist/cjs/performance/InputRecording.js.map +0 -1
  206. package/dist/cjs/performance/InterestManagement.js.map +0 -1
  207. package/dist/cjs/performance/LocalizationRuntime.js.map +0 -1
  208. package/dist/cjs/performance/MemoryManagement.js.map +0 -1
  209. package/dist/cjs/performance/ModSupport.js.map +0 -1
  210. package/dist/cjs/performance/MultiThreadedPhysics.js.map +0 -1
  211. package/dist/cjs/performance/NetworkPrediction.js.map +0 -1
  212. package/dist/cjs/performance/ObjectPooling.js.map +0 -1
  213. package/dist/cjs/performance/Performance.js.map +0 -1
  214. package/dist/cjs/performance/PerformanceAdvanced.js.map +0 -1
  215. package/dist/cjs/performance/SaveSystem.js +0 -574
  216. package/dist/cjs/performance/SaveSystem.js.map +0 -1
  217. package/dist/cjs/performance/WebGPURenderer.js.map +0 -1
  218. package/dist/cjs/physics/PhysicsAdvanced.js.map +0 -1
  219. package/dist/cjs/physics/PhysicsEngine2D.js.map +0 -1
  220. package/dist/cjs/plugins/PluginSDK.js.map +0 -1
  221. package/dist/cjs/plugins/PluginTestKit.js.map +0 -1
  222. package/dist/cjs/procedural/Procedural.js.map +0 -1
  223. package/dist/cjs/procedural/WorldBuilding.js.map +0 -1
  224. package/dist/cjs/quest/QuestSystem.js.map +0 -1
  225. package/dist/cjs/release/MobileExport.js.map +0 -1
  226. package/dist/cjs/release/Release.js.map +0 -1
  227. package/dist/cjs/rendering/Camera2D.js.map +0 -1
  228. package/dist/cjs/rendering/Renderer2D.js.map +0 -1
  229. package/dist/cjs/rendering/WebGPURenderPipeline.js.map +0 -1
  230. package/dist/cjs/runtime3d/Runtime3D.js.map +0 -1
  231. package/dist/cjs/runtime3d/SceneEditor3D.js.map +0 -1
  232. package/dist/cjs/scene/SceneManager.js.map +0 -1
  233. package/dist/cjs/scripting/GraphToAST.js.map +0 -1
  234. package/dist/cjs/scripting/LanguageExporter.js.map +0 -1
  235. package/dist/cjs/scripting/NodeGraph.js.map +0 -1
  236. package/dist/cjs/scripting/ScriptAST.js.map +0 -1
  237. package/dist/cjs/scripting/VisualScripting2.js.map +0 -1
  238. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +0 -1
  239. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +0 -1
  240. package/dist/cjs/scripting/exporters/LuaExporter.js.map +0 -1
  241. package/dist/cjs/scripting/exporters/PythonExporter.js.map +0 -1
  242. package/dist/cjs/scripting/exporters/RustExporter.js.map +0 -1
  243. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +0 -1
  244. package/dist/cjs/social/Social.js.map +0 -1
  245. package/dist/cjs/systems/LightingSystem.js.map +0 -1
  246. package/dist/cjs/systems/ParticleSystem2.js.map +0 -1
  247. package/dist/cjs/systems/PhysicsDebugSystem.js.map +0 -1
  248. package/dist/cjs/systems/TerrainSystem.js.map +0 -1
  249. package/dist/cjs/templates/ActionTemplates.js.map +0 -1
  250. package/dist/cjs/templates/FightingTemplate.js.map +0 -1
  251. package/dist/cjs/templates/MetroidvaniaTemplate.js.map +0 -1
  252. package/dist/cjs/templates/PartyTemplates.js.map +0 -1
  253. package/dist/cjs/templates/PuzzleTemplates.js.map +0 -1
  254. package/dist/cjs/templates/RPGTemplates.js.map +0 -1
  255. package/dist/cjs/templates/SportsTemplates.js.map +0 -1
  256. package/dist/cjs/templates/StrategyTemplates.js.map +0 -1
  257. package/dist/cjs/templates/SurvivalTemplate.js.map +0 -1
  258. package/dist/cjs/templates/WaveDefense.js.map +0 -1
  259. package/dist/cjs/tilemap/Tilemap.js.map +0 -1
  260. package/dist/cjs/tutorials/TutorialBranching.js.map +0 -1
  261. package/dist/cjs/tutorials/TutorialEngine.js.map +0 -1
  262. package/dist/cjs/tutorials/TutorialOverlay.js.map +0 -1
  263. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js.map +0 -1
  264. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js.map +0 -1
  265. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js.map +0 -1
  266. package/dist/cjs/ui/GameUI.js.map +0 -1
  267. package/dist/cjs/unity-integration/UnityAssetStore.js.map +0 -1
  268. package/dist/cjs/unity-integration/UnityImport.js.map +0 -1
  269. package/dist/cjs/unity-integration/UnityLiveLink.js.map +0 -1
  270. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js.map +0 -1
  271. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js.map +0 -1
  272. package/dist/cjs/unreal-integration/UnrealImport.js.map +0 -1
  273. package/dist/cjs/unreal-integration/UnrealLiveLink.js.map +0 -1
  274. package/dist/cjs/unreal-integration/UnrealMarketplace.js.map +0 -1
  275. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js.map +0 -1
  276. package/dist/cjs/xr/ARVR.js.map +0 -1
  277. package/dist/esm/accessibility/Accessibility.js.map +0 -1
  278. package/dist/esm/ai/AI.js.map +0 -1
  279. package/dist/esm/ai/BehaviorTree.js.map +0 -1
  280. package/dist/esm/ai/StateMachine.js.map +0 -1
  281. package/dist/esm/animation/Animation.js.map +0 -1
  282. package/dist/esm/audio/AudioAdvanced.js.map +0 -1
  283. package/dist/esm/audio/AudioBridge.js.map +0 -1
  284. package/dist/esm/audio/AudioManager.js.map +0 -1
  285. package/dist/esm/build-cloud/BuildOrchestration.js.map +0 -1
  286. package/dist/esm/build-cloud/GodotBuildCloud.js.map +0 -1
  287. package/dist/esm/build-cloud/UnityBuildCloud.js.map +0 -1
  288. package/dist/esm/build-cloud/UnrealBuildCloud.js.map +0 -1
  289. package/dist/esm/core/EventBus.js.map +0 -1
  290. package/dist/esm/core/GameClock.js.map +0 -1
  291. package/dist/esm/core/GameConfig.js.map +0 -1
  292. package/dist/esm/core/GameLoop.js.map +0 -1
  293. package/dist/esm/core/ServiceLocator.js.map +0 -1
  294. package/dist/esm/core/Validation.js.map +0 -1
  295. package/dist/esm/core/math.js.map +0 -1
  296. package/dist/esm/devtools/DevTools.js.map +0 -1
  297. package/dist/esm/devtools/DeveloperExperience.js.map +0 -1
  298. package/dist/esm/devtools/GameplayAnalytics.js.map +0 -1
  299. package/dist/esm/dialogue/DialogueSystem.js.map +0 -1
  300. package/dist/esm/docs/DocGenerator.js.map +0 -1
  301. package/dist/esm/ecs/World.js.map +0 -1
  302. package/dist/esm/editor/AchievementEditor.js.map +0 -1
  303. package/dist/esm/editor/AdvancedEditor.js.map +0 -1
  304. package/dist/esm/editor/AnimationRetargeting.js.map +0 -1
  305. package/dist/esm/editor/AssetBrowser.js.map +0 -1
  306. package/dist/esm/editor/AssetManager.js.map +0 -1
  307. package/dist/esm/editor/ConsolePro.js.map +0 -1
  308. package/dist/esm/editor/CraftingEditor.js.map +0 -1
  309. package/dist/esm/editor/DebugTools.js.map +0 -1
  310. package/dist/esm/editor/DialogueSystem.js.map +0 -1
  311. package/dist/esm/editor/LeaderboardSystem.js.map +0 -1
  312. package/dist/esm/editor/NiceGameEditor.js.map +0 -1
  313. package/dist/esm/editor/PrefabSystem.js.map +0 -1
  314. package/dist/esm/editor/ProfilerPanel.js.map +0 -1
  315. package/dist/esm/editor/QuestEditor.js.map +0 -1
  316. package/dist/esm/editor/ReplaySystem.js.map +0 -1
  317. package/dist/esm/editor/SceneEditor.js.map +0 -1
  318. package/dist/esm/editor/ScreenshotMode.js.map +0 -1
  319. package/dist/esm/editor/ShaderGraph.js.map +0 -1
  320. package/dist/esm/editor/TimelineEditor.js.map +0 -1
  321. package/dist/esm/editor/UndoRedoPro.js.map +0 -1
  322. package/dist/esm/editor/VRARMode.js.map +0 -1
  323. package/dist/esm/engine/NiceGameEngine.js.map +0 -1
  324. package/dist/esm/engine/SaveSystem.js.map +0 -1
  325. package/dist/esm/engine/SaveSystemV2.js +0 -523
  326. package/dist/esm/engine/SaveSystemV2.js.map +0 -1
  327. package/dist/esm/enterprise/Enterprise.js.map +0 -1
  328. package/dist/esm/export/BevyExporter.js.map +0 -1
  329. package/dist/esm/export/CocosExporter.js.map +0 -1
  330. package/dist/esm/export/Construct3Exporter.js.map +0 -1
  331. package/dist/esm/export/DefoldExporter.js.map +0 -1
  332. package/dist/esm/export/GDevelopExporter.js.map +0 -1
  333. package/dist/esm/export/GameMakerExporter.js.map +0 -1
  334. package/dist/esm/export/GodotExporter.js.map +0 -1
  335. package/dist/esm/export/MinecraftBedrockExporter.js.map +0 -1
  336. package/dist/esm/export/MonoGameExporter.js.map +0 -1
  337. package/dist/esm/export/Pico8Exporter.js.map +0 -1
  338. package/dist/esm/export/PlatformExporter.js.map +0 -1
  339. package/dist/esm/export/RPGMakerExporter.js.map +0 -1
  340. package/dist/esm/export/RobloxExporter.js.map +0 -1
  341. package/dist/esm/export/Solar2DExporter.js.map +0 -1
  342. package/dist/esm/export/ThreeJSExporter.js.map +0 -1
  343. package/dist/esm/export/Tic80Exporter.js.map +0 -1
  344. package/dist/esm/export/UnityExporter.js.map +0 -1
  345. package/dist/esm/export/UnrealExporter.js.map +0 -1
  346. package/dist/esm/export/WebExporter.js.map +0 -1
  347. package/dist/esm/export/index.js.map +0 -1
  348. package/dist/esm/godot-integration/GodotAssetLibrary.js.map +0 -1
  349. package/dist/esm/godot-integration/GodotImport.js.map +0 -1
  350. package/dist/esm/godot-integration/GodotLiveLink.js.map +0 -1
  351. package/dist/esm/godot-integration/components/GodotProjectBrowser.js.map +0 -1
  352. package/dist/esm/i18n/I18n.js.map +0 -1
  353. package/dist/esm/i18n/useTranslation.js.map +0 -1
  354. package/dist/esm/import/AsepriteImporter.js.map +0 -1
  355. package/dist/esm/import/DragonBonesImporter.js.map +0 -1
  356. package/dist/esm/import/GameMakerImporter.js.map +0 -1
  357. package/dist/esm/import/GodotSceneImporter.js.map +0 -1
  358. package/dist/esm/import/LDtkImporter.js.map +0 -1
  359. package/dist/esm/import/Live2DImporter.js.map +0 -1
  360. package/dist/esm/import/NdgFormat.js.map +0 -1
  361. package/dist/esm/import/OgmoImporter.js.map +0 -1
  362. package/dist/esm/import/RPGMakerImporter.js.map +0 -1
  363. package/dist/esm/import/SceneImporter.js.map +0 -1
  364. package/dist/esm/import/SpineImporter.js.map +0 -1
  365. package/dist/esm/import/SpriterImporter.js.map +0 -1
  366. package/dist/esm/import/TiledMapImporter.js.map +0 -1
  367. package/dist/esm/import/UnitySceneImporter.js.map +0 -1
  368. package/dist/esm/import/index.js.map +0 -1
  369. package/dist/esm/index.js.map +0 -1
  370. package/dist/esm/input/GamepadNavigation.js.map +0 -1
  371. package/dist/esm/input/InputManager.js.map +0 -1
  372. package/dist/esm/input/useGamepads.js.map +0 -1
  373. package/dist/esm/integration/IconSprite.js.map +0 -1
  374. package/dist/esm/inventory/InventorySystem.js.map +0 -1
  375. package/dist/esm/kids/KidMode.js.map +0 -1
  376. package/dist/esm/kids/KidTools.js.map +0 -1
  377. package/dist/esm/monetization/Monetization.js.map +0 -1
  378. package/dist/esm/multiplayer/LocalMultiplayer.js.map +0 -1
  379. package/dist/esm/multiplayer/MiniGameTypes.js.map +0 -1
  380. package/dist/esm/native-engine/AssetPipeline.js.map +0 -1
  381. package/dist/esm/native-engine/AudioEngine.js.map +0 -1
  382. package/dist/esm/native-engine/InputSystem.js.map +0 -1
  383. package/dist/esm/native-engine/NetworkingSystem.js.map +0 -1
  384. package/dist/esm/native-engine/PhysicsEngine.js.map +0 -1
  385. package/dist/esm/native-engine/RenderingEngine.js.map +0 -1
  386. package/dist/esm/native-engine/SceneGraph.js.map +0 -1
  387. package/dist/esm/network/MultiplayerTransport.js.map +0 -1
  388. package/dist/esm/network/Networking.js.map +0 -1
  389. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +0 -1
  390. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +0 -1
  391. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +0 -1
  392. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +0 -1
  393. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +0 -1
  394. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +0 -1
  395. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +0 -1
  396. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +0 -1
  397. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +0 -1
  398. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +0 -1
  399. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +0 -1
  400. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +0 -1
  401. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +0 -1
  402. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +0 -1
  403. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +0 -1
  404. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +0 -1
  405. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +0 -1
  406. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +0 -1
  407. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +0 -1
  408. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +0 -1
  409. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +0 -1
  410. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +0 -1
  411. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +0 -1
  412. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +0 -1
  413. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +0 -1
  414. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js.map +0 -1
  415. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +0 -1
  416. package/dist/esm/pathfinding/Pathfinding.js.map +0 -1
  417. package/dist/esm/performance/AssetStreaming.js.map +0 -1
  418. package/dist/esm/performance/BenchmarkSuite.js.map +0 -1
  419. package/dist/esm/performance/DeltaCompression.js.map +0 -1
  420. package/dist/esm/performance/DeterministicPhysics.js.map +0 -1
  421. package/dist/esm/performance/ECSOptimization.js.map +0 -1
  422. package/dist/esm/performance/GameSaveSystem.js.map +0 -1
  423. package/dist/esm/performance/HotReload.js.map +0 -1
  424. package/dist/esm/performance/InputRecording.js.map +0 -1
  425. package/dist/esm/performance/InterestManagement.js.map +0 -1
  426. package/dist/esm/performance/LocalizationRuntime.js.map +0 -1
  427. package/dist/esm/performance/MemoryManagement.js.map +0 -1
  428. package/dist/esm/performance/ModSupport.js.map +0 -1
  429. package/dist/esm/performance/MultiThreadedPhysics.js.map +0 -1
  430. package/dist/esm/performance/NetworkPrediction.js.map +0 -1
  431. package/dist/esm/performance/ObjectPooling.js.map +0 -1
  432. package/dist/esm/performance/Performance.js.map +0 -1
  433. package/dist/esm/performance/PerformanceAdvanced.js.map +0 -1
  434. package/dist/esm/performance/SaveSystem.js +0 -567
  435. package/dist/esm/performance/SaveSystem.js.map +0 -1
  436. package/dist/esm/performance/WebGPURenderer.js.map +0 -1
  437. package/dist/esm/physics/PhysicsAdvanced.js.map +0 -1
  438. package/dist/esm/physics/PhysicsEngine2D.js.map +0 -1
  439. package/dist/esm/plugins/PluginSDK.js.map +0 -1
  440. package/dist/esm/plugins/PluginTestKit.js.map +0 -1
  441. package/dist/esm/procedural/Procedural.js.map +0 -1
  442. package/dist/esm/procedural/WorldBuilding.js.map +0 -1
  443. package/dist/esm/quest/QuestSystem.js.map +0 -1
  444. package/dist/esm/release/MobileExport.js.map +0 -1
  445. package/dist/esm/release/Release.js.map +0 -1
  446. package/dist/esm/rendering/Camera2D.js.map +0 -1
  447. package/dist/esm/rendering/Renderer2D.js.map +0 -1
  448. package/dist/esm/rendering/WebGPURenderPipeline.js.map +0 -1
  449. package/dist/esm/runtime3d/Runtime3D.js.map +0 -1
  450. package/dist/esm/runtime3d/SceneEditor3D.js.map +0 -1
  451. package/dist/esm/scene/SceneManager.js.map +0 -1
  452. package/dist/esm/scripting/GraphToAST.js.map +0 -1
  453. package/dist/esm/scripting/LanguageExporter.js.map +0 -1
  454. package/dist/esm/scripting/NodeGraph.js.map +0 -1
  455. package/dist/esm/scripting/ScriptAST.js.map +0 -1
  456. package/dist/esm/scripting/VisualScripting2.js.map +0 -1
  457. package/dist/esm/scripting/exporters/CSharpExporter.js.map +0 -1
  458. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +0 -1
  459. package/dist/esm/scripting/exporters/LuaExporter.js.map +0 -1
  460. package/dist/esm/scripting/exporters/PythonExporter.js.map +0 -1
  461. package/dist/esm/scripting/exporters/RustExporter.js.map +0 -1
  462. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +0 -1
  463. package/dist/esm/social/Social.js.map +0 -1
  464. package/dist/esm/systems/LightingSystem.js.map +0 -1
  465. package/dist/esm/systems/ParticleSystem2.js.map +0 -1
  466. package/dist/esm/systems/PhysicsDebugSystem.js.map +0 -1
  467. package/dist/esm/systems/TerrainSystem.js.map +0 -1
  468. package/dist/esm/templates/ActionTemplates.js.map +0 -1
  469. package/dist/esm/templates/FightingTemplate.js.map +0 -1
  470. package/dist/esm/templates/MetroidvaniaTemplate.js.map +0 -1
  471. package/dist/esm/templates/PartyTemplates.js.map +0 -1
  472. package/dist/esm/templates/PuzzleTemplates.js.map +0 -1
  473. package/dist/esm/templates/RPGTemplates.js.map +0 -1
  474. package/dist/esm/templates/SportsTemplates.js.map +0 -1
  475. package/dist/esm/templates/StrategyTemplates.js.map +0 -1
  476. package/dist/esm/templates/SurvivalTemplate.js.map +0 -1
  477. package/dist/esm/templates/WaveDefense.js.map +0 -1
  478. package/dist/esm/tilemap/Tilemap.js.map +0 -1
  479. package/dist/esm/tutorials/TutorialBranching.js.map +0 -1
  480. package/dist/esm/tutorials/TutorialEngine.js.map +0 -1
  481. package/dist/esm/tutorials/TutorialOverlay.js.map +0 -1
  482. package/dist/esm/tutorials/content/Tutorials_T05_T08.js.map +0 -1
  483. package/dist/esm/tutorials/content/Tutorials_T09_T11.js.map +0 -1
  484. package/dist/esm/tutorials/content/Tutorials_T12_T15.js.map +0 -1
  485. package/dist/esm/ui/GameUI.js.map +0 -1
  486. package/dist/esm/unity-integration/UnityAssetStore.js.map +0 -1
  487. package/dist/esm/unity-integration/UnityImport.js.map +0 -1
  488. package/dist/esm/unity-integration/UnityLiveLink.js.map +0 -1
  489. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js.map +0 -1
  490. package/dist/esm/unity-integration/components/UnityProjectBrowser.js.map +0 -1
  491. package/dist/esm/unreal-integration/UnrealImport.js.map +0 -1
  492. package/dist/esm/unreal-integration/UnrealLiveLink.js.map +0 -1
  493. package/dist/esm/unreal-integration/UnrealMarketplace.js.map +0 -1
  494. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js.map +0 -1
  495. package/dist/esm/xr/ARVR.js.map +0 -1
  496. package/dist/types/engine/SaveSystemV2.d.ts +0 -155
@@ -36,12 +36,12 @@ const TUTORIAL_RPG = {
36
36
  id: 'rpg-intro',
37
37
  type: 'text',
38
38
  title: {
39
- en: 'Build Your Own RPG! ⚔️',
40
- pl: 'Zbuduj swoje RPG! ⚔️',
41
- de: 'Baue dein eigenes RPG! ⚔️',
39
+ en: 'Build Your Own RPG!',
40
+ pl: 'Zbuduj swoje RPG!',
41
+ de: 'Baue dein eigenes RPG!',
42
42
  },
43
43
  content: {
44
- en: 'In this tutorial you\'ll build a classic top-down RPG!\n\n• Character stats (HP, MP, ATK, DEF, SPD)\n• XP and leveling system\n• Inventory and items\n• NPCs with dialogue\n• Turn-based battle system\n• Tilemap world with warps\n\nReady for an adventure?',
44
+ en: "In this tutorial you'll build a classic top-down RPG!\n\n• Character stats (HP, MP, ATK, DEF, SPD)\n• XP and leveling system\n• Inventory and items\n• NPCs with dialogue\n• Turn-based battle system\n• Tilemap world with warps\n\nReady for an adventure?",
45
45
  pl: 'W tym tutorialu zbudujesz klasyczne RPG z widokiem z góry!\n\n• Statystyki postaci (HP, MP, ATK, DEF, SPD)\n• System XP i poziomów\n• Ekwipunek i przedmioty\n• NPC z dialogami\n• System walki turowej\n• Świat z tilemapy z przejściami\n\nGotowy na przygodę?',
46
46
  de: 'In diesem Tutorial baust du ein klassisches Top-Down-RPG!\n\n• Charakterwerte (HP, MP, ATK, DEF, SPD)\n• XP- und Levelsystem\n• Inventar und Items\n• NPCs mit Dialogen\n• Rundenbasiertes Kampfsystem\n• Tilemap-Welt mit Warps\n\nBereit für ein Abenteuer?',
47
47
  },
@@ -58,7 +58,7 @@ const TUTORIAL_RPG = {
58
58
  de: 'Charakterwerte & Leveling',
59
59
  },
60
60
  content: {
61
- en: 'Define your hero\'s stats. Use the RPG template config for stat growth curves and XP requirements.',
61
+ en: "Define your hero's stats. Use the RPG template config for stat growth curves and XP requirements.",
62
62
  pl: 'Zdefiniuj statystyki bohatera. Użyj konfiguracji szablonu RPG dla krzywych wzrostu statystyk i wymogów XP.',
63
63
  de: 'Definiere die Werte deines Helden. Verwende die RPG-Template-Konfiguration für Wachstumskurven und XP-Anforderungen.',
64
64
  },
@@ -112,7 +112,7 @@ const TUTORIAL_RPG = {
112
112
  pl: 'Stwórz NPC z drzewami dialogów. Gracz może wybierać odpowiedzi, które rozgałęziają rozmowę.',
113
113
  de: 'Erstelle NPCs mit Dialogbäumen. Spieler können Antworten wählen, die das Gespräch verzweigen.',
114
114
  },
115
- codeTemplate: "// Dialogue system\ninterface DialogNode {\n id: string;\n text: string;\n",
115
+ codeTemplate: '// Dialogue system\ninterface DialogNode {\n id: string;\n text: string;\n',
116
116
  codeSolution: "interface DialogNode {\n id: string;\n text: string;\n speaker: string;\n choices?: { text: string; next: string; condition?: string }[];\n next?: string; // auto-advance to next node\n}\n\nconst innkeeperDialog: DialogNode[] = [\n {\n id: 'greet',\n speaker: 'Innkeeper',\n text: 'Welcome, traveler! Would you like to rest?',\n choices: [\n { text: 'Yes, I need rest. (10 gold)', next: 'rest' },\n { text: 'No thanks.', next: 'bye' },\n { text: 'Any rumors?', next: 'rumors' },\n ],\n },\n {\n id: 'rest',\n speaker: 'Innkeeper',\n text: 'Sleep well! *HP and MP fully restored*',\n next: 'greet',\n },\n {\n id: 'rumors',\n speaker: 'Innkeeper',\n text: 'I heard monsters in the eastern cave grew stronger...',\n next: 'greet',\n },\n {\n id: 'bye',\n speaker: 'Innkeeper',\n text: 'Safe travels!',\n },\n];",
117
117
  codeValidation: {
118
118
  containsAll: ['DialogNode', 'speaker', 'choices', 'next'],
@@ -163,7 +163,7 @@ const TUTORIAL_RPG = {
163
163
  de: 'Erstelle mehrere Räume verbunden durch Warps. Verwende Tilemaps für jeden Bereich (Stadt, Wald, Höhle, Burg).',
164
164
  },
165
165
  requiredAction: 'create-world-map',
166
- codeTemplate: "// Define world areas\nconst areas = [\n",
166
+ codeTemplate: '// Define world areas\nconst areas = [\n',
167
167
  codeSolution: "const areas = [\n { id: 'town', name: 'Starter Town', tilemap: 'town-map', npcs: ['innkeeper', 'shopkeeper'] },\n { id: 'forest', name: 'Dark Forest', tilemap: 'forest-map', enemies: ['wolf', 'slime'] },\n { id: 'cave', name: 'Crystal Cave', tilemap: 'cave-map', enemies: ['bat', 'golem'] },\n { id: 'castle', name: 'Demon Castle', tilemap: 'castle-map', enemies: ['skeleton', 'demon-lord'] },\n];\n\nconst warps = [\n { from: 'town', to: 'forest', x: 19, y: 7 },\n { from: 'forest', to: 'cave', x: 15, y: 2 },\n { from: 'forest', to: 'town', x: 0, y: 7 },\n { from: 'cave', to: 'castle', x: 10, y: 0 },\n];",
168
168
  codeValidation: {
169
169
  containsAll: ['areas', 'warps', 'tilemap'],
@@ -174,9 +174,9 @@ const TUTORIAL_RPG = {
174
174
  id: 'rpg-quiz',
175
175
  type: 'quiz',
176
176
  title: {
177
- en: 'RPG Quiz 🧙',
178
- pl: 'Quiz RPG 🧙',
179
- de: 'RPG-Quiz 🧙',
177
+ en: 'RPG Quiz',
178
+ pl: 'Quiz RPG',
179
+ de: 'RPG-Quiz',
180
180
  },
181
181
  content: {
182
182
  en: 'In a turn-based RPG, what stat typically determines the order of actions?',
@@ -196,12 +196,12 @@ const TUTORIAL_RPG = {
196
196
  id: 'rpg-complete',
197
197
  type: 'checkpoint',
198
198
  title: {
199
- en: 'RPG Complete! 🏰',
200
- pl: 'RPG gotowe! 🏰',
201
- de: 'RPG fertig! 🏰',
199
+ en: 'RPG Complete!',
200
+ pl: 'RPG gotowe!',
201
+ de: 'RPG fertig!',
202
202
  },
203
203
  content: {
204
- en: 'Amazing! You\'ve built a full RPG with:\n• Character stats & leveling\n• Inventory with rarity system\n• NPCs with branching dialogue\n• Turn-based combat\n• Multi-area world map with warps\n\nChallenge: Add a party system with 4 heroes!',
204
+ en: "Amazing! You've built a full RPG with:\n• Character stats & leveling\n• Inventory with rarity system\n• NPCs with branching dialogue\n• Turn-based combat\n• Multi-area world map with warps\n\nChallenge: Add a party system with 4 heroes!",
205
205
  pl: 'Niesamowite! Zbudowałeś pełne RPG z:\n• Statystyki i poziomy postaci\n• Ekwipunek z systemem rzadkości\n• NPC z rozgałęzionymi dialogami\n• Walki turowe\n• Mapa świata z wieloma obszarami\n\nWyzwanie: Dodaj system drużyny z 4 bohaterami!',
206
206
  de: 'Fantastisch! Du hast ein vollständiges RPG gebaut mit:\n• Charakterwerte & Leveling\n• Inventar mit Seltenheitssystem\n• NPCs mit verzweigten Dialogen\n• Rundenbasierter Kampf\n• Weltkarte mit mehreren Bereichen\n\nHerausforderung: Füge ein Gruppensystem mit 4 Helden hinzu!',
207
207
  },
@@ -236,12 +236,12 @@ const TUTORIAL_TOWER_DEFENSE = {
236
236
  id: 'td-intro',
237
237
  type: 'text',
238
238
  title: {
239
- en: 'Build Tower Defense! 🗼',
240
- pl: 'Zbuduj Tower Defense! 🗼',
241
- de: 'Baue Tower Defense! 🗼',
239
+ en: 'Build Tower Defense!',
240
+ pl: 'Zbuduj Tower Defense!',
241
+ de: 'Baue Tower Defense!',
242
242
  },
243
243
  content: {
244
- en: 'In this tutorial you\'ll build a tower defense game!\n\n• Map with path for enemies\n• Tower types (arrow, cannon, ice, laser)\n• Enemy waves with scaling difficulty\n• Tower targeting modes\n• Upgrade system\n• Gold & economy\n\nDefend your base!',
244
+ en: "In this tutorial you'll build a tower defense game!\n\n• Map with path for enemies\n• Tower types (arrow, cannon, ice, laser)\n• Enemy waves with scaling difficulty\n• Tower targeting modes\n• Upgrade system\n• Gold & economy\n\nDefend your base!",
245
245
  pl: 'W tym tutorialu zbudujesz grę tower defense!\n\n• Mapa ze ścieżką dla wrogów\n• Typy wież (strzały, armata, lód, laser)\n• Fale wrogów ze skalującą się trudnością\n• Tryby celowania wież\n• System ulepszeń\n• Złoto i ekonomia\n\nBroń swojej bazy!',
246
246
  de: 'In diesem Tutorial baust du ein Tower-Defense-Spiel!\n\n• Karte mit Feindpfad\n• Turmtypen (Pfeil, Kanone, Eis, Laser)\n• Feindwellen mit steigender Schwierigkeit\n• Turm-Zielmodi\n• Upgrade-System\n• Gold & Wirtschaft\n\nVerteidige deine Basis!',
247
247
  },
@@ -288,7 +288,7 @@ const TUTORIAL_TOWER_DEFENSE = {
288
288
  de: 'Feinde folgen einem vordefinierten Pfad vom Start zum Ende. Definiere Wegpunkte, zwischen denen Feinde laufen.',
289
289
  },
290
290
  codeTemplate: '// Enemy path waypoints\nconst path = [\n',
291
- codeSolution: "const path = [\n { x: 0, y: 200 }, // start (left edge)\n { x: 200, y: 200 }, // turn down\n { x: 200, y: 400 },\n { x: 400, y: 400 }, // turn up\n { x: 400, y: 100 },\n { x: 600, y: 100 }, // final stretch\n { x: 600, y: 300 },\n { x: 800, y: 300 }, // end (base)\n];\n\nfunction moveAlongPath(enemy: any, dt: number) {\n const target = path[enemy.waypointIndex];\n const dx = target.x - enemy.x;\n const dy = target.y - enemy.y;\n const dist = Math.sqrt(dx * dx + dy * dy);\n\n if (dist < 5) {\n enemy.waypointIndex++;\n if (enemy.waypointIndex >= path.length) {\n // Enemy reached the base!\n enemy.reachedEnd = true;\n }\n } else {\n enemy.x += (dx / dist) * enemy.speed * dt;\n enemy.y += (dy / dist) * enemy.speed * dt;\n }\n}",
291
+ codeSolution: 'const path = [\n { x: 0, y: 200 }, // start (left edge)\n { x: 200, y: 200 }, // turn down\n { x: 200, y: 400 },\n { x: 400, y: 400 }, // turn up\n { x: 400, y: 100 },\n { x: 600, y: 100 }, // final stretch\n { x: 600, y: 300 },\n { x: 800, y: 300 }, // end (base)\n];\n\nfunction moveAlongPath(enemy: any, dt: number) {\n const target = path[enemy.waypointIndex];\n const dx = target.x - enemy.x;\n const dy = target.y - enemy.y;\n const dist = Math.sqrt(dx * dx + dy * dy);\n\n if (dist < 5) {\n enemy.waypointIndex++;\n if (enemy.waypointIndex >= path.length) {\n // Enemy reached the base!\n enemy.reachedEnd = true;\n }\n } else {\n enemy.x += (dx / dist) * enemy.speed * dt;\n enemy.y += (dy / dist) * enemy.speed * dt;\n }\n}',
292
292
  codeValidation: {
293
293
  containsAll: ['path', 'waypointIndex', 'moveAlongPath'],
294
294
  },
@@ -363,7 +363,7 @@ const TUTORIAL_TOWER_DEFENSE = {
363
363
  de: 'Türme können aufgewertet werden für mehr Schaden und Reichweite. Verdiene Gold durch Feind-Kills. Verkaufe Türme für Rückerstattung.',
364
364
  },
365
365
  codeTemplate: '// Upgrade system\nlet gold = 200;\n',
366
- codeSolution: "let gold = 200;\n\nfunction upgradeTower(tower: any): boolean {\n const upgradeCost = Math.floor(tower.cost * 0.75 * tower.level);\n if (gold < upgradeCost) return false;\n\n gold -= upgradeCost;\n tower.level++;\n tower.damage = Math.floor(tower.damage * 1.3);\n tower.range += 10;\n tower.fireRate *= 1.1;\n return true;\n}\n\nfunction sellTower(tower: any): number {\n const refund = Math.floor(tower.cost * 0.6);\n gold += refund;\n return refund;\n}\n\nfunction onEnemyKilled(enemy: any) {\n gold += enemy.goldReward;\n}",
366
+ codeSolution: 'let gold = 200;\n\nfunction upgradeTower(tower: any): boolean {\n const upgradeCost = Math.floor(tower.cost * 0.75 * tower.level);\n if (gold < upgradeCost) return false;\n\n gold -= upgradeCost;\n tower.level++;\n tower.damage = Math.floor(tower.damage * 1.3);\n tower.range += 10;\n tower.fireRate *= 1.1;\n return true;\n}\n\nfunction sellTower(tower: any): number {\n const refund = Math.floor(tower.cost * 0.6);\n gold += refund;\n return refund;\n}\n\nfunction onEnemyKilled(enemy: any) {\n gold += enemy.goldReward;\n}',
367
367
  codeValidation: {
368
368
  containsAll: ['upgradeTower', 'sellTower', 'gold'],
369
369
  },
@@ -378,12 +378,12 @@ const TUTORIAL_TOWER_DEFENSE = {
378
378
  id: 'td-complete',
379
379
  type: 'checkpoint',
380
380
  title: {
381
- en: 'Tower Defense Complete! 🏆',
382
- pl: 'Tower Defense gotowy! 🏆',
383
- de: 'Tower Defense fertig! 🏆',
381
+ en: 'Tower Defense Complete!',
382
+ pl: 'Tower Defense gotowy!',
383
+ de: 'Tower Defense fertig!',
384
384
  },
385
385
  content: {
386
- en: 'You\'ve built a full tower defense game!\n• 4 tower types with different targeting\n• Enemy pathfinding along waypoints\n• Escalating wave system\n• Upgrade & sell mechanics\n• Gold economy\n\nChallenge: Add flying enemies that ignore the path!',
386
+ en: "You've built a full tower defense game!\n• 4 tower types with different targeting\n• Enemy pathfinding along waypoints\n• Escalating wave system\n• Upgrade & sell mechanics\n• Gold economy\n\nChallenge: Add flying enemies that ignore the path!",
387
387
  pl: 'Zbudowałeś kompletną grę tower defense!\n• 4 typy wież z różnym celowaniem\n• Pathfinding wrogów po waypointach\n• Eskalujący system fal\n• Mechaniki ulepszania i sprzedaży\n• Ekonomia złota\n\nWyzwanie: Dodaj latających wrogów ignorujących ścieżkę!',
388
388
  de: 'Du hast ein komplettes Tower-Defense-Spiel gebaut!\n• 4 Turmtypen mit verschiedenem Zielen\n• Feind-Pathfinding entlang Wegpunkten\n• Eskalierendes Wellensystem\n• Upgrade- & Verkaufsmechaniken\n• Gold-Wirtschaft\n\nHerausforderung: Füge fliegende Feinde hinzu, die den Pfad ignorieren!',
389
389
  },
@@ -418,12 +418,12 @@ const TUTORIAL_3D_GAME = {
418
418
  id: '3d-intro',
419
419
  type: 'text',
420
420
  title: {
421
- en: 'Welcome to 3D! 🎮',
422
- pl: 'Witaj w 3D! 🎮',
423
- de: 'Willkommen in 3D! 🎮',
421
+ en: 'Welcome to 3D!',
422
+ pl: 'Witaj w 3D!',
423
+ de: 'Willkommen in 3D!',
424
424
  },
425
425
  content: {
426
- en: 'In this tutorial you\'ll enter the third dimension!\n\n• Set up a 3D world (World3D)\n• Add meshes (cube, sphere, plane)\n• Lighting (directional, point, spot)\n• Camera controllers (FPS, orbit)\n• 3D physics (rigid bodies, colliders)\n• Character controller (walking, jumping)\n\nLet\'s go 3D!',
426
+ en: "In this tutorial you'll enter the third dimension!\n\n• Set up a 3D world (World3D)\n• Add meshes (cube, sphere, plane)\n• Lighting (directional, point, spot)\n• Camera controllers (FPS, orbit)\n• 3D physics (rigid bodies, colliders)\n• Character controller (walking, jumping)\n\nLet's go 3D!",
427
427
  pl: 'W tym tutorialu wejdziesz w trzeci wymiar!\n\n• Skonfiguruj świat 3D (World3D)\n• Dodaj meshe (sześcian, sfera, płaszczyzna)\n• Oświetlenie (kierunkowe, punktowe, spot)\n• Kontrolery kamery (FPS, orbita)\n• Fizyka 3D (rigid body, kolidery)\n• Kontroler postaci (chodzenie, skakanie)\n\nWejdźmy w 3D!',
428
428
  de: 'In diesem Tutorial betrittst du die dritte Dimension!\n\n• 3D-Welt einrichten (World3D)\n• Meshes hinzufügen (Würfel, Kugel, Ebene)\n• Beleuchtung (Richtung, Punkt, Spot)\n• Kamera-Controller (FPS, Orbit)\n• 3D-Physik (Starrkörper, Kollider)\n• Character-Controller (Laufen, Springen)\n\nAb in die 3. Dimension!',
429
429
  },
@@ -585,12 +585,12 @@ const TUTORIAL_3D_GAME = {
585
585
  id: '3d-complete',
586
586
  type: 'checkpoint',
587
587
  title: {
588
- en: '3D Game Complete! 🌟',
589
- pl: 'Gra 3D gotowa! 🌟',
590
- de: '3D-Spiel fertig! 🌟',
588
+ en: '3D Game Complete!',
589
+ pl: 'Gra 3D gotowa!',
590
+ de: '3D-Spiel fertig!',
591
591
  },
592
592
  content: {
593
- en: 'You\'ve built your first 3D game!\n• World3D scene with multiple objects\n• Primitive meshes (cube, sphere, plane)\n• Directional and point lighting\n• Orbit camera controller\n• 3D physics with rigid bodies\n• Character controller with jumping\n\nChallenge: Add a skybox and third-person camera!',
593
+ en: "You've built your first 3D game!\n• World3D scene with multiple objects\n• Primitive meshes (cube, sphere, plane)\n• Directional and point lighting\n• Orbit camera controller\n• 3D physics with rigid bodies\n• Character controller with jumping\n\nChallenge: Add a skybox and third-person camera!",
594
594
  pl: 'Zbudowałeś swoją pierwszą grę 3D!\n• Scena World3D z wieloma obiektami\n• Prymitywne meshe (sześcian, sfera, płaszczyzna)\n• Oświetlenie kierunkowe i punktowe\n• Kontroler kamery orbitalnej\n• Fizyka 3D z ciałami sztywnymi\n• Kontroler postaci ze skakaniem\n\nWyzwanie: Dodaj skybox i kamerę trzeciej osoby!',
595
595
  de: 'Du hast dein erstes 3D-Spiel gebaut!\n• World3D-Szene mit mehreren Objekten\n• Primitive Meshes (Würfel, Kugel, Ebene)\n• Richtungs- und Punktbeleuchtung\n• Orbit-Kamera-Controller\n• 3D-Physik mit Starrkörpern\n• Character-Controller mit Springen\n\nHerausforderung: Füge eine Skybox und Third-Person-Kamera hinzu!',
596
596
  },
@@ -625,14 +625,14 @@ const TUTORIAL_PUBLISHING = {
625
625
  id: 'pub-intro',
626
626
  type: 'text',
627
627
  title: {
628
- en: 'Publish Your Game! 🚀',
629
- pl: 'Opublikuj swoją grę! 🚀',
630
- de: 'Veröffentliche dein Spiel! 🚀',
628
+ en: 'Publish Your Game!',
629
+ pl: 'Opublikuj swoją grę!',
630
+ de: 'Veröffentliche dein Spiel!',
631
631
  },
632
632
  content: {
633
- en: 'Your game is ready — now let\'s share it with the world!\n\n• Feature detection (check browser support)\n• Build optimization (minify, tree-shake)\n• PWA export (installable web app)\n• Electron export (Windows/Mac/Linux)\n• Capacitor export (iOS/Android)\n• Performance benchmarking\n\nLet\'s deploy!',
633
+ en: "Your game is ready — now let's share it with the world!\n\n• Feature detection (check browser support)\n• Build optimization (minify, tree-shake)\n• PWA export (installable web app)\n• Electron export (Windows/Mac/Linux)\n• Capacitor export (iOS/Android)\n• Performance benchmarking\n\nLet's deploy!",
634
634
  pl: 'Twoja gra jest gotowa — czas podzielić się nią ze światem!\n\n• Wykrywanie funkcji (sprawdź wsparcie przeglądarki)\n• Optymalizacja buildu (minifikacja, tree-shaking)\n• Eksport PWA (instalowalna web app)\n• Eksport Electron (Windows/Mac/Linux)\n• Eksport Capacitor (iOS/Android)\n• Benchmarkowanie wydajności\n\nWdrażamy!',
635
- de: 'Dein Spiel ist bereit — teile es mit der Welt!\n\n• Feature-Erkennung (Browser-Support)\n• Build-Optimierung (Minifizierung, Tree-Shaking)\n• PWA-Export (installierbare Web-App)\n• Electron-Export (Windows/Mac/Linux)\n• Capacitor-Export (iOS/Android)\n• Performance-Benchmarking\n\nLos geht\'s!',
635
+ de: "Dein Spiel ist bereit — teile es mit der Welt!\n\n• Feature-Erkennung (Browser-Support)\n• Build-Optimierung (Minifizierung, Tree-Shaking)\n• PWA-Export (installierbare Web-App)\n• Electron-Export (Windows/Mac/Linux)\n• Capacitor-Export (iOS/Android)\n• Performance-Benchmarking\n\nLos geht's!",
636
636
  },
637
637
  skippable: true,
638
638
  tooltipPosition: 'center',
@@ -732,9 +732,9 @@ const TUTORIAL_PUBLISHING = {
732
732
  id: 'pub-quiz',
733
733
  type: 'quiz',
734
734
  title: {
735
- en: 'Publishing Quiz 📦',
736
- pl: 'Quiz o publikacji 📦',
737
- de: 'Veröffentlichungs-Quiz 📦',
735
+ en: 'Publishing Quiz',
736
+ pl: 'Quiz o publikacji',
737
+ de: 'Veröffentlichungs-Quiz',
738
738
  },
739
739
  content: {
740
740
  en: 'What is a PWA (Progressive Web App)?',
@@ -742,10 +742,38 @@ const TUTORIAL_PUBLISHING = {
742
742
  de: 'Was ist eine PWA (Progressive Web App)?',
743
743
  },
744
744
  quizOptions: [
745
- { id: 'a', text: { en: 'A native mobile app', pl: 'Natywna aplikacja mobilna', de: 'Eine native mobile App' } },
746
- { id: 'b', text: { en: 'A web app that can be installed and works offline', pl: 'Web app instalowalna i działająca offline', de: 'Eine Web-App die installierbar ist und offline funktioniert' } },
747
- { id: 'c', text: { en: 'A special browser plugin', pl: 'Specjalna wtyczka przeglądarki', de: 'Ein spezielles Browser-Plugin' } },
748
- { id: 'd', text: { en: 'A server-side application', pl: 'Aplikacja serwerowa', de: 'Eine serverseitige Anwendung' } },
745
+ {
746
+ id: 'a',
747
+ text: {
748
+ en: 'A native mobile app',
749
+ pl: 'Natywna aplikacja mobilna',
750
+ de: 'Eine native mobile App',
751
+ },
752
+ },
753
+ {
754
+ id: 'b',
755
+ text: {
756
+ en: 'A web app that can be installed and works offline',
757
+ pl: 'Web app instalowalna i działająca offline',
758
+ de: 'Eine Web-App die installierbar ist und offline funktioniert',
759
+ },
760
+ },
761
+ {
762
+ id: 'c',
763
+ text: {
764
+ en: 'A special browser plugin',
765
+ pl: 'Specjalna wtyczka przeglądarki',
766
+ de: 'Ein spezielles Browser-Plugin',
767
+ },
768
+ },
769
+ {
770
+ id: 'd',
771
+ text: {
772
+ en: 'A server-side application',
773
+ pl: 'Aplikacja serwerowa',
774
+ de: 'Eine serverseitige Anwendung',
775
+ },
776
+ },
749
777
  ],
750
778
  quizCorrectId: 'b',
751
779
  },
@@ -754,14 +782,14 @@ const TUTORIAL_PUBLISHING = {
754
782
  id: 'pub-complete',
755
783
  type: 'checkpoint',
756
784
  title: {
757
- en: 'Publication Complete! 🎊',
758
- pl: 'Publikacja gotowa! 🎊',
759
- de: 'Veröffentlichung fertig! 🎊',
785
+ en: 'Publication Complete!',
786
+ pl: 'Publikacja gotowa!',
787
+ de: 'Veröffentlichung fertig!',
760
788
  },
761
789
  content: {
762
- en: 'Congratulations! You now know how to:\n• Check browser feature support\n• Configure optimized builds\n• Export as PWA, Electron, or Capacitor\n• Run performance benchmarks\n• Deploy to web, desktop, and mobile\n\nYour game is ready for the world! 🌍',
763
- pl: 'Gratulacje! Teraz wiesz jak:\n• Sprawdzić wsparcie funkcji przeglądarki\n• Konfigurować zoptymalizowane buildy\n• Eksportować jako PWA, Electron lub Capacitor\n• Uruchamiać benchmarki wydajności\n• Wdrażać na web, desktop i mobile\n\nTwoja gra jest gotowa na świat! 🌍',
764
- de: 'Herzlichen Glückwunsch! Du weißt jetzt wie man:\n• Browser-Feature-Support prüft\n• Optimierte Builds konfiguriert\n• Als PWA, Electron oder Capacitor exportiert\n• Performance-Benchmarks durchführt\n• Auf Web, Desktop und Mobile deployt\n\nDein Spiel ist bereit für die Welt! 🌍',
790
+ en: 'Congratulations! You now know how to:\n• Check browser feature support\n• Configure optimized builds\n• Export as PWA, Electron, or Capacitor\n• Run performance benchmarks\n• Deploy to web, desktop, and mobile\n\nYour game is ready for the world!',
791
+ pl: 'Gratulacje! Teraz wiesz jak:\n• Sprawdzić wsparcie funkcji przeglądarki\n• Konfigurować zoptymalizowane buildy\n• Eksportować jako PWA, Electron lub Capacitor\n• Uruchamiać benchmarki wydajności\n• Wdrażać na web, desktop i mobile\n\nTwoja gra jest gotowa na świat!',
792
+ de: 'Herzlichen Glückwunsch! Du weißt jetzt wie man:\n• Browser-Feature-Support prüft\n• Optimierte Builds konfiguriert\n• Als PWA, Electron oder Capacitor exportiert\n• Performance-Benchmarks durchführt\n• Auf Web, Desktop und Mobile deployt\n\nDein Spiel ist bereit für die Welt!',
765
793
  },
766
794
  },
767
795
  ],
@@ -770,12 +798,7 @@ const TUTORIAL_PUBLISHING = {
770
798
  Convenience export
771
799
  ══════════════════════════════════════════════════════════════ */
772
800
  function getTutorials_T12_T15() {
773
- return [
774
- TUTORIAL_RPG,
775
- TUTORIAL_TOWER_DEFENSE,
776
- TUTORIAL_3D_GAME,
777
- TUTORIAL_PUBLISHING,
778
- ];
801
+ return [TUTORIAL_RPG, TUTORIAL_TOWER_DEFENSE, TUTORIAL_3D_GAME, TUTORIAL_PUBLISHING];
779
802
  }
780
803
 
781
804
  exports.TUTORIAL_3D_GAME = TUTORIAL_3D_GAME;
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
+ var ui = require('@nice2dev/ui');
4
5
  var React = require('react');
5
6
 
6
7
  const DEFAULT_THEME = {
@@ -106,21 +107,21 @@ function formatFileSize(bytes) {
106
107
  function getCategoryIcon(category) {
107
108
  switch (category) {
108
109
  case '3d':
109
- return '🎲';
110
+ return 'box';
110
111
  case '2d':
111
- return '🖼️';
112
+ return 'image';
112
113
  case 'tools':
113
- return '🔧';
114
+ return 'settings';
114
115
  case 'vfx':
115
- return '✨';
116
+ return 'star';
116
117
  case 'audio':
117
- return '🔊';
118
+ return 'volume';
118
119
  case 'templates':
119
- return '📋';
120
+ return 'clipboard';
120
121
  case 'add-ons':
121
- return '🧩';
122
+ return 'puzzle';
122
123
  default:
123
- return '📦';
124
+ return 'box';
124
125
  }
125
126
  }
126
127
  /* ── Search Header ────────────────────────────────────────────── */
@@ -145,7 +146,7 @@ const SearchHeader = () => {
145
146
  padding: '16px 24px',
146
147
  backgroundColor: theme.headerBackground,
147
148
  borderBottom: `1px solid ${theme.border}`,
148
- }, children: [jsxRuntime.jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 12, marginBottom: 12 }, children: [jsxRuntime.jsx("div", { style: { fontSize: 24 }, children: "\uD83C\uDFEA" }), jsxRuntime.jsx("h1", { style: { margin: 0, fontSize: 18, fontWeight: 600, color: theme.textPrimary }, children: "Unity Asset Store" }), jsxRuntime.jsx("div", { style: { flex: 1 } }), jsxRuntime.jsxs("button", { style: {
149
+ }, children: [jsxRuntime.jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 12, marginBottom: 12 }, children: [jsxRuntime.jsx(ui.NiceIcon, { name: "building", size: 24 }), jsxRuntime.jsx("h1", { style: { margin: 0, fontSize: 18, fontWeight: 600, color: theme.textPrimary }, children: "Unity Asset Store" }), jsxRuntime.jsx("div", { style: { flex: 1 } }), jsxRuntime.jsxs("button", { style: {
149
150
  display: 'flex',
150
151
  alignItems: 'center',
151
152
  gap: 6,
@@ -155,14 +156,14 @@ const SearchHeader = () => {
155
156
  borderRadius: 6,
156
157
  color: '#fff',
157
158
  cursor: 'pointer',
158
- }, children: ["\uD83D\uDED2 Cart (", state.cart.size, ")"] }), jsxRuntime.jsx("button", { onClick: () => dispatch({ type: 'TOGGLE_MY_ASSETS' }), style: {
159
+ }, children: [jsxRuntime.jsx(ui.NiceIcon, { name: "box", size: 14 }), " Cart (", state.cart.size, ")"] }), jsxRuntime.jsxs("button", { onClick: () => dispatch({ type: 'TOGGLE_MY_ASSETS' }), style: {
159
160
  padding: '8px 12px',
160
161
  backgroundColor: state.myAssets ? theme.accent : 'rgba(0,0,0,0.2)',
161
162
  border: 'none',
162
163
  borderRadius: 6,
163
164
  color: '#fff',
164
165
  cursor: 'pointer',
165
- }, children: "\uD83D\uDCDA My Assets" })] }), jsxRuntime.jsxs("div", { style: { display: 'flex', gap: 8 }, children: [jsxRuntime.jsxs("div", { style: { flex: 1, position: 'relative' }, children: [jsxRuntime.jsx("input", { type: "text", placeholder: "Search assets...", value: localQuery, onChange: (e) => setLocalQuery(e.target.value), onKeyDown: (e) => e.key === 'Enter' && handleSearch(), style: {
166
+ }, children: [jsxRuntime.jsx(ui.NiceIcon, { name: "book", size: 14 }), " My Assets"] })] }), jsxRuntime.jsxs("div", { style: { display: 'flex', gap: 8 }, children: [jsxRuntime.jsxs("div", { style: { flex: 1, position: 'relative' }, children: [jsxRuntime.jsx("input", { type: "text", placeholder: "Search assets...", value: localQuery, onChange: (e) => setLocalQuery(e.target.value), onKeyDown: (e) => e.key === 'Enter' && handleSearch(), style: {
166
167
  width: '100%',
167
168
  padding: '10px 16px',
168
169
  paddingRight: 50,
@@ -183,7 +184,7 @@ const SearchHeader = () => {
183
184
  borderRadius: 6,
184
185
  color: '#fff',
185
186
  cursor: 'pointer',
186
- }, children: "\uD83D\uDD0D" })] }), jsxRuntime.jsx("select", { value: state.query.category, onChange: (e) => {
187
+ }, children: jsxRuntime.jsx(ui.NiceIcon, { name: "search", size: 14 }) })] }), jsxRuntime.jsx("select", { value: state.query.category, onChange: (e) => {
187
188
  dispatch({
188
189
  type: 'SET_QUERY',
189
190
  query: { category: e.target.value, page: 1 },
@@ -230,7 +231,7 @@ const RatingStars = ({ rating, count }) => {
230
231
  return (jsxRuntime.jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 4 }, children: [[1, 2, 3, 4, 5].map((star) => (jsxRuntime.jsx("span", { style: {
231
232
  fontSize: 12,
232
233
  color: star <= Math.round(rating) ? theme.star : theme.textSecondary,
233
- }, children: "\u2605" }, star))), count !== undefined && (jsxRuntime.jsxs("span", { style: { fontSize: 11, color: theme.textSecondary, marginLeft: 4 }, children: ["(", count, ")"] }))] }));
234
+ }, children: jsxRuntime.jsx(ui.NiceIcon, { name: "star", size: 12 }) }, star))), count !== undefined && (jsxRuntime.jsxs("span", { style: { fontSize: 11, color: theme.textSecondary, marginLeft: 4 }, children: ["(", count, ")"] }))] }));
234
235
  };
235
236
  /* ── Asset Card ───────────────────────────────────────────────── */
236
237
  const AssetCard = ({ asset }) => {
@@ -292,7 +293,7 @@ const AssetCard = ({ asset }) => {
292
293
  alignItems: 'center',
293
294
  justifyContent: 'center',
294
295
  fontSize: 14,
295
- }, children: getCategoryIcon(asset.category) })] }), jsxRuntime.jsxs("div", { style: { padding: 12 }, children: [jsxRuntime.jsx("h3", { style: {
296
+ }, children: jsxRuntime.jsx(ui.NiceIcon, { name: getCategoryIcon(asset.category), size: 32 }) })] }), jsxRuntime.jsxs("div", { style: { padding: 12 }, children: [jsxRuntime.jsx("h3", { style: {
296
297
  margin: 0,
297
298
  fontSize: 13,
298
299
  fontWeight: 600,
@@ -333,7 +334,7 @@ const AssetCard = ({ asset }) => {
333
334
  borderRadius: 6,
334
335
  color: '#fff',
335
336
  cursor: isDownloading ? 'not-allowed' : 'pointer',
336
- }, children: isDownloading ? `${downloadProgress}%` : '📥 Download' })) : (jsxRuntime.jsx("button", { onClick: (e) => {
337
+ }, children: isDownloading ? `${downloadProgress}%` : 'Download' })) : (jsxRuntime.jsx("button", { onClick: (e) => {
337
338
  e.stopPropagation();
338
339
  if (isInCart) {
339
340
  dispatch({ type: 'REMOVE_FROM_CART', id: asset.id });
@@ -351,7 +352,7 @@ const AssetCard = ({ asset }) => {
351
352
  borderRadius: 6,
352
353
  color: '#fff',
353
354
  cursor: 'pointer',
354
- }, children: isInCart ? '✓ In Cart' : '🛒 Add to Cart' })), jsxRuntime.jsx("button", { onClick: (e) => {
355
+ }, children: isInCart ? 'In Cart' : 'Add to Cart' })), jsxRuntime.jsx("button", { onClick: (e) => {
355
356
  e.stopPropagation();
356
357
  openInBrowser(asset);
357
358
  }, style: {
@@ -362,7 +363,7 @@ const AssetCard = ({ asset }) => {
362
363
  borderRadius: 6,
363
364
  color: theme.textSecondary,
364
365
  cursor: 'pointer',
365
- }, children: "\uD83D\uDD17" })] })] })] }));
366
+ }, children: jsxRuntime.jsx(ui.NiceIcon, { name: "link", size: 14 }) })] })] })] }));
366
367
  };
367
368
  /* ── Asset Grid ───────────────────────────────────────────────── */
368
369
  const AssetGrid = () => {
@@ -374,7 +375,7 @@ const AssetGrid = () => {
374
375
  alignItems: 'center',
375
376
  justifyContent: 'center',
376
377
  color: theme.textSecondary,
377
- }, children: "\u23F3 Loading assets..." }));
378
+ }, children: "Loading assets..." }));
378
379
  }
379
380
  if (state.error) {
380
381
  return (jsxRuntime.jsxs("div", { style: {
@@ -383,7 +384,7 @@ const AssetGrid = () => {
383
384
  alignItems: 'center',
384
385
  justifyContent: 'center',
385
386
  color: theme.danger,
386
- }, children: ["\u274C ", state.error] }));
387
+ }, children: [jsxRuntime.jsx(ui.NiceIcon, { name: "error", size: 14 }), " ", state.error] }));
387
388
  }
388
389
  if (state.results.length === 0) {
389
390
  return (jsxRuntime.jsxs("div", { style: {
@@ -393,7 +394,7 @@ const AssetGrid = () => {
393
394
  alignItems: 'center',
394
395
  justifyContent: 'center',
395
396
  color: theme.textSecondary,
396
- }, children: [jsxRuntime.jsx("div", { style: { fontSize: 48, marginBottom: 16 }, children: "\uD83D\uDCED" }), jsxRuntime.jsx("div", { children: "No assets found" })] }));
397
+ }, children: [jsxRuntime.jsx("div", { style: { marginBottom: 16 }, children: jsxRuntime.jsx(ui.NiceIcon, { name: "archive", size: 48 }) }), jsxRuntime.jsx("div", { children: "No assets found" })] }));
397
398
  }
398
399
  return (jsxRuntime.jsx("div", { style: {
399
400
  display: 'grid',
@@ -476,7 +477,7 @@ const AssetDetailModal = () => {
476
477
  borderRadius: 8,
477
478
  color: '#fff',
478
479
  cursor: isDownloading ? 'not-allowed' : 'pointer',
479
- }, children: isDownloading ? `Downloading ${downloadProgress}%` : '📥 Download & Import' })) : (jsxRuntime.jsx("button", { onClick: () => isInCart
480
+ }, children: isDownloading ? `Downloading ${downloadProgress}%` : 'Download & Import' })) : (jsxRuntime.jsx("button", { onClick: () => isInCart
480
481
  ? dispatch({ type: 'REMOVE_FROM_CART', id: asset.id })
481
482
  : dispatch({ type: 'ADD_TO_CART', id: asset.id }), style: {
482
483
  width: '100%',
@@ -488,7 +489,7 @@ const AssetDetailModal = () => {
488
489
  borderRadius: 8,
489
490
  color: '#fff',
490
491
  cursor: 'pointer',
491
- }, children: isInCart ? '✓ Remove from Cart' : '🛒 Add to Cart' })), jsxRuntime.jsx("button", { onClick: () => openInBrowser(asset), style: {
492
+ }, children: isInCart ? 'Remove from Cart' : 'Add to Cart' })), jsxRuntime.jsxs("button", { onClick: () => openInBrowser(asset), style: {
492
493
  width: '100%',
493
494
  marginTop: 8,
494
495
  padding: '10px 24px',
@@ -498,7 +499,7 @@ const AssetDetailModal = () => {
498
499
  borderRadius: 8,
499
500
  color: theme.textSecondary,
500
501
  cursor: 'pointer',
501
- }, children: "\uD83D\uDD17 View on Asset Store" })] })] }), jsxRuntime.jsx("button", { onClick: () => dispatch({ type: 'SELECT_ASSET', asset: null }), style: {
502
+ }, children: [jsxRuntime.jsx(ui.NiceIcon, { name: "external-link", size: 14 }), " View on Asset Store"] })] })] }), jsxRuntime.jsx("button", { onClick: () => dispatch({ type: 'SELECT_ASSET', asset: null }), style: {
502
503
  position: 'absolute',
503
504
  top: 16,
504
505
  right: 16,
@@ -508,7 +509,7 @@ const AssetDetailModal = () => {
508
509
  border: 'none',
509
510
  color: theme.textSecondary,
510
511
  cursor: 'pointer',
511
- }, children: "\u2715" })] }), jsxRuntime.jsx("div", { style: { display: 'flex', borderBottom: `1px solid ${theme.border}` }, children: ['overview', 'images', 'reviews'].map((tab) => (jsxRuntime.jsx("button", { onClick: () => setActiveTab(tab), style: {
512
+ }, children: jsxRuntime.jsx(ui.NiceIcon, { name: "close", size: 14 }) })] }), jsxRuntime.jsx("div", { style: { display: 'flex', borderBottom: `1px solid ${theme.border}` }, children: ['overview', 'images', 'reviews'].map((tab) => (jsxRuntime.jsx("button", { onClick: () => setActiveTab(tab), style: {
512
513
  flex: 1,
513
514
  padding: '12px 16px',
514
515
  fontSize: 13,