Skip to content

Commit

Permalink
Adding CongaCelebration
Browse files Browse the repository at this point in the history
  • Loading branch information
catalanojuan committed Dec 6, 2021
1 parent f94cb8f commit 0f5e668
Show file tree
Hide file tree
Showing 6 changed files with 97 additions and 12 deletions.
4 changes: 2 additions & 2 deletions audio/input.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class AudioInput extends EventEmitter {
constructor(options) {
super();
// this._sampleRate = options._sampleRate || 48000;
const deviceIndex = options.deviceIndex || null;
const deviceIndex = options.deviceIndex ?? null;
const profile = options.profile || null;
this._args = [ '-u' ];
if (!profile) {
Expand All @@ -22,7 +22,7 @@ class AudioInput extends EventEmitter {
const profilePath = options.profilePath || 'audioprofile.pstats';
this._args.push('-m', 'cProfile', '-o', profilePath, mainScript);
}
if (deviceIndex) {
if(deviceIndex !== undefined ){
this._args.push('-d', deviceIndex.toString());
}
this._subprocess = null;
Expand Down
38 changes: 38 additions & 0 deletions server/setups/program-presets/default.json
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,44 @@
}
}
]
},
"ShootingArcCelebration": {
"programs": [
{
"programName": "congaShooting2",
"shape": "fullArc",
"config": {
"fireThreshold": 0.31
}
},
{
"programName": "congaScore",
"shape": "highestSide",
"config": {
"playerNumber": 1,
"globalBrightness": 0.47,
"reverse": true,
"colorHue": 0.7,
"colorSat": 0.7
}
},
{
"programName": "congaScore",
"shape": "lowestSide",
"config": {
"globalBrightness": 1,
"reverse": true,
"playerNumber": "0",
"colorHue": 0.71,
"colorSat": 0.84
}
},
{
"programName": "congaCelebration",
"shape": "head"
}
],
"fps": 60
}
},
"sound-waves": {
Expand Down
1 change: 1 addition & 0 deletions server/src/LightController.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ const programNames = [
"mix",
"congaShooting2",
"congaScore",
"congaCelebration",
"congaShooting",
"congaRope",
"PROGRAM_Main_fuego2019",
Expand Down
18 changes: 18 additions & 0 deletions server/src/light-programs/conga-utils/GlobalGame.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
const ColorUtils = require("./../utils/ColorUtils");

class Game {
constructor() {
this.score = [0,0];
this.player1Color = ColorUtils.HSVtoRGB(400, 1, 1);
this.player2Color = ColorUtils.HSVtoRGB(400+0.33, 1, 1);
}

addPoint(playerIndex, points = 1) {
Expand All @@ -14,6 +18,20 @@ class Game {
restart() {
this.score = [0,0];
}

winner(){
let winner = false;
if (this.score[0] == this.max()){
winner = 1;
}
else if(this.score[1] == this.max()){
winner = 2;
}
if(winner){
this.restart();
}
return winner;
}
}

module.exports = {
Expand Down
36 changes: 36 additions & 0 deletions server/src/light-programs/programs/congaCelebration.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
const LightProgram = require("./../base-programs/LightProgram");
const ColorUtils = require("./../utils/ColorUtils");
const GlobalGame = require("./../conga-utils/GlobalGame");

module.exports = class CongaCelebratiton extends LightProgram {
constructor(config, geometry) {
super(config, geometry);
this.celebrate = 0;
this.winner = false;
this.colors = new Array(this.numberOfLeds).fill(ColorUtils.HSVtoRGB(0, 0, this.config.brillo));
}

drawFrame(draw) {
let winner = GlobalGame.game.winner();
if (winner && (this.celebrate == 0 || winner != this.winner)){
this.winner = winner;
this.celebrate = this.config.celebrationDurationInFrames;
}

if (this.celebrate > 0){
let winnerColor = this.winner == 1 ? GlobalGame.game.player1Color : GlobalGame.game.player2Color;
this.colors = new Array(this.numberOfLeds).fill(winnerColor);
this.celebrate--;
}
draw(this.colors);
}

// Override and extend config Schema
static configSchema() {
let res = super.configSchema();
res.brillo = { type: Number, min: 0, max: 1, step: 0.01, default: 0.5 };
res.celebrationDurationInFrames = { type: Number, min: 0, max: 200, step: 5, default: 1000 };
res.program = {type: 'programs', default: [{programName: 'all-off'}]};
return res;
}
};
12 changes: 2 additions & 10 deletions server/src/light-programs/programs/congaShooting2.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,6 @@ module.exports = class CongaShooting extends LightProgram {
if(b.pos < 0 || b.pos > this.numberOfLeds) {
this.bulletsA = _.without(this.bulletsA, b);
GlobalGame.game.addPoint(0);

if(GlobalGame.game.score[0] === 10) {
GlobalGame.game.restart()
}
}
}

Expand All @@ -54,10 +50,6 @@ module.exports = class CongaShooting extends LightProgram {
if(b.pos < 0 || b.pos > this.numberOfLeds) {
this.bulletsB = _.without(this.bulletsB, b);
GlobalGame.game.addPoint(1);

if(GlobalGame.game.score[1] === 10) {
GlobalGame.game.restart()
}
}
}

Expand Down Expand Up @@ -97,12 +89,12 @@ module.exports = class CongaShooting extends LightProgram {
this.colors[i] = baseColor;
for(const b of this.bulletsA){
if (Math.abs(b.pos - i) < this.config.speed){
this.colors[i] = ColorUtils.HSVtoRGB(b.size/400, 1, 1);
this.colors[i] = GlobalGame.game.player1Color;
}
}
for(const b of this.bulletsB){
if (Math.abs(b.pos - i) < this.config.speed){
this.colors[i] = ColorUtils.HSVtoRGB(b.size/400+0.33, 1, 1);
this.colors[i] = GlobalGame.game.player2Color;
}
}
}
Expand Down

0 comments on commit 0f5e668

Please sign in to comment.