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,107 @@
1
+ = Score Reference
2
+ :description: Interface for tracking session performance, multipliers, and levels.
3
+ :keywords: score, tracking, levels, metrics, multipliers
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 tracking session performance, multipliers, and levels.
16
+
17
+ == Properties
18
+
19
+ [cols="1,1,3"]
20
+ |===
21
+ |Name |Type |Description
22
+ |`score` |`number` |The current total score for the session.
23
+ |`multiplier` |`number` |The current points multiplier.
24
+ |`level` |`number` |The current game difficulty level.
25
+ |`maxLevel` |`number` |The maximum level achievable.
26
+ |===
27
+
28
+ == Methods
29
+
30
+ === `increaseScore(amount: number): void`
31
+
32
+ Adds points to the total, automatically applying any active multipliers.
33
+
34
+ **Parameters**
35
+
36
+ [cols="1,1,3"]
37
+ |===
38
+ |Name |Type |Description
39
+ |`amount` |`number` |The base points to add before multiplier.
40
+ |===
41
+
42
+
43
+ '''
44
+
45
+ === `resetScore(): void`
46
+
47
+ Resets the session score to `0`.
48
+
49
+
50
+ '''
51
+
52
+ === `getFormattedScore(digits?: number): string`
53
+
54
+ Returns a string representation of the score padded with leading zeros (defaulting to 6 digits).
55
+
56
+ **Parameters**
57
+
58
+ [cols="1,1,3"]
59
+ |===
60
+ |Name |Type |Description
61
+ |`digits` |`number` |(Optional) The total length of the string. Defaults to 6.
62
+ |===
63
+
64
+ **Returns**
65
+
66
+ `string` - The formatted score (e.g., "001500").
67
+
68
+
69
+ '''
70
+
71
+ === `increaseLevel(amount: number): void`
72
+
73
+ Increments the current game level up to `maxLevel`.
74
+
75
+ **Parameters**
76
+
77
+ [cols="1,1,3"]
78
+ |===
79
+ |Name |Type |Description
80
+ |`amount` |`number` |Levels to increase by.
81
+ |===
82
+
83
+
84
+ '''
85
+
86
+ === `resetLevel(): void`
87
+
88
+ Resets the game difficulty level to its initial value.
89
+
90
+
91
+ '''
92
+
93
+ === `setState(state: xref:State.adoc[State]): void`
94
+
95
+ Internal setup method to link the score module with high-score persistence logic.
96
+
97
+ **Parameters**
98
+
99
+ [cols="1,1,3"]
100
+ |===
101
+ |Name |Type |Description
102
+ |`state` |`xref:State.adoc[State]` |The global state manager.
103
+ |===
104
+
105
+ == General Usage
106
+
107
+ Implemented by `xref:../../modules/GameScore.adoc[GameScore]`. It handles the numeric progression of the game and formats the data for display on the HUD.
@@ -0,0 +1,66 @@
1
+ = Session Interface Reference
2
+ :description: Defines the contract for the module responsible for managing game sessions and restoring serializable data.
3
+ :keywords: interface, session, storage, save, serialization
4
+ :toc: left
5
+ :toclevels: 3
6
+ :sectnums:
7
+ :sectlinks:
8
+ :icons: font
9
+
10
+ The `Session` interface defines the core contract for the game's session orchestration. It handles restoring persistent `xref:../Serializable.adoc[Serializable]` data (such as progressive scores or active level states) and presenting UI mechanisms to the user when playing an existing session.
11
+
12
+ This module is a core part of the `xref:GameModules.adoc[GameModules]` composite.
13
+
14
+ == Attributes / Properties / Values
15
+
16
+ [cols="1,1,3"]
17
+ |===
18
+ |Name |Type |Description
19
+ |`gameId` |`string` |The unique identifier of the game, provided by `xref:../../modules/Game.adoc[Game.gameId]`, used to prefix the LocalStorage entries.
20
+ |===
21
+
22
+ == API Reference
23
+
24
+ '''
25
+
26
+ === `register(serializable: Serializable): void`
27
+
28
+ Appends a module or instance that implements `Serializable` to the session's watch list.
29
+
30
+ **Parameters**
31
+
32
+ [cols="1,1,3"]
33
+ |===
34
+ |Name |Type |Description
35
+ |`serializable` |`xref:../Serializable.adoc[Serializable]` |The instance implementing serialization capability.
36
+ |===
37
+
38
+ '''
39
+
40
+ === `saveSession(): void`
41
+
42
+ Persists the current state of all registered `xref:../Serializable.adoc[Serializable]` instances to `localStorage`.
43
+
44
+ '''
45
+
46
+ === `clearSession(): void`
47
+
48
+ Clears out the active session data from `localStorage`, functionally resetting the user's progress for the given `gameId`.
49
+
50
+ '''
51
+
52
+ === `setShowModalFunction(showModal: (onConfirm: () => void, onCancel: () => void) => void): void`
53
+
54
+ Registers the callback that triggers the session recovery UI element.
55
+
56
+ **Parameters**
57
+
58
+ [cols="1,1,3"]
59
+ |===
60
+ |Name |Type |Description
61
+ |`showModal` |`Function` |The callback that is executed, receiving the internal `onConfirm` and `onCancel` closure functions as arguments.
62
+ |===
63
+
64
+ == General Usage
65
+
66
+ The `Session` module subscribes to the `GameState` lifecycle. Upon detecting a transition to the `PLAYING` state, if previous active records exist in `localStorage`, it invokes the modal logic set via `setShowModalFunction`. The engine's `Game` orchestrates this by default.
@@ -0,0 +1,290 @@
1
+ = State Reference
2
+ :description: Interface for managing global game lifecycle flags, persistence, and preferences.
3
+ :keywords: state, lifecycle, persistence, preferences
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 managing global game lifecycle flags, persistence, and preferences.
16
+
17
+ == Methods
18
+
19
+ === `isOn(): boolean`
20
+
21
+ Returns `true` if the engine is "powered on".
22
+
23
+ **Returns**
24
+
25
+ `boolean` - `true` if on.
26
+
27
+
28
+ '''
29
+
30
+ === `isOff(): boolean`
31
+
32
+ Returns `true` if the engine is "powered off".
33
+
34
+ **Returns**
35
+
36
+ `boolean` - `true` if off.
37
+
38
+
39
+ '''
40
+
41
+ === `isStarted(): boolean`
42
+
43
+ Returns `true` if a game session has been initialized.
44
+
45
+ **Returns**
46
+
47
+ `boolean` - `true` if started.
48
+
49
+
50
+ '''
51
+
52
+ === `isPlaying(): boolean`
53
+
54
+ Returns `true` if the game is active and logic ticks are flowing.
55
+
56
+ **Returns**
57
+
58
+ `boolean` - `true` if playing.
59
+
60
+
61
+ '''
62
+
63
+ === `isPaused(): boolean`
64
+
65
+ Returns `true` if the game is started but currently paused.
66
+
67
+ **Returns**
68
+
69
+ `boolean` - `true` if paused.
70
+
71
+
72
+ '''
73
+
74
+ === `isGameOver(): boolean`
75
+
76
+ Returns `true` if the current session has ended in defeat.
77
+
78
+ **Returns**
79
+
80
+ `boolean` - `true` if game over.
81
+
82
+
83
+ '''
84
+
85
+ === `isColorEnabled(): boolean`
86
+
87
+ Returns `true` if themed color rendering is active.
88
+
89
+ **Returns**
90
+
91
+ `boolean` - `true` if color is enabled.
92
+
93
+
94
+ '''
95
+
96
+ === `setColorEnabled(value: boolean): void`
97
+
98
+ Manually sets the color rendering preference.
99
+
100
+ **Parameters**
101
+
102
+ [cols="1,1,3"]
103
+ |===
104
+ |Name |Type |Description
105
+ |`value` |`boolean` |`true` to enable colors, `false` for monochrome/grayscale.
106
+ |===
107
+
108
+
109
+ '''
110
+
111
+ === `isMuted(): boolean`
112
+
113
+ Returns `true` if the audio system is suppressed.
114
+
115
+ **Returns**
116
+
117
+ `boolean` - `true` if muted.
118
+
119
+
120
+ '''
121
+
122
+ === `setMuted(value: boolean): void`
123
+
124
+ Manually sets the audio suppression preference.
125
+
126
+ **Parameters**
127
+
128
+ [cols="1,1,3"]
129
+ |===
130
+ |Name |Type |Description
131
+ |`value` |`boolean` |`true` to mute, `false` to unmute.
132
+ |===
133
+
134
+
135
+ '''
136
+
137
+ === `getHighScore(): number`
138
+
139
+ Retrieves the persistent high score for the current game.
140
+
141
+ **Returns**
142
+
143
+ `number` - The current high score.
144
+
145
+
146
+ '''
147
+
148
+ === `setHighScore(value: number): void`
149
+
150
+ Updates the persistent high score.
151
+
152
+ **Parameters**
153
+
154
+ [cols="1,1,3"]
155
+ |===
156
+ |Name |Type |Description
157
+ |`value` |`number` |The new high score to save.
158
+ |===
159
+
160
+
161
+ '''
162
+
163
+ === `subscribe(property: xref:../../enums/StateProperty.adoc[StateProperty], callback: (value: boolean | number) => void): void`
164
+
165
+ Registers a listener for changes to a specific state property.
166
+
167
+ **Parameters**
168
+
169
+ [cols="1,1,3"]
170
+ |===
171
+ |Name |Type |Description
172
+ |`property` |`xref:../../enums/StateProperty.adoc[StateProperty]` |The property to watch.
173
+ |`callback` |`(value: boolean \| number) => void` |Function called when the property changes.
174
+ |===
175
+
176
+
177
+ '''
178
+
179
+ === `unsubscribe(property: xref:../../enums/StateProperty.adoc[StateProperty], callback: (value: boolean | number) => void): void`
180
+
181
+ Removes a previously registered property listener.
182
+
183
+ **Parameters**
184
+
185
+ [cols="1,1,3"]
186
+ |===
187
+ |Name |Type |Description
188
+ |`property` |`xref:../../enums/StateProperty.adoc[StateProperty]` |The property being watched.
189
+ |`callback` |`(value: boolean \| number) => void` |The function to remove.
190
+ |===
191
+
192
+
193
+ '''
194
+
195
+ === `turnOn(): void`
196
+
197
+ Powers up the engine.
198
+
199
+
200
+ '''
201
+
202
+ === `turnOff(): void`
203
+
204
+ Powers down the engine and saves state.
205
+
206
+
207
+ '''
208
+
209
+ === `startGame(): void`
210
+
211
+ Transitions from the menu to an active game session.
212
+
213
+
214
+ '''
215
+
216
+ === `exitGame(): void`
217
+
218
+ Ends the current game session and returns to the menu.
219
+
220
+
221
+ '''
222
+
223
+ === `pause(): void`
224
+
225
+ Toggles the gameplay state to paused.
226
+
227
+
228
+ '''
229
+
230
+ === `resume(): void`
231
+
232
+ Toggles the gameplay state back to playing.
233
+
234
+
235
+ '''
236
+
237
+ === `triggerGameOver(): void`
238
+
239
+ Transitions to the game over screen.
240
+
241
+
242
+ '''
243
+
244
+ === `resetGame(): void`
245
+
246
+ Resets session-specific state (score, grids) while maintaining high score and preferences.
247
+
248
+
249
+ '''
250
+
251
+ === `toggleColorEnabled(): void`
252
+
253
+ Flips the current `colorEnabled` flag.
254
+
255
+
256
+ '''
257
+
258
+ === `toggleMuted(): void`
259
+
260
+ Flips the current `muted` flag.
261
+
262
+
263
+ '''
264
+
265
+ === `setPersistenceKey(key: string): void`
266
+
267
+ Sets the unique namespace used for `localStorage`.
268
+
269
+ **Parameters**
270
+
271
+ [cols="1,1,3"]
272
+ |===
273
+ |Name |Type |Description
274
+ |`key` |`string` |The unique key prefix.
275
+ |===
276
+
277
+
278
+ '''
279
+
280
+ === `getPersistenceKey(): string`
281
+
282
+ Returns the active namespace prefix.
283
+
284
+ **Returns**
285
+
286
+ `string` - The persistence key.
287
+
288
+ == General Usage
289
+
290
+ Implemented by `xref:../../modules/GameState.adoc[GameState]`. It serves as the single source of truth for the engine's behavior tree.
@@ -0,0 +1,110 @@
1
+ = Text Reference
2
+ :description: Interface for drawing pixelated, responsive typography.
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
+ Interface for drawing pixelated, responsive typography.
16
+
17
+ == Methods
18
+
19
+ === `setTextSize(fontSize: xref:../../enums/FontSize.adoc[FontSize]): void`
20
+
21
+ Sets the scale of the subsequent text operations.
22
+
23
+ **Parameters**
24
+
25
+ [cols="1,1,3"]
26
+ |===
27
+ |Name |Type |Description
28
+ |`fontSize` |`xref:../../enums/FontSize.adoc[FontSize]` |Enum value for text size (SMALL, MEDIUM, LARGE).
29
+ |===
30
+
31
+
32
+ '''
33
+
34
+ === `setTextAlign(fontAlign: xref:../../enums/FontAlignment.adoc[FontAlignment], fontVerticalAlign: xref:../../enums/FontAlignment.adoc[FontAlignment]): void`
35
+
36
+ Sets both horizontal and vertical anchor points.
37
+
38
+ **Parameters**
39
+
40
+ [cols="1,1,3"]
41
+ |===
42
+ |Name |Type |Description
43
+ |`fontAlign` |`xref:../../enums/FontAlignment.adoc[FontAlignment]` |Horizontal alignment (LEFT, CENTER, RIGHT).
44
+ |`fontVerticalAlign` |`xref:../../enums/FontAlignment.adoc[FontAlignment]` |Vertical alignment (TOP, CENTER, BOTTOM).
45
+ |===
46
+
47
+
48
+ '''
49
+
50
+ === `textOnHud(text: string, coordinate: xref:../../types/Coordinate.adoc[Coordinate]): void`
51
+
52
+ Renders a string within the HUD area at the specified normalized coordinate (0.0 to 1.0 relative to HUD bounds).
53
+
54
+ **Parameters**
55
+
56
+ [cols="1,1,3"]
57
+ |===
58
+ |Name |Type |Description
59
+ |`text` |`string` |The string content to display.
60
+ |`coordinate` |`xref:../../types/Coordinate.adoc[Coordinate]` |Normalized position `{x, y}`.
61
+ |===
62
+
63
+
64
+ '''
65
+
66
+ === `textOnDisplay(text: string, coordinate: xref:../../types/Coordinate.adoc[Coordinate]): void`
67
+
68
+ Renders a string within the main game area at the specified normalized coordinate (0.0 to 1.0 relative to display bounds).
69
+
70
+ **Parameters**
71
+
72
+ [cols="1,1,3"]
73
+ |===
74
+ |Name |Type |Description
75
+ |`text` |`string` |The string content to display.
76
+ |`coordinate` |`xref:../../types/Coordinate.adoc[Coordinate]` |Normalized position `{x, y}`.
77
+ |===
78
+
79
+
80
+ '''
81
+
82
+ === `setRendererMetrics(rendererMetrics: xref:../../types/RendererMetrics.adoc[RendererMetrics]): void`
83
+
84
+ Internal setup method to provide the pixel-to-grid mapping data.
85
+
86
+ **Parameters**
87
+
88
+ [cols="1,1,3"]
89
+ |===
90
+ |Name |Type |Description
91
+ |`rendererMetrics` |`xref:../../types/RendererMetrics.adoc[RendererMetrics]` |The calculated display dimensions.
92
+ |===
93
+
94
+
95
+ '''
96
+
97
+ === `setActiveText(): void`
98
+
99
+ Sets the text rendering style to "active" (high contrast).
100
+
101
+
102
+ '''
103
+
104
+ === `setInactiveText(): void`
105
+
106
+ Sets the text rendering style to "inactive" (low contrast, background effect).
107
+
108
+ == General Usage
109
+
110
+ Implemented by `xref:../../modules/GameText.adoc[GameText]`. Used to display scores, labels, and title screen messages across different engine layers.
@@ -0,0 +1,119 @@
1
+ = Time Reference
2
+ :description: Interface for managing the game's logical clock and update frequency.
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
+ Interface for managing the game's logical clock and update frequency.
16
+
17
+ == Properties
18
+
19
+ [cols="1,1,3"]
20
+ |===
21
+ |Name |Type |Description
22
+ |`tickInterval` |`number` |The duration in milliseconds between logic updates.
23
+ |===
24
+
25
+ == Methods
26
+
27
+ === `update(deltaTime: number): void`
28
+
29
+ Adds elapsed time to the internal accumulator. Called every frame.
30
+
31
+ **Parameters**
32
+
33
+ [cols="1,1,3"]
34
+ |===
35
+ |Name |Type |Description
36
+ |`deltaTime` |`number` |Time in milliseconds since last frame.
37
+ |===
38
+
39
+
40
+ '''
41
+
42
+ === `shouldTick(): boolean`
43
+
44
+ Returns `true` if the accumulator has exceeded the `tickInterval`, indicating a logic update is due.
45
+
46
+ **Returns**
47
+
48
+ `boolean` - `true` if a tick should occur.
49
+
50
+
51
+ '''
52
+
53
+ === `reset(): void`
54
+
55
+ Clears the time accumulator. Useful during game restarts.
56
+
57
+
58
+ '''
59
+
60
+ === `incrementTickInterval(amount: number): void`
61
+
62
+ Slows down the game by increasing the time between ticks.
63
+
64
+ **Parameters**
65
+
66
+ [cols="1,1,3"]
67
+ |===
68
+ |Name |Type |Description
69
+ |`amount` |`number` |Milliseconds to add to the interval.
70
+ |===
71
+
72
+
73
+ '''
74
+
75
+ === `decrementTickInterval(amount: number): void`
76
+
77
+ Speeds up the game by decreasing the time between ticks.
78
+
79
+ **Parameters**
80
+
81
+ [cols="1,1,3"]
82
+ |===
83
+ |Name |Type |Description
84
+ |`amount` |`number` |Milliseconds to subtract from the interval.
85
+ |===
86
+
87
+
88
+ '''
89
+
90
+ === `setTickInterval(interval: number): void`
91
+
92
+ Sets the tick interval exactly to the specified value.
93
+
94
+ **Parameters**
95
+
96
+ [cols="1,1,3"]
97
+ |===
98
+ |Name |Type |Description
99
+ |`interval` |`number` |The new interval between logic updates (in milliseconds).
100
+ |===
101
+
102
+
103
+ '''
104
+
105
+ === `setMinTickInterval(interval: number): void`
106
+
107
+ Sets the minimum limit for the tick interval, preventing the game from speeding up beyond this point.
108
+
109
+ **Parameters**
110
+
111
+ [cols="1,1,3"]
112
+ |===
113
+ |Name |Type |Description
114
+ |`interval` |`number` |The minimum interval allowed (in milliseconds).
115
+ |===
116
+
117
+ == General Usage
118
+
119
+ Implemented by `xref:../../modules/GameTime.adoc[GameTime]`. This module ensures that game logic (like falling pieces) runs at a consistent speed regardless of the render frame rate.