mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 18:47:35 +00:00
added items to map
This commit is contained in:
parent
a0f3ae01d8
commit
6c78c750f0
5 changed files with 67 additions and 32 deletions
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
||||
var spawnLayer = this.getLayer("spawnpoints");
|
||||
|
||||
var size = spawnLayer.objects.length;
|
||||
var object = spawnLayer.objects[parseInt(Math.random() * (size -1), 10)];
|
||||
|
||||
return {
|
||||
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 === "spawnpoints") {
|
||||
var spawnLayer = this.levelData.layers[i];
|
||||
|
||||
var size = spawnLayer.objects.length;
|
||||
var object = spawnLayer.objects[parseInt(Math.random() * (size -1), 10)];
|
||||
|
||||
return {
|
||||
x: object.x,
|
||||
y: object.y
|
||||
}
|
||||
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
0
static/maps/tiled/stones.json
Normal file → Executable file
Loading…
Add table
Add a link
Reference in a new issue