Skip to content

Commit

Permalink
Add blocks to level 1, with non-immovable immovability
Browse files Browse the repository at this point in the history
  • Loading branch information
voithos committed Dec 22, 2013
1 parent 13a79fe commit a0a8d2a
Show file tree
Hide file tree
Showing 4 changed files with 374 additions and 31 deletions.
2 changes: 1 addition & 1 deletion src/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ module.exports = {
PARTICLE_X_OFFSET: 45,
PARTICLE_Y_OFFSET: 10,

ITEM_GRAVITY: 2,
ELEM_GRAVITY: 2,
ITEM_FADE_TIME: 1000,
ITEM_ACQUIRE_OFFSET: 25,

Expand Down
97 changes: 86 additions & 11 deletions src/data.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
var instance = function() {
var args = Array.prototype.slice.call(arguments);
args.unshift({});
return Phaser.Utils.extend.apply(null, args);
};

var acquirePowergem = function(player, item) {
player.powergem = item;
player.element = item.element;
Expand Down Expand Up @@ -100,8 +106,8 @@ var elements = {

var powergems = {
air: {
itemType: 'powergem',
itemProps: {
elemType: 'powergem',
props: {
element: 'air',
acquire: acquirePowergem
},
Expand All @@ -114,8 +120,8 @@ var powergems = {
}
},
water: {
itemType: 'powergem',
itemProps: {
elemType: 'powergem',
props: {
element: 'water',
acquire: acquirePowergem
},
Expand All @@ -128,8 +134,8 @@ var powergems = {
}
},
earth: {
itemType: 'powergem',
itemProps: {
elemType: 'powergem',
props: {
element: 'earth',
acquire: acquirePowergem
},
Expand All @@ -142,8 +148,8 @@ var powergems = {
}
},
fire: {
itemType: 'powergem',
itemProps: {
elemType: 'powergem',
props: {
element: 'fire',
acquire: acquirePowergem
},
Expand All @@ -157,6 +163,61 @@ var powergems = {
}
};

var powerblocks = {
air: {
elemType: 'powerblock',
props: {
element: 'air'
},
frameId: 54,
body: {
x: 0,
y: 0,
width: 70,
height: 70
}
},
water: {
elemType: 'powerblock',
props: {
element: 'water'
},
frameId: 90,
body: {
x: 0,
y: 0,
width: 70,
height: 70
}
},
earth: {
elemType: 'powerblock',
props: {
element: 'earth'
},
frameId: 97,
body: {
x: 0,
y: 0,
width: 70,
height: 70
}
},
fire: {
elemType: 'powerblock',
props: {
element: 'fire'
},
frameId: 66,
body: {
x: 0,
y: 0,
width: 70,
height: 70
}
}
};

module.exports = {
state: {
level: 'level1'
Expand All @@ -167,15 +228,29 @@ module.exports = {
height: 840,
clouds: 15,
player: {
x: 150,
y: 580
x: 1550,
y: 380
},
items: [
Phaser.Utils.extend(powergems.water, {
instance(powergems.water, {
x: 1085,
y: 580
})
],
blocks: [
instance(powerblocks.water, {
x: 1715,
y: 480
}),
instance(powerblocks.water, {
x: 1715,
y: 410
}),
instance(powerblocks.water, {
x: 1715,
y: 340
})
],
elements: [
elements.air,
elements.water,
Expand Down
54 changes: 35 additions & 19 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,12 @@ function preload() {
game.load.atlas('p1', 'assets/sprites/p1_spritesheet.png', 'assets/sprites/p1_spritesheet.json');

game.load.atlasXML('items', 'assets/sprites/items_spritesheet.png', 'assets/sprites/items_spritesheet.xml');
game.load.spritesheet('blocks', 'assets/tilesets/tiles_spritesheet.png', cfg.TILE_WIDTH, cfg.TILE_HEIGHT);
game.load.atlasXML('particles', 'assets/sprites/particles.png', 'assets/sprites/particles.xml');
}

var map, tileset, surface, background,
player, clouds, items,
player, clouds, items, blocks,
elemEmitters = {},
cursors, elemButton, acquireButton;

Expand Down Expand Up @@ -72,6 +73,7 @@ function create() {
surface = game.add.tilemapLayer(0, 0, cfg.GAME_WIDTH, cfg.GAME_HEIGHT, tileset, map, 1);
surface.resizeWorld();

createBlocks();
addPlayer();
createItems();
createEmitters();
Expand Down Expand Up @@ -104,31 +106,41 @@ function createClouds() {

function createItems() {
items = game.add.group();
data.levels.level1.items.forEach(function(item) {
var i = items.create(item.x, item.y, 'items');
i.itemType = item.itemType;

i.animations.add('item', [item.frameName], 1, false, false);
i.animations.play('item');
createLevelElements(data.levels.level1.items, items, 'items');
}

i.body.gravity.y = cfg.ITEM_GRAVITY;
i.body.collideWorldBounds = true;
function createBlocks() {
blocks = game.add.group();
createLevelElements(data.levels.level1.blocks, blocks, 'blocks');
}

if (item.body) {
i.body.setSize(item.body.width || i.body.sourceWidth,
item.body.height || i.body.sourceHeight,
item.body.x || i.body.offset.x,
item.body.y || i.body.offset.y);
function createLevelElements(elems, group, type) {
var addLevelElement = function(el) {
var e = group.create(el.x, el.y, type, el.frameName || el.frameId);
e.elemType = el.elemType;

e.body.gravity.y = cfg.ELEM_GRAVITY;
e.body.collideWorldBounds = true;

if (el.body) {
e.body.setSize(el.body.width || e.body.sourceWidth,
el.body.height || e.body.sourceHeight,
el.body.x || e.body.offset.x,
el.body.y || e.body.offset.y);
e.body.immovable = el.body.immovable || e.body.immovable;
e.body.gravity.y = el.body.gravity || cfg.ELEM_GRAVITY;
}

if (item.itemProps) {
for (var prop in item.itemProps) {
if (item.itemProps.hasOwnProperty(prop)) {
i[prop] = item.itemProps[prop];
if (el.props) {
for (var prop in el.props) {
if (el.props.hasOwnProperty(prop)) {
e[prop] = el.props[prop];
}
}
}
});
};

elems.forEach(addLevelElement);
}

function createEmitters() {
Expand Down Expand Up @@ -160,6 +172,7 @@ function createEmitters() {
function addPlayer() {
player = game.add.sprite(data.levels.level1.player.x, data.levels.level1.player.y, 'p1');
player.body.collideWorldBounds = true;
player.body.blockable = true;
player.body.gravity.y = cfg.GRAVITY;
player.body.setSize(cfg.PLAYER_BOUND_WIDTH, cfg.PLAYER_BOUND_HEIGHT, 0, cfg.PLAYER_BOUND_H_OFFSET);

Expand All @@ -184,7 +197,10 @@ function update() {

// Collisions
game.physics.collide(player, surface);
game.physics.collide(player, blocks);
game.physics.collide(items, surface);
game.physics.collide(blocks, surface);
game.physics.collide(blocks, blocks);
if (emitter) {
game.physics.collide(emitter, surface);

Expand Down
Loading

0 comments on commit a0a8d2a

Please sign in to comment.