Skip to content

Commit

Permalink
Added count to level definition and fixed some bugs with buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
BorisKozo committed Mar 16, 2013
1 parent abeb013 commit c147fa2
Show file tree
Hide file tree
Showing 5 changed files with 80 additions and 76 deletions.
53 changes: 5 additions & 48 deletions js/level_data/level2.js
@@ -1,65 +1,22 @@
define([], function () {

return {
name:"level 2",
name: "level 2",
targets: [
{
type: "ball",
options: {
radius: 15
}
},
count: 5
},
{
type: "ball",
options: {
radius: 25
}
},
{
type: "ball",
options: {
radius: 25
}
},
{
type: "ball",
options: {
radius: 15
}
},
{
type: "ball",
options: {
radius: 25
}
},
{
type: "ball",
options: {
radius: 25
}
},
{
type: "ball",
options: {
radius: 15
}
},
{
type: "ball",
options: {
radius: 25
}
},
{
type: "ball",
options: {
radius: 25
}
},
count: 7
}



],
explosions: 2,
goal: 8
Expand Down
17 changes: 17 additions & 0 deletions js/level_data/level3.js
@@ -0,0 +1,17 @@
define([], function () {

return {
name: "level 3",
targets: [
{
type: "ball",
options: {
radius: 20
},
count: 15
}
],
explosions: 3,
goal: 2
};
});
19 changes: 10 additions & 9 deletions js/level_swapper.js
@@ -1,12 +1,13 @@
define(["require","jaws","./level_data/level1","./level_data/level2"], function (require,jaws) {
define(["require", "jaws", "./level_data/level1", "./level_data/level2", "./level_data/level3"], function (require, jaws) {
var levels = [];
levels.push(require("./level_data/level1"));
levels.push(require("./level_data/level2"));
levels.push(require("./level_data/level3"));
function _getLevelData(levelId) {
var i, length = swapper.levels.length;
if (typeof (levelId) === "number") {
if (levelId >= 0 && levelId < length) {
return { levelData: swapper.levels[level], index: levelId };
return { levelData: swapper.levels[levelId], index: levelId };
}
} else {
for (i = 0; i < length; i += 1) {
Expand All @@ -17,11 +18,11 @@
}

return null;
};
}

function _startLevel(Level, levelData) {
jaws.switchGameState(Level, { fps: 30 }, levelData);
};
}

var swapper = {
levels: levels,
Expand All @@ -32,17 +33,17 @@
_startLevel(Level, result);
}
},
nextLevel: function (Level, currentLevel) {
var result = _getLevelData(currentLevel.name), nextLevel;
nextLevel: function (Level, levelName) {
var result = _getLevelData(levelName), nextLevel;
if (result) {
nextLevel = _getLevelData(result.index + 1);
if (nextLevel) {
_startLevel(Level, nextLevel.levelData);
}
}
},
isLastLevel: function (currentLevel) {
var result = _getLevelData(currentLevel.name), nextLevel;
isLastLevel: function (levelName) {
var result = _getLevelData(levelName), nextLevel;
if (result) {
nextLevel = _getLevelData(result.index + 1);
if (nextLevel) {
Expand All @@ -52,7 +53,7 @@
}
}
}
}
};

return swapper;
});
16 changes: 14 additions & 2 deletions js/sprites/button.js
Expand Up @@ -14,7 +14,9 @@
this.onClick = options.onClick;

if (options.shortcut) {
jaws.on_keydown(options.shortcut, this.onClick);
this.shortcut = options.shortcut;
this.shortcutPressed = jaws.pressed(this.shortcut);
//jaws.on_keydown(options.shortcut, this.onClick);
}

this.drawing = new Drawing({
Expand Down Expand Up @@ -80,15 +82,25 @@
if (!this.pressed && pressed && this.bbox.contains(jaws.mouse_x, jaws.mouse_y) && this.onClick) {
this.pressed = pressed;
this.onClick();
return;
}
this.pressed = pressed;

if (this.shortcut) {
pressed = jaws.pressed(this.shortcut);
if (!this.shortcutPressed && pressed && this.onClick) {
this.shortcutPressed = pressed;
this.onClick();
return;
}
this.shortcutPressed = pressed;
}
};

Button.prototype.innerMoveTo = function () {
this.drawing.x = this.x;
this.drawing.y = this.y;
}
};

return Button;
});
51 changes: 34 additions & 17 deletions js/states/level.js
@@ -1,5 +1,5 @@
define(["require", "jquery", "jaws","js/level_swapper", "js/common/sprite_list", "js/common/collision_manager", "js/common/colliders",
"./../sprites/explosion", "./../sprites/ball", "./../sprites/pointer", "./../sprites/button", "./../sprites/messageDialog",
define(["require", "jquery", "jaws", "js/level_swapper", "js/common/sprite_list", "js/common/collision_manager", "js/common/colliders",
"./../sprites/explosion", "./../sprites/ball", "./../sprites/pointer", "./../sprites/button", "./../sprites/messageDialog",
"./../tusk/rect", "./../tusk/drawing", "./../tusk/text", "./../common/shapes"],
function (require, $, jaws, levelSwapper) {
var targetsHash = {};
Expand All @@ -21,28 +21,32 @@

var fps = $("#fps");
function generateTargets(field, targets) {
var i, length = targets.length, targetData, target, options, Target, randomNumber
result = new SpriteList();
var i, j, length = targets.length, targetData, target, options, Target, randomNumber,
result = new SpriteList(), count;
for (i = 0; i < length; i += 1) {
targetData = targets[i];
if (!targetsHash.hasOwnProperty(targetData.type)) {
console.log("Cannot load target of type " + targetData.type + " because it was not registered");
continue;
}
randomNumber = Math.random();

options = {
x: Math.random() * field.width + field.x,
y: Math.random() * field.height + field.y,
speedX: Math.sin(Math.PI * 2 * randomNumber) * 5,
speedY: Math.cos(Math.PI * 2 * randomNumber) * 5,
};
count = targetData.count || 1;
for (j = 0; j < count; j += 1) {
randomNumber = Math.random();

Target = targetsHash[targetData.type];
options = $.extend(options, targetData.options);
options = {
x: Math.random() * field.width + field.x,
y: Math.random() * field.height + field.y,
speedX: Math.sin(Math.PI * 2 * randomNumber) * 5,
speedY: Math.cos(Math.PI * 2 * randomNumber) * 5
};

target = new Target(options);
result.add(target);
Target = targetsHash[targetData.type];
options = $.extend(options, targetData.options);

target = new Target(options);
result.add(target);
}
}

return result;
Expand Down Expand Up @@ -150,10 +154,23 @@
setTimeout(levelSwapper.startLevel, 0, Level, level.levelData.name);
}
}, jaws.context));

if (!levelSwapper.isLastLevel(level.levelData.name)) {
wonDialogButtons.add(new Button({
rx: 290,
ry: 85,
text: "Next level",
onClick: function () {
setTimeout(levelSwapper.nextLevel, 0, Level, level.levelData.name);
}
}, jaws.context));

}

level.gameWonDialog = new MessageDialog({
x: 100,
y: 100,
height:120,
height: 120,
text: "Level complete",
align: "center"
}, jaws.context, wonDialogButtons, level.field);
Expand Down Expand Up @@ -230,7 +247,7 @@
this._handleInput();
this.targets.update(this.field);
this.explosions.update(this.field);

this._addExplosions();
this._handleCollisions();
this.restartButton.update(this.field);
Expand Down

0 comments on commit c147fa2

Please sign in to comment.