Socket
Socket
Sign inDemoInstall

@boardgamers/container-engine

Package Overview
Dependencies
Maintainers
2
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@boardgamers/container-engine - npm Package Compare versions

Comparing version 1.0.6 to 1.0.7

10

dist/src/available-moves.js

@@ -18,3 +18,3 @@ "use strict";

const lastLog = G.log[G.log.length - 1];
if (lastLog.type == 'move' && lastLog.player == G.currentPlayer)
if (lastLog.type == 'move' && G.currentPlayers.includes(lastLog.player))
moves[move_1.MoveName.Undo] = [true];

@@ -34,3 +34,3 @@ return moves;

const lastLog = G.log[G.log.length - 1];
if (lastLog.type == 'move' && lastLog.player == G.currentPlayer)
if (lastLog.type == 'move' && G.currentPlayers.includes(lastLog.player))
moves[move_1.MoveName.Undo] = [true];

@@ -128,3 +128,5 @@ return moves;

// BuyFactory
if (player.actions > 0 && player.money >= (player.factories.length + 1) * 3) {
if (player.actions > 0 &&
player.money >= (player.factories.length + 1) * 3 &&
player.factories.length < 4) {
const factoriesLeft = [];

@@ -223,3 +225,3 @@ Object.values(gamestate_1.ContainerColor).forEach((color) => {

const lastLog = G.log[G.log.length - 1];
if (lastLog.type == 'move' && lastLog.player == G.currentPlayer)
if (lastLog.type == 'move' && G.currentPlayers.includes(lastLog.player))
moves[move_1.MoveName.Undo] = [true];

@@ -226,0 +228,0 @@ return moves;

62

dist/src/engine.js

@@ -63,3 +63,3 @@ "use strict";

startingPlayer,
currentPlayer: startingPlayer,
currentPlayers: [startingPlayer],
containersLeft,

@@ -90,4 +90,4 @@ factoriesLeft,

G.log.push({ type: 'event', event: { name: log_1.GameEventName.GameStart } });
G.players[G.currentPlayer].actions = 2;
G.players[G.currentPlayer].availableMoves = available_moves_1.availableMoves(G, G.players[G.currentPlayer]);
G.players[startingPlayer].actions = 2;
G.players[startingPlayer].availableMoves = available_moves_1.availableMoves(G, G.players[startingPlayer]);
return G;

@@ -121,3 +121,3 @@ }

function currentPlayers(G) {
return [G.currentPlayer];
return G.currentPlayers;
}

@@ -129,3 +129,3 @@ exports.currentPlayers = currentPlayers;

const available = (_a = player.availableMoves) === null || _a === void 0 ? void 0 : _a[move.name];
assert_1.default(G.currentPlayer === playerNumber, 'It is not your turn!');
assert_1.default(G.currentPlayers.includes(playerNumber), 'It is not your turn!');
assert_1.default(available, 'You are not allowed to run the command ' + move.name);

@@ -302,5 +302,5 @@ assert_1.default(available.some((x) => lodash_1.isEqual(x, move.data)), 'Wrong argument for the command ' + move.name);

player.actions = 0;
G.auctioningPlayer = G.currentPlayer;
G.auctioningPlayer = G.currentPlayers[0];
G.phase = gamestate_1.Phase.Bid;
nextPlayer(G);
G.currentPlayers = G.players.map((p) => p.id).filter((id) => id !== G.auctioningPlayer);
}

@@ -373,3 +373,3 @@ else {

player.bid = move.extraData.price;
nextPlayer(G);
G.currentPlayers = G.currentPlayers.filter((id) => id !== player.id);
}

@@ -385,10 +385,8 @@ else {

player.additionalBid = move.extraData.price;
do {
nextPlayer(G);
} while (G.highestBidders.indexOf(G.currentPlayer) === -1 && G.auctioningPlayer !== G.currentPlayer);
G.currentPlayers = G.currentPlayers.filter((id) => id !== player.id);
}
if (G.auctioningPlayer === G.currentPlayer) {
if (G.currentPlayers.length === 0) {
if (G.highestBidders.length === 0) {
G.players
.filter((p) => p.id !== G.currentPlayer)
.filter((p) => p.id !== G.auctioningPlayer)
.forEach((p) => {

@@ -399,11 +397,10 @@ p.showBid = true;

const highestBidders = G.players
.filter((p) => p.id != G.currentPlayer && p.bid === highestBid)
.filter((p) => p.id != G.auctioningPlayer && p.bid === highestBid)
.map((p) => p.id);
G.highestBidders = highestBidders;
if (highestBidders.length > 1) {
while (highestBidders.indexOf(G.currentPlayer) === -1) {
nextPlayer(G);
}
G.currentPlayers = highestBidders;
}
else {
G.currentPlayers = [G.auctioningPlayer];
G.phase = gamestate_1.Phase.AcceptDecline;

@@ -415,3 +412,3 @@ }

const highestBidders = G.players
.filter((p) => p.id != G.currentPlayer && p.bid + p.additionalBid === highestBid)
.filter((p) => p.id != G.auctioningPlayer && p.bid + p.additionalBid === highestBid)
.map((p) => p.id);

@@ -422,2 +419,3 @@ G.highestBidders = highestBidders;

});
G.currentPlayers = [G.auctioningPlayer];
G.phase = gamestate_1.Phase.AcceptDecline;

@@ -454,3 +452,3 @@ }

G.phase = gamestate_1.Phase.GameEnd;
G.currentPlayer = undefined;
G.currentPlayers = [];
calculateEndScore(G);

@@ -489,3 +487,3 @@ }

G.phase = gamestate_1.Phase.GameEnd;
G.currentPlayer = undefined;
G.currentPlayers = [];
calculateEndScore(G);

@@ -519,3 +517,3 @@ }

G.phase = gamestate_1.Phase.GameEnd;
G.currentPlayer = undefined;
G.currentPlayers = [];
calculateEndScore(G);

@@ -529,3 +527,3 @@ }

const lastLog = G.log[G.log.length - 1];
if (lastLog.type == 'move' && lastLog.player == G.currentPlayer && !fake) {
if (lastLog.type == 'move' && G.currentPlayers.includes(lastLog.player) && !fake) {
G.log.pop();

@@ -540,4 +538,3 @@ G = reconstructState(getBaseState(G), G.log);

player.lastMove = move;
if (G.currentPlayer !== undefined)
G.players[G.currentPlayer].availableMoves = available_moves_1.availableMoves(G, G.players[G.currentPlayer]);
G.currentPlayers.forEach((p) => (G.players[p].availableMoves = available_moves_1.availableMoves(G, G.players[p])));
return G;

@@ -816,6 +813,6 @@ }

function nextPlayer(G) {
G.currentPlayer = (G.currentPlayer + 1) % G.players.length;
G.currentPlayers = [(G.currentPlayers[0] + 1) % G.players.length];
}
function doUpkeep(G) {
const player = G.players[G.currentPlayer];
const player = G.players[G.currentPlayers[0]];
const loanCount = player.loans.length;

@@ -920,8 +917,9 @@ const interest = [];

}
G.players[G.currentPlayer].actions = 2;
G.players[G.currentPlayer].produced = [];
G.players[G.currentPlayer].containersOnFactoryStore.forEach((c) => (c.moved = false));
G.players[G.currentPlayer].containersOnWarehouseStore.forEach((c) => (c.moved = false));
G.players[G.currentPlayer].didDomesticSale = false;
if (G.currentPlayer == G.startingPlayer) {
const currentPlayer = G.currentPlayers[0];
G.players[currentPlayer].actions = 2;
G.players[currentPlayer].produced = [];
G.players[currentPlayer].containersOnFactoryStore.forEach((c) => (c.moved = false));
G.players[currentPlayer].containersOnWarehouseStore.forEach((c) => (c.moved = false));
G.players[currentPlayer].didDomesticSale = false;
if (currentPlayer == G.startingPlayer) {
G.round++;

@@ -928,0 +926,0 @@ }

@@ -109,3 +109,3 @@ import { AvailableMoves } from './available-moves';

startingPlayer: number;
currentPlayer: number | undefined;
currentPlayers: number[];
containersLeft: ContainerPiece[];

@@ -112,0 +112,0 @@ factoriesLeft: FactoryPiece[];

@@ -13,3 +13,3 @@ import type { GameState } from './index';

export declare function dropPlayer(G: GameState, player: number): Promise<GameState>;
export declare function currentPlayer(G: GameState): number | undefined;
export declare function currentPlayer(G: GameState): number[];
export declare function messages(G: GameState): {

@@ -16,0 +16,0 @@ messages: never[];

@@ -83,3 +83,3 @@ "use strict";

function currentPlayer(G) {
return G.currentPlayer;
return G.currentPlayers;
}

@@ -86,0 +86,0 @@ exports.currentPlayer = currentPlayer;

{
"name": "@boardgamers/container-engine",
"version": "1.0.6",
"version": "1.0.7",
"description": "An engine for Container",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -41,3 +41,3 @@ import { remove } from 'lodash';

const lastLog = G.log[G.log.length - 1];
if (lastLog.type == 'move' && lastLog.player == G.currentPlayer) moves[MoveName.Undo] = [true];
if (lastLog.type == 'move' && G.currentPlayers.includes(lastLog.player)) moves[MoveName.Undo] = [true];

@@ -59,3 +59,3 @@ return moves;

const lastLog = G.log[G.log.length - 1];
if (lastLog.type == 'move' && lastLog.player == G.currentPlayer) moves[MoveName.Undo] = [true];
if (lastLog.type == 'move' && G.currentPlayers.includes(lastLog.player)) moves[MoveName.Undo] = [true];

@@ -176,3 +176,7 @@ return moves;

// BuyFactory
if (player.actions > 0 && player.money >= (player.factories.length + 1) * 3) {
if (
player.actions > 0 &&
player.money >= (player.factories.length + 1) * 3 &&
player.factories.length < 4
) {
const factoriesLeft: ContainerColor[] = [];

@@ -305,3 +309,3 @@ Object.values(ContainerColor).forEach((color) => {

const lastLog = G.log[G.log.length - 1];
if (lastLog.type == 'move' && lastLog.player == G.currentPlayer) moves[MoveName.Undo] = [true];
if (lastLog.type == 'move' && G.currentPlayers.includes(lastLog.player)) moves[MoveName.Undo] = [true];

@@ -308,0 +312,0 @@ return moves;

@@ -20,3 +20,3 @@ import { expect } from 'chai';

// G.currentPlayer = 0;
// G.currentPlayers = [0];
// G.players[0].actions = 2;

@@ -23,0 +23,0 @@ // G.players[0].availableMoves = availableMoves(G, G.players[0]);

@@ -75,3 +75,3 @@ import assert from 'assert';

startingPlayer,
currentPlayer: startingPlayer,
currentPlayers: [startingPlayer],
containersLeft,

@@ -108,4 +108,4 @@ factoriesLeft,

G.players[G.currentPlayer!].actions = 2;
G.players[G.currentPlayer!].availableMoves = availableMoves(G, G.players[G.currentPlayer!]);
G.players[startingPlayer].actions = 2;
G.players[startingPlayer].availableMoves = availableMoves(G, G.players[startingPlayer]);

@@ -139,3 +139,3 @@ return G;

export function currentPlayers(G: GameState): number[] {
return [G.currentPlayer!];
return G.currentPlayers;
}

@@ -147,3 +147,3 @@

assert(G.currentPlayer === playerNumber, 'It is not your turn!');
assert(G.currentPlayers.includes(playerNumber), 'It is not your turn!');
assert(available, 'You are not allowed to run the command ' + move.name);

@@ -372,5 +372,5 @@ assert(

player.actions = 0;
G.auctioningPlayer = G.currentPlayer;
G.auctioningPlayer = G.currentPlayers[0];
G.phase = Phase.Bid;
nextPlayer(G);
G.currentPlayers = G.players.map((p) => p.id).filter((id) => id !== G.auctioningPlayer);
} else {

@@ -460,3 +460,3 @@ player.actions--;

player.bid = move.extraData.price;
nextPlayer(G);
G.currentPlayers = G.currentPlayers.filter((id) => id !== player.id);
} else {

@@ -471,11 +471,9 @@ G.hiddenLog.push({

player.additionalBid = move.extraData.price;
do {
nextPlayer(G);
} while (G.highestBidders.indexOf(G.currentPlayer) === -1 && G.auctioningPlayer !== G.currentPlayer);
G.currentPlayers = G.currentPlayers.filter((id) => id !== player.id);
}
if (G.auctioningPlayer === G.currentPlayer) {
if (G.currentPlayers.length === 0) {
if (G.highestBidders.length === 0) {
G.players
.filter((p) => p.id !== G.currentPlayer)
.filter((p) => p.id !== G.auctioningPlayer)
.forEach((p) => {

@@ -486,10 +484,9 @@ p.showBid = true;

const highestBidders = G.players
.filter((p) => p.id != G.currentPlayer && p.bid === highestBid)
.filter((p) => p.id != G.auctioningPlayer && p.bid === highestBid)
.map((p) => p.id);
G.highestBidders = highestBidders;
if (highestBidders.length > 1) {
while (highestBidders.indexOf(G.currentPlayer) === -1) {
nextPlayer(G);
}
G.currentPlayers = highestBidders;
} else {
G.currentPlayers = [G.auctioningPlayer!];
G.phase = Phase.AcceptDecline;

@@ -500,3 +497,3 @@ }

const highestBidders = G.players
.filter((p) => p.id != G.currentPlayer && p.bid + p.additionalBid === highestBid)
.filter((p) => p.id != G.auctioningPlayer && p.bid + p.additionalBid === highestBid)
.map((p) => p.id);

@@ -507,2 +504,3 @@ G.highestBidders = highestBidders;

});
G.currentPlayers = [G.auctioningPlayer!];
G.phase = Phase.AcceptDecline;

@@ -542,3 +540,3 @@ }

G.phase = Phase.GameEnd;
G.currentPlayer = undefined;
G.currentPlayers = [];
calculateEndScore(G);

@@ -580,3 +578,3 @@ }

G.phase = Phase.GameEnd;
G.currentPlayer = undefined;
G.currentPlayers = [];
calculateEndScore(G);

@@ -614,3 +612,3 @@ }

G.phase = Phase.GameEnd;
G.currentPlayer = undefined;
G.currentPlayers = [];
calculateEndScore(G);

@@ -627,3 +625,3 @@ }

const lastLog = G.log[G.log.length - 1];
if (lastLog.type == 'move' && lastLog.player == G.currentPlayer && !fake) {
if (lastLog.type == 'move' && G.currentPlayers.includes(lastLog.player) && !fake) {
G.log.pop();

@@ -641,4 +639,3 @@ G = reconstructState(getBaseState(G), G.log);

if (G.currentPlayer !== undefined)
G.players[G.currentPlayer].availableMoves = availableMoves(G, G.players[G.currentPlayer]);
G.currentPlayers.forEach((p) => (G.players[p].availableMoves = availableMoves(G, G.players[p])));

@@ -922,7 +919,7 @@ return G;

function nextPlayer(G: GameState) {
G.currentPlayer = (G.currentPlayer! + 1) % G.players.length;
G.currentPlayers = [(G.currentPlayers[0] + 1) % G.players.length];
}
function doUpkeep(G: GameState) {
const player = G.players[G.currentPlayer!];
const player = G.players[G.currentPlayers[0]];
const loanCount = player.loans.length;

@@ -1038,9 +1035,10 @@ const interest: string[] = [];

G.players[G.currentPlayer!].actions = 2;
G.players[G.currentPlayer!].produced = [];
G.players[G.currentPlayer!].containersOnFactoryStore.forEach((c) => (c.moved = false));
G.players[G.currentPlayer!].containersOnWarehouseStore.forEach((c) => (c.moved = false));
G.players[G.currentPlayer!].didDomesticSale = false;
const currentPlayer = G.currentPlayers[0];
G.players[currentPlayer].actions = 2;
G.players[currentPlayer].produced = [];
G.players[currentPlayer].containersOnFactoryStore.forEach((c) => (c.moved = false));
G.players[currentPlayer].containersOnWarehouseStore.forEach((c) => (c.moved = false));
G.players[currentPlayer].didDomesticSale = false;
if (G.currentPlayer == G.startingPlayer) {
if (currentPlayer == G.startingPlayer) {
G.round++;

@@ -1047,0 +1045,0 @@ }

@@ -125,3 +125,3 @@ import { AvailableMoves } from './available-moves';

startingPlayer: number;
currentPlayer: number | undefined;
currentPlayers: number[];
containersLeft: ContainerPiece[];

@@ -128,0 +128,0 @@ factoriesLeft: FactoryPiece[];

@@ -72,3 +72,3 @@ import { cloneDeep } from 'lodash';

export function currentPlayer(G: GameState) {
return G.currentPlayer;
return G.currentPlayers;
}

@@ -75,0 +75,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc