You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
3.3 KiB

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