diff --git a/index.html b/index.html
index e5d81cc..39fde4f 100644
--- a/index.html
+++ b/index.html
@@ -44,6 +44,7 @@
ball_VY = 0,
ball_maxAngle = 5*Math.PI/12;
+ var powerups = [];
/** Game Variables **/
var uid, // Unique-ID
pid, // PlayerID 0 == Specator, 1 == Player 1, 2 == Player 2
@@ -84,6 +85,7 @@
cube_height = c_height;
cube_speed = sp;
score = score;
+ powerups = [];
fn($(window).width(), $(window).height());
});
@@ -118,6 +120,16 @@
console.log('Additional Data: ' + data);
});
+ socket.on('powerup', function(type, width, height, x, y){
+ console.log(x);
+ console.log(y);
+ powerups.push(new PowerUp(type, width, height, x, y));
+ });
+
+ socket.on('powerupremove', function(k){
+ powerups.splice(k, 1);
+ })
+
socket.on('paddlepos', function(pos, val, y){
if(pos == 1){
leftV = val;
@@ -244,6 +256,11 @@
ctx.fillStyle = rightColor;
ctx.fillRect(width-cube_width, rightY, cube_width, cube_height);
+ //Power UPS
+ powerups.forEach(function(pu){
+ ctx.fillStyle = 'green';
+ ctx.fillRect(pu.x, pu.y, pu.width, pu.height);
+ });
// NOTE Physics moved to Server
// /** Move Ball with Paddle if owned by owner (@roundstart) **/
@@ -387,6 +404,14 @@
}
}
+ function PowerUp(type, width, height, x, y){
+ this.type = type;
+ this.width = width;
+ this.height = height;
+ this.x = x;
+ this.y = y;
+ }
+
function shootBall() {
// NOTE moved to Server
// console.log('### Ball shoot event ###');
diff --git a/index.js b/index.js
index 8737ea0..ee49941 100644
--- a/index.js
+++ b/index.js
@@ -15,7 +15,8 @@ var Configuration = {
ball_speed : 15,
ball_owner : Math.round(Math.random()) + 1,
ball_maxAngle : 5*Math.PI/12,
- wincount : 5
+ wincount : 3,
+ powerupmaxtime : 10
}
/** Parameters **/
@@ -26,7 +27,11 @@ var clients = [], // List of all conected clients
startinterval, // Interval for Counting down (cancelable)
calcPos,
score = [0,0],
- id = 0;
+ id = 0,
+ powerups = [];
+
+/** PowerUps **/
+var powerTime = 30;
/** Game-Config **/
var cube_width = Configuration.cube_width,
@@ -230,8 +235,26 @@ function tickServer(){
}, tickrate);
}
+function drawPowerUp(){
+ var key = powerups.push(new PowerUp(1));
+ console.log(powerups[key-1].x);
+ console.log(powerups[key-1].y);
+ players[0].socket.emit('powerup', powerups[key-1].type, powerups[key-1].width, powerups[key-1].height, powerups[key-1].x, powerups[key-1].y);
+ players[0].socket.broadcast.emit('powerup', powerups[key-1].type, powerups[key-1].width, powerups[key-1].height, powerups[key-1].x, powerups[key-1].y);
+}
+
function calculatePlayerPosition(){
players.forEach(function(player, k){
+ // console.log(player.powerup.tick);
+ if(player.powerup.type == 1){
+ player.speed = Configuration.cube_speed + 10;
+ player.powerup.tick++;
+ if(player.powerup.tick == Configuration.powerupmaxtime*(1000/tickrate)){
+ player.powerup = 0;
+ }
+ } else {
+ player.speed = Configuration.cube_speed;
+ }
player.y -= player.vY*player.speed;
if(player.y > height-player.height || player.y < 0) player.vY = 0;
if(player.y < 0) player.y = 0;
@@ -267,6 +290,7 @@ function calculateBallPosition(){
ball_VX = 0;
ball_VY = 0;
ball_owner = 1;
+ drawPowerUp();
} else {
var intersect = ((players[1].y+cube_height/2)-ballY)/(cube_height/2);
console.log('Intersect with right at:');
@@ -285,6 +309,8 @@ function calculateBallPosition(){
ball_VX = 0;
ball_VY = 0;
ball_owner = 2;
+ // Add PowerUp
+ drawPowerUp();
} else {
var intersect = ((players[0].y+cube_height/2)-ballY)/(cube_height/2);
console.log('Intersect with left at:');
@@ -301,6 +327,27 @@ function calculateBallPosition(){
console.log(ballX + ' : ' + ballY);
}
+ /** Collide with PowerUp **/
+ powerups.forEach(function(pu, key){
+ if(!(ballY > pu.y+pu.height || ballY+ball_size*2 < pu.y)){
+ if(!(ballX > pu.x+pu.width || ballX+ball_size*2 < pu.x)){
+ if(ball_VX > 0){
+ players[0].powerup = pu;
+ } else {
+ players[1].powerup = pu;
+ }
+ console.log('#### KEY####');
+ console.log(key);
+ // console.log(pu);
+ powerups.splice(key, 1);
+ console.log(powerups.length);
+ players[0].socket.emit('powerupremove', key);
+ players[0].socket.broadcast.emit('powerupremove', key);
+ return;
+ }
+ }
+ });
+
var data = {
x : ballX,
y : ballY,
@@ -350,7 +397,7 @@ function resetServer(){
cube_width = Configuration.cube_width;
cube_height = Configuration.cube_height;
- cube_speed = Configuration.cube_speed;
+ u = Configuration.cube_speed;
ball_size = Configuration.ball_size;
ball_speed = Configuration.ball_speed;
ball_owner = Configuration.ball_owner;
@@ -359,7 +406,7 @@ function resetServer(){
ball_VY = 0;
ballX = Configuration.cube_width;
ballY = Configuration.cube_height/2;
-
+ powerups = [];
players = [];
}
@@ -380,4 +427,14 @@ function Player(id, socket, window_width, window_height){
this.height = cube_height;
this.y = 0;
this.vY = 0;
+ this.powerup = 0;
+}
+
+function PowerUp(type){
+ this.type = type;
+ this.tick = 0;
+ this.width = 50;
+ this.height = 50;
+ this.x = Math.random()*(width-Configuration.cube_width*4)+Configuration.cube_width*2;
+ this.y = Math.random()*(height-50);
}