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'],
RATIO: 21, //35
OBJECT_RATIO: 21 / 25,
TILE_SIZE: 20, //15, 25 is original picture
CAMERA_IS_ORTHOGRAPHIC: true,
VIEW_CONTROLLER: 0 ? 'Three' : 'Pixi',

View file

@ -7,7 +7,20 @@ define([
function (Parent, Box2D, Settings) {
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);
this.createFixture();
this.body.ResetMassData();

View file

@ -21,8 +21,9 @@ define([
var self = this;
var path = Settings.MAPS_PATH + uid + ".json"
this.loadLevelDataFromPath(path, function(levelData) {
self.createTiles(levelData);
//self.createItems(levelData);
self.levelData = levelData;
self.createTiles();
self.createItems();
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";
}
var tiles = levelData.tiles;
var tiles = this.levelData.tiles;
for (var i = 0; i < tiles.length; i++) {
var options = tiles[i];
@ -52,11 +53,11 @@ define([
}
}
Level.prototype.createItems = function(levelData) {
if (!levelData || !levelData.items) {
Level.prototype.createItems = function() {
if (!this.levelData || !this.levelData.items) {
return;
}
var items = levelData.items;
var items = this.levelData.items;
for (var i = 0; i < items.length; i++) {
var options = items[i];

View file

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

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