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,33 @@
1
+ = RendererInitializable Reference
2
+ :description: Extension of Initializable specifically for rendering components.
3
+ :keywords: rendering, initialization, layout, 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
+ Extension of `xref:Initializable.adoc[Initializable]` specifically for rendering components.
16
+
17
+ == Methods
18
+
19
+ === `setup(rendererMetrics: xref:../types/RendererMetrics.adoc[RendererMetrics]): void`
20
+
21
+ Invoked with live geometric metrics for the current session.
22
+
23
+ **Parameters**
24
+
25
+ [cols="1,1,3"]
26
+ |===
27
+ |Name |Type |Description
28
+ |`rendererMetrics` |`xref:../types/RendererMetrics.adoc[RendererMetrics]` |The calculated display dimensions and offsets.
29
+ |===
30
+
31
+ == General Usage
32
+
33
+ Implemented by components like `xref:../modules/DisplayRenderer.adoc[DisplayRenderer]` to receive pre-calculated X/Y origins and cell sizes before the first frame is drawn.
@@ -0,0 +1,41 @@
1
+ = StateSyncable Reference
2
+ :description: Contract for modules that must react to global state changes.
3
+ :keywords: state, reactivity, synchronization, 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
+ Contract for modules that must react to global state changes.
16
+
17
+ == Properties
18
+
19
+ [cols="1,1,3"]
20
+ |===
21
+ |Name |Type |Description
22
+ |`_state` |`State` |Internal reference to the state module.
23
+ |===
24
+
25
+ == Methods
26
+
27
+ === `syncState(state: xref:modules/State.adoc[State]): void`
28
+
29
+ Links the module instance and allows it to subscribe to properties.
30
+
31
+ **Parameters**
32
+
33
+ [cols="1,1,3"]
34
+ |===
35
+ |Name |Type |Description
36
+ |`state` |`xref:modules/State.adoc[State]` |The global state manager.
37
+ |===
38
+
39
+ == General Usage
40
+
41
+ Implemented by `xref:../modules/GameSound.adoc[GameSound]` and `xref:../modules/GameScore.adoc[GameScore]`. During the start-up sequence, the engine calls `syncState()` on these modules to ensure they have the latest references to `muted` flags and `highScore` data.
@@ -0,0 +1,98 @@
1
+ = Control Reference
2
+ :description: Interface for input handling and event-driven control distribution.
3
+ :keywords: control, input, subscription, 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
+ Interface for input handling and event-driven control distribution.
16
+
17
+ == Methods
18
+
19
+ === `notify(key: xref:../../enums/ControlKey.adoc[ControlKey], type: xref:../../enums/ControlEventType.adoc[ControlEventType]): void`
20
+
21
+ Triggers an event manually. Usually called by hardware drivers (like Keyboard listeners).
22
+
23
+ **Parameters**
24
+
25
+ [cols="1,1,3"]
26
+ |===
27
+ |Name |Type |Description
28
+ |`key` |`xref:../../enums/ControlKey.adoc[ControlKey]` |The control key to simulate.
29
+ |`type` |`xref:../../enums/ControlEventType.adoc[ControlEventType]` |The type of event (press/release).
30
+ |===
31
+
32
+
33
+ '''
34
+
35
+ === `setModules(modules: xref:../GameModules.adoc[GameModules]): void`
36
+
37
+ Provides the context registry required for `xref:../../types/GameEvent.adoc[GameEvent]` construction.
38
+
39
+ **Parameters**
40
+
41
+ [cols="1,1,3"]
42
+ |===
43
+ |Name |Type |Description
44
+ |`modules` |`xref:../GameModules.adoc[GameModules]` |Registry of all game modules.
45
+ |===
46
+
47
+
48
+ '''
49
+
50
+ === `subscribe(key: xref:../../enums/ControlKey.adoc[ControlKey], type: xref:../../enums/ControlEventType.adoc[ControlEventType], callback: xref:../../types/ControlCallback.adoc[ControlCallback]): void`
51
+
52
+ Registers a function to be executed when the specified input occurs.
53
+
54
+ **Parameters**
55
+
56
+ [cols="1,1,3"]
57
+ |===
58
+ |Name |Type |Description
59
+ |`key` |`xref:../../enums/ControlKey.adoc[ControlKey]` |The key to listen for.
60
+ |`type` |`xref:../../enums/ControlEventType.adoc[ControlEventType]` |The event type (pressed/held/released).
61
+ |`callback` |`xref:../../types/ControlCallback.adoc[ControlCallback]` |Function to execute when triggered.
62
+ |===
63
+
64
+
65
+ '''
66
+
67
+ === `unsubscribe(key: xref:../../enums/ControlKey.adoc[ControlKey], type: xref:../../enums/ControlEventType.adoc[ControlEventType], callback: xref:../../types/ControlCallback.adoc[ControlCallback]): void`
68
+
69
+ Detaches a previously registered input listener.
70
+
71
+ **Parameters**
72
+
73
+ [cols="1,1,3"]
74
+ |===
75
+ |Name |Type |Description
76
+ |`key` |`xref:../../enums/ControlKey.adoc[ControlKey]` |The key to unsubscribe from.
77
+ |`type` |`xref:../../enums/ControlEventType.adoc[ControlEventType]` |The event type.
78
+ |`callback` |`xref:../../types/ControlCallback.adoc[ControlCallback]` |The specific function to remove.
79
+ |===
80
+
81
+
82
+ '''
83
+
84
+ === `unbindControls(): void`
85
+
86
+ Temporarily disables all input listeners.
87
+
88
+
89
+ '''
90
+
91
+ === `bindControls(): void`
92
+
93
+ Re-enables input listeners.
94
+
95
+
96
+ == General Usage
97
+
98
+ Implemented by `xref:../../modules/GameControl.adoc[GameControl]`. Games use this to react to player movements (`xref:../../enums/ControlKey.adoc[LEFT]`, `xref:../../enums/ControlKey.adoc[RIGHT]`) or actions (`xref:../../enums/ControlKey.adoc[ACTION]`).
@@ -0,0 +1,411 @@
1
+ = Grid Reference
2
+ :description: Interface defining the behaviors of a 2D grid of cells.
3
+ :keywords: grid, cells, matrix, collision-detection
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
+ Interface defining the behaviors of a 2D grid of cells.
16
+
17
+ == Properties
18
+
19
+ [cols="1,1,3"]
20
+ |===
21
+ |Name |Type |Description
22
+ |`width` |`number` |The number of columns in the grid.
23
+ |`height` |`number` |The number of rows in the grid.
24
+ |===
25
+
26
+ == Methods
27
+
28
+ === `getGrid(): xref:../../types/Cell.adoc[Cell][][]`
29
+
30
+ Returns the raw 2D array of `xref:../../types/Cell.adoc[Cell]` objects representing the grid state.
31
+
32
+ **Returns**
33
+
34
+ `xref:../../types/Cell.adoc[Cell][][]` - The matrix representing the grid state.
35
+
36
+
37
+ '''
38
+
39
+ === `resetGrid(): void`
40
+
41
+ Clears all cell values and resets colors to `xref:../../enums/Color.adoc[DEFAULT]`.
42
+
43
+
44
+ '''
45
+
46
+ === `forEach(callback: (cell: xref:../../types/Cell.adoc[Cell]) => void): void`
47
+
48
+ Iterates over every cell in the grid, executing the provided callback.
49
+
50
+ **Parameters**
51
+
52
+ [cols="1,1,3"]
53
+ |===
54
+ |Name |Type |Description
55
+ |`callback` |`(cell: xref:../../types/Cell.adoc[Cell]) => void` |Function to execute for each cell.
56
+ |===
57
+
58
+
59
+ '''
60
+
61
+ === `isValidCoordinate(coordinate: xref:../../types/Coordinate.adoc[Coordinate]): boolean`
62
+
63
+ Returns `true` if the given coordinate falls within the grid boundaries.
64
+
65
+ **Parameters**
66
+
67
+ [cols="1,1,3"]
68
+ |===
69
+ |Name |Type |Description
70
+ |`coordinate` |`xref:../../types/Coordinate.adoc[Coordinate]` |The `{x, y}` point to validate.
71
+ |===
72
+
73
+ **Returns**
74
+
75
+ `boolean` - `true` if valid, `false` otherwise.
76
+
77
+
78
+ '''
79
+
80
+ === `getCell(coordinate: xref:../../types/Coordinate.adoc[Coordinate]): xref:../../types/Cell.adoc[Cell] | null`
81
+
82
+ Retrieves the `xref:../../types/Cell.adoc[Cell]` object at the specified coordinate.
83
+
84
+ **Parameters**
85
+
86
+ [cols="1,1,3"]
87
+ |===
88
+ |Name |Type |Description
89
+ |`coordinate` |`xref:../../types/Coordinate.adoc[Coordinate]` |The `{x, y}` position to query.
90
+ |===
91
+
92
+ **Returns**
93
+
94
+ `xref:../../types/Cell.adoc[Cell] | null` - The cell object, or `null` if the coordinate is out of bounds.
95
+
96
+
97
+ '''
98
+
99
+ === `setCellValue(coordinate: xref:../../types/Coordinate.adoc[Coordinate], value: number): void`
100
+
101
+ Updates the numeric value of the cell at the given coordinate.
102
+
103
+ **Parameters**
104
+
105
+ [cols="1,1,3"]
106
+ |===
107
+ |Name |Type |Description
108
+ |`coordinate` |`xref:../../types/Coordinate.adoc[Coordinate]` |Target position.
109
+ |`value` |`number` |New status value (0 for inactive, >0 for active).
110
+ |===
111
+
112
+
113
+ '''
114
+
115
+ === `setCellColor(coordinate: xref:../../types/Coordinate.adoc[Coordinate], color: xref:../../enums/Color.adoc[Color]): void`
116
+
117
+ Updates the visual color of the cell at the given coordinate.
118
+
119
+ **Parameters**
120
+
121
+ [cols="1,1,3"]
122
+ |===
123
+ |Name |Type |Description
124
+ |`coordinate` |`xref:../../types/Coordinate.adoc[Coordinate]` |Target position.
125
+ |`color` |`xref:../../enums/Color.adoc[Color]` |Enum value representing the new color.
126
+ |===
127
+
128
+
129
+ '''
130
+
131
+ === `isCellActive(coordinate: xref:../../types/Coordinate.adoc[Coordinate]): boolean`
132
+
133
+ Returns `true` if the cell's value is greater than `0`.
134
+
135
+ **Parameters**
136
+
137
+ [cols="1,1,3"]
138
+ |===
139
+ |Name |Type |Description
140
+ |`coordinate` |`xref:../../types/Coordinate.adoc[Coordinate]` |Point to check.
141
+ |===
142
+
143
+ **Returns**
144
+
145
+ `boolean` - `true` if the cell value is greater than 0.
146
+
147
+
148
+ '''
149
+
150
+ === `isCellInactive(coordinate: xref:../../types/Coordinate.adoc[Coordinate]): boolean`
151
+
152
+ Returns `true` if the cell's value is `0`.
153
+
154
+ **Parameters**
155
+
156
+ [cols="1,1,3"]
157
+ |===
158
+ |Name |Type |Description
159
+ |`coordinate` |`xref:../../types/Coordinate.adoc[Coordinate]` |Point to check.
160
+ |===
161
+
162
+ **Returns**
163
+
164
+ `boolean` - `true` if the cell value is exactly 0.
165
+
166
+
167
+ '''
168
+
169
+ === `isRowFull(y: number): boolean`
170
+
171
+ Returns `true` if every cell in the specified row `y` is active.
172
+
173
+ **Parameters**
174
+
175
+ [cols="1,1,3"]
176
+ |===
177
+ |Name |Type |Description
178
+ |`y` |`number` |Row index to check.
179
+ |===
180
+
181
+ **Returns**
182
+
183
+ `boolean` - `true` if full.
184
+
185
+
186
+ '''
187
+
188
+ === `isRowEmpty(y: number): boolean`
189
+
190
+ Returns `true` if every cell in the specified row `y` is inactive.
191
+
192
+ **Parameters**
193
+
194
+ [cols="1,1,3"]
195
+ |===
196
+ |Name |Type |Description
197
+ |`y` |`number` |Row index to check.
198
+ |===
199
+
200
+ **Returns**
201
+
202
+ `boolean` - `true` if empty.
203
+
204
+
205
+ '''
206
+
207
+ === `clearRow(y: number): void`
208
+
209
+ Resets all cells in row `y` to their inactive state.
210
+
211
+ **Parameters**
212
+
213
+ [cols="1,1,3"]
214
+ |===
215
+ |Name |Type |Description
216
+ |`y` |`number` |Row index to clear.
217
+ |===
218
+
219
+
220
+ '''
221
+
222
+ === `shiftRowsDown(fromY: number): void`
223
+
224
+ Moves all rows above (and including) `fromY` down by one position.
225
+
226
+ **Parameters**
227
+
228
+ [cols="1,1,3"]
229
+ |===
230
+ |Name |Type |Description
231
+ |`fromY` |`number` |The row index to start shifting from.
232
+ |===
233
+
234
+
235
+ '''
236
+
237
+ === `shiftRowsUp(fromY: number): void`
238
+
239
+ Moves all rows below (and including) `fromY` up by one position.
240
+
241
+ **Parameters**
242
+
243
+ [cols="1,1,3"]
244
+ |===
245
+ |Name |Type |Description
246
+ |`fromY` |`number` |The row index to start shifting from.
247
+ |===
248
+
249
+
250
+ '''
251
+
252
+ === `clearFullRows(): number`
253
+
254
+ Detects, clears, and shifts rows for all full rows in the grid.
255
+
256
+ **Returns**
257
+
258
+ `number` - The total count of cleared rows.
259
+
260
+
261
+ '''
262
+
263
+ === `isColumnFull(x: number): boolean`
264
+
265
+ Returns `true` if every cell in column `x` is active.
266
+
267
+ **Parameters**
268
+
269
+ [cols="1,1,3"]
270
+ |===
271
+ |Name |Type |Description
272
+ |`x` |`number` |Column index to check.
273
+ |===
274
+
275
+ **Returns**
276
+
277
+ `boolean` - `true` if full.
278
+
279
+
280
+ '''
281
+
282
+ === `isColumnEmpty(x: number): boolean`
283
+
284
+ Returns `true` if every cell in column `x` is inactive.
285
+
286
+ **Parameters**
287
+
288
+ [cols="1,1,3"]
289
+ |===
290
+ |Name |Type |Description
291
+ |`x` |`number` |Column index to check.
292
+ |===
293
+
294
+ **Returns**
295
+
296
+ `boolean` - `true` if empty.
297
+
298
+
299
+ '''
300
+
301
+ === `clearColumn(x: number): void`
302
+
303
+ Resets all cells in column `x` to their inactive state.
304
+
305
+ **Parameters**
306
+
307
+ [cols="1,1,3"]
308
+ |===
309
+ |Name |Type |Description
310
+ |`x` |`number` |Column index to clear.
311
+ |===
312
+
313
+
314
+ '''
315
+
316
+ === `shiftColumnsRight(fromX: number): void`
317
+
318
+ Moves all columns to the left of `fromX` one position to the right.
319
+
320
+ **Parameters**
321
+
322
+ [cols="1,1,3"]
323
+ |===
324
+ |Name |Type |Description
325
+ |`fromX` |`number` |The column index to start shifting from.
326
+ |===
327
+
328
+
329
+ '''
330
+
331
+ === `shiftColumnsLeft(fromX: number): void`
332
+
333
+ Moves all columns to the right of `fromX` one position to the left.
334
+
335
+ **Parameters**
336
+
337
+ [cols="1,1,3"]
338
+ |===
339
+ |Name |Type |Description
340
+ |`fromX` |`number` |The column index to start shifting from.
341
+ |===
342
+
343
+
344
+ '''
345
+
346
+ === `clearFullColumns(): number`
347
+
348
+ Detects and clears all full columns.
349
+
350
+ **Returns**
351
+
352
+ `number` - The total count of cleared columns.
353
+
354
+
355
+ '''
356
+
357
+ === `isAreaOccupied(coordinates: xref:../../types/Coordinate.adoc[Coordinate][]): boolean`
358
+
359
+ Returns `true` if any of the provided coordinates are already active in the grid. Used for collision detection.
360
+
361
+ **Parameters**
362
+
363
+ [cols="1,1,3"]
364
+ |===
365
+ |Name |Type |Description
366
+ |`coordinates` |`xref:../../types/Coordinate.adoc[Coordinate][]` |Array of `{x, y}` points representing a shape or piece.
367
+ |===
368
+
369
+ **Returns**
370
+
371
+ `boolean` - `true` if occupied.
372
+
373
+
374
+ '''
375
+
376
+ === `fillArea(start: xref:../../types/Coordinate.adoc[Coordinate], end: xref:../../types/Coordinate.adoc[Coordinate], value: number, color: xref:../../enums/Color.adoc[Color]): void`
377
+
378
+ Batch updates a rectangular area defined by `start` and `end` with the given value and color.
379
+
380
+ **Parameters**
381
+
382
+ [cols="1,1,3"]
383
+ |===
384
+ |Name |Type |Description
385
+ |`start` |`xref:../../types/Coordinate.adoc[Coordinate]` |Top-left corner of the rectangle.
386
+ |`end` |`xref:../../types/Coordinate.adoc[Coordinate]` |Bottom-right corner of the rectangle.
387
+ |`value` |`number` |Value to apply to all cells in the area.
388
+ |`color` |`xref:../../enums/Color.adoc[Color]` |Color to apply to all cells in the area.
389
+ |===
390
+
391
+
392
+ '''
393
+
394
+ === `stampPiece(coordinates: xref:../../types/Coordinate.adoc[Coordinate][], value: number, color: xref:../../enums/Color.adoc[Color]): void`
395
+
396
+ Applies the specified value and color to multiple discrete coordinates simultaneously.
397
+
398
+ **Parameters**
399
+
400
+ [cols="1,1,3"]
401
+ |===
402
+ |Name |Type |Description
403
+ |`coordinates` |`xref:../../types/Coordinate.adoc[Coordinate][]` |Points to update.
404
+ |`value` |`number` |New cell value.
405
+ |`color` |`xref:../../enums/Color.adoc[Color]` |New cell color.
406
+ |===
407
+
408
+
409
+ == General Usage
410
+
411
+ The `Grid` interface is implemented by both the main `xref:../../modules/GameGrid.adoc[GameGrid]` and the `xref:../../modules/GameHudGrid.adoc[GameHudGrid]`.
@@ -0,0 +1,34 @@
1
+ = Renderer Reference
2
+ :description: Defines the core drawing contract for engine visual layers.
3
+ :keywords: rendering, drawing, graphics, canvas
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 core drawing contract for engine visual layers.
16
+
17
+ == Methods
18
+
19
+ === `render(grid: xref:../../types/Cell.adoc[Cell][][], modules: xref:../GameModules.adoc[GameModules]): void`
20
+
21
+ Executes the drawing logic for a single frame.
22
+
23
+ **Parameters**
24
+
25
+ [cols="1,1,3"]
26
+ |===
27
+ |Name |Type |Description
28
+ |`grid` |`xref:../../types/Cell.adoc[Cell][][]` |The current state of the game grid.
29
+ |`modules` |`xref:../GameModules.adoc[GameModules]` |Registry of all game modules.
30
+ |===
31
+
32
+ == General Usage
33
+
34
+ Implemented by `xref:../../modules/DisplayRenderer.adoc[DisplayRenderer]` and `xref:../../modules/HudRenderer.adoc[HudRenderer]`. The engine's composite renderer iterates through all registered `Renderer` implementations and calls their `render` method 60 times per second.
@@ -0,0 +1,57 @@
1
+ = RendererComposite Reference
2
+ :description: An advanced renderer that manages a collection of individual layers.
3
+ :keywords: renderer, composite, layers, graphics, canvas
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
+ An advanced renderer that manages a collection of individual layers.
16
+
17
+ == Properties
18
+
19
+ [cols="1,1,3"]
20
+ |===
21
+ |Name |Type |Description
22
+ |`rendererMetrics` |xref:../../types/RendererMetrics.adoc[RendererMetrics] |The geometric source of truth.
23
+ |===
24
+
25
+ == Methods
26
+
27
+ === `addRenderer(renderer: xref:Renderer.adoc[Renderer]): void`
28
+
29
+ Attaches a new visual layer.
30
+
31
+ **Parameters**
32
+
33
+ [cols="1,1,3"]
34
+ |===
35
+ |Name |Type |Description
36
+ |`renderer` |`xref:Renderer.adoc[Renderer]` |The renderer instance to add (e.g., Grid, HUD).
37
+ |===
38
+
39
+
40
+ '''
41
+
42
+ === `render(grid: xref:../../types/Cell.adoc[Cell][][], modules: xref:../GameModules.adoc[GameModules]): void`
43
+
44
+ Orchestrates the rendering call for all layers.
45
+
46
+ **Parameters**
47
+
48
+ [cols="1,1,3"]
49
+ |===
50
+ |Name |Type |Description
51
+ |`grid` |`xref:../../types/Cell.adoc[Cell][][]` |The current state of the game grid.
52
+ |`modules` |`xref:../GameModules.adoc[GameModules]` |Registry of all game modules.
53
+ |===
54
+
55
+ == General Usage
56
+
57
+ This interface is the entry point for the visual system. It ensures that the background, the game grid, and the HUD are drawn in the correct order and with synchronized metrics.