UNPKG

@robotlegsjs/phaser

Version:

RobotlegsJS integration with Phaser Scene Manager

96 lines 4.01 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.SceneMediatorManager = void 0; /** * @private */ var SceneMediatorManager = /** @class */ (function () { /*============================================================================*/ /* Constructor */ /*============================================================================*/ /** * @private */ function SceneMediatorManager(factory) { this._autoRemoveMap = new Map(); this._factory = factory; } /*============================================================================*/ /* Public Functions */ /*============================================================================*/ /** * @private */ SceneMediatorManager.prototype.addMediator = function (mediator, item, mapping) { var scene = item; // Watch scene for removal if (scene && mapping.autoRemoveEnabled) { if (!this._autoRemoveMap.has(scene.sys.settings.key)) { this._autoRemoveMap.set(scene.sys.settings.key, scene); } scene.sys.events.on("destroy", this._onSceneDestroy, this); scene.sys.events.on("shutdown", this._onSceneDestroy, this); // scene.sys.events.on("sleep", this.onSceneDestroy, this); // scene.sys.events.on("pause", this.onSceneDestroy, this); } // Synchronize with item life-cycle this._initializeMediator(mediator, item); }; /** * @private */ SceneMediatorManager.prototype.removeMediator = function (mediator, item, mapping) { this._destroyMediator(mediator); }; /*============================================================================*/ /* Private Functions */ /*============================================================================*/ SceneMediatorManager.prototype._onSceneDestroy = function (sys) { if (this._autoRemoveMap.has(sys.settings.key)) { var scene = this._autoRemoveMap.get(sys.settings.key); this._autoRemoveMap.delete(sys.settings.key); this._factory.removeMediators(scene); if (this._autoRemoveMap.size === 0) { scene.sys.events.off("destroy", this._onSceneDestroy, this, false); scene.sys.events.off("shutdown", this._onSceneDestroy, this, false); } } }; SceneMediatorManager.prototype._initializeMediator = function (mediator, mediatedItem) { if ("preInitialize" in mediator) { mediator.preInitialize(); } if ("scene" in mediator) { mediator.scene = mediatedItem; } if ("initialize" in mediator) { mediator.initialize(); } if ("postInitialize" in mediator) { mediator.postInitialize(); } }; SceneMediatorManager.prototype._destroyMediator = function (mediator) { if ("preDestroy" in mediator) { mediator.preDestroy(); } if ("destroy" in mediator) { mediator.destroy(); } if ("scene" in mediator) { mediator.scene = null; } if ("postDestroy" in mediator) { mediator.postDestroy(); } }; return SceneMediatorManager; }()); exports.SceneMediatorManager = SceneMediatorManager; //# sourceMappingURL=SceneMediatorManager.js.map