@nice2dev/game-engine 0.1.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 (519) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +21 -0
  3. package/README.md +105 -0
  4. package/dist/cjs/accessibility/Accessibility.js +162 -0
  5. package/dist/cjs/accessibility/Accessibility.js.map +1 -0
  6. package/dist/cjs/ai/AI.js +321 -0
  7. package/dist/cjs/ai/AI.js.map +1 -0
  8. package/dist/cjs/animation/Animation.js +233 -0
  9. package/dist/cjs/animation/Animation.js.map +1 -0
  10. package/dist/cjs/audio/AudioAdvanced.js +262 -0
  11. package/dist/cjs/audio/AudioAdvanced.js.map +1 -0
  12. package/dist/cjs/audio/AudioManager.js +248 -0
  13. package/dist/cjs/audio/AudioManager.js.map +1 -0
  14. package/dist/cjs/core/EventBus.js +63 -0
  15. package/dist/cjs/core/EventBus.js.map +1 -0
  16. package/dist/cjs/core/GameClock.js +70 -0
  17. package/dist/cjs/core/GameClock.js.map +1 -0
  18. package/dist/cjs/core/GameConfig.js +86 -0
  19. package/dist/cjs/core/GameConfig.js.map +1 -0
  20. package/dist/cjs/core/GameLoop.js +93 -0
  21. package/dist/cjs/core/GameLoop.js.map +1 -0
  22. package/dist/cjs/core/ServiceLocator.js +73 -0
  23. package/dist/cjs/core/ServiceLocator.js.map +1 -0
  24. package/dist/cjs/core/Validation.js +119 -0
  25. package/dist/cjs/core/Validation.js.map +1 -0
  26. package/dist/cjs/core/math.js +116 -0
  27. package/dist/cjs/core/math.js.map +1 -0
  28. package/dist/cjs/devtools/DevTools.js +560 -0
  29. package/dist/cjs/devtools/DevTools.js.map +1 -0
  30. package/dist/cjs/devtools/DeveloperExperience.js +562 -0
  31. package/dist/cjs/devtools/DeveloperExperience.js.map +1 -0
  32. package/dist/cjs/docs/DocGenerator.js +357 -0
  33. package/dist/cjs/docs/DocGenerator.js.map +1 -0
  34. package/dist/cjs/ecs/World.js +280 -0
  35. package/dist/cjs/ecs/World.js.map +1 -0
  36. package/dist/cjs/editor/AdvancedEditor.js +149 -0
  37. package/dist/cjs/editor/AdvancedEditor.js.map +1 -0
  38. package/dist/cjs/editor/AssetManager.js +190 -0
  39. package/dist/cjs/editor/AssetManager.js.map +1 -0
  40. package/dist/cjs/editor/DebugTools.js +187 -0
  41. package/dist/cjs/editor/DebugTools.js.map +1 -0
  42. package/dist/cjs/editor/NiceGameEditor.js +361 -0
  43. package/dist/cjs/editor/NiceGameEditor.js.map +1 -0
  44. package/dist/cjs/editor/SceneEditor.js +223 -0
  45. package/dist/cjs/editor/SceneEditor.js.map +1 -0
  46. package/dist/cjs/engine/NiceGameEngine.js +172 -0
  47. package/dist/cjs/engine/NiceGameEngine.js.map +1 -0
  48. package/dist/cjs/enterprise/Enterprise.js +258 -0
  49. package/dist/cjs/enterprise/Enterprise.js.map +1 -0
  50. package/dist/cjs/i18n/I18n.js +634 -0
  51. package/dist/cjs/i18n/I18n.js.map +1 -0
  52. package/dist/cjs/i18n/useTranslation.js +100 -0
  53. package/dist/cjs/i18n/useTranslation.js.map +1 -0
  54. package/dist/cjs/index.js +526 -0
  55. package/dist/cjs/index.js.map +1 -0
  56. package/dist/cjs/input/GamepadNavigation.js +181 -0
  57. package/dist/cjs/input/GamepadNavigation.js.map +1 -0
  58. package/dist/cjs/input/InputManager.js +404 -0
  59. package/dist/cjs/input/InputManager.js.map +1 -0
  60. package/dist/cjs/input/useGamepads.js +86 -0
  61. package/dist/cjs/input/useGamepads.js.map +1 -0
  62. package/dist/cjs/kids/KidMode.js +670 -0
  63. package/dist/cjs/kids/KidMode.js.map +1 -0
  64. package/dist/cjs/kids/KidTools.js +533 -0
  65. package/dist/cjs/kids/KidTools.js.map +1 -0
  66. package/dist/cjs/monetization/Monetization.js +197 -0
  67. package/dist/cjs/monetization/Monetization.js.map +1 -0
  68. package/dist/cjs/multiplayer/LocalMultiplayer.js +288 -0
  69. package/dist/cjs/multiplayer/LocalMultiplayer.js.map +1 -0
  70. package/dist/cjs/multiplayer/MiniGameTypes.js +70 -0
  71. package/dist/cjs/multiplayer/MiniGameTypes.js.map +1 -0
  72. package/dist/cjs/network/MultiplayerTransport.js +109 -0
  73. package/dist/cjs/network/MultiplayerTransport.js.map +1 -0
  74. package/dist/cjs/network/Networking.js +569 -0
  75. package/dist/cjs/network/Networking.js.map +1 -0
  76. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js +32 -0
  77. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
  78. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +51 -0
  79. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
  80. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +46 -0
  81. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
  82. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +18 -0
  83. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
  84. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js +145 -0
  85. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
  86. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +161 -0
  87. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
  88. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +56 -0
  89. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
  90. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +11 -0
  91. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
  92. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +52 -0
  93. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
  94. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +576 -0
  95. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
  96. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +956 -0
  97. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
  98. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +149 -0
  99. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
  100. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
  101. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
  102. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
  103. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
  104. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
  105. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
  106. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +124 -0
  107. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
  108. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js +17 -0
  109. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
  110. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +188 -0
  111. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
  112. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +199 -0
  113. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
  114. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +108 -0
  115. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
  116. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js +38 -0
  117. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
  118. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +24 -0
  119. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
  120. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js +264 -0
  121. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
  122. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +160 -0
  123. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
  124. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +88 -0
  125. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
  126. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js +50 -0
  127. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
  128. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +6 -0
  129. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
  130. package/dist/cjs/pathfinding/Pathfinding.js +255 -0
  131. package/dist/cjs/pathfinding/Pathfinding.js.map +1 -0
  132. package/dist/cjs/performance/BenchmarkSuite.js +318 -0
  133. package/dist/cjs/performance/BenchmarkSuite.js.map +1 -0
  134. package/dist/cjs/performance/Performance.js +180 -0
  135. package/dist/cjs/performance/Performance.js.map +1 -0
  136. package/dist/cjs/performance/PerformanceAdvanced.js +628 -0
  137. package/dist/cjs/performance/PerformanceAdvanced.js.map +1 -0
  138. package/dist/cjs/physics/PhysicsAdvanced.js +432 -0
  139. package/dist/cjs/physics/PhysicsAdvanced.js.map +1 -0
  140. package/dist/cjs/physics/PhysicsEngine2D.js +445 -0
  141. package/dist/cjs/physics/PhysicsEngine2D.js.map +1 -0
  142. package/dist/cjs/plugins/PluginSDK.js +488 -0
  143. package/dist/cjs/plugins/PluginSDK.js.map +1 -0
  144. package/dist/cjs/plugins/PluginTestKit.js +368 -0
  145. package/dist/cjs/plugins/PluginTestKit.js.map +1 -0
  146. package/dist/cjs/procedural/Procedural.js +288 -0
  147. package/dist/cjs/procedural/Procedural.js.map +1 -0
  148. package/dist/cjs/procedural/WorldBuilding.js +246 -0
  149. package/dist/cjs/procedural/WorldBuilding.js.map +1 -0
  150. package/dist/cjs/release/MobileExport.js +149 -0
  151. package/dist/cjs/release/MobileExport.js.map +1 -0
  152. package/dist/cjs/release/Release.js +151 -0
  153. package/dist/cjs/release/Release.js.map +1 -0
  154. package/dist/cjs/rendering/Camera2D.js +129 -0
  155. package/dist/cjs/rendering/Camera2D.js.map +1 -0
  156. package/dist/cjs/rendering/Renderer2D.js +337 -0
  157. package/dist/cjs/rendering/Renderer2D.js.map +1 -0
  158. package/dist/cjs/runtime3d/Runtime3D.js +381 -0
  159. package/dist/cjs/runtime3d/Runtime3D.js.map +1 -0
  160. package/dist/cjs/runtime3d/SceneEditor3D.js +316 -0
  161. package/dist/cjs/runtime3d/SceneEditor3D.js.map +1 -0
  162. package/dist/cjs/scene/SceneManager.js +186 -0
  163. package/dist/cjs/scene/SceneManager.js.map +1 -0
  164. package/dist/cjs/scripting/NodeGraph.js +573 -0
  165. package/dist/cjs/scripting/NodeGraph.js.map +1 -0
  166. package/dist/cjs/social/Social.js +91 -0
  167. package/dist/cjs/social/Social.js.map +1 -0
  168. package/dist/cjs/templates/ActionTemplates.js +229 -0
  169. package/dist/cjs/templates/ActionTemplates.js.map +1 -0
  170. package/dist/cjs/templates/PartyTemplates.js +221 -0
  171. package/dist/cjs/templates/PartyTemplates.js.map +1 -0
  172. package/dist/cjs/templates/PuzzleTemplates.js +283 -0
  173. package/dist/cjs/templates/PuzzleTemplates.js.map +1 -0
  174. package/dist/cjs/templates/RPGTemplates.js +209 -0
  175. package/dist/cjs/templates/RPGTemplates.js.map +1 -0
  176. package/dist/cjs/templates/SportsTemplates.js +272 -0
  177. package/dist/cjs/templates/SportsTemplates.js.map +1 -0
  178. package/dist/cjs/templates/StrategyTemplates.js +173 -0
  179. package/dist/cjs/templates/StrategyTemplates.js.map +1 -0
  180. package/dist/cjs/templates/WaveDefense.js +470 -0
  181. package/dist/cjs/templates/WaveDefense.js.map +1 -0
  182. package/dist/cjs/tilemap/Tilemap.js +208 -0
  183. package/dist/cjs/tilemap/Tilemap.js.map +1 -0
  184. package/dist/cjs/tutorials/TutorialBranching.js +392 -0
  185. package/dist/cjs/tutorials/TutorialBranching.js.map +1 -0
  186. package/dist/cjs/tutorials/TutorialEngine.js +903 -0
  187. package/dist/cjs/tutorials/TutorialEngine.js.map +1 -0
  188. package/dist/cjs/tutorials/TutorialOverlay.js +602 -0
  189. package/dist/cjs/tutorials/TutorialOverlay.js.map +1 -0
  190. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js +816 -0
  191. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js.map +1 -0
  192. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js +741 -0
  193. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js.map +1 -0
  194. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js +786 -0
  195. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js.map +1 -0
  196. package/dist/cjs/ui/GameUI.js +312 -0
  197. package/dist/cjs/ui/GameUI.js.map +1 -0
  198. package/dist/cjs/xr/ARVR.js +197 -0
  199. package/dist/cjs/xr/ARVR.js.map +1 -0
  200. package/dist/esm/accessibility/Accessibility.js +153 -0
  201. package/dist/esm/accessibility/Accessibility.js.map +1 -0
  202. package/dist/esm/ai/AI.js +302 -0
  203. package/dist/esm/ai/AI.js.map +1 -0
  204. package/dist/esm/animation/Animation.js +227 -0
  205. package/dist/esm/animation/Animation.js.map +1 -0
  206. package/dist/esm/audio/AudioAdvanced.js +243 -0
  207. package/dist/esm/audio/AudioAdvanced.js.map +1 -0
  208. package/dist/esm/audio/AudioManager.js +246 -0
  209. package/dist/esm/audio/AudioManager.js.map +1 -0
  210. package/dist/esm/core/EventBus.js +61 -0
  211. package/dist/esm/core/EventBus.js.map +1 -0
  212. package/dist/esm/core/GameClock.js +68 -0
  213. package/dist/esm/core/GameClock.js.map +1 -0
  214. package/dist/esm/core/GameConfig.js +80 -0
  215. package/dist/esm/core/GameConfig.js.map +1 -0
  216. package/dist/esm/core/GameLoop.js +91 -0
  217. package/dist/esm/core/GameLoop.js.map +1 -0
  218. package/dist/esm/core/ServiceLocator.js +70 -0
  219. package/dist/esm/core/ServiceLocator.js.map +1 -0
  220. package/dist/esm/core/Validation.js +108 -0
  221. package/dist/esm/core/Validation.js.map +1 -0
  222. package/dist/esm/core/math.js +114 -0
  223. package/dist/esm/core/math.js.map +1 -0
  224. package/dist/esm/devtools/DevTools.js +555 -0
  225. package/dist/esm/devtools/DevTools.js.map +1 -0
  226. package/dist/esm/devtools/DeveloperExperience.js +547 -0
  227. package/dist/esm/devtools/DeveloperExperience.js.map +1 -0
  228. package/dist/esm/docs/DocGenerator.js +353 -0
  229. package/dist/esm/docs/DocGenerator.js.map +1 -0
  230. package/dist/esm/ecs/World.js +276 -0
  231. package/dist/esm/ecs/World.js.map +1 -0
  232. package/dist/esm/editor/AdvancedEditor.js +141 -0
  233. package/dist/esm/editor/AdvancedEditor.js.map +1 -0
  234. package/dist/esm/editor/AssetManager.js +188 -0
  235. package/dist/esm/editor/AssetManager.js.map +1 -0
  236. package/dist/esm/editor/DebugTools.js +179 -0
  237. package/dist/esm/editor/DebugTools.js.map +1 -0
  238. package/dist/esm/editor/NiceGameEditor.js +355 -0
  239. package/dist/esm/editor/NiceGameEditor.js.map +1 -0
  240. package/dist/esm/editor/SceneEditor.js +209 -0
  241. package/dist/esm/editor/SceneEditor.js.map +1 -0
  242. package/dist/esm/engine/NiceGameEngine.js +170 -0
  243. package/dist/esm/engine/NiceGameEngine.js.map +1 -0
  244. package/dist/esm/enterprise/Enterprise.js +246 -0
  245. package/dist/esm/enterprise/Enterprise.js.map +1 -0
  246. package/dist/esm/i18n/I18n.js +622 -0
  247. package/dist/esm/i18n/I18n.js.map +1 -0
  248. package/dist/esm/i18n/useTranslation.js +95 -0
  249. package/dist/esm/i18n/useTranslation.js.map +1 -0
  250. package/dist/esm/index.js +71 -0
  251. package/dist/esm/index.js.map +1 -0
  252. package/dist/esm/input/GamepadNavigation.js +178 -0
  253. package/dist/esm/input/GamepadNavigation.js.map +1 -0
  254. package/dist/esm/input/InputManager.js +399 -0
  255. package/dist/esm/input/InputManager.js.map +1 -0
  256. package/dist/esm/input/useGamepads.js +83 -0
  257. package/dist/esm/input/useGamepads.js.map +1 -0
  258. package/dist/esm/kids/KidMode.js +663 -0
  259. package/dist/esm/kids/KidMode.js.map +1 -0
  260. package/dist/esm/kids/KidTools.js +529 -0
  261. package/dist/esm/kids/KidTools.js.map +1 -0
  262. package/dist/esm/monetization/Monetization.js +186 -0
  263. package/dist/esm/monetization/Monetization.js.map +1 -0
  264. package/dist/esm/multiplayer/LocalMultiplayer.js +284 -0
  265. package/dist/esm/multiplayer/LocalMultiplayer.js.map +1 -0
  266. package/dist/esm/multiplayer/MiniGameTypes.js +60 -0
  267. package/dist/esm/multiplayer/MiniGameTypes.js.map +1 -0
  268. package/dist/esm/network/MultiplayerTransport.js +106 -0
  269. package/dist/esm/network/MultiplayerTransport.js.map +1 -0
  270. package/dist/esm/network/Networking.js +561 -0
  271. package/dist/esm/network/Networking.js.map +1 -0
  272. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js +30 -0
  273. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
  274. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +49 -0
  275. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
  276. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +44 -0
  277. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
  278. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +16 -0
  279. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
  280. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js +136 -0
  281. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
  282. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +159 -0
  283. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
  284. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +54 -0
  285. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
  286. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +9 -0
  287. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
  288. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +49 -0
  289. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
  290. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +573 -0
  291. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
  292. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +954 -0
  293. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
  294. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +147 -0
  295. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
  296. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
  297. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
  298. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
  299. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
  300. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
  301. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
  302. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +122 -0
  303. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
  304. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js +15 -0
  305. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
  306. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +186 -0
  307. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
  308. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +197 -0
  309. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
  310. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +106 -0
  311. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
  312. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js +36 -0
  313. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
  314. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +22 -0
  315. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
  316. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js +249 -0
  317. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
  318. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +158 -0
  319. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
  320. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +86 -0
  321. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
  322. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js +13 -0
  323. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
  324. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +4 -0
  325. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
  326. package/dist/esm/pathfinding/Pathfinding.js +250 -0
  327. package/dist/esm/pathfinding/Pathfinding.js.map +1 -0
  328. package/dist/esm/performance/BenchmarkSuite.js +315 -0
  329. package/dist/esm/performance/BenchmarkSuite.js.map +1 -0
  330. package/dist/esm/performance/Performance.js +171 -0
  331. package/dist/esm/performance/Performance.js.map +1 -0
  332. package/dist/esm/performance/PerformanceAdvanced.js +620 -0
  333. package/dist/esm/performance/PerformanceAdvanced.js.map +1 -0
  334. package/dist/esm/physics/PhysicsAdvanced.js +417 -0
  335. package/dist/esm/physics/PhysicsAdvanced.js.map +1 -0
  336. package/dist/esm/physics/PhysicsEngine2D.js +442 -0
  337. package/dist/esm/physics/PhysicsEngine2D.js.map +1 -0
  338. package/dist/esm/plugins/PluginSDK.js +484 -0
  339. package/dist/esm/plugins/PluginSDK.js.map +1 -0
  340. package/dist/esm/plugins/PluginTestKit.js +359 -0
  341. package/dist/esm/plugins/PluginTestKit.js.map +1 -0
  342. package/dist/esm/procedural/Procedural.js +282 -0
  343. package/dist/esm/procedural/Procedural.js.map +1 -0
  344. package/dist/esm/procedural/WorldBuilding.js +225 -0
  345. package/dist/esm/procedural/WorldBuilding.js.map +1 -0
  346. package/dist/esm/release/MobileExport.js +142 -0
  347. package/dist/esm/release/MobileExport.js.map +1 -0
  348. package/dist/esm/release/Release.js +141 -0
  349. package/dist/esm/release/Release.js.map +1 -0
  350. package/dist/esm/rendering/Camera2D.js +127 -0
  351. package/dist/esm/rendering/Camera2D.js.map +1 -0
  352. package/dist/esm/rendering/Renderer2D.js +334 -0
  353. package/dist/esm/rendering/Renderer2D.js.map +1 -0
  354. package/dist/esm/runtime3d/Runtime3D.js +371 -0
  355. package/dist/esm/runtime3d/Runtime3D.js.map +1 -0
  356. package/dist/esm/runtime3d/SceneEditor3D.js +299 -0
  357. package/dist/esm/runtime3d/SceneEditor3D.js.map +1 -0
  358. package/dist/esm/scene/SceneManager.js +184 -0
  359. package/dist/esm/scene/SceneManager.js.map +1 -0
  360. package/dist/esm/scripting/NodeGraph.js +568 -0
  361. package/dist/esm/scripting/NodeGraph.js.map +1 -0
  362. package/dist/esm/social/Social.js +85 -0
  363. package/dist/esm/social/Social.js.map +1 -0
  364. package/dist/esm/templates/ActionTemplates.js +217 -0
  365. package/dist/esm/templates/ActionTemplates.js.map +1 -0
  366. package/dist/esm/templates/PartyTemplates.js +204 -0
  367. package/dist/esm/templates/PartyTemplates.js.map +1 -0
  368. package/dist/esm/templates/PuzzleTemplates.js +267 -0
  369. package/dist/esm/templates/PuzzleTemplates.js.map +1 -0
  370. package/dist/esm/templates/RPGTemplates.js +196 -0
  371. package/dist/esm/templates/RPGTemplates.js.map +1 -0
  372. package/dist/esm/templates/SportsTemplates.js +257 -0
  373. package/dist/esm/templates/SportsTemplates.js.map +1 -0
  374. package/dist/esm/templates/StrategyTemplates.js +157 -0
  375. package/dist/esm/templates/StrategyTemplates.js.map +1 -0
  376. package/dist/esm/templates/WaveDefense.js +467 -0
  377. package/dist/esm/templates/WaveDefense.js.map +1 -0
  378. package/dist/esm/tilemap/Tilemap.js +205 -0
  379. package/dist/esm/tilemap/Tilemap.js.map +1 -0
  380. package/dist/esm/tutorials/TutorialBranching.js +388 -0
  381. package/dist/esm/tutorials/TutorialBranching.js.map +1 -0
  382. package/dist/esm/tutorials/TutorialEngine.js +897 -0
  383. package/dist/esm/tutorials/TutorialEngine.js.map +1 -0
  384. package/dist/esm/tutorials/TutorialOverlay.js +600 -0
  385. package/dist/esm/tutorials/TutorialOverlay.js.map +1 -0
  386. package/dist/esm/tutorials/content/Tutorials_T05_T08.js +810 -0
  387. package/dist/esm/tutorials/content/Tutorials_T05_T08.js.map +1 -0
  388. package/dist/esm/tutorials/content/Tutorials_T09_T11.js +736 -0
  389. package/dist/esm/tutorials/content/Tutorials_T09_T11.js.map +1 -0
  390. package/dist/esm/tutorials/content/Tutorials_T12_T15.js +780 -0
  391. package/dist/esm/tutorials/content/Tutorials_T12_T15.js.map +1 -0
  392. package/dist/esm/ui/GameUI.js +310 -0
  393. package/dist/esm/ui/GameUI.js.map +1 -0
  394. package/dist/esm/xr/ARVR.js +182 -0
  395. package/dist/esm/xr/ARVR.js.map +1 -0
  396. package/dist/types/__tests__/setup.d.ts +1 -0
  397. package/dist/types/accessibility/Accessibility.d.ts +82 -0
  398. package/dist/types/accessibility/index.d.ts +1 -0
  399. package/dist/types/ai/AI.d.ts +140 -0
  400. package/dist/types/ai/index.d.ts +1 -0
  401. package/dist/types/animation/Animation.d.ts +90 -0
  402. package/dist/types/animation/index.d.ts +1 -0
  403. package/dist/types/audio/AudioAdvanced.d.ts +190 -0
  404. package/dist/types/audio/AudioManager.d.ts +55 -0
  405. package/dist/types/audio/index.d.ts +1 -0
  406. package/dist/types/community/Community.d.ts +112 -0
  407. package/dist/types/community/index.d.ts +1 -0
  408. package/dist/types/core/EventBus.d.ts +16 -0
  409. package/dist/types/core/GameClock.d.ts +29 -0
  410. package/dist/types/core/GameConfig.d.ts +20 -0
  411. package/dist/types/core/GameLoop.d.ts +32 -0
  412. package/dist/types/core/ServiceLocator.d.ts +36 -0
  413. package/dist/types/core/TypeSafety.d.ts +190 -0
  414. package/dist/types/core/Validation.d.ts +24 -0
  415. package/dist/types/core/index.d.ts +7 -0
  416. package/dist/types/core/math.d.ts +32 -0
  417. package/dist/types/core/types.d.ts +130 -0
  418. package/dist/types/devtools/AssetStore.d.ts +133 -0
  419. package/dist/types/devtools/DevTools.d.ts +217 -0
  420. package/dist/types/devtools/DeveloperExperience.d.ts +123 -0
  421. package/dist/types/devtools/index.d.ts +3 -0
  422. package/dist/types/docs/APIPlayground.d.ts +26 -0
  423. package/dist/types/docs/Cookbook.d.ts +18 -0
  424. package/dist/types/docs/DocGenerator.d.ts +83 -0
  425. package/dist/types/docs/Guides.d.ts +18 -0
  426. package/dist/types/docs/index.d.ts +4 -0
  427. package/dist/types/ecs/World.d.ts +219 -0
  428. package/dist/types/ecs/index.d.ts +1 -0
  429. package/dist/types/editor/AdvancedEditor.d.ts +267 -0
  430. package/dist/types/editor/AssetManager.d.ts +45 -0
  431. package/dist/types/editor/DebugTools.d.ts +74 -0
  432. package/dist/types/editor/NiceGameEditor.d.ts +115 -0
  433. package/dist/types/editor/SceneEditor.d.ts +37 -0
  434. package/dist/types/editor/index.d.ts +8 -0
  435. package/dist/types/engine/NiceGameEngine.d.ts +53 -0
  436. package/dist/types/engine/index.d.ts +2 -0
  437. package/dist/types/enterprise/Enterprise.d.ts +217 -0
  438. package/dist/types/enterprise/index.d.ts +1 -0
  439. package/dist/types/epic/index.d.ts +10 -0
  440. package/dist/types/i18n/I18n.d.ts +107 -0
  441. package/dist/types/i18n/index.d.ts +2 -0
  442. package/dist/types/i18n/useTranslation.d.ts +74 -0
  443. package/dist/types/index.d.ts +127 -0
  444. package/dist/types/input/GamepadNavigation.d.ts +34 -0
  445. package/dist/types/input/InputManager.d.ts +77 -0
  446. package/dist/types/input/index.d.ts +3 -0
  447. package/dist/types/input/useGamepads.d.ts +39 -0
  448. package/dist/types/kids/KidMode.d.ts +207 -0
  449. package/dist/types/kids/KidTools.d.ts +135 -0
  450. package/dist/types/kids/index.d.ts +2 -0
  451. package/dist/types/legendary/index.d.ts +57 -0
  452. package/dist/types/monetization/Monetization.d.ts +224 -0
  453. package/dist/types/monetization/index.d.ts +1 -0
  454. package/dist/types/multiplayer/LocalMultiplayer.d.ts +61 -0
  455. package/dist/types/multiplayer/MiniGameTypes.d.ts +70 -0
  456. package/dist/types/multiplayer/index.d.ts +3 -0
  457. package/dist/types/network/MultiplayerTransport.d.ts +71 -0
  458. package/dist/types/network/Networking.d.ts +199 -0
  459. package/dist/types/network/index.d.ts +2 -0
  460. package/dist/types/pathfinding/Pathfinding.d.ts +42 -0
  461. package/dist/types/pathfinding/index.d.ts +1 -0
  462. package/dist/types/performance/AssetCompression.d.ts +137 -0
  463. package/dist/types/performance/BenchmarkSuite.d.ts +99 -0
  464. package/dist/types/performance/Performance.d.ts +87 -0
  465. package/dist/types/performance/PerformanceAdvanced.d.ts +220 -0
  466. package/dist/types/performance/WASMModules.d.ts +65 -0
  467. package/dist/types/performance/WebGPUCompute.d.ts +164 -0
  468. package/dist/types/performance/index.d.ts +1 -0
  469. package/dist/types/physics/PhysicsAdvanced.d.ts +148 -0
  470. package/dist/types/physics/PhysicsEngine2D.d.ts +66 -0
  471. package/dist/types/physics/index.d.ts +1 -0
  472. package/dist/types/plugins/PluginSDK.d.ts +134 -0
  473. package/dist/types/plugins/PluginTestKit.d.ts +107 -0
  474. package/dist/types/plugins/index.d.ts +2 -0
  475. package/dist/types/procedural/Procedural.d.ts +90 -0
  476. package/dist/types/procedural/WorldBuilding.d.ts +200 -0
  477. package/dist/types/procedural/index.d.ts +2 -0
  478. package/dist/types/release/MobileExport.d.ts +218 -0
  479. package/dist/types/release/Release.d.ts +81 -0
  480. package/dist/types/release/index.d.ts +1 -0
  481. package/dist/types/rendering/Camera2D.d.ts +39 -0
  482. package/dist/types/rendering/Renderer2D.d.ts +41 -0
  483. package/dist/types/rendering/index.d.ts +2 -0
  484. package/dist/types/runtime3d/Runtime3D.d.ts +259 -0
  485. package/dist/types/runtime3d/SceneEditor3D.d.ts +186 -0
  486. package/dist/types/runtime3d/index.d.ts +2 -0
  487. package/dist/types/scene/SceneManager.d.ts +59 -0
  488. package/dist/types/scene/index.d.ts +2 -0
  489. package/dist/types/scripting/NodeGraph.d.ts +84 -0
  490. package/dist/types/scripting/index.d.ts +2 -0
  491. package/dist/types/social/Social.d.ts +245 -0
  492. package/dist/types/social/index.d.ts +1 -0
  493. package/dist/types/templates/ActionTemplates.d.ts +173 -0
  494. package/dist/types/templates/PartyTemplates.d.ts +195 -0
  495. package/dist/types/templates/PuzzleTemplates.d.ts +127 -0
  496. package/dist/types/templates/RPGTemplates.d.ts +210 -0
  497. package/dist/types/templates/SportsTemplates.d.ts +162 -0
  498. package/dist/types/templates/StrategyTemplates.d.ts +264 -0
  499. package/dist/types/templates/WaveDefense.d.ts +92 -0
  500. package/dist/types/templates/index.d.ts +2 -0
  501. package/dist/types/tilemap/Tilemap.d.ts +66 -0
  502. package/dist/types/tilemap/index.d.ts +1 -0
  503. package/dist/types/tutorials/TutorialBranching.d.ts +132 -0
  504. package/dist/types/tutorials/TutorialEditor.d.ts +43 -0
  505. package/dist/types/tutorials/TutorialEngine.d.ts +237 -0
  506. package/dist/types/tutorials/TutorialOverlay.d.ts +79 -0
  507. package/dist/types/tutorials/VoiceNarration.d.ts +75 -0
  508. package/dist/types/tutorials/content/Tutorials_T04.d.ts +3 -0
  509. package/dist/types/tutorials/content/Tutorials_T05_T08.d.ts +6 -0
  510. package/dist/types/tutorials/content/Tutorials_T09_T11.d.ts +5 -0
  511. package/dist/types/tutorials/content/Tutorials_T12_T15.d.ts +6 -0
  512. package/dist/types/tutorials/content/UITutorials.d.ts +14 -0
  513. package/dist/types/tutorials/content/index.d.ts +5 -0
  514. package/dist/types/tutorials/index.d.ts +6 -0
  515. package/dist/types/ui/GameUI.d.ts +97 -0
  516. package/dist/types/ui/index.d.ts +2 -0
  517. package/dist/types/xr/ARVR.d.ts +252 -0
  518. package/dist/types/xr/index.d.ts +1 -0
  519. package/package.json +88 -0
