mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 10:37:34 +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'],
|
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',
|
||||||
|
|
|
||||||
|
|
@ -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();
|
||||||
|
|
|
||||||
|
|
@ -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];
|
||||||
|
|
|
||||||
|
|
@ -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
0
static/maps/tiled/stones.json
Normal file → Executable file
Loading…
Add table
Add a link
Reference in a new issue