@robotlegsjs/phaser
Version:
RobotlegsJS integration with Phaser Scene Manager
59 lines • 3.1 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.SceneManagerObserverExtension = void 0;
var SceneManagerObserver_1 = require("./impl/SceneManagerObserver");
var SceneRegistry_1 = require("./impl/SceneRegistry");
var installCount = 0;
/**
* This extension install an automatic Scene Manager Observer
*/
var SceneManagerObserverExtension = /** @class */ (function () {
function SceneManagerObserverExtension() {
}
/*============================================================================*/
/* Public Functions */
/*============================================================================*/
/**
* @inheritDoc
*/
SceneManagerObserverExtension.prototype.extend = function (context) {
context.whenInitializing(this._whenInitializing.bind(this));
context.whenDestroying(this._whenDestroying.bind(this));
installCount++;
this._injector = context.injector;
this._logger = context.getLogger(this);
};
/*============================================================================*/
/* Private Functions */
/*============================================================================*/
SceneManagerObserverExtension.prototype._whenInitializing = function () {
// Hark, an actual Singleton!
if (!SceneManagerObserverExtension._sceneObserver) {
var containerRegistry = this._injector.get(SceneRegistry_1.SceneRegistry);
this._logger.debug("Creating genuine SceneManagerObserver Singleton");
SceneManagerObserverExtension._sceneObserver = new SceneManagerObserver_1.SceneManagerObserver(containerRegistry);
}
};
SceneManagerObserverExtension.prototype._whenDestroying = function () {
installCount--;
if (installCount === 0) {
this._logger.debug("Destroying genuine SceneManagerObserver Singleton");
SceneManagerObserverExtension._sceneObserver.destroy();
SceneManagerObserverExtension._sceneObserver = null;
}
};
/*============================================================================*/
/* Private Static Properties */
/*============================================================================*/
// Really? Yes, there can be only one.
SceneManagerObserverExtension._sceneObserver = null;
return SceneManagerObserverExtension;
}());
exports.SceneManagerObserverExtension = SceneManagerObserverExtension;
//# sourceMappingURL=SceneManagerObserverExtension.js.map