Skip to content

Instantly share code, notes, and snippets.

@Burke9077
Created August 30, 2016 12:47
Show Gist options
  • Save Burke9077/cf8f0a015146d202b554becbf6faebed to your computer and use it in GitHub Desktop.
Save Burke9077/cf8f0a015146d202b554becbf6faebed to your computer and use it in GitHub Desktop.
OBS Node Controller app.js
// 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