draw.layout["main"] = function() {
var layout = new Object();
layout.start = function() {
draw.input.index = draw.data[draw.input.index] ? draw.input.index : 0;
draw.action.next = false;
draw.action.stop = false;
draw.action.timeout = false;
draw.item.background = new Object();
draw.item.background.render = function() {
draw.fill(Color.GREY).rectangle(0, 0, draw.width, draw.height);
};
draw.item.stop = new Object();
draw.item.stop.fade = 0.1;
draw.item.stop.render = function() {
draw.save().opacity(this.fade < 1 ? this.fade : 1).fill(Color.BRICK).rectangle(0, 0, draw.width, draw.height).restore();
};
draw.item.next = new Object();
draw.item.next.fade = 0.1;
draw.item.next.render = function() {
draw.save().opacity(this.fade < 1 ? this.fade : 1).fill(Color.WATER).rectangle(0, 0, draw.width, draw.height).restore();
};
draw.item.player = new Object();
draw.item.player.x = 20 * 8;
draw.item.player.y = 20 * 6;
draw.item.player.width = 20;
draw.item.player.height = 20;
draw.item.player.grounded = false;
draw.item.player.velocity = { x: 0, y: 0 };
draw.item.player.color = Color.DARK;
draw.item.player.friction = 0.8;
draw.item.player.gravity = 0.98;
draw.item.player.move = function() {
this.x += this.velocity.x;
this.y += this.velocity.y;
this.velocity.x *= this.friction;
this.velocity.y += this.gravity;
};
draw.item.player.render = function() {
draw.fill(this.color);
draw.rectangle(this.x, this.y, this.width, this.height);
};
draw.item.fire = new Array();
draw.item.enemy = new Array();
draw.item.environment = draw.pixelset();
draw.item.environment.x = 0;
draw.item.environment.y = 0;
draw.item.environment.size = { width: 20, height: 20 };
draw.item.environment.data(draw.data[draw.input.index]);
draw.item.environment.update();
draw.item.environment.each.forEach(function(environment) {
if (environment.id == 6) draw.item.enemy.push({
x: environment.x,
y: environment.y + environment.height - 30,
width: 30,
height: 30,
energy: 100,
speed: 3,
color: Color.BRICK,
move: function() {
this.x += this.speed;
},
render: function() {
draw.fill(this.color);
draw.rectangle(this.x, this.y, this.width, this.height);
}
});
if (environment.id == 9) {
draw.item.player.x = environment.x;
draw.item.player.y = environment.y;
}
});
draw.text.time = draw.print();
draw.text.time.size = 4;
draw.text.time.opacity = 0.6;
draw.text.time.color = Color.WHITE;
draw.text.time.value = "00";
draw.text.index = draw.print();
draw.text.index.size = 6;
draw.text.index.color = Color.WHITE;
draw.text.index.value = (draw.input.index < 9 ? "0" : "") + (draw.input.index + 1);
draw.text.information = draw.print();
draw.text.information.size = 6;
draw.text.information.color = Color.WHITE;
draw.input.button.menu = draw.pixelset();
draw.input.button.menu.width = 10 * 5;
draw.input.button.menu.height = 10 * 5;
draw.input.button.menu.size = { width: 10, height: 10 };
draw.input.button.menu.data("1 FFFFFF.1 1 1 1 1/0 0 0 0 0/1 1 1 1 1/0 0 0 0 0/1 1 1 1 1.");
draw.input.button.menu.update();
draw.input.button.left = new Object();
draw.input.button.left.width = 40;
draw.input.button.left.height = 40;
draw.input.button.left.opacity = 0.6;
draw.input.button.left.color = Color.WHITE;
draw.input.button.left.render = function() {
draw.save().opacity(this.opacity).fill(this.color).rectangle(this.x, this.y, this.width, this.height).restore();
};
draw.input.button.right = new Object();
draw.input.button.right.width = 40;
draw.input.button.right.height = 40;
draw.input.button.right.opacity = 0.6;
draw.input.button.right.color = Color.WHITE;
draw.input.button.right.render = function() {
draw.save().opacity(this.opacity).fill(this.color).rectangle(this.x, this.y, this.width, this.height).restore();
};
draw.input.button.fire = new Object();
draw.input.button.fire.width = 40;
draw.input.button.fire.height = 40;
draw.input.button.fire.opacity = 0.6;
draw.input.button.fire.color = Color.WHITE;
draw.input.button.fire.render = function() {
draw.save().opacity(this.opacity).fill(this.color).rectangle(this.x, this.y, this.width, this.height).restore();
};
draw.input.button.up = new Object();
draw.input.button.up.width = 40;
draw.input.button.up.height = 40;
draw.input.button.up.opacity = 0.6;
draw.input.button.up.color = Color.WHITE;
draw.input.button.up.render = function() {
draw.save().opacity(this.opacity).fill(this.color).rectangle(this.x, this.y, this.width, this.height).restore();
};
draw.frame = 0; draw.ad = draw.ad ? draw.ad : 0; draw.width = draw.item.environment.size.width * 80; draw.height = draw.item.environment.size.height * 20;
};
layout.input = function() {
draw.input.action.menu = draw.input.pad(0, 17) || draw.input.key(27) || draw.click(draw.input.button.menu);
draw.input.action.fire = draw.input.pad(0, 9) || draw.input.key(32) || draw.click(draw.input.button.fire);
draw.input.action.left = draw.input.pad(0, 2) || draw.input.key(37) || draw.input.touch("left") || draw.click(draw.input.button.left);
draw.input.action.right = draw.input.pad(0, 0) || draw.input.key(39) || draw.input.touch("right") || draw.click(draw.input.button.right);
draw.input.action.up = draw.input.pad(0, 10) || draw.input.key(38) || draw.input.touch("up") || draw.click(draw.input.button.up);
if (draw.input.action.fire) if (draw.wait(10)) draw.item.fire.push({
x: draw.item.player.x + draw.item.player.width,
y: draw.item.player.y,
width: 10,
height: 10,
color: Color.WHITE,
move: function() {
this.x += 10;
},
render: function() {
draw.fill(this.color);
draw.rectangle(this.x, this.y, this.width, this.height);
}
});
if (draw.input.action.up) draw.input.button.up.opacity = 1; else draw.input.button.up.opacity = 0.6;
if (draw.input.action.right) draw.input.button.right.opacity = 1; else draw.input.button.right.opacity = 0.6;
if (draw.input.action.left) draw.input.button.left.opacity = 1; else draw.input.button.left.opacity = 0.6;
if (draw.input.action.fire) draw.input.button.fire.opacity = 1; else draw.input.button.fire.opacity = 0.6;
if (draw.input.action.up) if (draw.item.player.jumping == false) { draw.item.player.velocity.y = -12; draw.item.player.jumping = true; }
if (draw.input.action.right) if (draw.item.player.velocity.x < 4) draw.item.player.velocity.x += 1;
if (draw.input.action.left) if (draw.item.player.velocity.x > -4) draw.item.player.velocity.x -= 1;
if (draw.input.action.menu) draw.open(draw.layout["menu"]);
};
layout.update = function() {
draw.camera(draw.item.player, draw.canvas.width / 2, draw.canvas.height / 3);
draw.text.time.value = (Math.floor(draw.frame / 100) < 10 ? "0" : "") + Math.floor(draw.frame / 100);
draw.text.time.x = draw.viewport.x + draw.canvas.width / 2 - draw.text.time.width / 2;
draw.text.time.y = draw.viewport.y + draw.canvas.height - draw.text.time.height * 2;
draw.text.index.x = draw.viewport.x + draw.canvas.width - draw.text.index.width - 40 - 10;
draw.text.index.y = draw.viewport.y + 40 + 10;
draw.text.information.x = draw.viewport.x + draw.canvas.width / 2 - draw.text.information.width / 2;
draw.text.information.y = draw.viewport.y + draw.canvas.height / 2 - draw.text.information.height / 2;
draw.input.button.menu.x = draw.viewport.x + 40; draw.input.button.menu.y = draw.viewport.y + 40;
draw.input.button.left.x = draw.viewport.x + draw.input.button.left.width + 20;
draw.input.button.left.y = draw.viewport.y + draw.canvas.height - draw.input.button.left.height * 2;
draw.input.button.right.x = draw.viewport.x + draw.input.button.right.width * 3 + 20;
draw.input.button.right.y = draw.viewport.y + draw.canvas.height - draw.input.button.right.height * 2;
draw.input.button.up.x = draw.viewport.x + draw.canvas.width - draw.input.button.up.width * 4 - 20;
draw.input.button.up.y = draw.viewport.y + draw.canvas.height - draw.input.button.up.height * 2;
draw.input.button.fire.x = draw.viewport.x + draw.canvas.width - draw.input.button.fire.width * 2 - 20;
draw.input.button.fire.y = draw.viewport.y + draw.canvas.height - draw.input.button.fire.height * 2;
draw.item.player.move();
draw.item.player.grounded = false;
draw.item.environment.update();
draw.item.environment.each.forEach(function(environment) {
if (environment.id == 1) {
var direction = draw.collision(draw.item.player, environment);
if (direction == Align.LEFT || direction == Align.RIGHT) {
draw.item.player.velocity.x = 0;
} else if (direction == Align.BOTTOM) {
draw.item.player.jumping = false;
draw.item.player.grounded = true;
} else if (direction == Align.TOP) {
draw.item.player.velocity.y *= -1;
}
draw.item.fire.forEach(function(fire, index, array) {
if (draw.intersection(fire, environment)) array.splice(index, 1);
});
} else if (environment.id == 3) {
if (draw.intersection(draw.item.player, environment)) draw.action.stop = true;
} else if (environment.id == 4) {
if (draw.intersection(draw.item.player, environment)) draw.action.next = true;
}
if (environment.id == 1 || environment.id == 5) {
draw.item.enemy.forEach(function(enemy) {
var direction = draw.collision(enemy, environment);
if (direction == Align.LEFT || direction == Align.RIGHT) enemy.speed = -enemy.speed;
});
}
});
draw.item.enemy.forEach(function(value) {
value.move();
if (draw.intersection(value, draw.item.player)) draw.action.stop = true;
});
draw.item.fire.forEach(function(value, index, array) {
value.move();
draw.item.enemy.forEach(function(enemy, i, fire) {
if (draw.intersection(value, enemy)) { enemy.energy -= 10; array.splice(index, 1); }
if (enemy.energy < 0) fire.splice(i, 1);
});
});
if (Math.floor(draw.frame / 100) >= 10) draw.action.timeout = true;
if (draw.item.player.grounded) draw.item.player.velocity.y = 0;
if (draw.item.player.y > draw.height) draw.action.stop = true;
if (draw.action.stop) draw.item.player.color = Color.BRICK;
if (draw.action.stop) draw.text.information.value = "GAMEOVER";
if (draw.action.timeout) draw.text.information.value = "TIMEOUT";
if (draw.action.next) { draw.text.information.value = "COMPLETE"; draw.frame = 0; }
if (draw.action.next) if (draw.item.next.fade >= 2) { draw.input.index += 1; if (draw.input.index > Number(Cache.get("index"))) Cache.set("index", draw.input.index); }
if (draw.action.next) if (draw.item.next.fade < 2) draw.item.next.fade += 0.05; else layout.start();
if (draw.action.stop || draw.action.timeout) if (draw.ad > 0 && draw.ad % 6 == 0) if ("Ad" in window) Ad.publish();
if (draw.action.stop || draw.action.timeout) if (draw.item.stop.fade >= 2) draw.ad++;
if (draw.action.stop || draw.action.timeout) if (draw.item.stop.fade < 2) draw.item.stop.fade += 0.05; else layout.start();
draw.each = new Array();
draw.each.push(draw.item.background);
draw.each.push(draw.item.environment);
draw.each.push(draw.item.player);
draw.item.fire.forEach(function(value) {
draw.each.push(value);
});
draw.item.enemy.forEach(function(value) {
draw.each.push(value);
});
draw.each.push(draw.text.time);
draw.each.push(draw.text.index);
draw.each.push(draw.input.button.menu);
draw.each.push(draw.input.button.left);
draw.each.push(draw.input.button.right);
draw.each.push(draw.input.button.up);
draw.each.push(draw.input.button.fire);
if (draw.action.next) draw.each.push(draw.item.next);
if (draw.action.stop || draw.action.timeout) draw.each.push(draw.item.stop);
if (draw.action.stop || draw.action.next || draw.action.timeout) draw.each.push(draw.text.information);
};
layout.render = function() {
draw.clear();
draw.each.forEach(function(value) {
if (value && value.render) value.render();
});
};
return layout;
};