Monopoly works
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
bca1a15149
commit
3cc166932a
@ -54,7 +54,7 @@ const ChooseCard = () => {
|
|||||||
type: 'select-resources',
|
type: 'select-resources',
|
||||||
cards
|
cards
|
||||||
}));
|
}));
|
||||||
}, [ws]);
|
}, [ws, cards]);
|
||||||
|
|
||||||
const count = (turn && turn.active === 'monopoly') ? 1 : 2;
|
const count = (turn && turn.active === 'monopoly') ? 1 : 2;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ import { Placard } from './Placard.js';
|
|||||||
import { GlobalContext } from './GlobalContext.js';
|
import { GlobalContext } from './GlobalContext.js';
|
||||||
|
|
||||||
const Player = ({ player, onClick, reverse, color,
|
const Player = ({ player, onClick, reverse, color,
|
||||||
largestArmy, largestArmySize, isSelf, longestRoad, longestRoadLength }) => {
|
largestArmy, isSelf, longestRoad }) => {
|
||||||
if (!player) {
|
if (!player) {
|
||||||
return <></>;
|
return <></>;
|
||||||
}
|
}
|
||||||
@ -35,7 +35,7 @@ const Player = ({ player, onClick, reverse, color,
|
|||||||
disabled
|
disabled
|
||||||
active={false}
|
active={false}
|
||||||
type='longest-road'
|
type='longest-road'
|
||||||
count={longestRoadLength}
|
count={player.longestRoad}
|
||||||
/> : undefined;
|
/> : undefined;
|
||||||
|
|
||||||
const largestArmyPlacard = largestArmy && largestArmy === color ?
|
const largestArmyPlacard = largestArmy && largestArmy === color ?
|
||||||
@ -43,7 +43,7 @@ const Player = ({ player, onClick, reverse, color,
|
|||||||
disabled
|
disabled
|
||||||
active={false}
|
active={false}
|
||||||
type='largest-army'
|
type='largest-army'
|
||||||
count={largestArmySize}
|
count={player.army}
|
||||||
/> : undefined;
|
/> : undefined;
|
||||||
|
|
||||||
return <div className="Player">
|
return <div className="Player">
|
||||||
@ -84,8 +84,10 @@ const PlayersStatus = ({ active }) => {
|
|||||||
const { ws } = useContext(GlobalContext);
|
const { ws } = useContext(GlobalContext);
|
||||||
const [players, setPlayers] = useState(undefined);
|
const [players, setPlayers] = useState(undefined);
|
||||||
const [color, setColor] = useState(undefined);
|
const [color, setColor] = useState(undefined);
|
||||||
|
const [largestArmy, setLargestArmy] = useState(undefined);
|
||||||
|
const [longestRoad, setLongestRoad] = useState(undefined);
|
||||||
const fields = useMemo(() => [
|
const fields = useMemo(() => [
|
||||||
'players', 'color'
|
'players', 'color', 'longestRoad', 'largestArmy'
|
||||||
], []);
|
], []);
|
||||||
const onWsMessage = (event) => {
|
const onWsMessage = (event) => {
|
||||||
const data = JSON.parse(event.data);
|
const data = JSON.parse(event.data);
|
||||||
@ -98,6 +100,12 @@ const PlayersStatus = ({ active }) => {
|
|||||||
if ('color' in data.update && data.update.color !== color) {
|
if ('color' in data.update && data.update.color !== color) {
|
||||||
setColor(data.update.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;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -133,6 +141,9 @@ const PlayersStatus = ({ active }) => {
|
|||||||
player={players[color]}
|
player={players[color]}
|
||||||
onClick={buildItem}
|
onClick={buildItem}
|
||||||
reverse
|
reverse
|
||||||
|
largestArmy={largestArmy}
|
||||||
|
longestRoad={longestRoad}
|
||||||
|
isSelf={active}
|
||||||
key={`PlayerStatus-${color}`}
|
key={`PlayerStatus-${color}`}
|
||||||
color={color}/>;
|
color={color}/>;
|
||||||
} else {
|
} else {
|
||||||
@ -142,6 +153,8 @@ const PlayersStatus = ({ active }) => {
|
|||||||
.map(key => {
|
.map(key => {
|
||||||
return <Player
|
return <Player
|
||||||
player={players[key]}
|
player={players[key]}
|
||||||
|
largestArmy={largestArmy}
|
||||||
|
longestRoad={longestRoad}
|
||||||
key={`PlayerStatus-${key}}`}
|
key={`PlayerStatus-${key}}`}
|
||||||
color={key}/>;
|
color={key}/>;
|
||||||
});
|
});
|
||||||
|
@ -55,7 +55,8 @@ const ViewCard = ({cardActive, setCardActive}) => {
|
|||||||
type: 'play-card',
|
type: 'play-card',
|
||||||
card: cardActive
|
card: cardActive
|
||||||
}));
|
}));
|
||||||
}, [ws, cardActive]);
|
setCardActive(undefined);
|
||||||
|
}, [ws, cardActive, setCardActive]);
|
||||||
|
|
||||||
const close = (event) => {
|
const close = (event) => {
|
||||||
setCardActive(undefined);
|
setCardActive(undefined);
|
||||||
|
@ -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!`);
|
addChatMessage(game, null, `The robber was rolled and ${player.name} must discard ${player.mustDiscard} resource cards!`);
|
||||||
for (let key in game.sessions) {
|
for (let key in game.sessions) {
|
||||||
if (game.sessions[key].player === player) {
|
if (game.sessions[key].player === player) {
|
||||||
sendUpdateToPlayer(game.sessions[key].player, {
|
sendUpdateToPlayer(game.sessions[key], {
|
||||||
private: player
|
private: player
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
@ -1866,9 +1866,10 @@ const pass = (game, session) => {
|
|||||||
addChatMessage(game, null, `It is ${next}'s turn.`);
|
addChatMessage(game, null, `It is ${next}'s turn.`);
|
||||||
|
|
||||||
sendUpdateToPlayers(game, {
|
sendUpdateToPlayers(game, {
|
||||||
|
turns: game.turns,
|
||||||
turn: game.turn,
|
turn: game.turn,
|
||||||
chat: game.chat,
|
chat: game.chat,
|
||||||
activites: game.activities
|
activities: game.activities
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2173,7 +2174,8 @@ const playCard = (game, session, card) => {
|
|||||||
activities: game.activities,
|
activities: game.activities,
|
||||||
largestArmy: game.largestArmy,
|
largestArmy: game.largestArmy,
|
||||||
largestArmySize: game.largestArmySize,
|
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];
|
session.resources += player[type];
|
||||||
total += player[type];
|
total += player[type];
|
||||||
player[type] = 0;
|
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 'chat':
|
||||||
case 'startTime':
|
case 'startTime':
|
||||||
case 'state':
|
case 'state':
|
||||||
|
case 'turns':
|
||||||
update[field] = game[field];
|
update[field] = game[field];
|
||||||
break;
|
break;
|
||||||
case 'name':
|
case 'name':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user