Created
August 30, 2016 12:47
-
-
Save Burke9077/cf8f0a015146d202b554becbf6faebed to your computer and use it in GitHub Desktop.
OBS Node Controller app.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Init packages for server | |
var express = require('express'); | |
var app = express(); | |
var server = require('http').createServer(app); | |
var io = require('socket.io')(server); | |
var fs = require('fs'); | |
// Install robot | |
var robot = require("robotjs"); | |
// Install static route for public pages | |
app.use(express.static('public')); | |
io.on('connection', function(socket) { | |
// Listen for scene changes | |
socket.on('sceneChange', function(data) { | |
if (data.sceneNumber !== undefined) { | |
// Press the keys down | |
console.log("Changing to scene " + data.sceneNumber); | |
robot.keyTap(data.sceneNumber, ["control", "shift"]); | |
} | |
}); | |
// Broadcast controllers | |
socket.on('startBroadcast', function(data) { | |
console.log("Starting broadcast!!!!!"); | |
robot.keyTap("Q", ["control", "shift"]); | |
}); | |
socket.on('stopBroadcast', function(data) { | |
console.log("Stopping broadcast!!!!!"); | |
robot.keyTap("W", ["control", "shift"]); | |
}); | |
// Player controllers | |
socket.on('changePlayerName', function(data) { | |
console.log("Changing player " + data.playerNumber + " name to " + data.newName); | |
fs.writeFile('./public/pages/scoreboard/player_info/player_' + data.playerNumber + '_name.txt', data.newName); | |
}); | |
// Game score controller | |
socket.on('changePlayerScore', function(data) { | |
console.log("Changing player " + data.playerNumber + " score to " + data.newScore + " for game " + data.gameNumber); | |
// Write to the actual game score | |
fs.writeFileSync('./public/pages/scoreboard/game_' + data.gameNumber + '/player_' + data.playerNumber + '_score.txt', data.newScore); | |
// Write to the current game score | |
fs.writeFile('./public/pages/scoreboard/current_game/player_' + data.playerNumber + '_score.txt', data.newScore); | |
// Change total for player | |
var game1 = fs.readFileSync('./public/pages/scoreboard/game_1/player_' + data.playerNumber + '_score.txt').toString(); | |
var game2 = fs.readFileSync('./public/pages/scoreboard/game_2/player_' + data.playerNumber + '_score.txt').toString(); | |
var game3 = fs.readFileSync('./public/pages/scoreboard/game_3/player_' + data.playerNumber + '_score.txt').toString(); | |
var game4 = fs.readFileSync('./public/pages/scoreboard/game_4/player_' + data.playerNumber + '_score.txt').toString(); | |
var total = parseInt(game1, 10) + parseInt(game2, 10) + parseInt(game3, 10) + parseInt(game4, 10); | |
// Write the total | |
fs.writeFile('./public/pages/scoreboard/game_total/player_' + data.playerNumber + '_score.txt', total); | |
}); | |
}); | |
/* | |
API | |
*/ | |
app.get("/api/playerNames", function(req, res) { | |
// Get the player names | |
var players = { | |
"player1" : fs.readFileSync('./public/pages/scoreboard/player_info/player_1_name.txt').toString(), | |
"player2" : fs.readFileSync('./public/pages/scoreboard/player_info/player_2_name.txt').toString(), | |
"player3" : fs.readFileSync('./public/pages/scoreboard/player_info/player_3_name.txt').toString(), | |
"player4" : fs.readFileSync('./public/pages/scoreboard/player_info/player_4_name.txt').toString() | |
}; | |
res.status(200).json(players); | |
}); | |
app.get("/api/playerScores", function(req, res) { | |
// Get the player scores | |
var scores = { | |
"player1" : { | |
"game1" : fs.readFileSync('./public/pages/scoreboard/game_1/player_1_score.txt').toString(), | |
"game2" : fs.readFileSync('./public/pages/scoreboard/game_2/player_1_score.txt').toString(), | |
"game3" : fs.readFileSync('./public/pages/scoreboard/game_3/player_1_score.txt').toString(), | |
"game4" : fs.readFileSync('./public/pages/scoreboard/game_4/player_1_score.txt').toString() | |
}, | |
"player2" : { | |
"game1" : fs.readFileSync('./public/pages/scoreboard/game_1/player_2_score.txt').toString(), | |
"game2" : fs.readFileSync('./public/pages/scoreboard/game_2/player_2_score.txt').toString(), | |
"game3" : fs.readFileSync('./public/pages/scoreboard/game_3/player_2_score.txt').toString(), | |
"game4" : fs.readFileSync('./public/pages/scoreboard/game_4/player_2_score.txt').toString() | |
}, | |
"player3" : { | |
"game1" : fs.readFileSync('./public/pages/scoreboard/game_1/player_3_score.txt').toString(), | |
"game2" : fs.readFileSync('./public/pages/scoreboard/game_2/player_3_score.txt').toString(), | |
"game3" : fs.readFileSync('./public/pages/scoreboard/game_3/player_3_score.txt').toString(), | |
"game4" : fs.readFileSync('./public/pages/scoreboard/game_4/player_3_score.txt').toString() | |
}, | |
"player4" : { | |
"game1" : fs.readFileSync('./public/pages/scoreboard/game_1/player_4_score.txt').toString(), | |
"game2" : fs.readFileSync('./public/pages/scoreboard/game_2/player_4_score.txt').toString(), | |
"game3" : fs.readFileSync('./public/pages/scoreboard/game_3/player_4_score.txt').toString(), | |
"game4" : fs.readFileSync('./public/pages/scoreboard/game_4/player_4_score.txt').toString() | |
} | |
}; | |
res.status(200).json(scores); | |
}); | |
var listenPort = 3000; | |
server.listen(listenPort, function() { | |
console.log("Listening on port " + listenPort); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment