@robotlegsjs/phaser
Version:
RobotlegsJS integration with Phaser Scene Manager
81 lines • 3.14 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.ViewMediatorManager = void 0;
/**
* @private
*/
var ViewMediatorManager = /** @class */ (function () {
/*============================================================================*/
/* Constructor */
/*============================================================================*/
/**
* @private
*/
function ViewMediatorManager(factory) {
this._factory = factory;
}
/*============================================================================*/
/* Public Functions */
/*============================================================================*/
/**
* @private
*/
ViewMediatorManager.prototype.addMediator = function (mediator, item, mapping) {
var view = item;
// Watch view for destroy
if (view && mapping.autoRemoveEnabled) {
view.on("destroy", this._onViewDestroy, this);
}
// Synchronize with item life-cycle
this._initializeMediator(mediator, item);
};
/**
* @private
*/
ViewMediatorManager.prototype.removeMediator = function (mediator, item, mapping) {
this._destroyMediator(mediator);
};
/*============================================================================*/
/* Private Functions */
/*============================================================================*/
ViewMediatorManager.prototype._onViewDestroy = function (view) {
this._factory.removeMediators(view);
};
ViewMediatorManager.prototype._initializeMediator = function (mediator, mediatedItem) {
if ("preInitialize" in mediator) {
mediator.preInitialize();
}
if ("view" in mediator) {
mediator.view = mediatedItem;
}
if ("initialize" in mediator) {
mediator.initialize();
}
if ("postInitialize" in mediator) {
mediator.postInitialize();
}
};
ViewMediatorManager.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 ViewMediatorManager;
}());
exports.ViewMediatorManager = ViewMediatorManager;
//# sourceMappingURL=ViewMediatorManager.js.map