mirror of
https://github.com/logsol/chuck.js.git
synced 2026-05-11 10:37:34 +00:00
refining js version
This commit is contained in:
parent
3c8fa410ba
commit
8d0ff1a929
15 changed files with 562 additions and 355 deletions
139
lib/Chuck/Loader/Level.js
Executable file
139
lib/Chuck/Loader/Level.js
Executable file
|
|
@ -0,0 +1,139 @@
|
|||
Chuck.Loader.Level = function(engine) {
|
||||
this._engine = engine;
|
||||
this.init();
|
||||
}
|
||||
|
||||
Chuck.Loader.Level.prototype.init = function() {
|
||||
this.load();
|
||||
}
|
||||
|
||||
Chuck.Loader.Level.prototype.load = function() {
|
||||
$.get('xml/level.xml', $.proxy(this.process, this));
|
||||
}
|
||||
|
||||
Chuck.Loader.Level.prototype.process = function(xml) {
|
||||
var objects, tile;
|
||||
|
||||
objects = $(xml).find('tile');
|
||||
for (var i = 0; i < objects.length; i++) {
|
||||
|
||||
var tile = {
|
||||
shape: objects[i].attributes.shape
|
||||
? parseInt(objects[i].attributes.shape.value)
|
||||
: 1,
|
||||
x: objects[i].attributes.x
|
||||
? parseInt(objects[i].attributes.x.value) * Chuck.Settings.TILE_SIZE
|
||||
: 0,
|
||||
y: objects[i].attributes.y
|
||||
? parseInt(objects[i].attributes.y.value) * Chuck.Settings.TILE_SIZE
|
||||
: 0,
|
||||
rotation: objects[i].attributes.rotation
|
||||
? parseInt(objects[i].attributes.rotation.value)
|
||||
: 0
|
||||
}
|
||||
this.createPhysicTile(tile);
|
||||
}
|
||||
}
|
||||
|
||||
Chuck.Loader.Level.prototype.generateAllTiles = function() {
|
||||
// GENERATING ALL POSSIBLE TILE SHAPES
|
||||
var xpos= 185;
|
||||
var ypos = 150;
|
||||
var space = 0;
|
||||
|
||||
for (var i = 0; i < 8; i++)
|
||||
{
|
||||
for (var r = 0; r < 4; r++)
|
||||
{
|
||||
this.createPhysicTile(i+1, xpos + r * (Chuck.Settings.TILE_SIZE + space), ypos + i * (Chuck.Settings.TILE_SIZE + space), r);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Chuck.Loader.Level.prototype.createPhysicTile = function(tile) {
|
||||
if(tile.rotation == undefined){
|
||||
tile.rotation = 0;
|
||||
}
|
||||
|
||||
var tileSize = Chuck.Settings.TILE_SIZE;
|
||||
var vertices = [];
|
||||
switch(tile.shape) {
|
||||
case 1:
|
||||
vertices[0] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, -tileSize / 2 / Chuck.Settings.RATIO); // o o o
|
||||
vertices[1] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, -tileSize / 2 / Chuck.Settings.RATIO); // o o o
|
||||
vertices[2] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO); // o o o
|
||||
vertices[3] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
vertices[0] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, -tileSize / 2 / Chuck.Settings.RATIO); // o
|
||||
vertices[1] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO); // o o
|
||||
vertices[2] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO); // o o o
|
||||
break;
|
||||
|
||||
case 3:
|
||||
vertices[0] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, -tileSize / 2 / Chuck.Settings.RATIO); // o
|
||||
vertices[1] = new Chuck.b2Vec2( 0, tileSize / 2 / Chuck.Settings.RATIO); // o
|
||||
vertices[2] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO); // o o
|
||||
break;
|
||||
|
||||
case 4:
|
||||
vertices[0] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, -tileSize / 2 / Chuck.Settings.RATIO); // o
|
||||
vertices[1] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, 0 ); // o o o
|
||||
vertices[2] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO); // o o o
|
||||
vertices[3] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
vertices[0] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, -tileSize / 2 / Chuck.Settings.RATIO); // o
|
||||
vertices[1] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO); // o
|
||||
vertices[2] = new Chuck.b2Vec2( 0 , tileSize / 2 / Chuck.Settings.RATIO); // o o
|
||||
break;
|
||||
|
||||
case 6:
|
||||
vertices[0] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, -tileSize / 2 / Chuck.Settings.RATIO); // o
|
||||
vertices[1] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO); // o o o
|
||||
vertices[2] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO); // o o o
|
||||
vertices[3] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, 0 );
|
||||
break;
|
||||
|
||||
case 7:
|
||||
vertices[0] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, 0 ); //
|
||||
vertices[1] = new Chuck.b2Vec2( 0 , tileSize / 2 / Chuck.Settings.RATIO); // o
|
||||
vertices[2] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO); // o o
|
||||
break;
|
||||
|
||||
case 8:
|
||||
vertices[0] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, -tileSize / 2 / Chuck.Settings.RATIO);// o o
|
||||
vertices[1] = new Chuck.b2Vec2( 0 , -tileSize / 2 / Chuck.Settings.RATIO);// o o o
|
||||
vertices[2] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, 0 ); // o o o
|
||||
vertices[3] = new Chuck.b2Vec2( tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO);
|
||||
vertices[4] = new Chuck.b2Vec2(-tileSize / 2 / Chuck.Settings.RATIO, tileSize / 2 / Chuck.Settings.RATIO);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
var bodyDef = new Chuck.b2BodyDef();
|
||||
bodyDef.type = Chuck.b2Body.b2_staticBody;
|
||||
bodyDef.position.x = tile.x / Chuck.Settings.RATIO;
|
||||
bodyDef.position.y = tile.y / Chuck.Settings.RATIO;
|
||||
bodyDef.angle = tile.rotation * 90 * Math.PI / 180;
|
||||
|
||||
var tileShape = new Chuck.b2PolygonShape;
|
||||
|
||||
tileShape.SetAsArray(vertices, vertices.length);
|
||||
|
||||
var fixtureDef = new Chuck.b2FixtureDef();
|
||||
fixtureDef.shape = tileShape;
|
||||
fixtureDef.density = 0;
|
||||
fixtureDef.friction = Chuck.Settings.TILE_FRICTION;
|
||||
fixtureDef.restitution = Chuck.Settings.TILE_RESTITUTION;
|
||||
fixtureDef.isSensor = false;
|
||||
fixtureDef.userData = 'tile';
|
||||
|
||||
var body = this._engine.createBody(bodyDef);
|
||||
body.CreateFixture(fixtureDef);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue