gameshow-2019/server/index.js

82 lines
2.2 KiB
JavaScript

const io = require('socket.io')();
const fs = require('fs');
const players = [];
var lastId = 0;
var runde = 0;
var runden = [];
var frage = -1;
console.log("Loading Gameshow...");
runden = JSON.parse(fs.readFileSync("gameshow.json"));
console.log("Loaded " + runden.length + " Runden!");
io.on('connection', function(socket) {
console.log('a user connected');
registerEvents(socket)
});
io.listen(3000);
console.log("Server is running on port 3000");
function registerEvents(socket) {
socket.on('eval', function(e) {
try {
socket.emit('eval', eval(e));
} catch (ex) {
socket.emit('eval', ex);
}
});
socket.on('login', function(e) {
players.push({
name: e.name,
id: lastId,
points: 0
});
socket.emit('login', lastId);
socket.emit('type', runden[runde].type);
lastId++;
console.log(e.name + " logged in!");
sendPlayersUpdate();
});
socket.on('relogin', function(e){
socket.emit('login', e.id);
socket.emit('type', runden[runde].type);
})
socket.on('nextfrage', function(e) {
frage++;
var packet = runden[runde].fragen[frage];
packet.type = runden[runde].type;
io.local.emit("frage", packet);
io.local.emit("unlock");
socket.emit('rundeninfo', "Runde " + (runde + 1) + "/" + runden.length + " Frage " + (frage + 1) + "/" + runden[runde].fragen.length);
});
socket.on('nextrunde', function(e) {
runde++;
frage = 0;
var packet = runden[runde].fragen[frage];
packet.type = runden[runde].type;
console.log(packet);
io.local.emit('type', runden[runde].type);
io.local.emit("frage", packet);
io.local.emit("unlock");
socket.emit('rundeninfo', "Runde " + (runde + 1) + "/" + runden.length + " Frage " + (frage + 1) + "/" + runden[runde].fragen.length);
});
socket.on('unlock', function(e) {
io.local.emit("unlock");
});
socket.on('antwort', function(e) {
console.log(e);
players[e.player].antwort = e.antwort;
io.local.emit("antwort", players[e.player]);
sendPlayersUpdate();
});
socket.on('points', function(e) {
players[e.player].points += e.points;
sendPlayersUpdate();
});
}
function sendPlayersUpdate() {
io.local.emit("playersupdate", players);
}