UNPKG

@robotlegsjs/phaser

Version:

RobotlegsJS integration with Phaser Scene Manager

179 lines 7.57 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.SceneManager = void 0; var tslib_1 = require("tslib"); var core_1 = require("@robotlegsjs/core"); var SceneManagerEvent_1 = require("./SceneManagerEvent"); var SceneRegistry_1 = require("./SceneRegistry"); /** * @private */ var SceneManager = /** @class */ (function (_super) { tslib_1.__extends(SceneManager, _super); /*============================================================================*/ /* Constructor */ /*============================================================================*/ /** * @private */ function SceneManager(sceneRegistry) { var _this = _super.call(this) || this; /*============================================================================*/ /* Public Properties */ /*============================================================================*/ _this._sceneManagers = []; /*============================================================================*/ /* Private Properties */ /*============================================================================*/ _this._sceneHandlers = []; _this._viewHandlers = []; _this._registry = sceneRegistry; return _this; } Object.defineProperty(SceneManager.prototype, "sceneManagers", { /** * @inheritDoc */ get: function () { return this._sceneManagers; }, enumerable: false, configurable: true }); /*============================================================================*/ /* Public Functions */ /*============================================================================*/ /** * @inheritDoc */ SceneManager.prototype.addSceneManager = function (sceneManager) { var _this = this; if (!this._validSceneManager(sceneManager)) { return; } this._sceneManagers.push(sceneManager); this._sceneHandlers.forEach(function (handler) { _this._registry.addSceneManager(sceneManager).addSceneHandler(handler); }); this._viewHandlers.forEach(function (handler) { _this._registry.addSceneManager(sceneManager).addViewHandler(handler); }); this.dispatchEvent(new SceneManagerEvent_1.SceneManagerEvent(SceneManagerEvent_1.SceneManagerEvent.SCENE_MANAGER_ADD, sceneManager)); }; /** * @inheritDoc */ SceneManager.prototype.removeSceneManager = function (sceneManager) { var index = this._sceneManagers.indexOf(sceneManager); if (index === -1) { return; } this._sceneManagers.splice(index, 1); var binding = this._registry.getBinding(sceneManager); this._sceneHandlers.forEach(function (handler) { binding.removeSceneHandler(handler); }); this._viewHandlers.forEach(function (handler) { binding.removeViewHandler(handler); }); this.dispatchEvent(new SceneManagerEvent_1.SceneManagerEvent(SceneManagerEvent_1.SceneManagerEvent.SCENE_MANAGER_REMOVE, sceneManager)); }; /** * @inheritDoc */ SceneManager.prototype.addSceneHandler = function (handler) { var _this = this; if (this._sceneHandlers.indexOf(handler) !== -1) { return; } this._sceneHandlers.push(handler); this._sceneManagers.forEach(function (sceneManager) { _this._registry.addSceneManager(sceneManager).addSceneHandler(handler); }); this.dispatchEvent(new SceneManagerEvent_1.SceneManagerEvent(SceneManagerEvent_1.SceneManagerEvent.SCENE_HANDLER_ADD, null, handler)); }; /** * @inheritDoc */ SceneManager.prototype.removeSceneHandler = function (handler) { var _this = this; var index = this._sceneHandlers.indexOf(handler); if (index === -1) { return; } this._sceneHandlers.splice(index, 1); this._sceneManagers.forEach(function (sceneManager) { _this._registry.getBinding(sceneManager).removeSceneHandler(handler); }); this.dispatchEvent(new SceneManagerEvent_1.SceneManagerEvent(SceneManagerEvent_1.SceneManagerEvent.SCENE_HANDLER_REMOVE, null, handler)); }; /** * @inheritDoc */ SceneManager.prototype.addViewHandler = function (handler) { var _this = this; if (this._viewHandlers.indexOf(handler) !== -1) { return; } this._viewHandlers.push(handler); this._sceneManagers.forEach(function (sceneManager) { _this._registry.addSceneManager(sceneManager).addViewHandler(handler); }); this.dispatchEvent(new SceneManagerEvent_1.SceneManagerEvent(SceneManagerEvent_1.SceneManagerEvent.VIEW_HANDLER_ADD, null, null, handler)); }; /** * @inheritDoc */ SceneManager.prototype.removeViewHandler = function (handler) { var _this = this; var index = this._viewHandlers.indexOf(handler); if (index === -1) { return; } this._sceneHandlers.splice(index, 1); this._sceneManagers.forEach(function (sceneManager) { _this._registry.getBinding(sceneManager).removeViewHandler(handler); }); this.dispatchEvent(new SceneManagerEvent_1.SceneManagerEvent(SceneManagerEvent_1.SceneManagerEvent.VIEW_HANDLER_REMOVE, null, null, handler)); }; /** * @inheritDoc */ SceneManager.prototype.removeAllHandlers = function () { var _this = this; this._sceneManagers.forEach(function (sceneManager) { var binding = _this._registry.getBinding(sceneManager); _this._sceneHandlers.forEach(function (handler) { binding.removeSceneHandler(handler); }); _this._viewHandlers.forEach(function (handler) { binding.removeViewHandler(handler); }); }); }; /*============================================================================*/ /* Private Functions */ /*============================================================================*/ SceneManager.prototype._validSceneManager = function (sceneManager) { var valid = true; this._sceneManagers.forEach(function (registeredSceneManager) { if (sceneManager === registeredSceneManager) { valid = false; } }); return valid; }; SceneManager = tslib_1.__decorate([ core_1.injectable(), tslib_1.__metadata("design:paramtypes", [SceneRegistry_1.SceneRegistry]) ], SceneManager); return SceneManager; }(core_1.EventDispatcher)); exports.SceneManager = SceneManager; //# sourceMappingURL=SceneManager.js.map