diff --git a/client/src/Board.js b/client/src/Board.js index 6936603..2e766a9 100644 --- a/client/src/Board.js +++ b/client/src/Board.js @@ -219,14 +219,14 @@ const Board = () => { })); }, [ws]); - const Road = ({road}) => { - const onClick = (event) => { - console.log(`Road clicked: ${road.index}`); - sendPlacement('place-road', road.index); - }; + const onRoadClicked = useCallback((road) => { + console.log(`Road clicked: ${road.index}`); + sendPlacement('place-road', road.index); + }, [sendPlacement]); + const Road = ({road}) => { return
{ onRoadClicked(road) }} data-index={road.index} style={{ transform: `translate(-50%, -50%) rotate(${road.angle}deg)`, @@ -236,19 +236,19 @@ const Board = () => { >
; }; - const Corner = ({corner}) => { - const onClick = (event) => { - let type; - if (event.currentTarget.getAttribute('data-type') === 'settlement') { - type = 'place-city'; - } else { - type = 'place-settlement'; - } - sendPlacement(type, corner.index); - }; + const onCornerClicked = useCallback((event, corner) => { + let type; + if (event.currentTarget.getAttribute('data-type') === 'settlement') { + type = 'place-city'; + } else { + type = 'place-settlement'; + } + sendPlacement(type, corner.index); + }, [sendPlacement]); - return
{ + return
{ onCornerClicked(event, corner) }} data-index={corner.index} style={{ top: `${corner.top}px`, @@ -257,13 +257,13 @@ const Board = () => { >
; }; - const Pip = ({pip}) => { - const onClick = (event) => { - sendPlacement('place-robber', pip.index); - }; + const onPipClicked = useCallback((pip) => { + sendPlacement('place-robber', pip.index); + }, [sendPlacement]); + const Pip = ({pip}) => { return
{ onPipClicked(pip) }} data-roll={pip.roll} data-index={pip.index} style={{ diff --git a/server/routes/games.js b/server/routes/games.js index 024120a..f668d9a 100755 --- a/server/routes/games.js +++ b/server/routes/games.js @@ -1942,10 +1942,19 @@ const stealResource = (game, session, color) => { if (game.turn.limits.players.findIndex(item => item.color === color) === -1) { return `You can only steal a resource from a player on this terrain!`; } - const victim = game.players[color]; + let victim; + for (let key in game.sessions) { + if (game.sessions[key].color === color) { + victim = game.sessions[key]; + break; + } + } + if (!victim) { + return `You sent a wierd color for the target to steal from.`; + } const cards = []; [ 'wheat', 'brick', 'sheep', 'stone', 'wood' ].forEach(field => { - for (let i = 0; i < victim[field]; i++) { + for (let i = 0; i < victim.player[field]; i++) { cards.push(field); } }); @@ -1961,8 +1970,8 @@ const stealResource = (game, session, color) => { } else { let index = Math.floor(Math.random() * cards.length), type = cards[index]; - victim[type]--; - victim.resources--; + victim.player[type]--; + victim.player.resources--; session.player[type]++; session.player.resources++; game.turn.actions = []; @@ -1970,18 +1979,22 @@ const stealResource = (game, session, color) => { addChatMessage(game, session, `${session.name} randomly stole 1 ${type} from ` + `${victim.name}.`); + sendUpdateToPlayer(victim, { + private: victim.player + }); } debugChat(game, 'After steal'); game.turn.robberInAction = false; + + sendUpdateToPlayer(session, { + private: session.player + }); sendUpdateToPlayers(game, { turn: game.turn, chat: game.chat, activities: game.activities }); - sendUpdateToPlayer(session, { - private: session.player - }); } const buyDevelopment = (game, session) => {