├── .editorconfig ├── .gitattributes ├── .github ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── core.md │ ├── createjs.md │ ├── eventemitter3.md │ ├── macrobot.md │ ├── openfl.md │ ├── phaser-ce-signalcommandmap.md │ ├── phaser-ce.md │ ├── phaser.md │ ├── pixi-palidor.md │ ├── pixi-signalmediator.md │ ├── pixi.md │ ├── signalcommandmap.md │ └── signals.md ├── PULL_REQUEST_TEMPLATE.md └── workflows │ └── node.js.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .vscode ├── extensions.json └── settings.json ├── LICENSE ├── README.md ├── common ├── autoinstallers │ └── rush-prettier │ │ ├── package.json │ │ └── pnpm-lock.yaml ├── config │ └── rush │ │ ├── .npmrc │ │ ├── .npmrc-publish │ │ ├── .pnpmfile.cjs │ │ ├── artifactory.json │ │ ├── browser-approved-packages.json │ │ ├── build-cache.json │ │ ├── command-line.json │ │ ├── common-versions.json │ │ ├── experiments.json │ │ ├── nonbrowser-approved-packages.json │ │ ├── pnpm-lock.yaml │ │ ├── repo-state.json │ │ ├── rush-plugins.json │ │ └── version-policies.json ├── git-hooks │ ├── commit-msg.sample │ └── pre-commit └── scripts │ ├── install-run-rush.js │ ├── install-run-rushx.js │ └── install-run.js ├── games ├── battleship │ ├── .eslintrc.js │ ├── .vscode │ │ └── settings.json │ ├── README.md │ ├── assets │ │ ├── atlas │ │ │ ├── battleship-pixijs.tps │ │ │ ├── buttons │ │ │ │ ├── button_background.png │ │ │ │ ├── icon_home.png │ │ │ │ ├── icon_pause.png │ │ │ │ ├── icon_resume.png │ │ │ │ └── icon_retry.png │ │ │ ├── others │ │ │ │ ├── logo_battleship.png │ │ │ │ └── logo_setzer.png │ │ │ └── ships │ │ │ │ ├── ship_2.png │ │ │ │ ├── ship_3_1.png │ │ │ │ ├── ship_3_2.png │ │ │ │ ├── ship_4.png │ │ │ │ └── ship_5.png │ │ ├── battleship-pixijs.json │ │ ├── battleship-pixijs.png │ │ ├── fonts │ │ │ ├── SimpleSmallPixel7.fnt │ │ │ └── SimpleSmallPixel7.png │ │ └── logo_typescript.png │ ├── config │ │ └── rush-project.json │ ├── karma.conf.js │ ├── media │ │ └── battleship_ss_01.png │ ├── package.json │ ├── src │ │ ├── Game.ts │ │ ├── battleship │ │ │ ├── configs │ │ │ │ ├── GameConfig.ts │ │ │ │ ├── PalidorConfig.ts │ │ │ │ └── ViewsConfig.ts │ │ │ ├── events │ │ │ │ ├── FlowEvent.ts │ │ │ │ └── GameEvent.ts │ │ │ ├── game │ │ │ │ ├── commands │ │ │ │ │ ├── CreateLevelCommand.ts │ │ │ │ │ ├── EnemyAttackCommand.ts │ │ │ │ │ └── HeroAttackCommand.ts │ │ │ │ ├── events │ │ │ │ │ └── AttackEvent.ts │ │ │ │ ├── managers │ │ │ │ │ └── GameManager.ts │ │ │ │ ├── models │ │ │ │ │ ├── BattleField.ts │ │ │ │ │ ├── Grid.ts │ │ │ │ │ ├── LevelModel.ts │ │ │ │ │ ├── Player.ts │ │ │ │ │ ├── Ship.ts │ │ │ │ │ └── Tile.ts │ │ │ │ └── utils │ │ │ │ │ └── BattleFieldUtils.ts │ │ │ ├── mediators │ │ │ │ ├── EnemyComponentMediator.ts │ │ │ │ ├── EnemyTileDisplayMediator.ts │ │ │ │ ├── GameOverPopupMediator.ts │ │ │ │ ├── GameViewMediator.ts │ │ │ │ ├── HeroComponentMediator.ts │ │ │ │ ├── HomeViewMediator.ts │ │ │ │ ├── IntroViewMediator.ts │ │ │ │ ├── PausePopupMediator.ts │ │ │ │ └── YouWinPopupMediator.ts │ │ │ ├── services │ │ │ │ ├── FlowService.ts │ │ │ │ └── GameService.ts │ │ │ ├── utils │ │ │ │ ├── AtlasKeys.ts │ │ │ │ ├── Colors.ts │ │ │ │ ├── DebugField.ts │ │ │ │ ├── IsoUtils.ts │ │ │ │ ├── MagicValues.ts │ │ │ │ ├── PixiFactory.ts │ │ │ │ └── Texts.ts │ │ │ └── views │ │ │ │ ├── GameOverPopup.ts │ │ │ │ ├── GameView.ts │ │ │ │ ├── HomeView.ts │ │ │ │ ├── IntroView.ts │ │ │ │ ├── PausePopup.ts │ │ │ │ ├── YouWinPopup.ts │ │ │ │ └── components │ │ │ │ ├── CustomButton.ts │ │ │ │ ├── EnemyComponent.ts │ │ │ │ ├── EnemyTileDisplay.ts │ │ │ │ ├── GridDisplay.ts │ │ │ │ ├── HPsComponent.ts │ │ │ │ ├── HeroComponent.ts │ │ │ │ ├── ShipDisplay.ts │ │ │ │ ├── ShipHPComponent.ts │ │ │ │ ├── ShipsGridDisplay.ts │ │ │ │ └── TileDisplay.ts │ │ └── index.ts │ ├── test │ │ ├── battleship │ │ │ ├── game │ │ │ │ ├── events │ │ │ │ │ └── AttackEvent.test.ts │ │ │ │ ├── managers │ │ │ │ │ └── GameManager.test.ts │ │ │ │ ├── models │ │ │ │ │ ├── BattleField.test.ts │ │ │ │ │ ├── Grid.test.ts │ │ │ │ │ ├── Player.test.ts │ │ │ │ │ ├── Ship.test.ts │ │ │ │ │ └── Tile.test.ts │ │ │ │ └── utils │ │ │ │ │ └── BattleFieldUtils.test.ts │ │ │ └── services │ │ │ │ ├── FlowService.test.ts │ │ │ │ └── GameService.test.ts │ │ ├── entry.ts │ │ ├── index.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── webpack.config.js │ └── webpack.setzer.config.js ├── match3 │ ├── .eslintrc.js │ ├── .vscode │ │ └── settings.json │ ├── README.md │ ├── assets │ │ ├── BerlinSansDemi.fnt │ │ ├── BerlinSansDemi_1.png │ │ ├── atlas │ │ │ ├── buttons │ │ │ │ ├── button_medium_down.png │ │ │ │ ├── button_medium_up.png │ │ │ │ ├── button_small_danger_down.png │ │ │ │ ├── button_small_danger_up.png │ │ │ │ ├── button_small_down.png │ │ │ │ ├── button_small_up.png │ │ │ │ ├── icon_close.png │ │ │ │ ├── icon_config.png │ │ │ │ ├── icon_confirm.png │ │ │ │ ├── icon_delete.png │ │ │ │ ├── icon_home.png │ │ │ │ ├── icon_level_select.png │ │ │ │ ├── icon_pause.png │ │ │ │ ├── icon_resume.png │ │ │ │ ├── icon_retry.png │ │ │ │ └── level_select_small_star.png │ │ │ ├── displays │ │ │ │ ├── logo_matchthree.png │ │ │ │ ├── logo_setzer.png │ │ │ │ ├── popup_star.png │ │ │ │ ├── star_hud_display_00.png │ │ │ │ ├── star_hud_display_01.png │ │ │ │ ├── star_hud_display_02.png │ │ │ │ ├── star_hud_display_03.png │ │ │ │ ├── star_hud_display_04.png │ │ │ │ ├── star_hud_display_05.png │ │ │ │ ├── star_hud_display_06.png │ │ │ │ ├── star_hud_display_07.png │ │ │ │ ├── star_hud_display_08.png │ │ │ │ ├── star_hud_display_09.png │ │ │ │ └── star_hud_display_10.png │ │ │ ├── game │ │ │ │ ├── piece_col_1.png │ │ │ │ ├── piece_col_2.png │ │ │ │ ├── piece_col_3.png │ │ │ │ ├── piece_col_4.png │ │ │ │ ├── piece_col_5.png │ │ │ │ ├── piece_col_6.png │ │ │ │ ├── piece_normal_1.png │ │ │ │ ├── piece_normal_2.png │ │ │ │ ├── piece_normal_3.png │ │ │ │ ├── piece_normal_4.png │ │ │ │ ├── piece_normal_5.png │ │ │ │ ├── piece_normal_6.png │ │ │ │ ├── piece_rainbow.png │ │ │ │ ├── piece_row_1.png │ │ │ │ ├── piece_row_2.png │ │ │ │ ├── piece_row_3.png │ │ │ │ ├── piece_row_4.png │ │ │ │ ├── piece_row_5.png │ │ │ │ └── piece_row_6.png │ │ │ ├── matchthree-pixijs-atlas.json │ │ │ ├── matchthree-pixijs-atlas.png │ │ │ ├── matchthree-starling-atlas.png │ │ │ ├── matchthree-starling-atlas.xml │ │ │ └── matchthree-startling-atlas.tps │ │ ├── backgrounds │ │ │ ├── background.png │ │ │ ├── background_hud.png │ │ │ └── background_popup.png │ │ ├── fonts │ │ │ ├── BerlinSansDemi.fnt │ │ │ └── BerlinSansDemi.png │ │ ├── gimp │ │ │ ├── assets.xcf │ │ │ └── stars.xcf │ │ ├── logo_typescript.png │ │ ├── matchthree-pixijs-atlas.json │ │ └── matchthree-pixijs-atlas.png │ ├── config │ │ └── rush-project.json │ ├── karma.conf.js │ ├── media │ │ ├── gif_match3_ts_demo.gif │ │ ├── img_cover_match3_ts.png │ │ ├── img_game_match3_ts.png │ │ ├── img_ss_match3_ts_01.png │ │ ├── img_ss_match3_ts_02.png │ │ ├── img_ss_match3_ts_03.png │ │ └── img_ss_match3_ts_04.png │ ├── package.json │ ├── src │ │ ├── Game.ts │ │ ├── index.ts │ │ └── matchthree │ │ │ ├── configs │ │ │ ├── GameConfig.ts │ │ │ ├── PalidorConfig.ts │ │ │ └── ViewsConfig.ts │ │ │ ├── events │ │ │ ├── FlowEvent.ts │ │ │ └── GameEvent.ts │ │ │ ├── game │ │ │ ├── commands │ │ │ │ ├── CreateLevelCommand.ts │ │ │ │ ├── GameOverCommand.ts │ │ │ │ ├── RetryGameCommand.ts │ │ │ │ ├── SwapPiecesCommand.ts │ │ │ │ └── SwapPiecesConfirmCommand.ts │ │ │ ├── displays │ │ │ │ └── BlankedCell.ts │ │ │ ├── managers │ │ │ │ └── GameManager.ts │ │ │ ├── models │ │ │ │ ├── GameStatus.ts │ │ │ │ ├── GridData.ts │ │ │ │ ├── LevelInfo.ts │ │ │ │ ├── LevelModel.ts │ │ │ │ ├── PieceData.ts │ │ │ │ ├── SwapModel.ts │ │ │ │ ├── Tile.ts │ │ │ │ └── TouchPhase.ts │ │ │ └── utils │ │ │ │ ├── AnimationUtils.ts │ │ │ │ ├── GridUtils.ts │ │ │ │ ├── LevelRepository.ts │ │ │ │ ├── PieceDisplayPool.ts │ │ │ │ ├── PieceIds.ts │ │ │ │ ├── PieceType.ts │ │ │ │ ├── PieceUtils.ts │ │ │ │ ├── PowerUpUtils.ts │ │ │ │ └── ScoreUtils.ts │ │ │ ├── mediators │ │ │ ├── AlertPopupMediator.ts │ │ │ ├── GameOverPopupMediator.ts │ │ │ ├── GameViewMediator.ts │ │ │ ├── GridFieldComponentMediator.ts │ │ │ ├── HUDGameComponentMediator.ts │ │ │ ├── HomeViewMediator.ts │ │ │ ├── IntroViewMediator.ts │ │ │ ├── LevelSelectViewMediator.ts │ │ │ ├── OptionsViewMediator.ts │ │ │ ├── PausePopupMediator.ts │ │ │ ├── StartingPopupMediator.ts │ │ │ └── YouWinPopupMediator.ts │ │ │ ├── services │ │ │ ├── FlowService.ts │ │ │ └── GameService.ts │ │ │ ├── utils │ │ │ ├── AtlasKeys.ts │ │ │ ├── MagicValues.ts │ │ │ ├── PixiFactory.ts │ │ │ ├── Texts.ts │ │ │ └── ViewPortSize.ts │ │ │ └── views │ │ │ ├── AlertPopup.ts │ │ │ ├── GameOverPopup.ts │ │ │ ├── GameView.ts │ │ │ ├── HomeView.ts │ │ │ ├── IntroView.ts │ │ │ ├── LevelSelectView.ts │ │ │ ├── OptionsView.ts │ │ │ ├── PausePopup.ts │ │ │ ├── StartingPopup.ts │ │ │ ├── YouWinPopup.ts │ │ │ └── components │ │ │ ├── GridFieldComponent.ts │ │ │ ├── HUDGameComponent.ts │ │ │ ├── IconButton.ts │ │ │ ├── LevelSelectButton.ts │ │ │ ├── SingleStart.ts │ │ │ └── StarDisplayComponent.ts │ ├── test │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── matchthree │ │ │ ├── game │ │ │ │ ├── managers │ │ │ │ │ └── GameManager.test.ts │ │ │ │ ├── models │ │ │ │ │ ├── GridData.test.ts │ │ │ │ │ ├── LevelInfo.test.ts │ │ │ │ │ ├── LevelModel.test.ts │ │ │ │ │ ├── PieceData.test.ts │ │ │ │ │ ├── SwapModel.test.ts │ │ │ │ │ └── Tile.test.ts │ │ │ │ └── utils │ │ │ │ │ ├── GridUtils.test.ts │ │ │ │ │ ├── PieceUtils.test.ts │ │ │ │ │ └── PowerUpUtils.test.ts │ │ │ ├── services │ │ │ │ └── GameService.test.ts │ │ │ └── utils │ │ │ │ └── AtlasKeys.test.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── webpack.config.js │ └── webpack.setzer.config.js ├── minesweeper │ ├── .eslintrc.js │ ├── .vscode │ │ └── settings.json │ ├── README.md │ ├── assets │ │ ├── atlas │ │ │ ├── buttons │ │ │ │ ├── button_background.png │ │ │ │ ├── icon_home.png │ │ │ │ ├── icon_pause.png │ │ │ │ ├── icon_resume.png │ │ │ │ └── icon_retry.png │ │ │ ├── minesweeper-pixijs.tps │ │ │ └── others │ │ │ │ ├── icon_flag.png │ │ │ │ ├── icon_flag_large.png │ │ │ │ ├── icon_mine.png │ │ │ │ ├── logo_minesweeper.png │ │ │ │ └── logo_setzer.png │ │ ├── fonts │ │ │ ├── SimpleSmallPixel7.fnt │ │ │ └── SimpleSmallPixel7.png │ │ ├── logo_typescript.png │ │ ├── minesweeper-pixijs.json │ │ └── minesweeper-pixijs.png │ ├── config │ │ └── rush-project.json │ ├── karma.conf.js │ ├── media │ │ ├── gif_minesweeper_ts_demo.gif │ │ ├── img_cover_minesweeper_ts.png │ │ ├── img_game_minesweeper_ts.png │ │ ├── img_ss_minesweeper_ts_01.png │ │ └── img_ss_minesweeper_ts_02.png │ ├── package.json │ ├── src │ │ ├── Game.ts │ │ ├── index.ts │ │ └── minesweeper │ │ │ ├── configs │ │ │ ├── GameConfig.ts │ │ │ ├── PalidorConfig.ts │ │ │ └── ViewsConfig.ts │ │ │ ├── events │ │ │ ├── FlowEvent.ts │ │ │ └── GameEvent.ts │ │ │ ├── game │ │ │ ├── commands │ │ │ │ ├── CreateLevelCommand.ts │ │ │ │ ├── ExportLevelDataCommand.ts │ │ │ │ ├── GameOverCommand.ts │ │ │ │ └── RetryGameCommand.ts │ │ │ ├── managers │ │ │ │ ├── GameManager.ts │ │ │ │ └── HighScoreManager.ts │ │ │ ├── models │ │ │ │ ├── Cell.ts │ │ │ │ ├── CustomLevelModel.ts │ │ │ │ ├── GameStatus.ts │ │ │ │ ├── GridData.ts │ │ │ │ └── LevelModel.ts │ │ │ └── utils │ │ │ │ ├── GridUtils.ts │ │ │ │ └── LevelUtils.ts │ │ │ ├── mediators │ │ │ ├── GameOverPopupMediator.ts │ │ │ ├── GameViewMediator.ts │ │ │ ├── GridFieldComponentMediator.ts │ │ │ ├── HUDGameComponentMediator.ts │ │ │ ├── HomeViewMediator.ts │ │ │ ├── IntroViewMediator.ts │ │ │ ├── LevelCustomOptionsViewMediator.ts │ │ │ ├── LevelSelectViewMediator.ts │ │ │ ├── PausePopupMediator.ts │ │ │ ├── StartingPopupMediator.ts │ │ │ ├── TileDisplayMediator.ts │ │ │ └── YouWinPopupMediator.ts │ │ │ ├── services │ │ │ ├── FlowService.ts │ │ │ └── GameService.ts │ │ │ ├── utils │ │ │ ├── AtlasKeys.ts │ │ │ ├── Colors.ts │ │ │ ├── MagicValues.ts │ │ │ ├── PixiFactory.ts │ │ │ ├── Texts.ts │ │ │ └── ViewPortSize.ts │ │ │ └── views │ │ │ ├── GameOverPopup.ts │ │ │ ├── GameView.ts │ │ │ ├── HomeView.ts │ │ │ ├── IntroView.ts │ │ │ ├── LevelCustomOptionsView.ts │ │ │ ├── LevelSelectView.ts │ │ │ ├── PausePopup.ts │ │ │ ├── StartingPopup.ts │ │ │ ├── YouWinPopup.ts │ │ │ └── components │ │ │ ├── CustomButton.ts │ │ │ ├── GridFieldComponent.ts │ │ │ ├── HUDGameComponent.ts │ │ │ ├── NumericStepper.ts │ │ │ └── TileDisplay.ts │ ├── test │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── minesweeper │ │ │ ├── game │ │ │ │ ├── managers │ │ │ │ │ └── GameManager.test.ts │ │ │ │ ├── models │ │ │ │ │ ├── Cell.test.ts │ │ │ │ │ ├── GridData.test.ts │ │ │ │ │ └── LevelModel.test.ts │ │ │ │ └── utils │ │ │ │ │ ├── GridUtils.test.ts │ │ │ │ │ └── LevelUtils.test.ts │ │ │ └── services │ │ │ │ └── GameService.test.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── webpack.config.js │ └── webpack.game.config.js ├── scratchcard │ ├── .eslintrc.js │ ├── .vscode │ │ └── settings.json │ ├── README.md │ ├── assets │ │ ├── atlas.json │ │ ├── atlas.png │ │ ├── atlas.tps │ │ ├── cards │ │ │ ├── bitbucket.png │ │ │ ├── chai.png │ │ │ ├── git.png │ │ │ ├── github.png │ │ │ ├── html5.png │ │ │ ├── javascript.png │ │ │ ├── mocha.png │ │ │ ├── node.png │ │ │ ├── npm.png │ │ │ ├── palidor.png │ │ │ ├── pixijs.png │ │ │ ├── prettier.png │ │ │ ├── profile.png │ │ │ ├── robotlegsjs.png │ │ │ ├── setzer.png │ │ │ ├── texturepacker.png │ │ │ ├── typescript.png │ │ │ ├── vscode.png │ │ │ ├── webpack.png │ │ │ └── yarn.png │ │ └── logo_typescript.png │ ├── config │ │ └── rush-project.json │ ├── media │ │ └── scratchcard.gif │ ├── package.json │ ├── src │ │ ├── Game.ts │ │ ├── commands │ │ │ ├── EndGameCommand.ts │ │ │ └── StartGameCommand.ts │ │ ├── configs │ │ │ └── ScratchConfig.ts │ │ ├── events │ │ │ ├── FlowEvent.ts │ │ │ └── GameEvent.ts │ │ ├── index.ts │ │ ├── managers │ │ │ ├── ScratchManager.ts │ │ │ └── TickManager.ts │ │ ├── mediators │ │ │ ├── FeedbackPopupMediator.ts │ │ │ ├── HUDViewMediator.ts │ │ │ ├── IntroViewMediator.ts │ │ │ ├── MainViewMediator.ts │ │ │ └── ScratchViewMediator.ts │ │ ├── models │ │ │ └── Model.ts │ │ ├── utils │ │ │ ├── AssetKeys.ts │ │ │ ├── Colors.ts │ │ │ ├── MagicValues.ts │ │ │ ├── PixiFactory.ts │ │ │ ├── Prizes.ts │ │ │ └── Texts.ts │ │ └── views │ │ │ ├── FeedbackPopup.ts │ │ │ ├── HUDView.ts │ │ │ ├── IntroView.ts │ │ │ ├── MainView.ts │ │ │ ├── ScratchView.ts │ │ │ └── components │ │ │ ├── Item.ts │ │ │ └── TextButton.ts │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ └── webpack.config.js ├── space-invaders │ ├── .eslintrc.js │ ├── .vscode │ │ └── settings.json │ ├── README.md │ ├── assets │ │ ├── atlas │ │ │ ├── buttons │ │ │ │ ├── button_cancel_over.png │ │ │ │ ├── button_cancel_up.png │ │ │ │ ├── button_config_over.png │ │ │ │ ├── button_config_up.png │ │ │ │ ├── button_confirm_over.png │ │ │ │ ├── button_confirm_up.png │ │ │ │ ├── button_home_over.png │ │ │ │ ├── button_home_up.png │ │ │ │ ├── button_pause_over.png │ │ │ │ ├── button_pause_up.png │ │ │ │ ├── button_reset_over.png │ │ │ │ ├── button_reset_up.png │ │ │ │ ├── button_resume_over.png │ │ │ │ ├── button_resume_up.png │ │ │ │ ├── button_retry_over.png │ │ │ │ ├── button_retry_up.png │ │ │ │ ├── button_start_over.png │ │ │ │ └── button_start_up.png │ │ │ ├── displays │ │ │ │ ├── cannon_hud.png │ │ │ │ ├── logo_setzer.png │ │ │ │ └── logo_spaceinvaders.png │ │ │ ├── game │ │ │ │ ├── bullet_frame_01.png │ │ │ │ ├── cannon_frame_01.png │ │ │ │ ├── enemy_01_frame_01.png │ │ │ │ ├── enemy_01_frame_02.png │ │ │ │ ├── enemy_02_frame_01.png │ │ │ │ ├── enemy_02_frame_02.png │ │ │ │ ├── enemy_03_frame_01.png │ │ │ │ ├── enemy_03_frame_02.png │ │ │ │ ├── enemy_bonus_frame_01.png │ │ │ │ ├── enemy_bonus_frame_02.png │ │ │ │ ├── explosion_frame_01.png │ │ │ │ └── explosion_frame_02.png │ │ │ └── spaceinvaders-pixijs-atlas.tps │ │ ├── fonts │ │ │ ├── SimpleSmalPixel7_.png │ │ │ ├── SimpleSmallPixel7.fnt │ │ │ └── SimpleSmallPixel7_0.png │ │ ├── logo_typescript.png │ │ ├── spaceinvaders-pixijs-atlas.json │ │ └── spaceinvaders-pixijs-atlas.png │ ├── config │ │ └── rush-project.json │ ├── media │ │ ├── gif_space_invaders_ts_demo.gif │ │ ├── img_cover_space_invaders_ts.png │ │ ├── img_game_space_invaders_ts.png │ │ └── img_ss_space_invaders_ts_01.png │ ├── package.json │ ├── src │ │ ├── Game.ts │ │ ├── commands │ │ │ ├── CreateLevelCommand.ts │ │ │ ├── DecreaseLivesCommand.ts │ │ │ ├── GameOverCommand.ts │ │ │ ├── IncreaaseLevelCommand.ts │ │ │ ├── IncreasePointsCommand.ts │ │ │ ├── RetryGameCommand.ts │ │ │ └── StartGameCommand.ts │ │ ├── config │ │ │ ├── GameConfig.ts │ │ │ ├── PalidorConfig.ts │ │ │ └── ViewsConfig.ts │ │ ├── events │ │ │ ├── FlowEvent.ts │ │ │ └── GameEvent.ts │ │ ├── game │ │ │ ├── Managers │ │ │ │ └── GameManager.ts │ │ │ ├── displays │ │ │ │ ├── BulletDisplay.ts │ │ │ │ ├── CannonDisplay.ts │ │ │ │ ├── EnemyDisplay.ts │ │ │ │ └── ExplosionDisplay.ts │ │ │ ├── entities │ │ │ │ ├── Bullet.ts │ │ │ │ ├── Entity.ts │ │ │ │ └── Explosion.ts │ │ │ ├── factories │ │ │ │ └── LevelFactory.ts │ │ │ └── utils │ │ │ │ ├── EntityPool.ts │ │ │ │ ├── GameUtils.ts │ │ │ │ ├── Point.ts │ │ │ │ └── Rectangle.ts │ │ ├── index.ts │ │ ├── mediators │ │ │ ├── BattleFieldComponentMediator.ts │ │ │ ├── GameOverPopupMediator.ts │ │ │ ├── GameViewMediator.ts │ │ │ ├── HUDGameComponentMediator.ts │ │ │ ├── HomeViewMediator.ts │ │ │ ├── InfoPopupMediator.ts │ │ │ ├── IntroViewMediator.ts │ │ │ ├── OptionsViewMediator.ts │ │ │ ├── PausePopupMediator.ts │ │ │ ├── ResetConfirmPopupMediator.ts │ │ │ └── StartingPopupMediator.ts │ │ ├── models │ │ │ ├── GameModel.ts │ │ │ ├── GameStatus.ts │ │ │ ├── LevelData.ts │ │ │ └── LevelModel.ts │ │ ├── services │ │ │ ├── FlowService.ts │ │ │ └── GameService.ts │ │ ├── utils │ │ │ ├── AtlasKeys.ts │ │ │ ├── Colors.ts │ │ │ ├── MagicValues.ts │ │ │ ├── PixiFactory.ts │ │ │ ├── SharedObjectManager.ts │ │ │ ├── Texts.ts │ │ │ └── ViewPortSize.ts │ │ └── views │ │ │ ├── GameOverPopup.ts │ │ │ ├── GameView.ts │ │ │ ├── HomeView.ts │ │ │ ├── InfoPopup.ts │ │ │ ├── IntroView.ts │ │ │ ├── OptionsView.ts │ │ │ ├── PausePopup.ts │ │ │ ├── ResetConfirmPopup.ts │ │ │ ├── StartingPopup.ts │ │ │ └── components │ │ │ ├── BattleFieldComponent.ts │ │ │ ├── CustomButton.ts │ │ │ ├── HUDGameComponent.ts │ │ │ └── LivesComponent.ts │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ └── webpack.config.js └── tetris │ ├── .eslintrc.js │ ├── .mocharc.json │ ├── .vscode │ └── settings.json │ ├── README.md │ ├── assets │ ├── atlas │ │ ├── buttons │ │ │ ├── button_cancel_over.png │ │ │ ├── button_cancel_up.png │ │ │ ├── button_config_over.png │ │ │ ├── button_config_up.png │ │ │ ├── button_confirm_over.png │ │ │ ├── button_confirm_up.png │ │ │ ├── button_home_over.png │ │ │ ├── button_home_up.png │ │ │ ├── button_pause_over.png │ │ │ ├── button_pause_up.png │ │ │ ├── button_reset_over.png │ │ │ ├── button_reset_up.png │ │ │ ├── button_resume_over.png │ │ │ ├── button_resume_up.png │ │ │ ├── button_retry_over.png │ │ │ ├── button_retry_up.png │ │ │ ├── button_start_over.png │ │ │ └── button_start_up.png │ │ ├── displays │ │ │ ├── grid.png │ │ │ ├── logo_setzer.png │ │ │ ├── logo_tetris.png │ │ │ └── next_tile.png │ │ ├── tetris-pixijs-atlas.tps │ │ ├── tiles.png │ │ └── tiles │ │ │ ├── tile_01.png │ │ │ ├── tile_02.png │ │ │ ├── tile_03.png │ │ │ ├── tile_04.png │ │ │ ├── tile_05.png │ │ │ ├── tile_06.png │ │ │ ├── tile_07.png │ │ │ └── tile_08.png │ ├── fonts │ │ ├── SimpleSmalPixel7_.png │ │ ├── SimpleSmallPixel7.fnt │ │ └── SimpleSmallPixel7_0.png │ ├── logo_typescript.png │ ├── tetris-pixijs-atlas.json │ └── tetris-pixijs-atlas.png │ ├── config │ └── rush-project.json │ ├── media │ ├── gif_tetris_ts_demo.gif │ ├── img_cover_tetris_ts.png │ ├── img_game_tetris_ts.png │ └── img_ss_tetris_ts_01.png │ ├── package.json │ ├── src │ ├── Game.ts │ ├── commands │ │ ├── CreateLevelCommand.ts │ │ ├── GameOverCommand.ts │ │ ├── GetNextPieceCommand.ts │ │ └── IncreasePointsCommand.ts │ ├── configs │ │ ├── GameConfig.ts │ │ ├── PalidorConfig.ts │ │ └── ViewsConfig.ts │ ├── events │ │ ├── FlowEvent.ts │ │ └── GameEvent.ts │ ├── index.ts │ ├── managers │ │ └── GameManager.ts │ ├── mediators │ │ ├── GameOverPopupMediator.ts │ │ ├── GameViewMediator.ts │ │ ├── GridComponentMediator.ts │ │ ├── HUDGameComponentMediator.ts │ │ ├── HomeViewMediator.ts │ │ ├── InfoPopupMediator.ts │ │ ├── IntroViewMediator.ts │ │ ├── NextPieceComponentMediator.ts │ │ ├── OptionsViewMediator.ts │ │ ├── PausePopupMediator.ts │ │ ├── ResetConfirmPopupMediator.ts │ │ └── StartingPopupMediator.ts │ ├── models │ │ ├── GameModel.ts │ │ ├── GameStatus.ts │ │ ├── Grid.ts │ │ ├── Tile.ts │ │ ├── TileGroup.ts │ │ └── TileGroupType.ts │ ├── services │ │ ├── FlowService.ts │ │ └── GameService.ts │ ├── utils │ │ ├── AtlasKeys.ts │ │ ├── Colors.ts │ │ ├── GameUtils.ts │ │ ├── MagicValues.ts │ │ ├── PixiFactory.ts │ │ ├── Texts.ts │ │ ├── TileGroupFactory.ts │ │ ├── TilePool.ts │ │ └── ViewPortSize.ts │ └── views │ │ ├── GameOverPopup.ts │ │ ├── GameView.ts │ │ ├── HomeView.ts │ │ ├── InfoPopup.ts │ │ ├── IntroView.ts │ │ ├── OptionsView.ts │ │ ├── PausePopup.ts │ │ ├── ResetConfirmPopup.ts │ │ ├── StartingPopup.ts │ │ └── components │ │ ├── CustomButton.ts │ │ ├── DoubleTextField.ts │ │ ├── GridComponent.ts │ │ ├── HUDGameComponent.ts │ │ ├── NextPieceComponent.ts │ │ └── TileDisplay.ts │ ├── test │ ├── entry.ts │ ├── index.ts │ ├── models │ │ ├── GameModel.test.ts │ │ ├── Grid.test.ts │ │ ├── Tile.test.ts │ │ └── TileGroup.test.ts │ ├── tsconfig.json │ └── utils │ │ └── TileGroupFactory.test.ts │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── webpack.setzer.config.js ├── integration-tests └── macrobot-signalcommandmap │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .mocharc.json │ ├── .vscode │ └── settings.json │ ├── LICENSE │ ├── config │ └── rush-project.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ └── index.ts │ ├── test │ ├── README.md │ ├── entry.ts │ ├── index.ts │ ├── robotlegs │ │ └── bender │ │ │ └── utilities │ │ │ └── macrobot │ │ │ ├── impl │ │ │ ├── dummy.test.ts │ │ │ └── signalsMappedToMacro.test.ts │ │ │ └── support │ │ │ ├── CallbackCustomPayloadCommand.ts │ │ │ ├── CallbackCustomPayloadSequenceCommand.ts │ │ │ ├── CallbackNoParametersCommand.ts │ │ │ ├── CallbackNoParametersSequenceCommand.ts │ │ │ ├── CallbackParametersCommand.ts │ │ │ ├── CallbackParametersSequenceCommand.ts │ │ │ ├── DelaySignal.ts │ │ │ ├── NoParametersSignal.ts │ │ │ ├── ParametersSignal.ts │ │ │ ├── ReportDelayAsyncCommand.ts │ │ │ ├── ReportNoPayloadAsyncCommand.ts │ │ │ ├── TestNestedSequenceBySignalCommand.ts │ │ │ ├── TestParallelByNoPayloadSignalCommand.ts │ │ │ ├── TestParallelBySignalCommand.ts │ │ │ ├── TestSequenceByCustomPayloadSignalCommand.ts │ │ │ ├── TestSequenceByNoPayloadSignalCommand.ts │ │ │ └── TestSequenceBySignalCommand.ts │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── webpack.config.js ├── packages ├── core │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .mocharc.json │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── docs │ │ └── robotlegs │ │ │ ├── bundles │ │ │ ├── mvcs │ │ │ │ └── readme.md │ │ │ └── readme.md │ │ │ ├── extensions │ │ │ ├── commandCenter │ │ │ │ └── readme.md │ │ │ ├── contextView │ │ │ │ └── readme.md │ │ │ ├── directCommandMap │ │ │ │ └── readme.md │ │ │ ├── enhancedLogging │ │ │ │ └── readme.md │ │ │ ├── eventCommandMap │ │ │ │ └── readme.md │ │ │ ├── eventDispatcher │ │ │ │ └── readme.md │ │ │ ├── localEventMap │ │ │ │ └── readme.md │ │ │ ├── matching │ │ │ │ └── readme.md │ │ │ ├── mediatorMap │ │ │ │ └── readme.md │ │ │ ├── modularity │ │ │ │ └── readme.md │ │ │ ├── readme.md │ │ │ ├── viewManager │ │ │ │ └── readme.md │ │ │ ├── viewProcessorMap │ │ │ │ └── readme.md │ │ │ └── vigilance │ │ │ │ └── readme.md │ │ │ ├── framework │ │ │ ├── readme-async.md │ │ │ ├── readme-context.md │ │ │ ├── readme-guards.md │ │ │ ├── readme-hooks.md │ │ │ ├── readme-lifecycle.md │ │ │ ├── readme-logging.md │ │ │ ├── readme-message-dispatcher.md │ │ │ └── readme.md │ │ │ └── readme.md │ ├── karma.conf.js │ ├── media │ │ └── robotlegs.png │ ├── not-ported-extensions │ │ ├── modularity │ │ │ ├── ModularityExtension.ts │ │ │ ├── api │ │ │ │ └── IModuleConnector.ts │ │ │ ├── dsl │ │ │ │ └── IModuleConnectionAction.ts │ │ │ └── impl │ │ │ │ ├── ContextViewBasedExistenceWatcher.ts │ │ │ │ ├── ModularContextEvent.ts │ │ │ │ ├── ModuleConnectionConfigurator.ts │ │ │ │ ├── ModuleConnector.ts │ │ │ │ └── ViewManagerBasedExistenceWatcher.ts │ │ ├── viewProcessorMap │ │ │ ├── ViewProcessorMapExtension.ts │ │ │ ├── api │ │ │ │ ├── IViewProcessorMap.ts │ │ │ │ └── ViewProcessorMapError.ts │ │ │ ├── dsl │ │ │ │ ├── IViewProcessorMapper.ts │ │ │ │ ├── IViewProcessorMapping.ts │ │ │ │ ├── IViewProcessorMappingConfig.ts │ │ │ │ └── IViewProcessorUnmapper.ts │ │ │ ├── impl │ │ │ │ ├── IViewProcessorFactory.ts │ │ │ │ ├── IViewProcessorViewHandler.ts │ │ │ │ ├── NullProcessor.ts │ │ │ │ ├── NullViewProcessorUnmapper.ts │ │ │ │ ├── ViewInjectionProcessor.ts │ │ │ │ ├── ViewProcessorFactory.ts │ │ │ │ ├── ViewProcessorMap.ts │ │ │ │ ├── ViewProcessorMapper.ts │ │ │ │ ├── ViewProcessorMapping.ts │ │ │ │ └── ViewProcessorViewHandler.ts │ │ │ └── utils │ │ │ │ ├── FastPropertyInjector.ts │ │ │ │ ├── MediatorCreator.ts │ │ │ │ └── PropertyValueInjector.ts │ │ └── vigilance │ │ │ ├── VigilanceExtension.ts │ │ │ └── VigilantError.ts │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ ├── bundles │ │ │ └── mvcs │ │ │ │ └── MVCSBundle.ts │ │ │ ├── events │ │ │ ├── api │ │ │ │ ├── IEvent.ts │ │ │ │ └── IEventDispatcher.ts │ │ │ └── impl │ │ │ │ ├── Event.ts │ │ │ │ └── EventDispatcher.ts │ │ │ ├── extensions │ │ │ ├── commandCenter │ │ │ │ ├── api │ │ │ │ │ ├── CommandPayload.ts │ │ │ │ │ ├── ICommand.ts │ │ │ │ │ ├── ICommandExecutor.ts │ │ │ │ │ ├── ICommandMapping.ts │ │ │ │ │ ├── ICommandMappingList.ts │ │ │ │ │ └── ICommandTrigger.ts │ │ │ │ ├── dsl │ │ │ │ │ ├── ICommandConfigurator.ts │ │ │ │ │ ├── ICommandMapper.ts │ │ │ │ │ └── ICommandUnmapper.ts │ │ │ │ └── impl │ │ │ │ │ ├── Command.ts │ │ │ │ │ ├── CommandExecutor.ts │ │ │ │ │ ├── CommandMapper.ts │ │ │ │ │ ├── CommandMapping.ts │ │ │ │ │ ├── CommandMappingList.ts │ │ │ │ │ ├── CommandTriggerMap.ts │ │ │ │ │ └── NullCommandTrigger.ts │ │ │ ├── directCommandMap │ │ │ │ ├── DirectCommandMapExtension.ts │ │ │ │ ├── api │ │ │ │ │ ├── IDirectCommandMap.ts │ │ │ │ │ └── IDirectCommandMapper.ts │ │ │ │ ├── dsl │ │ │ │ │ └── IDirectCommandConfigurator.ts │ │ │ │ └── impl │ │ │ │ │ ├── DirectCommandMap.ts │ │ │ │ │ └── DirectCommandMapper.ts │ │ │ ├── enhancedLogging │ │ │ │ ├── ConsoleLoggingExtension.ts │ │ │ │ ├── InjectableLoggerExtension.ts │ │ │ │ └── impl │ │ │ │ │ ├── ConsoleLogTarget.ts │ │ │ │ │ └── LogMessageParser.ts │ │ │ ├── eventCommandMap │ │ │ │ ├── EventCommandMapExtension.ts │ │ │ │ ├── api │ │ │ │ │ └── IEventCommandMap.ts │ │ │ │ └── impl │ │ │ │ │ ├── EventCommandMap.ts │ │ │ │ │ └── EventCommandTrigger.ts │ │ │ ├── eventDispatcher │ │ │ │ ├── EventDispatcherExtension.ts │ │ │ │ └── impl │ │ │ │ │ ├── EventRelay.ts │ │ │ │ │ └── LifecycleEventRelay.ts │ │ │ ├── localEventMap │ │ │ │ ├── LocalEventMapExtension.ts │ │ │ │ ├── api │ │ │ │ │ └── IEventMap.ts │ │ │ │ └── impl │ │ │ │ │ ├── DomEventMapConfig.ts │ │ │ │ │ ├── EventMap.ts │ │ │ │ │ └── EventMapConfig.ts │ │ │ └── matching │ │ │ │ ├── IClass.ts │ │ │ │ ├── IType.ts │ │ │ │ ├── ITypeFilter.ts │ │ │ │ ├── ITypeMatcher.ts │ │ │ │ ├── ITypeMatcherFactory.ts │ │ │ │ ├── TypeFilter.ts │ │ │ │ ├── TypeMatcher.ts │ │ │ │ ├── TypeMatcherError.ts │ │ │ │ ├── instanceOfType.ts │ │ │ │ └── isInstanceOfType.ts │ │ │ └── framework │ │ │ ├── api │ │ │ ├── IBundle.ts │ │ │ ├── IConfig.ts │ │ │ ├── IContext.ts │ │ │ ├── IExtension.ts │ │ │ ├── IGuard.ts │ │ │ ├── IHook.ts │ │ │ ├── IInjector.ts │ │ │ ├── ILifecycle.ts │ │ │ ├── ILogTarget.ts │ │ │ ├── ILogger.ts │ │ │ ├── IMatcher.ts │ │ │ ├── LifecycleError.ts │ │ │ ├── LifecycleEvent.ts │ │ │ ├── LifecycleState.ts │ │ │ ├── LogLevel.ts │ │ │ └── PinEvent.ts │ │ │ └── impl │ │ │ ├── ClassMatcher.ts │ │ │ ├── ConfigManager.ts │ │ │ ├── Context.ts │ │ │ ├── ExtensionInstaller.ts │ │ │ ├── Lifecycle.ts │ │ │ ├── LifecycleTransition.ts │ │ │ ├── LogManager.ts │ │ │ ├── Logger.ts │ │ │ ├── MessageDispatcher.ts │ │ │ ├── MessageRunner.ts │ │ │ ├── ObjectHandler.ts │ │ │ ├── ObjectMatcher.ts │ │ │ ├── ObjectProcessor.ts │ │ │ ├── Pin.ts │ │ │ ├── RobotlegsInjector.ts │ │ │ ├── UID.ts │ │ │ ├── applyHooks.ts │ │ │ ├── getQualifiedClassName.ts │ │ │ ├── guardsApprove.ts │ │ │ ├── instantiateUnmapped.ts │ │ │ └── safelyCallBack.ts │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ ├── events │ │ │ │ └── impl │ │ │ │ │ └── event.test.ts │ │ │ │ ├── extensions │ │ │ │ ├── commandCenter │ │ │ │ │ ├── impl │ │ │ │ │ │ ├── commandExecutor.test.ts │ │ │ │ │ │ ├── commandMapper.test.ts │ │ │ │ │ │ ├── commandMapping.test.ts │ │ │ │ │ │ ├── commandMappingList.test.ts │ │ │ │ │ │ ├── commandPayload.test.ts │ │ │ │ │ │ └── commandTriggerMap.test.ts │ │ │ │ │ └── support │ │ │ │ │ │ ├── CallbackCommand.ts │ │ │ │ │ │ ├── CallbackCommand2.ts │ │ │ │ │ │ ├── ClassReportingCallbackCommand.ts │ │ │ │ │ │ ├── ClassReportingCallbackCommand2.ts │ │ │ │ │ │ ├── ClassReportingCallbackGuard.ts │ │ │ │ │ │ ├── ClassReportingCallbackGuard2.ts │ │ │ │ │ │ ├── ClassReportingCallbackHook.ts │ │ │ │ │ │ ├── MessageReturningCommand.ts │ │ │ │ │ │ ├── MethodParametersCommand.ts │ │ │ │ │ │ ├── NullCommand.ts │ │ │ │ │ │ ├── NullCommand2.ts │ │ │ │ │ │ ├── NullCommand3.ts │ │ │ │ │ │ ├── PayloadInjectionPointsCommand.ts │ │ │ │ │ │ ├── PayloadInjectionPointsGuard.ts │ │ │ │ │ │ ├── PayloadInjectionPointsHook.ts │ │ │ │ │ │ ├── PriorityMapping.ts │ │ │ │ │ │ ├── SelfReportingCallbackCommand.ts │ │ │ │ │ │ └── SelfReportingCallbackHook.ts │ │ │ │ ├── directCommandMap │ │ │ │ │ ├── directCommandMapExtension.test.ts │ │ │ │ │ ├── impl │ │ │ │ │ │ ├── directCommandMap.test.ts │ │ │ │ │ │ └── directCommandMapper.test.ts │ │ │ │ │ └── support │ │ │ │ │ │ └── DirectCommandMapReportingCommand.ts │ │ │ │ ├── enhancedLogging │ │ │ │ │ ├── consoleLoggingExtension.test.ts │ │ │ │ │ ├── impl │ │ │ │ │ │ ├── consoleLogTarget.test.ts │ │ │ │ │ │ └── logMessageParser.test.ts │ │ │ │ │ └── injectableLoggerExtension.test.ts │ │ │ │ ├── eventCommandMap │ │ │ │ │ ├── eventCommandMapExtension.test.ts │ │ │ │ │ ├── impl │ │ │ │ │ │ ├── eventCommandMap.test.ts │ │ │ │ │ │ └── eventCommandTrigger.test.ts │ │ │ │ │ └── support │ │ │ │ │ │ ├── CascadingCommand.ts │ │ │ │ │ │ ├── CommandMappingCommand.ts │ │ │ │ │ │ ├── CommandUnmappingCommand.ts │ │ │ │ │ │ ├── CustomEvent1.ts │ │ │ │ │ │ ├── CustomEvent1CallbackCommand.ts │ │ │ │ │ │ ├── CustomEvent2.ts │ │ │ │ │ │ ├── EventCallbackCommand.ts │ │ │ │ │ │ ├── EventInjectedCallbackCommand.ts │ │ │ │ │ │ ├── EventInjectedCallbackGuard.ts │ │ │ │ │ │ ├── EventParametersCommand.ts │ │ │ │ │ │ ├── SupportEvent.ts │ │ │ │ │ │ └── SupportEventTriggeredSelfReportingCallbackCommand.ts │ │ │ │ ├── eventDispatcher │ │ │ │ │ ├── eventDispatcherExtension.test.ts │ │ │ │ │ └── impl │ │ │ │ │ │ ├── eventRelay.test.ts │ │ │ │ │ │ └── lifecycleEventRelay.test.ts │ │ │ │ ├── localEventMap │ │ │ │ │ ├── impl │ │ │ │ │ │ ├── domEventMap.test.ts │ │ │ │ │ │ ├── domEventMapConfig.test.ts │ │ │ │ │ │ ├── eventMap.test.ts │ │ │ │ │ │ └── eventMapConfig.test.ts │ │ │ │ │ ├── localEventMapExtension.test.ts │ │ │ │ │ └── support │ │ │ │ │ │ ├── CustomEvent.ts │ │ │ │ │ │ ├── CustomEvent2.ts │ │ │ │ │ │ └── MockEventMap.ts │ │ │ │ └── matching │ │ │ │ │ ├── instanceOfType.test.ts │ │ │ │ │ ├── support │ │ │ │ │ ├── BaseType.ts │ │ │ │ │ ├── ExtendedType.ts │ │ │ │ │ └── TypeCollection.ts │ │ │ │ │ ├── typeFilter.test.ts │ │ │ │ │ ├── typeMatcher.test.ts │ │ │ │ │ └── typeMatcherError.test.ts │ │ │ │ └── framework │ │ │ │ └── impl │ │ │ │ ├── applyHooks.test.ts │ │ │ │ ├── configManager.test.ts │ │ │ │ ├── configSupport │ │ │ │ └── TypedConfig.ts │ │ │ │ ├── context.test.ts │ │ │ │ ├── contextSupport │ │ │ │ ├── CallbackConfig.ts │ │ │ │ └── CallbackExtension.ts │ │ │ │ ├── extensionInstaller.test.ts │ │ │ │ ├── guardSupport │ │ │ │ ├── BossGuard.ts │ │ │ │ ├── GrumpyGuard.ts │ │ │ │ ├── HappyGuard.ts │ │ │ │ └── JustTheMiddleManGuard.ts │ │ │ │ ├── guardsApprove.test.ts │ │ │ │ ├── hookSupport │ │ │ │ └── CallbackHook.ts │ │ │ │ ├── lifecycle.test.ts │ │ │ │ ├── lifecycleTransition.test.ts │ │ │ │ ├── logManager.test.ts │ │ │ │ ├── logger.test.ts │ │ │ │ ├── loggingSupport │ │ │ │ ├── CallbackLogTarget.ts │ │ │ │ └── LogParams.ts │ │ │ │ ├── messageDispatcher.test.ts │ │ │ │ ├── objectProcessor.test.ts │ │ │ │ ├── objectSupport │ │ │ │ └── TestObject.ts │ │ │ │ ├── pin.test.ts │ │ │ │ ├── robotlegsInjector.test.ts │ │ │ │ ├── safelyCallBack.test.ts │ │ │ │ └── safelyCallBackSupport │ │ │ │ ├── createAsyncHandler.ts │ │ │ │ ├── createCallbackHandlerThatErrors.ts │ │ │ │ └── createHandler.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── webpack.config.js ├── createjs │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── deploy-example.sh │ ├── example │ │ ├── Game.ts │ │ ├── config │ │ │ └── MyConfig.ts │ │ ├── index.ts │ │ ├── mediator │ │ │ ├── RobotlegsMediator.ts │ │ │ └── SmileyMediator.ts │ │ ├── tsconfig.json │ │ └── view │ │ │ ├── RobotlegsView.ts │ │ │ └── SmileyView.ts │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ ├── bundles │ │ │ └── createjs │ │ │ │ └── CreateJSBundle.ts │ │ │ └── extensions │ │ │ ├── contextView │ │ │ ├── ContextViewExtension.ts │ │ │ ├── api │ │ │ │ └── IContextView.ts │ │ │ ├── createjsPatch │ │ │ │ └── createjs-patch.ts │ │ │ └── impl │ │ │ │ ├── ContextView.ts │ │ │ │ └── ContextViewListenerConfig.ts │ │ │ ├── mediatorMap │ │ │ ├── MediatorMapExtension.ts │ │ │ ├── api │ │ │ │ ├── IMediator.ts │ │ │ │ ├── IMediatorMap.ts │ │ │ │ └── IMediatorMapping.ts │ │ │ ├── dsl │ │ │ │ ├── IMediatorConfigurator.ts │ │ │ │ ├── IMediatorMapper.ts │ │ │ │ └── IMediatorUnmapper.ts │ │ │ └── impl │ │ │ │ ├── ConvertToEventDispatcher.ts │ │ │ │ ├── Mediator.ts │ │ │ │ ├── MediatorFactory.ts │ │ │ │ ├── MediatorManager.ts │ │ │ │ ├── MediatorMap.ts │ │ │ │ ├── MediatorMapper.ts │ │ │ │ ├── MediatorMapping.ts │ │ │ │ ├── MediatorViewHandler.ts │ │ │ │ └── NullMediatorUnmapper.ts │ │ │ └── viewManager │ │ │ ├── ManualStageObserverExtension.ts │ │ │ ├── StageCrawlerExtension.ts │ │ │ ├── StageObserverExtension.ts │ │ │ ├── ViewManagerExtension.ts │ │ │ ├── api │ │ │ ├── IViewHandler.ts │ │ │ └── IViewManager.ts │ │ │ └── impl │ │ │ ├── ConfigureViewEvent.ts │ │ │ ├── ContainerBinding.ts │ │ │ ├── ContainerBindingEvent.ts │ │ │ ├── ContainerRegistry.ts │ │ │ ├── ContainerRegistryEvent.ts │ │ │ ├── ManualStageObserver.ts │ │ │ ├── StageCrawler.ts │ │ │ ├── StageObserver.ts │ │ │ ├── ViewManager.ts │ │ │ └── ViewManagerEvent.ts │ ├── static │ │ ├── images │ │ │ ├── loading.gif │ │ │ ├── logo_createjs.svg │ │ │ └── robotlegs.png │ │ ├── index-template.html │ │ ├── manifest.json │ │ ├── scripts │ │ │ └── cache-polyfill.js │ │ ├── service-worker.js │ │ └── styles │ │ │ ├── example.css │ │ │ └── main.css │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ ├── bundles │ │ │ │ └── createjs │ │ │ │ │ └── createjsBundle.test.ts │ │ │ │ └── extensions │ │ │ │ ├── contextView │ │ │ │ ├── contextViewExtension.test.ts │ │ │ │ ├── createjsPatch │ │ │ │ │ └── createjsPatch.test.ts │ │ │ │ ├── impl │ │ │ │ │ ├── contextView.test.ts │ │ │ │ │ └── contextViewListenerConfig.test.ts │ │ │ │ └── support │ │ │ │ │ ├── CallbackLogTarget.ts │ │ │ │ │ └── LogParams.ts │ │ │ │ ├── mediatorMap │ │ │ │ ├── impl │ │ │ │ │ ├── mediatorFactory.test.ts │ │ │ │ │ ├── mediatorManager.test.ts │ │ │ │ │ ├── mediatorMap.test.ts │ │ │ │ │ ├── mediatorMapPreload.test.ts │ │ │ │ │ ├── mediatorMapper.test.ts │ │ │ │ │ └── mediatorViewHandler.test.ts │ │ │ │ ├── mediatorMapExtension.test.ts │ │ │ │ └── support │ │ │ │ │ ├── Alpha50PercentHook.ts │ │ │ │ │ ├── CallbackHook.ts │ │ │ │ │ ├── CallbackMediator.ts │ │ │ │ │ ├── EmptyMediator.ts │ │ │ │ │ ├── ExampleDisplayObjectMediator.ts │ │ │ │ │ ├── ExampleMediator.ts │ │ │ │ │ ├── ExampleMediator2.ts │ │ │ │ │ ├── ExampleView.ts │ │ │ │ │ ├── GrumpyGuard.ts │ │ │ │ │ ├── HappyGuard.ts │ │ │ │ │ ├── HookWithMediatorAndViewInjectionReportFunction.ts │ │ │ │ │ ├── InjectedMediator.ts │ │ │ │ │ ├── LifecycleReportingMediator.ts │ │ │ │ │ ├── MediatorHook.ts │ │ │ │ │ ├── MediatorWatcher.ts │ │ │ │ │ ├── NotAView.ts │ │ │ │ │ ├── NotAViewMediator.ts │ │ │ │ │ ├── NullMediator.ts │ │ │ │ │ ├── NullMediator2.ts │ │ │ │ │ ├── OnlyIfViewHasChildrenGuard.ts │ │ │ │ │ ├── RectangleMediator.ts │ │ │ │ │ ├── ViewInjectedAsRequestedMediator.ts │ │ │ │ │ └── ViewInjectedMediator.ts │ │ │ │ └── viewManager │ │ │ │ ├── impl │ │ │ │ ├── configureViewEvent.test.ts │ │ │ │ ├── containerBinding.test.ts │ │ │ │ ├── containerBindingEvent.test.ts │ │ │ │ ├── containerRegistry.test.ts │ │ │ │ ├── containerRegistryEvent.test.ts │ │ │ │ ├── manualStageObserver.test.ts │ │ │ │ ├── stageCrawler.test.ts │ │ │ │ ├── stageObserver.test.ts │ │ │ │ ├── viewManager.test.ts │ │ │ │ └── viewManagerEvent.test.ts │ │ │ │ ├── manualStageObserverExtension.test.ts │ │ │ │ ├── stageCrawlerExtension.test.ts │ │ │ │ ├── stageObserverExtension.test.ts │ │ │ │ ├── support │ │ │ │ ├── CallbackViewHandler.ts │ │ │ │ └── TreeContainer.ts │ │ │ │ └── viewManagerExtension.test.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.example.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── webpack.config.js │ └── webpack.example.config.js ├── eventemitter3 │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .mocharc.json │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ └── extensions │ │ │ └── localEventEmitterMap │ │ │ ├── LocalEventEmitterMapExtension.ts │ │ │ ├── api │ │ │ └── IEventEmitterMap.ts │ │ │ └── impl │ │ │ ├── EventEmitterMap.ts │ │ │ └── EventEmitterMapConfig.ts │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ └── extensions │ │ │ │ └── localEventEmitterMap │ │ │ │ ├── impl │ │ │ │ ├── eventEmitterMap.test.ts │ │ │ │ └── eventEmitterMapConfig.test.ts │ │ │ │ └── localEventEmitterMapExtension.test.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── webpack.config.js ├── macrobot │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .mocharc.json │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ └── utilities │ │ │ └── macrobot │ │ │ ├── api │ │ │ ├── IAsyncCommand.ts │ │ │ ├── IMacro.ts │ │ │ ├── ISubCommandMapping.ts │ │ │ └── ISubCommandPayload.ts │ │ │ ├── dsl │ │ │ ├── ISubCommandConfigurator.ts │ │ │ ├── ISubCommandMapper.ts │ │ │ ├── ISubCommandMappingList.ts │ │ │ └── ISubCommandUnMapper.ts │ │ │ └── impl │ │ │ ├── AbstractMacro.ts │ │ │ ├── AsyncCommand.ts │ │ │ ├── ParallelMacro.ts │ │ │ ├── SequenceMacro.ts │ │ │ ├── SubCommandMapping.ts │ │ │ ├── SubCommandMappingList.ts │ │ │ └── SubCommandPayload.ts │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ └── utilities │ │ │ │ └── macrobot │ │ │ │ ├── impl │ │ │ │ ├── parallelMacro.test.ts │ │ │ │ ├── sequenceMacro.test.ts │ │ │ │ ├── subCommandMappingList.test.ts │ │ │ │ └── subCommandPayload.test.ts │ │ │ │ └── support │ │ │ │ ├── GrumpyGuard.ts │ │ │ │ ├── HappyGuard.ts │ │ │ │ ├── NullCommand.ts │ │ │ │ ├── NullCommand2.ts │ │ │ │ ├── Report1Command.ts │ │ │ │ ├── Report2Command.ts │ │ │ │ ├── Report3Command.ts │ │ │ │ ├── ReportCommandHook.ts │ │ │ │ ├── ReportDelayAsyncCommand.ts │ │ │ │ ├── ReportEventCommand.ts │ │ │ │ ├── ReportEventWithDelayCommand.ts │ │ │ │ ├── ReportHook.ts │ │ │ │ ├── ReportMaxNumberCommand.ts │ │ │ │ ├── ReportNoPayloadAsyncCommand.ts │ │ │ │ ├── ReportPayloadGuard.ts │ │ │ │ ├── ReportPayloadHook.ts │ │ │ │ ├── ReportStringCommand.ts │ │ │ │ ├── TestAddAndRemoveParallelCommand.ts │ │ │ │ ├── TestAddAndRemoveSequenceCommand.ts │ │ │ │ ├── TestAtomicSequenceWithAsyncAndCompleteCallbackCommand.ts │ │ │ │ ├── TestAtomicSequenceWithAsyncCommand.ts │ │ │ │ ├── TestEmptyParallelCommand.ts │ │ │ │ ├── TestNotAtomicSequenceWithAsyncCommand.ts │ │ │ │ ├── TestParallelCommand.ts │ │ │ │ ├── TestParallelWithCompleteCallbackCommand.ts │ │ │ │ ├── TestParallelWithPayloadCommand.ts │ │ │ │ ├── TestSequenceAnChangeAtomicLaterCommand.ts │ │ │ │ ├── TestSequenceCommand.ts │ │ │ │ ├── TestSequenceWithAsyncAndCompleteCallbackCommand.ts │ │ │ │ ├── TestSequenceWithAsyncCommand.ts │ │ │ │ ├── TestSequenceWithCompleteCallbackCommand.ts │ │ │ │ ├── TestSequenceWithGrumpyGuardsCommand.ts │ │ │ │ ├── TestSequenceWithHappyGuardsCommand.ts │ │ │ │ ├── TestSequenceWithHooksCommand.ts │ │ │ │ ├── TestSequenceWithInjectedHooksCommand.ts │ │ │ │ ├── TestSequenceWithNamedPayloadsCommand.ts │ │ │ │ ├── TestSequenceWithPayloadCommand.ts │ │ │ │ ├── TestSequenceWithPayloadInjectedIntoGuardsCommand.ts │ │ │ │ ├── TestSequenceWithPayloadInjectedIntoHooksCommand.ts │ │ │ │ └── TestSequenceWithStringPayloadCommand.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── webpack.config.js ├── openfl │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── deploy-example.sh │ ├── example │ │ ├── Game.ts │ │ ├── config │ │ │ └── MyConfig.ts │ │ ├── index.ts │ │ ├── mediator │ │ │ ├── RobotlegsMediator.ts │ │ │ └── SmileyMediator.ts │ │ ├── tsconfig.json │ │ └── view │ │ │ ├── GameView.ts │ │ │ ├── RobotlegsView.ts │ │ │ └── SmileyView.ts │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ ├── bundles │ │ │ └── openfl │ │ │ │ └── OpenFLBundle.ts │ │ │ └── extensions │ │ │ ├── contextView │ │ │ ├── ContextViewExtension.ts │ │ │ ├── api │ │ │ │ └── IContextView.ts │ │ │ └── impl │ │ │ │ ├── ContextView.ts │ │ │ │ └── ContextViewListenerConfig.ts │ │ │ ├── mediatorMap │ │ │ ├── MediatorMapExtension.ts │ │ │ ├── api │ │ │ │ ├── IMediator.ts │ │ │ │ ├── IMediatorMap.ts │ │ │ │ └── IMediatorMapping.ts │ │ │ ├── dsl │ │ │ │ ├── IMediatorConfigurator.ts │ │ │ │ ├── IMediatorMapper.ts │ │ │ │ └── IMediatorUnmapper.ts │ │ │ └── impl │ │ │ │ ├── ConvertToEventDispatcher.ts │ │ │ │ ├── Mediator.ts │ │ │ │ ├── MediatorFactory.ts │ │ │ │ ├── MediatorManager.ts │ │ │ │ ├── MediatorMap.ts │ │ │ │ ├── MediatorMapper.ts │ │ │ │ ├── MediatorMapping.ts │ │ │ │ ├── MediatorViewHandler.ts │ │ │ │ └── NullMediatorUnmapper.ts │ │ │ └── viewManager │ │ │ ├── ManualStageObserverExtension.ts │ │ │ ├── StageCrawlerExtension.ts │ │ │ ├── StageObserverExtension.ts │ │ │ ├── ViewManagerExtension.ts │ │ │ ├── api │ │ │ ├── IViewHandler.ts │ │ │ └── IViewManager.ts │ │ │ └── impl │ │ │ ├── ConfigureViewEvent.ts │ │ │ ├── ContainerBinding.ts │ │ │ ├── ContainerBindingEvent.ts │ │ │ ├── ContainerRegistry.ts │ │ │ ├── ContainerRegistryEvent.ts │ │ │ ├── ManualStageObserver.ts │ │ │ ├── StageCrawler.ts │ │ │ ├── StageObserver.ts │ │ │ ├── ViewManager.ts │ │ │ └── ViewManagerEvent.ts │ ├── static │ │ ├── images │ │ │ ├── loading.gif │ │ │ ├── openfl.png │ │ │ └── robotlegs.png │ │ ├── index-template.html │ │ ├── manifest.json │ │ ├── scripts │ │ │ └── cache-polyfill.js │ │ ├── service-worker.js │ │ └── styles │ │ │ ├── example.css │ │ │ └── main.css │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ ├── bundles │ │ │ │ └── openfl │ │ │ │ │ └── openflBundle.test.ts │ │ │ │ └── extensions │ │ │ │ ├── contextView │ │ │ │ ├── impl │ │ │ │ │ ├── contextView.test.ts │ │ │ │ │ ├── contextViewListenerConfig.test.ts │ │ │ │ │ └── displayList.test.ts │ │ │ │ └── support │ │ │ │ │ ├── CallbackLogTarget.ts │ │ │ │ │ └── LogParams.ts │ │ │ │ ├── mediatorMap │ │ │ │ ├── impl │ │ │ │ │ ├── mediatorFactory.test.ts │ │ │ │ │ ├── mediatorManager.test.ts │ │ │ │ │ ├── mediatorMap.test.ts │ │ │ │ │ ├── mediatorMapPreload.test.ts │ │ │ │ │ ├── mediatorMapper.test.ts │ │ │ │ │ └── mediatorViewHandler.test.ts │ │ │ │ ├── mediatorMapExtension.test.ts │ │ │ │ └── support │ │ │ │ │ ├── Alpha50PercentHook.ts │ │ │ │ │ ├── CallbackHook.ts │ │ │ │ │ ├── CallbackMediator.ts │ │ │ │ │ ├── EmptyMediator.ts │ │ │ │ │ ├── ExampleDisplayObjectMediator.ts │ │ │ │ │ ├── ExampleMediator.ts │ │ │ │ │ ├── ExampleMediator2.ts │ │ │ │ │ ├── ExampleView.ts │ │ │ │ │ ├── GrumpyGuard.ts │ │ │ │ │ ├── HappyGuard.ts │ │ │ │ │ ├── HookWithMediatorAndViewInjectionReportFunction.ts │ │ │ │ │ ├── InjectedMediator.ts │ │ │ │ │ ├── LifecycleReportingMediator.ts │ │ │ │ │ ├── MediatorHook.ts │ │ │ │ │ ├── MediatorWatcher.ts │ │ │ │ │ ├── NotAView.ts │ │ │ │ │ ├── NotAViewMediator.ts │ │ │ │ │ ├── NullMediator.ts │ │ │ │ │ ├── NullMediator2.ts │ │ │ │ │ ├── OnlyIfViewHasChildrenGuard.ts │ │ │ │ │ ├── RectangleMediator.ts │ │ │ │ │ ├── ViewInjectedAsRequestedMediator.ts │ │ │ │ │ └── ViewInjectedMediator.ts │ │ │ │ └── viewManager │ │ │ │ ├── impl │ │ │ │ ├── configureViewEvent.test.ts │ │ │ │ ├── containerBinding.test.ts │ │ │ │ ├── containerBindingEvent.test.ts │ │ │ │ ├── containerRegistry.test.ts │ │ │ │ ├── containerRegistryEvent.test.ts │ │ │ │ ├── stageCrawler.test.ts │ │ │ │ ├── stageObserver.test.ts │ │ │ │ ├── viewManager.test.ts │ │ │ │ └── viewManagerEvent.test.ts │ │ │ │ ├── manualStageObserverExtension.test.ts │ │ │ │ ├── stageCrawlerExtension.test.ts │ │ │ │ ├── stageObserverExtension.test.ts │ │ │ │ ├── support │ │ │ │ ├── CallbackViewHandler.ts │ │ │ │ └── TreeContainer.ts │ │ │ │ └── viewManagerExtension.test.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.example.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── webpack.config.js │ └── webpack.example.config.js ├── phaser-ce-signalcommandmap │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ └── extensions │ │ │ └── signalCommandMap │ │ │ ├── SignalCommandMapExtension.ts │ │ │ ├── api │ │ │ └── ISignalCommandMap.ts │ │ │ └── impl │ │ │ ├── SignalCommandMap.ts │ │ │ └── SignalCommandTrigger.ts │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ └── extensions │ │ │ │ └── signalCommandMap │ │ │ │ ├── signalCommandMapExtension.test.ts │ │ │ │ └── support │ │ │ │ ├── Data.ts │ │ │ │ ├── RelayCommand.ts │ │ │ │ ├── RelaySignal.ts │ │ │ │ ├── TargetCommand.ts │ │ │ │ └── TargetSignal.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── webpack.config.js ├── phaser-ce │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── example │ │ ├── Game.ts │ │ ├── config │ │ │ ├── GameConfig.ts │ │ │ └── StateMediatorConfig.ts │ │ ├── constants │ │ │ └── StateKey.ts │ │ ├── index.ts │ │ ├── mediators │ │ │ ├── BootMediator.ts │ │ │ ├── GameOverMediator.ts │ │ │ ├── GameTitleMediator.ts │ │ │ ├── MainMediator.ts │ │ │ └── PreloadMediator.ts │ │ ├── models │ │ │ └── GameModel.ts │ │ ├── states │ │ │ ├── BaseState.ts │ │ │ ├── Boot.ts │ │ │ ├── GameOver.ts │ │ │ ├── GameTitle.ts │ │ │ ├── Main.ts │ │ │ └── Preload.ts │ │ └── tsconfig.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ ├── bundles │ │ │ └── phaser │ │ │ │ └── PhaserBundle.ts │ │ │ └── extensions │ │ │ ├── contextStateManager │ │ │ ├── ContextStateManagerExtension.ts │ │ │ ├── api │ │ │ │ └── IContextStateManager.ts │ │ │ └── impl │ │ │ │ ├── ContextStateManager.ts │ │ │ │ └── ContextStateManagerListenerConfig.ts │ │ │ ├── stateManager │ │ │ ├── StateManagerExtension.ts │ │ │ ├── StateManagerObserverExtension.ts │ │ │ ├── api │ │ │ │ ├── IStateHandler.ts │ │ │ │ └── IStateManager.ts │ │ │ └── impl │ │ │ │ ├── ConfigureStateEvent.ts │ │ │ │ ├── StateManager.ts │ │ │ │ ├── StateManagerBinding.ts │ │ │ │ ├── StateManagerBindingEvent.ts │ │ │ │ ├── StateManagerEvent.ts │ │ │ │ ├── StateManagerObserver.ts │ │ │ │ ├── StateRegistry.ts │ │ │ │ └── StateRegistryEvent.ts │ │ │ └── stateMediatorMap │ │ │ ├── StateMediatorMapExtension.ts │ │ │ ├── api │ │ │ ├── IStateMediator.ts │ │ │ ├── IStateMediatorMap.ts │ │ │ └── IStateMediatorMapping.ts │ │ │ ├── dsl │ │ │ ├── IStateMediatorConfigurator.ts │ │ │ ├── IStateMediatorMapper.ts │ │ │ └── IStateMediatorUnmapper.ts │ │ │ └── impl │ │ │ ├── NullStateMediatorUnmapper.ts │ │ │ ├── StateMediator.ts │ │ │ ├── StateMediatorFactory.ts │ │ │ ├── StateMediatorManager.ts │ │ │ ├── StateMediatorMap.ts │ │ │ ├── StateMediatorMapper.ts │ │ │ ├── StateMediatorMapping.ts │ │ │ └── StateMediatorStateHandler.ts │ ├── static │ │ ├── assets │ │ │ └── player.png │ │ ├── index-template.html │ │ ├── manifest.json │ │ ├── scripts │ │ │ └── cache-polyfill.js │ │ ├── service-worker.js │ │ └── styles │ │ │ └── main.css │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ ├── bundles │ │ │ │ └── phaser │ │ │ │ │ └── phaserBundle.test.ts │ │ │ │ └── extensions │ │ │ │ ├── contextStateManager │ │ │ │ ├── contextStateManagerExtension.test.ts │ │ │ │ ├── impl │ │ │ │ │ ├── contextStateManager.test.ts │ │ │ │ │ └── contextStateManagerListenerConfig.test.ts │ │ │ │ └── support │ │ │ │ │ ├── CallbackLogTarget.ts │ │ │ │ │ └── LogParams.ts │ │ │ │ └── stateManager │ │ │ │ ├── impl │ │ │ │ ├── configureStateEvent.test.ts │ │ │ │ ├── stateManagerBindingEvent.test.ts │ │ │ │ └── stateManagerEvent.test.ts │ │ │ │ └── support │ │ │ │ └── CallbackStateHandler.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.example.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── webpack.config.js │ └── webpack.example.config.js ├── phaser │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── deploy-example.sh │ ├── example │ │ ├── Game.ts │ │ ├── commands │ │ │ ├── AddRobotlegsScoreCommand.ts │ │ │ └── MainCommand.ts │ │ ├── config │ │ │ ├── GameConfig.ts │ │ │ └── SceneMediatorConfig.ts │ │ ├── constants │ │ │ └── SceneKey.ts │ │ ├── events │ │ │ └── MainEvent.ts │ │ ├── index.ts │ │ ├── mediators │ │ │ ├── BootMediator.ts │ │ │ ├── MainMediator.ts │ │ │ ├── PreloadMediator.ts │ │ │ └── ScoreViewMediator.ts │ │ ├── models │ │ │ └── GameModel.ts │ │ ├── scenes │ │ │ ├── BaseScene.ts │ │ │ ├── Boot.ts │ │ │ ├── Main.ts │ │ │ └── Preload.ts │ │ ├── tsconfig.json │ │ └── views │ │ │ └── ScoreView.ts │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ ├── bundles │ │ │ └── phaser │ │ │ │ └── PhaserBundle.ts │ │ │ └── extensions │ │ │ ├── contextSceneManager │ │ │ ├── ContextSceneManagerExtension.ts │ │ │ ├── api │ │ │ │ └── IContextSceneManager.ts │ │ │ └── impl │ │ │ │ ├── ContextSceneManager.ts │ │ │ │ └── ContextSceneManagerListenerConfig.ts │ │ │ ├── localEventEmitterMap │ │ │ ├── LocalEventEmitterMapExtension.ts │ │ │ ├── api │ │ │ │ └── IEventEmitterMap.ts │ │ │ └── impl │ │ │ │ ├── EventEmitterMap.ts │ │ │ │ └── EventEmitterMapConfig.ts │ │ │ ├── mediatorMap │ │ │ ├── SceneMediatorMapExtension.ts │ │ │ ├── ViewMediatorMapExtension.ts │ │ │ ├── api │ │ │ │ ├── IMediator.ts │ │ │ │ ├── IMediatorManager.ts │ │ │ │ ├── IMediatorMapping.ts │ │ │ │ ├── ISceneMediatorMap.ts │ │ │ │ └── IViewMediatorMap.ts │ │ │ ├── dsl │ │ │ │ ├── IMediatorConfigurator.ts │ │ │ │ ├── IMediatorMapper.ts │ │ │ │ └── IMediatorUnmapper.ts │ │ │ └── impl │ │ │ │ ├── AbstractMediator.ts │ │ │ │ ├── AbstractMediatorFactory.ts │ │ │ │ ├── AbstractMediatorHandler.ts │ │ │ │ ├── MediatorMapper.ts │ │ │ │ ├── MediatorMapping.ts │ │ │ │ ├── NullMediatorUnmapper.ts │ │ │ │ ├── SceneMediator.ts │ │ │ │ ├── SceneMediatorFactory.ts │ │ │ │ ├── SceneMediatorHandler.ts │ │ │ │ ├── SceneMediatorManager.ts │ │ │ │ ├── SceneMediatorMap.ts │ │ │ │ ├── ViewMediator.ts │ │ │ │ ├── ViewMediatorFactory.ts │ │ │ │ ├── ViewMediatorHandler.ts │ │ │ │ ├── ViewMediatorManager.ts │ │ │ │ └── ViewMediatorMap.ts │ │ │ └── viewManager │ │ │ ├── SceneManagerExtension.ts │ │ │ ├── SceneManagerObserverExtension.ts │ │ │ ├── api │ │ │ ├── ISceneHandler.ts │ │ │ ├── ISceneManager.ts │ │ │ └── IViewHandler.ts │ │ │ └── impl │ │ │ ├── ConfigureSceneEvent.ts │ │ │ ├── ConfigureViewEvent.ts │ │ │ ├── SceneManager.ts │ │ │ ├── SceneManagerBinding.ts │ │ │ ├── SceneManagerBindingEvent.ts │ │ │ ├── SceneManagerEvent.ts │ │ │ ├── SceneManagerObserver.ts │ │ │ ├── SceneRegistry.ts │ │ │ └── SceneRegistryEvent.ts │ ├── static │ │ ├── images │ │ │ ├── koreez.jpg │ │ │ ├── loading.gif │ │ │ ├── phaser-logo.png │ │ │ └── robotlegs.png │ │ ├── index-template.html │ │ ├── manifest.json │ │ ├── scripts │ │ │ └── cache-polyfill.js │ │ ├── service-worker.js │ │ └── styles │ │ │ ├── example.css │ │ │ └── main.css │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ ├── bundles │ │ │ │ └── phaser │ │ │ │ │ └── phaserBundle.test.ts │ │ │ │ └── extensions │ │ │ │ ├── contextStateManager │ │ │ │ ├── contextSceneManagerExtension.test.ts │ │ │ │ ├── impl │ │ │ │ │ ├── contextSceneManager.test.ts │ │ │ │ │ └── contextSceneManagerListenerConfig.test.ts │ │ │ │ └── support │ │ │ │ │ ├── CallbackLogTarget.ts │ │ │ │ │ └── LogParams.ts │ │ │ │ ├── localEventEmitterMap │ │ │ │ ├── impl │ │ │ │ │ ├── eventEmitterMap.test.ts │ │ │ │ │ └── eventEmitterMapConfig.test.ts │ │ │ │ └── localEventEmitterMapExtension.test.ts │ │ │ │ └── viewManager │ │ │ │ ├── impl │ │ │ │ ├── configureSceneEvent.test.ts │ │ │ │ ├── configureViewEvent.test.ts │ │ │ │ ├── sceneBindingEvent.test.ts │ │ │ │ ├── sceneManagerBinding.test.ts │ │ │ │ └── sceneManagerEvent.test.ts │ │ │ │ └── support │ │ │ │ ├── CallbackSceneHandler.ts │ │ │ │ ├── CallbackViewHandler.ts │ │ │ │ ├── MockGame.ts │ │ │ │ ├── MockScene.ts │ │ │ │ └── MockView.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.example.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── webpack.config.js │ └── webpack.example.config.js ├── pixi-palidor │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── deploy-example.sh │ ├── example │ │ ├── Game.ts │ │ ├── components │ │ │ └── ColorButton.ts │ │ ├── config │ │ │ └── ExampleConfig.ts │ │ ├── index.ts │ │ ├── mediators │ │ │ ├── FloatingViewMediator.ts │ │ │ ├── PalidorViewMediator.ts │ │ │ └── RobotlegsViewMediator.ts │ │ ├── tsconfig.json │ │ └── views │ │ │ ├── AbstractView.ts │ │ │ ├── FloatingView.ts │ │ │ ├── PalidorView.ts │ │ │ └── RobotlegsView.ts │ ├── karma.conf.js │ ├── media │ │ └── layers.png │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ ├── bundles │ │ │ └── palidor │ │ │ │ └── PalidorBundle.ts │ │ │ └── extensions │ │ │ └── palidorPixi │ │ │ ├── PalidorPixiExtension.ts │ │ │ ├── api │ │ │ ├── IContainerController.ts │ │ │ ├── IFlowManager.ts │ │ │ └── IFlowViewMapping.ts │ │ │ ├── events │ │ │ └── PalidorEvent.ts │ │ │ └── impl │ │ │ ├── FlowManager.ts │ │ │ ├── FlowViewMapping.ts │ │ │ └── PixiContainerController.ts │ ├── static │ │ ├── images │ │ │ ├── loading.gif │ │ │ ├── palidor.png │ │ │ ├── pixijs-v6-logo.png │ │ │ └── robotlegsjs.png │ │ ├── index-template.html │ │ ├── manifest.json │ │ ├── scripts │ │ │ └── cache-polyfill.js │ │ ├── service-worker.js │ │ └── styles │ │ │ ├── example.css │ │ │ └── main.css │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ ├── bundles │ │ │ │ └── palidor │ │ │ │ │ └── palidorBundle.test.ts │ │ │ │ └── extensions │ │ │ │ └── palidorPixi │ │ │ │ ├── impl │ │ │ │ ├── flowManager.test.ts │ │ │ │ ├── flowViewMapping.test.ts │ │ │ │ ├── palidorEvent.test.ts │ │ │ │ └── pixiContainerController.test.ts │ │ │ │ ├── palidorPixiExtension.test.ts │ │ │ │ └── support │ │ │ │ └── Utils.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.example.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── webpack.config.js │ └── webpack.example.config.js ├── pixi-signalmediator │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ └── extensions │ │ │ └── signalMediator │ │ │ ├── SignalMediatorExtension.ts │ │ │ ├── api │ │ │ └── ISignalMap.ts │ │ │ └── impl │ │ │ ├── SignalMap.ts │ │ │ └── SignalMediator.ts │ ├── test │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ └── extensions │ │ │ │ └── signalMediator │ │ │ │ ├── impl │ │ │ │ ├── signalMap.test.ts │ │ │ │ └── signalMediator.test.ts │ │ │ │ ├── signalMediatorExtension.test.ts │ │ │ │ └── support │ │ │ │ └── TestMediator.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── webpack.config.js ├── pixi │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── deploy-example.sh │ ├── example │ │ ├── Game.ts │ │ ├── config │ │ │ └── MyConfig.ts │ │ ├── index.ts │ │ ├── mediator │ │ │ ├── RobotlegsMediator.ts │ │ │ └── SmileyMediator.ts │ │ ├── tsconfig.json │ │ └── view │ │ │ ├── RobotlegsView.ts │ │ │ └── SmileyView.ts │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ ├── bundles │ │ │ └── pixi │ │ │ │ └── PixiBundle.ts │ │ │ └── extensions │ │ │ ├── contextView │ │ │ ├── ContextViewExtension.ts │ │ │ ├── api │ │ │ │ └── IContextView.ts │ │ │ ├── impl │ │ │ │ ├── ContextView.ts │ │ │ │ └── ContextViewListenerConfig.ts │ │ │ └── pixiPatch │ │ │ │ └── pixi-patch.ts │ │ │ ├── mediatorMap │ │ │ ├── MediatorMapExtension.ts │ │ │ ├── api │ │ │ │ ├── IMediator.ts │ │ │ │ ├── IMediatorMap.ts │ │ │ │ └── IMediatorMapping.ts │ │ │ ├── dsl │ │ │ │ ├── IMediatorConfigurator.ts │ │ │ │ ├── IMediatorMapper.ts │ │ │ │ └── IMediatorUnmapper.ts │ │ │ └── impl │ │ │ │ ├── Mediator.ts │ │ │ │ ├── MediatorFactory.ts │ │ │ │ ├── MediatorManager.ts │ │ │ │ ├── MediatorMap.ts │ │ │ │ ├── MediatorMapper.ts │ │ │ │ ├── MediatorMapping.ts │ │ │ │ ├── MediatorViewHandler.ts │ │ │ │ └── NullMediatorUnmapper.ts │ │ │ └── viewManager │ │ │ ├── StageCrawlerExtension.ts │ │ │ ├── StageObserverExtension.ts │ │ │ ├── ViewManagerExtension.ts │ │ │ ├── api │ │ │ ├── IViewHandler.ts │ │ │ └── IViewManager.ts │ │ │ ├── impl │ │ │ ├── ContainerBinding.ts │ │ │ ├── ContainerBindingEvent.ts │ │ │ ├── ContainerRegistry.ts │ │ │ ├── ContainerRegistryEvent.ts │ │ │ ├── StageCrawler.ts │ │ │ ├── StageObserver.ts │ │ │ ├── ViewManager.ts │ │ │ └── ViewManagerEvent.ts │ │ │ └── support │ │ │ └── contains.ts │ ├── static │ │ ├── images │ │ │ ├── loading.gif │ │ │ ├── pixijs-v6-logo.png │ │ │ └── robotlegs.png │ │ ├── index-template.html │ │ ├── manifest.json │ │ ├── scripts │ │ │ └── cache-polyfill.js │ │ ├── service-worker.js │ │ └── styles │ │ │ ├── example.css │ │ │ └── main.css │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ ├── bundles │ │ │ │ └── pixi │ │ │ │ │ └── pixiBundle.test.ts │ │ │ │ └── extensions │ │ │ │ ├── contextView │ │ │ │ ├── contextViewExtension.test.ts │ │ │ │ ├── impl │ │ │ │ │ ├── contextView.test.ts │ │ │ │ │ └── contextViewListenerConfig.test.ts │ │ │ │ ├── pixiPatch │ │ │ │ │ └── pixiPatch.test.ts │ │ │ │ └── support │ │ │ │ │ ├── CallbackLogTarget.ts │ │ │ │ │ └── LogParams.ts │ │ │ │ ├── mediatorMap │ │ │ │ ├── impl │ │ │ │ │ ├── mediatorFactory.test.ts │ │ │ │ │ ├── mediatorManager.test.ts │ │ │ │ │ ├── mediatorMap.test.ts │ │ │ │ │ ├── mediatorMapPreload.test.ts │ │ │ │ │ ├── mediatorMapper.test.ts │ │ │ │ │ └── mediatorViewHandler.test.ts │ │ │ │ ├── mediatorMapExtension.test.ts │ │ │ │ └── support │ │ │ │ │ ├── Alpha50PercentHook.ts │ │ │ │ │ ├── CallbackHook.ts │ │ │ │ │ ├── CallbackMediator.ts │ │ │ │ │ ├── EmptyMediator.ts │ │ │ │ │ ├── ExampleMediator.ts │ │ │ │ │ ├── ExampleMediator2.ts │ │ │ │ │ ├── ExampleSpriteMediator.ts │ │ │ │ │ ├── GrumpyGuard.ts │ │ │ │ │ ├── HappyGuard.ts │ │ │ │ │ ├── HookWithMediatorAndViewInjectionReportFunction.ts │ │ │ │ │ ├── InjectedMediator.ts │ │ │ │ │ ├── LifecycleReportingMediator.ts │ │ │ │ │ ├── MediatorHook.ts │ │ │ │ │ ├── MediatorWatcher.ts │ │ │ │ │ ├── NotAView.ts │ │ │ │ │ ├── NotAViewMediator.ts │ │ │ │ │ ├── NullMediator.ts │ │ │ │ │ ├── NullMediator2.ts │ │ │ │ │ ├── OnlyIfViewHasChildrenGuard.ts │ │ │ │ │ ├── RectangleMediator.ts │ │ │ │ │ ├── ViewInjectedAsRequestedMediator.ts │ │ │ │ │ └── ViewInjectedMediator.ts │ │ │ │ └── viewManager │ │ │ │ ├── impl │ │ │ │ ├── containerBinding.test.ts │ │ │ │ ├── containerBindingEvent.test.ts │ │ │ │ ├── containerRegistry.test.ts │ │ │ │ ├── containerRegistryEvent.test.ts │ │ │ │ ├── contains.test.ts │ │ │ │ ├── stageCrawler.test.ts │ │ │ │ ├── stageObserver.test.ts │ │ │ │ ├── viewManager.test.ts │ │ │ │ └── viewManagerEvent.test.ts │ │ │ │ ├── stageCrawlerExtension.test.ts │ │ │ │ ├── stageObserverExtension.test.ts │ │ │ │ ├── support │ │ │ │ ├── CallbackViewHandler.ts │ │ │ │ └── TreeContainer.ts │ │ │ │ └── viewManagerExtension.test.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.example.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ ├── webpack.config.js │ └── webpack.example.config.js ├── signalcommandmap │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .mocharc.json │ ├── .vscode │ │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ │ └── rush-project.json │ ├── karma.conf.js │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── robotlegs │ │ │ └── bender │ │ │ └── extensions │ │ │ └── signalCommandMap │ │ │ ├── SignalCommandMapExtension.ts │ │ │ ├── api │ │ │ └── ISignalCommandMap.ts │ │ │ └── impl │ │ │ ├── SignalCommandMap.ts │ │ │ └── SignalCommandTrigger.ts │ ├── test │ │ ├── README.md │ │ ├── entry.ts │ │ ├── index.ts │ │ ├── robotlegs │ │ │ └── bender │ │ │ │ └── extensions │ │ │ │ └── signalCommandMap │ │ │ │ ├── impl │ │ │ │ ├── signalCommandMap.test.ts │ │ │ │ ├── signalCommandMapIntegration.test.ts │ │ │ │ └── signalCommandTrigger.test.ts │ │ │ │ ├── signalCommandMapExtension.test.ts │ │ │ │ └── support │ │ │ │ ├── CallbackCommand.ts │ │ │ │ ├── CallbackParametersCommand.ts │ │ │ │ ├── CascadingCommand.ts │ │ │ │ ├── Data.ts │ │ │ │ ├── ExecuteMethodWithParametersCommand.ts │ │ │ │ ├── GrumpyGuard.ts │ │ │ │ ├── HappyGuard.ts │ │ │ │ ├── NullCommand.ts │ │ │ │ ├── ParametersSignal.ts │ │ │ │ ├── Payload.ts │ │ │ │ ├── PayloadInjectedCallbackCommand.ts │ │ │ │ ├── PayloadInjectedGuard.ts │ │ │ │ ├── PayloadInjectedHook.ts │ │ │ │ ├── RelayCommand.ts │ │ │ │ ├── RelaySignal.ts │ │ │ │ ├── ReportingCommand.ts │ │ │ │ ├── ReportingCommand2.ts │ │ │ │ ├── ReportingCommand3.ts │ │ │ │ ├── ReportingGuard.ts │ │ │ │ ├── ReportingGuard2.ts │ │ │ │ ├── ReportingHook.ts │ │ │ │ ├── StrictPayloadCarryingSignal.ts │ │ │ │ ├── SupportSignal.ts │ │ │ │ ├── SupportSignal2.ts │ │ │ │ ├── TargetCommand.ts │ │ │ │ └── TargetSignal.ts │ │ └── tsconfig.json │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── webpack.config.js └── signals │ ├── .eslintrc.js │ ├── .istanbul.yml │ ├── .mocharc.json │ ├── .vscode │ └── settings.json │ ├── CHANGELOG.json │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── config │ └── rush-project.json │ ├── dist │ └── signals.min.js │ ├── karma.conf.js │ ├── package.json │ ├── src │ ├── index.ts │ └── org │ │ └── osflash │ │ └── signals │ │ ├── DeluxeSignal.ts │ │ ├── IOnceSignal.ts │ │ ├── IPrioritySignal.ts │ │ ├── ISignal.ts │ │ ├── ISlot.ts │ │ ├── MonoSignal.ts │ │ ├── OnceSignal.ts │ │ ├── PrioritySignal.ts │ │ ├── Promise.ts │ │ ├── Signal.ts │ │ ├── Slot.ts │ │ ├── SlotList.ts │ │ └── events │ │ ├── GenericEvent.ts │ │ ├── IBubbleEventHandler.ts │ │ └── IEvent.ts │ ├── test │ ├── README.md │ ├── entry.ts │ ├── index.ts │ ├── mock │ │ ├── MockEvent.ts │ │ ├── MockMouseEvent.ts │ │ └── Sprite.ts │ ├── org │ │ └── osflash │ │ │ └── signals │ │ │ ├── AmbiguousRelationshipTest.test.ts │ │ │ ├── DeluxeSignalTargetTest.test.ts │ │ │ ├── DeluxeSignalValueClassesTest.test.ts │ │ │ ├── DeluxeSignalWithBubblingEventTest.test.ts │ │ │ ├── DeluxeSignalWithGenericEventTest.test.ts │ │ │ ├── GenericEventTest.test.ts │ │ │ ├── MonoSignalDispatchArgsTest.test.ts │ │ │ ├── MonoSignalDispatchExtraArgsTest.test.ts │ │ │ ├── MonoSignalDispatchNoArgsTest.test.ts │ │ │ ├── MonoSignalDispatchNonEventTest.test.ts │ │ │ ├── MonoSignalDispatchVarArgsTest.test.ts │ │ │ ├── MonoSignalSlotTest.test.ts │ │ │ ├── MonoSignalTest.test.ts │ │ │ ├── MonoSignalValueClassesTest.test.ts │ │ │ ├── PriorityListenersTest.test.ts │ │ │ ├── PrioritySignalOnceTest.test.ts │ │ │ ├── PrioritySignalTest.test.ts │ │ │ ├── PromiseTest.test.ts │ │ │ ├── RedispatchedEventTest.test.ts │ │ │ ├── SignalDispatchArgsTest.test.ts │ │ │ ├── SignalDispatchExtraArgsTest.test.ts │ │ │ ├── SignalDispatchNoArgsTest.test.ts │ │ │ ├── SignalDispatchNonEventTest.test.ts │ │ │ ├── SignalDispatchVarArgsTest.test.ts │ │ │ ├── SignalTest.test.ts │ │ │ ├── SignalTestBase.test.ts │ │ │ ├── SignalWithCustomEventTest.test.ts │ │ │ ├── SlotListTest.test.ts │ │ │ ├── SlotPauseResumeTest.test.ts │ │ │ ├── SlotTest.test.ts │ │ │ ├── SlotTestBase.test.ts │ │ │ └── support │ │ │ ├── Base.ts │ │ │ ├── BubbleHater.ts │ │ │ ├── Child.ts │ │ │ ├── Inherited1.ts │ │ │ ├── Inherited2.ts │ │ │ └── MessageEvent.ts │ ├── tsconfig.json │ └── util │ │ ├── AsyncUtil.ts │ │ └── TestBase.ts │ ├── tsconfig.eslint.json │ ├── tsconfig.json │ ├── tsconfig.test.json │ └── webpack.config.js └── rush.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | end_of_line = lf 5 | charset = utf-8 6 | trim_trailing_whitespace = true 7 | indent_style = space 8 | indent_size = 4 9 | 10 | [*.{ts}] 11 | indent_style = space 12 | indent_size = 4 13 | 14 | [*.{js,json}] 15 | indent_style = space 16 | indent_size = 2 17 | 18 | [{.auditignore,.codeclimate.yml,.eslintignore,.eslintrc,.istanbul.yml,.prettierrc,.publishrc,.travis.yml}] 19 | indent_style = space 20 | indent_size = 2 21 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | tidelift: "npm/@robotlegsjs/core" 2 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: "👉 READ FIRST: Contributing to RobotlegsJS" 4 | about: Instructions for building the projects, debugging, and submitting a PR. 5 | url: https://github.com/RobotlegsJS/RobotlegsJS-Framework/tree/master/.github/CONTRIBUTING.md 6 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"] 3 | } 4 | -------------------------------------------------------------------------------- /common/autoinstallers/rush-prettier/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rush-prettier", 3 | "version": "1.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "prettier": "^2.6.2", 7 | "pretty-quick": "^3.1.3" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /common/config/rush/nonbrowser-approved-packages.json: -------------------------------------------------------------------------------- 1 | // DO NOT ADD COMMENTS IN THIS FILE. They will be lost when the Rush tool resaves it. 2 | { 3 | "$schema": "https://developer.microsoft.com/json-schemas/rush/v5/approved-packages.schema.json", 4 | "packages": [] 5 | } 6 | -------------------------------------------------------------------------------- /common/config/rush/repo-state.json: -------------------------------------------------------------------------------- 1 | // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. 2 | { 3 | "pnpmShrinkwrapHash": "fbf4fade2b6617a8265ad2ccb22bdca4deb0a3cf" 4 | } 5 | -------------------------------------------------------------------------------- /common/git-hooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Called by "git commit" with no arguments. The hook should 3 | # exit with non-zero status after issuing an appropriate message if 4 | # it wants to stop the commit. 5 | 6 | # Invoke the "rush prettier" custom command to reformat files whenever they 7 | # are committed. The command is defined in common/config/rush/command-line.json 8 | # and uses the "rush-prettier" autoinstaller. 9 | node common/scripts/install-run-rush.js prettier || exit $? 10 | -------------------------------------------------------------------------------- /games/battleship/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /games/battleship/assets/atlas/buttons/button_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/buttons/button_background.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/buttons/icon_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/buttons/icon_home.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/buttons/icon_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/buttons/icon_pause.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/buttons/icon_resume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/buttons/icon_resume.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/buttons/icon_retry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/buttons/icon_retry.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/others/logo_battleship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/others/logo_battleship.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/others/logo_setzer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/others/logo_setzer.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/ships/ship_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/ships/ship_2.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/ships/ship_3_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/ships/ship_3_1.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/ships/ship_3_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/ships/ship_3_2.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/ships/ship_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/ships/ship_4.png -------------------------------------------------------------------------------- /games/battleship/assets/atlas/ships/ship_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/atlas/ships/ship_5.png -------------------------------------------------------------------------------- /games/battleship/assets/battleship-pixijs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/battleship-pixijs.png -------------------------------------------------------------------------------- /games/battleship/assets/fonts/SimpleSmallPixel7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/fonts/SimpleSmallPixel7.png -------------------------------------------------------------------------------- /games/battleship/assets/logo_typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/assets/logo_typescript.png -------------------------------------------------------------------------------- /games/battleship/media/battleship_ss_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/battleship/media/battleship_ss_01.png -------------------------------------------------------------------------------- /games/battleship/src/battleship/events/FlowEvent.ts: -------------------------------------------------------------------------------- 1 | import { Event } from "@robotlegsjs/core"; 2 | 3 | export class FlowEvent extends Event { 4 | public static SHOW_INTRO_VIEW: string = "showIntroView"; 5 | public static SHOW_GAME_VIEW: string = "showGameView"; 6 | public static SHOW_HOME_VIEW: string = "showHomeView"; 7 | 8 | public static SHOW_GAME_OVER_POPUP: string = "showGameOverPopup"; 9 | public static SHOW_YOU_WIN_POPUP: string = "showYouWinPopup"; 10 | public static SHOW_PAUSE_POPUP: string = "showPausePopup"; 11 | 12 | public constructor(type: string) { 13 | super(type); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /games/battleship/src/battleship/game/events/AttackEvent.ts: -------------------------------------------------------------------------------- 1 | import { Event } from "@robotlegsjs/core"; 2 | 3 | export class AttackEvent extends Event { 4 | public static SUCCESS: string = "success"; 5 | public static FAIL: string = "fail"; 6 | 7 | public constructor(type: string) { 8 | super(type); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /games/battleship/src/battleship/game/models/LevelModel.ts: -------------------------------------------------------------------------------- 1 | import { injectable } from "@robotlegsjs/core"; 2 | import { BattleField } from "./BattleField"; 3 | 4 | @injectable() 5 | export class LevelModel { 6 | public hero: BattleField; 7 | public enemy: BattleField; 8 | } 9 | -------------------------------------------------------------------------------- /games/battleship/src/battleship/game/models/Player.ts: -------------------------------------------------------------------------------- 1 | export class Player { 2 | public static ENEMY: string = "ENEMY"; 3 | public static HERO: string = "HERO"; 4 | } 5 | -------------------------------------------------------------------------------- /games/battleship/src/battleship/game/models/Tile.ts: -------------------------------------------------------------------------------- 1 | export class Tile { 2 | public static HITTED: number = -1; 3 | public static BLANKED: number = 0; 4 | 5 | public col: number; 6 | public row: number; 7 | 8 | public constructor(col: number = 0, row: number = 0) { 9 | this.col = col; 10 | this.row = row; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /games/battleship/src/battleship/utils/IsoUtils.ts: -------------------------------------------------------------------------------- 1 | export class IsoUtils { 2 | public static toIso(col: number, row: number): any { 3 | let base = 16; 4 | let x = base * col - base * row; 5 | let y = (base * col + base * row) / 2; 6 | return { x, y }; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /games/battleship/src/battleship/utils/Texts.ts: -------------------------------------------------------------------------------- 1 | export class Texts { 2 | public static DEVELOPER: string = "RONALDO SANTIAGO"; 3 | /* Displays */ 4 | public static ENEMY: string = "Enemy"; 5 | public static HERO: string = "Hero"; 6 | /* Texts */ 7 | public static MAX_COLS: string = "Cols:"; 8 | public static MAX_ROWS: string = "Rows:"; 9 | 10 | public static GAME_OVER: string = "Game Over"; 11 | public static PAUSED: string = "Paused"; 12 | public static YOU_WIN: string = "You Win !!"; 13 | public static WIN_MSG: string = "Congratulations\non Winning\nthis battle!"; 14 | } 15 | -------------------------------------------------------------------------------- /games/battleship/src/battleship/views/components/EnemyTileDisplay.ts: -------------------------------------------------------------------------------- 1 | import { TileDisplay } from "./TileDisplay"; 2 | 3 | export class EnemyTileDisplay extends TileDisplay { 4 | private _enabled: boolean; 5 | 6 | public set enabled(value: boolean) { 7 | this.interactive = value; 8 | this.buttonMode = value; 9 | this._enabled = value; 10 | } 11 | 12 | public get enabled(): boolean { 13 | return this._enabled; 14 | } 15 | 16 | public constructor(tileId: number, col: number, row: number) { 17 | super(tileId, col, row); 18 | this.enabled = true; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /games/battleship/src/index.ts: -------------------------------------------------------------------------------- 1 | import "reflect-metadata"; 2 | import { Game } from "./Game"; 3 | 4 | let game: Game = new Game(); 5 | 6 | game.render(); 7 | -------------------------------------------------------------------------------- /games/battleship/test/battleship/game/models/Player.test.ts: -------------------------------------------------------------------------------- 1 | import { assert } from "chai"; 2 | import { Player } from "../../../../src/battleship/game/models/Player"; 3 | import "../../../entry"; 4 | 5 | describe("Player", () => { 6 | context("constants", () => { 7 | it("should exist the constants HERO and ENEMY", () => { 8 | assert.exists(Player.HERO); 9 | assert.exists(Player.ENEMY); 10 | }); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /games/battleship/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "es6-map/implement"; 12 | import "es6-symbol/implement"; 13 | -------------------------------------------------------------------------------- /games/battleship/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /games/battleship/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /games/battleship/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /games/battleship/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /games/match3/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /games/match3/assets/BerlinSansDemi_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/BerlinSansDemi_1.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/button_medium_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/button_medium_down.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/button_medium_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/button_medium_up.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/button_small_danger_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/button_small_danger_down.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/button_small_danger_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/button_small_danger_up.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/button_small_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/button_small_down.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/button_small_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/button_small_up.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/icon_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/icon_close.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/icon_config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/icon_config.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/icon_confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/icon_confirm.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/icon_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/icon_delete.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/icon_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/icon_home.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/icon_level_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/icon_level_select.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/icon_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/icon_pause.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/icon_resume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/icon_resume.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/icon_retry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/icon_retry.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/buttons/level_select_small_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/buttons/level_select_small_star.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/logo_matchthree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/logo_matchthree.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/logo_setzer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/logo_setzer.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/popup_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/popup_star.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_00.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_00.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_01.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_02.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_03.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_04.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_05.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_06.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_07.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_08.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_09.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/displays/star_hud_display_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/displays/star_hud_display_10.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_col_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_col_1.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_col_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_col_2.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_col_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_col_3.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_col_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_col_4.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_col_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_col_5.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_col_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_col_6.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_normal_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_normal_1.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_normal_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_normal_2.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_normal_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_normal_3.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_normal_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_normal_4.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_normal_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_normal_5.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_normal_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_normal_6.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_rainbow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_rainbow.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_row_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_row_1.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_row_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_row_2.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_row_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_row_3.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_row_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_row_4.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_row_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_row_5.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/game/piece_row_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/game/piece_row_6.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/matchthree-pixijs-atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/matchthree-pixijs-atlas.png -------------------------------------------------------------------------------- /games/match3/assets/atlas/matchthree-starling-atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/atlas/matchthree-starling-atlas.png -------------------------------------------------------------------------------- /games/match3/assets/backgrounds/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/backgrounds/background.png -------------------------------------------------------------------------------- /games/match3/assets/backgrounds/background_hud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/backgrounds/background_hud.png -------------------------------------------------------------------------------- /games/match3/assets/backgrounds/background_popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/backgrounds/background_popup.png -------------------------------------------------------------------------------- /games/match3/assets/fonts/BerlinSansDemi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/fonts/BerlinSansDemi.png -------------------------------------------------------------------------------- /games/match3/assets/gimp/assets.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/gimp/assets.xcf -------------------------------------------------------------------------------- /games/match3/assets/gimp/stars.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/gimp/stars.xcf -------------------------------------------------------------------------------- /games/match3/assets/logo_typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/logo_typescript.png -------------------------------------------------------------------------------- /games/match3/assets/matchthree-pixijs-atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/assets/matchthree-pixijs-atlas.png -------------------------------------------------------------------------------- /games/match3/media/gif_match3_ts_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/media/gif_match3_ts_demo.gif -------------------------------------------------------------------------------- /games/match3/media/img_cover_match3_ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/media/img_cover_match3_ts.png -------------------------------------------------------------------------------- /games/match3/media/img_game_match3_ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/media/img_game_match3_ts.png -------------------------------------------------------------------------------- /games/match3/media/img_ss_match3_ts_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/media/img_ss_match3_ts_01.png -------------------------------------------------------------------------------- /games/match3/media/img_ss_match3_ts_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/media/img_ss_match3_ts_02.png -------------------------------------------------------------------------------- /games/match3/media/img_ss_match3_ts_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/media/img_ss_match3_ts_03.png -------------------------------------------------------------------------------- /games/match3/media/img_ss_match3_ts_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/match3/media/img_ss_match3_ts_04.png -------------------------------------------------------------------------------- /games/match3/src/index.ts: -------------------------------------------------------------------------------- 1 | import "reflect-metadata"; 2 | import { Game } from "./Game"; 3 | 4 | const game: Game = new Game(); 5 | 6 | game.render(); 7 | -------------------------------------------------------------------------------- /games/match3/src/matchthree/game/displays/BlankedCell.ts: -------------------------------------------------------------------------------- 1 | import { Graphics } from "pixi.js"; 2 | import { Tile } from "../models/Tile"; 3 | 4 | export class BlankedCell extends Graphics { 5 | public constructor() { 6 | super(); 7 | this.beginFill(0xffffff); 8 | this.drawRect(0, 0, Tile.TILE_WIDTH, Tile.TILE_HEIGHT); 9 | this.alpha = 0.3; 10 | this.pivot.x = this.width * 0.5; 11 | this.pivot.y = this.height * 0.5; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /games/match3/src/matchthree/game/models/Tile.ts: -------------------------------------------------------------------------------- 1 | export class Tile { 2 | public static TILE_WIDTH: number = 36; 3 | public static TILE_HEIGHT: number = 36; 4 | 5 | public col: number; 6 | public row: number; 7 | 8 | public constructor(col: number = 0, row: number = 0) { 9 | this.col = col; 10 | this.row = row; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /games/match3/src/matchthree/game/models/TouchPhase.ts: -------------------------------------------------------------------------------- 1 | export class TouchPhase { 2 | public static BEGAN: string = "mousedown"; 3 | public static ENDED: string = "mouseup"; 4 | } 5 | -------------------------------------------------------------------------------- /games/match3/src/matchthree/game/utils/PieceIds.ts: -------------------------------------------------------------------------------- 1 | export class PieceIds { 2 | public static EMPTY: number = 0; 3 | 4 | public static BLUE: number = 1; 5 | public static GREEN: number = 2; 6 | public static ORANGE: number = 3; 7 | public static YELLOW: number = 4; 8 | public static PINK: number = 5; 9 | public static LIGHT_BLUE: number = 6; 10 | 11 | public static RAINBOW: number = 7; 12 | 13 | public static ALL_NORMAL_IDS: number[] = [ 14 | PieceIds.BLUE, 15 | PieceIds.ORANGE, 16 | PieceIds.GREEN, 17 | PieceIds.YELLOW, 18 | PieceIds.PINK, 19 | PieceIds.LIGHT_BLUE 20 | ]; 21 | } 22 | -------------------------------------------------------------------------------- /games/match3/src/matchthree/game/utils/PieceType.ts: -------------------------------------------------------------------------------- 1 | export class PieceType { 2 | public static EMPTY: string = "empty"; 3 | 4 | public static NORMAL: string = "normal"; 5 | public static ROW: string = "row"; 6 | public static COL: string = "col"; 7 | public static RAINBOW: string = "rainbow"; 8 | } 9 | -------------------------------------------------------------------------------- /games/match3/src/matchthree/game/utils/ScoreUtils.ts: -------------------------------------------------------------------------------- 1 | export class ScoreUtils { 2 | public static getNumStars(score: number, scoreStars: number[]): number { 3 | let numStars = 0; 4 | for (const scoreStar of scoreStars) { 5 | if (score >= scoreStar) { 6 | numStars++; 7 | } 8 | } 9 | return numStars; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /games/match3/src/matchthree/mediators/GameViewMediator.ts: -------------------------------------------------------------------------------- 1 | import { injectable } from "@robotlegsjs/core"; 2 | import { Mediator } from "@robotlegsjs/pixi"; 3 | import { GameView } from "../views/GameView"; 4 | 5 | @injectable() 6 | export class GameViewMediator extends Mediator { 7 | public initialize(): void { 8 | this.view.createComponents(); 9 | } 10 | 11 | public destroy(): void { 12 | this.view.destroy(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /games/match3/src/matchthree/utils/ViewPortSize.ts: -------------------------------------------------------------------------------- 1 | export class ViewPortSize { 2 | public static MAX_WIDTH: number = 340; 3 | public static MAX_HEIGHT: number = 480; 4 | public static HALF_WIDTH: number = 170; 5 | public static HALF_HEIGHT: number = 240; 6 | } 7 | -------------------------------------------------------------------------------- /games/match3/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "es6-map/implement"; 12 | import "es6-symbol/implement"; 13 | -------------------------------------------------------------------------------- /games/match3/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /games/match3/test/matchthree/game/models/Tile.test.ts: -------------------------------------------------------------------------------- 1 | import { assert } from "chai"; 2 | import { Tile } from "../../../../src/matchthree/game/models/Tile"; 3 | import "../../../entry"; 4 | 5 | describe("Tile", () => { 6 | it("Constructor", () => { 7 | const col = 5; 8 | const row = 6; 9 | const tile = new Tile(col, row); 10 | assert.equal(col, tile.col); 11 | assert.equal(row, tile.row); 12 | }); 13 | 14 | it("Constructor: Default Values", () => { 15 | const tile = new Tile(); 16 | assert.equal(0, tile.col); 17 | assert.equal(0, tile.row); 18 | }); 19 | }); 20 | -------------------------------------------------------------------------------- /games/match3/test/matchthree/utils/AtlasKeys.test.ts: -------------------------------------------------------------------------------- 1 | import { assert } from "chai"; 2 | import { Sprite, TilingSprite } from "pixi.js"; 3 | import { AtlasKeys } from "../../../src/matchthree/utils/AtlasKeys"; 4 | import "../../entry"; 5 | 6 | describe("AtlasKeys", () => { 7 | it("GetTexture", () => { 8 | const key = "./assets/atlas/game/piece_normal_3.png"; 9 | const sprite: Sprite = TilingSprite.from(key, { width: 36, height: 36 }); 10 | const textureCache: any = { "./assets/atlas/game/piece_normal_3.png": sprite.texture }; 11 | AtlasKeys.update(textureCache); 12 | assert.equal(sprite.texture, AtlasKeys.getTexture(key)); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /games/match3/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /games/match3/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /games/match3/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /games/minesweeper/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/buttons/button_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/buttons/button_background.png -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/buttons/icon_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/buttons/icon_home.png -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/buttons/icon_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/buttons/icon_pause.png -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/buttons/icon_resume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/buttons/icon_resume.png -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/buttons/icon_retry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/buttons/icon_retry.png -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/others/icon_flag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/others/icon_flag.png -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/others/icon_flag_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/others/icon_flag_large.png -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/others/icon_mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/others/icon_mine.png -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/others/logo_minesweeper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/others/logo_minesweeper.png -------------------------------------------------------------------------------- /games/minesweeper/assets/atlas/others/logo_setzer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/atlas/others/logo_setzer.png -------------------------------------------------------------------------------- /games/minesweeper/assets/fonts/SimpleSmallPixel7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/fonts/SimpleSmallPixel7.png -------------------------------------------------------------------------------- /games/minesweeper/assets/logo_typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/logo_typescript.png -------------------------------------------------------------------------------- /games/minesweeper/assets/minesweeper-pixijs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/assets/minesweeper-pixijs.png -------------------------------------------------------------------------------- /games/minesweeper/media/gif_minesweeper_ts_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/media/gif_minesweeper_ts_demo.gif -------------------------------------------------------------------------------- /games/minesweeper/media/img_cover_minesweeper_ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/media/img_cover_minesweeper_ts.png -------------------------------------------------------------------------------- /games/minesweeper/media/img_game_minesweeper_ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/media/img_game_minesweeper_ts.png -------------------------------------------------------------------------------- /games/minesweeper/media/img_ss_minesweeper_ts_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/media/img_ss_minesweeper_ts_01.png -------------------------------------------------------------------------------- /games/minesweeper/media/img_ss_minesweeper_ts_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/minesweeper/media/img_ss_minesweeper_ts_02.png -------------------------------------------------------------------------------- /games/minesweeper/src/index.ts: -------------------------------------------------------------------------------- 1 | import "reflect-metadata"; 2 | import { Game } from "./Game"; 3 | 4 | const game: Game = new Game(); 5 | 6 | game.render(); 7 | -------------------------------------------------------------------------------- /games/minesweeper/src/minesweeper/game/models/CustomLevelModel.ts: -------------------------------------------------------------------------------- 1 | import { injectable } from "@robotlegsjs/core"; 2 | import { Cell } from "./Cell"; 3 | 4 | @injectable() 5 | export class CustomLevelModel { 6 | public maxCols: number; 7 | public maxRows: number; 8 | public numMines: number; 9 | 10 | public mines: Cell[]; 11 | 12 | public constructor() { 13 | this.mines = []; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /games/minesweeper/src/minesweeper/mediators/GameViewMediator.ts: -------------------------------------------------------------------------------- 1 | import { injectable } from "@robotlegsjs/core"; 2 | import { Mediator } from "@robotlegsjs/pixi"; 3 | import { GameView } from "../views/GameView"; 4 | 5 | @injectable() 6 | export class GameViewMediator extends Mediator { 7 | public initialize(): void { 8 | this.view.createComponents(); 9 | } 10 | 11 | public destroy(): void { 12 | this.view.destroy(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /games/minesweeper/src/minesweeper/utils/ViewPortSize.ts: -------------------------------------------------------------------------------- 1 | export class ViewPortSize { 2 | public static MAX_WIDTH: number = 400; 3 | public static MAX_HEIGHT: number = 600; 4 | public static HALF_WIDTH: number = 200; 5 | public static HALF_HEIGHT: number = 300; 6 | } 7 | -------------------------------------------------------------------------------- /games/minesweeper/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "es6-map/implement"; 12 | import "es6-symbol/implement"; 13 | -------------------------------------------------------------------------------- /games/minesweeper/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /games/minesweeper/test/minesweeper/game/models/LevelModel.test.ts: -------------------------------------------------------------------------------- 1 | import { assert } from "chai"; 2 | import { GridData } from "../../../../src/minesweeper/game/models/GridData"; 3 | import { LevelModel } from "../../../../src/minesweeper/game/models/LevelModel"; 4 | import "../../../entry"; 5 | 6 | describe("LevelModel", () => { 7 | let level: LevelModel; 8 | 9 | beforeEach(() => { 10 | level = new LevelModel(); 11 | level.setGrid(new GridData()); 12 | }); 13 | 14 | afterEach(() => { 15 | level = undefined; 16 | }); 17 | 18 | it("SetGrid:", () => { 19 | level.setGrid(new GridData()); 20 | assert.notEqual(undefined, level.grid); 21 | }); 22 | }); 23 | -------------------------------------------------------------------------------- /games/minesweeper/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /games/minesweeper/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /games/minesweeper/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /games/scratchcard/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /games/scratchcard/assets/atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/atlas.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/bitbucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/bitbucket.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/chai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/chai.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/git.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/github.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/html5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/html5.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/javascript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/javascript.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/mocha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/mocha.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/node.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/npm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/npm.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/palidor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/palidor.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/pixijs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/pixijs.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/prettier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/prettier.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/profile.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/robotlegsjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/robotlegsjs.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/setzer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/setzer.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/texturepacker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/texturepacker.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/typescript.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/vscode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/vscode.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/webpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/webpack.png -------------------------------------------------------------------------------- /games/scratchcard/assets/cards/yarn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/cards/yarn.png -------------------------------------------------------------------------------- /games/scratchcard/assets/logo_typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/assets/logo_typescript.png -------------------------------------------------------------------------------- /games/scratchcard/media/scratchcard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/scratchcard/media/scratchcard.gif -------------------------------------------------------------------------------- /games/scratchcard/src/events/FlowEvent.ts: -------------------------------------------------------------------------------- 1 | import { Event } from "@robotlegsjs/core"; 2 | 3 | export class FlowEvent extends Event { 4 | public static SHOW_INTRO_VIEW: string = "showIntroView"; 5 | public static SHOW_MAIN_VIEW: string = "showMainView"; 6 | public static SHOW_FEEDBACK: string = "showFeedback"; 7 | 8 | public constructor(type: string) { 9 | super(type); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /games/scratchcard/src/events/GameEvent.ts: -------------------------------------------------------------------------------- 1 | import { Event } from "@robotlegsjs/core"; 2 | 3 | export class GameEvent extends Event { 4 | public static START_GAME_COMMAND: string = "startGameCommand"; 5 | public static END_GAME_COMMAND: string = "endGameCommand"; 6 | 7 | public static START: string = "start"; 8 | public static END: string = "end"; 9 | 10 | public constructor(type: string) { 11 | super(type); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /games/scratchcard/src/index.ts: -------------------------------------------------------------------------------- 1 | import "reflect-metadata"; 2 | import { Game } from "./Game"; 3 | 4 | const game: Game = new Game(); 5 | 6 | game.render(); 7 | -------------------------------------------------------------------------------- /games/scratchcard/src/mediators/IntroViewMediator.ts: -------------------------------------------------------------------------------- 1 | import { injectable } from "@robotlegsjs/core"; 2 | import { Mediator } from "@robotlegsjs/pixi"; 3 | import { FlowEvent } from "../events/FlowEvent"; 4 | import { IntroView } from "../views/IntroView"; 5 | 6 | @injectable() 7 | export class IntroViewMediator extends Mediator { 8 | public initialize(): void { 9 | setTimeout(this._onTimerOut.bind(this), 3000, this); 10 | } 11 | 12 | public destroy(): void { 13 | this.eventMap.unmapListeners(); 14 | } 15 | 16 | private _onTimerOut(): void { 17 | this.eventDispatcher.dispatchEvent(new FlowEvent(FlowEvent.SHOW_MAIN_VIEW)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /games/scratchcard/src/mediators/MainViewMediator.ts: -------------------------------------------------------------------------------- 1 | import { injectable } from "@robotlegsjs/core"; 2 | import { Mediator } from "@robotlegsjs/pixi"; 3 | import { MainView } from "../views/MainView"; 4 | 5 | @injectable() 6 | export class MainViewMediator extends Mediator { 7 | public initialize(): void { 8 | this.view.createComponents(); 9 | } 10 | 11 | public destroy(): void { 12 | this.eventMap.unmapListeners(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /games/scratchcard/src/models/Model.ts: -------------------------------------------------------------------------------- 1 | import { injectable } from "@robotlegsjs/core"; 2 | 3 | @injectable() 4 | export class Model { 5 | public attempts: number; 6 | public pressed: boolean; 7 | public prizes: string[]; 8 | 9 | public posX: number; 10 | public posY: number; 11 | 12 | public feedback: string; 13 | public matchedPrizes: string[]; 14 | 15 | public constructor() { 16 | this.attempts = 25; 17 | this.pressed = false; 18 | } 19 | 20 | public decreaseAttemps(): void { 21 | this.attempts -= 1; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /games/scratchcard/src/utils/Colors.ts: -------------------------------------------------------------------------------- 1 | export class Colors { 2 | public static BACKGROUND_DARK: number = 0x204d63; 3 | public static BACKGROUND_LIGHT: number = 0xb5d6e6; 4 | 5 | public static TEXT: number = 0xb5d6e6; 6 | public static TEXT_DARK: number = 0x204d63; 7 | 8 | public static HIGHLIGHT: number = 0xfdb515; 9 | } 10 | -------------------------------------------------------------------------------- /games/scratchcard/src/utils/MagicValues.ts: -------------------------------------------------------------------------------- 1 | export class MagicValues { 2 | public static MAX_WIDTH: number = 424; 3 | public static MAX_HEIGHT: number = 600; 4 | public static HALF_WIDTH: number = 212; 5 | public static HALF_HEIGHT: number = 300; 6 | 7 | public static HUD_HEIGHT: number = 80; 8 | 9 | public static ITEM_SIZE: number = 133; // 128 + 5; 10 | 11 | public static TILE_SQUARE: number = 32; 12 | 13 | public static SCRATCH_BOX_WIDTH: number = 404; 14 | public static SCRATCH_BOX_HEIGHT: number = 404; 15 | } 16 | -------------------------------------------------------------------------------- /games/scratchcard/src/utils/Texts.ts: -------------------------------------------------------------------------------- 1 | export class Texts { 2 | public static DEVELOPER: string = "RONALDO SANTIAGO"; 3 | 4 | public static PLAY: string = "play"; 5 | public static CLEAR_ALL: string = "reveal all"; 6 | 7 | public static SUCCESS: string = "Congratulations!!!"; 8 | public static FAIL: string = "Better luck next time"; 9 | 10 | public static HUD_SCRATCH_REMAINING: string = "Scratch remaining: "; 11 | } 12 | -------------------------------------------------------------------------------- /games/scratchcard/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /games/space-invaders/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_cancel_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_cancel_over.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_cancel_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_cancel_up.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_config_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_config_over.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_config_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_config_up.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_confirm_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_confirm_over.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_confirm_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_confirm_up.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_home_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_home_over.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_home_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_home_up.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_pause_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_pause_over.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_pause_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_pause_up.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_reset_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_reset_over.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_reset_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_reset_up.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_resume_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_resume_over.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_resume_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_resume_up.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_retry_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_retry_over.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_retry_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_retry_up.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_start_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_start_over.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/buttons/button_start_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/buttons/button_start_up.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/displays/cannon_hud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/displays/cannon_hud.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/displays/logo_setzer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/displays/logo_setzer.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/displays/logo_spaceinvaders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/displays/logo_spaceinvaders.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/bullet_frame_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/bullet_frame_01.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/cannon_frame_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/cannon_frame_01.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/enemy_01_frame_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/enemy_01_frame_01.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/enemy_01_frame_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/enemy_01_frame_02.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/enemy_02_frame_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/enemy_02_frame_01.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/enemy_02_frame_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/enemy_02_frame_02.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/enemy_03_frame_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/enemy_03_frame_01.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/enemy_03_frame_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/enemy_03_frame_02.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/enemy_bonus_frame_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/enemy_bonus_frame_01.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/enemy_bonus_frame_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/enemy_bonus_frame_02.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/explosion_frame_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/explosion_frame_01.png -------------------------------------------------------------------------------- /games/space-invaders/assets/atlas/game/explosion_frame_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/atlas/game/explosion_frame_02.png -------------------------------------------------------------------------------- /games/space-invaders/assets/fonts/SimpleSmalPixel7_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/fonts/SimpleSmalPixel7_.png -------------------------------------------------------------------------------- /games/space-invaders/assets/fonts/SimpleSmallPixel7_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/fonts/SimpleSmallPixel7_0.png -------------------------------------------------------------------------------- /games/space-invaders/assets/logo_typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/logo_typescript.png -------------------------------------------------------------------------------- /games/space-invaders/assets/spaceinvaders-pixijs-atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/assets/spaceinvaders-pixijs-atlas.png -------------------------------------------------------------------------------- /games/space-invaders/media/gif_space_invaders_ts_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/media/gif_space_invaders_ts_demo.gif -------------------------------------------------------------------------------- /games/space-invaders/media/img_cover_space_invaders_ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/media/img_cover_space_invaders_ts.png -------------------------------------------------------------------------------- /games/space-invaders/media/img_game_space_invaders_ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/media/img_game_space_invaders_ts.png -------------------------------------------------------------------------------- /games/space-invaders/media/img_ss_space_invaders_ts_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/space-invaders/media/img_ss_space_invaders_ts_01.png -------------------------------------------------------------------------------- /games/space-invaders/src/commands/DecreaseLivesCommand.ts: -------------------------------------------------------------------------------- 1 | import { ICommand, inject, injectable } from "@robotlegsjs/core"; 2 | import { GameModel } from "../models/GameModel"; 3 | import { GameService } from "../services/GameService"; 4 | 5 | @injectable() 6 | export class DecreaseLivesCommand implements ICommand { 7 | @inject(GameModel) 8 | private _model: GameModel; 9 | 10 | @inject(GameService) 11 | private _gameService: GameService; 12 | 13 | public execute(): void { 14 | this._model.lives -= 1; 15 | this._gameService.updateHUDData(); 16 | 17 | if (this._model.lives === 0) { 18 | this._gameService.gameOver(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /games/space-invaders/src/commands/GameOverCommand.ts: -------------------------------------------------------------------------------- 1 | import { ICommand, inject, injectable } from "@robotlegsjs/core"; 2 | import { GameModel } from "../models/GameModel"; 3 | import { GameStatus } from "../models/GameStatus"; 4 | import { FlowService } from "../services/FlowService"; 5 | 6 | @injectable() 7 | export class GameOverCommand implements ICommand { 8 | @inject(GameModel) 9 | private _model: GameModel; 10 | 11 | @inject(FlowService) 12 | private _flowService: FlowService; 13 | 14 | public execute(): void { 15 | this._model.status = GameStatus.GAMEOVER; 16 | 17 | this._flowService.showGameOverPopup(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /games/space-invaders/src/commands/IncreaaseLevelCommand.ts: -------------------------------------------------------------------------------- 1 | import { ICommand, inject, injectable } from "@robotlegsjs/core"; 2 | import { GameModel } from "../models/GameModel"; 3 | import { GameService } from "../services/GameService"; 4 | 5 | @injectable() 6 | export class IncreaseLevelCommand implements ICommand { 7 | @inject(GameModel) 8 | private _model: GameModel; 9 | 10 | @inject(GameService) 11 | private _gameService: GameService; 12 | 13 | public execute(): void { 14 | this._model.level += 1; 15 | 16 | this._gameService.clearBattleField(); 17 | this._gameService.updateHUDData(); 18 | this._gameService.createLevelCommand(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /games/space-invaders/src/commands/IncreasePointsCommand.ts: -------------------------------------------------------------------------------- 1 | import { ICommand, inject, injectable } from "@robotlegsjs/core"; 2 | import { GameModel } from "../models/GameModel"; 3 | import { GameService } from "../services/GameService"; 4 | 5 | @injectable() 6 | export class IncreasePointsCommand implements ICommand { 7 | @inject(GameModel) 8 | private _model: GameModel; 9 | 10 | @inject(GameService) 11 | private _gameService: GameService; 12 | 13 | public execute(): void { 14 | this._model.score += 100; 15 | 16 | this._gameService.updateHUDData(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /games/space-invaders/src/commands/RetryGameCommand.ts: -------------------------------------------------------------------------------- 1 | import { ICommand, inject, injectable } from "@robotlegsjs/core"; 2 | import { GameModel } from "../models/GameModel"; 3 | import { GameService } from "../services/GameService"; 4 | 5 | @injectable() 6 | export class RetryGameCommand implements ICommand { 7 | @inject(GameModel) 8 | private _gameModel: GameModel; 9 | 10 | @inject(GameService) 11 | private _gameService: GameService; 12 | 13 | public execute(): void { 14 | this._gameService.clearBattleField(); 15 | 16 | this._gameModel.clear(); 17 | 18 | this._gameService.createLevelCommand(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /games/space-invaders/src/commands/StartGameCommand.ts: -------------------------------------------------------------------------------- 1 | import { ICommand, inject, injectable } from "@robotlegsjs/core"; 2 | import { GameModel } from "../models/GameModel"; 3 | import { GameService } from "../services/GameService"; 4 | 5 | @injectable() 6 | export class StartGameCommand implements ICommand { 7 | @inject(GameModel) 8 | private _gameModel: GameModel; 9 | 10 | @inject(GameService) 11 | private _gameService: GameService; 12 | 13 | public execute(): void { 14 | this._gameModel.clear(); 15 | 16 | this._gameService.clearBattleField(); 17 | this._gameService.updateHUDData(); 18 | this._gameService.createLevelCommand(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /games/space-invaders/src/game/displays/BulletDisplay.ts: -------------------------------------------------------------------------------- 1 | import { Sprite } from "pixi.js"; 2 | import { AtlasKeys } from "../../utils/AtlasKeys"; 3 | 4 | export class BulletDisplay extends Sprite { 5 | public constructor() { 6 | super(AtlasKeys.getTexture(AtlasKeys.BULLET)); 7 | 8 | this.anchor.x = 0.5; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /games/space-invaders/src/game/displays/CannonDisplay.ts: -------------------------------------------------------------------------------- 1 | import { Sprite } from "pixi.js"; 2 | import { AtlasKeys } from "../../utils/AtlasKeys"; 3 | 4 | export class CannonDisplay extends Sprite { 5 | public constructor() { 6 | super(AtlasKeys.getTexture(AtlasKeys.CANNON)); 7 | 8 | this.anchor.set(0.5); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /games/space-invaders/src/game/entities/Bullet.ts: -------------------------------------------------------------------------------- 1 | import { Entity } from "./Entity"; 2 | 3 | export class Bullet extends Entity { 4 | public static ENEMY: number = 0; 5 | public static PlAYER: number = 1; 6 | 7 | public target: number = Bullet.ENEMY; 8 | 9 | public constructor(typeID: number = Entity.BULLET) { 10 | super(typeID); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /games/space-invaders/src/game/utils/Point.ts: -------------------------------------------------------------------------------- 1 | export class Point { 2 | public x: number; 3 | public y: number; 4 | 5 | public constructor(x: number = 0, y: number = 0) { 6 | this.x = x; 7 | this.y = y; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /games/space-invaders/src/index.ts: -------------------------------------------------------------------------------- 1 | import "reflect-metadata"; 2 | import { Game } from "./Game"; 3 | 4 | const game: Game = new Game(); 5 | 6 | game.render(); 7 | -------------------------------------------------------------------------------- /games/space-invaders/src/mediators/GameViewMediator.ts: -------------------------------------------------------------------------------- 1 | import { inject, injectable } from "@robotlegsjs/core"; 2 | import { Mediator } from "@robotlegsjs/pixi"; 3 | import { GameService } from "../services/GameService"; 4 | import { GameView } from "../views/GameView"; 5 | 6 | @injectable() 7 | export class GameViewMediator extends Mediator { 8 | @inject(GameService) 9 | private _gameService: GameService; 10 | 11 | public initialize(): void { 12 | this.view.createComponents(); 13 | this._gameService.startCommand(); 14 | } 15 | 16 | public destroy(): void { 17 | this.view.destroy(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /games/space-invaders/src/models/GameModel.ts: -------------------------------------------------------------------------------- 1 | import { injectable } from "@robotlegsjs/core"; 2 | 3 | @injectable() 4 | export class GameModel { 5 | public hiScore: number; 6 | public score: number; 7 | public level: number; 8 | public lives: number; 9 | 10 | public status: String; 11 | 12 | public constructor() { 13 | this.hiScore = 0; 14 | this.clear(); 15 | } 16 | 17 | public clear(): void { 18 | this.level = 1; 19 | this.lives = 3; 20 | this.score = 0; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /games/space-invaders/src/models/GameStatus.ts: -------------------------------------------------------------------------------- 1 | export class GameStatus { 2 | public static GAME: string = "game"; 3 | public static GAMEOVER: string = "gameOver"; 4 | } 5 | -------------------------------------------------------------------------------- /games/space-invaders/src/models/LevelData.ts: -------------------------------------------------------------------------------- 1 | export class LevelData { 2 | public cols: number; 3 | public rows: number; 4 | public map: number[][]; 5 | 6 | public constructor(cols: number, rows: number) { 7 | this.cols = cols; 8 | this.rows = rows; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /games/space-invaders/src/utils/Colors.ts: -------------------------------------------------------------------------------- 1 | export class Colors { 2 | public static BACKGROUND: number = 0x307291; 3 | public static BACKGROUND_DARK: number = 0x204d63; 4 | 5 | public static DYNAMIC_TEXT: number = 0xc1ddea; 6 | public static STATIC_TEXT: number = 0x6fb0cf; 7 | 8 | public static GAME_ITEMS: number = 0xb5d6e6; 9 | } 10 | -------------------------------------------------------------------------------- /games/space-invaders/src/utils/MagicValues.ts: -------------------------------------------------------------------------------- 1 | export class MagicValues { 2 | public static BORDER_OFFSET: number = 18; 3 | public static SHARED_OBJECT_NAME: string = "SpaceInvadersPalidor"; 4 | } 5 | -------------------------------------------------------------------------------- /games/space-invaders/src/utils/SharedObjectManager.ts: -------------------------------------------------------------------------------- 1 | export class SharedObjectManager {} 2 | -------------------------------------------------------------------------------- /games/space-invaders/src/utils/ViewPortSize.ts: -------------------------------------------------------------------------------- 1 | export class ViewPortSize { 2 | public static MAX_WIDTH: number = 340; 3 | public static MAX_HEIGHT: number = 480; 4 | public static HALF_WIDTH: number = 170; 5 | public static HALF_HEIGHT: number = 240; 6 | } 7 | -------------------------------------------------------------------------------- /games/space-invaders/src/views/components/BattleFieldComponent.ts: -------------------------------------------------------------------------------- 1 | import { Container } from "pixi.js"; 2 | 3 | export class BattleFieldComponent extends Container { 4 | public constructor() { 5 | super(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /games/space-invaders/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /games/tetris/.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "recursive": true, 3 | "full-trace": true, 4 | "bail": true, 5 | "spec": "./test/**/*.test.ts", 6 | "require": "reflect-metadata" 7 | } 8 | -------------------------------------------------------------------------------- /games/tetris/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_cancel_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_cancel_over.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_cancel_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_cancel_up.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_config_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_config_over.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_config_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_config_up.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_confirm_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_confirm_over.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_confirm_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_confirm_up.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_home_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_home_over.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_home_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_home_up.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_pause_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_pause_over.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_pause_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_pause_up.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_reset_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_reset_over.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_reset_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_reset_up.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_resume_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_resume_over.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_resume_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_resume_up.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_retry_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_retry_over.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_retry_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_retry_up.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_start_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_start_over.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/buttons/button_start_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/buttons/button_start_up.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/displays/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/displays/grid.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/displays/logo_setzer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/displays/logo_setzer.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/displays/logo_tetris.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/displays/logo_tetris.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/displays/next_tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/displays/next_tile.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/tiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/tiles.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/tiles/tile_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/tiles/tile_01.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/tiles/tile_02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/tiles/tile_02.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/tiles/tile_03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/tiles/tile_03.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/tiles/tile_04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/tiles/tile_04.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/tiles/tile_05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/tiles/tile_05.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/tiles/tile_06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/tiles/tile_06.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/tiles/tile_07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/tiles/tile_07.png -------------------------------------------------------------------------------- /games/tetris/assets/atlas/tiles/tile_08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/atlas/tiles/tile_08.png -------------------------------------------------------------------------------- /games/tetris/assets/fonts/SimpleSmalPixel7_.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/fonts/SimpleSmalPixel7_.png -------------------------------------------------------------------------------- /games/tetris/assets/fonts/SimpleSmallPixel7_0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/fonts/SimpleSmallPixel7_0.png -------------------------------------------------------------------------------- /games/tetris/assets/logo_typescript.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/logo_typescript.png -------------------------------------------------------------------------------- /games/tetris/assets/tetris-pixijs-atlas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/assets/tetris-pixijs-atlas.png -------------------------------------------------------------------------------- /games/tetris/media/gif_tetris_ts_demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/media/gif_tetris_ts_demo.gif -------------------------------------------------------------------------------- /games/tetris/media/img_cover_tetris_ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/media/img_cover_tetris_ts.png -------------------------------------------------------------------------------- /games/tetris/media/img_game_tetris_ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/media/img_game_tetris_ts.png -------------------------------------------------------------------------------- /games/tetris/media/img_ss_tetris_ts_01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/games/tetris/media/img_ss_tetris_ts_01.png -------------------------------------------------------------------------------- /games/tetris/src/commands/GameOverCommand.ts: -------------------------------------------------------------------------------- 1 | import { ICommand, inject, injectable } from "@robotlegsjs/core"; 2 | import { GameModel } from "../models/GameModel"; 3 | import { GameStatus } from "../models/GameStatus"; 4 | import { FlowService } from "../services/FlowService"; 5 | 6 | @injectable() 7 | export class GameOverCommand implements ICommand { 8 | @inject(GameModel) 9 | private _model: GameModel; 10 | 11 | @inject(FlowService) 12 | private _flowService: FlowService; 13 | 14 | public execute(): void { 15 | this._model.status = GameStatus.GAMEOVER; 16 | this._flowService.showGameOverPopup(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /games/tetris/src/index.ts: -------------------------------------------------------------------------------- 1 | import "reflect-metadata"; 2 | import { Game } from "./Game"; 3 | 4 | const game: Game = new Game(); 5 | 6 | game.render(); 7 | -------------------------------------------------------------------------------- /games/tetris/src/mediators/GameViewMediator.ts: -------------------------------------------------------------------------------- 1 | import { inject, injectable } from "@robotlegsjs/core"; 2 | import { Mediator } from "@robotlegsjs/pixi"; 3 | import { GameService } from "../services/GameService"; 4 | import { GameView } from "../views/GameView"; 5 | 6 | @injectable() 7 | export class GameViewMediator extends Mediator { 8 | @inject(GameService) 9 | private _gameService: GameService; 10 | 11 | public initialize(): void { 12 | this.view.createComponents(); 13 | 14 | this._gameService.createLevel(); 15 | } 16 | 17 | public destroy(): void { 18 | this.view.destroy(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /games/tetris/src/models/GameModel.ts: -------------------------------------------------------------------------------- 1 | import { injectable } from "@robotlegsjs/core"; 2 | import { TileGroup } from "./TileGroup"; 3 | 4 | @injectable() 5 | export class GameModel { 6 | public score: number; 7 | public level: number; 8 | public lines: number; 9 | public hiScore: number; 10 | 11 | public currentPiece: TileGroup; 12 | public nextPiece: TileGroup; 13 | 14 | public status: string; 15 | 16 | public constructor() { 17 | this.clear(); 18 | } 19 | 20 | public clear(): void { 21 | this.score = 0; 22 | this.level = 1; 23 | this.lines = 0; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /games/tetris/src/models/GameStatus.ts: -------------------------------------------------------------------------------- 1 | export class GameStatus { 2 | public static GAME: string = "game"; 3 | public static GAMEOVER: string = "gameOver"; 4 | } 5 | -------------------------------------------------------------------------------- /games/tetris/src/utils/Colors.ts: -------------------------------------------------------------------------------- 1 | export class Colors { 2 | public static BACKGROUND: number = 0x307291; 3 | public static BACKGROUND_DARK: number = 0x204d63; 4 | 5 | public static DYNAMIC_TEXT: number = 0xc1ddea; 6 | public static STATIC_TEXT: number = 0x6fb0cf; 7 | 8 | public static GAME_ITEMS: number = 0xb5d6e6; 9 | } 10 | -------------------------------------------------------------------------------- /games/tetris/src/utils/MagicValues.ts: -------------------------------------------------------------------------------- 1 | export class MagicValues { 2 | public static BORDER_OFFSET: number = 18; 3 | public static SHARED_OBJECT_NAME: String = "TetrisPalidor"; 4 | } 5 | -------------------------------------------------------------------------------- /games/tetris/src/utils/ViewPortSize.ts: -------------------------------------------------------------------------------- 1 | export class ViewPortSize { 2 | public static MAX_WIDTH: number = 340; 3 | public static MAX_HEIGHT: number = 480; 4 | public static HALF_WIDTH: number = 170; 5 | public static HALF_HEIGHT: number = 240; 6 | } 7 | -------------------------------------------------------------------------------- /games/tetris/src/views/components/GridComponent.ts: -------------------------------------------------------------------------------- 1 | import { Container } from "pixi.js"; 2 | import { TilePool } from "../../utils/TilePool"; 3 | import { TileDisplay } from "./TileDisplay"; 4 | 5 | export class GridComponent extends Container { 6 | public clear(): void { 7 | while (this.children.length > 0) { 8 | if (this.getChildAt(0) instanceof TileDisplay) { 9 | TilePool.back(this.getChildAt(0)); 10 | } 11 | this.removeChildAt(0); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /games/tetris/src/views/components/NextPieceComponent.ts: -------------------------------------------------------------------------------- 1 | import { Container } from "pixi.js"; 2 | 3 | export class NextPieceComponent extends Container { 4 | public constructor() { 5 | super(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /games/tetris/src/views/components/TileDisplay.ts: -------------------------------------------------------------------------------- 1 | import { Sprite, Texture } from "pixi.js"; 2 | 3 | export class TileDisplay extends Sprite { 4 | private _typeId: number; 5 | 6 | public get typeId(): number { 7 | return this._typeId; 8 | } 9 | 10 | public constructor(texture: Texture, typeId: number) { 11 | super(texture); 12 | 13 | this._typeId = typeId; 14 | } 15 | 16 | public removeFromParent(): void { 17 | this.parent.removeChild(this); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /games/tetris/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | -------------------------------------------------------------------------------- /games/tetris/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /games/tetris/test/models/GameModel.test.ts: -------------------------------------------------------------------------------- 1 | import { assert } from "chai"; 2 | import { GameModel } from "../../src/models/GameModel"; 3 | import "../entry"; 4 | 5 | describe("GameModel", () => { 6 | it("Clear: Returns the values to default", () => { 7 | let model: GameModel = new GameModel(); 8 | model.clear(); 9 | let result = model.level === 1 && model.lines === 0 && model.score === 0; 10 | assert.isTrue(result); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /games/tetris/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /games/tetris/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /games/tetris/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "recursive": true, 3 | "full-trace": true, 4 | "bail": true, 5 | "spec": "./test/**/*.test.ts", 6 | "require": "reflect-metadata" 7 | } 8 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/src/index.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | export const dummyMethod = (num1: number, num2: number): number => { 9 | return num1 + num2; 10 | }; 11 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "bluebird/js/browser/bluebird"; 12 | import "es6-map/implement"; 13 | import "es6-symbol/implement"; 14 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/test/robotlegs/bender/utilities/macrobot/support/CallbackNoParametersCommand.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { ICommand, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class CallbackNoParametersCommand implements ICommand { 12 | public execute(): void {} 13 | } 14 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/test/robotlegs/bender/utilities/macrobot/support/NoParametersSignal.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | import { Signal } from "@robotlegsjs/signals"; 10 | 11 | @injectable() 12 | export class NoParametersSignal extends Signal {} 13 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /integration-tests/macrobot-signalcommandmap/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "recursive": true, 3 | "full-trace": true, 4 | "bail": true, 5 | "spec": "./test/**/*.test.ts", 6 | "require": "reflect-metadata" 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/core/docs/robotlegs/extensions/commandCenter/readme.md: -------------------------------------------------------------------------------- 1 | # CommandCenter 2 | 3 | This extension is used by command based extensions such as the Event Command Map. 4 | 5 | It is not intended to be used directly. 6 | -------------------------------------------------------------------------------- /packages/core/docs/robotlegs/extensions/vigilance/readme.md: -------------------------------------------------------------------------------- 1 | # Vigilance Extension 2 | 3 | ## Overview 4 | 5 | The Vigilance Extension throws Errors when warnings, errors or fatal messages are logged. This keeps the good times rolling. -------------------------------------------------------------------------------- /packages/core/docs/robotlegs/framework/readme.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Framework 2 | 3 | - [Context](readme-context.md) 4 | - [Logging](readme-logging.md) 5 | - [Lifecycle](readme-lifecycle.md) 6 | - [Guards](readme-guards.md) 7 | - [Hooks](readme-hooks.md) 8 | -------------------------------------------------------------------------------- /packages/core/docs/robotlegs/readme.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Overview 2 | 3 | ## Framework 4 | 5 | The Robotlegs framework: 6 | 7 | + Context 8 | + Configuration manager 9 | + Extension installer 10 | + Guards and hooks 11 | + Lifecycle 12 | + Logging 13 | 14 | [Framework](framework) 15 | 16 | ## Extensions 17 | 18 | Robotlegs provides a number of built-in extensions: 19 | 20 | + Command map 21 | + Mediator map 22 | + View manager 23 | + And many more 24 | 25 | [Extensions](extensions) 26 | 27 | ## Bundles 28 | 29 | Extensions are combined into convenient drop-in bundles: 30 | 31 | + MVCS Bundle 32 | + And others 33 | 34 | [Bundles](bundles) 35 | -------------------------------------------------------------------------------- /packages/core/media/robotlegs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/core/media/robotlegs.png -------------------------------------------------------------------------------- /packages/core/src/robotlegs/bender/extensions/matching/IClass.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | export type IClass = new (...args: any[]) => T; 9 | -------------------------------------------------------------------------------- /packages/core/src/robotlegs/bender/extensions/matching/IType.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IClass } from "./IClass"; 9 | 10 | export type ISymbol = (description?: string | number) => T; 11 | export type IType = IClass | ISymbol; 12 | -------------------------------------------------------------------------------- /packages/core/src/robotlegs/bender/framework/api/IBundle.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IExtension } from "./IExtension"; 9 | 10 | /** 11 | * A bundle installs a set of Extensions and Configurations into a Context 12 | */ 13 | export interface IBundle extends IExtension {} 14 | -------------------------------------------------------------------------------- /packages/core/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/core/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "bluebird/js/browser/bluebird"; 12 | import "es6-map/implement"; 13 | import "es6-symbol/implement"; 14 | import "jsdom-global"; 15 | -------------------------------------------------------------------------------- /packages/core/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/core/test/robotlegs/bender/extensions/commandCenter/support/NullCommand.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "inversify"; 9 | 10 | @injectable() 11 | export class NullCommand { 12 | public execute(): void {} 13 | } 14 | -------------------------------------------------------------------------------- /packages/core/test/robotlegs/bender/extensions/commandCenter/support/NullCommand2.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "inversify"; 9 | 10 | @injectable() 11 | export class NullCommand2 { 12 | public execute(): void {} 13 | } 14 | -------------------------------------------------------------------------------- /packages/core/test/robotlegs/bender/extensions/commandCenter/support/NullCommand3.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "inversify"; 9 | 10 | @injectable() 11 | export class NullCommand3 { 12 | public execute(): void {} 13 | } 14 | -------------------------------------------------------------------------------- /packages/core/test/robotlegs/bender/framework/impl/objectSupport/TestObject.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | export class TestObject { 9 | public constructor(public name: string) { 10 | this.name = name; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/core/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/core/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/core/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/createjs/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/createjs/deploy-example.sh: -------------------------------------------------------------------------------- 1 | yarn build:example 2 | rm -Rf gh-pages 3 | mkdir -p gh-pages 4 | cd gh-pages 5 | git init . 6 | git remote add origin git@github.com:RobotlegsJS/RobotlegsJS-CreateJS.git 7 | cp -r ../dist/* . 8 | git checkout -b gh-pages 9 | git add . 10 | git commit -m "update example build" 11 | git push origin gh-pages --force 12 | -------------------------------------------------------------------------------- /packages/createjs/example/index.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import "reflect-metadata"; 9 | import { Game } from "./Game"; 10 | 11 | (window).initGame = () => { 12 | let game: Game = new Game(); 13 | (window).game = game; 14 | }; 15 | -------------------------------------------------------------------------------- /packages/createjs/example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.example.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/createjs/src/robotlegs/bender/extensions/contextView/api/IContextView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | // eslint-disable-next-line @rushstack/typedef-var 9 | export const IContextView = Symbol("IContextView"); 10 | export interface IContextView { 11 | view: createjs.Stage; 12 | } 13 | -------------------------------------------------------------------------------- /packages/createjs/static/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/createjs/static/images/loading.gif -------------------------------------------------------------------------------- /packages/createjs/static/images/robotlegs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/createjs/static/images/robotlegs.png -------------------------------------------------------------------------------- /packages/createjs/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Your Game", 3 | "short_name": "Your Game", 4 | "start_url": "index.html", 5 | "display": "standalone", 6 | "orientation": "landscape", 7 | "icons": [ 8 | { 9 | "src": "icon.png", 10 | "sizes": "512x512", 11 | "type": "image/png" 12 | }, 13 | { 14 | "src": "launcher-icon-2x.png", 15 | "sizes": "96x96", 16 | "type": "image/png" 17 | }, 18 | { 19 | "src": "launcher-icon-3x.png", 20 | "sizes": "144x144", 21 | "type": "image/png" 22 | }, 23 | { 24 | "src": "launcher-icon-4x.png", 25 | "sizes": "192x192", 26 | "type": "image/png" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /packages/createjs/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/createjs/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "bluebird/js/browser/bluebird"; 12 | import "es6-map/implement"; 13 | import "es6-symbol/implement"; 14 | -------------------------------------------------------------------------------- /packages/createjs/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/createjs/test/robotlegs/bender/extensions/mediatorMap/support/EmptyMediator.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class EmptyMediator {} 12 | -------------------------------------------------------------------------------- /packages/createjs/test/robotlegs/bender/extensions/mediatorMap/support/ExampleView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | export class ExampleView extends createjs.Container {} 9 | -------------------------------------------------------------------------------- /packages/createjs/test/robotlegs/bender/extensions/mediatorMap/support/GrumpyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class GrumpyGuard implements IGuard { 12 | public approve(): boolean { 13 | return false; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/createjs/test/robotlegs/bender/extensions/mediatorMap/support/HappyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class HappyGuard implements IGuard { 12 | public approve(): boolean { 13 | return true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/createjs/test/robotlegs/bender/extensions/mediatorMap/support/NotAView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NotAView { 12 | public mediatorName: string; 13 | } 14 | -------------------------------------------------------------------------------- /packages/createjs/test/robotlegs/bender/extensions/mediatorMap/support/NullMediator.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NullMediator {} 12 | -------------------------------------------------------------------------------- /packages/createjs/test/robotlegs/bender/extensions/mediatorMap/support/NullMediator2.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NullMediator2 {} 12 | -------------------------------------------------------------------------------- /packages/createjs/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/createjs/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/createjs/tsconfig.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-example" 5 | }, 6 | "include": ["./src/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/createjs/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/eventemitter3/.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "recursive": true, 3 | "full-trace": true, 4 | "bail": true, 5 | "spec": "./test/**/*.test.ts", 6 | "require": "reflect-metadata" 7 | } 8 | -------------------------------------------------------------------------------- /packages/eventemitter3/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/eventemitter3/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs EventEmitter3 Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/eventemitter3/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "bluebird/js/browser/bluebird"; 12 | import "es6-map/implement"; 13 | import "es6-symbol/implement"; 14 | -------------------------------------------------------------------------------- /packages/eventemitter3/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/eventemitter3/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/eventemitter3/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/eventemitter3/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/macrobot/.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "recursive": true, 3 | "full-trace": true, 4 | "bail": true, 5 | "spec": "./test/**/*.test.ts", 6 | "require": "reflect-metadata" 7 | } 8 | -------------------------------------------------------------------------------- /packages/macrobot/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/macrobot/src/robotlegs/bender/utilities/macrobot/api/IAsyncCommand.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { ICommand } from "@robotlegsjs/core"; 9 | 10 | export interface IAsyncCommand extends ICommand { 11 | registerCompleteCallback(callback: Function): void; 12 | } 13 | -------------------------------------------------------------------------------- /packages/macrobot/src/robotlegs/bender/utilities/macrobot/dsl/ISubCommandUnMapper.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IClass, ICommand } from "@robotlegsjs/core"; 9 | 10 | export interface ISubCommandUnMapper { 11 | remove(commandClass: IClass): void; 12 | } 13 | -------------------------------------------------------------------------------- /packages/macrobot/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/macrobot/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "bluebird/js/browser/bluebird"; 12 | import "es6-map/implement"; 13 | import "es6-symbol/implement"; 14 | -------------------------------------------------------------------------------- /packages/macrobot/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/macrobot/test/robotlegs/bender/utilities/macrobot/support/GrumpyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class GrumpyGuard implements IGuard { 12 | public approve(): boolean { 13 | return false; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/macrobot/test/robotlegs/bender/utilities/macrobot/support/HappyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class HappyGuard implements IGuard { 12 | public approve(): boolean { 13 | return true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/macrobot/test/robotlegs/bender/utilities/macrobot/support/NullCommand.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { ICommand, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NullCommand implements ICommand { 12 | public execute(): void { 13 | // do nothing 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/macrobot/test/robotlegs/bender/utilities/macrobot/support/NullCommand2.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { ICommand, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NullCommand2 implements ICommand { 12 | public execute(): void { 13 | // do nothing 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/macrobot/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/macrobot/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/macrobot/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/openfl/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/openfl/deploy-example.sh: -------------------------------------------------------------------------------- 1 | yarn build:example 2 | rm -Rf gh-pages 3 | mkdir -p gh-pages 4 | cd gh-pages 5 | git init . 6 | git remote add origin git@github.com:RobotlegsJS/RobotlegsJS-OpenFL.git 7 | cp -r ../dist/* . 8 | git checkout -b gh-pages 9 | git add . 10 | git commit -m "update example build" 11 | git push origin gh-pages --force 12 | -------------------------------------------------------------------------------- /packages/openfl/example/index.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import "reflect-metadata"; 9 | import { Game } from "./Game"; 10 | 11 | (window).initGame = () => { 12 | let game: Game = new Game(); 13 | (window).game = game; 14 | }; 15 | -------------------------------------------------------------------------------- /packages/openfl/example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.example.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/openfl/src/robotlegs/bender/extensions/contextView/api/IContextView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import Stage from "openfl/display/Stage"; 9 | 10 | // eslint-disable-next-line @rushstack/typedef-var 11 | export const IContextView = Symbol("IContextView"); 12 | export interface IContextView { 13 | view: Stage; 14 | } 15 | -------------------------------------------------------------------------------- /packages/openfl/static/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/openfl/static/images/loading.gif -------------------------------------------------------------------------------- /packages/openfl/static/images/openfl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/openfl/static/images/openfl.png -------------------------------------------------------------------------------- /packages/openfl/static/images/robotlegs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/openfl/static/images/robotlegs.png -------------------------------------------------------------------------------- /packages/openfl/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Your Game", 3 | "short_name": "Your Game", 4 | "start_url": "index.html", 5 | "display": "standalone", 6 | "orientation": "landscape", 7 | "icons": [ 8 | { 9 | "src": "icon.png", 10 | "sizes": "512x512", 11 | "type": "image/png" 12 | }, 13 | { 14 | "src": "launcher-icon-2x.png", 15 | "sizes": "96x96", 16 | "type": "image/png" 17 | }, 18 | { 19 | "src": "launcher-icon-3x.png", 20 | "sizes": "144x144", 21 | "type": "image/png" 22 | }, 23 | { 24 | "src": "launcher-icon-4x.png", 25 | "sizes": "192x192", 26 | "type": "image/png" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /packages/openfl/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/openfl/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "bluebird/js/browser/bluebird"; 12 | import "es6-map/implement"; 13 | import "es6-symbol/implement"; 14 | -------------------------------------------------------------------------------- /packages/openfl/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/openfl/test/robotlegs/bender/extensions/mediatorMap/support/EmptyMediator.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class EmptyMediator {} 12 | -------------------------------------------------------------------------------- /packages/openfl/test/robotlegs/bender/extensions/mediatorMap/support/ExampleView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import DisplayObjectContainer from "openfl/display/DisplayObjectContainer"; 9 | 10 | export class ExampleView extends DisplayObjectContainer {} 11 | -------------------------------------------------------------------------------- /packages/openfl/test/robotlegs/bender/extensions/mediatorMap/support/GrumpyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class GrumpyGuard implements IGuard { 12 | public approve(): boolean { 13 | return false; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/openfl/test/robotlegs/bender/extensions/mediatorMap/support/HappyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class HappyGuard implements IGuard { 12 | public approve(): boolean { 13 | return true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/openfl/test/robotlegs/bender/extensions/mediatorMap/support/NotAView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NotAView { 12 | public mediatorName: string; 13 | } 14 | -------------------------------------------------------------------------------- /packages/openfl/test/robotlegs/bender/extensions/mediatorMap/support/NullMediator.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NullMediator {} 12 | -------------------------------------------------------------------------------- /packages/openfl/test/robotlegs/bender/extensions/mediatorMap/support/NullMediator2.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NullMediator2 {} 12 | -------------------------------------------------------------------------------- /packages/openfl/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/openfl/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/openfl/tsconfig.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-example" 5 | }, 6 | "include": ["./src/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/openfl/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/phaser-ce-signalcommandmap/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/phaser-ce-signalcommandmap/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/phaser-ce-signalcommandmap/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "bluebird/js/browser/bluebird"; 12 | import "es6-map/implement"; 13 | import "es6-symbol/implement"; 14 | -------------------------------------------------------------------------------- /packages/phaser-ce-signalcommandmap/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/phaser-ce-signalcommandmap/test/robotlegs/bender/extensions/signalCommandMap/support/RelaySignal.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class RelaySignal extends Phaser.Signal { 12 | public constructor() { 13 | super(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/phaser-ce-signalcommandmap/test/robotlegs/bender/extensions/signalCommandMap/support/TargetSignal.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class TargetSignal extends Phaser.Signal { 12 | public constructor() { 13 | super(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/phaser-ce-signalcommandmap/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/phaser-ce-signalcommandmap/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/phaser-ce-signalcommandmap/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/phaser-ce/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/phaser-ce/example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.example.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/phaser-ce/src/robotlegs/bender/extensions/contextStateManager/api/IContextStateManager.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | // eslint-disable-next-line @rushstack/typedef-var 9 | export const IContextStateManager = Symbol("IContextStateManager"); 10 | export interface IContextStateManager { 11 | stateManager: Phaser.StateManager; 12 | } 13 | -------------------------------------------------------------------------------- /packages/phaser-ce/static/assets/player.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/phaser-ce/static/assets/player.png -------------------------------------------------------------------------------- /packages/phaser-ce/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Your Game", 3 | "short_name": "Your Game", 4 | "start_url": "index.html", 5 | "display": "standalone", 6 | "orientation": "landscape", 7 | "icons": [ 8 | { 9 | "src": "icon.png", 10 | "sizes": "512x512", 11 | "type": "image/png" 12 | }, 13 | { 14 | "src": "launcher-icon-2x.png", 15 | "sizes": "96x96", 16 | "type": "image/png" 17 | }, 18 | { 19 | "src": "launcher-icon-3x.png", 20 | "sizes": "144x144", 21 | "type": "image/png" 22 | }, 23 | { 24 | "src": "launcher-icon-4x.png", 25 | "sizes": "192x192", 26 | "type": "image/png" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /packages/phaser-ce/static/styles/main.css: -------------------------------------------------------------------------------- 1 | html { 2 | width: 100%; 3 | height: 100%; 4 | margin: 0px; 5 | padding: 0px; 6 | } 7 | 8 | body { 9 | height: inherit; 10 | width: inherit; 11 | margin: 0px; 12 | display: flex; 13 | justify-content: center; 14 | align-items: center; 15 | } 16 | -------------------------------------------------------------------------------- /packages/phaser-ce/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/phaser-ce/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /// 11 | 12 | /* eslint-disable import/no-internal-modules */ 13 | import "bluebird/js/browser/bluebird"; 14 | import "es6-map/implement"; 15 | import "es6-symbol/implement"; 16 | -------------------------------------------------------------------------------- /packages/phaser-ce/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/phaser-ce/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/phaser-ce/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/phaser-ce/tsconfig.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-example" 5 | }, 6 | "include": ["./src/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/phaser-ce/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/phaser/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/phaser/deploy-example.sh: -------------------------------------------------------------------------------- 1 | yarn build:example 2 | rm -Rf gh-pages 3 | mkdir -p gh-pages 4 | cd gh-pages 5 | git init . 6 | git remote add origin git@github.com:RobotlegsJS/RobotlegsJS-Phaser.git 7 | cp -r ../dist/* . 8 | git checkout -b gh-pages 9 | git add . 10 | git commit -m "update example build" 11 | git push origin gh-pages --force 12 | -------------------------------------------------------------------------------- /packages/phaser/example/commands/MainCommand.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { Event, ICommand, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class MainCommand implements ICommand { 12 | public execute(event: Event): void { 13 | console.log(event.type, event.data); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/phaser/example/constants/SceneKey.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | export class SceneKey { 9 | public static BOOT: string = "Boot"; 10 | public static PRELOAD: string = "Preload"; 11 | public static MAIN: string = "Main"; 12 | } 13 | -------------------------------------------------------------------------------- /packages/phaser/example/index.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | import "reflect-metadata"; 11 | import { Game } from "./Game"; 12 | 13 | (window).initGame = function () { 14 | let game: Game = new Game(); 15 | (window).game = game; 16 | }; 17 | -------------------------------------------------------------------------------- /packages/phaser/example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.example.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/phaser/src/robotlegs/bender/extensions/contextSceneManager/api/IContextSceneManager.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | // eslint-disable-next-line @rushstack/typedef-var 9 | export const IContextSceneManager = Symbol("IContextSceneManager"); 10 | export interface IContextSceneManager { 11 | sceneManager: Phaser.Scenes.SceneManager; 12 | } 13 | -------------------------------------------------------------------------------- /packages/phaser/static/images/koreez.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/phaser/static/images/koreez.jpg -------------------------------------------------------------------------------- /packages/phaser/static/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/phaser/static/images/loading.gif -------------------------------------------------------------------------------- /packages/phaser/static/images/phaser-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/phaser/static/images/phaser-logo.png -------------------------------------------------------------------------------- /packages/phaser/static/images/robotlegs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/phaser/static/images/robotlegs.png -------------------------------------------------------------------------------- /packages/phaser/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Your Game", 3 | "short_name": "Your Game", 4 | "start_url": "index.html", 5 | "display": "standalone", 6 | "orientation": "landscape", 7 | "icons": [ 8 | { 9 | "src": "icon.png", 10 | "sizes": "512x512", 11 | "type": "image/png" 12 | }, 13 | { 14 | "src": "launcher-icon-2x.png", 15 | "sizes": "96x96", 16 | "type": "image/png" 17 | }, 18 | { 19 | "src": "launcher-icon-3x.png", 20 | "sizes": "144x144", 21 | "type": "image/png" 22 | }, 23 | { 24 | "src": "launcher-icon-4x.png", 25 | "sizes": "192x192", 26 | "type": "image/png" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /packages/phaser/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/phaser/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/phaser/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/phaser/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/phaser/tsconfig.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-example" 5 | }, 6 | "include": ["./src/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/phaser/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/pixi-palidor/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/pixi-palidor/deploy-example.sh: -------------------------------------------------------------------------------- 1 | yarn build:example 2 | rm -Rf gh-pages 3 | mkdir -p gh-pages 4 | cd gh-pages 5 | git init . 6 | git remote add origin git@github.com:RobotlegsJS/RobotlegsJS-Pixi-Palidor.git 7 | cp -r ../dist/* . 8 | git checkout -b gh-pages 9 | git add . 10 | git commit -m "update example build" 11 | git push origin gh-pages --force 12 | -------------------------------------------------------------------------------- /packages/pixi-palidor/example/index.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import "reflect-metadata"; 9 | import { Game } from "./Game"; 10 | 11 | (window).initGame = () => { 12 | let game: Game = new Game(); 13 | (window).game = game; 14 | }; 15 | -------------------------------------------------------------------------------- /packages/pixi-palidor/example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.example.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/pixi-palidor/example/views/PalidorView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { AbstractView } from "./AbstractView"; 9 | 10 | export class PalidorView extends AbstractView { 11 | public constructor() { 12 | super("Palidor", "images/palidor.png", 0xebf0f9, 0xa2a2d0); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/pixi-palidor/example/views/RobotlegsView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { AbstractView } from "./AbstractView"; 9 | 10 | export class RobotlegsView extends AbstractView { 11 | public constructor() { 12 | super("RobotlegsJS", "images/robotlegsjs.png", 0x007acd, 0x005c9a); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/pixi-palidor/media/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/pixi-palidor/media/layers.png -------------------------------------------------------------------------------- /packages/pixi-palidor/static/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/pixi-palidor/static/images/loading.gif -------------------------------------------------------------------------------- /packages/pixi-palidor/static/images/palidor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/pixi-palidor/static/images/palidor.png -------------------------------------------------------------------------------- /packages/pixi-palidor/static/images/pixijs-v6-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/pixi-palidor/static/images/pixijs-v6-logo.png -------------------------------------------------------------------------------- /packages/pixi-palidor/static/images/robotlegsjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/pixi-palidor/static/images/robotlegsjs.png -------------------------------------------------------------------------------- /packages/pixi-palidor/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/pixi-palidor/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "es6-map/implement"; 12 | import "es6-symbol/implement"; 13 | -------------------------------------------------------------------------------- /packages/pixi-palidor/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/pixi-palidor/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/pixi-palidor/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/pixi-palidor/tsconfig.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-example" 5 | }, 6 | "include": ["./src/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/pixi-palidor/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/pixi-signalmediator/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/pixi-signalmediator/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // Copyright (c) 2016 San Dinh Studios. All Rights Reserved. 4 | // 5 | // NOTICE: You are permitted to use, modify, and distribute this file 6 | // in accordance with the terms of the license agreement accompanying it. 7 | // ------------------------------------------------------------------------------ 8 | 9 | /// 10 | 11 | /* eslint-disable import/no-internal-modules */ 12 | import "bluebird/js/browser/bluebird"; 13 | import "es6-map/implement"; 14 | import "es6-symbol/implement"; 15 | -------------------------------------------------------------------------------- /packages/pixi-signalmediator/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/pixi-signalmediator/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/pixi-signalmediator/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/pixi-signalmediator/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/pixi/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/pixi/deploy-example.sh: -------------------------------------------------------------------------------- 1 | yarn build:example 2 | rm -Rf gh-pages 3 | mkdir -p gh-pages 4 | cd gh-pages 5 | git init . 6 | git remote add origin git@github.com:RobotlegsJS/RobotlegsJS-Pixi.git 7 | cp -r ../dist/* . 8 | git checkout -b gh-pages 9 | git add . 10 | git commit -m "update example build" 11 | git push origin gh-pages --force 12 | -------------------------------------------------------------------------------- /packages/pixi/example/index.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import "reflect-metadata"; 9 | import { Game } from "./Game"; 10 | 11 | (window).initGame = () => { 12 | let game: Game = new Game(); 13 | (window).game = game; 14 | }; 15 | -------------------------------------------------------------------------------- /packages/pixi/example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.example.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/pixi/src/robotlegs/bender/extensions/contextView/api/IContextView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { Container } from "pixi.js"; 9 | 10 | // eslint-disable-next-line @rushstack/typedef-var 11 | export const IContextView = Symbol("IContextView"); 12 | export interface IContextView { 13 | view: Container; 14 | } 15 | -------------------------------------------------------------------------------- /packages/pixi/static/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/pixi/static/images/loading.gif -------------------------------------------------------------------------------- /packages/pixi/static/images/pixijs-v6-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/pixi/static/images/pixijs-v6-logo.png -------------------------------------------------------------------------------- /packages/pixi/static/images/robotlegs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobotlegsJS/RobotlegsJS-Framework/5c96ef027f4135c0f23e72e053b518bf45fb81d4/packages/pixi/static/images/robotlegs.png -------------------------------------------------------------------------------- /packages/pixi/static/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Your Game", 3 | "short_name": "Your Game", 4 | "start_url": "index.html", 5 | "display": "standalone", 6 | "orientation": "landscape", 7 | "icons": [ 8 | { 9 | "src": "icon.png", 10 | "sizes": "512x512", 11 | "type": "image/png" 12 | }, 13 | { 14 | "src": "launcher-icon-2x.png", 15 | "sizes": "96x96", 16 | "type": "image/png" 17 | }, 18 | { 19 | "src": "launcher-icon-3x.png", 20 | "sizes": "144x144", 21 | "type": "image/png" 22 | }, 23 | { 24 | "src": "launcher-icon-4x.png", 25 | "sizes": "192x192", 26 | "type": "image/png" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /packages/pixi/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/pixi/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "bluebird/js/browser/bluebird"; 12 | import "es6-map/implement"; 13 | import "es6-symbol/implement"; 14 | -------------------------------------------------------------------------------- /packages/pixi/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/pixi/test/robotlegs/bender/extensions/mediatorMap/support/EmptyMediator.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class EmptyMediator {} 12 | -------------------------------------------------------------------------------- /packages/pixi/test/robotlegs/bender/extensions/mediatorMap/support/GrumpyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class GrumpyGuard implements IGuard { 12 | public approve(): boolean { 13 | return false; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/pixi/test/robotlegs/bender/extensions/mediatorMap/support/HappyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class HappyGuard implements IGuard { 12 | public approve(): boolean { 13 | return true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/pixi/test/robotlegs/bender/extensions/mediatorMap/support/NotAView.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NotAView { 12 | public mediatorName: string; 13 | } 14 | -------------------------------------------------------------------------------- /packages/pixi/test/robotlegs/bender/extensions/mediatorMap/support/NullMediator.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NullMediator {} 12 | -------------------------------------------------------------------------------- /packages/pixi/test/robotlegs/bender/extensions/mediatorMap/support/NullMediator2.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NullMediator2 {} 12 | -------------------------------------------------------------------------------- /packages/pixi/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/pixi/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/pixi/tsconfig.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-example" 5 | }, 6 | "include": ["./src/**/*.ts", "./example/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/pixi/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/signalcommandmap/.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "recursive": true, 3 | "full-trace": true, 4 | "bail": true, 5 | "spec": "./test/**/*.test.ts", 6 | "require": "reflect-metadata" 7 | } 8 | -------------------------------------------------------------------------------- /packages/signalcommandmap/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | // Place your settings in this file to overwrite default and user settings. 2 | { 3 | "typescript.tsdk": "node_modules/typescript/lib" 4 | } 5 | -------------------------------------------------------------------------------- /packages/signalcommandmap/test/README.md: -------------------------------------------------------------------------------- 1 | # Robotlegs Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. -------------------------------------------------------------------------------- /packages/signalcommandmap/test/entry.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | /// 9 | 10 | /* eslint-disable import/no-internal-modules */ 11 | import "bluebird/js/browser/bluebird"; 12 | import "es6-map/implement"; 13 | import "es6-symbol/implement"; 14 | -------------------------------------------------------------------------------- /packages/signalcommandmap/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/signalcommandmap/test/robotlegs/bender/extensions/signalCommandMap/support/GrumpyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class GrumpyGuard implements IGuard { 12 | public approve(): boolean { 13 | return false; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/signalcommandmap/test/robotlegs/bender/extensions/signalCommandMap/support/HappyGuard.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { IGuard, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class HappyGuard implements IGuard { 12 | public approve(): boolean { 13 | return true; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/signalcommandmap/test/robotlegs/bender/extensions/signalCommandMap/support/NullCommand.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { ICommand, injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class NullCommand implements ICommand { 12 | public execute(): void { 13 | // do nothing. 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/signalcommandmap/test/robotlegs/bender/extensions/signalCommandMap/support/Payload.ts: -------------------------------------------------------------------------------- 1 | // ------------------------------------------------------------------------------ 2 | // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | // 4 | // NOTICE: You are permitted to use, modify, and distribute this file 5 | // in accordance with the terms of the license agreement accompanying it. 6 | // ------------------------------------------------------------------------------ 7 | 8 | import { injectable } from "@robotlegsjs/core"; 9 | 10 | @injectable() 11 | export class Payload {} 12 | -------------------------------------------------------------------------------- /packages/signalcommandmap/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/signalcommandmap/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/signalcommandmap/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/signals/.mocharc.json: -------------------------------------------------------------------------------- 1 | { 2 | "recursive": true, 3 | "full-trace": true, 4 | "bail": true, 5 | "spec": "./test/**/*.test.ts", 6 | "require": "reflect-metadata" 7 | } 8 | -------------------------------------------------------------------------------- /packages/signals/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib" 3 | } 4 | -------------------------------------------------------------------------------- /packages/signals/src/org/osflash/signals/events/IBubbleEventHandler.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | import { IEvent } from "./IEvent"; 9 | 10 | export interface IBubbleEventHandler { 11 | /** 12 | * Handler for event bubbling. 13 | * It's left to the IBubbleEventHandler to decide what to do with the event. 14 | * 15 | * @param event The event that bubbled up. 16 | * @return whether to continue bubbling this event 17 | */ 18 | onEventBubbled(event: IEvent): boolean; 19 | } 20 | -------------------------------------------------------------------------------- /packages/signals/test/README.md: -------------------------------------------------------------------------------- 1 | # Signals Testing 2 | 3 | Unit tests are written using Mocha, Chai and Sinon. 4 | -------------------------------------------------------------------------------- /packages/signals/test/entry.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | /// 9 | 10 | import "bluebird"; 11 | import "es6-map"; 12 | import "es6-symbol"; 13 | -------------------------------------------------------------------------------- /packages/signals/test/index.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | // require all modules ending in ".test.ts" from the 4 | // current directory and all subdirectories 5 | const testsContext = require.context(".", true, /\.test\.ts$/); 6 | 7 | testsContext.keys().forEach(testsContext); 8 | -------------------------------------------------------------------------------- /packages/signals/test/mock/MockEvent.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | export class MockEvent { 9 | public constructor(public type: string) { 10 | this.type = type; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/signals/test/mock/MockMouseEvent.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | import { MockEvent } from "./MockEvent"; 9 | 10 | export class MockMouseEvent extends MockEvent {} 11 | -------------------------------------------------------------------------------- /packages/signals/test/mock/Sprite.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | export class Sprite {} 9 | -------------------------------------------------------------------------------- /packages/signals/test/org/osflash/signals/support/Base.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | export class Base {} 9 | -------------------------------------------------------------------------------- /packages/signals/test/org/osflash/signals/support/BubbleHater.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | import { IBubbleEventHandler } from "../../../../../src/org/osflash/signals/events/IBubbleEventHandler"; 9 | import { IEvent } from "../../../../../src/org/osflash/signals/events/IEvent"; 10 | 11 | export class BubbleHater implements IBubbleEventHandler { 12 | public onEventBubbled(event: IEvent): boolean { 13 | throw new Error("I SAID NO BUBBLES!!!"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/signals/test/org/osflash/signals/support/Inherited1.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | import { Base } from "./Base"; 9 | 10 | export class Inherited1 extends Base {} 11 | -------------------------------------------------------------------------------- /packages/signals/test/org/osflash/signals/support/Inherited2.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. 3 | * 4 | * This source code is licensed under the MIT license found in the 5 | * LICENSE file in the root directory of this source tree. 6 | */ 7 | 8 | import { Inherited1 } from "./Inherited1"; 9 | 10 | export class Inherited2 extends Inherited1 {} 11 | -------------------------------------------------------------------------------- /packages/signals/test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test.json" 3 | } 4 | -------------------------------------------------------------------------------- /packages/signals/tsconfig.eslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | -------------------------------------------------------------------------------- /packages/signals/tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "lib-test" 5 | }, 6 | "include": ["./src/**/*.ts", "./test/**/*.ts"] 7 | } 8 | --------------------------------------------------------------------------------