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,318 @@
1
+ = GameState Module Reference
2
+ :description: Single source of truth for the game lifecycle and persistent user preferences.
3
+ :keywords: state, lifecycle, persistence, localstorage
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 `GameState` module acts as the central, single source of truth for the game's lifecycle and user preferences. It handles persistence to `LocalStorage` for settings and high scores.
16
+
17
+ == Centralized Persistence
18
+
19
+ As defined in the Architectural Patterns, `GameState` is responsible for all `LocalStorage` logic. Other modules (like `xref:GameSound.adoc[GameSound]`) must sync their internal state with this module via the `xref:../interfaces/StateSyncable.adoc[StateSyncable]` interface.
20
+
21
+ == Persistence vs. Session
22
+
23
+ It is important to understand the boundary between `GameState` persistence and the `Game` Session management:
24
+
25
+ * **GameState Persistence**: Manages **long-term, cross-session** data. It persists user preferences (like `muted`, `colorEnabled`) to `LocalStorage`. This data remains even after a Game Over or when completely restarting the engine.
26
+ * **Game Session**: Managed by the `xref:Game.adoc[Game]` class utilizing a `SessionManager` and `Serializable` modules. A Session saves the **transient, intra-session** progress (e.g., the active grid layout, the current score, the current level). Session data is automatically cleared when the game reaches a `GAME_OVER` state, when the `RESET` button is pressed, or when the player manually uses the `EXIT` control.
27
+
28
+ == API Reference
29
+
30
+ === `isOn(): boolean`
31
+
32
+ Checks if the game system is powered up.
33
+
34
+ **Returns**
35
+
36
+ `boolean` - `true` if system is on.
37
+
38
+
39
+ '''
40
+
41
+ === `isOff(): boolean`
42
+
43
+ Checks if the game system is powered down.
44
+
45
+ **Returns**
46
+
47
+ `boolean` - `true` if system is off.
48
+
49
+
50
+ '''
51
+
52
+ === `isStarted(): boolean`
53
+
54
+ Checks if a game session is active (passed the title screen).
55
+
56
+ **Returns**
57
+
58
+ `boolean` - `true` if the game has started.
59
+
60
+
61
+ '''
62
+
63
+ === `isPlaying(): boolean`
64
+
65
+ Checks if the game loop is actively updating logic.
66
+
67
+ **Returns**
68
+
69
+ `boolean` - `true` if gameplay is active and not paused.
70
+
71
+
72
+ '''
73
+
74
+ === `isPaused(): boolean`
75
+
76
+ Checks if the game is currently paused.
77
+
78
+ **Returns**
79
+
80
+ `boolean` - `true` if the game is started but halted.
81
+
82
+
83
+ '''
84
+
85
+ === `isGameOver(): boolean`
86
+
87
+ Checks if the current session has ended in a Game Over.
88
+
89
+ **Returns**
90
+
91
+ `boolean` - `true` if player has lost.
92
+
93
+
94
+ '''
95
+
96
+ === `turnOn(): void`
97
+
98
+ Powers on the game system.
99
+
100
+ **Behavior**
101
+
102
+ Sets the `on` property to true and ensures `start`, `playing`, and `gameOver` are initialized to false.
103
+
104
+
105
+ '''
106
+
107
+ === `turnOff(): void`
108
+
109
+ Powers off the game system.
110
+
111
+ **Behavior**
112
+
113
+ Sets the `on` property to false and wipes transient state.
114
+
115
+
116
+ '''
117
+
118
+ === `startGame(): void`
119
+
120
+ Initiates gameplay from the title screen.
121
+
122
+ **Behavior**
123
+
124
+ Sets `start` and `playing` to true. This method only has effect if the system is already `on`.
125
+
126
+
127
+ '''
128
+
129
+ === `exitGame(): void`
130
+
131
+ Ends the session and returns to the title screen.
132
+
133
+ **Behavior**
134
+
135
+ Resets `start`, `playing`, and `gameOver` to false.
136
+
137
+
138
+ '''
139
+
140
+ === `pause(): void`
141
+
142
+ Halts gameplay logic.
143
+
144
+ **Behavior**
145
+
146
+ Sets `playing` to false. Only works if the game is already started.
147
+
148
+
149
+ '''
150
+
151
+ === `resume(): void`
152
+
153
+ Restarts gameplay logic from a paused state.
154
+
155
+ **Behavior**
156
+
157
+ Sets `playing` to true.
158
+
159
+
160
+ '''
161
+
162
+ === `triggerGameOver(): void`
163
+
164
+ Forces the game into a Game Over state.
165
+
166
+ **Behavior**
167
+
168
+ Sets `playing` to false and `gameOver` to true.
169
+
170
+
171
+ '''
172
+
173
+ === `resetGame(): void`
174
+
175
+ Prepares the state for a new round (hard restart).
176
+
177
+ **Behavior**
178
+
179
+ Clears the `gameOver` flag and resumes `playing` status. Unlike `resetGameOver`, this is intended for a complete session reset from any state.
180
+
181
+
182
+ '''
183
+
184
+ === `resetGameOver(): void`
185
+
186
+ Resets the state specifically after a Game Over to allow immediate restart.
187
+
188
+ **Behavior**
189
+
190
+ Sets `gameOver` to false and `playing` to true. This is the recommended way to handle "Try Again" scenarios.
191
+
192
+
193
+ '''
194
+
195
+ === `isColorEnabled(): boolean`
196
+
197
+ Checks if theme color mode is active.
198
+
199
+ **Returns**
200
+
201
+ `boolean` - `true` if color mode is on.
202
+
203
+
204
+ '''
205
+
206
+ === `setColorEnabled(value: boolean): void`
207
+
208
+ Sets the color mode preference.
209
+
210
+ **Parameters**
211
+
212
+ [cols="1,1,3"]
213
+ |===
214
+ |Name |Type |Description
215
+ |`value` |`boolean` |New color mode status.
216
+ |===
217
+
218
+ **Behavior**
219
+
220
+ Updates the property and automatically persists the value to `LocalStorage`.
221
+
222
+
223
+ '''
224
+
225
+ === `toggleColorEnabled(): void`
226
+
227
+ Toggles the current color mode.
228
+
229
+
230
+ '''
231
+
232
+ === `isMuted(): boolean`
233
+
234
+ Checks if master audio is muted.
235
+
236
+ **Returns**
237
+
238
+ `boolean` - `true` if sound is disabled.
239
+
240
+
241
+ '''
242
+
243
+ === `setMuted(value: boolean): void`
244
+
245
+ Sets the master mute status.
246
+
247
+ **Parameters**
248
+
249
+ [cols="1,1,3"]
250
+ |===
251
+ |Name |Type |Description
252
+ |`value` |`boolean` |New mute status.
253
+ |===
254
+
255
+ **Behavior**
256
+
257
+ Updates the property and persists it to `LocalStorage`.
258
+
259
+
260
+ '''
261
+
262
+ === `toggleMuted(): void`
263
+
264
+ Toggles the master mute status.
265
+
266
+
267
+ '''
268
+
269
+
270
+
271
+ === `subscribe(property: StateProperty, callback: (value: boolean | number) => void): void`
272
+
273
+ Registers a listener for state changes.
274
+
275
+ **Parameters**
276
+
277
+ [cols="1,1,3"]
278
+ |===
279
+ |Name |Type |Description
280
+ |`property` |`xref:../enums/StateProperty.adoc[StateProperty]` |The specific property to monitor.
281
+ |`callback` |`Function` |The function to execute on change.
282
+ |===
283
+
284
+ **Example**
285
+
286
+ [source,typescript]
287
+ ----
288
+ state.subscribe(StateProperty.GAME_OVER, (isOver) => {
289
+ if (isOver) {
290
+ this.modules.sound.play(Sound.GAMEOVER);
291
+ }
292
+ });
293
+ ----
294
+
295
+
296
+ '''
297
+
298
+ === `unsubscribe(property: StateProperty, callback: (value: boolean | number) => void): void`
299
+
300
+ Removes a state change listener.
301
+
302
+ **Parameters**
303
+
304
+ [cols="1,1,3"]
305
+ |===
306
+ |Name |Type |Description
307
+ |`property` |`xref:../enums/StateProperty.adoc[StateProperty]` |The property being monitored.
308
+ |`callback` |`Function` |The reference to the callback to remove.
309
+ |===
310
+
311
+
312
+ '''
313
+
314
+
315
+
316
+ === `getDebugData(): Record<string, string | number | boolean>`
317
+
318
+ Returns metadata for the real-time debugger.
@@ -0,0 +1,139 @@
1
+ = GameText Module Reference
2
+ :description: Handles rendering of pixelated text on the game display and HUD.
3
+ :keywords: text, typography, rendering, display, retro
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 `GameText` module handles rendering pixelated text on the game display. It manages font initialization, sizing, and ensures text is scaled correctly relative to the canvas size.
16
+
17
+ == API Reference
18
+
19
+ === `setTextSize(size: FontSize): void`
20
+
21
+ Sets the current font size from predefined responsive values.
22
+
23
+ **Parameters**
24
+
25
+ [cols="1,1,3"]
26
+ |===
27
+ |Name |Type |Description
28
+ |`size` |`xref:../enums/FontSize.adoc[FontSize]` |Enum value (`EXTRA_SMALL` to `EXTRA_LARGE`).
29
+ |===
30
+
31
+ **Behavior**
32
+
33
+ Applies the pre-calculated pixel size to the P5.js context based on the current container dimensions.
34
+
35
+ **Example**
36
+
37
+ [source,typescript]
38
+ ----
39
+ this.modules.text.setTextSize(FontSize.LARGE);
40
+ ----
41
+
42
+
43
+ '''
44
+
45
+ === `setTextAlign(align: FontAlign, verticalAlign: FontVerticalAlign): void`
46
+
47
+ Configures the alignment of rendered text.
48
+
49
+ **Parameters**
50
+
51
+ [cols="1,1,3"]
52
+ |===
53
+ |Name |Type |Description
54
+ |`align` |`xref:../enums/FontAlignment.adoc[FontAlign]` |Horizontal alignment (LEFT, CENTER, RIGHT).
55
+ |`verticalAlign` |`xref:../enums/FontAlignment.adoc[FontVerticalAlign]` |Vertical alignment (TOP, CENTER, BOTTOM).
56
+ |===
57
+
58
+
59
+ '''
60
+
61
+ === `setActiveText(): void`
62
+
63
+ Sets the text fill color to the active theme color.
64
+
65
+
66
+ '''
67
+
68
+ === `setInactiveText(): void`
69
+
70
+ Sets the text fill color to the inactive theme color.
71
+
72
+
73
+ '''
74
+
75
+ === `textOnDisplay(text: string, coordinate: Coordinate): void`
76
+
77
+ Renders text on the main game display area.
78
+
79
+ **Parameters**
80
+
81
+ [cols="1,1,3"]
82
+ |===
83
+ |Name |Type |Description
84
+ |`text` |`string` |The message to display.
85
+ |`coordinate` |`xref:../types/Coordinate.adoc[Coordinate]` |Normalized coordinates (0.0 to 1.0) within the game grid area.
86
+ |===
87
+
88
+ **Example**
89
+
90
+ [source,typescript]
91
+ ----
92
+ text.textOnDisplay('PAUSED', { x: 0.5, y: 0.5 });
93
+ ----
94
+
95
+
96
+ '''
97
+
98
+ === `textOnHud(text: string, coordinate: Coordinate): void`
99
+
100
+ Renders text on the side HUD area.
101
+
102
+ **Parameters**
103
+
104
+ [cols="1,1,3"]
105
+ |===
106
+ |Name |Type |Description
107
+ |`text` |`string` |The message to display.
108
+ |`coordinate` |`xref:../types/Coordinate.adoc[Coordinate]` |Normalized coordinates (0.0 to 1.0) within the HUD container.
109
+ |===
110
+
111
+
112
+ '''
113
+
114
+ === `setRendererMetrics(metrics: RendererMetrics): void`
115
+
116
+ Updates the coordinate conversion reference.
117
+
118
+ **Parameters**
119
+
120
+ [cols="1,1,3"]
121
+ |===
122
+ |Name |Type |Description
123
+ |`metrics` |`xref:../types/RendererMetrics.adoc[RendererMetrics]` |The updated renderer dimensions and origins.
124
+ |===
125
+
126
+ **Behavior**
127
+
128
+ Called by the engine during initialization. These metrics are used by `textOnHud` and `textOnDisplay` to calculate absolute pixel positions.
129
+
130
+
131
+ '''
132
+
133
+ === `getDebugData(): Record<string, string | number | boolean>`
134
+
135
+ Returns metadata for the real-time debugger.
136
+
137
+ **Returns**
138
+
139
+ `Record<string, string | number | boolean>` - Object containing the current font family and pre-calculated size count.
@@ -0,0 +1,141 @@
1
+ = GameTime Module Reference
2
+ :description: Manages the engine's logical clock, decoupling game logic ticks from the visual frame rate.
3
+ :keywords: time, clock, tick, interval, game-loop
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 `GameTime` module manages the engine's logical clock. It decouples game logic "ticks" from the visual frame rate, ensuring consistent gameplay speed regardless of the device's performance.
16
+
17
+ == API Reference
18
+
19
+ === `tickInterval: number`
20
+
21
+ Getter/Setter for the game logic speed in milliseconds.
22
+
23
+ **Returns**
24
+
25
+ `number` - The current time between logic ticks.
26
+
27
+ **Behavior**
28
+
29
+ Lowering this value makes the game run faster (e.g., used for difficulty progression).
30
+
31
+
32
+ '''
33
+
34
+ === `shouldTick(): boolean`
35
+
36
+ Determines if a logic update should be executed.
37
+
38
+ **Returns**
39
+
40
+ `boolean` - `true` if the internal accumulator has exceeded the `tickInterval`.
41
+
42
+ **Behavior**
43
+
44
+ Called by the main loop. If it returns true, it automatically subtracts the `tickInterval` from the accumulator to maintain a stable clock.
45
+
46
+
47
+ '''
48
+
49
+ === `update(deltaTime: number): void`
50
+
51
+ Advances the internal time accumulator.
52
+
53
+ **Parameters**
54
+
55
+ [cols="1,1,3"]
56
+ |===
57
+ |Name |Type |Description
58
+ |`deltaTime` |`number` |Time elapsed since the last render frame (in milliseconds).
59
+ |===
60
+
61
+
62
+ '''
63
+
64
+ === `reset(): void`
65
+
66
+ Clears the time accumulator.
67
+
68
+ **Behavior**
69
+
70
+ Prevents a "burst" of logic updates after resuming from a long pause or game restart.
71
+
72
+
73
+ '''
74
+
75
+ === `incrementTickInterval(amount: number): void`
76
+
77
+ Slows down the game by increasing the time between ticks.
78
+
79
+ **Parameters**
80
+
81
+ [cols="1,1,3"]
82
+ |===
83
+ |Name |Type |Description
84
+ |`amount` |`number` |Milliseconds to add to the interval.
85
+ |===
86
+
87
+
88
+ '''
89
+
90
+ === `decrementTickInterval(amount: number): void`
91
+
92
+ Speeds up the game by decreasing the time between ticks.
93
+
94
+ **Parameters**
95
+
96
+ [cols="1,1,3"]
97
+ |===
98
+ |Name |Type |Description
99
+ |`amount` |`number` |Milliseconds to subtract from the interval.
100
+ |===
101
+
102
+
103
+ '''
104
+
105
+ === `setTickInterval(interval: number): void`
106
+
107
+ Sets the tick interval exactly to the specified value.
108
+
109
+ **Parameters**
110
+
111
+ [cols="1,1,3"]
112
+ |===
113
+ |Name |Type |Description
114
+ |`interval` |`number` |The new interval between logic updates (in milliseconds).
115
+ |===
116
+
117
+
118
+ '''
119
+
120
+ === `setMinTickInterval(interval: number): void`
121
+
122
+ Sets the minimum limit for the tick interval, preventing the game from speeding up beyond this point.
123
+
124
+ **Parameters**
125
+
126
+ [cols="1,1,3"]
127
+ |===
128
+ |Name |Type |Description
129
+ |`interval` |`number` |The minimum interval allowed (in milliseconds).
130
+ |===
131
+
132
+
133
+ '''
134
+
135
+ === `getDebugData(): Record<string, string | number | boolean>`
136
+
137
+ Returns metadata for the real-time debugger.
138
+
139
+ **Returns**
140
+
141
+ `Record<string, string | number | boolean>` - Object containing `fps` (Frames Per Second) and `tps` (Ticks Per Second).
@@ -0,0 +1,56 @@
1
+ = HudRenderer Module Reference
2
+ :description: Manages the visualization of the Head-Up Display, including scores, levels, and system status.
3
+ :keywords: hud, rendering, ui, display, graphics
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 `HudRenderer` manages the visualization of the Head-Up Display, including scores, levels, system status, and the specialized HUD grid. It implements the standard `xref:../interfaces/modules/Renderer.adoc[Renderer]` interface and is managed by the `xref:GameRenderer.adoc[GameRenderer]`.
16
+
17
+ == API Reference
18
+
19
+ === `setup(rendererMetrics: RendererMetrics): void`
20
+
21
+ Pre-calculates static HUD geometry.
22
+
23
+ **Parameters**
24
+
25
+ [cols="1,1,3"]
26
+ |===
27
+ |Name |Type |Description
28
+ |`rendererMetrics` |`xref:../types/RendererMetrics.adoc[RendererMetrics]` |The layout metrics calculated by `xref:GameRenderer.adoc[GameRenderer]`.
29
+ |===
30
+
31
+ **Behavior**
32
+
33
+ Calculates and caches the absolute pixel positions for HUD borders and grid cells. This ensures that the HUD remains perfectly aligned regardless of the display resolution.
34
+
35
+
36
+ '''
37
+
38
+ === `render(grid: Cell[][], modules: GameModules): void`
39
+
40
+ Main HUD drawing orchestration.
41
+
42
+ **Parameters**
43
+
44
+ [cols="1,1,3"]
45
+ |===
46
+ |Name |Type |Description
47
+ |`grid` |`xref:../types/Cell.adoc[Cell][][]` |The main game grid (unused, but required by interface).
48
+ |`modules` |`xref:../interfaces/GameModules.adoc[GameModules]` |Access to all modules (Text, Score, State, etc.) for dynamic data extraction.
49
+ |===
50
+
51
+ **Behavior**
52
+
53
+ 1. Clears the HUD area.
54
+ 2. Renders the pre-cached static borders.
55
+ 3. Draws the dynamic content (current score, high score, level, and game state messages).
56
+ 4. Renders the 4x4 HUD grid state.
@@ -0,0 +1,47 @@
1
+ = InitialStateSnapshot Reference
2
+ :description: Utility class responsible for capturing and restoring the initial state of custom client properties in the Game.
3
+ :keywords: state, snapshot, cache, memory, reset
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :idprefix:
9
+ :idseparator: -
10
+
11
+ The `InitialStateSnapshot` class manages the transparent caching of a game's state. It is an internal orchestrator utilized by the `Game` base class to capture the properties added by the developer during `setupGame()` and allows restoring them when the game is reset.
12
+
13
+ == Methods
14
+
15
+ === `captureBaseProperties`
16
+
17
+ Captures the base properties of the instance before any custom client properties are added. In the engine's architecture, this should be called at the very end of the base `Game` constructor, establishing the baseline for what should be ignored during the snapshot phase automatically.
18
+
19
+ [cols="1,1,3", options="header"]
20
+ |===
21
+ |Parameter |Type |Description
22
+ |`instance` |`object` |The object instance to extract keys from.
23
+ |===
24
+
25
+ '''
26
+
27
+ === `captureInitialState`
28
+
29
+ Stores the initial state of custom client properties. It selectively clones properties that were not present in the base properties and are not functions, using deep copying (`structuredClone`) with a fallback to referencing.
30
+
31
+ [cols="1,1,3", options="header"]
32
+ |===
33
+ |Parameter |Type |Description
34
+ |`instance` |`object` |The object instance containing custom properties.
35
+ |===
36
+
37
+ '''
38
+
39
+ === `restoreInitialState`
40
+
41
+ Restores the captured custom properties back to the instance, effectively resetting the client's state.
42
+
43
+ [cols="1,1,3", options="header"]
44
+ |===
45
+ |Parameter |Type |Description
46
+ |`instance` |`object` |The object instance to restore properties onto.
47
+ |===