brick-engine-js 1.0.1

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 (477) hide show
  1. package/.env.local.example +2 -0
  2. package/.github/workflows/publish.yml +73 -0
  3. package/.prettierignore +2 -0
  4. package/.prettierrc.json +8 -0
  5. package/README.adoc +84 -0
  6. package/dist/8e23286c2fdf41fd795f.svg +32 -0
  7. package/dist/CNAME +1 -0
  8. package/dist/app.js +2 -0
  9. package/dist/app.js.map +1 -0
  10. package/dist/brick-engine.js +2 -0
  11. package/dist/brick-engine.js.map +1 -0
  12. package/dist/config/configs.d.ts +180 -0
  13. package/dist/config/configs.test.d.ts +1 -0
  14. package/dist/config/env.d.ts +2 -0
  15. package/dist/config/env.test.d.ts +1 -0
  16. package/dist/config/styles.d.ts +0 -0
  17. package/dist/core/Game.d.ts +107 -0
  18. package/dist/core/Game.test.d.ts +1 -0
  19. package/dist/core/InitialStateSnapshot.d.ts +19 -0
  20. package/dist/core/InitialStateSnapshot.test.d.ts +1 -0
  21. package/dist/core/helpers/CellHelper.d.ts +13 -0
  22. package/dist/core/helpers/CellHelper.test.d.ts +1 -0
  23. package/dist/core/helpers/ControlInputHandlerHelper.d.ts +32 -0
  24. package/dist/core/helpers/ControlInputHandlerHelper.test.d.ts +1 -0
  25. package/dist/core/helpers/CoordinateHelper.d.ts +54 -0
  26. package/dist/core/helpers/CoordinateHelper.test.d.ts +1 -0
  27. package/dist/core/helpers/InterfaceIdentifierHelper.d.ts +7 -0
  28. package/dist/core/helpers/InterfaceIdentifierHelper.test.d.ts +1 -0
  29. package/dist/core/helpers/RelativeValuesHelper.d.ts +23 -0
  30. package/dist/core/helpers/RelativeValuesHelper.test.d.ts +1 -0
  31. package/dist/core/module/control/GameControl.d.ts +62 -0
  32. package/dist/core/module/control/GameControl.test.d.ts +1 -0
  33. package/dist/core/module/control/GameControlKeyBinding.d.ts +36 -0
  34. package/dist/core/module/control/GameControlKeyBinding.test.d.ts +1 -0
  35. package/dist/core/module/grid/GameGrid.d.ts +399 -0
  36. package/dist/core/module/grid/GameGrid.test.d.ts +1 -0
  37. package/dist/core/module/grid/GameHudGrid.d.ts +24 -0
  38. package/dist/core/module/grid/GameHudGrid.test.d.ts +1 -0
  39. package/dist/core/module/grid/engines/GridAnalysisEngine.d.ts +29 -0
  40. package/dist/core/module/grid/engines/GridAnalysisEngine.test.d.ts +1 -0
  41. package/dist/core/module/grid/engines/GridLineEngine.d.ts +56 -0
  42. package/dist/core/module/grid/engines/GridLineEngine.test.d.ts +1 -0
  43. package/dist/core/module/grid/engines/GridMovementEngine.d.ts +29 -0
  44. package/dist/core/module/grid/engines/GridMovementEngine.test.d.ts +1 -0
  45. package/dist/core/module/grid/engines/GridRegionEngine.d.ts +26 -0
  46. package/dist/core/module/grid/engines/GridRegionEngine.test.d.ts +1 -0
  47. package/dist/core/module/grid/engines/GridTransformEngine.d.ts +24 -0
  48. package/dist/core/module/grid/engines/GridTransformEngine.test.d.ts +1 -0
  49. package/dist/core/module/renderer/DisplayRenderer.d.ts +51 -0
  50. package/dist/core/module/renderer/DisplayRenderer.test.d.ts +1 -0
  51. package/dist/core/module/renderer/GameRenderer.d.ts +59 -0
  52. package/dist/core/module/renderer/GameRenderer.test.d.ts +1 -0
  53. package/dist/core/module/renderer/HudRenderer.d.ts +56 -0
  54. package/dist/core/module/renderer/HudRenderer.test.d.ts +1 -0
  55. package/dist/core/module/score/GameScore.d.ts +117 -0
  56. package/dist/core/module/score/GameScore.test.d.ts +1 -0
  57. package/dist/core/module/session/GameSession.d.ts +20 -0
  58. package/dist/core/module/session/GameSession.test.d.ts +1 -0
  59. package/dist/core/module/sound/GameSound.d.ts +85 -0
  60. package/dist/core/module/sound/GameSound.test.d.ts +1 -0
  61. package/dist/core/module/state/GameState.d.ts +172 -0
  62. package/dist/core/module/state/GameState.test.d.ts +1 -0
  63. package/dist/core/module/text/GameText.d.ts +87 -0
  64. package/dist/core/module/text/GameText.test.d.ts +1 -0
  65. package/dist/core/module/time/GameTime.d.ts +76 -0
  66. package/dist/core/module/time/GameTime.test.d.ts +1 -0
  67. package/dist/core/types/Interfaces.d.ts +53 -0
  68. package/dist/core/types/Types.d.ts +114 -0
  69. package/dist/core/types/enums.d.ts +106 -0
  70. package/dist/core/types/modules.d.ts +723 -0
  71. package/dist/css/app.743066d8e4172b0e73f9.css +824 -0
  72. package/dist/css/app.743066d8e4172b0e73f9.css.map +1 -0
  73. package/dist/docs/GAME_DEVELOPER_GUIDE.html +727 -0
  74. package/dist/docs/brick-engine-guide.html +610 -0
  75. package/dist/docs/diagrams/lifecycle.mmd +19 -0
  76. package/dist/docs/documentation_style_guide.html +994 -0
  77. package/dist/docs/getting-started.html +648 -0
  78. package/dist/docs/images/lifecycle.svg +1 -0
  79. package/dist/docs/index.html +593 -0
  80. package/dist/docs/jsdoc_standard.html +656 -0
  81. package/dist/docs/publishing.html +573 -0
  82. package/dist/docs/reference/enums/Color.html +533 -0
  83. package/dist/docs/reference/enums/ControlEventType.html +505 -0
  84. package/dist/docs/reference/enums/ControlKey.html +529 -0
  85. package/dist/docs/reference/enums/FontAlignment.html +545 -0
  86. package/dist/docs/reference/enums/FontSize.html +517 -0
  87. package/dist/docs/reference/enums/Sound.html +558 -0
  88. package/dist/docs/reference/enums/StateProperty.html +525 -0
  89. package/dist/docs/reference/helpers/CellHelper.html +520 -0
  90. package/dist/docs/reference/helpers/ControlInputHandlerHelper.html +569 -0
  91. package/dist/docs/reference/helpers/CoordinateHelper.html +703 -0
  92. package/dist/docs/reference/helpers/RelativeValuesHelper.html +560 -0
  93. package/dist/docs/reference/interfaces/Debuggable.html +501 -0
  94. package/dist/docs/reference/interfaces/GameModules.html +544 -0
  95. package/dist/docs/reference/interfaces/Initializable.html +495 -0
  96. package/dist/docs/reference/interfaces/RendererInitializable.html +517 -0
  97. package/dist/docs/reference/interfaces/StateSyncable.html +542 -0
  98. package/dist/docs/reference/interfaces/modules/Control.html +648 -0
  99. package/dist/docs/reference/interfaces/modules/Grid.html +1256 -0
  100. package/dist/docs/reference/interfaces/modules/Renderer.html +522 -0
  101. package/dist/docs/reference/interfaces/modules/RendererComposite.html +577 -0
  102. package/dist/docs/reference/interfaces/modules/Score.html +669 -0
  103. package/dist/docs/reference/interfaces/modules/Session.html +585 -0
  104. package/dist/docs/reference/interfaces/modules/State.html +897 -0
  105. package/dist/docs/reference/interfaces/modules/Text.html +668 -0
  106. package/dist/docs/reference/interfaces/modules/Time.html +684 -0
  107. package/dist/docs/reference/modules/Debugger.html +579 -0
  108. package/dist/docs/reference/modules/DisplayRenderer.html +557 -0
  109. package/dist/docs/reference/modules/Game.html +909 -0
  110. package/dist/docs/reference/modules/GameControl.html +716 -0
  111. package/dist/docs/reference/modules/GameGrid.html +1910 -0
  112. package/dist/docs/reference/modules/GameHudGrid.html +508 -0
  113. package/dist/docs/reference/modules/GameMenu.html +538 -0
  114. package/dist/docs/reference/modules/GameRenderer.html +589 -0
  115. package/dist/docs/reference/modules/GameScore.html +664 -0
  116. package/dist/docs/reference/modules/GameSession.html +533 -0
  117. package/dist/docs/reference/modules/GameSound.html +636 -0
  118. package/dist/docs/reference/modules/GameState.html +922 -0
  119. package/dist/docs/reference/modules/GameText.html +701 -0
  120. package/dist/docs/reference/modules/GameTime.html +696 -0
  121. package/dist/docs/reference/modules/HudRenderer.html +568 -0
  122. package/dist/docs/reference/modules/InitialStateSnapshot.html +557 -0
  123. package/dist/docs/reference/modules/SessionModal.html +520 -0
  124. package/dist/docs/reference/types/Axis.html +505 -0
  125. package/dist/docs/reference/types/Cell.html +514 -0
  126. package/dist/docs/reference/types/ControlCallback.html +488 -0
  127. package/dist/docs/reference/types/Coordinate.html +510 -0
  128. package/dist/docs/reference/types/GameEntry.html +514 -0
  129. package/dist/docs/reference/types/GameEvent.html +514 -0
  130. package/dist/docs/reference/types/Piece.html +506 -0
  131. package/dist/docs/reference/types/RendererMetrics.html +514 -0
  132. package/dist/docs/reference/types/Vector.html +509 -0
  133. package/dist/docs/testing_best_practices.html +770 -0
  134. package/dist/favicon.ico +0 -0
  135. package/dist/fonts/digital-7.monoitalic.ttf +0 -0
  136. package/dist/images/cell.svg +32 -0
  137. package/dist/images/close.png +0 -0
  138. package/dist/images/games.png +0 -0
  139. package/dist/images/github.png +0 -0
  140. package/dist/images/letter-a.png +0 -0
  141. package/dist/images/letter-d.png +0 -0
  142. package/dist/images/letter-j.png +0 -0
  143. package/dist/images/letter-s.png +0 -0
  144. package/dist/images/letter-w.png +0 -0
  145. package/dist/images/meta-image.png +0 -0
  146. package/dist/images/number-1.png +0 -0
  147. package/dist/images/number-2.png +0 -0
  148. package/dist/images/number-3.png +0 -0
  149. package/dist/images/number-4.png +0 -0
  150. package/dist/images/number-5.png +0 -0
  151. package/dist/images/number-6.png +0 -0
  152. package/dist/images/splash.gif +0 -0
  153. package/dist/index.d.ts +8 -0
  154. package/dist/index.html +1 -0
  155. package/dist/index.test.d.ts +1 -0
  156. package/dist/main.d.ts +3 -0
  157. package/dist/main.test.d.ts +1 -0
  158. package/dist/menu/GameMenu.d.ts +15 -0
  159. package/dist/menu/GameMenu.test.d.ts +1 -0
  160. package/dist/menu/GameMenuSingleton.d.ts +6 -0
  161. package/dist/menu/GameMenuSingleton.test.d.ts +1 -0
  162. package/dist/menu/GameRepository.d.ts +7 -0
  163. package/dist/menu/GameRepository.test.d.ts +1 -0
  164. package/dist/menu/manager/GameManager.d.ts +6 -0
  165. package/dist/menu/manager/GameManager.test.d.ts +1 -0
  166. package/dist/sounds/sound_00.wav +0 -0
  167. package/dist/sounds/sound_01.wav +0 -0
  168. package/dist/sounds/sound_02.wav +0 -0
  169. package/dist/sounds/sound_03.wav +0 -0
  170. package/dist/sounds/sound_04.wav +0 -0
  171. package/dist/sounds/sound_05.wav +0 -0
  172. package/dist/sounds/sound_06.wav +0 -0
  173. package/dist/sounds/sound_07.wav +0 -0
  174. package/dist/sounds/sound_08.wav +0 -0
  175. package/dist/sounds/sound_09.wav +0 -0
  176. package/dist/sounds/sound_10.wav +0 -0
  177. package/dist/sounds/sound_11.wav +0 -0
  178. package/dist/sounds/sound_12.wav +0 -0
  179. package/dist/sounds/sound_13.wav +0 -0
  180. package/dist/sounds/sound_14.wav +0 -0
  181. package/dist/sounds/sound_15.wav +0 -0
  182. package/dist/types/interfaces.d.ts +5 -0
  183. package/dist/vendor/p5.min.js +1 -0
  184. package/dist/view/Debugger.d.ts +12 -0
  185. package/dist/view/Debugger.test.d.ts +1 -0
  186. package/dist/view/GameView.d.ts +101 -0
  187. package/dist/view/GameView.test.d.ts +1 -0
  188. package/dist/view/SessionModal.d.ts +12 -0
  189. package/dist/view/SessionModal.test.d.ts +4 -0
  190. package/dist/view/components/layout/ButtonLayout.d.ts +25 -0
  191. package/dist/view/components/layout/ButtonLayout.test.d.ts +1 -0
  192. package/dist/view/components/layout/ContainerLayout.d.ts +23 -0
  193. package/dist/view/components/layout/ContainerLayout.test.d.ts +1 -0
  194. package/dist/view/components/layout/FrameLayout.d.ts +11 -0
  195. package/dist/view/components/layout/FrameLayout.test.d.ts +1 -0
  196. package/dist/view/components/ui/BigButton.d.ts +13 -0
  197. package/dist/view/components/ui/BigButton.test.d.ts +1 -0
  198. package/dist/view/components/ui/Button.d.ts +12 -0
  199. package/dist/view/components/ui/Button.test.d.ts +1 -0
  200. package/dist/view/components/ui/Canvas.d.ts +22 -0
  201. package/dist/view/components/ui/Canvas.test.d.ts +1 -0
  202. package/dist/view/components/ui/SmallButton.d.ts +13 -0
  203. package/dist/view/components/ui/SmallButton.test.d.ts +1 -0
  204. package/dist/view/theme/applyColors.d.ts +10 -0
  205. package/dist/view/theme/applyColors.test.d.ts +1 -0
  206. package/dist/view/theme/dimensions.d.ts +13 -0
  207. package/dist/view/theme/dimensions.test.d.ts +1 -0
  208. package/docs/GAME_DEVELOPER_GUIDE.adoc +167 -0
  209. package/docs/brick-engine-guide.adoc +87 -0
  210. package/docs/diagrams/lifecycle.mmd +19 -0
  211. package/docs/documentation_style_guide.adoc +210 -0
  212. package/docs/getting-started.adoc +147 -0
  213. package/docs/images/lifecycle.svg +1 -0
  214. package/docs/jsdoc_standard.adoc +109 -0
  215. package/docs/publishing.adoc +58 -0
  216. package/docs/reference/enums/Color.adoc +35 -0
  217. package/docs/reference/enums/ControlEventType.adoc +28 -0
  218. package/docs/reference/enums/ControlKey.adoc +34 -0
  219. package/docs/reference/enums/FontAlignment.adoc +43 -0
  220. package/docs/reference/enums/FontSize.adoc +31 -0
  221. package/docs/reference/enums/Sound.adoc +42 -0
  222. package/docs/reference/enums/StateProperty.adoc +33 -0
  223. package/docs/reference/helpers/CellHelper.adoc +37 -0
  224. package/docs/reference/helpers/ControlInputHandlerHelper.adoc +57 -0
  225. package/docs/reference/helpers/CoordinateHelper.adoc +118 -0
  226. package/docs/reference/helpers/RelativeValuesHelper.adoc +53 -0
  227. package/docs/reference/interfaces/Debuggable.adoc +29 -0
  228. package/docs/reference/interfaces/GameModules.adoc +35 -0
  229. package/docs/reference/interfaces/Initializable.adoc +24 -0
  230. package/docs/reference/interfaces/RendererInitializable.adoc +33 -0
  231. package/docs/reference/interfaces/StateSyncable.adoc +41 -0
  232. package/docs/reference/interfaces/modules/Control.adoc +98 -0
  233. package/docs/reference/interfaces/modules/Grid.adoc +411 -0
  234. package/docs/reference/interfaces/modules/Renderer.adoc +34 -0
  235. package/docs/reference/interfaces/modules/RendererComposite.adoc +57 -0
  236. package/docs/reference/interfaces/modules/Score.adoc +107 -0
  237. package/docs/reference/interfaces/modules/Session.adoc +66 -0
  238. package/docs/reference/interfaces/modules/State.adoc +290 -0
  239. package/docs/reference/interfaces/modules/Text.adoc +110 -0
  240. package/docs/reference/interfaces/modules/Time.adoc +119 -0
  241. package/docs/reference/modules/Debugger.adoc +71 -0
  242. package/docs/reference/modules/DisplayRenderer.adoc +55 -0
  243. package/docs/reference/modules/Game.adoc +256 -0
  244. package/docs/reference/modules/GameControl.adoc +139 -0
  245. package/docs/reference/modules/GameGrid.adoc +794 -0
  246. package/docs/reference/modules/GameHudGrid.adoc +38 -0
  247. package/docs/reference/modules/GameMenu.adoc +39 -0
  248. package/docs/reference/modules/GameRenderer.adoc +79 -0
  249. package/docs/reference/modules/GameScore.adoc +138 -0
  250. package/docs/reference/modules/GameSession.adoc +43 -0
  251. package/docs/reference/modules/GameSound.adoc +111 -0
  252. package/docs/reference/modules/GameState.adoc +318 -0
  253. package/docs/reference/modules/GameText.adoc +139 -0
  254. package/docs/reference/modules/GameTime.adoc +141 -0
  255. package/docs/reference/modules/HudRenderer.adoc +56 -0
  256. package/docs/reference/modules/InitialStateSnapshot.adoc +47 -0
  257. package/docs/reference/modules/SessionModal.adoc +34 -0
  258. package/docs/reference/types/Axis.adoc +28 -0
  259. package/docs/reference/types/Cell.adoc +29 -0
  260. package/docs/reference/types/ControlCallback.adoc +23 -0
  261. package/docs/reference/types/Coordinate.adoc +29 -0
  262. package/docs/reference/types/GameEntry.adoc +29 -0
  263. package/docs/reference/types/GameEvent.adoc +29 -0
  264. package/docs/reference/types/Piece.adoc +32 -0
  265. package/docs/reference/types/RendererMetrics.adoc +29 -0
  266. package/docs/reference/types/Vector.adoc +28 -0
  267. package/docs/testing_best_practices.adoc +190 -0
  268. package/eslint.config.mjs +29 -0
  269. package/package.json +54 -0
  270. package/public/CNAME +1 -0
  271. package/public/docs/GAME_DEVELOPER_GUIDE.html +727 -0
  272. package/public/docs/brick-engine-guide.html +610 -0
  273. package/public/docs/diagrams/lifecycle.mmd +19 -0
  274. package/public/docs/documentation_style_guide.html +994 -0
  275. package/public/docs/getting-started.html +648 -0
  276. package/public/docs/images/lifecycle.svg +1 -0
  277. package/public/docs/index.html +593 -0
  278. package/public/docs/jsdoc_standard.html +656 -0
  279. package/public/docs/publishing.html +573 -0
  280. package/public/docs/reference/enums/Color.html +533 -0
  281. package/public/docs/reference/enums/ControlEventType.html +505 -0
  282. package/public/docs/reference/enums/ControlKey.html +529 -0
  283. package/public/docs/reference/enums/FontAlignment.html +545 -0
  284. package/public/docs/reference/enums/FontSize.html +517 -0
  285. package/public/docs/reference/enums/Sound.html +558 -0
  286. package/public/docs/reference/enums/StateProperty.html +525 -0
  287. package/public/docs/reference/helpers/CellHelper.html +520 -0
  288. package/public/docs/reference/helpers/ControlInputHandlerHelper.html +569 -0
  289. package/public/docs/reference/helpers/CoordinateHelper.html +703 -0
  290. package/public/docs/reference/helpers/RelativeValuesHelper.html +560 -0
  291. package/public/docs/reference/interfaces/Debuggable.html +501 -0
  292. package/public/docs/reference/interfaces/GameModules.html +544 -0
  293. package/public/docs/reference/interfaces/Initializable.html +495 -0
  294. package/public/docs/reference/interfaces/RendererInitializable.html +517 -0
  295. package/public/docs/reference/interfaces/StateSyncable.html +542 -0
  296. package/public/docs/reference/interfaces/modules/Control.html +648 -0
  297. package/public/docs/reference/interfaces/modules/Grid.html +1256 -0
  298. package/public/docs/reference/interfaces/modules/Renderer.html +522 -0
  299. package/public/docs/reference/interfaces/modules/RendererComposite.html +577 -0
  300. package/public/docs/reference/interfaces/modules/Score.html +669 -0
  301. package/public/docs/reference/interfaces/modules/Session.html +585 -0
  302. package/public/docs/reference/interfaces/modules/State.html +897 -0
  303. package/public/docs/reference/interfaces/modules/Text.html +668 -0
  304. package/public/docs/reference/interfaces/modules/Time.html +684 -0
  305. package/public/docs/reference/modules/Debugger.html +579 -0
  306. package/public/docs/reference/modules/DisplayRenderer.html +557 -0
  307. package/public/docs/reference/modules/Game.html +909 -0
  308. package/public/docs/reference/modules/GameControl.html +716 -0
  309. package/public/docs/reference/modules/GameGrid.html +1910 -0
  310. package/public/docs/reference/modules/GameHudGrid.html +508 -0
  311. package/public/docs/reference/modules/GameMenu.html +538 -0
  312. package/public/docs/reference/modules/GameRenderer.html +589 -0
  313. package/public/docs/reference/modules/GameScore.html +664 -0
  314. package/public/docs/reference/modules/GameSession.html +533 -0
  315. package/public/docs/reference/modules/GameSound.html +636 -0
  316. package/public/docs/reference/modules/GameState.html +922 -0
  317. package/public/docs/reference/modules/GameText.html +701 -0
  318. package/public/docs/reference/modules/GameTime.html +696 -0
  319. package/public/docs/reference/modules/HudRenderer.html +568 -0
  320. package/public/docs/reference/modules/InitialStateSnapshot.html +557 -0
  321. package/public/docs/reference/modules/SessionModal.html +520 -0
  322. package/public/docs/reference/types/Axis.html +505 -0
  323. package/public/docs/reference/types/Cell.html +514 -0
  324. package/public/docs/reference/types/ControlCallback.html +488 -0
  325. package/public/docs/reference/types/Coordinate.html +510 -0
  326. package/public/docs/reference/types/GameEntry.html +514 -0
  327. package/public/docs/reference/types/GameEvent.html +514 -0
  328. package/public/docs/reference/types/Piece.html +506 -0
  329. package/public/docs/reference/types/RendererMetrics.html +514 -0
  330. package/public/docs/reference/types/Vector.html +509 -0
  331. package/public/docs/testing_best_practices.html +770 -0
  332. package/public/favicon.ico +0 -0
  333. package/public/fonts/digital-7.monoitalic.ttf +0 -0
  334. package/public/images/cell.svg +32 -0
  335. package/public/images/close.png +0 -0
  336. package/public/images/games.png +0 -0
  337. package/public/images/github.png +0 -0
  338. package/public/images/letter-a.png +0 -0
  339. package/public/images/letter-d.png +0 -0
  340. package/public/images/letter-j.png +0 -0
  341. package/public/images/letter-s.png +0 -0
  342. package/public/images/letter-w.png +0 -0
  343. package/public/images/meta-image.png +0 -0
  344. package/public/images/number-1.png +0 -0
  345. package/public/images/number-2.png +0 -0
  346. package/public/images/number-3.png +0 -0
  347. package/public/images/number-4.png +0 -0
  348. package/public/images/number-5.png +0 -0
  349. package/public/images/number-6.png +0 -0
  350. package/public/images/splash.gif +0 -0
  351. package/public/index.html +15 -0
  352. package/public/sounds/sound_00.wav +0 -0
  353. package/public/sounds/sound_01.wav +0 -0
  354. package/public/sounds/sound_02.wav +0 -0
  355. package/public/sounds/sound_03.wav +0 -0
  356. package/public/sounds/sound_04.wav +0 -0
  357. package/public/sounds/sound_05.wav +0 -0
  358. package/public/sounds/sound_06.wav +0 -0
  359. package/public/sounds/sound_07.wav +0 -0
  360. package/public/sounds/sound_08.wav +0 -0
  361. package/public/sounds/sound_09.wav +0 -0
  362. package/public/sounds/sound_10.wav +0 -0
  363. package/public/sounds/sound_11.wav +0 -0
  364. package/public/sounds/sound_12.wav +0 -0
  365. package/public/sounds/sound_13.wav +0 -0
  366. package/public/sounds/sound_14.wav +0 -0
  367. package/public/sounds/sound_15.wav +0 -0
  368. package/public/style/body.css +86 -0
  369. package/public/style/buttons.css +233 -0
  370. package/public/style/debugger.css +117 -0
  371. package/public/style/sessionModal.css +155 -0
  372. package/public/style/sourceCodeAndCommands.css +74 -0
  373. package/public/style/splash.css +13 -0
  374. package/public/style/theme.css +137 -0
  375. package/scripts/generate-diagrams.sh +20 -0
  376. package/scripts/generate-docs.js +111 -0
  377. package/src/client-game.d.ts +1 -0
  378. package/src/config/configs.test.ts +20 -0
  379. package/src/config/configs.ts +197 -0
  380. package/src/config/env.test.ts +59 -0
  381. package/src/config/env.ts +7 -0
  382. package/src/config/styles.ts +5 -0
  383. package/src/core/Game.test.ts +167 -0
  384. package/src/core/Game.ts +307 -0
  385. package/src/core/InitialStateSnapshot.test.ts +51 -0
  386. package/src/core/InitialStateSnapshot.ts +46 -0
  387. package/src/core/helpers/CellHelper.test.ts +33 -0
  388. package/src/core/helpers/CellHelper.ts +21 -0
  389. package/src/core/helpers/ControlInputHandlerHelper.test.ts +116 -0
  390. package/src/core/helpers/ControlInputHandlerHelper.ts +68 -0
  391. package/src/core/helpers/CoordinateHelper.test.ts +113 -0
  392. package/src/core/helpers/CoordinateHelper.ts +82 -0
  393. package/src/core/helpers/InterfaceIdentifierHelper.test.ts +122 -0
  394. package/src/core/helpers/InterfaceIdentifierHelper.ts +43 -0
  395. package/src/core/helpers/RelativeValuesHelper.test.ts +47 -0
  396. package/src/core/helpers/RelativeValuesHelper.ts +29 -0
  397. package/src/core/module/control/GameControl.test.ts +82 -0
  398. package/src/core/module/control/GameControl.ts +142 -0
  399. package/src/core/module/control/GameControlKeyBinding.test.ts +59 -0
  400. package/src/core/module/control/GameControlKeyBinding.ts +92 -0
  401. package/src/core/module/grid/GameGrid.test.ts +83 -0
  402. package/src/core/module/grid/GameGrid.ts +610 -0
  403. package/src/core/module/grid/GameHudGrid.test.ts +22 -0
  404. package/src/core/module/grid/GameHudGrid.ts +40 -0
  405. package/src/core/module/grid/engines/GridAnalysisEngine.test.ts +157 -0
  406. package/src/core/module/grid/engines/GridAnalysisEngine.ts +124 -0
  407. package/src/core/module/grid/engines/GridLineEngine.test.ts +132 -0
  408. package/src/core/module/grid/engines/GridLineEngine.ts +165 -0
  409. package/src/core/module/grid/engines/GridMovementEngine.test.ts +125 -0
  410. package/src/core/module/grid/engines/GridMovementEngine.ts +113 -0
  411. package/src/core/module/grid/engines/GridRegionEngine.test.ts +136 -0
  412. package/src/core/module/grid/engines/GridRegionEngine.ts +52 -0
  413. package/src/core/module/grid/engines/GridTransformEngine.test.ts +98 -0
  414. package/src/core/module/grid/engines/GridTransformEngine.ts +70 -0
  415. package/src/core/module/renderer/DisplayRenderer.test.ts +86 -0
  416. package/src/core/module/renderer/DisplayRenderer.ts +152 -0
  417. package/src/core/module/renderer/GameRenderer.test.ts +103 -0
  418. package/src/core/module/renderer/GameRenderer.ts +144 -0
  419. package/src/core/module/renderer/HudRenderer.test.ts +108 -0
  420. package/src/core/module/renderer/HudRenderer.ts +203 -0
  421. package/src/core/module/score/GameScore.test.ts +71 -0
  422. package/src/core/module/score/GameScore.ts +188 -0
  423. package/src/core/module/session/GameSession.test.ts +176 -0
  424. package/src/core/module/session/GameSession.ts +103 -0
  425. package/src/core/module/sound/GameSound.test.ts +117 -0
  426. package/src/core/module/sound/GameSound.ts +229 -0
  427. package/src/core/module/state/GameState.test.ts +101 -0
  428. package/src/core/module/state/GameState.ts +339 -0
  429. package/src/core/module/text/GameText.test.ts +87 -0
  430. package/src/core/module/text/GameText.ts +150 -0
  431. package/src/core/module/time/GameTime.test.ts +86 -0
  432. package/src/core/module/time/GameTime.ts +144 -0
  433. package/src/core/types/Interfaces.ts +59 -0
  434. package/src/core/types/Types.ts +124 -0
  435. package/src/core/types/enums.ts +113 -0
  436. package/src/core/types/modules.ts +841 -0
  437. package/src/index.test.ts +15 -0
  438. package/src/index.ts +9 -0
  439. package/src/main.test.ts +137 -0
  440. package/src/main.ts +77 -0
  441. package/src/menu/GameMenu.test.ts +157 -0
  442. package/src/menu/GameMenu.ts +124 -0
  443. package/src/menu/GameMenuSingleton.test.ts +26 -0
  444. package/src/menu/GameMenuSingleton.ts +13 -0
  445. package/src/menu/GameRepository.test.ts +46 -0
  446. package/src/menu/GameRepository.ts +47 -0
  447. package/src/menu/manager/GameManager.test.ts +68 -0
  448. package/src/menu/manager/GameManager.ts +50 -0
  449. package/src/types/global.d.ts +8 -0
  450. package/src/types/interfaces.ts +5 -0
  451. package/src/view/Debugger.test.ts +152 -0
  452. package/src/view/Debugger.ts +124 -0
  453. package/src/view/GameView.test.ts +95 -0
  454. package/src/view/GameView.ts +244 -0
  455. package/src/view/SessionModal.test.ts +141 -0
  456. package/src/view/SessionModal.ts +73 -0
  457. package/src/view/components/layout/ButtonLayout.test.ts +28 -0
  458. package/src/view/components/layout/ButtonLayout.ts +63 -0
  459. package/src/view/components/layout/ContainerLayout.test.ts +48 -0
  460. package/src/view/components/layout/ContainerLayout.ts +50 -0
  461. package/src/view/components/layout/FrameLayout.test.ts +24 -0
  462. package/src/view/components/layout/FrameLayout.ts +25 -0
  463. package/src/view/components/ui/BigButton.test.ts +28 -0
  464. package/src/view/components/ui/BigButton.ts +31 -0
  465. package/src/view/components/ui/Button.test.ts +30 -0
  466. package/src/view/components/ui/Button.ts +30 -0
  467. package/src/view/components/ui/Canvas.test.ts +32 -0
  468. package/src/view/components/ui/Canvas.ts +34 -0
  469. package/src/view/components/ui/SmallButton.test.ts +48 -0
  470. package/src/view/components/ui/SmallButton.ts +32 -0
  471. package/src/view/theme/applyColors.test.ts +47 -0
  472. package/src/view/theme/applyColors.ts +38 -0
  473. package/src/view/theme/dimensions.test.ts +34 -0
  474. package/src/view/theme/dimensions.ts +53 -0
  475. package/tsconfig.json +16 -0
  476. package/vitest.config.ts +14 -0
  477. package/webpack.config.js +133 -0
