mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 10:37:34 +00:00
moved some classes, added layer manager
This commit is contained in:
parent
1d3ad16a07
commit
b5c70687d8
11 changed files with 292 additions and 177 deletions
94
app/Game/Client/View/LayerManager.js
Normal file
94
app/Game/Client/View/LayerManager.js
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
define([
|
||||
"Lib/Utilities/NotificationCenter"
|
||||
],
|
||||
|
||||
function (Nc) {
|
||||
|
||||
function LayerManager() {
|
||||
this.ncTokens = [
|
||||
Nc.on(Nc.ns.client.view.mesh.create, this.createMesh, this),
|
||||
Nc.on(Nc.ns.client.view.animatedMesh.create, this.createAnimatedMesh, this),
|
||||
Nc.on(Nc.ns.client.view.mesh.add, this.addMesh, this),
|
||||
Nc.on(Nc.ns.client.view.mesh.remove, this.removeMesh, this),
|
||||
Nc.on(Nc.ns.client.view.mesh.update, this.updateMesh, this),
|
||||
Nc.on(Nc.ns.client.view.mesh.addFilter, this.addFilter, this),
|
||||
Nc.on(Nc.ns.client.view.mesh.removeFilter, this.removeFilter, this)
|
||||
];
|
||||
}
|
||||
|
||||
LayerManager.prototype.createAndInsert = function(id, parallaxSpeed, referenceId, behind) {
|
||||
|
||||
var referenceIndex = -1;
|
||||
behind = !!behind;
|
||||
|
||||
if (referenceId) {
|
||||
for(var i = 0; i < this.layers.length; i++) {
|
||||
var layer = this.layers[i];
|
||||
|
||||
if (layer.getName() === referenceId) {
|
||||
referenceIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (referenceIndex === -1) {
|
||||
throw new Exception('Reference Layer (' + referenceId + ') could not be found');
|
||||
}
|
||||
} else {
|
||||
referenceIndex = behind ? 0 : this.stage.children.length;
|
||||
}
|
||||
|
||||
var layer = new Layer(id, parallaxSpeed);
|
||||
|
||||
var layerIndex = behind ? referenceIndex : referenceIndex + 1;
|
||||
|
||||
this.layers.splice(layerIndex, 0, layer);
|
||||
this.stage.addChildAt(layer.getContainer(), layerIndex);
|
||||
};
|
||||
|
||||
LayerManager.prototype.getLayerById = function(id) {
|
||||
for (var i = 0; i < this.layers.length; i++) {
|
||||
var layer = this.layers[i];
|
||||
if (layer.getName() === id) {
|
||||
return layer;
|
||||
}
|
||||
};
|
||||
console.warn('No such layer: ' + id);
|
||||
};
|
||||
|
||||
LayerManager.prototype.delegate = function(methodName, layerId) {
|
||||
var layer = this.getLayerById(layerId);
|
||||
var args = arguments.splice(0,2);
|
||||
|
||||
layer[methodName].apply(layer, args);
|
||||
};
|
||||
|
||||
LayerManager.prototype.createMesh = function() {
|
||||
this.delegate(arguments.splice(0,0,'createMesh'));
|
||||
};
|
||||
|
||||
LayerManager.prototype.createAnimatedMesh = function() {
|
||||
this.delegate(arguments.splice(0,0,'createAnimatedMesh'));
|
||||
};
|
||||
|
||||
LayerManager.prototype.addMesh = function() {
|
||||
this.delegate(arguments.splice(0,0,'addMesh'));
|
||||
};
|
||||
|
||||
LayerManager.prototype.removeMesh = function() {
|
||||
this.delegate(arguments.splice(0,0,'removeMesh'));
|
||||
};
|
||||
|
||||
LayerManager.prototype.updateMesh = function() {
|
||||
this.delegate(arguments.splice(0,0,'updateMesh'));
|
||||
};
|
||||
|
||||
LayerManager.prototype.addFilter = function() {
|
||||
this.delegate(arguments.splice(0,0,'addFilter'));
|
||||
};
|
||||
|
||||
LayerManager.prototype.removeFilter = function() {
|
||||
this.delegate(arguments.splice(0,0,'removeFilter'));
|
||||
};
|
||||
|
||||
return LayerManager;
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue