@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,208 @@
1
+ 'use strict';
2
+
3
+ /* ────────────────────────────────────────────────────────────────
4
+ Tilemap — Grid-based tile rendering and collision
5
+ ──────────────────────────────────────────────────────────────── */
6
+ /* ── Tilemap ──────────────────────────────────────────────────── */
7
+ class Tilemap {
8
+ constructor(width, height, tileWidth = 16, tileHeight = 16) {
9
+ this.tileset = null;
10
+ this.width = width;
11
+ this.height = height;
12
+ this.tileWidth = tileWidth;
13
+ this.tileHeight = tileHeight;
14
+ this.layers = [];
15
+ }
16
+ get pixelWidth() {
17
+ return this.width * this.tileWidth;
18
+ }
19
+ get pixelHeight() {
20
+ return this.height * this.tileHeight;
21
+ }
22
+ /* ── Tileset ────────────────────────────────────────────────── */
23
+ setTileset(ts) {
24
+ this.tileset = ts;
25
+ }
26
+ getTileset() {
27
+ return this.tileset;
28
+ }
29
+ /* ── Layers ─────────────────────────────────────────────────── */
30
+ addLayer(name) {
31
+ const data = [];
32
+ for (let y = 0; y < this.height; y++) {
33
+ data.push(new Array(this.width).fill(0));
34
+ }
35
+ const layer = { name, visible: true, opacity: 1, data };
36
+ this.layers.push(layer);
37
+ return layer;
38
+ }
39
+ getLayer(name) {
40
+ return this.layers.find(l => l.name === name);
41
+ }
42
+ getLayers() {
43
+ return this.layers;
44
+ }
45
+ /* ── Tile access ────────────────────────────────────────────── */
46
+ getTile(layerName, x, y) {
47
+ const layer = this.getLayer(layerName);
48
+ if (!layer || x < 0 || y < 0 || x >= this.width || y >= this.height)
49
+ return 0;
50
+ return layer.data[y][x];
51
+ }
52
+ setTile(layerName, x, y, tileId) {
53
+ const layer = this.getLayer(layerName);
54
+ if (!layer || x < 0 || y < 0 || x >= this.width || y >= this.height)
55
+ return;
56
+ layer.data[y][x] = tileId;
57
+ }
58
+ /** Fill a rectangle with a tile. */
59
+ fillRect(layerName, x, y, w, h, tileId) {
60
+ for (let iy = y; iy < y + h; iy++) {
61
+ for (let ix = x; ix < x + w; ix++) {
62
+ this.setTile(layerName, ix, iy, tileId);
63
+ }
64
+ }
65
+ }
66
+ /** Flood fill from a position. */
67
+ floodFill(layerName, x, y, tileId) {
68
+ const layer = this.getLayer(layerName);
69
+ if (!layer)
70
+ return;
71
+ const target = this.getTile(layerName, x, y);
72
+ if (target === tileId)
73
+ return;
74
+ const stack = [[x, y]];
75
+ const visited = new Set();
76
+ while (stack.length > 0) {
77
+ const [cx, cy] = stack.pop();
78
+ const key = `${cx},${cy}`;
79
+ if (visited.has(key))
80
+ continue;
81
+ visited.add(key);
82
+ if (cx < 0 || cy < 0 || cx >= this.width || cy >= this.height)
83
+ continue;
84
+ if (layer.data[cy][cx] !== target)
85
+ continue;
86
+ layer.data[cy][cx] = tileId;
87
+ stack.push([cx + 1, cy], [cx - 1, cy], [cx, cy + 1], [cx, cy - 1]);
88
+ }
89
+ }
90
+ /* ── World ↔ Tile coordinates ───────────────────────────────── */
91
+ worldToTile(worldX, worldY) {
92
+ return {
93
+ x: Math.floor(worldX / this.tileWidth),
94
+ y: Math.floor(worldY / this.tileHeight),
95
+ };
96
+ }
97
+ tileToWorld(tileX, tileY) {
98
+ return {
99
+ x: tileX * this.tileWidth + this.tileWidth / 2,
100
+ y: tileY * this.tileHeight + this.tileHeight / 2,
101
+ };
102
+ }
103
+ /* ── Collision query ────────────────────────────────────────── */
104
+ isSolid(tileX, tileY) {
105
+ var _a;
106
+ if (!this.tileset)
107
+ return false;
108
+ for (const layer of this.layers) {
109
+ const id = (_a = layer.data[tileY]) === null || _a === void 0 ? void 0 : _a[tileX];
110
+ if (id) {
111
+ const def = this.tileset.tiles.find(t => t.id === id);
112
+ if (def === null || def === void 0 ? void 0 : def.solid)
113
+ return true;
114
+ }
115
+ }
116
+ return false;
117
+ }
118
+ /** Get all solid tiles overlapping a world-space AABB. */
119
+ getSolidTilesInRect(rect) {
120
+ const result = [];
121
+ const x0 = Math.max(0, Math.floor(rect.x / this.tileWidth));
122
+ const y0 = Math.max(0, Math.floor(rect.y / this.tileHeight));
123
+ const x1 = Math.min(this.width - 1, Math.floor((rect.x + rect.width) / this.tileWidth));
124
+ const y1 = Math.min(this.height - 1, Math.floor((rect.y + rect.height) / this.tileHeight));
125
+ for (let y = y0; y <= y1; y++) {
126
+ for (let x = x0; x <= x1; x++) {
127
+ if (this.isSolid(x, y))
128
+ result.push({ x, y });
129
+ }
130
+ }
131
+ return result;
132
+ }
133
+ /* ── Rendering ──────────────────────────────────────────────── */
134
+ render(ctx, tilesetImage, camera) {
135
+ if (!this.tileset)
136
+ return;
137
+ const ts = this.tileset;
138
+ const tw = this.tileWidth;
139
+ const th = this.tileHeight;
140
+ // Only render visible tiles
141
+ const x0 = Math.max(0, Math.floor(camera.x / tw));
142
+ const y0 = Math.max(0, Math.floor(camera.y / th));
143
+ const x1 = Math.min(this.width - 1, Math.ceil((camera.x + camera.width) / tw));
144
+ const y1 = Math.min(this.height - 1, Math.ceil((camera.y + camera.height) / th));
145
+ for (const layer of this.layers) {
146
+ if (!layer.visible)
147
+ continue;
148
+ ctx.globalAlpha = layer.opacity;
149
+ for (let y = y0; y <= y1; y++) {
150
+ for (let x = x0; x <= x1; x++) {
151
+ const tileId = layer.data[y][x];
152
+ if (tileId === 0)
153
+ continue;
154
+ const def = ts.tiles.find(t => t.id === tileId);
155
+ if (!def)
156
+ continue;
157
+ const sr = def.srcRect;
158
+ ctx.drawImage(tilesetImage, sr.x, sr.y, sr.width, sr.height, x * tw, y * th, tw, th);
159
+ }
160
+ }
161
+ }
162
+ ctx.globalAlpha = 1;
163
+ }
164
+ /* ── Serialization ──────────────────────────────────────────── */
165
+ toJSON() {
166
+ var _a, _b;
167
+ return {
168
+ width: this.width,
169
+ height: this.height,
170
+ tileWidth: this.tileWidth,
171
+ tileHeight: this.tileHeight,
172
+ tilesetId: (_b = (_a = this.tileset) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : '',
173
+ layers: this.layers.map(l => ({
174
+ name: l.name,
175
+ visible: l.visible,
176
+ opacity: l.opacity,
177
+ data: l.data.map(row => [...row]),
178
+ })),
179
+ };
180
+ }
181
+ static fromJSON(data) {
182
+ const map = new Tilemap(data.width, data.height, data.tileWidth, data.tileHeight);
183
+ for (const layerData of data.layers) {
184
+ const layer = map.addLayer(layerData.name);
185
+ layer.visible = layerData.visible;
186
+ layer.opacity = layerData.opacity;
187
+ layer.data = layerData.data.map(row => [...row]);
188
+ }
189
+ return map;
190
+ }
191
+ }
192
+ /* ── Auto-tiling (4-bit bitmask) ──────────────────────────────── */
193
+ function computeAutoTileMask(map, layerName, x, y) {
194
+ let mask = 0;
195
+ if (map.getTile(layerName, x, y - 1) > 0)
196
+ mask |= 1; // top
197
+ if (map.getTile(layerName, x + 1, y) > 0)
198
+ mask |= 2; // right
199
+ if (map.getTile(layerName, x, y + 1) > 0)
200
+ mask |= 4; // bottom
201
+ if (map.getTile(layerName, x - 1, y) > 0)
202
+ mask |= 8; // left
203
+ return mask;
204
+ }
205
+
206
+ exports.Tilemap = Tilemap;
207
+ exports.computeAutoTileMask = computeAutoTileMask;
208
+ //# 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,392 @@
1
+ 'use strict';
2
+
3
+ var EventBus = require('../core/EventBus.js');
4
+
5
+ /* ────────────────────────────────────────────────────────────────
6
+ Tutorial Branching & Achievement System — LEGENDARY L4
7
+
8
+ • Conditional branching (step → step based on quiz results / choices)
9
+ • Achievement / badge engine tied to tutorial completions
10
+ • Progress-based unlocking logic
11
+ ──────────────────────────────────────────────────────────────── */
12
+ class BranchingEngine {
13
+ constructor() {
14
+ this.configs = new Map();
15
+ }
16
+ /** Register branching configuration for a tutorial. */
17
+ register(config) {
18
+ const stepMap = new Map();
19
+ for (const branch of config.branches) {
20
+ stepMap.set(branch.stepId, branch);
21
+ }
22
+ this.configs.set(config.tutorialId, stepMap);
23
+ }
24
+ /** Unregister branching for a tutorial. */
25
+ unregister(tutorialId) {
26
+ this.configs.delete(tutorialId);
27
+ }
28
+ /** Check if a step has branching rules. */
29
+ hasBranching(tutorialId, stepId) {
30
+ const map = this.configs.get(tutorialId);
31
+ return map ? map.has(stepId) : false;
32
+ }
33
+ /**
34
+ * Resolve the next step ID based on branching rules and context.
35
+ * Returns null if no branching is defined (use default sequential advance).
36
+ */
37
+ resolveNextStep(tutorialId, currentStepId, context) {
38
+ var _a;
39
+ const map = this.configs.get(tutorialId);
40
+ if (!map)
41
+ return null;
42
+ const branch = map.get(currentStepId);
43
+ if (!branch)
44
+ return null;
45
+ for (const rule of branch.rules) {
46
+ if (this.evaluateCondition(rule.condition, context)) {
47
+ return rule.targetStepId;
48
+ }
49
+ }
50
+ return (_a = branch.fallbackStepId) !== null && _a !== void 0 ? _a : null;
51
+ }
52
+ evaluateCondition(condition, ctx) {
53
+ switch (condition.type) {
54
+ case 'quiz-correct':
55
+ return ctx.quizCorrect === true;
56
+ case 'quiz-incorrect':
57
+ return ctx.quizCorrect === false;
58
+ case 'quiz-answer':
59
+ return ctx.quizAnswerId === condition.answerId;
60
+ case 'code-valid':
61
+ return ctx.codeValid === true;
62
+ case 'code-invalid':
63
+ return ctx.codeValid === false;
64
+ case 'always':
65
+ return true;
66
+ default:
67
+ return false;
68
+ }
69
+ }
70
+ }
71
+ class AchievementEngine {
72
+ constructor(persistToStorage = true) {
73
+ this.persistToStorage = persistToStorage;
74
+ this.events = new EventBus.EventBus();
75
+ this.definitions = new Map();
76
+ this.playerProgress = new Map();
77
+ this.customEvaluators = new Map();
78
+ this.storageKey = 'nice2dev_achievements';
79
+ if (this.persistToStorage)
80
+ this.load();
81
+ }
82
+ /* ── Registration ───────────────────────────────────────────── */
83
+ /** Register an achievement definition. */
84
+ registerAchievement(def) {
85
+ this.definitions.set(def.id, def);
86
+ if (!this.playerProgress.has(def.id)) {
87
+ this.playerProgress.set(def.id, {
88
+ achievementId: def.id,
89
+ unlocked: false,
90
+ progress: 0,
91
+ });
92
+ }
93
+ }
94
+ /** Register multiple achievements. */
95
+ registerAchievements(defs) {
96
+ for (const d of defs)
97
+ this.registerAchievement(d);
98
+ }
99
+ /** Register a custom evaluator for custom conditions. */
100
+ registerCustomEvaluator(customId, evaluator) {
101
+ this.customEvaluators.set(customId, evaluator);
102
+ }
103
+ /* ── Evaluation ─────────────────────────────────────────────── */
104
+ /**
105
+ * Evaluate all achievements against current tutorial progress.
106
+ * Returns newly unlocked achievement IDs.
107
+ */
108
+ evaluate(tutorialProgress, streakDays = 0) {
109
+ const newlyUnlocked = [];
110
+ for (const [id, def] of this.definitions) {
111
+ const prog = this.playerProgress.get(id);
112
+ if (!prog || prog.unlocked)
113
+ continue;
114
+ const result = this.evaluateCondition(def.condition, tutorialProgress, streakDays);
115
+ prog.progress = result.progress;
116
+ if (result.met && !prog.unlocked) {
117
+ prog.unlocked = true;
118
+ prog.unlockedAt = Date.now();
119
+ newlyUnlocked.push(id);
120
+ this.events.emit('achievement:unlocked', {
121
+ achievementId: id,
122
+ definition: def,
123
+ xp: def.xp,
124
+ });
125
+ }
126
+ }
127
+ if (newlyUnlocked.length > 0)
128
+ this.save();
129
+ return newlyUnlocked;
130
+ }
131
+ evaluateCondition(cond, progress, streakDays) {
132
+ var _a, _b;
133
+ switch (cond.type) {
134
+ case 'tutorial-complete': {
135
+ if (!cond.tutorialId)
136
+ return { met: false, progress: 0 };
137
+ const tp = progress.get(cond.tutorialId);
138
+ return { met: (tp === null || tp === void 0 ? void 0 : tp.completed) === true, progress: (tp === null || tp === void 0 ? void 0 : tp.completed) ? 1 : 0 };
139
+ }
140
+ case 'tutorials-count': {
141
+ const target = (_a = cond.count) !== null && _a !== void 0 ? _a : 1;
142
+ let completed = 0;
143
+ for (const p of progress.values()) {
144
+ if (p.completed)
145
+ completed++;
146
+ }
147
+ return { met: completed >= target, progress: Math.min(1, completed / target) };
148
+ }
149
+ case 'category-complete': {
150
+ // All tutorials in a category — checked via custom evaluator since
151
+ // we don't have the tutorial definitions here
152
+ const evaluator = cond.category ? this.customEvaluators.get(`category:${cond.category}`) : undefined;
153
+ if (evaluator)
154
+ return evaluator();
155
+ return { met: false, progress: 0 };
156
+ }
157
+ case 'streak': {
158
+ const target = (_b = cond.streakDays) !== null && _b !== void 0 ? _b : 1;
159
+ return { met: streakDays >= target, progress: Math.min(1, streakDays / target) };
160
+ }
161
+ case 'quiz-perfect': {
162
+ // All quizzes answered correctly
163
+ let totalQuizzes = 0;
164
+ let perfectQuizzes = 0;
165
+ for (const p of progress.values()) {
166
+ for (const correct of Object.values(p.quizScores)) {
167
+ totalQuizzes++;
168
+ if (correct)
169
+ perfectQuizzes++;
170
+ }
171
+ }
172
+ if (totalQuizzes === 0)
173
+ return { met: false, progress: 0 };
174
+ const ratio = perfectQuizzes / totalQuizzes;
175
+ return { met: ratio >= 1, progress: ratio };
176
+ }
177
+ case 'custom': {
178
+ if (!cond.customId)
179
+ return { met: false, progress: 0 };
180
+ const evaluator = this.customEvaluators.get(cond.customId);
181
+ if (evaluator)
182
+ return evaluator();
183
+ return { met: false, progress: 0 };
184
+ }
185
+ default:
186
+ return { met: false, progress: 0 };
187
+ }
188
+ }
189
+ /* ── Queries ────────────────────────────────────────────────── */
190
+ /** Get all achievement definitions. */
191
+ getAllAchievements() {
192
+ return Array.from(this.definitions.values());
193
+ }
194
+ /** Get unlocked achievements. */
195
+ getUnlocked() {
196
+ const result = [];
197
+ for (const [id, prog] of this.playerProgress) {
198
+ if (prog.unlocked) {
199
+ const def = this.definitions.get(id);
200
+ if (def)
201
+ result.push(def);
202
+ }
203
+ }
204
+ return result;
205
+ }
206
+ /** Get progress for a specific achievement. */
207
+ getProgress(achievementId) {
208
+ return this.playerProgress.get(achievementId);
209
+ }
210
+ /** Total XP from unlocked achievements. */
211
+ getTotalXP() {
212
+ let xp = 0;
213
+ for (const [id, prog] of this.playerProgress) {
214
+ if (prog.unlocked) {
215
+ const def = this.definitions.get(id);
216
+ if (def)
217
+ xp += def.xp;
218
+ }
219
+ }
220
+ return xp;
221
+ }
222
+ /** Get visible achievements (not hidden, or hidden but unlocked). */
223
+ getVisible(locale = 'en') {
224
+ var _a, _b;
225
+ const result = [];
226
+ for (const [id, def] of this.definitions) {
227
+ const prog = this.playerProgress.get(id);
228
+ const unlocked = (_a = prog === null || prog === void 0 ? void 0 : prog.unlocked) !== null && _a !== void 0 ? _a : false;
229
+ if (def.hidden && !unlocked)
230
+ continue;
231
+ result.push({
232
+ ...def,
233
+ unlocked,
234
+ progress: (_b = prog === null || prog === void 0 ? void 0 : prog.progress) !== null && _b !== void 0 ? _b : 0,
235
+ });
236
+ }
237
+ return result;
238
+ }
239
+ /** Reset all progress. */
240
+ reset() {
241
+ for (const prog of this.playerProgress.values()) {
242
+ prog.unlocked = false;
243
+ prog.unlockedAt = undefined;
244
+ prog.progress = 0;
245
+ }
246
+ this.save();
247
+ }
248
+ /* ── Persistence ────────────────────────────────────────────── */
249
+ save() {
250
+ if (!this.persistToStorage)
251
+ return;
252
+ try {
253
+ const data = {};
254
+ for (const [id, prog] of this.playerProgress) {
255
+ data[id] = prog;
256
+ }
257
+ localStorage.setItem(this.storageKey, JSON.stringify(data));
258
+ }
259
+ catch ( /* storage unavailable */_a) { /* storage unavailable */ }
260
+ }
261
+ load() {
262
+ try {
263
+ const raw = localStorage.getItem(this.storageKey);
264
+ if (!raw)
265
+ return;
266
+ const data = JSON.parse(raw);
267
+ for (const [id, prog] of Object.entries(data)) {
268
+ this.playerProgress.set(id, prog);
269
+ }
270
+ }
271
+ catch ( /* ignore */_a) { /* ignore */ }
272
+ }
273
+ }
274
+ /* ══════════════════════════════════════════════════════════════
275
+ Built-in Achievement Definitions
276
+ ══════════════════════════════════════════════════════════════ */
277
+ const BUILT_IN_ACHIEVEMENTS = [
278
+ {
279
+ id: 'first-tutorial',
280
+ title: { en: 'First Steps', pl: 'Pierwsze kroki', de: 'Erste Schritte' },
281
+ description: { en: 'Complete your first tutorial', pl: 'Ukończ swój pierwszy tutorial', de: 'Schließe dein erstes Tutorial ab' },
282
+ icon: '🎉',
283
+ tier: 'bronze',
284
+ xp: 10,
285
+ condition: { type: 'tutorials-count', count: 1 },
286
+ },
287
+ {
288
+ id: 'five-tutorials',
289
+ title: { en: 'Getting Serious', pl: 'Robi się poważnie', de: 'Es wird ernst' },
290
+ description: { en: 'Complete 5 tutorials', pl: 'Ukończ 5 tutoriali', de: 'Schließe 5 Tutorials ab' },
291
+ icon: '📚',
292
+ tier: 'silver',
293
+ xp: 50,
294
+ condition: { type: 'tutorials-count', count: 5 },
295
+ },
296
+ {
297
+ id: 'ten-tutorials',
298
+ title: { en: 'Tutorial Master', pl: 'Mistrz tutoriali', de: 'Tutorial-Meister' },
299
+ description: { en: 'Complete 10 tutorials', pl: 'Ukończ 10 tutoriali', de: 'Schließe 10 Tutorials ab' },
300
+ icon: '🏅',
301
+ tier: 'gold',
302
+ xp: 100,
303
+ condition: { type: 'tutorials-count', count: 10 },
304
+ },
305
+ {
306
+ id: 'all-fifteen',
307
+ title: { en: 'Legend', pl: 'Legenda', de: 'Legende' },
308
+ 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' },
309
+ icon: '👑',
310
+ tier: 'diamond',
311
+ xp: 500,
312
+ condition: { type: 'tutorials-count', count: 15 },
313
+ },
314
+ {
315
+ id: 'first-game',
316
+ title: { en: 'Game Creator', pl: 'Twórca gier', de: 'Spieleentwickler' },
317
+ description: { en: 'Complete the "Build a Platformer" tutorial', pl: 'Ukończ tutorial "Zrób platformera"', de: 'Schließe das "Build a Platformer" Tutorial ab' },
318
+ icon: '🎮',
319
+ tier: 'gold',
320
+ xp: 75,
321
+ condition: { type: 'tutorial-complete', tutorialId: 'build-a-platformer' },
322
+ },
323
+ {
324
+ id: 'rpg-master',
325
+ title: { en: 'RPG Architect', pl: 'Architekt RPG', de: 'RPG-Architekt' },
326
+ description: { en: 'Complete the "Build an RPG" tutorial', pl: 'Ukończ tutorial "Zrób RPG"', de: 'Schließe das "Build an RPG" Tutorial ab' },
327
+ icon: '⚔️',
328
+ tier: 'gold',
329
+ xp: 75,
330
+ condition: { type: 'tutorial-complete', tutorialId: 'build-an-rpg' },
331
+ },
332
+ {
333
+ id: 'quiz-ace',
334
+ title: { en: 'Quiz Ace', pl: 'As quizów', de: 'Quiz-Ass' },
335
+ description: { en: 'Answer all quiz questions correctly', pl: 'Odpowiedz poprawnie na wszystkie quizy', de: 'Beantworte alle Quizfragen richtig' },
336
+ icon: '🧠',
337
+ tier: 'platinum',
338
+ xp: 200,
339
+ condition: { type: 'quiz-perfect' },
340
+ },
341
+ {
342
+ id: 'publisher',
343
+ title: { en: 'Publisher', pl: 'Wydawca', de: 'Publisher' },
344
+ description: { en: 'Complete the "Publish Your Game" tutorial', pl: 'Ukończ tutorial "Publikacja gry"', de: 'Schließe das "Publish Your Game" Tutorial ab' },
345
+ icon: '🚀',
346
+ tier: 'silver',
347
+ xp: 50,
348
+ condition: { type: 'tutorial-complete', tutorialId: 'publish-your-game' },
349
+ },
350
+ {
351
+ id: 'week-streak',
352
+ title: { en: 'Dedicated', pl: 'Oddany', de: 'Engagiert' },
353
+ description: { en: 'Study for 7 consecutive days', pl: 'Ucz się przez 7 kolejnych dni', de: 'Lerne 7 Tage am Stück' },
354
+ icon: '🔥',
355
+ tier: 'silver',
356
+ xp: 50,
357
+ condition: { type: 'streak', streakDays: 7 },
358
+ },
359
+ {
360
+ id: 'month-streak',
361
+ title: { en: 'Unstoppable', pl: 'Niepokonany', de: 'Unaufhaltsam' },
362
+ description: { en: 'Study for 30 consecutive days', pl: 'Ucz się przez 30 kolejnych dni', de: 'Lerne 30 Tage am Stück' },
363
+ icon: '💎',
364
+ tier: 'diamond',
365
+ xp: 300,
366
+ condition: { type: 'streak', streakDays: 30 },
367
+ hidden: true,
368
+ },
369
+ {
370
+ id: '3d-pioneer',
371
+ title: { en: '3D Pioneer', pl: 'Pionier 3D', de: '3D-Pionier' },
372
+ 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' },
373
+ icon: '🌐',
374
+ tier: 'gold',
375
+ xp: 75,
376
+ condition: { type: 'tutorial-complete', tutorialId: 'build-a-3d-game' },
377
+ },
378
+ {
379
+ id: 'multiplayer-hero',
380
+ title: { en: 'Multiplayer Hero', pl: 'Bohater multiplayera', de: 'Multiplayer-Held' },
381
+ description: { en: 'Complete the online multiplayer tutorial', pl: 'Ukończ tutorial multiplayer online', de: 'Schließe das Online-Multiplayer-Tutorial ab' },
382
+ icon: '🌍',
383
+ tier: 'gold',
384
+ xp: 75,
385
+ condition: { type: 'tutorial-complete', tutorialId: 'multiplayer-online-webrtc' },
386
+ },
387
+ ];
388
+
389
+ exports.AchievementEngine = AchievementEngine;
390
+ exports.BUILT_IN_ACHIEVEMENTS = BUILT_IN_ACHIEVEMENTS;
391
+ exports.BranchingEngine = BranchingEngine;
392
+ //# sourceMappingURL=TutorialBranching.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TutorialBranching.js","sources":["../../../src/tutorials/TutorialBranching.ts"],"sourcesContent":[null],"names":["EventBus"],"mappings":"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"}