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_ROADS = 15;
const debug = {
audio: false,
get: true,
set: true,
update: false
};
let gameDB;
require("../db/games").then(function(db) {
@ -794,10 +801,10 @@ const setPlayerName = (game, session, name) => {
/* Update the session object from tmp, but retain websocket
* from active session */
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];
} 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) {
join(audio[game.id], session, game.id);
}
console.log(message);
console.log(`${info}: ${message}`);
addChatMessage(game, null, message);
/* Rebuild the unselected list */
if (!session.color) {
console.log(`Adding ${session.name} to the unselected`);
console.log(`${info}: Adding ${session.name} to the unselected`);
}
game.unselected = [];
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, {
players: game.players,
unselected: getFilteredUnselected(game),
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) => {
@ -937,21 +941,18 @@ const setPlayerColor = (game, session, color) => {
addChatMessage(game, null,
`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, {
active: game.active,
unselected: getFilteredUnselected(game),
players: game.players,
chat: game.chat
});
session.ws.send(JSON.stringify({
type: 'game-update',
update: {
name: session.name,
color: undefined,
live: session.live,
player: session.player
}
}));
return;
}
}
@ -993,16 +994,13 @@ const setPlayerColor = (game, session, color) => {
update.active = game.active;
}
sendUpdateToPlayers(game, update);
session.ws.send(JSON.stringify({
type: 'game-update',
update: {
sendUpdateToPlayer(session, {
name: session.name,
color: session.color,
live: session.live,
player: session.player
}
}));
});
sendUpdateToPlayers(game, update);
};
const addActivity = (game, session, message) => {
@ -2761,11 +2759,12 @@ const join = (peers, session, id) => {
const ws = session.ws;
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;
}
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) {
console.log(`${session.id}:${session.name} - Already joined to Audio.`);
@ -2788,20 +2787,23 @@ const join = (peers, session, id) => {
peers[session.name] = ws;
};
const getName = (session) => {
return session.name ? session.name : "Unnamed";
}
const part = (peers, session, id) => {
const ws = session.ws;
console.log(`${session.id}:${getName(session)} - Audio part.`);
if (!(session.name in peers)) {
console.log(`${session.id}:${getName(session)} - Does not exist in game audio.`);
if (!session.name) {
console.error(`${session.id}: <- part - No name set yet. Audio not available.`);
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];
/* 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) => {
/* Shallow copy game, filling its sessions with a shallow copy of sessions so we can then
* delete the player field from them */
@ -2876,10 +2883,32 @@ const departLobby = (game, session, color) => {
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) => {
if (debug.update) {
console.log(`[ all ]: -> ${game.id} sendUpdateToPlayers - `, update);
} else {
const keys = Object.getOwnPropertyNames(update);
console.log(`[ all ]:${game.id} - sendUpdateToPlayers - ${keys.join(',')}`);
console.log(`[ all ]: -> ${game.id} sendUpdateToPlayers - ${keys.join(',')}`);
}
const message = JSON.stringify({
type: 'game-update',
update
@ -2894,6 +2923,21 @@ const sendUpdateToPlayers = async (game, update) => {
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) => {
if (!game.unselected) {
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) => {
session.ws.send(JSON.stringify({ type: 'error', error }));
}
@ -3042,12 +3073,12 @@ router.ws("/ws/:id", async (ws, req) => {
case 'relayICECandidate': {
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;
}
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);
message = JSON.stringify({
@ -3066,7 +3097,7 @@ router.ws("/ws/:id", async (ws, req) => {
return;
}
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);
message = JSON.stringify({
type: 'sessionDescription',
@ -3083,15 +3114,11 @@ router.ws("/ws/:id", async (ws, req) => {
case 'game-update':
console.log(`${short}:${id}:${getName(session)} - full game update.`);
message = JSON.stringify({
type: 'game-update',
update: getFilteredGameForPlayer(game, session)
});
session.ws.send(message);
sendUpdateToPlayer(session, getFilteredGameForPlayer(game, session));
break;
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);
if (error) {
sendError(session, error);
@ -3101,7 +3128,7 @@ router.ws("/ws/:id", async (ws, req) => {
break;
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) {
case 'state':
warning = setGameState(game, session, data.value);
@ -3127,7 +3154,7 @@ router.ws("/ws/:id", async (ws, req) => {
break;
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 = {};
data.fields.forEach((field) => {
switch (field) {
@ -3164,13 +3191,7 @@ router.ws("/ws/:id", async (ws, req) => {
break;
}
});
console.log(`${short}:${id} - sending update: ` +
Object.getOwnPropertyNames(update).join(','));
message = JSON.stringify({
type: 'game-update',
update
});
session.ws.send(message);
sendUpdateToPlayer(session, update);
break;
case 'chat':
@ -3315,10 +3336,7 @@ const sendGameToSession = (session, reducedSessions, game, reducedGame, error, r
console.error(`No WebSocket connection to ${session.name}`);
} else {
console.log(`Sending update to ${session.id}:${session.name ? session.name : 'Unnamed'}`);
session.ws.send(JSON.stringify({
type: 'game-update',
update: playerGame
}));
sendUpdateToPlayer(session, playerGame);
}
}
} 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)) {
game.winner = key;
game.state = 'winner';