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.
- package/.env.local.example +2 -0
- package/.github/workflows/publish.yml +73 -0
- package/.prettierignore +2 -0
- package/.prettierrc.json +8 -0
- package/README.adoc +84 -0
- package/dist/8e23286c2fdf41fd795f.svg +32 -0
- package/dist/CNAME +1 -0
- package/dist/app.js +2 -0
- package/dist/app.js.map +1 -0
- package/dist/brick-engine.js +2 -0
- package/dist/brick-engine.js.map +1 -0
- package/dist/config/configs.d.ts +180 -0
- package/dist/config/configs.test.d.ts +1 -0
- package/dist/config/env.d.ts +2 -0
- package/dist/config/env.test.d.ts +1 -0
- package/dist/config/styles.d.ts +0 -0
- package/dist/core/Game.d.ts +107 -0
- package/dist/core/Game.test.d.ts +1 -0
- package/dist/core/InitialStateSnapshot.d.ts +19 -0
- package/dist/core/InitialStateSnapshot.test.d.ts +1 -0
- package/dist/core/helpers/CellHelper.d.ts +13 -0
- package/dist/core/helpers/CellHelper.test.d.ts +1 -0
- package/dist/core/helpers/ControlInputHandlerHelper.d.ts +32 -0
- package/dist/core/helpers/ControlInputHandlerHelper.test.d.ts +1 -0
- package/dist/core/helpers/CoordinateHelper.d.ts +54 -0
- package/dist/core/helpers/CoordinateHelper.test.d.ts +1 -0
- package/dist/core/helpers/InterfaceIdentifierHelper.d.ts +7 -0
- package/dist/core/helpers/InterfaceIdentifierHelper.test.d.ts +1 -0
- package/dist/core/helpers/RelativeValuesHelper.d.ts +23 -0
- package/dist/core/helpers/RelativeValuesHelper.test.d.ts +1 -0
- package/dist/core/module/control/GameControl.d.ts +62 -0
- package/dist/core/module/control/GameControl.test.d.ts +1 -0
- package/dist/core/module/control/GameControlKeyBinding.d.ts +36 -0
- package/dist/core/module/control/GameControlKeyBinding.test.d.ts +1 -0
- package/dist/core/module/grid/GameGrid.d.ts +399 -0
- package/dist/core/module/grid/GameGrid.test.d.ts +1 -0
- package/dist/core/module/grid/GameHudGrid.d.ts +24 -0
- package/dist/core/module/grid/GameHudGrid.test.d.ts +1 -0
- package/dist/core/module/grid/engines/GridAnalysisEngine.d.ts +29 -0
- package/dist/core/module/grid/engines/GridAnalysisEngine.test.d.ts +1 -0
- package/dist/core/module/grid/engines/GridLineEngine.d.ts +56 -0
- package/dist/core/module/grid/engines/GridLineEngine.test.d.ts +1 -0
- package/dist/core/module/grid/engines/GridMovementEngine.d.ts +29 -0
- package/dist/core/module/grid/engines/GridMovementEngine.test.d.ts +1 -0
- package/dist/core/module/grid/engines/GridRegionEngine.d.ts +26 -0
- package/dist/core/module/grid/engines/GridRegionEngine.test.d.ts +1 -0
- package/dist/core/module/grid/engines/GridTransformEngine.d.ts +24 -0
- package/dist/core/module/grid/engines/GridTransformEngine.test.d.ts +1 -0
- package/dist/core/module/renderer/DisplayRenderer.d.ts +51 -0
- package/dist/core/module/renderer/DisplayRenderer.test.d.ts +1 -0
- package/dist/core/module/renderer/GameRenderer.d.ts +59 -0
- package/dist/core/module/renderer/GameRenderer.test.d.ts +1 -0
- package/dist/core/module/renderer/HudRenderer.d.ts +56 -0
- package/dist/core/module/renderer/HudRenderer.test.d.ts +1 -0
- package/dist/core/module/score/GameScore.d.ts +117 -0
- package/dist/core/module/score/GameScore.test.d.ts +1 -0
- package/dist/core/module/session/GameSession.d.ts +20 -0
- package/dist/core/module/session/GameSession.test.d.ts +1 -0
- package/dist/core/module/sound/GameSound.d.ts +85 -0
- package/dist/core/module/sound/GameSound.test.d.ts +1 -0
- package/dist/core/module/state/GameState.d.ts +172 -0
- package/dist/core/module/state/GameState.test.d.ts +1 -0
- package/dist/core/module/text/GameText.d.ts +87 -0
- package/dist/core/module/text/GameText.test.d.ts +1 -0
- package/dist/core/module/time/GameTime.d.ts +76 -0
- package/dist/core/module/time/GameTime.test.d.ts +1 -0
- package/dist/core/types/Interfaces.d.ts +53 -0
- package/dist/core/types/Types.d.ts +114 -0
- package/dist/core/types/enums.d.ts +106 -0
- package/dist/core/types/modules.d.ts +723 -0
- package/dist/css/app.743066d8e4172b0e73f9.css +824 -0
- package/dist/css/app.743066d8e4172b0e73f9.css.map +1 -0
- package/dist/docs/GAME_DEVELOPER_GUIDE.html +727 -0
- package/dist/docs/brick-engine-guide.html +610 -0
- package/dist/docs/diagrams/lifecycle.mmd +19 -0
- package/dist/docs/documentation_style_guide.html +994 -0
- package/dist/docs/getting-started.html +648 -0
- package/dist/docs/images/lifecycle.svg +1 -0
- package/dist/docs/index.html +593 -0
- package/dist/docs/jsdoc_standard.html +656 -0
- package/dist/docs/publishing.html +573 -0
- package/dist/docs/reference/enums/Color.html +533 -0
- package/dist/docs/reference/enums/ControlEventType.html +505 -0
- package/dist/docs/reference/enums/ControlKey.html +529 -0
- package/dist/docs/reference/enums/FontAlignment.html +545 -0
- package/dist/docs/reference/enums/FontSize.html +517 -0
- package/dist/docs/reference/enums/Sound.html +558 -0
- package/dist/docs/reference/enums/StateProperty.html +525 -0
- package/dist/docs/reference/helpers/CellHelper.html +520 -0
- package/dist/docs/reference/helpers/ControlInputHandlerHelper.html +569 -0
- package/dist/docs/reference/helpers/CoordinateHelper.html +703 -0
- package/dist/docs/reference/helpers/RelativeValuesHelper.html +560 -0
- package/dist/docs/reference/interfaces/Debuggable.html +501 -0
- package/dist/docs/reference/interfaces/GameModules.html +544 -0
- package/dist/docs/reference/interfaces/Initializable.html +495 -0
- package/dist/docs/reference/interfaces/RendererInitializable.html +517 -0
- package/dist/docs/reference/interfaces/StateSyncable.html +542 -0
- package/dist/docs/reference/interfaces/modules/Control.html +648 -0
- package/dist/docs/reference/interfaces/modules/Grid.html +1256 -0
- package/dist/docs/reference/interfaces/modules/Renderer.html +522 -0
- package/dist/docs/reference/interfaces/modules/RendererComposite.html +577 -0
- package/dist/docs/reference/interfaces/modules/Score.html +669 -0
- package/dist/docs/reference/interfaces/modules/Session.html +585 -0
- package/dist/docs/reference/interfaces/modules/State.html +897 -0
- package/dist/docs/reference/interfaces/modules/Text.html +668 -0
- package/dist/docs/reference/interfaces/modules/Time.html +684 -0
- package/dist/docs/reference/modules/Debugger.html +579 -0
- package/dist/docs/reference/modules/DisplayRenderer.html +557 -0
- package/dist/docs/reference/modules/Game.html +909 -0
- package/dist/docs/reference/modules/GameControl.html +716 -0
- package/dist/docs/reference/modules/GameGrid.html +1910 -0
- package/dist/docs/reference/modules/GameHudGrid.html +508 -0
- package/dist/docs/reference/modules/GameMenu.html +538 -0
- package/dist/docs/reference/modules/GameRenderer.html +589 -0
- package/dist/docs/reference/modules/GameScore.html +664 -0
- package/dist/docs/reference/modules/GameSession.html +533 -0
- package/dist/docs/reference/modules/GameSound.html +636 -0
- package/dist/docs/reference/modules/GameState.html +922 -0
- package/dist/docs/reference/modules/GameText.html +701 -0
- package/dist/docs/reference/modules/GameTime.html +696 -0
- package/dist/docs/reference/modules/HudRenderer.html +568 -0
- package/dist/docs/reference/modules/InitialStateSnapshot.html +557 -0
- package/dist/docs/reference/modules/SessionModal.html +520 -0
- package/dist/docs/reference/types/Axis.html +505 -0
- package/dist/docs/reference/types/Cell.html +514 -0
- package/dist/docs/reference/types/ControlCallback.html +488 -0
- package/dist/docs/reference/types/Coordinate.html +510 -0
- package/dist/docs/reference/types/GameEntry.html +514 -0
- package/dist/docs/reference/types/GameEvent.html +514 -0
- package/dist/docs/reference/types/Piece.html +506 -0
- package/dist/docs/reference/types/RendererMetrics.html +514 -0
- package/dist/docs/reference/types/Vector.html +509 -0
- package/dist/docs/testing_best_practices.html +770 -0
- package/dist/favicon.ico +0 -0
- package/dist/fonts/digital-7.monoitalic.ttf +0 -0
- package/dist/images/cell.svg +32 -0
- package/dist/images/close.png +0 -0
- package/dist/images/games.png +0 -0
- package/dist/images/github.png +0 -0
- package/dist/images/letter-a.png +0 -0
- package/dist/images/letter-d.png +0 -0
- package/dist/images/letter-j.png +0 -0
- package/dist/images/letter-s.png +0 -0
- package/dist/images/letter-w.png +0 -0
- package/dist/images/meta-image.png +0 -0
- package/dist/images/number-1.png +0 -0
- package/dist/images/number-2.png +0 -0
- package/dist/images/number-3.png +0 -0
- package/dist/images/number-4.png +0 -0
- package/dist/images/number-5.png +0 -0
- package/dist/images/number-6.png +0 -0
- package/dist/images/splash.gif +0 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.html +1 -0
- package/dist/index.test.d.ts +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.test.d.ts +1 -0
- package/dist/menu/GameMenu.d.ts +15 -0
- package/dist/menu/GameMenu.test.d.ts +1 -0
- package/dist/menu/GameMenuSingleton.d.ts +6 -0
- package/dist/menu/GameMenuSingleton.test.d.ts +1 -0
- package/dist/menu/GameRepository.d.ts +7 -0
- package/dist/menu/GameRepository.test.d.ts +1 -0
- package/dist/menu/manager/GameManager.d.ts +6 -0
- package/dist/menu/manager/GameManager.test.d.ts +1 -0
- package/dist/sounds/sound_00.wav +0 -0
- package/dist/sounds/sound_01.wav +0 -0
- package/dist/sounds/sound_02.wav +0 -0
- package/dist/sounds/sound_03.wav +0 -0
- package/dist/sounds/sound_04.wav +0 -0
- package/dist/sounds/sound_05.wav +0 -0
- package/dist/sounds/sound_06.wav +0 -0
- package/dist/sounds/sound_07.wav +0 -0
- package/dist/sounds/sound_08.wav +0 -0
- package/dist/sounds/sound_09.wav +0 -0
- package/dist/sounds/sound_10.wav +0 -0
- package/dist/sounds/sound_11.wav +0 -0
- package/dist/sounds/sound_12.wav +0 -0
- package/dist/sounds/sound_13.wav +0 -0
- package/dist/sounds/sound_14.wav +0 -0
- package/dist/sounds/sound_15.wav +0 -0
- package/dist/types/interfaces.d.ts +5 -0
- package/dist/vendor/p5.min.js +1 -0
- package/dist/view/Debugger.d.ts +12 -0
- package/dist/view/Debugger.test.d.ts +1 -0
- package/dist/view/GameView.d.ts +101 -0
- package/dist/view/GameView.test.d.ts +1 -0
- package/dist/view/SessionModal.d.ts +12 -0
- package/dist/view/SessionModal.test.d.ts +4 -0
- package/dist/view/components/layout/ButtonLayout.d.ts +25 -0
- package/dist/view/components/layout/ButtonLayout.test.d.ts +1 -0
- package/dist/view/components/layout/ContainerLayout.d.ts +23 -0
- package/dist/view/components/layout/ContainerLayout.test.d.ts +1 -0
- package/dist/view/components/layout/FrameLayout.d.ts +11 -0
- package/dist/view/components/layout/FrameLayout.test.d.ts +1 -0
- package/dist/view/components/ui/BigButton.d.ts +13 -0
- package/dist/view/components/ui/BigButton.test.d.ts +1 -0
- package/dist/view/components/ui/Button.d.ts +12 -0
- package/dist/view/components/ui/Button.test.d.ts +1 -0
- package/dist/view/components/ui/Canvas.d.ts +22 -0
- package/dist/view/components/ui/Canvas.test.d.ts +1 -0
- package/dist/view/components/ui/SmallButton.d.ts +13 -0
- package/dist/view/components/ui/SmallButton.test.d.ts +1 -0
- package/dist/view/theme/applyColors.d.ts +10 -0
- package/dist/view/theme/applyColors.test.d.ts +1 -0
- package/dist/view/theme/dimensions.d.ts +13 -0
- package/dist/view/theme/dimensions.test.d.ts +1 -0
- package/docs/GAME_DEVELOPER_GUIDE.adoc +167 -0
- package/docs/brick-engine-guide.adoc +87 -0
- package/docs/diagrams/lifecycle.mmd +19 -0
- package/docs/documentation_style_guide.adoc +210 -0
- package/docs/getting-started.adoc +147 -0
- package/docs/images/lifecycle.svg +1 -0
- package/docs/jsdoc_standard.adoc +109 -0
- package/docs/publishing.adoc +58 -0
- package/docs/reference/enums/Color.adoc +35 -0
- package/docs/reference/enums/ControlEventType.adoc +28 -0
- package/docs/reference/enums/ControlKey.adoc +34 -0
- package/docs/reference/enums/FontAlignment.adoc +43 -0
- package/docs/reference/enums/FontSize.adoc +31 -0
- package/docs/reference/enums/Sound.adoc +42 -0
- package/docs/reference/enums/StateProperty.adoc +33 -0
- package/docs/reference/helpers/CellHelper.adoc +37 -0
- package/docs/reference/helpers/ControlInputHandlerHelper.adoc +57 -0
- package/docs/reference/helpers/CoordinateHelper.adoc +118 -0
- package/docs/reference/helpers/RelativeValuesHelper.adoc +53 -0
- package/docs/reference/interfaces/Debuggable.adoc +29 -0
- package/docs/reference/interfaces/GameModules.adoc +35 -0
- package/docs/reference/interfaces/Initializable.adoc +24 -0
- package/docs/reference/interfaces/RendererInitializable.adoc +33 -0
- package/docs/reference/interfaces/StateSyncable.adoc +41 -0
- package/docs/reference/interfaces/modules/Control.adoc +98 -0
- package/docs/reference/interfaces/modules/Grid.adoc +411 -0
- package/docs/reference/interfaces/modules/Renderer.adoc +34 -0
- package/docs/reference/interfaces/modules/RendererComposite.adoc +57 -0
- package/docs/reference/interfaces/modules/Score.adoc +107 -0
- package/docs/reference/interfaces/modules/Session.adoc +66 -0
- package/docs/reference/interfaces/modules/State.adoc +290 -0
- package/docs/reference/interfaces/modules/Text.adoc +110 -0
- package/docs/reference/interfaces/modules/Time.adoc +119 -0
- package/docs/reference/modules/Debugger.adoc +71 -0
- package/docs/reference/modules/DisplayRenderer.adoc +55 -0
- package/docs/reference/modules/Game.adoc +256 -0
- package/docs/reference/modules/GameControl.adoc +139 -0
- package/docs/reference/modules/GameGrid.adoc +794 -0
- package/docs/reference/modules/GameHudGrid.adoc +38 -0
- package/docs/reference/modules/GameMenu.adoc +39 -0
- package/docs/reference/modules/GameRenderer.adoc +79 -0
- package/docs/reference/modules/GameScore.adoc +138 -0
- package/docs/reference/modules/GameSession.adoc +43 -0
- package/docs/reference/modules/GameSound.adoc +111 -0
- package/docs/reference/modules/GameState.adoc +318 -0
- package/docs/reference/modules/GameText.adoc +139 -0
- package/docs/reference/modules/GameTime.adoc +141 -0
- package/docs/reference/modules/HudRenderer.adoc +56 -0
- package/docs/reference/modules/InitialStateSnapshot.adoc +47 -0
- package/docs/reference/modules/SessionModal.adoc +34 -0
- package/docs/reference/types/Axis.adoc +28 -0
- package/docs/reference/types/Cell.adoc +29 -0
- package/docs/reference/types/ControlCallback.adoc +23 -0
- package/docs/reference/types/Coordinate.adoc +29 -0
- package/docs/reference/types/GameEntry.adoc +29 -0
- package/docs/reference/types/GameEvent.adoc +29 -0
- package/docs/reference/types/Piece.adoc +32 -0
- package/docs/reference/types/RendererMetrics.adoc +29 -0
- package/docs/reference/types/Vector.adoc +28 -0
- package/docs/testing_best_practices.adoc +190 -0
- package/eslint.config.mjs +29 -0
- package/package.json +54 -0
- package/public/CNAME +1 -0
- package/public/docs/GAME_DEVELOPER_GUIDE.html +727 -0
- package/public/docs/brick-engine-guide.html +610 -0
- package/public/docs/diagrams/lifecycle.mmd +19 -0
- package/public/docs/documentation_style_guide.html +994 -0
- package/public/docs/getting-started.html +648 -0
- package/public/docs/images/lifecycle.svg +1 -0
- package/public/docs/index.html +593 -0
- package/public/docs/jsdoc_standard.html +656 -0
- package/public/docs/publishing.html +573 -0
- package/public/docs/reference/enums/Color.html +533 -0
- package/public/docs/reference/enums/ControlEventType.html +505 -0
- package/public/docs/reference/enums/ControlKey.html +529 -0
- package/public/docs/reference/enums/FontAlignment.html +545 -0
- package/public/docs/reference/enums/FontSize.html +517 -0
- package/public/docs/reference/enums/Sound.html +558 -0
- package/public/docs/reference/enums/StateProperty.html +525 -0
- package/public/docs/reference/helpers/CellHelper.html +520 -0
- package/public/docs/reference/helpers/ControlInputHandlerHelper.html +569 -0
- package/public/docs/reference/helpers/CoordinateHelper.html +703 -0
- package/public/docs/reference/helpers/RelativeValuesHelper.html +560 -0
- package/public/docs/reference/interfaces/Debuggable.html +501 -0
- package/public/docs/reference/interfaces/GameModules.html +544 -0
- package/public/docs/reference/interfaces/Initializable.html +495 -0
- package/public/docs/reference/interfaces/RendererInitializable.html +517 -0
- package/public/docs/reference/interfaces/StateSyncable.html +542 -0
- package/public/docs/reference/interfaces/modules/Control.html +648 -0
- package/public/docs/reference/interfaces/modules/Grid.html +1256 -0
- package/public/docs/reference/interfaces/modules/Renderer.html +522 -0
- package/public/docs/reference/interfaces/modules/RendererComposite.html +577 -0
- package/public/docs/reference/interfaces/modules/Score.html +669 -0
- package/public/docs/reference/interfaces/modules/Session.html +585 -0
- package/public/docs/reference/interfaces/modules/State.html +897 -0
- package/public/docs/reference/interfaces/modules/Text.html +668 -0
- package/public/docs/reference/interfaces/modules/Time.html +684 -0
- package/public/docs/reference/modules/Debugger.html +579 -0
- package/public/docs/reference/modules/DisplayRenderer.html +557 -0
- package/public/docs/reference/modules/Game.html +909 -0
- package/public/docs/reference/modules/GameControl.html +716 -0
- package/public/docs/reference/modules/GameGrid.html +1910 -0
- package/public/docs/reference/modules/GameHudGrid.html +508 -0
- package/public/docs/reference/modules/GameMenu.html +538 -0
- package/public/docs/reference/modules/GameRenderer.html +589 -0
- package/public/docs/reference/modules/GameScore.html +664 -0
- package/public/docs/reference/modules/GameSession.html +533 -0
- package/public/docs/reference/modules/GameSound.html +636 -0
- package/public/docs/reference/modules/GameState.html +922 -0
- package/public/docs/reference/modules/GameText.html +701 -0
- package/public/docs/reference/modules/GameTime.html +696 -0
- package/public/docs/reference/modules/HudRenderer.html +568 -0
- package/public/docs/reference/modules/InitialStateSnapshot.html +557 -0
- package/public/docs/reference/modules/SessionModal.html +520 -0
- package/public/docs/reference/types/Axis.html +505 -0
- package/public/docs/reference/types/Cell.html +514 -0
- package/public/docs/reference/types/ControlCallback.html +488 -0
- package/public/docs/reference/types/Coordinate.html +510 -0
- package/public/docs/reference/types/GameEntry.html +514 -0
- package/public/docs/reference/types/GameEvent.html +514 -0
- package/public/docs/reference/types/Piece.html +506 -0
- package/public/docs/reference/types/RendererMetrics.html +514 -0
- package/public/docs/reference/types/Vector.html +509 -0
- package/public/docs/testing_best_practices.html +770 -0
- package/public/favicon.ico +0 -0
- package/public/fonts/digital-7.monoitalic.ttf +0 -0
- package/public/images/cell.svg +32 -0
- package/public/images/close.png +0 -0
- package/public/images/games.png +0 -0
- package/public/images/github.png +0 -0
- package/public/images/letter-a.png +0 -0
- package/public/images/letter-d.png +0 -0
- package/public/images/letter-j.png +0 -0
- package/public/images/letter-s.png +0 -0
- package/public/images/letter-w.png +0 -0
- package/public/images/meta-image.png +0 -0
- package/public/images/number-1.png +0 -0
- package/public/images/number-2.png +0 -0
- package/public/images/number-3.png +0 -0
- package/public/images/number-4.png +0 -0
- package/public/images/number-5.png +0 -0
- package/public/images/number-6.png +0 -0
- package/public/images/splash.gif +0 -0
- package/public/index.html +15 -0
- package/public/sounds/sound_00.wav +0 -0
- package/public/sounds/sound_01.wav +0 -0
- package/public/sounds/sound_02.wav +0 -0
- package/public/sounds/sound_03.wav +0 -0
- package/public/sounds/sound_04.wav +0 -0
- package/public/sounds/sound_05.wav +0 -0
- package/public/sounds/sound_06.wav +0 -0
- package/public/sounds/sound_07.wav +0 -0
- package/public/sounds/sound_08.wav +0 -0
- package/public/sounds/sound_09.wav +0 -0
- package/public/sounds/sound_10.wav +0 -0
- package/public/sounds/sound_11.wav +0 -0
- package/public/sounds/sound_12.wav +0 -0
- package/public/sounds/sound_13.wav +0 -0
- package/public/sounds/sound_14.wav +0 -0
- package/public/sounds/sound_15.wav +0 -0
- package/public/style/body.css +86 -0
- package/public/style/buttons.css +233 -0
- package/public/style/debugger.css +117 -0
- package/public/style/sessionModal.css +155 -0
- package/public/style/sourceCodeAndCommands.css +74 -0
- package/public/style/splash.css +13 -0
- package/public/style/theme.css +137 -0
- package/scripts/generate-diagrams.sh +20 -0
- package/scripts/generate-docs.js +111 -0
- package/src/client-game.d.ts +1 -0
- package/src/config/configs.test.ts +20 -0
- package/src/config/configs.ts +197 -0
- package/src/config/env.test.ts +59 -0
- package/src/config/env.ts +7 -0
- package/src/config/styles.ts +5 -0
- package/src/core/Game.test.ts +167 -0
- package/src/core/Game.ts +307 -0
- package/src/core/InitialStateSnapshot.test.ts +51 -0
- package/src/core/InitialStateSnapshot.ts +46 -0
- package/src/core/helpers/CellHelper.test.ts +33 -0
- package/src/core/helpers/CellHelper.ts +21 -0
- package/src/core/helpers/ControlInputHandlerHelper.test.ts +116 -0
- package/src/core/helpers/ControlInputHandlerHelper.ts +68 -0
- package/src/core/helpers/CoordinateHelper.test.ts +113 -0
- package/src/core/helpers/CoordinateHelper.ts +82 -0
- package/src/core/helpers/InterfaceIdentifierHelper.test.ts +122 -0
- package/src/core/helpers/InterfaceIdentifierHelper.ts +43 -0
- package/src/core/helpers/RelativeValuesHelper.test.ts +47 -0
- package/src/core/helpers/RelativeValuesHelper.ts +29 -0
- package/src/core/module/control/GameControl.test.ts +82 -0
- package/src/core/module/control/GameControl.ts +142 -0
- package/src/core/module/control/GameControlKeyBinding.test.ts +59 -0
- package/src/core/module/control/GameControlKeyBinding.ts +92 -0
- package/src/core/module/grid/GameGrid.test.ts +83 -0
- package/src/core/module/grid/GameGrid.ts +610 -0
- package/src/core/module/grid/GameHudGrid.test.ts +22 -0
- package/src/core/module/grid/GameHudGrid.ts +40 -0
- package/src/core/module/grid/engines/GridAnalysisEngine.test.ts +157 -0
- package/src/core/module/grid/engines/GridAnalysisEngine.ts +124 -0
- package/src/core/module/grid/engines/GridLineEngine.test.ts +132 -0
- package/src/core/module/grid/engines/GridLineEngine.ts +165 -0
- package/src/core/module/grid/engines/GridMovementEngine.test.ts +125 -0
- package/src/core/module/grid/engines/GridMovementEngine.ts +113 -0
- package/src/core/module/grid/engines/GridRegionEngine.test.ts +136 -0
- package/src/core/module/grid/engines/GridRegionEngine.ts +52 -0
- package/src/core/module/grid/engines/GridTransformEngine.test.ts +98 -0
- package/src/core/module/grid/engines/GridTransformEngine.ts +70 -0
- package/src/core/module/renderer/DisplayRenderer.test.ts +86 -0
- package/src/core/module/renderer/DisplayRenderer.ts +152 -0
- package/src/core/module/renderer/GameRenderer.test.ts +103 -0
- package/src/core/module/renderer/GameRenderer.ts +144 -0
- package/src/core/module/renderer/HudRenderer.test.ts +108 -0
- package/src/core/module/renderer/HudRenderer.ts +203 -0
- package/src/core/module/score/GameScore.test.ts +71 -0
- package/src/core/module/score/GameScore.ts +188 -0
- package/src/core/module/session/GameSession.test.ts +176 -0
- package/src/core/module/session/GameSession.ts +103 -0
- package/src/core/module/sound/GameSound.test.ts +117 -0
- package/src/core/module/sound/GameSound.ts +229 -0
- package/src/core/module/state/GameState.test.ts +101 -0
- package/src/core/module/state/GameState.ts +339 -0
- package/src/core/module/text/GameText.test.ts +87 -0
- package/src/core/module/text/GameText.ts +150 -0
- package/src/core/module/time/GameTime.test.ts +86 -0
- package/src/core/module/time/GameTime.ts +144 -0
- package/src/core/types/Interfaces.ts +59 -0
- package/src/core/types/Types.ts +124 -0
- package/src/core/types/enums.ts +113 -0
- package/src/core/types/modules.ts +841 -0
- package/src/index.test.ts +15 -0
- package/src/index.ts +9 -0
- package/src/main.test.ts +137 -0
- package/src/main.ts +77 -0
- package/src/menu/GameMenu.test.ts +157 -0
- package/src/menu/GameMenu.ts +124 -0
- package/src/menu/GameMenuSingleton.test.ts +26 -0
- package/src/menu/GameMenuSingleton.ts +13 -0
- package/src/menu/GameRepository.test.ts +46 -0
- package/src/menu/GameRepository.ts +47 -0
- package/src/menu/manager/GameManager.test.ts +68 -0
- package/src/menu/manager/GameManager.ts +50 -0
- package/src/types/global.d.ts +8 -0
- package/src/types/interfaces.ts +5 -0
- package/src/view/Debugger.test.ts +152 -0
- package/src/view/Debugger.ts +124 -0
- package/src/view/GameView.test.ts +95 -0
- package/src/view/GameView.ts +244 -0
- package/src/view/SessionModal.test.ts +141 -0
- package/src/view/SessionModal.ts +73 -0
- package/src/view/components/layout/ButtonLayout.test.ts +28 -0
- package/src/view/components/layout/ButtonLayout.ts +63 -0
- package/src/view/components/layout/ContainerLayout.test.ts +48 -0
- package/src/view/components/layout/ContainerLayout.ts +50 -0
- package/src/view/components/layout/FrameLayout.test.ts +24 -0
- package/src/view/components/layout/FrameLayout.ts +25 -0
- package/src/view/components/ui/BigButton.test.ts +28 -0
- package/src/view/components/ui/BigButton.ts +31 -0
- package/src/view/components/ui/Button.test.ts +30 -0
- package/src/view/components/ui/Button.ts +30 -0
- package/src/view/components/ui/Canvas.test.ts +32 -0
- package/src/view/components/ui/Canvas.ts +34 -0
- package/src/view/components/ui/SmallButton.test.ts +48 -0
- package/src/view/components/ui/SmallButton.ts +32 -0
- package/src/view/theme/applyColors.test.ts +47 -0
- package/src/view/theme/applyColors.ts +38 -0
- package/src/view/theme/dimensions.test.ts +34 -0
- package/src/view/theme/dimensions.ts +53 -0
- package/tsconfig.json +16 -0
- package/vitest.config.ts +14 -0
- package/webpack.config.js +133 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import p5 from 'p5';
|
|
2
|
+
import { Cell, GameModules, RendererMetrics } from '../../types/Types';
|
|
3
|
+
import { Debuggable } from '../../types/Interfaces';
|
|
4
|
+
import { Renderer } from '../../types/modules';
|
|
5
|
+
import { RendererComposite } from '../../types/modules';
|
|
6
|
+
/**
|
|
7
|
+
* Composite renderer that manages multiple sub-renderers.
|
|
8
|
+
* Orchestrates the rendering of the main display and the HUD.
|
|
9
|
+
* Handles the calculation of shared rendering metrics (sizes, positions) to ensure consistency.
|
|
10
|
+
*/
|
|
11
|
+
export default class GameRenderer implements RendererComposite, Debuggable {
|
|
12
|
+
private _p;
|
|
13
|
+
private _renderers;
|
|
14
|
+
private _displayRenderer;
|
|
15
|
+
private _hudRenderer;
|
|
16
|
+
private _rendererMetrics;
|
|
17
|
+
/**
|
|
18
|
+
* Creates an instance of GameRenderer.
|
|
19
|
+
*
|
|
20
|
+
* @param {p5} p - The p5 instance.
|
|
21
|
+
*/
|
|
22
|
+
constructor(p: p5);
|
|
23
|
+
/**
|
|
24
|
+
* Adds a sub-renderer to the composition.
|
|
25
|
+
*
|
|
26
|
+
* @param {Renderer} renderer - The renderer to add.
|
|
27
|
+
*/
|
|
28
|
+
addRenderer(renderer: Renderer): void;
|
|
29
|
+
/**
|
|
30
|
+
* Initializes all sub-renderers and calculates layout metrics.
|
|
31
|
+
* This method must be called before rendering begins.
|
|
32
|
+
*/
|
|
33
|
+
setup(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Calculates the layout dimensions for the display and HUD.
|
|
36
|
+
* Based on screen configuration and relative values.
|
|
37
|
+
*/
|
|
38
|
+
private _calculateMetrics;
|
|
39
|
+
/**
|
|
40
|
+
* Delegating render method.
|
|
41
|
+
* Calls render on all registered sub-renderers.
|
|
42
|
+
*
|
|
43
|
+
* @param {Cell[][]} grid - The main game grid.
|
|
44
|
+
* @param {GameModules} modules - The game modules collection.
|
|
45
|
+
*/
|
|
46
|
+
render(grid: Cell[][], modules: GameModules): void;
|
|
47
|
+
/**
|
|
48
|
+
* Retrieves the calculated renderer metrics.
|
|
49
|
+
*
|
|
50
|
+
* @returns {RendererMetrics} The metrics object.
|
|
51
|
+
*/
|
|
52
|
+
get rendererMetrics(): RendererMetrics;
|
|
53
|
+
/**
|
|
54
|
+
* Retrieves debug information about the renderer's calculated metrics.
|
|
55
|
+
*
|
|
56
|
+
* @returns {Record<string, string | number | boolean>} The debug data.
|
|
57
|
+
*/
|
|
58
|
+
getDebugData(): Record<string, string | number | boolean>;
|
|
59
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Renderer } from '../../types/modules';
|
|
2
|
+
import { Cell, GameModules, RendererMetrics } from '../../types/Types';
|
|
3
|
+
import p5 from 'p5';
|
|
4
|
+
/**
|
|
5
|
+
* Responsible for rendering the Heads-Up Display (HUD).
|
|
6
|
+
* Displays game information like Score, High Score, Level, and the Next Piece Preview.
|
|
7
|
+
*/
|
|
8
|
+
export default class HudRenderer implements Renderer {
|
|
9
|
+
private _p;
|
|
10
|
+
private _gridOrigin;
|
|
11
|
+
private _cellSize;
|
|
12
|
+
private _hudBorderRect;
|
|
13
|
+
/**
|
|
14
|
+
* Creates an instance of HudRenderer.
|
|
15
|
+
*
|
|
16
|
+
* @param {p5} p - The p5 instance.
|
|
17
|
+
*/
|
|
18
|
+
constructor(p: p5);
|
|
19
|
+
/**
|
|
20
|
+
* Initializes the HUD with calculated metrics.
|
|
21
|
+
* Sets up the grid origin and border rectangle for the "next piece" preview area.
|
|
22
|
+
*
|
|
23
|
+
* @param {RendererMetrics} rendererMetrics - The shared renderer metrics.
|
|
24
|
+
*/
|
|
25
|
+
setup(rendererMetrics: RendererMetrics): void;
|
|
26
|
+
/**
|
|
27
|
+
* Renders all HUD elements.
|
|
28
|
+
*
|
|
29
|
+
* @param {Cell[][]} grid - The main game grid (unused in HUD, but required by interface).
|
|
30
|
+
* @param {GameModules} modules - The game modules for retrieving state and score.
|
|
31
|
+
*/
|
|
32
|
+
render(grid: Cell[][], modules: GameModules): void;
|
|
33
|
+
/**
|
|
34
|
+
* Renders the text-based HUD elements (Score, Level, Status).
|
|
35
|
+
*
|
|
36
|
+
* @param {GameModules} modules - The game modules.
|
|
37
|
+
*/
|
|
38
|
+
private _renderHud;
|
|
39
|
+
/**
|
|
40
|
+
* Renders the preview grid for the next piece.
|
|
41
|
+
*
|
|
42
|
+
* @param {GameModules} modules - The game modules.
|
|
43
|
+
*/
|
|
44
|
+
private _drawHudGrid;
|
|
45
|
+
/**
|
|
46
|
+
* Helper method to draw a single cell on the HUD.
|
|
47
|
+
* Identical in logic to DisplayRenderer's cell drawing but localized for HUD.
|
|
48
|
+
*
|
|
49
|
+
* @param {object} params - The drawing parameters.
|
|
50
|
+
* @param {number} params.w - Width of the cell.
|
|
51
|
+
* @param {number} params.posX - Absolute X position.
|
|
52
|
+
* @param {number} params.posY - Absolute Y position.
|
|
53
|
+
* @param {Color} params.color - Color of the cell.
|
|
54
|
+
*/
|
|
55
|
+
private drawCellElement;
|
|
56
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Debuggable } from '../../types/Interfaces';
|
|
2
|
+
import { Score } from '../../types/modules';
|
|
3
|
+
import { Serializable } from '../../types/Interfaces';
|
|
4
|
+
/**
|
|
5
|
+
* Manages game scoring, levels, and high score tracking.
|
|
6
|
+
* Acts as the authority for the game's `highScore`, persisting it directly to `LocalStorage`.
|
|
7
|
+
* Handles multipliers and supports Session serialization out of the box.
|
|
8
|
+
*/
|
|
9
|
+
export default class GameScore implements Score, Debuggable, Serializable {
|
|
10
|
+
private _score;
|
|
11
|
+
private _multiplier;
|
|
12
|
+
private _level;
|
|
13
|
+
private _maxLevel;
|
|
14
|
+
private _highScore;
|
|
15
|
+
serialId: string;
|
|
16
|
+
/**
|
|
17
|
+
* Initializes the score module.
|
|
18
|
+
* Currently a no-op but required by interface.
|
|
19
|
+
*/
|
|
20
|
+
setup(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Increases the score by the given amount, applying the current multiplier.
|
|
23
|
+
* Automatically checks for high score updates.
|
|
24
|
+
*
|
|
25
|
+
* @param {number} amount - The base amount to increase by.
|
|
26
|
+
*/
|
|
27
|
+
increaseScore(amount: number): void;
|
|
28
|
+
/**
|
|
29
|
+
* Resets the current score to 0.
|
|
30
|
+
*/
|
|
31
|
+
resetScore(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Formats the current score as a string with leading zeros.
|
|
34
|
+
*
|
|
35
|
+
* @param {number} [digits=6] - The total number of digits to display.
|
|
36
|
+
* @returns {string} The formatted score string (e.g., "000150").
|
|
37
|
+
*/
|
|
38
|
+
getFormattedScore(digits?: number): string;
|
|
39
|
+
/**
|
|
40
|
+
* Increases the game level by a specific amount.
|
|
41
|
+
*
|
|
42
|
+
* @param {number} amount - The number of levels to add.
|
|
43
|
+
*/
|
|
44
|
+
increaseLevel(amount: number): void;
|
|
45
|
+
/**
|
|
46
|
+
* Resets the game level back to 1.
|
|
47
|
+
*/
|
|
48
|
+
resetLevel(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Gets the current score multiplier.
|
|
51
|
+
*
|
|
52
|
+
* @returns {number} The active multiplier.
|
|
53
|
+
*/
|
|
54
|
+
get multiplier(): number;
|
|
55
|
+
/**
|
|
56
|
+
* Sets the score multiplier.
|
|
57
|
+
*
|
|
58
|
+
* @param {number} value - The new multiplier value.
|
|
59
|
+
*/
|
|
60
|
+
set multiplier(value: number);
|
|
61
|
+
/**
|
|
62
|
+
* Gets the current level.
|
|
63
|
+
*
|
|
64
|
+
* @returns {number} The current level.
|
|
65
|
+
*/
|
|
66
|
+
get level(): number;
|
|
67
|
+
/**
|
|
68
|
+
* Gets the current raw score.
|
|
69
|
+
*
|
|
70
|
+
* @returns {number} The current score value.
|
|
71
|
+
*/
|
|
72
|
+
get score(): number;
|
|
73
|
+
/**
|
|
74
|
+
* Gets the maximum achievable level (if defined).
|
|
75
|
+
*
|
|
76
|
+
* @returns {number} The max level.
|
|
77
|
+
*/
|
|
78
|
+
get maxLevel(): number;
|
|
79
|
+
/**
|
|
80
|
+
* Sets the maximum game level.
|
|
81
|
+
*
|
|
82
|
+
* @param {number} value - The max level cap.
|
|
83
|
+
*/
|
|
84
|
+
set maxLevel(value: number);
|
|
85
|
+
/**
|
|
86
|
+
* Gets the current high score.
|
|
87
|
+
*
|
|
88
|
+
* @returns {number} The current high score.
|
|
89
|
+
*/
|
|
90
|
+
get highScore(): number;
|
|
91
|
+
/**
|
|
92
|
+
* Sets the high score.
|
|
93
|
+
*
|
|
94
|
+
* @param {number} value - The new high score.
|
|
95
|
+
*/
|
|
96
|
+
set highScore(value: number);
|
|
97
|
+
/**
|
|
98
|
+
* Retrieves debug information about the score status.
|
|
99
|
+
*
|
|
100
|
+
* @returns {Record<string, string | number | boolean>} The debug data.
|
|
101
|
+
*/
|
|
102
|
+
getDebugData(): Record<string, string | number | boolean>;
|
|
103
|
+
/**
|
|
104
|
+
* Serializes the current score and level progress into a JSON string.
|
|
105
|
+
* This is used by the SessionManager to save transient state.
|
|
106
|
+
*
|
|
107
|
+
* @returns {string} The serialized JSON data.
|
|
108
|
+
*/
|
|
109
|
+
serialize(): string;
|
|
110
|
+
/**
|
|
111
|
+
* Restores score and level progress from a serialized JSON string.
|
|
112
|
+
* Used by the SessionManager when recovering an active session.
|
|
113
|
+
*
|
|
114
|
+
* @param {string} data - The JSON string containing the saved session data.
|
|
115
|
+
*/
|
|
116
|
+
deserialize(data: string): void;
|
|
117
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Serializable } from '../../types/Interfaces';
|
|
2
|
+
import { Session, State } from '../../types/modules';
|
|
3
|
+
export default class GameSession implements Session {
|
|
4
|
+
_state: State;
|
|
5
|
+
gameId: string;
|
|
6
|
+
private _isModalClosed;
|
|
7
|
+
private _showSessionModal;
|
|
8
|
+
private _serializables;
|
|
9
|
+
register(serializable: Serializable): void;
|
|
10
|
+
saveSession(): void;
|
|
11
|
+
clearSession(): void;
|
|
12
|
+
setShowModalFunction(showModal: (onConfirm: () => void, onCancel: () => void) => void): void;
|
|
13
|
+
private _isGameMenuInstance;
|
|
14
|
+
private _hasSession;
|
|
15
|
+
private _loadSession;
|
|
16
|
+
private _destroySession;
|
|
17
|
+
syncState(state: State): void;
|
|
18
|
+
getDebugData(): Record<string, string | number | boolean>;
|
|
19
|
+
private _key;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Sound } from '../../types/enums';
|
|
2
|
+
import { Debuggable, StateSyncable } from '../../types/Interfaces';
|
|
3
|
+
import { SoundModule, State } from '../../types/modules';
|
|
4
|
+
/**
|
|
5
|
+
* Manages audio playback and sound effects.
|
|
6
|
+
* Handles the Web Audio API context, loading sound buffers, and managing volume/muting.
|
|
7
|
+
*/
|
|
8
|
+
export default class GameSound implements SoundModule, StateSyncable, Debuggable {
|
|
9
|
+
muted: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* The AudioContext is the primary "audio engine" for the browser.
|
|
12
|
+
* It manages all sound creation and playback.
|
|
13
|
+
*/
|
|
14
|
+
private _audioContext;
|
|
15
|
+
/**
|
|
16
|
+
* The GainNode controls the volume (gain) of the audio.
|
|
17
|
+
* All sounds pass through this node before reaching the destination (speakers).
|
|
18
|
+
*/
|
|
19
|
+
private _gainNode;
|
|
20
|
+
/**
|
|
21
|
+
* Stores loaded sound buffers in memory.
|
|
22
|
+
* AudioBuffer contains the decoded audio data ready for playback.
|
|
23
|
+
*/
|
|
24
|
+
private _buffers;
|
|
25
|
+
/**
|
|
26
|
+
* Tracks currently playing sound sources.
|
|
27
|
+
* Required to stop specific sounds (like background music or loops).
|
|
28
|
+
*/
|
|
29
|
+
private _activeSources;
|
|
30
|
+
private _volume;
|
|
31
|
+
_state: State;
|
|
32
|
+
/**
|
|
33
|
+
* Initializes the sound system.
|
|
34
|
+
* Creates the AudioContext, sets up the master gain node, and starts loading sounds.
|
|
35
|
+
*/
|
|
36
|
+
setup(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Plays a specific sound effect.
|
|
39
|
+
* Creates a new source node for each playback instance.
|
|
40
|
+
*
|
|
41
|
+
* @param {Sound} sound - The sound identifier/URL to play.
|
|
42
|
+
* @returns {Promise<void>}
|
|
43
|
+
*/
|
|
44
|
+
play(sound: Sound): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Stops all instances of a specific sound.
|
|
47
|
+
*
|
|
48
|
+
* @param {Sound} sound - The sound to stop.
|
|
49
|
+
* @returns {Promise<void>}
|
|
50
|
+
*/
|
|
51
|
+
stop(sound: Sound): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Stops all currently playing sounds.
|
|
54
|
+
*
|
|
55
|
+
* @returns {Promise<void>}
|
|
56
|
+
*/
|
|
57
|
+
stopAll(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Updates the master volume based on the muted state.
|
|
60
|
+
*/
|
|
61
|
+
private _updateGain;
|
|
62
|
+
/**
|
|
63
|
+
* Loads all sound assets defined in the Sound enum.
|
|
64
|
+
* Fetches, buffers, and decodes the audio data.
|
|
65
|
+
*/
|
|
66
|
+
private _loadAll;
|
|
67
|
+
/**
|
|
68
|
+
* Toggles the mute state of the game.
|
|
69
|
+
* Updates the state module and the audio gain.
|
|
70
|
+
*/
|
|
71
|
+
toggleMute(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Receives the shared game state module.
|
|
74
|
+
* Subscribes to mute state changes.
|
|
75
|
+
*
|
|
76
|
+
* @param {State} state - The game state module.
|
|
77
|
+
*/
|
|
78
|
+
syncState(state: State): void;
|
|
79
|
+
/**
|
|
80
|
+
* Retrieves debug information about the audio system.
|
|
81
|
+
*
|
|
82
|
+
* @returns {Record<string, string | number | boolean>} The debug data.
|
|
83
|
+
*/
|
|
84
|
+
getDebugData(): Record<string, string | number | boolean>;
|
|
85
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { Debuggable } from '../../types/Interfaces';
|
|
2
|
+
import { State } from '../../types/modules';
|
|
3
|
+
import { StateProperty } from '../../types/Types';
|
|
4
|
+
/**
|
|
5
|
+
* Manages the core boolean states of the game and handles state-change events.
|
|
6
|
+
*
|
|
7
|
+
* Provides a central hub for tracking game lifecycle states (on, running, gameOver)
|
|
8
|
+
* and user preferences (color enabled).
|
|
9
|
+
*
|
|
10
|
+
*
|
|
11
|
+
* **Persistence Responsibility:**
|
|
12
|
+
* This class is the SOLE responsible for persisting and loading generic, cross-session
|
|
13
|
+
* player preferences (like mute settings and color toggle) from LocalStorage.
|
|
14
|
+
* It does NOT handle transient session data (GameSession) or specific scoring logic (GameScore).
|
|
15
|
+
*/
|
|
16
|
+
export default class GameState implements State, Debuggable {
|
|
17
|
+
private _state;
|
|
18
|
+
/** Map to store property names and their associated subscription callbacks. */
|
|
19
|
+
private _subscribers;
|
|
20
|
+
/**
|
|
21
|
+
* Initializes the state module.
|
|
22
|
+
* Sets default values for all state properties and loads persisted data.
|
|
23
|
+
*/
|
|
24
|
+
setup(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Loads persistent state from LocalStorage.
|
|
27
|
+
*/
|
|
28
|
+
private _loadPersistentState;
|
|
29
|
+
/**
|
|
30
|
+
* Sets a state property value, handling persistence and notification.
|
|
31
|
+
*
|
|
32
|
+
* @param {StateProperty} property - The property to set.
|
|
33
|
+
* @param {boolean | number} value - The value to set.
|
|
34
|
+
*/
|
|
35
|
+
private _set;
|
|
36
|
+
/**
|
|
37
|
+
* Notifies all subscribers of a property change.
|
|
38
|
+
*
|
|
39
|
+
* @param {StateProperty} property - The property that changed.
|
|
40
|
+
* @param {boolean | number} value - The new value of the property.
|
|
41
|
+
*/
|
|
42
|
+
private _notify;
|
|
43
|
+
/**
|
|
44
|
+
* Checks if the game machine is powered on.
|
|
45
|
+
*
|
|
46
|
+
* @returns {boolean} True if powered on.
|
|
47
|
+
*/
|
|
48
|
+
isOn(): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Checks if the game machine is powered off.
|
|
51
|
+
*
|
|
52
|
+
* @returns {boolean} True if powered off.
|
|
53
|
+
*/
|
|
54
|
+
isOff(): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Checks if a game session has currently started.
|
|
57
|
+
* This includes both playing and paused states.
|
|
58
|
+
*
|
|
59
|
+
* @returns {boolean} True if a game is active.
|
|
60
|
+
*/
|
|
61
|
+
isStarted(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Checks if the game is currently running (not paused, not game over).
|
|
64
|
+
*
|
|
65
|
+
* @returns {boolean} True if gameplay is active.
|
|
66
|
+
*/
|
|
67
|
+
isPlaying(): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Checks if the game is paused.
|
|
70
|
+
*
|
|
71
|
+
* @returns {boolean} True if the game is started but not playing (and not game over).
|
|
72
|
+
*/
|
|
73
|
+
isPaused(): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Checks if the game is in a "Game Over" state.
|
|
76
|
+
*
|
|
77
|
+
* @returns {boolean} True if the game is over.
|
|
78
|
+
*/
|
|
79
|
+
isGameOver(): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Powers on the game machine.
|
|
82
|
+
* Resets all session states (start, playing, game over).
|
|
83
|
+
*/
|
|
84
|
+
turnOn(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Powers off the game machine.
|
|
87
|
+
* Resets all states.
|
|
88
|
+
*/
|
|
89
|
+
turnOff(): void;
|
|
90
|
+
/**
|
|
91
|
+
* Starts a new game session.
|
|
92
|
+
* Only works if the machine is powered on.
|
|
93
|
+
*/
|
|
94
|
+
startGame(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Resets the game over state and starts the game again.
|
|
97
|
+
*/
|
|
98
|
+
resetGameOver(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Exits the current game session, returning to the "On" state.
|
|
101
|
+
*/
|
|
102
|
+
exitGame(): void;
|
|
103
|
+
/**
|
|
104
|
+
* Pauses the current game.
|
|
105
|
+
*/
|
|
106
|
+
pause(): void;
|
|
107
|
+
/**
|
|
108
|
+
* Resumes the game from a paused state.
|
|
109
|
+
*/
|
|
110
|
+
resume(): void;
|
|
111
|
+
/**
|
|
112
|
+
* Triggers the "Game Over" state.
|
|
113
|
+
* Stops gameplay.
|
|
114
|
+
*/
|
|
115
|
+
triggerGameOver(): void;
|
|
116
|
+
/**
|
|
117
|
+
* Resets the game to the initial state (restarts).
|
|
118
|
+
*/
|
|
119
|
+
resetGame(): void;
|
|
120
|
+
/**
|
|
121
|
+
* Checks if color mode is enabled.
|
|
122
|
+
*
|
|
123
|
+
* @returns {boolean} True if color is enabled.
|
|
124
|
+
*/
|
|
125
|
+
isColorEnabled(): boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Enables or disables color mode.
|
|
128
|
+
*
|
|
129
|
+
* @param {boolean} value - True to enable, false to disable.
|
|
130
|
+
*/
|
|
131
|
+
setColorEnabled(value: boolean): void;
|
|
132
|
+
/**
|
|
133
|
+
* Checks if audio is muted.
|
|
134
|
+
*
|
|
135
|
+
* @returns {boolean} True if muted.
|
|
136
|
+
*/
|
|
137
|
+
isMuted(): boolean;
|
|
138
|
+
/**
|
|
139
|
+
* Mutes or unmutes the audio.
|
|
140
|
+
*
|
|
141
|
+
* @param {boolean} value - True to mute, false to unmute.
|
|
142
|
+
*/
|
|
143
|
+
setMuted(value: boolean): void;
|
|
144
|
+
/**
|
|
145
|
+
* Toggles the color enabled state.
|
|
146
|
+
*/
|
|
147
|
+
toggleColorEnabled(): void;
|
|
148
|
+
/**
|
|
149
|
+
* Toggles the muted state.
|
|
150
|
+
*/
|
|
151
|
+
toggleMuted(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Subscribes to changes in specific state properties.
|
|
154
|
+
*
|
|
155
|
+
* @param {StateProperty} property - The state property to monitor.
|
|
156
|
+
* @param {function(boolean | number): void} callback - The function to execute when the property changes.
|
|
157
|
+
*/
|
|
158
|
+
subscribe(property: StateProperty, callback: (value: boolean | number) => void): void;
|
|
159
|
+
/**
|
|
160
|
+
* Unsubscribes from changes in specific state properties.
|
|
161
|
+
*
|
|
162
|
+
* @param {StateProperty} property - The state property to monitor.
|
|
163
|
+
* @param {function(boolean | number): void} callback - The function to remove.
|
|
164
|
+
*/
|
|
165
|
+
unsubscribe(property: StateProperty, callback: (value: boolean | number) => void): void;
|
|
166
|
+
/**
|
|
167
|
+
* Retrieves debug information about the game state.
|
|
168
|
+
*
|
|
169
|
+
* @returns {Record<string, string | number | boolean>} The debug data.
|
|
170
|
+
*/
|
|
171
|
+
getDebugData(): Record<string, string | number | boolean>;
|
|
172
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import p5 from 'p5';
|
|
2
|
+
import { FontSize, FontAlign, FontVerticalAlign } from '../../types/enums';
|
|
3
|
+
import { Coordinate, RendererMetrics } from '../../types/Types';
|
|
4
|
+
import { Debuggable } from '../../types/Interfaces';
|
|
5
|
+
import { Text } from '../../types/modules';
|
|
6
|
+
/**
|
|
7
|
+
* Handles text rendering and font management within the game.
|
|
8
|
+
*
|
|
9
|
+
* This class orchestrates font initialization, sizing, alignment, and
|
|
10
|
+
* provides methods to render text on specific areas (HUD or Display).
|
|
11
|
+
*/
|
|
12
|
+
export default class GameText implements Text, Debuggable {
|
|
13
|
+
/** The default font family used for game text. */
|
|
14
|
+
protected defaultFontFamily: string;
|
|
15
|
+
/** Array containing pre-calculated font sizes in pixels. */
|
|
16
|
+
private fontSizes;
|
|
17
|
+
/** Stores the current display metrics for relative positioning. */
|
|
18
|
+
private _rendererMetrics;
|
|
19
|
+
/** The p5 instance used for rendering. */
|
|
20
|
+
private _p;
|
|
21
|
+
/**
|
|
22
|
+
* Creates an instance of GameText.
|
|
23
|
+
*
|
|
24
|
+
* @param {p5} p - The p5 instance.
|
|
25
|
+
*/
|
|
26
|
+
constructor(p: p5);
|
|
27
|
+
/**
|
|
28
|
+
* Setup the font and pre-calculates relative font sizes.
|
|
29
|
+
*
|
|
30
|
+
* Uses configuration values to define a set of pixel-perfect font sizes
|
|
31
|
+
* based on current container width.
|
|
32
|
+
*/
|
|
33
|
+
setup(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Sets the display metrics used for relative text positioning.
|
|
36
|
+
*
|
|
37
|
+
* @param {RendererMetrics} rendererMetrics - The current renderer dimensions and origin.
|
|
38
|
+
*/
|
|
39
|
+
setRendererMetrics(rendererMetrics: RendererMetrics): void;
|
|
40
|
+
/**
|
|
41
|
+
* Sets the fill color of the text based on its state.
|
|
42
|
+
*
|
|
43
|
+
* @param {boolean} state - Whether the text should use the active or inactive color.
|
|
44
|
+
*/
|
|
45
|
+
protected setTextState(state: boolean): void;
|
|
46
|
+
/**
|
|
47
|
+
* Sets the text color to the active theme color.
|
|
48
|
+
*/
|
|
49
|
+
setActiveText(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Sets the text color to the inactive theme color.
|
|
52
|
+
*/
|
|
53
|
+
setInactiveText(): void;
|
|
54
|
+
/**
|
|
55
|
+
* Sets the current font size from predefined values.
|
|
56
|
+
*
|
|
57
|
+
* @param {FontSize} fontSize - The enum value representing the desired size.
|
|
58
|
+
*/
|
|
59
|
+
setTextSize(fontSize: FontSize): void;
|
|
60
|
+
/**
|
|
61
|
+
* Configures horizontal and vertical text alignment.
|
|
62
|
+
*
|
|
63
|
+
* @param {FontAlign} fontAlign - Horizontal alignment value.
|
|
64
|
+
* @param {FontVerticalAlign} fontVerticalAlign - Vertical alignment value.
|
|
65
|
+
*/
|
|
66
|
+
setTextAlign(fontAlign: FontAlign, fontVerticalAlign: FontVerticalAlign): void;
|
|
67
|
+
/**
|
|
68
|
+
* Renders text on the HUD area using relative coordinates.
|
|
69
|
+
*
|
|
70
|
+
* @param {string} text - The string to be rendered.
|
|
71
|
+
* @param {Coordinate} coordinate - Normalized coordinates (0 to 1) within the HUD area.
|
|
72
|
+
*/
|
|
73
|
+
textOnHud(text: string, coordinate: Coordinate): void;
|
|
74
|
+
/**
|
|
75
|
+
* Renders text on the main display area using relative coordinates.
|
|
76
|
+
*
|
|
77
|
+
* @param {string} text - The string to be rendered.
|
|
78
|
+
* @param {Coordinate} coordinate - Normalized coordinates (0 to 1) within the display area.
|
|
79
|
+
*/
|
|
80
|
+
textOnDisplay(text: string, coordinate: Coordinate): void;
|
|
81
|
+
/**
|
|
82
|
+
* Retrieves debug information about the text system.
|
|
83
|
+
*
|
|
84
|
+
* @returns {Record<string, string | number | boolean>} The debug data.
|
|
85
|
+
*/
|
|
86
|
+
getDebugData(): Record<string, string | number | boolean>;
|
|
87
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|