chuck.js/app/Game/Client/Loader/Level.js
2014-08-30 16:02:41 +02:00

113 lines
No EOL
3.5 KiB
JavaScript
Executable file

define([
"Game/Core/Loader/Level",
"Game/Config/Settings",
"Lib/Utilities/NotificationCenter",
"Lib/Vendor/Pixi",
"Game/Client/View/Abstract/Layer"
],
function (Parent, Settings, Nc, PIXI, AbstractLayer) {
function Level (uid, engine, gameObjects) {
Parent.call(this, uid, engine, gameObjects);
}
Level.prototype = Object.create(Parent.prototype);
Level.prototype.loadLevelDataFromPath = function (path, callback) {
var self = this;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
if(xhr.status == 200) {
self.loadAssets(JSON.parse(xhr.responseText), callback);
} else {
console.error("Ajax error: " + xhr.status + " " + xhr.statusText)
}
}
}
xhr.open("GET", path, true);
xhr.send(null);
}
Level.prototype.loadAssets = function(levelData, callback) {
var paths = this.getAssetPaths(levelData);
var count = 0;
var numPaths = paths.length;
var loader = new PIXI.AssetLoader(paths);
loader.onComplete = function() { callback(levelData); };
loader.onProgress = function() {
var progress = parseInt(100 / numPaths * ++count, 10) + 1;
Nc.trigger(Nc.ns.client.view.preloadBar.update, progress);
}
loader.load();
};
Level.prototype.getAssetPaths = function(levelData) {
var paths = [];
// Get chuck
var padF = function(n) {
if(n<10) return "00" + n;
if(n<100) return "0" + n;
return n;
}
var characterNames = ["Chuck"];
var animationSets = ["WithArms", "WithoutArms"];
var addition = "";
for (var i = 0; i < characterNames.length; i++) {
var characterName = characterNames[i];
for (var j = 1; j <= 126; j++) {
for (var k = 0; k < animationSets.length; k++) {
var animationSet = animationSets[k];
paths.push(
Settings.GRAPHICS_PATH
+ Settings.GRAPHICS_SUBPATH_CHARACTERS
+ characterName
+ "/Animation/"
+ animationSet
+ "/ChuckAnimations0"
+ padF(j)
+ ".png"
);
};
};
};
paths.push(
Settings.GRAPHICS_PATH
+ Settings.GRAPHICS_SUBPATH_CHARACTERS
+ characterName
+ "/head.png"
);
return paths;
};
Level.prototype.createItems = function(options) {
options.layer = AbstractLayer.ID.ITEM;
Nc.trigger(Nc.ns.client.view.layer.createAndInsert, options.layer, 1, AbstractLayer.ID.SPAWN, true);
Parent.prototype.createItems.call(this, options);
};
Level.prototype.createTiles = function(options) {
options.layerId = AbstractLayer.ID.TILE;
Nc.trigger(Nc.ns.client.view.layer.createAndInsert, options.layerId, 1, AbstractLayer.ID.SPAWN, true);
Parent.prototype.createTiles.call(this, options);
};
Level.prototype.createSpawnPoints = function(options) {
options.layerId = AbstractLayer.ID.SPAWN;
Nc.trigger(Nc.ns.client.view.layer.createAndInsert, options.layerId, 1);
Parent.prototype.createTiles.call(this, options);
};
return Level;
});