@@ -0,0 +1,205 @@
1
+ /* ────────────────────────────────────────────────────────────────
2
+ Tilemap — Grid-based tile rendering and collision
3
+ ──────────────────────────────────────────────────────────────── */
4
+ /* ── Tilemap ──────────────────────────────────────────────────── */
5
+ class Tilemap {
6
+ constructor(width, height, tileWidth = 16, tileHeight = 16) {
7
+ this.tileset = null;
8
+ this.width = width;
9
+ this.height = height;
10
+ this.tileWidth = tileWidth;
11
+ this.tileHeight = tileHeight;
12
+ this.layers = [];
13
+ }
14
+ get pixelWidth() {
15
+ return this.width * this.tileWidth;
16
+ }
17
+ get pixelHeight() {
18
+ return this.height * this.tileHeight;
19
+ }
20
+ /* ── Tileset ────────────────────────────────────────────────── */
21
+ setTileset(ts) {
22
+ this.tileset = ts;
23
+ }
24
+ getTileset() {
25
+ return this.tileset;
26
+ }
27
+ /* ── Layers ─────────────────────────────────────────────────── */
28
+ addLayer(name) {
29
+ const data = [];
30
+ for (let y = 0; y < this.height; y++) {
31
+ data.push(new Array(this.width).fill(0));
32
+ }
33
+ const layer = { name, visible: true, opacity: 1, data };
34
+ this.layers.push(layer);
35
+ return layer;
36
+ }
37
+ getLayer(name) {
38
+ return this.layers.find(l => l.name === name);
39
+ }
40
+ getLayers() {
41
+ return this.layers;
42
+ }
43
+ /* ── Tile access ────────────────────────────────────────────── */
44
+ getTile(layerName, x, y) {
45
+ const layer = this.getLayer(layerName);
46
+ if (!layer || x < 0 || y < 0 || x >= this.width || y >= this.height)
47
+ return 0;
48
+ return layer.data[y][x];
49
+ }
50
+ setTile(layerName, x, y, tileId) {
51
+ const layer = this.getLayer(layerName);
52
+ if (!layer || x < 0 || y < 0 || x >= this.width || y >= this.height)
53
+ return;
54
+ layer.data[y][x] = tileId;
55
+ }
56
+ /** Fill a rectangle with a tile. */
57
+ fillRect(layerName, x, y, w, h, tileId) {
58
+ for (let iy = y; iy < y + h; iy++) {
59
+ for (let ix = x; ix < x + w; ix++) {
60
+ this.setTile(layerName, ix, iy, tileId);
61
+ }
62
+ }
63
+ }
64
+ /** Flood fill from a position. */
65
+ floodFill(layerName, x, y, tileId) {
66
+ const layer = this.getLayer(layerName);
67
+ if (!layer)
68
+ return;
69
+ const target = this.getTile(layerName, x, y);
70
+ if (target === tileId)
71
+ return;
72
+ const stack = [[x, y]];
73
+ const visited = new Set();
74
+ while (stack.length > 0) {
75
+ const [cx, cy] = stack.pop();
76
+ const key = `${cx},${cy}`;
77
+ if (visited.has(key))
78
+ continue;
79
+ visited.add(key);
80
+ if (cx < 0 || cy < 0 || cx >= this.width || cy >= this.height)
81
+ continue;
82
+ if (layer.data[cy][cx] !== target)
83
+ continue;
84
+ layer.data[cy][cx] = tileId;
85
+ stack.push([cx + 1, cy], [cx - 1, cy], [cx, cy + 1], [cx, cy - 1]);
86
+ }
87
+ }
88
+ /* ── World ↔ Tile coordinates ───────────────────────────────── */
89
+ worldToTile(worldX, worldY) {
90
+ return {
91
+ x: Math.floor(worldX / this.tileWidth),
92
+ y: Math.floor(worldY / this.tileHeight),
93
+ };
94
+ }
95
+ tileToWorld(tileX, tileY) {
96
+ return {
97
+ x: tileX * this.tileWidth + this.tileWidth / 2,
98
+ y: tileY * this.tileHeight + this.tileHeight / 2,
99
+ };
100
+ }
101
+ /* ── Collision query ────────────────────────────────────────── */
102
+ isSolid(tileX, tileY) {
103
+ var _a;
104
+ if (!this.tileset)
105
+ return false;
106
+ for (const layer of this.layers) {
107
+ const id = (_a = layer.data[tileY]) === null || _a === void 0 ? void 0 : _a[tileX];
108
+ if (id) {
109
+ const def = this.tileset.tiles.find(t => t.id === id);
110
+ if (def === null || def === void 0 ? void 0 : def.solid)
111
+ return true;
112
+ }
113
+ }
114
+ return false;
115
+ }
116
+ /** Get all solid tiles overlapping a world-space AABB. */
117
+ getSolidTilesInRect(rect) {
118
+ const result = [];
119
+ const x0 = Math.max(0, Math.floor(rect.x / this.tileWidth));
120
+ const y0 = Math.max(0, Math.floor(rect.y / this.tileHeight));
121
+ const x1 = Math.min(this.width - 1, Math.floor((rect.x + rect.width) / this.tileWidth));
122
+ const y1 = Math.min(this.height - 1, Math.floor((rect.y + rect.height) / this.tileHeight));
123
+ for (let y = y0; y <= y1; y++) {
124
+ for (let x = x0; x <= x1; x++) {
125
+ if (this.isSolid(x, y))
126
+ result.push({ x, y });
127
+ }
128
+ }
129
+ return result;
130
+ }
131
+ /* ── Rendering ──────────────────────────────────────────────── */
132
+ render(ctx, tilesetImage, camera) {
133
+ if (!this.tileset)
134
+ return;
135
+ const ts = this.tileset;
136
+ const tw = this.tileWidth;
137
+ const th = this.tileHeight;
138
+ // Only render visible tiles
139
+ const x0 = Math.max(0, Math.floor(camera.x / tw));
140
+ const y0 = Math.max(0, Math.floor(camera.y / th));
141
+ const x1 = Math.min(this.width - 1, Math.ceil((camera.x + camera.width) / tw));
142
+ const y1 = Math.min(this.height - 1, Math.ceil((camera.y + camera.height) / th));
143
+ for (const layer of this.layers) {
144
+ if (!layer.visible)
145
+ continue;
146
+ ctx.globalAlpha = layer.opacity;
147
+ for (let y = y0; y <= y1; y++) {
148
+ for (let x = x0; x <= x1; x++) {
149
+ const tileId = layer.data[y][x];
150
+ if (tileId === 0)
151
+ continue;
152
+ const def = ts.tiles.find(t => t.id === tileId);
153
+ if (!def)
154
+ continue;
155
+ const sr = def.srcRect;
156
+ ctx.drawImage(tilesetImage, sr.x, sr.y, sr.width, sr.height, x * tw, y * th, tw, th);
157
+ }
158
+ }
159
+ }
160
+ ctx.globalAlpha = 1;
161
+ }
162
+ /* ── Serialization ──────────────────────────────────────────── */
163
+ toJSON() {
164
+ var _a, _b;
165
+ return {
166
+ width: this.width,
167
+ height: this.height,
168
+ tileWidth: this.tileWidth,
169
+ tileHeight: this.tileHeight,
170
+ tilesetId: (_b = (_a = this.tileset) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '',
171
+ layers: this.layers.map(l => ({
172
+ name: l.name,
173
+ visible: l.visible,
174
+ opacity: l.opacity,
175
+ data: l.data.map(row => [...row]),
176
+ })),
177
+ };
178
+ }
179
+ static fromJSON(data) {
180
+ const map = new Tilemap(data.width, data.height, data.tileWidth, data.tileHeight);
181
+ for (const layerData of data.layers) {
182
+ const layer = map.addLayer(layerData.name);
183
+ layer.visible = layerData.visible;
184
+ layer.opacity = layerData.opacity;
185
+ layer.data = layerData.data.map(row => [...row]);
186
+ }
187
+ return map;
188
+ }
189
+ }
190
+ /* ── Auto-tiling (4-bit bitmask) ──────────────────────────────── */
191
+ function computeAutoTileMask(map, layerName, x, y) {
192
+ let mask = 0;
193
+ if (map.getTile(layerName, x, y - 1) > 0)
194
+ mask |= 1; // top
195
+ if (map.getTile(layerName, x + 1, y) > 0)
196
+ mask |= 2; // right
197
+ if (map.getTile(layerName, x, y + 1) > 0)
198
+ mask |= 4; // bottom
199
+ if (map.getTile(layerName, x - 1, y) > 0)
200
+ mask |= 8; // left
201
+ return mask;
202
+ }
203
+
204
+ export { Tilemap, computeAutoTileMask };
205
+ //# sourceMappingURL=Tilemap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tilemap.js","sources":["../../../src/tilemap/Tilemap.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,388 @@
1
+ import { EventBus } from '../core/EventBus.js';
2
+
3
+ /* ────────────────────────────────────────────────────────────────
4
+ Tutorial Branching & Achievement System — LEGENDARY L4
5
+
6
+ • Conditional branching (step → step based on quiz results / choices)
7
+ • Achievement / badge engine tied to tutorial completions
8
+ • Progress-based unlocking logic
9
+ ──────────────────────────────────────────────────────────────── */
10
+ class BranchingEngine {
11
+ constructor() {
12
+ this.configs = new Map();
13
+ }
14
+ /** Register branching configuration for a tutorial. */
15
+ register(config) {
16
+ const stepMap = new Map();
17
+ for (const branch of config.branches) {
18
+ stepMap.set(branch.stepId, branch);
19
+ }
20
+ this.configs.set(config.tutorialId, stepMap);
21
+ }
22
+ /** Unregister branching for a tutorial. */
23
+ unregister(tutorialId) {
24
+ this.configs.delete(tutorialId);
25
+ }
26
+ /** Check if a step has branching rules. */
27
+ hasBranching(tutorialId, stepId) {
28
+ const map = this.configs.get(tutorialId);
29
+ return map ? map.has(stepId) : false;
30
+ }
31
+ /**
32
+ * Resolve the next step ID based on branching rules and context.
33
+ * Returns null if no branching is defined (use default sequential advance).
34
+ */
35
+ resolveNextStep(tutorialId, currentStepId, context) {
36
+ var _a;
37
+ const map = this.configs.get(tutorialId);
38
+ if (!map)
39
+ return null;
40
+ const branch = map.get(currentStepId);
41
+ if (!branch)
42
+ return null;
43
+ for (const rule of branch.rules) {
44
+ if (this.evaluateCondition(rule.condition, context)) {
45
+ return rule.targetStepId;
46
+ }
47
+ }
48
+ return (_a = branch.fallbackStepId) !== null && _a !== void 0 ? _a : null;
49
+ }
50
+ evaluateCondition(condition, ctx) {
51
+ switch (condition.type) {
52
+ case 'quiz-correct':
53
+ return ctx.quizCorrect === true;
54
+ case 'quiz-incorrect':
55
+ return ctx.quizCorrect === false;
56
+ case 'quiz-answer':
57
+ return ctx.quizAnswerId === condition.answerId;
58
+ case 'code-valid':
59
+ return ctx.codeValid === true;
60
+ case 'code-invalid':
61
+ return ctx.codeValid === false;
62
+ case 'always':
63
+ return true;
64
+ default:
65
+ return false;
66
+ }
67
+ }
68
+ }
69
+ class AchievementEngine {
70
+ constructor(persistToStorage = true) {
71
+ this.persistToStorage = persistToStorage;
72
+ this.events = new EventBus();
73
+ this.definitions = new Map();
74
+ this.playerProgress = new Map();
75
+ this.customEvaluators = new Map();
76
+ this.storageKey = 'nice2dev_achievements';
77
+ if (this.persistToStorage)
78
+ this.load();
79
+ }
80
+ /* ── Registration ───────────────────────────────────────────── */
81
+ /** Register an achievement definition. */
82
+ registerAchievement(def) {
83
+ this.definitions.set(def.id, def);
84
+ if (!this.playerProgress.has(def.id)) {
85
+ this.playerProgress.set(def.id, {
86
+ achievementId: def.id,
87
+ unlocked: false,
88
+ progress: 0,
89
+ });
90
+ }
91
+ }
92
+ /** Register multiple achievements. */
93
+ registerAchievements(defs) {
94
+ for (const d of defs)
95
+ this.registerAchievement(d);
96
+ }
97
+ /** Register a custom evaluator for custom conditions. */
98
+ registerCustomEvaluator(customId, evaluator) {
99
+ this.customEvaluators.set(customId, evaluator);
100
+ }
101
+ /* ── Evaluation ─────────────────────────────────────────────── */
102
+ /**
103
+ * Evaluate all achievements against current tutorial progress.
104
+ * Returns newly unlocked achievement IDs.
105
+ */
106
+ evaluate(tutorialProgress, streakDays = 0) {
107
+ const newlyUnlocked = [];
108
+ for (const [id, def] of this.definitions) {
109
+ const prog = this.playerProgress.get(id);
110
+ if (!prog || prog.unlocked)
111
+ continue;
112
+ const result = this.evaluateCondition(def.condition, tutorialProgress, streakDays);
113
+ prog.progress = result.progress;
114
+ if (result.met && !prog.unlocked) {
115
+ prog.unlocked = true;
116
+ prog.unlockedAt = Date.now();
117
+ newlyUnlocked.push(id);
118
+ this.events.emit('achievement:unlocked', {
119
+ achievementId: id,
120
+ definition: def,
121
+ xp: def.xp,
122
+ });
123
+ }
124
+ }
125
+ if (newlyUnlocked.length > 0)
126
+ this.save();
127
+ return newlyUnlocked;
128
+ }
129
+ evaluateCondition(cond, progress, streakDays) {
130
+ var _a, _b;
131
+ switch (cond.type) {
132
+ case 'tutorial-complete': {
133
+ if (!cond.tutorialId)
134
+ return { met: false, progress: 0 };
135
+ const tp = progress.get(cond.tutorialId);
136
+ return { met: (tp === null || tp === void 0 ? void 0 : tp.completed) === true, progress: (tp === null || tp === void 0 ? void 0 : tp.completed) ? 1 : 0 };
137
+ }
138
+ case 'tutorials-count': {
139
+ const target = (_a = cond.count) !== null && _a !== void 0 ? _a : 1;
140
+ let completed = 0;
141
+ for (const p of progress.values()) {
142
+ if (p.completed)
143
+ completed++;
144
+ }
145
+ return { met: completed >= target, progress: Math.min(1, completed / target) };
146
+ }
147
+ case 'category-complete': {
148
+ // All tutorials in a category — checked via custom evaluator since
149
+ // we don't have the tutorial definitions here
150
+ const evaluator = cond.category ? this.customEvaluators.get(`category:${cond.category}`) : undefined;
151
+ if (evaluator)
152
+ return evaluator();
153
+ return { met: false, progress: 0 };
154
+ }
155
+ case 'streak': {
156
+ const target = (_b = cond.streakDays) !== null && _b !== void 0 ? _b : 1;
157
+ return { met: streakDays >= target, progress: Math.min(1, streakDays / target) };
158
+ }
159
+ case 'quiz-perfect': {
160
+ // All quizzes answered correctly
161
+ let totalQuizzes = 0;
162
+ let perfectQuizzes = 0;
163
+ for (const p of progress.values()) {
164
+ for (const correct of Object.values(p.quizScores)) {
165
+ totalQuizzes++;
166
+ if (correct)
167
+ perfectQuizzes++;
168
+ }
169
+ }
170
+ if (totalQuizzes === 0)
171
+ return { met: false, progress: 0 };
172
+ const ratio = perfectQuizzes / totalQuizzes;
173
+ return { met: ratio >= 1, progress: ratio };
174
+ }
175
+ case 'custom': {
176
+ if (!cond.customId)
177
+ return { met: false, progress: 0 };
178
+ const evaluator = this.customEvaluators.get(cond.customId);
179
+ if (evaluator)
180
+ return evaluator();
181
+ return { met: false, progress: 0 };
182
+ }
183
+ default:
184
+ return { met: false, progress: 0 };
185
+ }
186
+ }
187
+ /* ── Queries ────────────────────────────────────────────────── */
188
+ /** Get all achievement definitions. */
189
+ getAllAchievements() {
190
+ return Array.from(this.definitions.values());
191
+ }
192
+ /** Get unlocked achievements. */
193
+ getUnlocked() {
194
+ const result = [];
195
+ for (const [id, prog] of this.playerProgress) {
196
+ if (prog.unlocked) {
197
+ const def = this.definitions.get(id);
198
+ if (def)
199
+ result.push(def);
200
+ }
201
+ }
202
+ return result;
203
+ }
204
+ /** Get progress for a specific achievement. */
205
+ getProgress(achievementId) {
206
+ return this.playerProgress.get(achievementId);
207
+ }
208
+ /** Total XP from unlocked achievements. */
209
+ getTotalXP() {
210
+ let xp = 0;
211
+ for (const [id, prog] of this.playerProgress) {
212
+ if (prog.unlocked) {
213
+ const def = this.definitions.get(id);
214
+ if (def)
215
+ xp += def.xp;
216
+ }
217
+ }
218
+ return xp;
219
+ }
220
+ /** Get visible achievements (not hidden, or hidden but unlocked). */
221
+ getVisible(locale = 'en') {
222
+ var _a, _b;
223
+ const result = [];
224
+ for (const [id, def] of this.definitions) {
225
+ const prog = this.playerProgress.get(id);
226
+ const unlocked = (_a = prog === null || prog === void 0 ? void 0 : prog.unlocked) !== null && _a !== void 0 ? _a : false;
227
+ if (def.hidden && !unlocked)
228
+ continue;
229
+ result.push({
230
+ ...def,
231
+ unlocked,
232
+ progress: (_b = prog === null || prog === void 0 ? void 0 : prog.progress) !== null && _b !== void 0 ? _b : 0,
233
+ });
234
+ }
235
+ return result;
236
+ }
237
+ /** Reset all progress. */
238
+ reset() {
239
+ for (const prog of this.playerProgress.values()) {
240
+ prog.unlocked = false;
241
+ prog.unlockedAt = undefined;
242
+ prog.progress = 0;
243
+ }
244
+ this.save();
245
+ }
246
+ /* ── Persistence ────────────────────────────────────────────── */
247
+ save() {
248
+ if (!this.persistToStorage)
249
+ return;
250
+ try {
251
+ const data = {};
252
+ for (const [id, prog] of this.playerProgress) {
253
+ data[id] = prog;
254
+ }
255
+ localStorage.setItem(this.storageKey, JSON.stringify(data));
256
+ }
257
+ catch ( /* storage unavailable */_a) { /* storage unavailable */ }
258
+ }
259
+ load() {
260
+ try {
261
+ const raw = localStorage.getItem(this.storageKey);
262
+ if (!raw)
263
+ return;
264
+ const data = JSON.parse(raw);
265
+ for (const [id, prog] of Object.entries(data)) {
266
+ this.playerProgress.set(id, prog);
267
+ }
268
+ }
269
+ catch ( /* ignore */_a) { /* ignore */ }
270
+ }
271
+ }
272
+ /* ══════════════════════════════════════════════════════════════
273
+ Built-in Achievement Definitions
274
+ ══════════════════════════════════════════════════════════════ */
275
+ const BUILT_IN_ACHIEVEMENTS = [
276
+ {
277
+ id: 'first-tutorial',
278
+ title: { en: 'First Steps', pl: 'Pierwsze kroki', de: 'Erste Schritte' },
279
+ description: { en: 'Complete your first tutorial', pl: 'Ukończ swój pierwszy tutorial', de: 'Schließe dein erstes Tutorial ab' },
280
+ icon: '🎉',
281
+ tier: 'bronze',
282
+ xp: 10,
283
+ condition: { type: 'tutorials-count', count: 1 },
284
+ },
285
+ {
286
+ id: 'five-tutorials',
287
+ title: { en: 'Getting Serious', pl: 'Robi się poważnie', de: 'Es wird ernst' },
288
+ description: { en: 'Complete 5 tutorials', pl: 'Ukończ 5 tutoriali', de: 'Schließe 5 Tutorials ab' },
289
+ icon: '📚',
290
+ tier: 'silver',
291
+ xp: 50,
292
+ condition: { type: 'tutorials-count', count: 5 },
293
+ },
294
+ {
295
+ id: 'ten-tutorials',
296
+ title: { en: 'Tutorial Master', pl: 'Mistrz tutoriali', de: 'Tutorial-Meister' },
297
+ description: { en: 'Complete 10 tutorials', pl: 'Ukończ 10 tutoriali', de: 'Schließe 10 Tutorials ab' },
298
+ icon: '🏅',
299
+ tier: 'gold',
300
+ xp: 100,
301
+ condition: { type: 'tutorials-count', count: 10 },
302
+ },
303
+ {
304
+ id: 'all-fifteen',
305
+ title: { en: 'Legend', pl: 'Legenda', de: 'Legende' },
306
+ description: { en: 'Complete all 15 game engine tutorials', pl: 'Ukończ wszystkie 15 tutoriali game engine', de: 'Schließe alle 15 Game-Engine-Tutorials ab' },
307
+ icon: '👑',
308
+ tier: 'diamond',
309
+ xp: 500,
310
+ condition: { type: 'tutorials-count', count: 15 },
311
+ },
312
+ {
313
+ id: 'first-game',
314
+ title: { en: 'Game Creator', pl: 'Twórca gier', de: 'Spieleentwickler' },
315
+ description: { en: 'Complete the "Build a Platformer" tutorial', pl: 'Ukończ tutorial "Zrób platformera"', de: 'Schließe das "Build a Platformer" Tutorial ab' },
316
+ icon: '🎮',
317
+ tier: 'gold',
318
+ xp: 75,
319
+ condition: { type: 'tutorial-complete', tutorialId: 'build-a-platformer' },
320
+ },
321
+ {
322
+ id: 'rpg-master',
323
+ title: { en: 'RPG Architect', pl: 'Architekt RPG', de: 'RPG-Architekt' },
324
+ description: { en: 'Complete the "Build an RPG" tutorial', pl: 'Ukończ tutorial "Zrób RPG"', de: 'Schließe das "Build an RPG" Tutorial ab' },
325
+ icon: '⚔️',
326
+ tier: 'gold',
327
+ xp: 75,
328
+ condition: { type: 'tutorial-complete', tutorialId: 'build-an-rpg' },
329
+ },
330
+ {
331
+ id: 'quiz-ace',
332
+ title: { en: 'Quiz Ace', pl: 'As quizów', de: 'Quiz-Ass' },
333
+ description: { en: 'Answer all quiz questions correctly', pl: 'Odpowiedz poprawnie na wszystkie quizy', de: 'Beantworte alle Quizfragen richtig' },
334
+ icon: '🧠',
335
+ tier: 'platinum',
336
+ xp: 200,
337
+ condition: { type: 'quiz-perfect' },
338
+ },
339
+ {
340
+ id: 'publisher',
341
+ title: { en: 'Publisher', pl: 'Wydawca', de: 'Publisher' },
342
+ description: { en: 'Complete the "Publish Your Game" tutorial', pl: 'Ukończ tutorial "Publikacja gry"', de: 'Schließe das "Publish Your Game" Tutorial ab' },
343
+ icon: '🚀',
344
+ tier: 'silver',
345
+ xp: 50,
346
+ condition: { type: 'tutorial-complete', tutorialId: 'publish-your-game' },
347
+ },
348
+ {
349
+ id: 'week-streak',
350
+ title: { en: 'Dedicated', pl: 'Oddany', de: 'Engagiert' },
351
+ description: { en: 'Study for 7 consecutive days', pl: 'Ucz się przez 7 kolejnych dni', de: 'Lerne 7 Tage am Stück' },
352
+ icon: '🔥',
353
+ tier: 'silver',
354
+ xp: 50,
355
+ condition: { type: 'streak', streakDays: 7 },
356
+ },
357
+ {
358
+ id: 'month-streak',
359
+ title: { en: 'Unstoppable', pl: 'Niepokonany', de: 'Unaufhaltsam' },
360
+ description: { en: 'Study for 30 consecutive days', pl: 'Ucz się przez 30 kolejnych dni', de: 'Lerne 30 Tage am Stück' },
361
+ icon: '💎',
362
+ tier: 'diamond',
363
+ xp: 300,
364
+ condition: { type: 'streak', streakDays: 30 },
365
+ hidden: true,
366
+ },
367
+ {
368
+ id: '3d-pioneer',
369
+ title: { en: '3D Pioneer', pl: 'Pionier 3D', de: '3D-Pionier' },
370
+ description: { en: 'Complete the "Build a 3D Game" tutorial', pl: 'Ukończ tutorial "Zrób grę 3D"', de: 'Schließe das "3D-Spiel bauen" Tutorial ab' },
371
+ icon: '🌐',
372
+ tier: 'gold',
373
+ xp: 75,
374
+ condition: { type: 'tutorial-complete', tutorialId: 'build-a-3d-game' },
375
+ },
376
+ {
377
+ id: 'multiplayer-hero',
378
+ title: { en: 'Multiplayer Hero', pl: 'Bohater multiplayera', de: 'Multiplayer-Held' },
379
+ description: { en: 'Complete the online multiplayer tutorial', pl: 'Ukończ tutorial multiplayer online', de: 'Schließe das Online-Multiplayer-Tutorial ab' },
380
+ icon: '🌍',
381
+ tier: 'gold',
382
+ xp: 75,
383
+ condition: { type: 'tutorial-complete', tutorialId: 'multiplayer-online-webrtc' },
384
+ },
385
+ ];
386
+
387
+ export { AchievementEngine, BUILT_IN_ACHIEVEMENTS, BranchingEngine };
388
+ //# sourceMappingURL=TutorialBranching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TutorialBranching.js","sources":["../../../src/tutorials/TutorialBranching.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}