diff --git a/client/src/Table.js b/client/src/Table.js index de33421..913bfbd 100755 --- a/client/src/Table.js +++ b/client/src/Table.js @@ -1038,10 +1038,8 @@ class Table extends React.Component { if (player) { let stacks = {}; game.player.development.forEach(item => (item.type in stacks) ? stacks[item.type].push(item.card) : stacks[item.type] = [item.card]); - console.log(stacks); development = []; for (let type in stacks) { - console.log(type, stacks[type]); const cards = stacks[type].map(card => ); development.push(
{ cards }
); } diff --git a/server/routes/games.js b/server/routes/games.js index 8fad8e0..2259392 100755 --- a/server/routes/games.js +++ b/server/routes/games.js @@ -225,7 +225,7 @@ const processGameOrder = (game, player, dice) => { message = `Initial settlement placement has started!`; game.direction = 'forward'; game.turn = { - actions: ['place-settlement'], + actions: [ 'place-settlement' ], limits: { corners: getValidCorners(game) }, name: getPlayerName(game, players[0]), color: getPlayerColor(game, players[0]) @@ -1125,7 +1125,7 @@ router.put("/:id/:action/:value?", async (req, res) => { error = `There are no valid locations for you to place a settlement.`; break; } - game.turn.actions = ['place-settlement']; + game.turn.actions = [ 'place-settlement' ]; game.turn.limits = { corners }; addChatMessage(game, session, `${game.turn.name} is considering placing a settlement.`); break; @@ -1154,6 +1154,11 @@ router.put("/:id/:action/:value?", async (req, res) => { error = `This location already has a settlement belonging to ${playerNameFromColor(game, corner.color)}!`; break; } + + if (!player.banks) { + player.banks = []; + } + if (game.state === 'normal') { if (player.brick < 1 || player.wood < 1 || player.wheat < 1 || player.sheep < 1) { error = `You have insufficient resources to build a settlement.`; @@ -1170,6 +1175,13 @@ router.put("/:id/:action/:value?", async (req, res) => { player.sheep--; corner.color = session.color; corner.type = 'settlement'; + if (layout.corners[index].banks.length) { + layout.corners[index].banks.forEach(bank => { + if (player.banks.indexOf(bank) === -1) { + player.banks.push(bank); + } + }); + } game.turn.actions = []; game.turn.limits = {}; addChatMessage(game, session, `${name} placed a settlement.`); @@ -1179,6 +1191,13 @@ router.put("/:id/:action/:value?", async (req, res) => { } corner.color = session.color; corner.type = 'settlement'; + if (layout.corners[index].banks.length) { + layout.corners[index].banks.forEach(bank => { + if (player.banks.indexOf(bank) === -1) { + player.banks.push(bank); + } + }); + } game.turn.actions = ['place-road']; game.turn.limits = { roads: layout.corners[index].roads }; /* road placement is limited to be near this corner */ addChatMessage(game, session, `Placed a settlement. Next, they need to place a road.`); @@ -1699,6 +1718,8 @@ const shuffleBoard = (game) => { seq.push(i); } shuffle(seq); + console.log('TODO: Map borderOrder to an array of the border values; each border has 3 slots.'); + consoel.log('This is then used in generating "banks" to determine maritime trading values for each player.'); game.borderOrder = seq.slice(); for (let i = 6; i < 19; i++) { seq.push(i); diff --git a/server/routes/layout.js b/server/routes/layout.js index 36428dc..05959f9 100644 --- a/server/routes/layout.js +++ b/server/routes/layout.js @@ -200,13 +200,13 @@ const layout = { ], corners: [ /* 0 */ - /* 0 */ Corner([2, 0],[17,0]), - /* 1 */ Corner([0, 1],[0,1]), + /* 0 */ Corner([2, 0],[0]), + /* 1 */ Corner([0, 1],[0]), /* 2 */ Corner([1,3,5],[1]), /* 3 */ Corner([3,4],[1,2]), /* 4 */ Corner([8,4,6],[2]), - /* 5 */ Corner([6,7],[2,3]), - /* 6 */ Corner([7,9],[3,4]), + /* 5 */ Corner([6,7],[3]), + /* 6 */ Corner([7,9],[3]), /* 7 */ Corner([12,10],[16,17]), /* 8 */ Corner([2,10,11],[17]), /* 9 */ Corner([11,13,15],[]), @@ -216,8 +216,8 @@ const layout = { /* 12 */ Corner([8,16,17],[]), /* 13 */ Corner([17,19,21],[]), /* 14 */ Corner([9,19,20],[4]), - /* 15 */ Corner([20,22],[4,5]), - /* 16 */ Corner([23,25],[16,15]), + /* 15 */ Corner([20,22],[5]), + /* 16 */ Corner([23,25],[15]), /* 17 */ Corner([12,23,24],[16]), /* 18 */ Corner([24,26,28],[]), /* 19 */ Corner([15,26,27],[]), @@ -228,8 +228,8 @@ const layout = { /* 23 */ Corner([21,32,33],[]), /* 24 */ Corner([33,35,37],[]), /* 25 */ Corner([22,35,36],[5]), - /* 26 */ Corner([36,38],[5,6]), - /* 27 */ Corner([25,39],[15,14]), + /* 26 */ Corner([36,38],[6]), + /* 27 */ Corner([25,39],[15]), /* 28 */ Corner([39,40,42],[14]), /* 29 */ Corner([28,40,41],[]), /* 30 */ @@ -240,7 +240,7 @@ const layout = { /* 34 */ Corner([47,49,51],[]), /* 35 */ Corner([37,49,50],[]), /* 36 */ Corner([50,53,52],[7]), - /* 37 */ Corner([38,53],[6,7]), + /* 37 */ Corner([38,53],[6]), /* 38 */ Corner([42,54],[14,13]), /* 39 */ Corner([54,55,57],[13]), /* 40 */ @@ -251,14 +251,14 @@ const layout = { /* 44 */ Corner([51,61,62],[]), /* 45 */ Corner([62,65,64],[8]), /* 46 */ Corner([52,65],[7,8]), - /* 47 */ Corner([57,66],[13,12]), - /* 48 */ Corner([67,66],[12,11]), + /* 47 */ Corner([57,66],[12]), + /* 48 */ Corner([67,66],[12]), /* 49 */ Corner([60,67,68],[11]), /* 50 */ /* 50 */ Corner([68,69],[11,10]), /* 51 */ Corner([69,70,63],[10]), - /* 52 */ Corner([70,71],[10,9]), - /* 53 */ Corner([64,71],[8,9]), + /* 52 */ Corner([70,71],[9]), + /* 53 */ Corner([64,71],[9]), ] };