Standardize log output
Add sendUpdateToPlayer[s] Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
3224aca2b2
commit
3582bdc148
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
sendUpdateToPlayers(game, update);
|
sendUpdateToPlayer(session, {
|
||||||
session.ws.send(JSON.stringify({
|
|
||||||
type: 'game-update',
|
|
||||||
update: {
|
|
||||||
name: session.name,
|
name: session.name,
|
||||||
color: session.color,
|
color: session.color,
|
||||||
live: session.live,
|
live: session.live,
|
||||||
player: session.player
|
player: session.player
|
||||||
}
|
});
|
||||||
}));
|
sendUpdateToPlayers(game, update);
|
||||||
};
|
};
|
||||||
|
|
||||||
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) => {
|
||||||
|
if (debug.update) {
|
||||||
|
console.log(`[ all ]: -> ${game.id} sendUpdateToPlayers - `, update);
|
||||||
|
} else {
|
||||||
const keys = Object.getOwnPropertyNames(update);
|
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({
|
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';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user