82 lines
2.2 KiB
JavaScript
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);
|
|
}
|