@@ -0,0 +1,58 @@
1
+ = Publishing Your Game
2
+ :description: Guide on how to bundle and publish your game to the Brick Engine library.
3
+ :keywords: publish, cli, bundle, deployment
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+
11
+ This guide explains how to use the **Brick Engine CLI** `publish` command to bundle your game and submit it to the central repository, making it available for everyone in the main engine menu.
12
+
13
+ == Prerequisites
14
+
15
+ Before you can publish your game, ensure you have:
16
+ * **Completed Development**: Your game should be fully playable and tested locally (`npm start`).
17
+ * **Author Details**: Ensure you know the author email you want associated with this publication.
18
+
19
+ == The `publish` Command
20
+
21
+ The `publish` command connects your local project to the central Brick Engine repository.
22
+
23
+ Run the following command in the root of your project directory:
24
+
25
+ [source,bash]
26
+ ----
27
+ npx brick-engine-cli publish
28
+ ----
29
+
30
+ === What happens during `publish`?
31
+
32
+ When you run the publish command, the CLI will automatically perform the following steps:
33
+
34
+ 1. **Build**: It executes `npm run build:bundle` to generate a production-ready, optimized JavaScript bundle of your game in the `dist/` directory.
35
+ 2. **Prompt for Details**: It will ask for the developer's email address. This is used to notify you about the status of your publication request.
36
+ 3. **Upload**: The CLI securely uploads your generated `game.bundle.js` to Supabase Storage.
37
+ 4. **Registration**: It creates a database entry linking your bundle URL with your game's metadata (extracted from `package.json`, including name and version).
38
+
39
+ == The Review Process
40
+
41
+ After a successful upload, your game is placed in a **Pending** status.
42
+
43
+ 1. **Approval Required**: To ensure the quality and safety of the central library, all games must be manually reviewed before they appear in the public menu.
44
+ 2. **Notification**: You will receive an email (at the address you provided during the prompt) once your game has been reviewed. This email will confirm if the game was approved and is now live, or if it was rejected with feedback.
45
+
46
+ == Troubleshooting Publish Errors
47
+
48
+ === Duplicate Publication
49
+
50
+ If you attempt to publish the exact same version of a game that is already published or pending, the CLI will reject the upload.
51
+
52
+ **Solution**: If you made changes, increment the `version` field in your `package.json` before running the publish command again.
53
+
54
+ === Build Failures
55
+
56
+ If the `npm run build:bundle` step fails, the publish process will abort.
57
+
58
+ **Solution**: Check your terminal output for TypeScript or Webpack errors. Fix these issues and ensure that `npm run build:bundle` executes successfully on its own before trying to publish again.
@@ -0,0 +1,35 @@
1
+ = Color Reference
2
+ :description: Defines the available visual theme colors for grid cells and text.
3
+ :keywords: color, theme, grid, retro, display
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ Defines the available visual theme colors for grid cells and text.
16
+
17
+ == Values
18
+
19
+ [cols="1,2"]
20
+ |===
21
+ |Value |Description
22
+ |`DEFAULT` |The background color of an empty cell.
23
+ |`BLUE` |Standard blue brick color.
24
+ |`CYAN` |Bright cyan brick color.
25
+ |`GRAY` |Neutral gray color.
26
+ |`GREEN` |Standard green brick color.
27
+ |`PURPLE` |Vibrant purple brick color.
28
+ |`RED` |Warning or obstacle red color.
29
+ |`YELLOW` |Gold/Yellow brick color.
30
+ |`INACTIVE` |Faded color for background/ghost elements.
31
+ |===
32
+
33
+ == General Usage
34
+
35
+ Colors are used throughout the engine to theme the `xref:../modules/GameGrid.adoc[GameGrid]` and the `HUD`. Use these constants when calling methods like `grid.setCellColor(coord, Color.RED)`.
@@ -0,0 +1,28 @@
1
+ = ControlEventType Reference
2
+ :description: Enumerates the different ways an input can be triggered.
3
+ :keywords: control, events, input, interaction
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ Enumerates the different ways an input can be triggered.
16
+
17
+ == Values
18
+
19
+ [cols="1,2"]
20
+ |===
21
+ |Value |Description
22
+ |`PRESSED` |Triggered exactly once when the key is first engaged.
23
+ |`HELD` |Triggered repeatedly at a fixed interval while the key remains engaged.
24
+ |===
25
+
26
+ == General Usage
27
+
28
+ Crucial for distinguishing between actions like "Rotate Once" (`xref:../enums/ControlEventType.adoc[PRESSED]`) and "Move Continuously" (`xref:../enums/ControlEventType.adoc[HELD]`). Used in subscription filters: `xref:../modules/GameControl.adoc[modules.control].subscribe(key, ControlEventType.HELD, callback)`.
@@ -0,0 +1,34 @@
1
+ = ControlKey Reference
2
+ :description: Abstraction layer mapping hardware inputs to logical engine actions.
3
+ :keywords: input, keys, mapping, control
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ Abstraction layer mapping hardware inputs to logical engine actions.
16
+
17
+ == Values
18
+
19
+ [cols="1,2"]
20
+ |===
21
+ |Value |Description
22
+ |`UP`, `DOWN`, `LEFT`, `RIGHT` |Directional navigation for players and menus.
23
+ |`ACTION` |Primary interaction button (e.g., jump, rotate, shoot).
24
+ |`START_PAUSE` |Toggles the gameplay state between `PLAYING` and `PAUSED`.
25
+ |`POWER` |Main system toggle (ON/OFF).
26
+ |`RESET` |Triggers a full game session reset.
27
+ |`SOUND` |Mutes or unmutes the audio system.
28
+ |`EXIT` |Exits the current game session back to the menu.
29
+ |`COLOR` |Toggles visual rendering modes.
30
+ |===
31
+
32
+ == General Usage
33
+
34
+ `ControlKey` is used when subscribing to input events via `xref:../modules/GameControl.adoc[GameControl].subscribe()` and when checking the `key` property of a `xref:../types/GameEvent.adoc[GameEvent]`.
@@ -0,0 +1,43 @@
1
+ = Font Alignment Reference
2
+ :description: Enums defining the text anchor points on the canvas.
3
+ :keywords: font, alignment, text, display, layout
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ Enums defining the text anchor points on the canvas.
16
+
17
+ == `FontAlign`
18
+
19
+ Horizontal alignment of the text block.
20
+
21
+ [cols="1,3"]
22
+ |===
23
+ |Value |Description
24
+ |`LEFT` |Text starts at the provided X coordinate.
25
+ |`CENTER` |Text is centered relative to X.
26
+ |`RIGHT` |Text ends at the provided X coordinate.
27
+ |===
28
+
29
+ == `FontVerticalAlign`
30
+
31
+ Vertical alignment of the text block.
32
+
33
+ [cols="1,3"]
34
+ |===
35
+ |Value |Description
36
+ |`TOP` |Text top edge aligns with Y.
37
+ |`CENTER` |Text is centered relative to Y.
38
+ |`BOTTOM` |Text bottom edge aligns with Y.
39
+ |===
40
+
41
+ == General Usage
42
+
43
+ Used when calling `xref:../modules/GameText.adoc[GameText].setTextAlign()`.
@@ -0,0 +1,31 @@
1
+ = FontSize Reference
2
+ :description: Predefined logic scales for the retro pixelated typography.
3
+ :keywords: font, size, typography, display
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ Predefined logic scales for the retro pixelated typography.
16
+
17
+ == Values
18
+
19
+ [cols="1,3"]
20
+ |===
21
+ |Value |Level
22
+ |`EXTRA_SMALL` |Metrics, fine print, or detailed debug data.
23
+ |`SMALL` |Secondary labels.
24
+ |`MEDIUM` |Standard size for interactive elements and messages.
25
+ |`LARGE` |High-visibility status (e.g., "GET READY").
26
+ |`EXTRA_LARGE` |Main titles and "GAME OVER" announcements.
27
+ |===
28
+
29
+ == General Usage
30
+
31
+ Set the active font size via `xref:../modules/GameText.adoc[GameText].setTextSize(FontSize.LARGE)`. The engine automatically handles the scaling based on the display resolution.
@@ -0,0 +1,42 @@
1
+ = Sound Reference
2
+ :description: Maps sound identifiers to their relative asset paths.
3
+ :keywords: sound, audio, assets, game-events
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ Maps sound identifiers to their relative asset paths.
16
+
17
+ == Values
18
+
19
+ [cols="1,2"]
20
+ |===
21
+ |Value |Asset Path
22
+ |`SPAWN` |`./sounds/sound_01.wav`
23
+ |`SCORE_1` |`./sounds/sound_15.wav`
24
+ |`SCORE_2` |`./sounds/sound_03.wav`
25
+ |`SCORE_3` |`./sounds/sound_02.wav`
26
+ |`KEY_PRESS` |`./sounds/sound_14.wav`
27
+ |`ACTION_1` |`./sounds/sound_05.wav`
28
+ |`ACTION_2` |`./sounds/sound_13.wav`
29
+ |`HIT_1` |`./sounds/sound_06.wav`
30
+ |`HIT_2` |`./sounds/sound_08.wav`
31
+ |`DODGE` |`./sounds/sound_07.wav`
32
+ |`DROP` |`./sounds/sound_11.wav`
33
+ |`EXPLOSION` |`./sounds/sound_09.wav`
34
+ |`GAME_START` |`./sounds/sound_04.wav`
35
+ |`SHOT` |`./sounds/sound_12.wav`
36
+ |`START_THEME` |`./sounds/sound_10.wav`
37
+ |===
38
+
39
+ == General Usage
40
+
41
+ Use these constants to trigger audio effects via the `xref:../modules/GameSound.adoc[GameSound]` module.
42
+ Example: `modules.sound.play(Sound.EXPLOSION)`.
@@ -0,0 +1,33 @@
1
+ = StateProperty Reference
2
+ :description: Enumerates all observable and persistent properties of the game system.
3
+ :keywords: state, persistence, properties, observability
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ Enumerates all observable and persistent properties of the game system.
16
+
17
+ == Values
18
+
19
+ [cols="1,3"]
20
+ |===
21
+ |Value |Description
22
+ |`ON` |Boolean flag for engine power state.
23
+ |`START` |Boolean flag for game session start.
24
+ |`PLAYING` |Boolean flag for active gameplay logic.
25
+ |`GAME_OVER` |Boolean flag for end-of-game state.
26
+ |`COLOR_ENABLED` |Boolean flag for themed rendering.
27
+ |`MUTED` |Boolean flag for audio suppression.
28
+ |`HIGH_SCORE` |Numeric property for the persistent record.
29
+ |===
30
+
31
+ == General Usage
32
+
33
+ Used identifying which property changed in the `xref:../modules/GameState.adoc[GameState].subscribe()` callback.
@@ -0,0 +1,37 @@
1
+ = CellHelper Reference
2
+ :description: Static factory methods for creating and initializing Cell objects consistently.
3
+ :keywords: cell, factory, grid, helper
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ The `CellHelper` provides static factory methods for creating and initializing `Cell` objects consistently.
16
+
17
+ == Methods
18
+
19
+ === `emptyCell(coordinate: xref:../types/Coordinate.adoc[Coordinate]): xref:../types/Cell.adoc[Cell]`
20
+
21
+ Creates a new cell with default "OFF" state values.
22
+
23
+ **Parameters**
24
+
25
+ [cols="1,1,3"]
26
+ |===
27
+ |Name |Type |Description
28
+ |`coordinate` |xref:../types/Coordinate.adoc[Coordinate] |The `{x, y}` position to assign to the new cell.
29
+ |===
30
+
31
+ **Returns**
32
+
33
+ `Cell` - A cell object with `value: 0` and `xref:../enums/Color.adoc[Color].DEFAULT`.
34
+
35
+ **Behavior**
36
+
37
+ This is used primarily by `xref:../modules/GameGrid.adoc[GameGrid]` to populate the initial matrix during allocation or when resetting a row/column.
@@ -0,0 +1,57 @@
1
+ = ControlInputHandlerHelper Reference
2
+ :description: Utilities for normalizing raw hardware keyboard events into abstract ControlKey actions.
3
+ :keywords: input, handler, keyboard, normalization, helper
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ The `ControlInputHandlerHelper` manages the complexity of input timing, such as identifying the difference between a quick "press" and a sustained "hold".
16
+
17
+ == Usage
18
+
19
+ This helper is used by the `xref:../modules/GameControl.adoc[GameControl]` module to normalize raw hardware events (like `keydown` and `keyup`) into engine-specific events.
20
+
21
+ == Methods
22
+
23
+ === `handlePress(key: xref:../enums/ControlKey.adoc[ControlKey]): void`
24
+
25
+ Processes a new interaction with a specific key.
26
+
27
+ **Parameters**
28
+
29
+ [cols="1,1,3"]
30
+ |===
31
+ |Name |Type |Description
32
+ |`key` |xref:../enums/ControlKey.adoc[ControlKey] |The virtual key being interacted with.
33
+ |===
34
+
35
+ **Behavior**
36
+
37
+ 1. Triggers the `xref:../enums/ControlEventType.adoc[PRESSED]` event immediately.
38
+ 2. Starts a timer based on `configs.buttonHold.holdDelayMs`.
39
+ 3. If the key is still active after the delay, it starts an interval that repeatedly triggers the `xref:../enums/ControlEventType.adoc[HELD]` event.
40
+
41
+ '''
42
+
43
+ === `handleRelease(key: xref:../enums/ControlKey.adoc[ControlKey]): void`
44
+
45
+ Stops tracking an active interaction.
46
+
47
+ **Parameters**
48
+
49
+ [cols="1,1,3"]
50
+ |===
51
+ |Name |Type |Description
52
+ |`key` |xref:../enums/ControlKey.adoc[ControlKey] |The key that was released.
53
+ |===
54
+
55
+ **Behavior**
56
+
57
+ Clears all active timers (delay and interval) for the specified key to stop `xref:../enums/ControlEventType.adoc[HELD]` events from firing.
@@ -0,0 +1,118 @@
1
+ = CoordinateHelper Reference
2
+ :description: Specialized math utilities for converting between Grid, Display, and Pixel coordinate systems.
3
+ :keywords: coordinates, math, grid, display, conversion, helper
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ The `CoordinateHelper` is a static utility class that handles translations between different coordinate systems: the logical xref:../modules/GameGrid.adoc[Game Grid], the normalized Display area, and absolute pixel positions.
16
+
17
+ == API Reference
18
+
19
+ === `getRelativeCoordinate(p: p5, coordinate: xref:../types/Coordinate.adoc[Coordinate]): xref:../types/Coordinate.adoc[Coordinate]`
20
+
21
+ Converts a pixel-based coordinate into a normalized relative coordinate (0.0 to 1.0).
22
+
23
+ **Parameters**
24
+
25
+ [cols="1,1,3"]
26
+ |===
27
+ |Name |Type |Description
28
+ |`p` |`p5` |The P5.js instance.
29
+ |`coordinate` |xref:../types/Coordinate.adoc[Coordinate] |The absolute pixel coordinate.
30
+ |===
31
+
32
+ **Returns**
33
+
34
+ `xref:../types/Coordinate.adoc[Coordinate]` - The normalized `{x, y}` point.
35
+
36
+
37
+ '''
38
+
39
+ === `getDisplayPosX(p: p5, x: number, displayWidth: number): number`
40
+
41
+ Calculates the absolute X pixel position on the main game display.
42
+
43
+ **Parameters**
44
+
45
+ [cols="1,1,3"]
46
+ |===
47
+ |Name |Type |Description
48
+ |`p` |`p5` |The P5.js instance.
49
+ |`x` |`number` |Normalized horizontal position (0.0 to 1.0).
50
+ |`displayWidth` |`number` |The total width of the display area.
51
+ |===
52
+
53
+ **Returns**
54
+
55
+ `number` - The absolute horizontal pixel position.
56
+
57
+
58
+ '''
59
+
60
+ === `getDisplayPosY(p: p5, y: number, displayHeight: number): number`
61
+
62
+ Calculates the absolute Y pixel position on the main game display.
63
+
64
+ **Parameters**
65
+
66
+ [cols="1,1,3"]
67
+ |===
68
+ |Name |Type |Description
69
+ |`p` |`p5` |The P5.js instance.
70
+ |`y` |`number` |Normalized vertical position (0.0 to 1.0).
71
+ |`displayHeight` |`number` |The total height of the display area.
72
+ |===
73
+
74
+ **Returns**
75
+
76
+ `number` - The absolute vertical pixel position.
77
+
78
+
79
+ '''
80
+
81
+ === `getHudPosX(p: p5, x: number, displayWidth: number): number`
82
+
83
+ Calculates the absolute X pixel position within the HUD area.
84
+
85
+ **Parameters**
86
+
87
+ [cols="1,1,3"]
88
+ |===
89
+ |Name |Type |Description
90
+ |`p` |`p5` |The P5.js instance.
91
+ |`x` |`number` |Normalized horizontal position (0.0 to 1.0) relative to the HUD area.
92
+ |`displayWidth` |`number` |The width of the main display (used to calculate the HUD offset).
93
+ |===
94
+
95
+ **Returns**
96
+
97
+ `number` - The absolute horizontal pixel position within the HUD.
98
+
99
+
100
+ '''
101
+
102
+ === `getHudPosY(p: p5, y: number, displayHeight: number): number`
103
+
104
+ Calculates the absolute Y pixel position within the HUD area.
105
+
106
+ **Parameters**
107
+
108
+ [cols="1,1,3"]
109
+ |===
110
+ |Name |Type |Description
111
+ |`p` |`p5` |The P5.js instance.
112
+ |`y` |`number` |Normalized vertical position (0.0 to 1.0) relative to the HUD area.
113
+ |`displayHeight` |`number` |The total height of the display area.
114
+ |===
115
+
116
+ **Returns**
117
+
118
+ `number` - The absolute vertical pixel position within the HUD.
@@ -0,0 +1,53 @@
1
+ = RelativeValuesHelper Reference
2
+ :description: Generic utilities for calculating relative sizes and positions within containers.
3
+ :keywords: relative, sizing, positioning, layout, helper
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ The `RelativeValuesHelper` provides conversion utilities for scaling absolute sizes to the current canvas dimensions, enabling responsive layouts.
16
+
17
+ == Methods
18
+
19
+ === `getRelativeWidth(p: p5, size: number): number`
20
+
21
+ Calculates a pixel width based on a normalized percentage.
22
+
23
+ **Parameters**
24
+
25
+ [cols="1,1,3"]
26
+ |===
27
+ |Name |Type |Description
28
+ |`p` |`p5` |The P5.js instance.
29
+ |`size` |`number` |A float between 0.0 and 1.0 representing percentage of width.
30
+ |===
31
+
32
+ **Returns**
33
+
34
+ `number` - The calculated absolute pixel width.
35
+
36
+ '''
37
+
38
+ === `getRelativeHeight(p: p5, size: number): number`
39
+
40
+ Calculates a pixel height based on a normalized percentage.
41
+
42
+ **Parameters**
43
+
44
+ [cols="1,1,3"]
45
+ |===
46
+ |Name |Type |Description
47
+ |`p` |`p5` |The P5.js instance.
48
+ |`size` |`number` |A float between 0.0 and 1.0 representing percentage of height.
49
+ |===
50
+
51
+ **Returns**
52
+
53
+ `number` - The calculated absolute pixel height.
@@ -0,0 +1,29 @@
1
+ = Debuggable Reference
2
+ :description: Contract for modules that provide transparency to the developer.
3
+ :keywords: debug, interface, transparency, metrics
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ Contract for modules that provide transparency to the developer.
16
+
17
+ == Methods
18
+
19
+ === `getDebugData(): Record<string, string | number | boolean>`
20
+
21
+ Returns a dictionary of internal metrics for real-time inspection.
22
+
23
+ **Returns**
24
+
25
+ `Record<string, string | number | boolean>` - Key-value pairs of debug information.
26
+
27
+ == General Usage
28
+
29
+ When implemented, the xref:../modules/Debugger.adoc[Debugger] module will automatically create a UI section for the component and refresh its data every logic tick.
@@ -0,0 +1,35 @@
1
+ = GameModules Reference
2
+ :description: The central hub providing component-to-component visibility.
3
+ :keywords: architecture, dependency-injection, registry, modules
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ The central hub providing component-to-component visibility.
16
+
17
+ == Properties
18
+
19
+ [cols="1,1,3"]
20
+ |===
21
+ |Name |Type |Description
22
+ |`grid` |xref:modules/Grid.adoc[Grid] |Main game field manager.
23
+ |`hudGrid` |xref:modules/Grid.adoc[Grid] |Secondary 4x4 grid for HUD elements.
24
+ |`state` |xref:modules/State.adoc[State] |Single source of truth for game flags.
25
+ |`control` |xref:modules/Control.adoc[Control] |Input handling service.
26
+ |`text` |xref:modules/Text.adoc[Text] |Canvas typography service.
27
+ |`time` |xref:modules/Time.adoc[Time] |Logical clock manager.
28
+ |`sound` |xref:Sound.adoc[Sound] |Audio playback service.
29
+ |`score` |xref:modules/Score.adoc[Score] |Session performance tracker.
30
+ |`renderer` |xref:modules/RendererComposite.adoc[RendererComposite] |The visual orchestration layer.
31
+ |===
32
+
33
+ == General Usage
34
+
35
+ This registry is passed to almost every lifecycle method (`update`, `render`, `ControlCallback`). It allows modules to interact without tight coupling. For example, the `xref:modules/Sound.adoc[Sound]` module uses it to play sounds via `modules.sound.play()`.
@@ -0,0 +1,24 @@
1
+ = Initializable Reference
2
+ :description: A fundamental contract for modules that require an assembly phase.
3
+ :keywords: lifecycle, initialization, setup, bootstrap
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+ :source-highlighter: highlight.js
10
+ :reproducible:
11
+ :experimental:
12
+ :idprefix:
13
+ :idseparator: -
14
+
15
+ A fundamental contract for modules that require an assembly phase.
16
+
17
+ == Methods
18
+
19
+ === `setup(): void`
20
+ Invoked once by the engine after all modules are constructed.
21
+
22
+ == General Usage
23
+
24
+ Modules implementing `Initializable` use the `setup()` phase to establish internal buffers, bind event listeners, or perform calculations that depend on final configuration values.