diff --git a/quiz.js b/quiz.js index 16c1f03..38eec96 100644 --- a/quiz.js +++ b/quiz.js @@ -428,6 +428,24 @@ function switchToGame() { }; timer.set(TIMER_QUESTION, timeout); + var activatePlayer = function(player) { + if (activePlayer !== null) + return; + + if (playerNames[player]) { + activePlayer = player; + updateTier(); + timer.set(TIMER_ANSWER, timeout); + } + for(var i = 0; i < playerNames.length; i++) { + sendToBackend({ buzzerLED: [i, i === player ? 1 : 0] }); + } + sendToBackend({ buzzerLED: [player, 1] }); + }; + for(var i = 0; i < playerNames.length; i++) { + sendToBackend({ buzzerLED: [i, 1] }); + } + keyHandler = function(key, keyCode) { if (keyCode === 27) { // Shortcut: cancel this state @@ -437,11 +455,7 @@ function switchToGame() { PLAYER_KEYS.indexOf(key) >= 0) { // No active player before, but somebody hit a button! var player = PLAYER_KEYS.indexOf(key); - if (playerNames[player]) { - activePlayer = player; - updateTier(); - timer.set(TIMER_ANSWER, timeout); - } + activatePlayer(player); } else if (activePlayer !== null && ANSWER_KEYS.indexOf(key) >= 0) { // player pronounced the answer @@ -474,6 +488,11 @@ function switchToGame() { } }; + onBackendMessage = function(msg) { + if (msg.buzzer) + activatePlayer(msg.buzzer); + }; + $('#nedap').hide(); $('#irc').hide(); onBackendMessage = null; diff --git a/server.js b/server.js index b07e61a..10a3fad 100644 --- a/server.js +++ b/server.js @@ -91,6 +91,14 @@ function pushIrcInfo() { } +/* + * Buttons + */ +var buzz = new (require('./buzz_iface/node_lib/buzz').Buzz)('/dev/ttyUSB0'); +buzz.on('button', function(key) { + sendToFrontend({ buzzer: key }); +}); + /* * Web server */ @@ -125,9 +133,10 @@ wss.createServer({ server: server }).on('connection', function(conn) { if (msg.nedap) { console.log({ toNedap: msg.nedap }); nedap.send(JSON.stringify(msg.nedap)); - } - else if (msg.irc === "activate") { + } else if (msg.irc === "activate") { pushIrcInfo(); + } else if (msg.buzzerLED) { + buzz.set_led(msg.buzzerLED[0], msg.buzzerLED[1]); } } catch (e) { console.error(e.stack);