/**
|
|
* 1-27-18
|
|
*
|
|
* Main server file which handles users, rooms -- everythang
|
|
*/
|
|
|
|
//eh?
|
|
const serverUtils = require('./serverUtils.js');
|
|
|
|
//used for the getting the word array
|
|
const utils = require("./utils.js");
|
|
|
|
|
|
|
|
|
|
//const sqlStuff = require("./sql.js");
|
|
|
|
var Room = require("./room");
|
|
|
|
var Player = require("./player");
|
|
|
|
//import {Room} from 'room.js';
|
|
|
|
//import {Player} from 'player.js';
|
|
|
|
|
|
//list of all players --accessed using names like a dic
|
|
var players = {};
|
|
|
|
//list of all the rooms
|
|
var rooms = {};
|
|
|
|
var app = require('express')();
|
|
var http = require('http').Server(app);
|
|
var io = require('socket.io')(http);
|
|
|
|
const PORT = 3000;
|
|
|
|
|
|
/**
|
|
* Generates json sent to user on 'sendRooms'
|
|
*
|
|
* return [{name: passwordBool: capacity: occupants: }]
|
|
*/
|
|
var generateSendRoomsJSON = function()
|
|
{
|
|
var obj = new Object();
|
|
obj.rooms = [];
|
|
|
|
//rooms.forEach(function(r)
|
|
|
|
Object.keys(rooms).forEach(function(key)
|
|
{
|
|
console.log("**************");
|
|
console.log(key);
|
|
if(rooms[key] != null)
|
|
{
|
|
var roomObj = new Object();
|
|
|
|
roomObj.name = key;
|
|
|
|
if(rooms[key].password == null)
|
|
{
|
|
roomObj.passwordBool = false;
|
|
}
|
|
else
|
|
{
|
|
roomObj.passwordBool = true;
|
|
}
|
|
roomObj.capacity = rooms[key].capacity;
|
|
roomObj.occupants = rooms[key].users.length;
|
|
|
|
obj.rooms.push(roomObj);
|
|
}
|
|
else
|
|
{
|
|
console.log("would not tough it with a 10ft pole");
|
|
}
|
|
});
|
|
|
|
return obj;
|
|
}
|
|
|
|
|
|
|
|
app.get('/', function(req, res)
|
|
{
|
|
console.log("err");
|
|
res.sendfile('index.html');
|
|
});
|
|
|
|
//Whenever someone connects this gets executed
|
|
io.on('connection', function(socket)
|
|
{
|
|
var p = new Player(socket);
|
|
|
|
console.log('A user connected');
|
|
|
|
/**
|
|
*Register user nickname/handle (register) Client => Server
|
|
*/
|
|
socket.on('register', function(data)
|
|
{
|
|
console.log(data + " registered");
|
|
|
|
//checks for user name in use
|
|
//if(serverUtils.userAvailable(data, players))
|
|
if(!(data in players))
|
|
{
|
|
p.name = data;
|
|
|
|
players[data] = p;
|
|
|
|
socket.emit('sendRooms', generateSendRoomsJSON());
|
|
console.log("send rooms called");
|
|
//console.log(generateSendRoomsJSON());
|
|
}
|
|
else
|
|
{
|
|
socket.emit('registerFailed', 'User name taken');
|
|
console.log("registration failed sent");
|
|
}
|
|
|
|
//console.log(player);
|
|
});
|
|
|
|
/**
|
|
*Create Room (createRoom) Client => Server
|
|
* data {password: , capacity: }
|
|
*/
|
|
socket.on('createRoom', function(data)
|
|
{
|
|
console.log(data + "create room");
|
|
// console.log(data);
|
|
// console.log(" ");
|
|
rooms[p.name] = new Room(data.capacity, data.password, p);
|
|
|
|
//sends updated room list to all users not in a room
|
|
var dd = generateSendRoomsJSON();
|
|
|
|
Object.keys(players).forEach(function(key)
|
|
{
|
|
if(players[key] != null)
|
|
{
|
|
if(players[key].room == null)
|
|
{
|
|
players[key].socket.emit('sendRooms', dd);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
console.log("player was null Bad!");
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
/**
|
|
* Room Selection (joinRoom) Client => Server
|
|
* data {roomName: , password: }
|
|
*/
|
|
socket.on('joinRoom', function(data)
|
|
{
|
|
console.log(p.name + " joined room " + data.roomName);
|
|
|
|
|
|
if(rooms[data.roomName] != null && rooms[data.roomName].canJoin(data.password))
|
|
{
|
|
p.room = rooms[data.roomName];
|
|
rooms[data.roomName].addUser(p);
|
|
|
|
console.log("user joined room");
|
|
}
|
|
else
|
|
{
|
|
socket.emit('joinFailed', 'Failed connecting to room');
|
|
}
|
|
//console.log(rooms);
|
|
});
|
|
|
|
/**
|
|
* data -- literally a string
|
|
*/
|
|
socket.on('submitWord', function(data)
|
|
{
|
|
console.log("submitWord called");
|
|
|
|
p.selectWord(data).then(function(score)
|
|
{
|
|
p.roundScore = score;
|
|
p.score += score;
|
|
p.submission = data;
|
|
p.room.update();
|
|
})
|
|
});
|
|
|
|
//Whenever someone disconnects
|
|
socket.on('disconnect', function ()
|
|
{
|
|
console.log('A user disconnected');
|
|
|
|
if(rooms[p.name] != null)
|
|
{
|
|
rooms[p.name] = null;
|
|
}
|
|
|
|
//leave the room
|
|
if(p.room != null)
|
|
{
|
|
p.room.removeUser(p);
|
|
}
|
|
|
|
//players[p.name] = null;
|
|
delete players[p.name];
|
|
|
|
});
|
|
});
|
|
|
|
http.listen(PORT, function()
|
|
{
|
|
console.log('listening on *:3000');
|
|
});
|