UNPKG

@robotlegsjs/phaser

Version:

RobotlegsJS integration with Phaser Scene Manager

108 lines 4.43 kB
"use strict"; // ------------------------------------------------------------------------------ // Copyright (c) 2017-present, RobotlegsJS. All Rights Reserved. // // NOTICE: You are permitted to use, modify, and distribute this file // in accordance with the terms of the license agreement accompanying it. // ------------------------------------------------------------------------------ Object.defineProperty(exports, "__esModule", { value: true }); exports.SceneMediatorMap = void 0; var tslib_1 = require("tslib"); var core_1 = require("@robotlegsjs/core"); var MediatorMapper_1 = require("./MediatorMapper"); var NullMediatorUnmapper_1 = require("./NullMediatorUnmapper"); var SceneMediatorFactory_1 = require("./SceneMediatorFactory"); var SceneMediatorHandler_1 = require("./SceneMediatorHandler"); /** * @private */ var SceneMediatorMap = /** @class */ (function () { /*============================================================================*/ /* Constructor */ /*============================================================================*/ /** * @private */ function SceneMediatorMap(context) { /*============================================================================*/ /* Private Properties */ /*============================================================================*/ this._mappers = new Map(); this._NULL_UNMAPPER = new NullMediatorUnmapper_1.NullMediatorUnmapper(); this._logger = context.getLogger(this); this._factory = new SceneMediatorFactory_1.SceneMediatorFactory(context.injector); this._sceneHandler = new SceneMediatorHandler_1.SceneMediatorHandler(this._factory); } /*============================================================================*/ /* Public Functions */ /*============================================================================*/ /** * @inheritDoc */ SceneMediatorMap.prototype.mapMatcher = function (matcher) { var desc = matcher.createTypeFilter().descriptor; var mapper = this._mappers.get(desc); if (mapper) { return mapper; } mapper = this._createMapper(matcher); this._mappers.set(desc, mapper); return mapper; }; /** * @inheritDoc */ SceneMediatorMap.prototype.map = function (scene) { return this.mapMatcher(new core_1.TypeMatcher().allOf(scene)); }; /** * @inheritDoc */ SceneMediatorMap.prototype.unmapMatcher = function (matcher) { return this._mappers.get(matcher.createTypeFilter().descriptor) || this._NULL_UNMAPPER; }; /** * @inheritDoc */ SceneMediatorMap.prototype.unmap = function (scene) { return this.unmapMatcher(new core_1.TypeMatcher().allOf(scene)); }; /** * @inheritDoc */ SceneMediatorMap.prototype.handleScene = function (scene, type) { this._sceneHandler.handleScene(scene, type); }; /** * @inheritDoc */ SceneMediatorMap.prototype.mediate = function (scene) { this._sceneHandler.handleItem(scene, scene.constructor); }; /** * @inheritDoc */ SceneMediatorMap.prototype.unmediate = function (scene) { this._factory.removeMediators(scene); }; /** * @inheritDoc */ SceneMediatorMap.prototype.unmediateAll = function () { this._factory.removeAllMediators(); }; /*============================================================================*/ /* Private Functions */ /*============================================================================*/ SceneMediatorMap.prototype._createMapper = function (matcher) { return new MediatorMapper_1.MediatorMapper(matcher.createTypeFilter(), this._sceneHandler, this._logger); }; SceneMediatorMap = tslib_1.__decorate([ core_1.injectable(), tslib_1.__param(0, core_1.inject(core_1.IContext)), tslib_1.__metadata("design:paramtypes", [Object]) ], SceneMediatorMap); return SceneMediatorMap; }()); exports.SceneMediatorMap = SceneMediatorMap; //# sourceMappingURL=SceneMediatorMap.js.map