Set empty strings to "" instead of undefined
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
d42070ed36
commit
eb5f15f366
@ -1,8 +1,10 @@
|
|||||||
import React, { useEffect, useState, useContext, useRef, useMemo } from "react";
|
import React, { useEffect, useState, useContext, useRef, useMemo,
|
||||||
|
useCallback } from "react";
|
||||||
import equal from "fast-deep-equal";
|
import equal from "fast-deep-equal";
|
||||||
import { assetsPath, debounce } from "./Common.js";
|
import { assetsPath, debounce } from "./Common.js";
|
||||||
import "./Board.css";
|
import "./Board.css";
|
||||||
import { GlobalContext } from "./GlobalContext.js";
|
import { GlobalContext } from "./GlobalContext.js";
|
||||||
|
|
||||||
const rows = [3, 4, 5, 4, 3, 2]; /* The final row of 2 is to place roads and corners */
|
const rows = [3, 4, 5, 4, 3, 2]; /* The final row of 2 is to place roads and corners */
|
||||||
|
|
||||||
const
|
const
|
||||||
@ -214,11 +216,11 @@ const Board = () => {
|
|||||||
><div className="Tile-Shape"/></div>;
|
><div className="Tile-Shape"/></div>;
|
||||||
};
|
};
|
||||||
|
|
||||||
const sendPlacement = (type, index) => {
|
const sendPlacement = useCallback((type, index) => {
|
||||||
ws.send(JSON.stringify({
|
ws.send(JSON.stringify({
|
||||||
type, index
|
type, index
|
||||||
}));
|
}));
|
||||||
};
|
}, [ws]);
|
||||||
|
|
||||||
const Road = ({road}) => {
|
const Road = ({road}) => {
|
||||||
const onClick = (event) => {
|
const onClick = (event) => {
|
||||||
|
@ -47,15 +47,7 @@ function withRouter(Component) {
|
|||||||
}
|
}
|
||||||
/* end of withRouter polyfill */
|
/* end of withRouter polyfill */
|
||||||
|
|
||||||
const Development = ({table, type, card, onClick}) => {
|
|
||||||
return (
|
|
||||||
<div className={`Development ${card.played ? 'Selected' : ''}`}
|
|
||||||
onClick={onClick}
|
|
||||||
style={{
|
|
||||||
backgroundImage:`url(${assetsPath}/gfx/card-${type}.png)`
|
|
||||||
}}/>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const StartButton = ({ table, game }) => {
|
const StartButton = ({ table, game }) => {
|
||||||
const startClick = (event) => {
|
const startClick = (event) => {
|
||||||
@ -67,42 +59,6 @@ const StartButton = ({ table, game }) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const PlayerName = ({table, game}) => {
|
|
||||||
const [name, setName] = useState(game.name ? game.name : "");
|
|
||||||
|
|
||||||
const nameChange = (event) => {
|
|
||||||
setName(event.target.value);
|
|
||||||
}
|
|
||||||
|
|
||||||
const sendName = () => {
|
|
||||||
if (name !== game.name) {
|
|
||||||
table.setPlayerName(name);
|
|
||||||
} else {
|
|
||||||
table.setError("");
|
|
||||||
table.setState({ pickName: false });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const nameKeyPress = (event) => {
|
|
||||||
if (event.key === "Enter") {
|
|
||||||
sendName();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Paper className="PlayerName">
|
|
||||||
<TextField className="nameInput"
|
|
||||||
onChange={nameChange}
|
|
||||||
onKeyPress={nameKeyPress}
|
|
||||||
label="Enter your name"
|
|
||||||
variant="outlined"
|
|
||||||
value={name}
|
|
||||||
/>
|
|
||||||
<Button onClick={() => sendName()}>Set</Button>
|
|
||||||
</Paper>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
/* This needs to take in a mechanism to declare the
|
/* This needs to take in a mechanism to declare the
|
||||||
* player's active item in the game */
|
* player's active item in the game */
|
||||||
const Players = ({ table, game }) => {
|
const Players = ({ table, game }) => {
|
||||||
|
@ -18,7 +18,7 @@ const debug = {
|
|||||||
audio: false,
|
audio: false,
|
||||||
get: true,
|
get: true,
|
||||||
set: true,
|
set: true,
|
||||||
update: false//true
|
update: true
|
||||||
};
|
};
|
||||||
|
|
||||||
let gameDB;
|
let gameDB;
|
||||||
@ -149,17 +149,6 @@ const processTies = (players) => {
|
|||||||
return !ties;
|
return !ties;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const playerFromName = (game, name) => {
|
|
||||||
for (let color in game.players) {
|
|
||||||
if (game.players[color].name === name) {
|
|
||||||
return game.players[color];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return undefined;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
const processGameOrder = (game, player, dice) => {
|
const processGameOrder = (game, player, dice) => {
|
||||||
if (player.orderRoll) {
|
if (player.orderRoll) {
|
||||||
return `You have already rolled for game order and are not in a tie.`;
|
return `You have already rolled for game order and are not in a tie.`;
|
||||||
@ -433,7 +422,8 @@ const newPlayer = (color) => {
|
|||||||
brick: 0,
|
brick: 0,
|
||||||
army: 0,
|
army: 0,
|
||||||
development: [],
|
development: [],
|
||||||
color
|
color: color,
|
||||||
|
name: ""
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -446,8 +436,8 @@ const getSession = (game, id) => {
|
|||||||
if (!(id in game.sessions)) {
|
if (!(id in game.sessions)) {
|
||||||
game.sessions[id] = {
|
game.sessions[id] = {
|
||||||
id: `[${id.substring(0, 8)}]`,
|
id: `[${id.substring(0, 8)}]`,
|
||||||
name: undefined,
|
name: '',
|
||||||
color: undefined,
|
color: '',
|
||||||
player: undefined,
|
player: undefined,
|
||||||
lastActive: Date.now(),
|
lastActive: Date.now(),
|
||||||
live: true
|
live: true
|
||||||
@ -544,7 +534,7 @@ const loadGame = async (id) => {
|
|||||||
session.player.status = 'Active';
|
session.player.status = 'Active';
|
||||||
session.player.live = false;
|
session.player.live = false;
|
||||||
} else {
|
} else {
|
||||||
session.color = undefined;
|
session.color = '';
|
||||||
session.player = undefined;
|
session.player = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -575,7 +565,6 @@ const canGiveBuilding = (game) => {
|
|||||||
if (game.turn.actions && game.turn.actions.length !== 0) {
|
if (game.turn.actions && game.turn.actions.length !== 0) {
|
||||||
return `Admin cannot give a building while other actions in play: ${game.turn.actions.join(', ')}.`
|
return `Admin cannot give a building while other actions in play: ${game.turn.actions.join(', ')}.`
|
||||||
}
|
}
|
||||||
return undefined;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const adminActions = (game, action, value) => {
|
const adminActions = (game, action, value) => {
|
||||||
@ -722,9 +711,7 @@ const adminActions = (game, action, value) => {
|
|||||||
addChatMessage(game, null, `Admin rolling ${dice.join(', ')} for ${game.turn.name}.`);
|
addChatMessage(game, null, `Admin rolling ${dice.join(', ')} for ${game.turn.name}.`);
|
||||||
switch (game.state) {
|
switch (game.state) {
|
||||||
case 'game-order':
|
case 'game-order':
|
||||||
message = `${game.turn.name} rolled ${dice[0]}.`;
|
addActivity(game, session, `${game.turn.name} rolled ${dice[0]}.`);
|
||||||
addActivity(game, session, message);
|
|
||||||
message = undefined;
|
|
||||||
processGameOrder(game, session.player, dice[0]);
|
processGameOrder(game, session.player, dice[0]);
|
||||||
break;
|
break;
|
||||||
case 'normal':
|
case 'normal':
|
||||||
@ -769,7 +756,7 @@ const adminActions = (game, action, value) => {
|
|||||||
clearPlayer(player);
|
clearPlayer(player);
|
||||||
session.player = undefined;
|
session.player = undefined;
|
||||||
}
|
}
|
||||||
session.color = undefined;
|
session.color = "";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return `Unable to find active session for ${colorToWord(color)} (${value})`;
|
return `Unable to find active session for ${colorToWord(color)} (${value})`;
|
||||||
@ -889,7 +876,7 @@ const colorToWord = (color) => {
|
|||||||
case 'B': return 'blue';
|
case 'B': return 'blue';
|
||||||
case 'R': return 'red';
|
case 'R': return 'red';
|
||||||
default:
|
default:
|
||||||
return undefined;
|
return '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -935,7 +922,7 @@ const setPlayerColor = (game, session, color) => {
|
|||||||
/* Deselect currently active player for this session */
|
/* Deselect currently active player for this session */
|
||||||
clearPlayer(session.player);
|
clearPlayer(session.player);
|
||||||
session.player = undefined;
|
session.player = undefined;
|
||||||
session.color = undefined;
|
session.color = '';
|
||||||
active--;
|
active--;
|
||||||
|
|
||||||
/* If the player is not selecting a color, then return */
|
/* If the player is not selecting a color, then return */
|
||||||
@ -950,7 +937,7 @@ const setPlayerColor = (game, session, color) => {
|
|||||||
}
|
}
|
||||||
sendUpdateToPlayer(session, {
|
sendUpdateToPlayer(session, {
|
||||||
name: session.name,
|
name: session.name,
|
||||||
color: undefined,
|
color: '',
|
||||||
live: session.live,
|
live: session.live,
|
||||||
private: session.player
|
private: session.player
|
||||||
});
|
});
|
||||||
@ -1015,7 +1002,7 @@ const addActivity = (game, session, message) => {
|
|||||||
if (game.activities.length && game.activities[game.activities.length - 1].date === date) {
|
if (game.activities.length && game.activities[game.activities.length - 1].date === date) {
|
||||||
date++;
|
date++;
|
||||||
}
|
}
|
||||||
game.activities.push({ color: session ? session.color : undefined, message, date });
|
game.activities.push({ color: session ? session.color : '', message, date });
|
||||||
}
|
}
|
||||||
|
|
||||||
const addChatMessage = (game, session, message) => {
|
const addChatMessage = (game, session, message) => {
|
||||||
@ -2454,7 +2441,6 @@ const placeRoad = (game, session, index) => {
|
|||||||
longestRoad: game.longestRoad,
|
longestRoad: game.longestRoad,
|
||||||
longestRoadLength: game.longestRoadLength
|
longestRoadLength: game.longestRoadLength
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const discard = (game, session, discards) => {
|
const discard = (game, session, discards) => {
|
||||||
@ -3003,12 +2989,23 @@ const sendGameToPlayers = (game) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const sendUpdateToPlayers = async (game, update) => {
|
const sendUpdateToPlayers = async (game, update) => {
|
||||||
|
/* Ensure clearing of a field actually gets sent by setting
|
||||||
|
* undefined to 'false'
|
||||||
|
*/
|
||||||
|
for (let key in update) {
|
||||||
|
if (update[key] === undefined) {
|
||||||
|
update[key] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (debug.update) {
|
if (debug.update) {
|
||||||
console.log(`[ all ]: -> sendUpdateToPlayers - `, update);
|
console.log(`[ all ]: -> sendUpdateToPlayers - `, update);
|
||||||
} else {
|
} else {
|
||||||
const keys = Object.getOwnPropertyNames(update);
|
const keys = Object.getOwnPropertyNames(update);
|
||||||
console.log(`[ all ]: -> sendUpdateToPlayers - ${keys.join(',')}`);
|
console.log(`[ all ]: -> sendUpdateToPlayers - ${keys.join(',')}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const message = JSON.stringify({
|
const message = JSON.stringify({
|
||||||
type: 'game-update',
|
type: 'game-update',
|
||||||
update
|
update
|
||||||
@ -3024,12 +3021,23 @@ const sendUpdateToPlayers = async (game, update) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const sendUpdateToPlayer = async (session, update) => {
|
const sendUpdateToPlayer = async (session, update) => {
|
||||||
|
|
||||||
|
/* Ensure clearing of a field actually gets sent by setting
|
||||||
|
* undefined to 'false'
|
||||||
|
*/
|
||||||
|
for (let key in update) {
|
||||||
|
if (update[key] === undefined) {
|
||||||
|
update[key] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (debug.update) {
|
if (debug.update) {
|
||||||
console.log(`${session.id}: -> sendUpdateToPlayer:${getName(session)} - `, update);
|
console.log(`${session.id}: -> sendUpdateToPlayer:${getName(session)} - `, update);
|
||||||
} else {
|
} else {
|
||||||
const keys = Object.getOwnPropertyNames(update);
|
const keys = Object.getOwnPropertyNames(update);
|
||||||
console.log(`${session.id}: -> sendUpdateToPlayer:${getName(session)} - ${keys.join(',')}`);
|
console.log(`${session.id}: -> sendUpdateToPlayer:${getName(session)} - ${keys.join(',')}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
const message = JSON.stringify({
|
const message = JSON.stringify({
|
||||||
type: 'game-update',
|
type: 'game-update',
|
||||||
update
|
update
|
||||||
@ -3689,12 +3697,11 @@ const resetGame = (game) => {
|
|||||||
signature: game.signature,
|
signature: game.signature,
|
||||||
players: game.players,
|
players: game.players,
|
||||||
stolen: {},
|
stolen: {},
|
||||||
longestRoad: undefined,
|
longestRoad: '',
|
||||||
longestRoadLength: 0,
|
longestRoadLength: 0,
|
||||||
largestArmy: undefined,
|
largestArmy: '',
|
||||||
largestArmySize: 0,
|
largestArmySize: 0,
|
||||||
winner: undefined,
|
winner: undefined,
|
||||||
longestRoad: undefined
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/* Populate the game corner and road placement data as cleared */
|
/* Populate the game corner and road placement data as cleared */
|
||||||
@ -3906,7 +3913,7 @@ router.get("/", (req, res/*, next*/) => {
|
|||||||
playerId = req.cookies.player;
|
playerId = req.cookies.player;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`[${req.cookies.player.substring(0, 8)}]: Browser hand-shake has started.`);
|
console.log(`[${req.cookies.player.substring(0, 8)}]: Browser hand-shake achieved.`);
|
||||||
|
|
||||||
return res.status(200).send({ player: req.cookies.player });
|
return res.status(200).send({ player: req.cookies.player });
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user