Added Powerups
This commit is contained in:
parent
f84a5bf850
commit
9dabae056d
2 changed files with 86 additions and 4 deletions
25
index.html
25
index.html
|
@ -44,6 +44,7 @@
|
||||||
ball_VY = 0,
|
ball_VY = 0,
|
||||||
ball_maxAngle = 5*Math.PI/12;
|
ball_maxAngle = 5*Math.PI/12;
|
||||||
|
|
||||||
|
var powerups = [];
|
||||||
/** Game Variables **/
|
/** Game Variables **/
|
||||||
var uid, // Unique-ID
|
var uid, // Unique-ID
|
||||||
pid, // PlayerID 0 == Specator, 1 == Player 1, 2 == Player 2
|
pid, // PlayerID 0 == Specator, 1 == Player 1, 2 == Player 2
|
||||||
|
@ -84,6 +85,7 @@
|
||||||
cube_height = c_height;
|
cube_height = c_height;
|
||||||
cube_speed = sp;
|
cube_speed = sp;
|
||||||
score = score;
|
score = score;
|
||||||
|
powerups = [];
|
||||||
fn($(window).width(), $(window).height());
|
fn($(window).width(), $(window).height());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -118,6 +120,16 @@
|
||||||
console.log('Additional Data: ' + data);
|
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){
|
socket.on('paddlepos', function(pos, val, y){
|
||||||
if(pos == 1){
|
if(pos == 1){
|
||||||
leftV = val;
|
leftV = val;
|
||||||
|
@ -244,6 +256,11 @@
|
||||||
ctx.fillStyle = rightColor;
|
ctx.fillStyle = rightColor;
|
||||||
ctx.fillRect(width-cube_width, rightY, cube_width, cube_height);
|
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
|
// NOTE Physics moved to Server
|
||||||
// /** Move Ball with Paddle if owned by owner (@roundstart) **/
|
// /** 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() {
|
function shootBall() {
|
||||||
// NOTE moved to Server
|
// NOTE moved to Server
|
||||||
// console.log('### Ball shoot event ###');
|
// console.log('### Ball shoot event ###');
|
||||||
|
|
65
index.js
65
index.js
|
@ -15,7 +15,8 @@ var Configuration = {
|
||||||
ball_speed : 15,
|
ball_speed : 15,
|
||||||
ball_owner : Math.round(Math.random()) + 1,
|
ball_owner : Math.round(Math.random()) + 1,
|
||||||
ball_maxAngle : 5*Math.PI/12,
|
ball_maxAngle : 5*Math.PI/12,
|
||||||
wincount : 5
|
wincount : 3,
|
||||||
|
powerupmaxtime : 10
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Parameters **/
|
/** Parameters **/
|
||||||
|
@ -26,7 +27,11 @@ var clients = [], // List of all conected clients
|
||||||
startinterval, // Interval for Counting down (cancelable)
|
startinterval, // Interval for Counting down (cancelable)
|
||||||
calcPos,
|
calcPos,
|
||||||
score = [0,0],
|
score = [0,0],
|
||||||
id = 0;
|
id = 0,
|
||||||
|
powerups = [];
|
||||||
|
|
||||||
|
/** PowerUps **/
|
||||||
|
var powerTime = 30;
|
||||||
|
|
||||||
/** Game-Config **/
|
/** Game-Config **/
|
||||||
var cube_width = Configuration.cube_width,
|
var cube_width = Configuration.cube_width,
|
||||||
|
@ -230,8 +235,26 @@ function tickServer(){
|
||||||
}, tickrate);
|
}, 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(){
|
function calculatePlayerPosition(){
|
||||||
players.forEach(function(player, k){
|
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;
|
player.y -= player.vY*player.speed;
|
||||||
if(player.y > height-player.height || player.y < 0) player.vY = 0;
|
if(player.y > height-player.height || player.y < 0) player.vY = 0;
|
||||||
if(player.y < 0) player.y = 0;
|
if(player.y < 0) player.y = 0;
|
||||||
|
@ -267,6 +290,7 @@ function calculateBallPosition(){
|
||||||
ball_VX = 0;
|
ball_VX = 0;
|
||||||
ball_VY = 0;
|
ball_VY = 0;
|
||||||
ball_owner = 1;
|
ball_owner = 1;
|
||||||
|
drawPowerUp();
|
||||||
} else {
|
} else {
|
||||||
var intersect = ((players[1].y+cube_height/2)-ballY)/(cube_height/2);
|
var intersect = ((players[1].y+cube_height/2)-ballY)/(cube_height/2);
|
||||||
console.log('Intersect with right at:');
|
console.log('Intersect with right at:');
|
||||||
|
@ -285,6 +309,8 @@ function calculateBallPosition(){
|
||||||
ball_VX = 0;
|
ball_VX = 0;
|
||||||
ball_VY = 0;
|
ball_VY = 0;
|
||||||
ball_owner = 2;
|
ball_owner = 2;
|
||||||
|
// Add PowerUp
|
||||||
|
drawPowerUp();
|
||||||
} else {
|
} else {
|
||||||
var intersect = ((players[0].y+cube_height/2)-ballY)/(cube_height/2);
|
var intersect = ((players[0].y+cube_height/2)-ballY)/(cube_height/2);
|
||||||
console.log('Intersect with left at:');
|
console.log('Intersect with left at:');
|
||||||
|
@ -301,6 +327,27 @@ function calculateBallPosition(){
|
||||||
console.log(ballX + ' : ' + ballY);
|
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 = {
|
var data = {
|
||||||
x : ballX,
|
x : ballX,
|
||||||
y : ballY,
|
y : ballY,
|
||||||
|
@ -350,7 +397,7 @@ function resetServer(){
|
||||||
|
|
||||||
cube_width = Configuration.cube_width;
|
cube_width = Configuration.cube_width;
|
||||||
cube_height = Configuration.cube_height;
|
cube_height = Configuration.cube_height;
|
||||||
cube_speed = Configuration.cube_speed;
|
u = Configuration.cube_speed;
|
||||||
ball_size = Configuration.ball_size;
|
ball_size = Configuration.ball_size;
|
||||||
ball_speed = Configuration.ball_speed;
|
ball_speed = Configuration.ball_speed;
|
||||||
ball_owner = Configuration.ball_owner;
|
ball_owner = Configuration.ball_owner;
|
||||||
|
@ -359,7 +406,7 @@ function resetServer(){
|
||||||
ball_VY = 0;
|
ball_VY = 0;
|
||||||
ballX = Configuration.cube_width;
|
ballX = Configuration.cube_width;
|
||||||
ballY = Configuration.cube_height/2;
|
ballY = Configuration.cube_height/2;
|
||||||
|
powerups = [];
|
||||||
players = [];
|
players = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,4 +427,14 @@ function Player(id, socket, window_width, window_height){
|
||||||
this.height = cube_height;
|
this.height = cube_height;
|
||||||
this.y = 0;
|
this.y = 0;
|
||||||
this.vY = 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);
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue