|
|
@ -137,8 +137,6 @@ function processJoystick (data) {
|
|
|
|
function processButton (data) {
|
|
|
|
function processButton (data) {
|
|
|
|
game.players[data.id].val = data.button;
|
|
|
|
game.players[data.id].val = data.button;
|
|
|
|
|
|
|
|
|
|
|
|
game.createRipple(data.id, 300, 1000);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (debug) {
|
|
|
|
if (debug) {
|
|
|
|
console.log(data.id + ': ' +
|
|
|
|
console.log(data.id + ': ' +
|
|
|
|
data.button);
|
|
|
|
data.button);
|
|
|
@ -156,7 +154,6 @@ class Game {
|
|
|
|
this.numPlayers = 0;
|
|
|
|
this.numPlayers = 0;
|
|
|
|
this.id = 0;
|
|
|
|
this.id = 0;
|
|
|
|
this.colliders = new Group();
|
|
|
|
this.colliders = new Group();
|
|
|
|
this.ripples = new Ripples();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
add (id, x, y, w, h) {
|
|
|
|
add (id, x, y, w, h) {
|
|
|
@ -175,19 +172,9 @@ class Game {
|
|
|
|
|
|
|
|
|
|
|
|
draw() {
|
|
|
|
draw() {
|
|
|
|
this.checkBounds();
|
|
|
|
this.checkBounds();
|
|
|
|
this.ripples.draw();
|
|
|
|
|
|
|
|
drawSprites();
|
|
|
|
drawSprites();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
createRipple(id, r, duration) {
|
|
|
|
|
|
|
|
this.ripples.add(
|
|
|
|
|
|
|
|
this.players[id].position.x,
|
|
|
|
|
|
|
|
this.players[id].position.y,
|
|
|
|
|
|
|
|
r,
|
|
|
|
|
|
|
|
duration,
|
|
|
|
|
|
|
|
this.players[id].color);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setColor (id, r, g, b) {
|
|
|
|
setColor (id, r, g, b) {
|
|
|
|
this.players[id].color = color(r, g, b);
|
|
|
|
this.players[id].color = color(r, g, b);
|
|
|
|
this.players[id].shapeColor = color(r, g, b);
|
|
|
|
this.players[id].shapeColor = color(r, g, b);
|
|
|
@ -250,65 +237,3 @@ class Game {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// A simple pair of classes for generating ripples
|
|
|
|
|
|
|
|
class Ripples {
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
|
|
|
|
this.ripples = [];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add(x, y, r, duration, rcolor) {
|
|
|
|
|
|
|
|
this.ripples.push(new Ripple(x, y, r, duration, rcolor));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
draw() {
|
|
|
|
|
|
|
|
for (let i = 0; i < this.ripples.length; i++) {
|
|
|
|
|
|
|
|
// Draw each ripple in the array
|
|
|
|
|
|
|
|
if(this.ripples[i].draw()) {
|
|
|
|
|
|
|
|
// If the ripple is finished (returns true), remove it
|
|
|
|
|
|
|
|
this.ripples.splice(i, 1);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Ripple {
|
|
|
|
|
|
|
|
constructor(x, y, r, duration, rcolor) {
|
|
|
|
|
|
|
|
this.x = x;
|
|
|
|
|
|
|
|
this.y = y;
|
|
|
|
|
|
|
|
this.r = r;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// If rcolor is not defined, default to white
|
|
|
|
|
|
|
|
if (rcolor == null) {
|
|
|
|
|
|
|
|
rcolor = color(255);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.stroke = rcolor;
|
|
|
|
|
|
|
|
this.strokeWeight = 3;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.duration = duration; // in milliseconds
|
|
|
|
|
|
|
|
this.startTime = millis();
|
|
|
|
|
|
|
|
this.endTime = this.startTime + this.duration;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
draw() {
|
|
|
|
|
|
|
|
let progress = (this.endTime - millis())/this.duration;
|
|
|
|
|
|
|
|
let r = this.r*(1 - progress);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
push();
|
|
|
|
|
|
|
|
stroke(red(this.stroke),
|
|
|
|
|
|
|
|
green(this.stroke),
|
|
|
|
|
|
|
|
blue(this.stroke),
|
|
|
|
|
|
|
|
255*progress);
|
|
|
|
|
|
|
|
strokeWeight(this.strokeWeight);
|
|
|
|
|
|
|
|
fill(0, 0);
|
|
|
|
|
|
|
|
ellipse(this.x, this.y, r);
|
|
|
|
|
|
|
|
pop();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (millis() > this.endTime) {
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|