var mongo = require("./mongoHelp.js") const uuidv4 = require('uuid/v4') const game = require("./game.js") var lobby = { list: async () => { result = await mongo.get("embezzle", "gamelist", {}) pubArr = [] result.forEach(element => { if (element.status == "Lobby") { obj = { gameID: element.gameID, name: element.name, seats: element.seats, players: element.players, } pubArr.push(obj) } }) return (pubArr) }, details: async (search) => { result = await mongo.get("embezzle", "gamelist", { gameID: search }) pubArr = [] result.forEach(element => { if (element.status == "Lobby") { obj = { gameID: element.gameID, name: element.name, seats: element.seats, players: element.players, } pubArr.push(obj) } }) return (pubArr) }, register: (name) => { id = uuidv4() name=encodeURIComponent(name.substring(0,16))+'-'+id.split('-')[3] mongo.put("embezzle", "players", { _id: id, name: name }) return ({ ownerID: id, name: name }) }, make: async (ownerID, seats) => { gameID = uuidv4() //Name the game after the person that makes it. name = await mongo.get("embezzle", "players", { "_id": ownerID }) name = name[0].name mongo.put("embezzle", "gamelist", { gameID: gameID, ownerID: ownerID, name: name, seats: seats, status: "Lobby", players: [] }) lobby.join(ownerID, gameID) return ({ gameID: gameID }) // return({gameID:gameID}) }, join: async (ownerID, gameID) => { //TODO: Stop players joining the game more than once. value = await mongo.get("embezzle", "gamelist", { "gameID": gameID }) gameObj = value[0] player = await mongo.get("embezzle", "players", { "_id": ownerID }) player=player[0] playerObj = { name: player.name } if (gameObj.status != "Lobby" || gameObj.players.length == gameObj.seats) { return {error:"Unable to join game"} } else { gameObj.players.push(playerObj) mongo.update("embezzle", "gamelist", { "gameID": gameID }, gameObj) return ({ gameID: gameID }) } }, start: (ownerID, gameID) => { mongo.get("embezzle", "gamelist", { "ownerID": ownerID, "gameID": gameID }).then(value => { value[0].status = "Playing" mongo.update("embezzle", "gamelist", { "gameID": gameID, "ownerID": ownerID }, value[0]) game.init(gameID) }) return ({ gameID: gameID }) }, } module.exports = lobby