0
0
Fork 0

Adjust what rooms the players are put into and add more logs.

This commit is contained in:
Oliver-Akins 2021-01-02 17:35:05 -07:00
parent 5adefc7df3
commit 93d7782ee8

View file

@ -79,7 +79,7 @@ const modifyPlayer = (io: Server, socket: Socket, data: UpdatePlayer): void => {
// The player is joining a team for the first time // The player is joining a team for the first time
if (!data.from) { if (!data.from) {
game.log.silly(`Client included a "to" but not a "from" property`); game.log.silly(`${data.name} included a "to" but not a "from" property`);
let team = game.teams[data.to.team - 1]; let team = game.teams[data.to.team - 1];
switch (data.to.role) { switch (data.to.role) {
@ -97,7 +97,8 @@ const modifyPlayer = (io: Server, socket: Socket, data: UpdatePlayer): void => {
game.log.silly(`${player.name} became a guesser`); game.log.silly(`${player.name} became a guesser`);
// Move the rooms the player is in // Move the rooms the player is in
player.socket.join(`${game.id}:${data.to.team}:guesser`) player.socket.join(`${game.id}:${data.to.team}:guesser`);
player.socket.join(`${game.id}:*:guesser`);
break; break;
case "writer": case "writer":
if (team.writer) { if (team.writer) {
@ -111,21 +112,23 @@ const modifyPlayer = (io: Server, socket: Socket, data: UpdatePlayer): void => {
}; };
// Change team object // Change team object
team.writer = player; team.writer = player;
game.log.silly(`${player.name} became the writer`); game.log.silly(`${player.name} became the writer for team ${data.to.team}`);
// Move the rooms the player is in // Move the rooms the player is in
player.socket.join(`${game.id}:${data.to.team}:writer`); player.socket.join(`${game.id}:${data.to.team}:writer`);
player.socket.join(`${game.id}:*:writer`);
break; break;
} }
} }
// Check if the player is just swapping roles on the same team // Check if the player is just swapping roles on the same team
else if (data.from.team === data.to.team) { else if (data.from.team === data.to.team) {
game.log.silly(`Client provided "to" and "from" objects for the same team.`) game.log.silly(`${data.name} provided "to" and "from" objects for the same team.`)
let team = game.teams[data.to.team - 1]; let team = game.teams[data.to.team - 1];
switch (data.to.role) { switch (data.to.role) {
case "guesser": case "guesser":
if (team.guessers.length >= 7) { if (team.guessers.length >= 7) {
game.log.debug(`Game cannot have more than 7 ${conf.game.guesser_name}`);
socket.emit(`PlayerUpdate`, { socket.emit(`PlayerUpdate`, {
status: 403, status: 403,
message: `A team can't have 8 or more ${conf.game.guesser_name}`, message: `A team can't have 8 or more ${conf.game.guesser_name}`,
@ -135,13 +138,17 @@ const modifyPlayer = (io: Server, socket: Socket, data: UpdatePlayer): void => {
} }
team.guessers.push(player); team.guessers.push(player);
team.writer = null; team.writer = null;
game.log.silly(`${data.name} became a guesser on team ${data.to.team}.`);
// Move the rooms the player is in // Move the rooms the player is in
player.socket.join(`${game.id}:${data.to.team}:guesser`) player.socket.join(`${game.id}:${data.to.team}:guesser`);
player.socket.join(`${game.id}:*:guesser`);
player.socket.leave(`${game.id}:${data.from.team}:writer`); player.socket.leave(`${game.id}:${data.from.team}:writer`);
player.socket.leave(`${game.id}:*:writer`);
break; break;
case "writer": case "writer":
if (team.writer) { if (team.writer) {
game.log.debug(`Game cannot have more than 1 ${conf.game.writer_name}`);
socket.emit(`PlayerUpdate`, { socket.emit(`PlayerUpdate`, {
status: 403, status: 403,
message: `Someone on that team is already the ${conf.game.writer_name}`, message: `Someone on that team is already the ${conf.game.writer_name}`,
@ -152,26 +159,29 @@ const modifyPlayer = (io: Server, socket: Socket, data: UpdatePlayer): void => {
// Change team object // Change team object
team.writer = player; team.writer = player;
team.guessers = team.guessers.filter(x => x.socket !== socket); team.guessers = team.guessers.filter(x => x.socket !== socket);
game.log.silly(`${data.name} became the writer on team ${data.to.team}`);
// Move the rooms the player is in // Move the rooms the player is in
player.socket.join(`${game.id}:${data.to.team}:writer`); player.socket.join(`${game.id}:${data.to.team}:writer`);
player.socket.leave(`${game.id}:${data.from.team}:guesser`) player.socket.join(`${game.id}:*:writer`);
player.socket.leave(`${game.id}:${data.from.team}:guesser`);
player.socket.leave(`${game.id}:*:guesser`);
break; break;
}; };
} }
// The player is swapping roles and teams // The player is swapping roles and teams
else { else {
game.log.silly(`Client provided both "to" and "from" for different teams.`); game.log.silly(`${data.name} provided both "to" and "from" for different teams.`);
let oldTeam = game.teams[data.from.team - 1]; let oldTeam = game.teams[data.from.team - 1];
let newTeam = game.teams[data.to.team - 1]; let newTeam = game.teams[data.to.team - 1];
// Add the player to the new team to make sure that it's a valid move // Add the player to the new team to make sure that it's a valid move
switch (data.to.role) { switch (data.to.role) {
case "guesser": case "guesser":
// Ensure we don't get 8 guessers // Ensure we don't get 8 guessers
if (newTeam.guessers.length >= 7) { if (newTeam.guessers.length >= 7) {
game.log.debug(`Game cannot have 8 or more ${conf.game.guesser_name} on a team.`);
socket.emit(`PlayerUpdate`, { socket.emit(`PlayerUpdate`, {
status: 403, status: 403,
message: `Cannot have 8 players as ${conf.game.guesser_name}s on a single team.`, message: `Cannot have 8 players as ${conf.game.guesser_name}s on a single team.`,
@ -179,15 +189,17 @@ const modifyPlayer = (io: Server, socket: Socket, data: UpdatePlayer): void => {
}); });
return; return;
}; };
game.log.silly(`${data.name} became a ${conf.game.guesser_name} on team ${data.to.team}`);
newTeam.guessers.push(player); newTeam.guessers.push(player);
player.socket.join(`${game.id}:${data.to.team}:guesser`) player.socket.join(`${game.id}:${data.to.team}:guesser`)
player.socket.join(`${game.id}:*:guesser`)
break; break;
case "writer": case "writer":
// Ensure we don't already have a writer // Ensure we don't already have a writer
if (newTeam.writer) { if (newTeam.writer) {
game.log.debug(`Game cannot have more than 1 ${conf.game.writer_name} on a team.`);
socket.emit(`PlayerUpdate`, { socket.emit(`PlayerUpdate`, {
status: 403, status: 403,
message: `Someone on that team is already the ${conf.game.writer_name}`, message: `Someone on that team is already the ${conf.game.writer_name}`,
@ -196,7 +208,8 @@ const modifyPlayer = (io: Server, socket: Socket, data: UpdatePlayer): void => {
return; return;
}; };
newTeam.writer = player; newTeam.writer = player;
player.socket.join(`${game.id}:${data.to.team}:guesser`) player.socket.join(`${game.id}:${data.to.team}:writer`);
player.socket.join(`${game.id}:*:writer`);
break; break;
}; };
@ -204,12 +217,16 @@ const modifyPlayer = (io: Server, socket: Socket, data: UpdatePlayer): void => {
// new team // new team
switch (data.from.role) { switch (data.from.role) {
case "guesser": case "guesser":
game.log.debug(`${player.name} left the ${conf.game.guesser_name}s of team ${oldTeam.id}`);
oldTeam.guessers = oldTeam.guessers.filter(x => x.socket !== socket); oldTeam.guessers = oldTeam.guessers.filter(x => x.socket !== socket);
player.socket.leave(`${game.id}:${data.from.team}:guesser`); player.socket.leave(`${game.id}:${data.from.team}:guesser`);
player.socket.leave(`${game.id}:*:guesser`);
break; break;
case "writer": case "writer":
game.log.debug(`${player.name} stopped being the ${conf.game.writer_name} of team ${oldTeam.id}`);
oldTeam.writer = null; oldTeam.writer = null;
player.socket.leave(`${game.id}:${data.from.team}:writer`); player.socket.leave(`${game.id}:${data.from.team}:writer`);
player.socket.leave(`${game.id}:*:writer`);
break; break;
}; };
}; };