1
0

Standardize log output

Add sendUpdateToPlayer[s]

Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
James Ketrenos 2022-03-12 11:33:03 -08:00
parent 3224aca2b2
commit 3582bdc148

View File

@ -15,6 +15,13 @@ const MAX_SETTLEMENTS = 5;
const MAX_CITIES = 4; const MAX_CITIES = 4;
const MAX_ROADS = 15; const MAX_ROADS = 15;
const debug = {
audio: false,
get: true,
set: true,
update: false
};
let gameDB; let gameDB;
require("../db/games").then(function(db) { require("../db/games").then(function(db) {
@ -794,10 +801,10 @@ const setPlayerName = (game, session, name) => {
/* Update the session object from tmp, but retain websocket /* Update the session object from tmp, but retain websocket
* from active session */ * from active session */
Object.assign(session, tmp, { ws: session.ws }); Object.assign(session, tmp, { ws: session.ws });
console.log(`${name} has been reallocated to a new session.`); console.log(`${info}: ${name} has been reallocated to a new session.`);
delete game.sessions[id]; delete game.sessions[id];
} else { } else {
return `${name} is already taken and has been active in the last minute.`; return `${info}: ${name} is already taken and has been active in the last minute.`;
} }
} }
} }
@ -841,12 +848,12 @@ const setPlayerName = (game, session, name) => {
if (session.ws && hasAudio) { if (session.ws && hasAudio) {
join(audio[game.id], session, game.id); join(audio[game.id], session, game.id);
} }
console.log(message); console.log(`${info}: ${message}`);
addChatMessage(game, null, message); addChatMessage(game, null, message);
/* Rebuild the unselected list */ /* Rebuild the unselected list */
if (!session.color) { if (!session.color) {
console.log(`Adding ${session.name} to the unselected`); console.log(`${info}: Adding ${session.name} to the unselected`);
} }
game.unselected = []; game.unselected = [];
for (let id in game.sessions) { for (let id in game.sessions) {
@ -855,20 +862,17 @@ const setPlayerName = (game, session, name) => {
} }
} }
sendUpdateToPlayer(session, {
name: session.name,
color: undefined,
live: session.live,
player: session.player
});
sendUpdateToPlayers(game, { sendUpdateToPlayers(game, {
players: game.players, players: game.players,
unselected: getFilteredUnselected(game), unselected: getFilteredUnselected(game),
chat: game.chat chat: game.chat
}); });
session.ws.send(JSON.stringify({
type: 'game-update',
update: {
name: session.name,
color: undefined,
live: session.live,
player: session.player
}
}));
} }
const colorToWord = (color) => { const colorToWord = (color) => {
@ -937,21 +941,18 @@ const setPlayerColor = (game, session, color) => {
addChatMessage(game, null, addChatMessage(game, null,
`There are no longer enough players to start a game.`); `There are no longer enough players to start a game.`);
} }
sendUpdateToPlayer(session, {
name: session.name,
color: undefined,
live: session.live,
player: session.player
});
sendUpdateToPlayers(game, { sendUpdateToPlayers(game, {
active: game.active, active: game.active,
unselected: getFilteredUnselected(game), unselected: getFilteredUnselected(game),
players: game.players, players: game.players,
chat: game.chat chat: game.chat
}); });
session.ws.send(JSON.stringify({
type: 'game-update',
update: {
name: session.name,
color: undefined,
live: session.live,
player: session.player
}
}));
return; return;
} }
} }
@ -993,16 +994,13 @@ const setPlayerColor = (game, session, color) => {
update.active = game.active; update.active = game.active;
} }
sendUpdateToPlayer(session, {
name: session.name,
color: session.color,
live: session.live,
player: session.player
});
sendUpdateToPlayers(game, update); sendUpdateToPlayers(game, update);
session.ws.send(JSON.stringify({
type: 'game-update',
update: {
name: session.name,
color: session.color,
live: session.live,
player: session.player
}
}));
}; };
const addActivity = (game, session, message) => { const addActivity = (game, session, message) => {
@ -2761,11 +2759,12 @@ const join = (peers, session, id) => {
const ws = session.ws; const ws = session.ws;
if (!session.name) { if (!session.name) {
console.error(`${session.id} - join - No name set yet. Audio not available.`); console.error(`${session.id}: <- join - No name set yet. Audio not available.`);
return; return;
} }
console.log(`${session.id} - join - ${session.name}`); console.log(`${session.id}: <- join - ${session.name}`);
console.log(`${all}: -> addPeer - ${session.name}`);
if (session.name in peers) { if (session.name in peers) {
console.log(`${session.id}:${session.name} - Already joined to Audio.`); console.log(`${session.id}:${session.name} - Already joined to Audio.`);
@ -2788,20 +2787,23 @@ const join = (peers, session, id) => {
peers[session.name] = ws; peers[session.name] = ws;
}; };
const getName = (session) => {
return session.name ? session.name : "Unnamed";
}
const part = (peers, session, id) => { const part = (peers, session, id) => {
const ws = session.ws; const ws = session.ws;
console.log(`${session.id}:${getName(session)} - Audio part.`); if (!session.name) {
console.error(`${session.id}: <- part - No name set yet. Audio not available.`);
if (!(session.name in peers)) {
console.log(`${session.id}:${getName(session)} - Does not exist in game audio.`);
return; return;
} }
if (!(session.name in peers)) {
console.log(`${session.id}: <- ${session.name} - Does not exist in game audio.`);
return;
}
console.log(`${session.id}: <- ${session.name} - Audio part.`);
console.log(`${all}: -> removePeer - ${session.name}`);
delete peers[session.name]; delete peers[session.name];
/* Remove this peer from all other peers, and remove each /* Remove this peer from all other peers, and remove each
@ -2818,6 +2820,11 @@ const part = (peers, session, id) => {
} }
}; };
const getName = (session) => {
return session.name ? session.name : "Unnamed";
}
const saveGame = async (game) => { const saveGame = async (game) => {
/* Shallow copy game, filling its sessions with a shallow copy of sessions so we can then /* Shallow copy game, filling its sessions with a shallow copy of sessions so we can then
* delete the player field from them */ * delete the player field from them */
@ -2876,10 +2883,32 @@ const departLobby = (game, session, color) => {
sendUpdateToPlayers(game, update); sendUpdateToPlayers(game, update);
} }
const all = `[ all ]`;
const info = `[ info ]`;
const todo = `[ todo ]`;
const sendGameToPlayers = (game) => {
console.log(`${all}: -> ${game.id} sendGamePlayers - full game`);
for (let key in game.sessions) {
const _session = game.sessions[key];
if (!_session.ws) {
continue;
}
_session.ws.send(JSON.stringify({
type: 'game-update',
update: getFilteredGameForPlayer(game, _session)
}));
}
};
const sendUpdateToPlayers = async (game, update) => { const sendUpdateToPlayers = async (game, update) => {
const keys = Object.getOwnPropertyNames(update); if (debug.update) {
console.log(`[ all ]:${game.id} - sendUpdateToPlayers - ${keys.join(',')}`); console.log(`[ all ]: -> ${game.id} sendUpdateToPlayers - `, update);
} else {
const keys = Object.getOwnPropertyNames(update);
console.log(`[ all ]: -> ${game.id} sendUpdateToPlayers - ${keys.join(',')}`);
}
const message = JSON.stringify({ const message = JSON.stringify({
type: 'game-update', type: 'game-update',
update update
@ -2894,6 +2923,21 @@ const sendUpdateToPlayers = async (game, update) => {
await saveGame(game); await saveGame(game);
} }
const sendUpdateToPlayer = async (session, update) => {
if (debug.update) {
console.log(`${session.id}: -> sendUpdateToPlayer - `, update);
} else {
const keys = Object.getOwnPropertyNames(update);
console.log(`${session.id}: -> sendUpdateToPlayer - ${keys.join(',')}`);
}
const message = JSON.stringify({
type: 'game-update',
update
});
session.ws.send(message);
}
const getFilteredUnselected = (game) => { const getFilteredUnselected = (game) => {
if (!game.unselected) { if (!game.unselected) {
return []; return [];
@ -2929,19 +2973,6 @@ const parseChatCommands = (game, message) => {
} }
}; };
const sendGameToPlayers = (game) => {
for (let key in game.sessions) {
const _session = game.sessions[key];
if (!_session.ws) {
continue;
}
_session.ws.send(JSON.stringify({
type: 'game-update',
update: getFilteredGameForPlayer(game, _session)
}));
}
};
const sendError = (session, error) => { const sendError = (session, error) => {
session.ws.send(JSON.stringify({ type: 'error', error })); session.ws.send(JSON.stringify({ type: 'error', error }));
} }
@ -3042,12 +3073,12 @@ router.ws("/ws/:id", async (ws, req) => {
case 'relayICECandidate': { case 'relayICECandidate': {
if (!(id in audio)) { if (!(id in audio)) {
console.error(`${session.id}:${id} - relayICECandidate - Does not have Audio`); console.error(`${session.id}:${id} <- relayICECandidate - Does not have Audio`);
return; return;
} }
const { peer_id, ice_candidate } = data.config; const { peer_id, ice_candidate } = data.config;
console.log(`${short}:${id} - relayICECandidate ${getName(session)} to ${peer_id}`, if (debug.audio) console.log(`${short}:${id} <- relayICECandidate ${getName(session)} to ${peer_id}`,
ice_candidate); ice_candidate);
message = JSON.stringify({ message = JSON.stringify({
@ -3066,7 +3097,7 @@ router.ws("/ws/:id", async (ws, req) => {
return; return;
} }
const { peer_id, session_description } = data.config; const { peer_id, session_description } = data.config;
console.log(`${short}:${id} - relaySessionDescription ${getName(session)} to ${peer_id}`, if (debug.audio) console.log(`${short}:${id} - relaySessionDescription ${getName(session)} to ${peer_id}`,
session_description); session_description);
message = JSON.stringify({ message = JSON.stringify({
type: 'sessionDescription', type: 'sessionDescription',
@ -3083,15 +3114,11 @@ router.ws("/ws/:id", async (ws, req) => {
case 'game-update': case 'game-update':
console.log(`${short}:${id}:${getName(session)} - full game update.`); console.log(`${short}:${id}:${getName(session)} - full game update.`);
message = JSON.stringify({ sendUpdateToPlayer(session, getFilteredGameForPlayer(game, session));
type: 'game-update',
update: getFilteredGameForPlayer(game, session)
});
session.ws.send(message);
break; break;
case 'player-name': case 'player-name':
console.log(`${short}:${id}:${getName(session)} - setPlayerName - ${data.name}`) console.log(`${short}: <- ${id}:${getName(session)} - setPlayerName - ${data.name}`)
error = setPlayerName(game, session, data.name); error = setPlayerName(game, session, data.name);
if (error) { if (error) {
sendError(session, error); sendError(session, error);
@ -3101,7 +3128,7 @@ router.ws("/ws/:id", async (ws, req) => {
break; break;
case 'set': case 'set':
console.log(`${short}:${id}:${getName(session)} - ${data.type} ${data.field} = ${data.value}`); console.log(`${short}: <- ${id}:${getName(session)} - ${data.type} ${data.field} = ${data.value}`);
switch (data.field) { switch (data.field) {
case 'state': case 'state':
warning = setGameState(game, session, data.value); warning = setGameState(game, session, data.value);
@ -3127,7 +3154,7 @@ router.ws("/ws/:id", async (ws, req) => {
break; break;
case 'get': case 'get':
console.log(`${short}:${id}:${getName(session)} - ${data.type} ${data.fields.join(',')}`); console.log(`${short}: <- ${id}:${getName(session)} - ${data.type} ${data.fields.join(',')}`);
update = {}; update = {};
data.fields.forEach((field) => { data.fields.forEach((field) => {
switch (field) { switch (field) {
@ -3164,13 +3191,7 @@ router.ws("/ws/:id", async (ws, req) => {
break; break;
} }
}); });
console.log(`${short}:${id} - sending update: ` + sendUpdateToPlayer(session, update);
Object.getOwnPropertyNames(update).join(','));
message = JSON.stringify({
type: 'game-update',
update
});
session.ws.send(message);
break; break;
case 'chat': case 'chat':
@ -3315,10 +3336,7 @@ const sendGameToSession = (session, reducedSessions, game, reducedGame, error, r
console.error(`No WebSocket connection to ${session.name}`); console.error(`No WebSocket connection to ${session.name}`);
} else { } else {
console.log(`Sending update to ${session.id}:${session.name ? session.name : 'Unnamed'}`); console.log(`Sending update to ${session.id}:${session.name ? session.name : 'Unnamed'}`);
session.ws.send(JSON.stringify({ sendUpdateToPlayer(session, playerGame);
type: 'game-update',
update: playerGame
}));
} }
} }
} else { } else {
@ -3480,7 +3498,7 @@ const getFilteredGameForPlayer = (game, session) => {
} }
}); });
console.log('TODO: Move game win state to card play section'); console.log('${todo}: Move game win state to card play section');
if (!game.winner && (player.points >= 10 && session.color === key)) { if (!game.winner && (player.points >= 10 && session.color === key)) {
game.winner = key; game.winner = key;
game.state = 'winner'; game.state = 'winner';