mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 10:37:34 +00:00
86 lines
No EOL
2.6 KiB
JavaScript
Executable file
86 lines
No EOL
2.6 KiB
JavaScript
Executable file
define([
|
|
"Game/Config/Settings",
|
|
"Lib/Vendor/Box2D",
|
|
"Lib/Utilities/NotificationCenter",
|
|
"Game/" + GLOBALS.context + "/Collision/Detector",
|
|
"Game/" + GLOBALS.context + "/GameObjects/Tile",
|
|
"Game/" + GLOBALS.context + "/GameObjects/Item",
|
|
"Game/" + GLOBALS.context + "/GameObjects/Items/Skateboard"
|
|
|
|
], function (Settings, Box2D, NotificationCenter, CollisionDetector, Tile, Item, Skateboard) {
|
|
|
|
function Level (uid, engine, gameObjects) {
|
|
this.uid = uid;
|
|
this.engine = engine;
|
|
this.levelObject = null;
|
|
this.gameObjects = gameObjects;
|
|
this.load(this.uid);
|
|
}
|
|
|
|
Level.prototype.load = function (uid) {
|
|
var self = this;
|
|
var path = Settings.MAPS_PATH + uid + ".json"
|
|
this.loadLevelDataFromPath(path, function(levelData) {
|
|
self.createTiles(levelData);
|
|
//self.createItems(levelData);
|
|
NotificationCenter.trigger("game/level/loaded");
|
|
});
|
|
}
|
|
|
|
Level.prototype.destroy = function () {
|
|
for (var key in this.gameObjects) {
|
|
for (var i = 0; i < this.gameObjects[key].length; i++) {
|
|
this.gameObjects[key][i].destroy();
|
|
}
|
|
//this.gameObjects[key] = [];
|
|
}
|
|
}
|
|
|
|
Level.prototype.createTiles = function (levelData) {
|
|
|
|
if (!levelData || !levelData.tiles || levelData.tiles.length < 1) {
|
|
throw "Level: Can't create physic tiles, no tiles found";
|
|
}
|
|
|
|
var tiles = levelData.tiles;
|
|
|
|
for (var i = 0; i < tiles.length; i++) {
|
|
var options = tiles[i];
|
|
//options.m = this.tileAtPositionExists(options.x, options.y - 1) ? "Soil" : "GrassSoil";
|
|
options.m = "Soil";
|
|
this.gameObjects.fixed.push(new Tile(this.engine, "tile-" + i, options));
|
|
}
|
|
}
|
|
|
|
Level.prototype.createItems = function(levelData) {
|
|
if (!levelData || !levelData.items) {
|
|
return;
|
|
}
|
|
var items = levelData.items;
|
|
|
|
for (var i = 0; i < items.length; i++) {
|
|
var options = items[i];
|
|
var item;
|
|
var uid = "item-" + i;
|
|
|
|
switch(options.type) {
|
|
case 'skateboard':
|
|
item = new Skateboard(this.engine, uid, options);
|
|
break;
|
|
default:
|
|
item = new Item(this.engine, uid, options);
|
|
break
|
|
}
|
|
this.gameObjects.animated.push(item);
|
|
};
|
|
};
|
|
|
|
Level.prototype.getRandomSpawnPoint = function() {
|
|
return {
|
|
x: 150 + Math.random() * 300,
|
|
y: 0
|
|
};
|
|
};
|
|
|
|
return Level;
|
|
}) |