diff --git a/client/src/ChooseCard.js b/client/src/ChooseCard.js
index 96f6792..e49652d 100644
--- a/client/src/ChooseCard.js
+++ b/client/src/ChooseCard.js
@@ -54,7 +54,7 @@ const ChooseCard = () => {
type: 'select-resources',
cards
}));
- }, [ws]);
+ }, [ws, cards]);
const count = (turn && turn.active === 'monopoly') ? 1 : 2;
diff --git a/client/src/PlayersStatus.js b/client/src/PlayersStatus.js
index 651ee19..c26a3ed 100644
--- a/client/src/PlayersStatus.js
+++ b/client/src/PlayersStatus.js
@@ -9,7 +9,7 @@ import { Placard } from './Placard.js';
import { GlobalContext } from './GlobalContext.js';
const Player = ({ player, onClick, reverse, color,
- largestArmy, largestArmySize, isSelf, longestRoad, longestRoadLength }) => {
+ largestArmy, isSelf, longestRoad }) => {
if (!player) {
return <>>;
}
@@ -35,7 +35,7 @@ const Player = ({ player, onClick, reverse, color,
disabled
active={false}
type='longest-road'
- count={longestRoadLength}
+ count={player.longestRoad}
/> : undefined;
const largestArmyPlacard = largestArmy && largestArmy === color ?
@@ -43,49 +43,51 @@ const Player = ({ player, onClick, reverse, color,
disabled
active={false}
type='largest-army'
- count={largestArmySize}
+ count={player.army}
/> : undefined;
return
-
-
- { isSelf &&
-
- Longest road: {player.longestRoad ? player.longestRoad : 0}
-
- }
-
{points}
- { (largestArmy || longestRoad || armyCards || developmentCards) && <>
-
- { !reverse && <>
- { largestArmyPlacard }
- { longestRoadPlacard }
- { !largestArmyPlacard && armyCards }
- { developmentCards }
- > }
- { reverse && <>
- { developmentCards }
- { !largestArmyPlacard && armyCards }
- { longestRoadPlacard }
- { largestArmyPlacard }
- > }
-
- > }
-
-
-
-
+
+
+ { isSelf &&
+
+ Longest road: {player.longestRoad ? player.longestRoad : 0}
+
+ }
+
{points}
+ { (largestArmy || longestRoad || armyCards || developmentCards) && <>
+
+ { !reverse && <>
+ { largestArmyPlacard }
+ { longestRoadPlacard }
+ { !largestArmyPlacard && armyCards }
+ { developmentCards }
+ > }
+ { reverse && <>
+ { developmentCards }
+ { !largestArmyPlacard && armyCards }
+ { longestRoadPlacard }
+ { largestArmyPlacard }
+ > }
+
+ > }
+
+
+
+
+
};
const PlayersStatus = ({ active }) => {
const { ws } = useContext(GlobalContext);
const [players, setPlayers] = useState(undefined);
const [color, setColor] = useState(undefined);
+ const [largestArmy, setLargestArmy] = useState(undefined);
+ const [longestRoad, setLongestRoad] = useState(undefined);
const fields = useMemo(() => [
- 'players', 'color'
+ 'players', 'color', 'longestRoad', 'largestArmy'
], []);
const onWsMessage = (event) => {
const data = JSON.parse(event.data);
@@ -98,6 +100,12 @@ const PlayersStatus = ({ active }) => {
if ('color' in data.update && data.update.color !== color) {
setColor(data.update.color);
}
+ if ('longestRoad' in data.update && data.update.longestRoad !== longestRoad) {
+ setLongestRoad(data.update.longestRoad);
+ }
+ if ('largestArmy' in data.update && data.update.largestArmy !== largestArmy) {
+ setLargestArmy(data.update.largestArmy);
+ }
break;
default:
break;
@@ -133,6 +141,9 @@ const PlayersStatus = ({ active }) => {
player={players[color]}
onClick={buildItem}
reverse
+ largestArmy={largestArmy}
+ longestRoad={longestRoad}
+ isSelf={active}
key={`PlayerStatus-${color}`}
color={color}/>;
} else {
@@ -142,6 +153,8 @@ const PlayersStatus = ({ active }) => {
.map(key => {
return ;
});
diff --git a/client/src/ViewCard.js b/client/src/ViewCard.js
index 549832e..a40b714 100644
--- a/client/src/ViewCard.js
+++ b/client/src/ViewCard.js
@@ -55,7 +55,8 @@ const ViewCard = ({cardActive, setCardActive}) => {
type: 'play-card',
card: cardActive
}));
- }, [ws, cardActive]);
+ setCardActive(undefined);
+ }, [ws, cardActive, setCardActive]);
const close = (event) => {
setCardActive(undefined);
diff --git a/server/routes/games.js b/server/routes/games.js
index cd2c42b..d470f82 100755
--- a/server/routes/games.js
+++ b/server/routes/games.js
@@ -394,7 +394,7 @@ const processRoll = (game, session, dice) => {
addChatMessage(game, null, `The robber was rolled and ${player.name} must discard ${player.mustDiscard} resource cards!`);
for (let key in game.sessions) {
if (game.sessions[key].player === player) {
- sendUpdateToPlayer(game.sessions[key].player, {
+ sendUpdateToPlayer(game.sessions[key], {
private: player
});
break;
@@ -1866,9 +1866,10 @@ const pass = (game, session) => {
addChatMessage(game, null, `It is ${next}'s turn.`);
sendUpdateToPlayers(game, {
+ turns: game.turns,
turn: game.turn,
chat: game.chat,
- activites: game.activities
+ activities: game.activities
});
}
@@ -2173,7 +2174,8 @@ const playCard = (game, session, card) => {
activities: game.activities,
largestArmy: game.largestArmy,
largestArmySize: game.largestArmySize,
- turn: game.turn
+ turn: game.turn,
+ players: getFilteredPlayers(game)
});
}
@@ -2619,6 +2621,14 @@ const selectResources = (game, session, cards) => {
session.resources += player[type];
total += player[type];
player[type] = 0;
+ for (let key in game.sessions) {
+ if (game.sessions[key].player === player) {
+ sendUpdateToPlayer(game.sessions[key], {
+ private: game.sessions[key].player
+ });
+ break;
+ }
+ }
}
}
@@ -3312,6 +3322,7 @@ router.ws("/ws/:id", async (ws, req) => {
case 'chat':
case 'startTime':
case 'state':
+ case 'turns':
update[field] = game[field];
break;
case 'name':