Commit defeee15 authored by Dennis Willers's avatar Dennis Willers
Browse files

Ermittlung wie viele Spieler in einem Raum sind und wie viele Spieler welchen Team beigetreten sind

parent 79550d8f
Loading
Loading
Loading
Loading

nodemon.json

0 → 100644
+7 −0
Original line number Diff line number Diff line
{
  "events": {
    "restart": "sh -c 'lsof -i :${PORT:-3000} -t | xargs kill'",
    "crash": "sh -c 'lsof -i :${PORT:-3000} -t | xargs kill'"
  },
  "delay": 1500
}
+49 −0
Original line number Diff line number Diff line
@@ -11,9 +11,28 @@ Http.listen(3000, () => {
});

var currentCard = {};
var clients = {}; // Value = ClientID / Key = [SessionID, Team] / Team = 0 (total), 1 (red) or 2 (blue)
var clientsInSession = {}; // Value = SessionID / Key = [total, red, blue}

function getSumClients (sessionName, team, action) { // Team = 0 (total), 1 (red) or 2 (blue) / Action = 1 (add) or -1 (remove)
    if (!clientsInSession.hasOwnProperty(sessionName)) {
        clientsInSession[sessionName] = [0, 0, 0];
    }
    if (team === 0) {
        clientsInSession[sessionName] = [clientsInSession[sessionName][0] + action, clientsInSession[sessionName][1], clientsInSession[sessionName][2]];
    }
    if (team === 1) {
        clientsInSession[sessionName] = [clientsInSession[sessionName][0] + action, clientsInSession[sessionName][1] + action, clientsInSession[sessionName][2]];
    }
    if (team === 2) {
        clientsInSession[sessionName] = [clientsInSession[sessionName][0] + action, clientsInSession[sessionName][1], clientsInSession[sessionName][2] + action];
    }
    return {total: clientsInSession[sessionName][0], red: clientsInSession[sessionName][1], blue: clientsInSession[sessionName][2]};
}

Socketio.on("connection", socket => {
    console.log('new Socket connect');
    clients[socket.id] = [null, null];

    for (var key in currentCard) {
        socket.emit(key, currentCard[key])
@@ -43,6 +62,8 @@ Socketio.on("connection", socket => {
        socket.emit(data.sessionName+":newRound", false);
        Socketio.emit(data.sessionName+":endRound", true);
        socket.emit(data.sessionName+":endRound", true);
        let sumClients = getSumClients(data.sessionName, null, 0);
        Socketio.emit(data.sessionName+":sessionPlayers", sumClients);
    });
    socket.on("canPressTabooh", data => {
        console.log('CanPressTabooh from: ', data.sessionName, data.canPressTabooh);
@@ -54,5 +75,33 @@ Socketio.on("connection", socket => {
        Socketio.emit(data.sessionName+":historyChanged", data);
        socket.emit(data.sessionName+":historyChanged", data);
    });
    socket.on("sessionPlayers", data => {
        const client = clients[socket.id];
        console.log('CLIENT: ', client, data.team);
        if (data.sessionName === null && client[0] !== null) {
            let sumClients = getSumClients(client[0], client[1], -1);
            Socketio.emit(client[0]+":sessionPlayers", sumClients);
            clients[socket.id] = [null, null];
        }
        else {
            if (data.sessionName !== client[0] || data.team !== client[1]) {
                let sumClients = getSumClients(client[0], client[1], -1);
                Socketio.emit(client[0]+":sessionPlayers", sumClients);
                clients[socket.id] = [data.sessionName, data.team];
                sumClients = getSumClients(data.sessionName, data.team, data.newAction);
                Socketio.emit(data.sessionName+":sessionPlayers", sumClients);
                socket.emit(data.sessionName+":sessionPlayers", sumClients);
            }
       }
    });
    socket.on("disconnect", () => {
        const client = clients[socket.id];
        console.log("DISCONNECT CLIENT: ", client);
        if (client !== null && client[0] !== null) {
            const sumClients = getSumClients(client[0], client[1], -1);
            Socketio.emit(client[0]+":sessionPlayers", sumClients);
        }
        delete clients[socket.id];
    });
});