added items to map

This commit is contained in:
Jeena 2014-02-10 12:05:10 +01:00
parent a0f3ae01d8
commit 6c78c750f0
5 changed files with 67 additions and 32 deletions

View file

@ -19,6 +19,7 @@ define({
DEFAULT_LEVELS: ['stones2'], DEFAULT_LEVELS: ['stones2'],
RATIO: 21, //35 RATIO: 21, //35
OBJECT_RATIO: 21 / 25,
TILE_SIZE: 20, //15, 25 is original picture TILE_SIZE: 20, //15, 25 is original picture
CAMERA_IS_ORTHOGRAPHIC: true, CAMERA_IS_ORTHOGRAPHIC: true,
VIEW_CONTROLLER: 0 ? 'Three' : 'Pixi', VIEW_CONTROLLER: 0 ? 'Three' : 'Pixi',

View file

@ -7,7 +7,20 @@ define([
function (Parent, Box2D, Settings) { function (Parent, Box2D, Settings) {
function Item(physicsEngine, uid, options) { function Item(physicsEngine, uid, options) {
this.options = options; this.options = {
category: options.category,
image: options.image,
name: options.name,
type: options.type,
grabAngle: parseFloat(options.grabAngle),
weight: parseFloat(options.weight),
width: parseFloat(options.width),
height: parseFloat(options.height),
rotation: parseFloat(options.rotation),
bounce: parseFloat(options.bounce),
x: parseFloat(options.x),
y: parseFloat(options.y)
};
Parent.call(this, physicsEngine, uid); Parent.call(this, physicsEngine, uid);
this.createFixture(); this.createFixture();
this.body.ResetMassData(); this.body.ResetMassData();

View file

@ -21,8 +21,9 @@ define([
var self = this; var self = this;
var path = Settings.MAPS_PATH + uid + ".json" var path = Settings.MAPS_PATH + uid + ".json"
this.loadLevelDataFromPath(path, function(levelData) { this.loadLevelDataFromPath(path, function(levelData) {
self.createTiles(levelData); self.levelData = levelData;
//self.createItems(levelData); self.createTiles();
self.createItems();
NotificationCenter.trigger("game/level/loaded"); NotificationCenter.trigger("game/level/loaded");
}); });
} }
@ -36,13 +37,13 @@ define([
} }
} }
Level.prototype.createTiles = function (levelData) { Level.prototype.createTiles = function () {
if (!levelData || !levelData.tiles || levelData.tiles.length < 1) { if (!this.levelData || !this.levelData.tiles || this.levelData.tiles.length < 1) {
throw "Level: Can't create physic tiles, no tiles found"; throw "Level: Can't create physic tiles, no tiles found";
} }
var tiles = levelData.tiles; var tiles = this.levelData.tiles;
for (var i = 0; i < tiles.length; i++) { for (var i = 0; i < tiles.length; i++) {
var options = tiles[i]; var options = tiles[i];
@ -52,11 +53,11 @@ define([
} }
} }
Level.prototype.createItems = function(levelData) { Level.prototype.createItems = function() {
if (!levelData || !levelData.items) { if (!this.levelData || !this.levelData.items) {
return; return;
} }
var items = levelData.items; var items = this.levelData.items;
for (var i = 0; i < items.length; i++) { for (var i = 0; i < items.length; i++) {
var options = items[i]; var options = items[i];

View file

@ -17,21 +17,12 @@ define([
TiledLevel.prototype = Object.create(Parent.prototype); TiledLevel.prototype = Object.create(Parent.prototype);
TiledLevel.prototype.createTiles = function (levelData) { TiledLevel.prototype.createTiles = function () {
this.levelData = levelData; if (!this.levelData) {
if (!levelData) {
throw "Level: Can't create level, nothing found"; throw "Level: Can't create level, nothing found";
} }
var collisionLayer = null; var collisionLayer = this.getLayer("collision");
for (var i = 0; i < levelData.layers.length; i++) {
if(levelData.layers[i].name === "collision") {
collisionLayer = levelData.layers[i];
break;
}
}
if(collisionLayer) { if(collisionLayer) {
@ -64,6 +55,28 @@ define([
} }
} }
TiledLevel.prototype.createItems = function() {
var objects = this.getLayer("items").objects;
for (var i = 0; i < objects.length; i++) {
var object = objects[i];
var options = object.properties;
options.x = object.x * Settings.OBJECT_RATIO;
options.y = object.y * Settings.OBJECT_RATIO;
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);
};
};
TiledLevel.prototype.getTileImagePath = function(gid) { TiledLevel.prototype.getTileImagePath = function(gid) {
//console.log(this.levelData.tilesets) //console.log(this.levelData.tilesets)
for (var i = 0; i < this.levelData.tilesets.length; i++) { for (var i = 0; i < this.levelData.tilesets.length; i++) {
@ -76,24 +89,31 @@ define([
} }
TiledLevel.prototype.getRandomSpawnPoint = function() { TiledLevel.prototype.getRandomSpawnPoint = function() {
if(!this.levelData) { if(!this.levelData) {
return Parent.prototype.getRandomSpawnPoint.call(this); return Parent.prototype.getRandomSpawnPoint.call(this);
} } else {
for (var i = 0; i < this.levelData.layers.length; i++) { var spawnLayer = this.getLayer("spawnpoints");
if(this.levelData.layers[i].name === "spawnpoints") {
var spawnLayer = this.levelData.layers[i];
var size = spawnLayer.objects.length; var size = spawnLayer.objects.length;
var object = spawnLayer.objects[parseInt(Math.random() * (size -1), 10)]; var object = spawnLayer.objects[parseInt(Math.random() * (size -1), 10)];
return { return {
x: object.x, x: object.x * Settings.OBJECT_RATIO,
y: object.y y: object.y * Settings.OBJECT_RATIO
} }
}
};
TiledLevel.prototype.getLayer = function(name) {
for (var i = 0; i < this.levelData.layers.length; i++) {
if(this.levelData.layers[i].name === name) {
return this.levelData.layers[i];
} }
} }
throw "Layer '" + name + "' not found.";
}; };
return TiledLevel; return TiledLevel;

0
static/maps/tiled/stones.json Normal file → Executable file
View file