|
@ -1,7 +1,16 @@ |
|
|
|
|
|
/** |
|
|
|
|
|
* 1-27-18 |
|
|
|
|
|
* |
|
|
|
|
|
* Main server file which handles users, rooms -- everythang |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
//eh?
|
|
|
const serverUtils = require('./serverUtils.js'); |
|
|
const serverUtils = require('./serverUtils.js'); |
|
|
|
|
|
|
|
|
|
|
|
//used for the getting the word array
|
|
|
const utils = require("./utils.js"); |
|
|
const utils = require("./utils.js"); |
|
|
|
|
|
|
|
|
|
|
|
//gets the trending data
|
|
|
const trendingAPI = require("./trendsAPI.js"); |
|
|
const trendingAPI = require("./trendsAPI.js"); |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -49,6 +58,7 @@ var room = function(capacityP, pass, owner) |
|
|
this.generateRoomUpdate = function() |
|
|
this.generateRoomUpdate = function() |
|
|
{ |
|
|
{ |
|
|
var result = new Object(); |
|
|
var result = new Object(); |
|
|
|
|
|
|
|
|
result.users = []; |
|
|
result.users = []; |
|
|
|
|
|
|
|
|
this.users.forEach(function(u) |
|
|
this.users.forEach(function(u) |
|
@ -56,15 +66,55 @@ var room = function(capacityP, pass, owner) |
|
|
result.users.push(u.genJASON()); |
|
|
result.users.push(u.genJASON()); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
//sort the users based on score
|
|
|
|
|
|
var countOuter = 0; |
|
|
|
|
|
var countInner = 0; |
|
|
|
|
|
var countSwap = 0; |
|
|
|
|
|
|
|
|
|
|
|
var swapped; |
|
|
|
|
|
do |
|
|
|
|
|
{ |
|
|
|
|
|
countOuter++; |
|
|
|
|
|
swapped = false; |
|
|
|
|
|
for(var i = 0; i < result.users.length; i++) |
|
|
|
|
|
{ |
|
|
|
|
|
countInner++; |
|
|
|
|
|
if(result.users[i].score && result.users[i + 1].score && |
|
|
|
|
|
result.users[i].score > result.users[i + 1].score) |
|
|
|
|
|
{ |
|
|
|
|
|
countSwap++; |
|
|
|
|
|
var temp = result.users[i]; |
|
|
|
|
|
result.users[i] = result.users[j]; |
|
|
|
|
|
result.users[j] = temp; |
|
|
|
|
|
swapped = true; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} while(swapped); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result.gameState = this.state; |
|
|
result.gameState = this.state; |
|
|
|
|
|
|
|
|
result.roundWinner = "meh"; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//sets round winner
|
|
|
|
|
|
var rWinner = -1; |
|
|
|
|
|
|
|
|
|
|
|
for(var i = 0; i < this.users.length; i++) |
|
|
|
|
|
{ |
|
|
|
|
|
if(rWinner < this.users[i].roundScore) |
|
|
|
|
|
{ |
|
|
|
|
|
result.roundWinner = this.users[i].name; |
|
|
|
|
|
rWinner = this.users[i].roundScore; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
result.currentWord = this.currentWord; |
|
|
result.currentWord = this.currentWord; |
|
|
|
|
|
|
|
|
return result; |
|
|
return result; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* grabs roomUpdate json and beams it to every user in the channel |
|
|
|
|
|
*/ |
|
|
this.sendRoomUpdate = function() |
|
|
this.sendRoomUpdate = function() |
|
|
{ |
|
|
{ |
|
|
var message = this.generateRoomUpdate(); |
|
|
var message = this.generateRoomUpdate(); |
|
@ -96,13 +146,11 @@ var room = function(capacityP, pass, owner) |
|
|
console.log(this.users); |
|
|
console.log(this.users); |
|
|
|
|
|
|
|
|
this.sendRoomUpdate(); |
|
|
this.sendRoomUpdate(); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
this.addUser(owner); |
|
|
this.addUser(owner); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Removes a specific user from the room and adjusts the size of the array |
|
|
* Removes a specific user from the room and adjusts the size of the array |
|
|
* if the array is empty, the room closes |
|
|
* if the array is empty, the room closes |
|
@ -130,10 +178,11 @@ var room = function(capacityP, pass, owner) |
|
|
//if room is empty remove the room from rooms list
|
|
|
//if room is empty remove the room from rooms list
|
|
|
if(this.users.length == 0) |
|
|
if(this.users.length == 0) |
|
|
{ |
|
|
{ |
|
|
rooms.remove(this.roomName); |
|
|
|
|
|
|
|
|
delete rooms[this.roomName]; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.update(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* Whether or not a user can join this room -- checks for number of people are |
|
|
* Whether or not a user can join this room -- checks for number of people are |
|
@ -153,6 +202,9 @@ var room = function(capacityP, pass, owner) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* starts new round for the room -- called once all the players have submitted |
|
|
|
|
|
*/ |
|
|
this.newRound = function() |
|
|
this.newRound = function() |
|
|
{ |
|
|
{ |
|
|
if(this.words.length == 0) |
|
|
if(this.words.length == 0) |
|
@ -169,6 +221,7 @@ var room = function(capacityP, pass, owner) |
|
|
this.currentRound = this.words.pop(); |
|
|
this.currentRound = this.words.pop(); |
|
|
this.state = 2; |
|
|
this.state = 2; |
|
|
} |
|
|
} |
|
|
|
|
|
this.sendRoomUpdate(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//updates room variables
|
|
|
//updates room variables
|
|
@ -197,7 +250,6 @@ var room = function(capacityP, pass, owner) |
|
|
if(flag) |
|
|
if(flag) |
|
|
{ |
|
|
{ |
|
|
this.state =3; |
|
|
this.state =3; |
|
|
this.sendRoomUpdate(); |
|
|
|
|
|
|
|
|
|
|
|
setTimeout(function() { |
|
|
setTimeout(function() { |
|
|
this.newRound(); |
|
|
this.newRound(); |
|
@ -219,12 +271,11 @@ var room = function(capacityP, pass, owner) |
|
|
console.log("You don goof up") |
|
|
console.log("You don goof up") |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
this.sendRoomUpdate(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//list of all the rooms
|
|
|
|
|
|
var rooms = {}; |
|
|
|
|
|
|
|
|
|
|
|
var player = function(s) |
|
|
var player = function(s) |
|
|
{ |
|
|
{ |
|
@ -243,6 +294,8 @@ var player = function(s) |
|
|
//the word the user selected for current round
|
|
|
//the word the user selected for current round
|
|
|
this.sumbission = ''; |
|
|
this.sumbission = ''; |
|
|
|
|
|
|
|
|
|
|
|
this.roundScore = 0; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* generate the json object used in 'roomUpdate' socket io event |
|
|
* generate the json object used in 'roomUpdate' socket io event |
|
|
* |
|
|
* |
|
@ -266,15 +319,20 @@ var player = function(s) |
|
|
|
|
|
|
|
|
trendingAPI.getPopularity(data + " " + this.room.currentWord).then(function(result) |
|
|
trendingAPI.getPopularity(data + " " + this.room.currentWord).then(function(result) |
|
|
{ |
|
|
{ |
|
|
|
|
|
this.roundScore = result; |
|
|
this.score += result; |
|
|
this.score += result; |
|
|
console.log("api result for " + result); |
|
|
console.log("api result for " + result); |
|
|
this.room.update(); |
|
|
this.room.update(); |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
//list of all players --accessed using names like a dic
|
|
|
|
|
|
var players = {}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Generates json sent to user on 'sendRooms' |
|
|
|
|
|
* |
|
|
|
|
|
* return [{name: passwordBool: capacity: occupants: }] |
|
|
|
|
|
*/ |
|
|
var generateSendRoomsJSON = function() |
|
|
var generateSendRoomsJSON = function() |
|
|
{ |
|
|
{ |
|
|
var obj = new Object(); |
|
|
var obj = new Object(); |
|
@ -290,16 +348,18 @@ var generateSendRoomsJSON = function() |
|
|
{ |
|
|
{ |
|
|
var roomObj = new Object(); |
|
|
var roomObj = new Object(); |
|
|
|
|
|
|
|
|
|
|
|
roomObj.name = key; |
|
|
|
|
|
|
|
|
if(rooms[key].password == null) |
|
|
if(rooms[key].password == null) |
|
|
{ |
|
|
{ |
|
|
roomObj.passwordBool = false; |
|
|
roomObj.passwordBool = false; |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
roomObj.passwordBool = rooms[key].password; |
|
|
|
|
|
|
|
|
roomObj.passwordBool = true; |
|
|
} |
|
|
} |
|
|
roomObj.capacity = rooms[key].capacity; |
|
|
roomObj.capacity = rooms[key].capacity; |
|
|
roomObj.occupents = rooms[key].users.length; |
|
|
|
|
|
|
|
|
roomObj.occupants = rooms[key].users.length; |
|
|
|
|
|
|
|
|
obj.rooms.push(roomObj); |
|
|
obj.rooms.push(roomObj); |
|
|
} |
|
|
} |
|
@ -307,13 +367,16 @@ var generateSendRoomsJSON = function() |
|
|
{ |
|
|
{ |
|
|
console.log("would not tough it with a 10ft pole"); |
|
|
console.log("would not tough it with a 10ft pole"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
return obj; |
|
|
return obj; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//list of all players --accessed using names like a dic
|
|
|
|
|
|
var players = {}; |
|
|
|
|
|
|
|
|
|
|
|
//list of all the rooms
|
|
|
|
|
|
var rooms = {}; |
|
|
|
|
|
|
|
|
var app = require('express')(); |
|
|
var app = require('express')(); |
|
|
var http = require('http').Server(app); |
|
|
var http = require('http').Server(app); |
|
@ -367,7 +430,6 @@ io.on('connection', function(socket) |
|
|
console.log(" "); |
|
|
console.log(" "); |
|
|
rooms[p.name] = new room(data.capacity, data.password, p); |
|
|
rooms[p.name] = new room(data.capacity, data.password, p); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
@ -388,7 +450,7 @@ io.on('connection', function(socket) |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
socket.emit('registerFailed', 'Failed connecting to room'); |
|
|
|
|
|
|
|
|
socket.emit('joinFailed', 'Failed connecting to room'); |
|
|
} |
|
|
} |
|
|
console.log(rooms); |
|
|
console.log(rooms); |
|
|
}); |
|
|
}); |
|
@ -420,7 +482,7 @@ io.on('connection', function(socket) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//players[p.name] = null;
|
|
|
//players[p.name] = null;
|
|
|
players.remove(p.name); |
|
|
|
|
|
|
|
|
delete players[p.name]; |
|
|
|
|
|
|
|
|
}); |
|
|
}); |
|
|
}); |
|
|
}); |
|
|