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