@gamepark/rules-api 5.13.1 → 5.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Action.d.ts +10 -5
- package/dist/Action.js +12 -22
- package/dist/Action.js.map +1 -1
- package/dist/Game.d.ts +2 -2
- package/dist/Game.js +14 -6
- package/dist/Game.js.map +1 -1
- package/dist/IncompleteInformation.d.ts +1 -0
- package/dist/IncompleteInformation.js.map +1 -1
- package/dist/RandomMove.d.ts +1 -1
- package/dist/RandomMove.js +4 -6
- package/dist/RandomMove.js.map +1 -1
- package/dist/SecretAction.d.ts +6 -0
- package/dist/SecretAction.js +8 -0
- package/dist/SecretAction.js.map +1 -0
- package/dist/SecretMove.d.ts +5 -0
- package/dist/SecretMove.js +9 -0
- package/dist/SecretMove.js.map +1 -0
- package/dist/options/PlayerIdSpec.d.ts +4 -1
- package/dist/options/PlayerIdSpec.js +15 -0
- package/dist/options/PlayerIdSpec.js.map +1 -1
- package/dist/options/providePlayerIds.js +9 -9
- package/dist/options/providePlayerIds.js.map +1 -1
- package/package.json +2 -2
package/dist/Action.d.ts
CHANGED
|
@@ -8,13 +8,18 @@ declare type Action<Move = any, PlayerId = any> = {
|
|
|
8
8
|
};
|
|
9
9
|
export default Action;
|
|
10
10
|
export declare function playAction<State, Move, PlayerId>(game: Game<State, Move>, move: Move, playerId: PlayerId, id?: string): Action<Move, PlayerId>;
|
|
11
|
-
export declare type ActionWithViews<Move, MoveView, PlayerId> = {
|
|
11
|
+
export declare type ActionWithViews<Move = any, MoveView = Move, PlayerId = any> = {
|
|
12
12
|
action: Action<Move, PlayerId>;
|
|
13
|
-
views:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
views: ActionView<MoveView, PlayerId>[];
|
|
14
|
+
};
|
|
15
|
+
export declare type ActionView<MoveView = any, PlayerId = any> = {
|
|
16
|
+
recipient?: PlayerId;
|
|
17
|
+
action: Action<MoveView, PlayerId>;
|
|
17
18
|
};
|
|
18
19
|
export declare function playActionWithViews<State, View, Move, MoveView, PlayerId>(game: IncompleteInformation<State, View, Move, MoveView, PlayerId>, move: Move, playerId: PlayerId, recipients: PlayerId[], id?: string): ActionWithViews<Move, MoveView, PlayerId>;
|
|
19
20
|
export declare function replayAction<State, Move, PlayerId>(game: Game<State, Move>, action: Action<Move, PlayerId>): void;
|
|
20
21
|
export declare function replayActions<State, Move, PlayerId>(game: Game<State, Move>, actions: Action<Move, PlayerId>[]): void;
|
|
22
|
+
export declare type SecretAction<Move = any, MoveView = Move, PlayerId = any> = Action<Move, PlayerId> & {
|
|
23
|
+
secrets: ActionView<MoveView, PlayerId>[];
|
|
24
|
+
};
|
|
25
|
+
export declare function isSecretAction(action: Action): action is SecretAction;
|
package/dist/Action.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.replayActions = exports.replayAction = exports.playActionWithViews = exports.playAction = void 0;
|
|
3
|
+
exports.isSecretAction = exports.replayActions = exports.replayAction = exports.playActionWithViews = exports.playAction = void 0;
|
|
4
4
|
var Game_1 = require("./Game");
|
|
5
5
|
var index_1 = require("./index");
|
|
6
6
|
var RandomMove_1 = require("./RandomMove");
|
|
@@ -10,15 +10,7 @@ function playAction(game, move, playerId, id) {
|
|
|
10
10
|
}
|
|
11
11
|
var action = { id: id, playerId: playerId, move: move, consequences: [] };
|
|
12
12
|
game.play(JSON.parse(JSON.stringify(move)));
|
|
13
|
-
(0, Game_1.
|
|
14
|
-
var consequences = (0, RandomMove_1.getRandomAutomaticMoves)(game);
|
|
15
|
-
for (var _i = 0, consequences_1 = consequences; _i < consequences_1.length; _i++) {
|
|
16
|
-
var move_1 = consequences_1[_i];
|
|
17
|
-
game.play(JSON.parse(JSON.stringify(move_1)));
|
|
18
|
-
action.consequences.push(move_1);
|
|
19
|
-
}
|
|
20
|
-
return consequences.length > 0;
|
|
21
|
-
}, { errorFn: function () { return new Error("Infinite loop detected while applying automatic moves after ".concat(JSON.stringify(move), " in ").concat(JSON.stringify(game.state))); } });
|
|
13
|
+
(0, Game_1.applyAutomaticMoves)(game, function (move) { return action.consequences.push(move); });
|
|
22
14
|
return action;
|
|
23
15
|
}
|
|
24
16
|
exports.playAction = playAction;
|
|
@@ -38,19 +30,13 @@ function playActionWithViews(game, move, playerId, recipients, id) {
|
|
|
38
30
|
// Prepare action view for spectators
|
|
39
31
|
actionWithView.views.push({ action: { id: id, playerId: playerId, move: (0, index_1.getMoveView)(game, move), consequences: [] } });
|
|
40
32
|
game.play(JSON.parse(JSON.stringify(move)));
|
|
41
|
-
(0, Game_1.
|
|
42
|
-
|
|
43
|
-
for (var _i = 0,
|
|
44
|
-
var
|
|
45
|
-
|
|
46
|
-
for (var _a = 0, _b = actionWithView.views; _a < _b.length; _a++) {
|
|
47
|
-
var view = _b[_a];
|
|
48
|
-
view.action.consequences.push((0, index_1.getMoveView)(game, move_2, view.recipient));
|
|
49
|
-
}
|
|
50
|
-
game.play(JSON.parse(JSON.stringify(move_2)));
|
|
33
|
+
(0, Game_1.applyAutomaticMoves)(game, function (move) {
|
|
34
|
+
actionWithView.action.consequences.push(move);
|
|
35
|
+
for (var _i = 0, _a = actionWithView.views; _i < _a.length; _i++) {
|
|
36
|
+
var view = _a[_i];
|
|
37
|
+
view.action.consequences.push((0, index_1.getMoveView)(game, move, view.recipient));
|
|
51
38
|
}
|
|
52
|
-
|
|
53
|
-
}, { errorFn: function () { return new Error("Infinite loop detected while applying automatic moves after ".concat(JSON.stringify(move), " in ").concat(JSON.stringify(game.state))); } });
|
|
39
|
+
});
|
|
54
40
|
return actionWithView;
|
|
55
41
|
}
|
|
56
42
|
exports.playActionWithViews = playActionWithViews;
|
|
@@ -63,4 +49,8 @@ function replayActions(game, actions) {
|
|
|
63
49
|
actions.forEach(function (action) { return replayAction(game, action); });
|
|
64
50
|
}
|
|
65
51
|
exports.replayActions = replayActions;
|
|
52
|
+
function isSecretAction(action) {
|
|
53
|
+
return Array.isArray(action.secrets);
|
|
54
|
+
}
|
|
55
|
+
exports.isSecretAction = isSecretAction;
|
|
66
56
|
//# sourceMappingURL=Action.js.map
|
package/dist/Action.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Action.js","sourceRoot":"","sources":["../src/Action.ts"],"names":[],"mappings":";;;AAAA,+
|
|
1
|
+
{"version":3,"file":"Action.js","sourceRoot":"","sources":["../src/Action.ts"],"names":[],"mappings":"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"}
|
package/dist/Game.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export default interface Game<State, Move = string> {
|
|
2
2
|
state: State;
|
|
3
3
|
play(move: Move): void;
|
|
4
|
-
|
|
4
|
+
getAutomaticMoves?(): Move[];
|
|
5
5
|
}
|
|
6
|
-
export declare function applyAutomaticMoves<State, Move>(game: Game<State, Move
|
|
6
|
+
export declare function applyAutomaticMoves<State, Move>(game: Game<State, Move>, preprocessMove?: (move: Move) => void): void;
|
|
7
7
|
export declare function loopWithFuse(repeat: () => boolean, options?: {
|
|
8
8
|
attempts?: number;
|
|
9
9
|
errorFn?: () => Error;
|
package/dist/Game.js
CHANGED
|
@@ -2,15 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.loopWithFuse = exports.applyAutomaticMoves = void 0;
|
|
4
4
|
var RandomMove_1 = require("./RandomMove");
|
|
5
|
-
function applyAutomaticMoves(game) {
|
|
5
|
+
function applyAutomaticMoves(game, preprocessMove) {
|
|
6
|
+
var moves = [];
|
|
6
7
|
loopWithFuse(function () {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
if (moves.length === 0 && game.getAutomaticMoves) {
|
|
9
|
+
moves.push.apply(moves, (0, RandomMove_1.randomizeMoves)(game, game.getAutomaticMoves()));
|
|
10
|
+
}
|
|
11
|
+
var move = moves.shift();
|
|
12
|
+
if (move) {
|
|
13
|
+
if (preprocessMove)
|
|
14
|
+
preprocessMove(move);
|
|
10
15
|
game.play(JSON.parse(JSON.stringify(move)));
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
return false;
|
|
11
20
|
}
|
|
12
|
-
|
|
13
|
-
}, { errorFn: function () { return new Error("Infinite loop detected while applying automatic moves in ".concat(JSON.stringify(game.state))); } });
|
|
21
|
+
}, { errorFn: function () { return new Error("Infinite loop detected while applying move consequences: ".concat(JSON.stringify(game.getAutomaticMoves()), ")")); } });
|
|
14
22
|
}
|
|
15
23
|
exports.applyAutomaticMoves = applyAutomaticMoves;
|
|
16
24
|
function loopWithFuse(repeat, options) {
|
package/dist/Game.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Game.js","sourceRoot":"","sources":["../src/Game.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Game.js","sourceRoot":"","sources":["../src/Game.ts"],"names":[],"mappings":";;;AAAA,2CAA2C;AAU3C,SAAgB,mBAAmB,CAAc,IAAuB,EAAE,cAAqC;IAC7G,IAAM,KAAK,GAAW,EAAE,CAAA;IACxB,YAAY,CAAC;QACX,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAChD,KAAK,CAAC,IAAI,OAAV,KAAK,EAAS,IAAA,2BAAc,EAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAC;SAC9D;QACD,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,IAAI,EAAE;YACR,IAAI,cAAc;gBAAE,cAAc,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC3C,OAAO,IAAI,CAAA;SACZ;aAAM;YACL,OAAO,KAAK,CAAA;SACb;IACH,CAAC,EAAE,EAAC,OAAO,EAAE,cAAM,OAAA,IAAI,KAAK,CAAC,mEAA4D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAkB,EAAE,CAAC,MAAG,CAAC,EAAnH,CAAmH,EAAC,CAAC,CAAA;AAC1I,CAAC;AAfD,kDAeC;AAED,SAAgB,YAAY,CAAC,MAAqB,EAAE,OAAsD;IACxG,IAAI,QAAQ,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACzF,IAAM,OAAO,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,KAAI,CAAC,cAAM,OAAA,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAnC,CAAmC,CAAC,CAAA;IAC/E,OAAO,MAAM,EAAE,EAAE;QACf,IAAI,QAAQ,IAAI,CAAC,EAAE;YACjB,MAAM,OAAO,EAAE,CAAA;SAChB;QACD,QAAQ,EAAE,CAAA;KACX;AACH,CAAC;AATD,oCASC"}
|
|
@@ -7,6 +7,7 @@ export declare function hasIncompleteInformation<State, StateView, Move, MoveVie
|
|
|
7
7
|
export interface SecretInformation<State, StateView, Move = string, MoveView = string, PlayerId = number> extends IncompleteInformation<State, StateView, Move, MoveView, PlayerId> {
|
|
8
8
|
getPlayerView(playerId: PlayerId): StateView;
|
|
9
9
|
getPlayerMoveView?(move: Move, playerId: PlayerId): MoveView;
|
|
10
|
+
keepMoveSecret?(move: Move, playerId: PlayerId): boolean;
|
|
10
11
|
}
|
|
11
12
|
export declare function hasSecretInformation<State, StateView, Move, MoveView, PlayerId>(rules: Rules<State, Move, PlayerId>): rules is SecretInformation<State, StateView, Move, MoveView, PlayerId>;
|
|
12
13
|
export declare function getGameView<State, StateView, Move, MoveView, PlayerId>(game: IncompleteInformation<State, StateView, Move, MoveView, PlayerId>, playerId?: PlayerId): StateView;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IncompleteInformation.js","sourceRoot":"","sources":["../src/IncompleteInformation.ts"],"names":[],"mappings":";;;AAQA,SAAgB,wBAAwB,CAA6C,KAAmC;IACtH,IAAM,IAAI,GAAG,KAA0E,CAAA;IACvF,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,CAAA;AACrF,CAAC;AAHD,4DAGC;
|
|
1
|
+
{"version":3,"file":"IncompleteInformation.js","sourceRoot":"","sources":["../src/IncompleteInformation.ts"],"names":[],"mappings":";;;AAQA,SAAgB,wBAAwB,CAA6C,KAAmC;IACtH,IAAM,IAAI,GAAG,KAA0E,CAAA;IACvF,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,CAAA;AACrF,CAAC;AAHD,4DAGC;AAUD,SAAgB,oBAAoB,CAA6C,KAAmC;IAClH,IAAM,IAAI,GAAG,KAAsE,CAAA;IACnF,OAAO,OAAO,IAAI,CAAC,aAAa,KAAK,UAAU,CAAA;AACjD,CAAC;AAHD,oDAGC;AAED,SAAgB,WAAW,CAA6C,IAAuE,EAAE,QAAmB;IAClK,IAAI,oBAAoB,CAA6C,IAAI,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE;QACpG,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;KACpC;SAAM;QACL,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;KACtB;AACH,CAAC;AAND,kCAMC;AAED,SAAgB,WAAW,CAA6C,IAAuE,EAAE,IAAU,EAAE,QAAmB;IAC9K,IAAI,oBAAoB,CAA6C,IAAI,CAAC,IAAI,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE;QAC9H,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;KAC1E;SAAM;QACL,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAC1D;AACH,CAAC;AAND,kCAMC"}
|
package/dist/RandomMove.d.ts
CHANGED
|
@@ -4,4 +4,4 @@ export default interface RandomMove<State, Move = string, R = string> extends Ga
|
|
|
4
4
|
play(move: Move & R): void;
|
|
5
5
|
}
|
|
6
6
|
export declare function hasRandomMove<State, Move, R>(game: Game<State, Move>): game is RandomMove<State, Move, R>;
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function randomizeMoves<State, Move>(game: Game<State, Move>, moves: Move[]): Move[];
|
package/dist/RandomMove.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.randomizeMoves = exports.hasRandomMove = void 0;
|
|
4
4
|
function hasRandomMove(game) {
|
|
5
5
|
return typeof game.randomize === 'function';
|
|
6
6
|
}
|
|
7
7
|
exports.hasRandomMove = hasRandomMove;
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
var consequences = consequence ? Array.isArray(consequence) ? consequence : [consequence] : [];
|
|
11
|
-
return hasRandomMove(game) ? consequences.map(function (move) { return game.randomize(move); }) : consequences;
|
|
8
|
+
function randomizeMoves(game, moves) {
|
|
9
|
+
return hasRandomMove(game) ? moves.map(function (move) { return game.randomize(move); }) : moves;
|
|
12
10
|
}
|
|
13
|
-
exports.
|
|
11
|
+
exports.randomizeMoves = randomizeMoves;
|
|
14
12
|
//# sourceMappingURL=RandomMove.js.map
|
package/dist/RandomMove.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RandomMove.js","sourceRoot":"","sources":["../src/RandomMove.ts"],"names":[],"mappings":";;;AAQA,SAAgB,aAAa,CAAiB,IAAuB;IACnE,OAAO,OAAQ,IAAmC,CAAC,SAAS,KAAK,UAAU,CAAA;AAC7E,CAAC;AAFD,sCAEC;AAED,SAAgB,
|
|
1
|
+
{"version":3,"file":"RandomMove.js","sourceRoot":"","sources":["../src/RandomMove.ts"],"names":[],"mappings":";;;AAQA,SAAgB,aAAa,CAAiB,IAAuB;IACnE,OAAO,OAAQ,IAAmC,CAAC,SAAS,KAAK,UAAU,CAAA;AAC7E,CAAC;AAFD,sCAEC;AAED,SAAgB,cAAc,CAAc,IAAuB,EAAE,KAAa;IAChF,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAApB,CAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAC9E,CAAC;AAFD,wCAEC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import Action, { ActionView } from './Action';
|
|
2
|
+
declare type SecretAction<Move = any, MoveView = Move, PlayerId = any> = Action<Move, PlayerId> & {
|
|
3
|
+
secrets: ActionView<MoveView, PlayerId>[];
|
|
4
|
+
};
|
|
5
|
+
export default SecretAction;
|
|
6
|
+
export declare function isSecretAction(action: Action): action is SecretAction;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSecretAction = void 0;
|
|
4
|
+
function isSecretAction(action) {
|
|
5
|
+
return Array.isArray(action.secrets);
|
|
6
|
+
}
|
|
7
|
+
exports.isSecretAction = isSecretAction;
|
|
8
|
+
//# sourceMappingURL=SecretAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretAction.js","sourceRoot":"","sources":["../src/SecretAction.ts"],"names":[],"mappings":";;;AAQA,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAE,MAAuB,CAAC,OAAO,CAAC,CAAA;AACxD,CAAC;AAFD,wCAEC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import Rules from './Rules';
|
|
2
|
+
export default interface SecretMove<State, Move = string, PlayerId = number> extends Rules<State, Move, PlayerId> {
|
|
3
|
+
keepMoveSecret(move: Move): boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare function hasSecretMove<State, Move, PlayerId>(rules: Rules<State, Move, PlayerId>): rules is SecretMove<State, Move, PlayerId>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasSecretMove = void 0;
|
|
4
|
+
function hasSecretMove(rules) {
|
|
5
|
+
var game = rules;
|
|
6
|
+
return typeof game.keepMoveSecret === 'function';
|
|
7
|
+
}
|
|
8
|
+
exports.hasSecretMove = hasSecretMove;
|
|
9
|
+
//# sourceMappingURL=SecretMove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretMove.js","sourceRoot":"","sources":["../src/SecretMove.ts"],"names":[],"mappings":";;;AAMA,SAAgB,aAAa,CAAwB,KAAmC;IACtF,IAAM,IAAI,GAAG,KAA0C,CAAA;IACvD,OAAO,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU,CAAA;AAClD,CAAC;AAHD,sCAGC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import EnumOption from './EnumOption';
|
|
2
2
|
declare type PlayerIdSpec<Id> = EnumOption<Id> & {
|
|
3
|
-
mandatory?:
|
|
3
|
+
mandatory?: (players: number) => Id[];
|
|
4
|
+
unavailable?: (players: number) => Id[];
|
|
4
5
|
};
|
|
5
6
|
export default PlayerIdSpec;
|
|
7
|
+
export declare function getMandatoryIds<Id>(spec: PlayerIdSpec<Id>, players: number): Id[];
|
|
8
|
+
export declare function getAvailableIds<Id>(spec: PlayerIdSpec<Id>, players: number): Id[];
|
|
@@ -1,3 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAvailableIds = exports.getMandatoryIds = void 0;
|
|
4
|
+
function getMandatoryIds(spec, players) {
|
|
5
|
+
return spec.mandatory ? spec.mandatory(players) : [];
|
|
6
|
+
}
|
|
7
|
+
exports.getMandatoryIds = getMandatoryIds;
|
|
8
|
+
function getAvailableIds(spec, players) {
|
|
9
|
+
if (spec.unavailable) {
|
|
10
|
+
var unavailableIds_1 = spec.unavailable(players);
|
|
11
|
+
return spec.values.filter(function (id) { return !unavailableIds_1.includes(id); });
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
return spec.values;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.getAvailableIds = getAvailableIds;
|
|
3
18
|
//# sourceMappingURL=PlayerIdSpec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerIdSpec.js","sourceRoot":"","sources":["../../src/options/PlayerIdSpec.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"PlayerIdSpec.js","sourceRoot":"","sources":["../../src/options/PlayerIdSpec.ts"],"names":[],"mappings":";;;AASA,SAAgB,eAAe,CAAK,IAAsB,EAAE,OAAe;IACzE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACtD,CAAC;AAFD,0CAEC;AAED,SAAgB,eAAe,CAAK,IAAsB,EAAE,OAAe;IACzE,IAAI,IAAI,CAAC,WAAW,EAAE;QACpB,IAAM,gBAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,gBAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,EAA5B,CAA4B,CAAC,CAAA;KAC9D;SAAM;QACL,OAAO,IAAI,CAAC,MAAM,CAAA;KACnB;AACH,CAAC;AAPD,0CAOC"}
|
|
@@ -13,24 +13,24 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
var isWithPlayerIdOptions_1 = __importDefault(require("./isWithPlayerIdOptions"));
|
|
16
|
+
var PlayerIdSpec_1 = require("./PlayerIdSpec");
|
|
16
17
|
function providePlayerIds(players, optionsSpec) {
|
|
17
|
-
var _a, _b;
|
|
18
|
-
var potentialIds = ((0, isWithPlayerIdOptions_1.default)(optionsSpec) ? optionsSpec.players.id.values
|
|
19
|
-
: Array.from(Array(typeof players === 'number' ? players : players.length).keys()).map(function (id) { return id + 1; }));
|
|
20
|
-
var mandatory = (_b = (_a = optionsSpec === null || optionsSpec === void 0 ? void 0 : optionsSpec.players) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.mandatory;
|
|
21
|
-
var mandatoryIds = (mandatory ? Array.isArray(mandatory) ? __spreadArray([], mandatory, true) : [mandatory] : []);
|
|
22
18
|
var result = typeof players === 'number' ? Array(players).fill(null) : __spreadArray([], players, true);
|
|
19
|
+
var numberOfPlayers = typeof players === 'number' ? players : players.length;
|
|
20
|
+
var mandatoryIds = optionsSpec && (0, isWithPlayerIdOptions_1.default)(optionsSpec) ? (0, PlayerIdSpec_1.getMandatoryIds)(optionsSpec.players.id, numberOfPlayers) : [];
|
|
23
21
|
while (mandatoryIds.some(function (id) { return !result.includes(id); })) {
|
|
24
22
|
var mandatoryId = mandatoryIds.find(function (id) { return !result.includes(id); });
|
|
25
23
|
var potentialIndexes = result.map(function (id, index) { return ({ id: id, index: index }); }).filter(function (r) { return !mandatoryIds.includes(r.id); }).map(function (r) { return r.index; });
|
|
26
24
|
var index = potentialIndexes[Math.floor(Math.random() * potentialIndexes.length)];
|
|
27
25
|
result[index] = mandatoryId;
|
|
28
26
|
}
|
|
27
|
+
var potentialIds = (optionsSpec && (0, isWithPlayerIdOptions_1.default)(optionsSpec) ? (0, PlayerIdSpec_1.getAvailableIds)(optionsSpec.players.id, numberOfPlayers)
|
|
28
|
+
: Array.from(Array(numberOfPlayers).keys()).map(function (id) { return id + 1; }));
|
|
29
29
|
var remainingIds = potentialIds.filter(function (id) { return !result.includes(id); });
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
for (var i = 0; i < result.length; i++) {
|
|
31
|
+
if (result[i] === null || !potentialIds.includes(result[i])) {
|
|
32
|
+
result[i] = remainingIds.splice(Math.floor(Math.random() * remainingIds.length), 1)[0];
|
|
33
|
+
}
|
|
34
34
|
}
|
|
35
35
|
return result;
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providePlayerIds.js","sourceRoot":"","sources":["../../src/options/providePlayerIds.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kFAA2D;
|
|
1
|
+
{"version":3,"file":"providePlayerIds.js","sourceRoot":"","sources":["../../src/options/providePlayerIds.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,kFAA2D;AAE3D,+CAA+D;AAS/D,SAAwB,gBAAgB,CAAc,OAA+B,EAAE,WAA8B;IACnH,IAAM,MAAM,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAK,OAAO,OAAC,CAAA;IAErF,IAAM,eAAe,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;IAE9E,IAAM,YAAY,GAAG,WAAW,IAAI,IAAA,+BAAqB,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAA,8BAAe,EAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtI,OAAO,YAAY,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAC,EAAE;QACpD,IAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAE,CAAA;QAClE,IAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,UAAC,EAAE,EAAE,KAAK,IAAK,OAAA,CAAC,EAAC,EAAE,IAAA,EAAE,KAAK,OAAA,EAAC,CAAC,EAAb,CAAa,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAA5B,CAA4B,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,EAAP,CAAO,CAAC,CAAA;QAC7H,IAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;QACnF,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,CAAA;KAC5B;IAED,IAAM,YAAY,GAAG,CAAC,WAAW,IAAI,IAAA,+BAAqB,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAA,8BAAe,EAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC;QAChI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,GAAG,CAAC,EAAN,CAAM,CAAC,CAAS,CAAA;IACxE,IAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAC,CAAA;IACpE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC3D,MAAM,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;SACvF;KACF;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAvBD,mCAuBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gamepark/rules-api",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.15.1",
|
|
4
4
|
"description": "API to implement the rules of a board game",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -27,5 +27,5 @@
|
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"i18next": ">=21.3.0"
|
|
29
29
|
},
|
|
30
|
-
"gitHead": "
|
|
30
|
+
"gitHead": "8759508221305d931bd9371cd1afca24fd89cb85"
|
|
31
31
|
}
|