@robotlegsjs/phaser
Version:
RobotlegsJS integration with Phaser Scene Manager
108 lines • 4.43 kB
JavaScript
;
// ------------------------------------------------------------------------------
// 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