@gamepark/rules-api 6.0.2-alpha.0 → 6.0.4-alpha.0

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.
Files changed (71) hide show
  1. package/dist/Rules.d.ts +1 -1
  2. package/dist/UnpredictableMove.d.ts +2 -1
  3. package/dist/UnpredictableMove.js +3 -2
  4. package/dist/UnpredictableMove.js.map +1 -1
  5. package/dist/material/HiddenMaterialRules.d.ts +15 -13
  6. package/dist/material/HiddenMaterialRules.js +60 -50
  7. package/dist/material/HiddenMaterialRules.js.map +1 -1
  8. package/dist/material/MaterialRules.d.ts +12 -11
  9. package/dist/material/MaterialRules.js +15 -19
  10. package/dist/material/MaterialRules.js.map +1 -1
  11. package/dist/material/SecretMaterialRules.d.ts +5 -5
  12. package/dist/material/SecretMaterialRules.js +1 -17
  13. package/dist/material/SecretMaterialRules.js.map +1 -1
  14. package/dist/material/items/Material.d.ts +3 -4
  15. package/dist/material/items/Material.js +13 -13
  16. package/dist/material/items/Material.js.map +1 -1
  17. package/dist/material/items/MaterialMutator.js +9 -5
  18. package/dist/material/items/MaterialMutator.js.map +1 -1
  19. package/dist/material/moves/CustomMove.d.ts +2 -0
  20. package/dist/material/moves/CustomMove.js +6 -0
  21. package/dist/material/moves/CustomMove.js.map +1 -1
  22. package/dist/material/moves/MaterialMove.d.ts +6 -11
  23. package/dist/material/moves/MoveItem.d.ts +3 -0
  24. package/dist/material/moves/MoveItem.js +5 -1
  25. package/dist/material/moves/MoveItem.js.map +1 -1
  26. package/dist/material/moves/MoveKind.d.ts +1 -1
  27. package/dist/material/moves/MoveKind.js +1 -1
  28. package/dist/material/moves/MoveKind.js.map +1 -1
  29. package/dist/material/moves/index.d.ts +1 -6
  30. package/dist/material/moves/index.js +1 -6
  31. package/dist/material/moves/index.js.map +1 -1
  32. package/dist/material/moves/items/CreateItem.d.ts +9 -0
  33. package/dist/material/moves/items/CreateItem.js +10 -0
  34. package/dist/material/moves/items/CreateItem.js.map +1 -0
  35. package/dist/material/moves/items/DeleteItem.d.ts +9 -0
  36. package/dist/material/moves/items/DeleteItem.js +10 -0
  37. package/dist/material/moves/items/DeleteItem.js.map +1 -0
  38. package/dist/material/moves/items/ItemMove.d.ts +11 -0
  39. package/dist/material/moves/{MaterialRulesMove.js → items/ItemMove.js} +1 -1
  40. package/dist/material/moves/items/ItemMove.js.map +1 -0
  41. package/dist/material/moves/items/ItemMoveType.d.ts +6 -0
  42. package/dist/material/moves/items/ItemMoveType.js +11 -0
  43. package/dist/material/moves/items/ItemMoveType.js.map +1 -0
  44. package/dist/material/moves/items/ItemMovesBuilder.d.ts +8 -0
  45. package/dist/material/moves/items/ItemMovesBuilder.js +34 -0
  46. package/dist/material/moves/items/ItemMovesBuilder.js.map +1 -0
  47. package/dist/material/moves/items/MoveItem.d.ts +16 -0
  48. package/dist/material/moves/items/MoveItem.js +14 -0
  49. package/dist/material/moves/items/MoveItem.js.map +1 -0
  50. package/dist/material/moves/items/Shuffle.d.ts +11 -0
  51. package/dist/material/moves/items/Shuffle.js +10 -0
  52. package/dist/material/moves/items/Shuffle.js.map +1 -0
  53. package/dist/material/moves/items/index.d.ts +7 -0
  54. package/dist/material/moves/items/index.js +24 -0
  55. package/dist/material/moves/items/index.js.map +1 -0
  56. package/dist/material/moves/rules/EndGame.d.ts +2 -0
  57. package/dist/material/moves/rules/EndGame.js +7 -0
  58. package/dist/material/moves/rules/EndGame.js.map +1 -1
  59. package/dist/material/moves/rules/StartPlayerTurn.d.ts +2 -0
  60. package/dist/material/moves/rules/StartPlayerTurn.js +7 -0
  61. package/dist/material/moves/rules/StartPlayerTurn.js.map +1 -1
  62. package/dist/material/moves/rules/StartRule.d.ts +2 -0
  63. package/dist/material/moves/rules/StartRule.js +7 -0
  64. package/dist/material/moves/rules/StartRule.js.map +1 -1
  65. package/dist/material/rules/MaterialStepRules.d.ts +10 -9
  66. package/dist/material/rules/MaterialStepRules.js +6 -9
  67. package/dist/material/rules/MaterialStepRules.js.map +1 -1
  68. package/dist/material/rules/PlayerTurnRule.d.ts +4 -4
  69. package/package.json +2 -2
  70. package/dist/material/moves/MaterialRulesMove.d.ts +0 -6
  71. package/dist/material/moves/MaterialRulesMove.js.map +0 -1
package/dist/Rules.d.ts CHANGED
@@ -11,5 +11,5 @@ export declare abstract class Rules<Game = any, Move = any, PlayerId = any> {
11
11
  getAutomaticMoves(): Move[];
12
12
  play(move: Move): Move[];
13
13
  isOver(playerIds?: PlayerId[]): boolean;
14
- isUnpredictableMove?(move: Move): boolean;
14
+ isUnpredictableMove?(move: Move, player: PlayerId): boolean;
15
15
  }
@@ -5,7 +5,8 @@ export declare type RulesWithUnpredictableMoves<G = any, M = any, P = any> = Rul
5
5
  export declare const hasUnpredictableMoves: <G = any, M = any, P = any>(rules: Rules<G, M, P>) => rules is RulesWithUnpredictableMoves<G, M, P>;
6
6
  export declare class UnpredictableMoveFilter<G = any, M = any, P = any> extends Rules<G, M, P> {
7
7
  rules: RulesWithUnpredictableMoves<G, M, P>;
8
- constructor(rules: RulesWithUnpredictableMoves<G, M, P>);
8
+ player: P;
9
+ constructor(rules: RulesWithUnpredictableMoves<G, M, P>, player: P);
9
10
  play(move: M): M[];
10
11
  getAutomaticMoves(): M[];
11
12
  filterUnpredictableMoves(moves: M[]): M[];
@@ -21,9 +21,10 @@ var hasUnpredictableMoves = function (rules) { return typeof rules.isUnpredictab
21
21
  exports.hasUnpredictableMoves = hasUnpredictableMoves;
22
22
  var UnpredictableMoveFilter = /** @class */ (function (_super) {
23
23
  __extends(UnpredictableMoveFilter, _super);
24
- function UnpredictableMoveFilter(rules) {
24
+ function UnpredictableMoveFilter(rules, player) {
25
25
  var _this = _super.call(this, rules.game) || this;
26
26
  _this.rules = rules;
27
+ _this.player = player;
27
28
  return _this;
28
29
  }
29
30
  UnpredictableMoveFilter.prototype.play = function (move) {
@@ -34,7 +35,7 @@ var UnpredictableMoveFilter = /** @class */ (function (_super) {
34
35
  };
35
36
  UnpredictableMoveFilter.prototype.filterUnpredictableMoves = function (moves) {
36
37
  var _this = this;
37
- var firstUnpredictableMoveIndex = moves.findIndex(function (move) { return !_this.rules.isUnpredictableMove(move); });
38
+ var firstUnpredictableMoveIndex = moves.findIndex(function (move) { return !_this.rules.isUnpredictableMove(move, _this.player); });
38
39
  return (firstUnpredictableMoveIndex !== -1 ? moves.slice(0, firstUnpredictableMoveIndex) : moves);
39
40
  };
40
41
  return UnpredictableMoveFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"UnpredictableMove.js","sourceRoot":"","sources":["../src/UnpredictableMove.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,iCAA+B;AAMxB,IAAM,qBAAqB,GAAG,UACnC,KAAqB,IAC6B,OAAA,OAAO,KAAK,CAAC,mBAAmB,KAAK,UAAU,EAA/C,CAA+C,CAAA;AAFtF,QAAA,qBAAqB,yBAEiE;AAEnG;IAAwE,2CAAc;IAGpF,iCAAY,KAA2C;QAAvD,YACE,kBAAM,KAAK,CAAC,IAAI,CAAC,SAElB;QADC,KAAI,CAAC,KAAK,GAAG,KAAK,CAAA;;IACpB,CAAC;IAED,sCAAI,GAAJ,UAAK,IAAO;QACV,OAAO,IAAI,CAAC,wBAAwB,CAAC,iBAAM,IAAI,YAAC,IAAI,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,mDAAiB,GAAjB;QACE,OAAO,IAAI,CAAC,wBAAwB,CAAC,iBAAM,iBAAiB,WAAE,CAAC,CAAA;IACjE,CAAC;IAED,0DAAwB,GAAxB,UAAyB,KAAU;QAAnC,iBAGC;QAFC,IAAM,2BAA2B,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,KAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAArC,CAAqC,CAAC,CAAA;QAClG,OAAO,CAAC,2BAA2B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACnG,CAAC;IACH,8BAAC;AAAD,CAAC,AApBD,CAAwE,aAAK,GAoB5E;AApBY,0DAAuB"}
1
+ {"version":3,"file":"UnpredictableMove.js","sourceRoot":"","sources":["../src/UnpredictableMove.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,iCAA+B;AAMxB,IAAM,qBAAqB,GAAG,UACnC,KAAqB,IAC6B,OAAA,OAAO,KAAK,CAAC,mBAAmB,KAAK,UAAU,EAA/C,CAA+C,CAAA;AAFtF,QAAA,qBAAqB,yBAEiE;AAEnG;IAAwE,2CAAc;IAIpF,iCAAY,KAA2C,EAAE,MAAS;QAAlE,YACE,kBAAM,KAAK,CAAC,IAAI,CAAC,SAGlB;QAFC,KAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,KAAI,CAAC,MAAM,GAAG,MAAM,CAAA;;IACtB,CAAC;IAED,sCAAI,GAAJ,UAAK,IAAO;QACV,OAAO,IAAI,CAAC,wBAAwB,CAAC,iBAAM,IAAI,YAAC,IAAI,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,mDAAiB,GAAjB;QACE,OAAO,IAAI,CAAC,wBAAwB,CAAC,iBAAM,iBAAiB,WAAE,CAAC,CAAA;IACjE,CAAC;IAED,0DAAwB,GAAxB,UAAyB,KAAU;QAAnC,iBAGC;QAFC,IAAM,2BAA2B,GAAG,KAAK,CAAC,SAAS,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,KAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAI,CAAC,MAAM,CAAC,EAAlD,CAAkD,CAAC,CAAA;QAC/G,OAAO,CAAC,2BAA2B,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACnG,CAAC;IACH,8BAAC;AAAD,CAAC,AAtBD,CAAwE,aAAK,GAsB5E;AAtBY,0DAAuB"}
@@ -1,21 +1,23 @@
1
1
  import { IncompleteInformation } from '../IncompleteInformation';
2
2
  import { MaterialRules } from './MaterialRules';
3
3
  import { MaterialGame } from './MaterialGame';
4
- import { CreateItem, MaterialRulesMove, MaterialRulesMoveRandomized, MoveItem } from './moves';
5
- import { MaterialItem } from './items';
6
- export declare abstract class HiddenMaterialRules<P extends number = number, M extends number = number, L extends number = number> extends MaterialRules<P, M, L> implements IncompleteInformation<MaterialGame<P, M, L>, MaterialRulesMove<P, M, L>, MaterialRulesMove<P, M, L>> {
4
+ import { MaterialMove, MaterialRulesMoveRandomized } from './moves';
5
+ import { ItemPosition, Material } from './items';
6
+ export declare abstract class HiddenMaterialRules<P extends number = number, M extends number = number, L extends number = number> extends MaterialRules<P, M, L> implements IncompleteInformation<MaterialGame<P, M, L>, MaterialMove<P, M, L>, MaterialMove<P, M, L>> {
7
7
  abstract hidingStrategies: Partial<Record<M, Partial<Record<L, HidingStrategy<P, L>>>>>;
8
+ material(type: M): Material<P, M, L>;
8
9
  getItemTypeHidingStrategies(type: M): Partial<Record<L, HidingStrategy<P, L>>> | undefined;
9
- isUnpredictableMove(move: MaterialRulesMove<P, M, L>): boolean;
10
- randomize(move: MaterialRulesMove<P, M, L>): MaterialRulesMove<P, M, L> & MaterialRulesMoveRandomized<P, M, L>;
10
+ isUnpredictableMove(move: MaterialMove<P, M, L>, player: P): boolean;
11
+ moveBlocksUndo(move: MaterialMove<P, M, L>): boolean;
12
+ moveRevealsSomething(move: MaterialMove<P, M, L>): boolean;
11
13
  getView(player?: P): any;
12
- hideItem(type: M, item: MaterialItem<P, L>, player?: P): MaterialItem<P, L>;
13
- getMoveView(move: MaterialRulesMoveRandomized<P, M, L>, player?: P): MaterialRulesMove<P, M, L>;
14
- getMoveItemView(move: MoveItem<P, M, L>, player?: P): MoveItem<P, M, L>;
15
- moveItemRevealsInformation(dataBefore: Omit<MaterialItem, 'quantity' | 'location' | 'rotation'>, dataAfter: Omit<MaterialItem, 'quantity' | 'location' | 'rotation'>): boolean;
16
- private getHideItemData;
17
- getCreateItemsView(move: CreateItem<P, M, L>, player?: P): CreateItem<P, M, L>;
14
+ private hideItem;
15
+ private getItemHiddenPaths;
16
+ getMoveView(move: MaterialRulesMoveRandomized<P, M, L>, player?: P): MaterialMove<P, M, L>;
17
+ private getMoveItemView;
18
+ private getMoveItemRevealedPath;
19
+ private moveItemWillRevealSomething;
18
20
  private getShuffleItemsView;
19
21
  }
20
- export declare type HidingStrategy<P extends number = number, L extends number = number> = (item: MaterialItem<P, L>) => MaterialItem<P, L>;
21
- export declare const hideItemId: <P extends number = number, L extends number = number>(item: MaterialItem<P, L, any>) => Omit<MaterialItem<P, L, any>, "id">;
22
+ export declare type HidingStrategy<P extends number = number, L extends number = number> = (item: ItemPosition<P, L>) => string[];
23
+ export declare const hideItemId: HidingStrategy;
@@ -45,38 +45,40 @@ var lodash_mapvalues_1 = __importDefault(require("lodash.mapvalues"));
45
45
  var MaterialRules_1 = require("./MaterialRules");
46
46
  var moves_1 = require("./moves");
47
47
  var items_1 = require("./items");
48
+ var unset_1 = __importDefault(require("lodash/unset"));
49
+ var difference_1 = __importDefault(require("lodash/difference"));
50
+ var get_1 = __importDefault(require("lodash/get"));
51
+ var set_1 = __importDefault(require("lodash/set"));
48
52
  var HiddenMaterialRules = /** @class */ (function (_super) {
49
53
  __extends(HiddenMaterialRules, _super);
50
54
  function HiddenMaterialRules() {
51
55
  return _super !== null && _super.apply(this, arguments) || this;
52
56
  }
57
+ HiddenMaterialRules.prototype.material = function (type) {
58
+ var _this = this;
59
+ var _a;
60
+ return new items_1.Material(type, Array.from(((_a = this.game.items[type]) !== null && _a !== void 0 ? _a : []).entries()).filter(function (entry) { return entry[1].quantity !== 0; }), function (move) {
61
+ if ((0, moves_1.isMoveItem)(move) && _this.game.players.some(function (player) { return _this.moveItemWillRevealSomething(move, player); })) {
62
+ move.reveal = true;
63
+ }
64
+ });
65
+ };
53
66
  HiddenMaterialRules.prototype.getItemTypeHidingStrategies = function (type) {
54
67
  return this.hidingStrategies[type];
55
68
  };
56
- HiddenMaterialRules.prototype.isUnpredictableMove = function (move) {
57
- if (_super.prototype.isUnpredictableMove.call(this, move))
58
- return true;
59
- if (move.kind !== moves_1.MoveKind.MaterialMove)
60
- return false;
61
- if (move.type === moves_1.MaterialMoveType.Move) {
62
- return move.reveal !== undefined;
69
+ HiddenMaterialRules.prototype.isUnpredictableMove = function (move, player) {
70
+ if ((0, moves_1.isMoveItem)(move)) {
71
+ return this.moveItemWillRevealSomething(move, player);
63
72
  }
64
- return false;
65
- };
66
- HiddenMaterialRules.prototype.randomize = function (move) {
67
- if (move.kind === moves_1.MoveKind.MaterialMove && move.type === moves_1.MaterialMoveType.Move) {
68
- // Hack the randomize function to flag any item movement that reveals something, thus making the action undoable
69
- if (this.hidingStrategies /* TODO: can be undefined during setup because setup is called by constructor */) {
70
- for (var _i = 0, _a = this.game.players; _i < _a.length; _i++) {
71
- var player = _a[_i];
72
- var moveView = this.getMoveItemView(move, player);
73
- if (moveView.reveal) {
74
- return _super.prototype.randomize.call(this, __assign(__assign({}, move), { reveal: {} }));
75
- }
76
- }
77
- }
73
+ else {
74
+ return _super.prototype.isUnpredictableMove.call(this, move, player);
78
75
  }
79
- return _super.prototype.randomize.call(this, move);
76
+ };
77
+ HiddenMaterialRules.prototype.moveBlocksUndo = function (move) {
78
+ return _super.prototype.moveBlocksUndo.call(this, move) || this.moveRevealsSomething(move);
79
+ };
80
+ HiddenMaterialRules.prototype.moveRevealsSomething = function (move) {
81
+ return (0, moves_1.isMoveItem)(move) && !!move.reveal;
80
82
  };
81
83
  HiddenMaterialRules.prototype.getView = function (player) {
82
84
  var _this = this;
@@ -89,43 +91,54 @@ var HiddenMaterialRules = /** @class */ (function (_super) {
89
91
  }) });
90
92
  };
91
93
  HiddenMaterialRules.prototype.hideItem = function (type, item, player) {
92
- var hidingStrategies = this.hidingStrategies[type];
93
- if (!hidingStrategies)
94
- return item;
95
- var strategy = hidingStrategies[item.location.type];
96
- if (!strategy)
94
+ var paths = this.getItemHiddenPaths(type, item, player);
95
+ if (!paths.length)
97
96
  return item;
98
- return strategy(item, player);
97
+ var hiddenItem = JSON.parse(JSON.stringify(item));
98
+ for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {
99
+ var path = paths_1[_i];
100
+ (0, unset_1.default)(hiddenItem, path);
101
+ }
102
+ return hiddenItem;
103
+ };
104
+ HiddenMaterialRules.prototype.getItemHiddenPaths = function (type, item, player) {
105
+ var _a;
106
+ var hidingStrategy = (_a = this.hidingStrategies[type]) === null || _a === void 0 ? void 0 : _a[item.location.type];
107
+ return hidingStrategy ? hidingStrategy(item, player) : [];
99
108
  };
100
109
  HiddenMaterialRules.prototype.getMoveView = function (move, player) {
101
- if (move.kind === moves_1.MoveKind.MaterialMove && move.itemType in this.hidingStrategies) {
110
+ if (move.kind === moves_1.MoveKind.ItemMove && move.itemType in this.hidingStrategies) {
102
111
  switch (move.type) {
103
- case moves_1.MaterialMoveType.Move:
112
+ case moves_1.ItemMoveType.Move:
104
113
  return this.getMoveItemView(move, player);
105
- case moves_1.MaterialMoveType.Create:
106
- return this.getCreateItemsView(move, player);
107
- case moves_1.MaterialMoveType.Shuffle:
114
+ case moves_1.ItemMoveType.Create:
115
+ return __assign(__assign({}, move), { item: this.hideItem(move.itemType, move.item, player) });
116
+ case moves_1.ItemMoveType.Shuffle:
108
117
  return this.getShuffleItemsView(move, player);
109
118
  }
110
119
  }
111
120
  return move;
112
121
  };
113
122
  HiddenMaterialRules.prototype.getMoveItemView = function (move, player) {
114
- var mutator = new items_1.MaterialMutator(move.itemType, this.game.items[move.itemType]);
115
- var movedItemData = this.getHideItemData(move.itemType, this.material(move.itemType).getItem(move.itemIndex), player);
116
- var newItemData = this.getHideItemData(move.itemType, mutator.getItemAfterMove(move), player);
117
- return this.moveItemRevealsInformation(movedItemData, newItemData) ? __assign(__assign({}, move), { reveal: newItemData }) : move;
118
- };
119
- // Overload if needed
120
- HiddenMaterialRules.prototype.moveItemRevealsInformation = function (dataBefore, dataAfter) {
121
- return dataAfter.id !== undefined && dataBefore.id === undefined;
123
+ var revealedPaths = this.getMoveItemRevealedPath(move, player);
124
+ if (!revealedPaths.length)
125
+ return move;
126
+ var item = this.material(move.itemType).getItem(move.itemIndex);
127
+ var moveView = __assign(__assign({}, move), { reveal: {} });
128
+ for (var _i = 0, revealedPaths_1 = revealedPaths; _i < revealedPaths_1.length; _i++) {
129
+ var path = revealedPaths_1[_i];
130
+ (0, set_1.default)(moveView.reveal, path, (0, get_1.default)(item, path));
131
+ }
132
+ return moveView;
122
133
  };
123
- HiddenMaterialRules.prototype.getHideItemData = function (type, item, player) {
124
- var _a = this.hideItem(type, item, player), quantity = _a.quantity, rotation = _a.rotation, location = _a.location, hideItemData = __rest(_a, ["quantity", "rotation", "location"]);
125
- return hideItemData;
134
+ HiddenMaterialRules.prototype.getMoveItemRevealedPath = function (move, player) {
135
+ var item = this.material(move.itemType).getItem(move.itemIndex);
136
+ var hiddenPathsBefore = this.getItemHiddenPaths(move.itemType, item, player);
137
+ var hiddenPathsAfter = this.getItemHiddenPaths(move.itemType, __assign(__assign({}, item), move.position), player);
138
+ return (0, difference_1.default)(hiddenPathsBefore, hiddenPathsAfter);
126
139
  };
127
- HiddenMaterialRules.prototype.getCreateItemsView = function (move, player) {
128
- return __assign(__assign({}, move), { item: this.hideItem(move.itemType, move.item, player) });
140
+ HiddenMaterialRules.prototype.moveItemWillRevealSomething = function (move, player) {
141
+ return this.getMoveItemRevealedPath(move, player).length > 0;
129
142
  };
130
143
  HiddenMaterialRules.prototype.getShuffleItemsView = function (move, _player) {
131
144
  // TODO: if shuffling a player's hand, the player should see the result and get the new indexes
@@ -135,9 +148,6 @@ var HiddenMaterialRules = /** @class */ (function (_super) {
135
148
  return HiddenMaterialRules;
136
149
  }(MaterialRules_1.MaterialRules));
137
150
  exports.HiddenMaterialRules = HiddenMaterialRules;
138
- var hideItemId = function (item) {
139
- var id = item.id, hiddenItem = __rest(item, ["id"]);
140
- return hiddenItem;
141
- };
151
+ var hideItemId = function () { return ['id']; };
142
152
  exports.hideItemId = hideItemId;
143
153
  //# sourceMappingURL=HiddenMaterialRules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HiddenMaterialRules.js","sourceRoot":"","sources":["../../src/material/HiddenMaterialRules.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,sEAAwC;AACxC,iDAA+C;AAE/C,iCAAsJ;AACtJ,iCAAuD;AAGvD;IACU,uCAAsB;IADhC;;IAgGA,CAAC;IA1FC,yDAA2B,GAA3B,UAA4B,IAAO;QACjC,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,iDAAmB,GAAnB,UAAoB,IAAgC;QAClD,IAAI,iBAAM,mBAAmB,YAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAChD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAQ,CAAC,YAAY;YAAE,OAAO,KAAK,CAAA;QACrD,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAgB,CAAC,IAAI,EAAE;YACvC,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAA;SACjC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,uCAAS,GAAT,UAAU,IAAgC;QACxC,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAgB,CAAC,IAAI,EAAE;YAC9E,gHAAgH;YAChH,IAAI,IAAI,CAAC,gBAAgB,CAAC,gFAAgF,EAAE;gBAC1G,KAAqB,UAAiB,EAAjB,KAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAjB,cAAiB,EAAjB,IAAiB,EAAE;oBAAnC,IAAM,MAAM,SAAA;oBACf,IAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;oBACnD,IAAI,QAAQ,CAAC,MAAM,EAAE;wBACnB,OAAO,iBAAM,SAAS,kCAAM,IAAI,KAAE,MAAM,EAAE,EAAE,IAAG,CAAA;qBAChD;iBACF;aACF;SACF;QACD,OAAO,iBAAM,SAAS,YAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,qCAAO,GAAP,UAAQ,MAAU;QAAlB,iBAUC;QATC,6BACK,IAAI,CAAC,IAAI,KACZ,KAAK,EAAE,IAAA,0BAAS,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAC,KAAK,EAAE,UAAU;gBAClD,IAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAM,CAAA;gBAC3C,IAAM,gBAAgB,GAAG,KAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAA;gBACpE,IAAI,CAAC,gBAAgB,IAAI,CAAC,KAAK;oBAAE,OAAO,KAAK,CAAA;gBAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,EAAtC,CAAsC,CAAC,CAAA;YAClE,CAAC,CAAC,IACH;IACH,CAAC;IAED,sCAAQ,GAAR,UAAS,IAAO,EAAE,IAAwB,EAAE,MAAU;QACpD,IAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACpD,IAAI,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAA;QAClC,IAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACrD,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAA;QAC1B,OAAQ,QAAwC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAChE,CAAC;IAED,yCAAW,GAAX,UAAY,IAA0C,EAAE,MAAU;QAChE,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACjF,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,wBAAgB,CAAC,IAAI;oBACxB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBAC3C,KAAK,wBAAgB,CAAC,MAAM;oBAC1B,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBAC9C,KAAK,wBAAgB,CAAC,OAAO;oBAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;aAChD;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6CAAe,GAAf,UAAgB,IAAuB,EAAE,MAAU;QACjD,IAAM,OAAO,GAAG,IAAI,uBAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC,CAAA;QACnF,IAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAE,EAAE,MAAM,CAAC,CAAA;QACxH,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;QAC/F,OAAO,IAAI,CAAC,0BAA0B,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC,uBAAM,IAAI,KAAE,MAAM,EAAE,WAAW,IAAG,CAAC,CAAC,IAAI,CAAA;IAC9G,CAAC;IAED,qBAAqB;IACrB,wDAA0B,GAA1B,UACE,UAAoE,EACpE,SAAmE;QACnE,OAAO,SAAS,CAAC,EAAE,KAAK,SAAS,IAAI,UAAU,CAAC,EAAE,KAAK,SAAS,CAAA;IAClE,CAAC;IAEO,6CAAe,GAAvB,UAAwB,IAAO,EAAE,IAAwB,EAAE,MAAU;QACnE,IAAM,KAAoD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAAnF,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAK,YAAY,cAA/C,oCAAiD,CAAoC,CAAA;QAC3F,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,gDAAkB,GAAlB,UAAmB,IAAyB,EAAE,MAAU;QACtD,6BAAY,IAAI,KAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,IAAE;IAC3E,CAAC;IAEO,iDAAmB,GAA3B,UAA4B,IAA0B,EAAE,OAAW;QACjE,+FAA+F;QACvF,IAAA,UAAU,GAAkB,IAAI,WAAtB,EAAK,QAAQ,UAAK,IAAI,EAAlC,cAA2B,CAAF,CAAS;QACxC,OAAO,QAAQ,CAAA;IACjB,CAAC;IACH,0BAAC;AAAD,CAAC,AAhGD,CACU,6BAAa,GA+FtB;AAhGqB,kDAAmB;AAoGlC,IAAM,UAAU,GAAG,UAAuD,IAAwB;IAC/F,IAAA,EAAE,GAAoB,IAAI,GAAxB,EAAK,UAAU,UAAK,IAAI,EAA5B,MAAqB,CAAF,CAAS;IAClC,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAHY,QAAA,UAAU,cAGtB"}
1
+ {"version":3,"file":"HiddenMaterialRules.js","sourceRoot":"","sources":["../../src/material/HiddenMaterialRules.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  import { MaterialGame } from './MaterialGame';
2
2
  import { Rules } from '../Rules';
3
- import { MaterialRulesMove, MaterialRulesMoveRandomized } from './moves';
3
+ import { MaterialMove, MaterialRulesMoveRandomized } from './moves';
4
4
  import { Material, MaterialItem } from './items';
5
5
  import { RandomMove } from '../RandomMove';
6
6
  import { MaterialRulesStepCreator, MaterialStepRules } from './rules';
7
7
  import { LocationStrategy } from './location';
8
8
  import { Undo } from '../Undo';
9
9
  import { Action } from '../Action';
10
- export declare abstract class MaterialRules<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> extends Rules<MaterialGame<Player, MaterialType, LocationType>, MaterialRulesMove<Player, MaterialType, LocationType>, Player> implements RandomMove<MaterialRulesMove<Player, MaterialType, LocationType>, MaterialRulesMoveRandomized<Player, MaterialType, LocationType>>, Undo<MaterialGame<Player, MaterialType, LocationType>, MaterialRulesMove<Player, MaterialType, LocationType>, Player> {
10
+ export declare abstract class MaterialRules<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> extends Rules<MaterialGame<Player, MaterialType, LocationType>, MaterialMove<Player, MaterialType, LocationType>, Player> implements RandomMove<MaterialMove<Player, MaterialType, LocationType>, MaterialRulesMoveRandomized<Player, MaterialType, LocationType>>, Undo<MaterialGame<Player, MaterialType, LocationType>, MaterialMove<Player, MaterialType, LocationType>, Player> {
11
11
  constructor(state: MaterialGame<Player, MaterialType, LocationType>);
12
12
  constructor(options: any);
13
13
  items(type: MaterialType): MaterialItem<Player, LocationType>[];
@@ -20,14 +20,15 @@ export declare abstract class MaterialRules<Player extends number = number, Mate
20
20
  getMemory<T>(player?: Player): T;
21
21
  delegate(): MaterialStepRules<Player, MaterialType, LocationType> | undefined;
22
22
  start<RuleId extends number = number>(id: RuleId, player?: Player, memory?: Record<string, any>): void;
23
- randomize(move: MaterialRulesMove<Player, MaterialType, LocationType>): MaterialRulesMove<Player, MaterialType, LocationType> & MaterialRulesMoveRandomized<Player, MaterialType, LocationType>;
24
- play(move: MaterialRulesMove<Player, MaterialType, LocationType> & MaterialRulesMoveRandomized<Player, MaterialType, LocationType>): MaterialRulesMove<Player, MaterialType, LocationType>[];
25
- isMoveTrigger(move: MaterialRulesMove<Player, MaterialType, LocationType>, predicate: (move: MaterialRulesMove<Player, MaterialType, LocationType>) => boolean): boolean;
26
- canUndo(action: Action<MaterialRulesMove<Player, MaterialType, LocationType>, Player>, consecutiveActions: Action<MaterialRulesMove<Player, MaterialType, LocationType>, Player>[]): boolean;
27
- actionBlocksUndo(action: Action<MaterialRulesMove<Player, MaterialType, LocationType>, Player>): boolean;
28
- actionActivatesPlayer(action: Action<MaterialRulesMove<Player, MaterialType, LocationType>, Player>): boolean;
29
- moveBlocksUndo(move: MaterialRulesMove<Player, MaterialType, LocationType>): boolean;
30
- moveActivatesPlayer(move: MaterialRulesMove<Player, MaterialType, LocationType>): boolean;
31
- isUnpredictableMove(move: MaterialRulesMove<Player, MaterialType, LocationType>): boolean;
23
+ randomize(move: MaterialMove<Player, MaterialType, LocationType>): MaterialMove<Player, MaterialType, LocationType> & MaterialRulesMoveRandomized<Player, MaterialType, LocationType>;
24
+ play(move: MaterialMove<Player, MaterialType, LocationType> & MaterialRulesMoveRandomized<Player, MaterialType, LocationType>): MaterialMove<Player, MaterialType, LocationType>[];
25
+ isMoveTrigger(move: MaterialMove<Player, MaterialType, LocationType>, predicate: (move: MaterialMove<Player, MaterialType, LocationType>) => boolean): boolean;
26
+ canUndo(action: Action<MaterialMove<Player, MaterialType, LocationType>, Player>, consecutiveActions: Action<MaterialMove<Player, MaterialType, LocationType>, Player>[]): boolean;
27
+ actionBlocksUndo(action: Action<MaterialMove<Player, MaterialType, LocationType>, Player>): boolean;
28
+ actionActivatesPlayer(action: Action<MaterialMove<Player, MaterialType, LocationType>, Player>): boolean;
29
+ moveBlocksUndo(move: MaterialMove<Player, MaterialType, LocationType>): boolean;
30
+ moveActivatesPlayer(move: MaterialMove<Player, MaterialType, LocationType>): boolean;
31
+ isUnpredictableMove(move: MaterialMove<Player, MaterialType, LocationType>, _player: Player): boolean;
32
+ isRandomMove(move: MaterialMove<Player, MaterialType, LocationType>): boolean;
32
33
  restoreLocalMoves(game: MaterialGame<Player, MaterialType, LocationType>): void;
33
34
  }
@@ -76,18 +76,19 @@ var MaterialRules = /** @class */ (function (_super) {
76
76
  return __assign(__assign({}, this.game.memory), playerMemory);
77
77
  };
78
78
  MaterialRules.prototype.delegate = function () {
79
+ var _this = this;
79
80
  if (!this.game.rule)
80
81
  return;
81
82
  var RulesStep = this.rulesSteps[this.game.rule.id];
82
- return new RulesStep(this.game);
83
+ return new RulesStep(this.game, function (type) { return _this.material(type); });
83
84
  };
84
85
  MaterialRules.prototype.start = function (id, player, memory) {
85
86
  this.game.rule = { id: id, player: player, memory: memory };
86
87
  };
87
88
  MaterialRules.prototype.randomize = function (move) {
88
- if (move.kind === moves_1.MoveKind.MaterialMove) {
89
+ if (move.kind === moves_1.MoveKind.ItemMove) {
89
90
  switch (move.type) {
90
- case moves_1.MaterialMoveType.Shuffle:
91
+ case moves_1.ItemMoveType.Shuffle:
91
92
  return __assign(__assign({}, move), { newIndexes: (0, lodash_shuffle_1.default)(move.indexes) });
92
93
  }
93
94
  }
@@ -98,16 +99,16 @@ var MaterialRules = /** @class */ (function (_super) {
98
99
  var consequences = [];
99
100
  var delegate = this.delegate();
100
101
  switch (move.kind) {
101
- case moves_1.MoveKind.MaterialMove:
102
+ case moves_1.MoveKind.ItemMove:
102
103
  if (delegate) {
103
- consequences.push.apply(consequences, delegate.beforeMaterialMove(move));
104
+ consequences.push.apply(consequences, delegate.beforeItemMove(move));
104
105
  }
105
106
  if (!this.game.items[move.itemType])
106
107
  this.game.items[move.itemType] = [];
107
108
  var mutator = new items_1.MaterialMutator(move.itemType, this.game.items[move.itemType], this.getLocationsStrategies()[move.itemType]);
108
109
  mutator.applyMove(move);
109
110
  if (delegate) {
110
- consequences.push.apply(consequences, delegate.afterMaterialMove(move));
111
+ consequences.push.apply(consequences, delegate.afterItemMove(move));
111
112
  }
112
113
  break;
113
114
  case moves_1.MoveKind.RulesMove:
@@ -176,21 +177,16 @@ var MaterialRules = /** @class */ (function (_super) {
176
177
  return this.moveActivatesPlayer(action.move);
177
178
  };
178
179
  MaterialRules.prototype.moveBlocksUndo = function (move) {
179
- return this.moveActivatesPlayer(move) || this.isUnpredictableMove(move);
180
+ return this.moveActivatesPlayer(move) || this.isRandomMove(move);
180
181
  };
181
182
  MaterialRules.prototype.moveActivatesPlayer = function (move) {
182
- return move.kind === moves_1.MoveKind.RulesMove && (move.type === moves_1.RuleMoveType.StartPlayerTurn); // TODO: add StartSimultaneousTurns when implemented
183
- };
184
- MaterialRules.prototype.isUnpredictableMove = function (move) {
185
- if (move.kind !== moves_1.MoveKind.MaterialMove)
186
- return false;
187
- switch (move.type) {
188
- case moves_1.MaterialMoveType.Shuffle:
189
- // case MaterialMoveType.ThrowDice:
190
- return true;
191
- default:
192
- return false;
193
- }
183
+ return (0, moves_1.isStartPlayerTurn)(move); // TODO: add StartSimultaneousTurns when implemented
184
+ };
185
+ MaterialRules.prototype.isUnpredictableMove = function (move, _player) {
186
+ return this.isRandomMove(move);
187
+ };
188
+ MaterialRules.prototype.isRandomMove = function (move) {
189
+ return (0, moves_1.isShuffle)(move); // TODO: || isThrowDice(move)
194
190
  };
195
191
  MaterialRules.prototype.restoreLocalMoves = function (game) {
196
192
  this.game.rulesDisplay = game.rulesDisplay;
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialRules.js","sourceRoot":"","sources":["../../src/material/MaterialRules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MaterialRules.js","sourceRoot":"","sources":["../../src/material/MaterialRules.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,kCAAgC;AAChC,iCAAsJ;AACtJ,kEAAoC;AACpC,iCAAiE;AAOjE;IACU,iCAAiH;IAMzH,uBAAY,GAAQ;QAApB,iBAMC;QALC,IAAM,SAAS,GAAG,CAAE,GAAoB,CAAC,KAAK,CAAA;gBAC9C,kBAAM,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QAClE,IAAI,SAAS,EAAE;YACb,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SAChB;;IACH,CAAC;IAED,6BAAK,GAAL,UAAM,IAAkB;;QACtB,OAAO,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAA;IACpC,CAAC;IAED,qCAAa,GAAb,UAAc,IAAkB;QAAhC,iBAIC;;QAHC,OAAO,IAAI,gBAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAvB,CAAuB,CAAC,EAAE,UAAA,IAAI;YAC1H,KAAI,CAAC,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,gCAAQ,GAAR,UAAS,IAAkB;;QACzB,OAAO,IAAI,gBAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAAC,CAAA;IACzH,CAAC;IAMD,8CAAsB,GAAtB;QACE,OAAO,EAAE,CAAA;IACX,CAAC;IAED,sBAAI,kCAAO;aAAX;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAA;QAC1B,CAAC;;;OAAA;IAED,iCAAS,GAAT,UAAa,MAAe;;QAC1B,IAAM,YAAY,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACnG,OAAO,sBAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAK,YAAY,CAAO,CAAA;IACtD,CAAC;IAED,gCAAQ,GAAR;QAAA,iBAIC;QAHC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAM;QAC3B,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACpD,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAnB,CAAmB,CAAC,CAAA;IAC9D,CAAC;IAED,6BAAK,GAAL,UAAsC,EAAU,EAAE,MAAe,EAAE,MAA4B;QAC7F,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,IAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,CAAA;IACzC,CAAC;IAED,iCAAS,GAAT,UACE,IAAsD;QAEtD,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAQ,CAAC,QAAQ,EAAE;YACnC,QAAQ,IAAI,CAAC,IAAI,EAAE;gBACjB,KAAK,oBAAY,CAAC,OAAO;oBACvB,6BAAY,IAAI,KAAE,UAAU,EAAE,IAAA,wBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,IAAE;aACxD;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,4BAAI,GAAJ,UACE,IAAwH;;QAGxH,IAAM,YAAY,GAAuD,EAAE,CAAA;QAC3E,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAChC,QAAQ,IAAI,CAAC,IAAI,EAAE;YACjB,KAAK,gBAAQ,CAAC,QAAQ;gBACpB,IAAI,QAAQ,EAAE;oBACZ,YAAY,CAAC,IAAI,OAAjB,YAAY,EAAS,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAC;iBACpD;gBACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;gBACxE,IAAM,OAAO,GAAG,IAAI,uBAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAE,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA;gBACjI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBACvB,IAAI,QAAQ,EAAE;oBACZ,YAAY,CAAC,IAAI,OAAjB,YAAY,EAAS,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,EAAC;iBACnD;gBACD,MAAK;YACP,KAAK,gBAAQ,CAAC,SAAS;gBACrB,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;gBAC3B,IAAI,QAAQ,EAAE;oBACZ,YAAY,CAAC,IAAI,OAAjB,YAAY,EAAS,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC;iBAC/C;gBACD,QAAQ,IAAI,CAAC,IAAI,EAAE;oBACjB,KAAK,oBAAY,CAAC,eAAe;wBAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;wBAC1E,MAAK;oBACP,KAAK,oBAAY,CAAC,SAAS;wBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;wBACpG,MAAK;oBACP,KAAK,oBAAY,CAAC,OAAO;wBACvB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;iBACxB;gBACD,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAY,CAAC,OAAO,EAAE;oBACtC,YAAY,CAAC,IAAI,OAAjB,YAAY,EAAS,IAAI,CAAC,QAAQ,EAAG,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAC;iBAC/D;gBACD,MAAK;YACP,KAAK,gBAAQ,CAAC,UAAU;gBACtB,IAAI,QAAQ,EAAE;oBACZ,YAAY,CAAC,IAAI,OAAjB,YAAY,EAAS,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAC;iBAClD;gBACD,MAAK;YACP,KAAK,gBAAQ,CAAC,SAAS;gBACrB,QAAQ,IAAI,CAAC,IAAI,EAAE;oBACjB,KAAK,qBAAa,CAAC,YAAY;wBAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;wBAC1C,MAAK;oBACP,KAAK,qBAAa,CAAC,iBAAiB;wBAClC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAA;wBAC7B,MAAK;iBACR;SACJ;QAED,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,qCAAa,GAAb,UAAc,IAAsD,EACtD,SAA8E;QAD5F,iBAGC;QADC,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAA,WAAW,IAAI,OAAA,KAAI,CAAC,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,EAA1C,CAA0C,CAAC,CAAC,CAAA;IAClJ,CAAC;IAED,+BAAO,GAAP,UAAQ,MAAwE,EACxE,kBAAsF;QAC5F,KAAK,IAAI,CAAC,GAAG,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACvD,IAAM,iBAAiB,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA;YAC/C,IAAI,iBAAiB,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,EAAE;gBACnG,OAAO,KAAK,CAAA;aACb;SACF;QACD,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,wCAAgB,GAAhB,UAAiB,MAAwE;QACvF,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACxD,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC/C,OAAO,IAAI,CAAA;aACZ;SACF;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,6CAAqB,GAArB,UAAsB,MAAwE;QAC5F,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACxD,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBACpD,OAAO,IAAI,CAAA;aACZ;SACF;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,sCAAc,GAAd,UAAe,IAAsD;QACnE,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAClE,CAAC;IAED,2CAAmB,GAAnB,UAAoB,IAAsD;QACxE,OAAO,IAAA,yBAAiB,EAAC,IAAI,CAAC,CAAA,CAAC,oDAAoD;IACrF,CAAC;IAED,2CAAmB,GAAnB,UAAoB,IAAsD,EAAE,OAAe;QACzF,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED,oCAAY,GAAZ,UAAa,IAAsD;QACjE,OAAO,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAA,CAAC,6BAA6B;IACtD,CAAC;IAED,yCAAiB,GAAjB,UAAkB,IAAsD;QACtE,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;IAC5C,CAAC;IACH,oBAAC;AAAD,CAAC,AAjLD,CACU,aAAK,GAgLd;AAjLqB,sCAAa;AAmLnC,SAAS,YAAY,CAAiC,OAAY;;IAChE,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAClC,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAW,IAAK,OAAA,MAAM,CAAC,EAAE,EAAT,CAAS,CAAC,CAAA;KACvD;SAAM;QACL,IAAM,eAAe,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,CAAC,CAAA;QAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAClD,UAAC,EAAE,IAAK,OAAA,CAAC,EAAE,GAAG,CAAC,CAAW,EAAlB,CAAkB,CAC3B,CAAA;KACF;AACH,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import { SecretInformation } from '../IncompleteInformation';
2
2
  import { HiddenMaterialRules } from './HiddenMaterialRules';
3
3
  import { MaterialGame } from './MaterialGame';
4
- import { MaterialRulesMove, MaterialRulesMoveRandomized } from './moves';
4
+ import { MaterialMove, MaterialRulesMoveRandomized } from './moves';
5
5
  import { MaterialItem } from './items';
6
- export declare abstract class SecretMaterialRules<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> extends HiddenMaterialRules<Player, MaterialType, LocationType> implements SecretInformation<MaterialGame, MaterialRulesMove<Player, MaterialType, LocationType>, MaterialRulesMove<Player, MaterialType, LocationType>, Player> {
6
+ export declare abstract class SecretMaterialRules<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> extends HiddenMaterialRules<Player, MaterialType, LocationType> implements SecretInformation<MaterialGame, MaterialMove<Player, MaterialType, LocationType>, MaterialMove<Player, MaterialType, LocationType>, Player> {
7
7
  abstract hidingStrategies: Partial<Record<MaterialType, Partial<Record<LocationType, HidingSecretsStrategy<Player, LocationType>>>>>;
8
8
  getPlayerView(player: Player): MaterialGame<Player, MaterialType, LocationType>;
9
- getPlayerMoveView(move: MaterialRulesMoveRandomized<Player, MaterialType, LocationType>, player: Player): MaterialRulesMove<Player, MaterialType, LocationType>;
9
+ getPlayerMoveView(move: MaterialRulesMoveRandomized<Player, MaterialType, LocationType>, player: Player): MaterialMove<Player, MaterialType, LocationType>;
10
10
  }
11
- export declare type HidingSecretsStrategy<P extends number = number, L extends number = number> = (item: MaterialItem<P, L>, player?: P) => MaterialItem<P, L>;
12
- export declare const hideItemIdToOthers: <P extends number = number, L extends number = number>(item: MaterialItem<P, L, any>, player?: P) => MaterialItem<P, L, any>;
11
+ export declare type HidingSecretsStrategy<P extends number = number, L extends number = number> = (item: MaterialItem<P, L>, player?: P) => string[];
12
+ export declare const hideItemIdToOthers: <P extends number = number, L extends number = number>(item: MaterialItem<P, L, any>, player?: P) => string[];
@@ -14,17 +14,6 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
- var __rest = (this && this.__rest) || function (s, e) {
18
- var t = {};
19
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
20
- t[p] = s[p];
21
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
22
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
23
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
24
- t[p[i]] = s[p[i]];
25
- }
26
- return t;
27
- };
28
17
  Object.defineProperty(exports, "__esModule", { value: true });
29
18
  exports.hideItemIdToOthers = exports.SecretMaterialRules = void 0;
30
19
  var HiddenMaterialRules_1 = require("./HiddenMaterialRules");
@@ -42,11 +31,6 @@ var SecretMaterialRules = /** @class */ (function (_super) {
42
31
  return SecretMaterialRules;
43
32
  }(HiddenMaterialRules_1.HiddenMaterialRules));
44
33
  exports.SecretMaterialRules = SecretMaterialRules;
45
- var hideItemIdToOthers = function (item, player) {
46
- if (item.location.player === player)
47
- return item;
48
- var id = item.id, hiddenItem = __rest(item, ["id"]);
49
- return hiddenItem;
50
- };
34
+ var hideItemIdToOthers = function (item, player) { return item.location.player === player ? [] : ['id']; };
51
35
  exports.hideItemIdToOthers = hideItemIdToOthers;
52
36
  //# sourceMappingURL=SecretMaterialRules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SecretMaterialRules.js","sourceRoot":"","sources":["../../src/material/SecretMaterialRules.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,6DAA2D;AAK3D;IACU,uCAAuD;IADjE;;IAaA,CAAC;IAPC,2CAAa,GAAb,UAAc,MAAc;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;IAED,+CAAiB,GAAjB,UAAkB,IAAqE,EAAE,MAAc;QACrG,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;IACH,0BAAC;AAAD,CAAC,AAbD,CACU,yCAAmB,GAY5B;AAbqB,kDAAmB;AAiBlC,IAAM,kBAAkB,GAAG,UAAuD,IAAwB,EAAE,MAAU;IAC3H,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAA;IACxC,IAAA,EAAE,GAAoB,IAAI,GAAxB,EAAK,UAAU,UAAK,IAAI,EAA5B,MAAqB,CAAF,CAAS;IAClC,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAJY,QAAA,kBAAkB,sBAI9B"}
1
+ {"version":3,"file":"SecretMaterialRules.js","sourceRoot":"","sources":["../../src/material/SecretMaterialRules.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,6DAA2D;AAK3D;IACU,uCAAuD;IADjE;;IAaA,CAAC;IAPC,2CAAa,GAAb,UAAc,MAAc;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;IAED,+CAAiB,GAAjB,UAAkB,IAAqE,EAAE,MAAc;QACrG,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;IACH,0BAAC;AAAD,CAAC,AAbD,CACU,yCAAmB,GAY5B;AAbqB,kDAAmB;AAiBlC,IAAM,kBAAkB,GAAG,UAChC,IAAwB,EAAE,MAAU,IACvB,OAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAA7C,CAA6C,CAAA;AAF/C,QAAA,kBAAkB,sBAE6B"}
@@ -1,13 +1,12 @@
1
1
  import { ItemPosition, MaterialItem } from './MaterialItem';
2
2
  import { Location } from '../location';
3
- import { CreateItem, MaterialRulesMove, MoveItem, Shuffle } from '../moves';
4
- import { DeleteItem } from '../moves/DeleteItem';
3
+ import { CreateItem, DeleteItem, MaterialMove, MoveItem, Shuffle } from '../moves';
5
4
  declare type ItemEntry<P extends number = number, L extends number = number> = [number, MaterialItem<P, L>];
6
5
  export declare class Material<P extends number = number, M extends number = number, L extends number = number> {
7
6
  private readonly type;
8
7
  private readonly entries;
9
- private readonly play?;
10
- constructor(type: M, items: ItemEntry<P, L>[], play?: (move: MaterialRulesMove<P, M, L>) => void);
8
+ private readonly processMove?;
9
+ constructor(type: M, items: ItemEntry<P, L>[], processMove?: (move: MaterialMove<P, M, L>) => void);
11
10
  private new;
12
11
  getItems(): MaterialItem<P, L>[];
13
12
  getItems<T>(mapFn: (item: MaterialItem<P, L>) => T): T[];
@@ -10,13 +10,13 @@ var minBy_1 = __importDefault(require("lodash/minBy"));
10
10
  var maxBy_1 = __importDefault(require("lodash/maxBy"));
11
11
  var orderBy_1 = __importDefault(require("lodash/orderBy"));
12
12
  var Material = /** @class */ (function () {
13
- function Material(type, items, play) {
13
+ function Material(type, items, processMove) {
14
14
  this.type = type;
15
15
  this.entries = items;
16
- this.play = play;
16
+ this.processMove = processMove;
17
17
  }
18
18
  Material.prototype.new = function (entries) {
19
- return new Material(this.type, entries, this.play);
19
+ return new Material(this.type, entries, this.processMove);
20
20
  };
21
21
  Material.prototype.getItems = function (mapFn) {
22
22
  return this.entries.map(function (entry) { return mapFn ? mapFn(entry[1]) : entry[1]; });
@@ -96,10 +96,10 @@ var Material = /** @class */ (function () {
96
96
  return this.new(max ? [max] : []);
97
97
  };
98
98
  Material.prototype.process = function (moves) {
99
- if (this.play) {
99
+ if (this.processMove) {
100
100
  for (var _i = 0, moves_2 = moves; _i < moves_2.length; _i++) {
101
101
  var move = moves_2[_i];
102
- this.play(move);
102
+ this.processMove(move);
103
103
  }
104
104
  }
105
105
  return moves;
@@ -110,8 +110,8 @@ var Material = /** @class */ (function () {
110
110
  Material.prototype.createItems = function (items) {
111
111
  var _this = this;
112
112
  return this.process(items.map(function (item) { return ({
113
- kind: moves_1.MoveKind.MaterialMove,
114
- type: moves_1.MaterialMoveType.Create,
113
+ kind: moves_1.MoveKind.ItemMove,
114
+ type: moves_1.ItemMoveType.Create,
115
115
  itemType: _this.type,
116
116
  item: item
117
117
  }); }));
@@ -125,8 +125,8 @@ var Material = /** @class */ (function () {
125
125
  var _this = this;
126
126
  return this.process(this.entries.map(function (entry) {
127
127
  var move = {
128
- kind: moves_1.MoveKind.MaterialMove,
129
- type: moves_1.MaterialMoveType.Delete,
128
+ kind: moves_1.MoveKind.ItemMove,
129
+ type: moves_1.ItemMoveType.Delete,
130
130
  itemType: _this.type,
131
131
  itemIndex: entry[0]
132
132
  };
@@ -146,8 +146,8 @@ var Material = /** @class */ (function () {
146
146
  delete position.rotation;
147
147
  return this.process(this.entries.map(function (entry) {
148
148
  var move = {
149
- kind: moves_1.MoveKind.MaterialMove,
150
- type: moves_1.MaterialMoveType.Move,
149
+ kind: moves_1.MoveKind.ItemMove,
150
+ type: moves_1.ItemMoveType.Move,
151
151
  itemType: _this.type,
152
152
  itemIndex: entry[0],
153
153
  position: position
@@ -159,8 +159,8 @@ var Material = /** @class */ (function () {
159
159
  };
160
160
  Material.prototype.shuffle = function () {
161
161
  return this.process([{
162
- kind: moves_1.MoveKind.MaterialMove,
163
- type: moves_1.MaterialMoveType.Shuffle,
162
+ kind: moves_1.MoveKind.ItemMove,
163
+ type: moves_1.ItemMoveType.Shuffle,
164
164
  itemType: this.type,
165
165
  indexes: this.entries.map(function (entry) { return entry[0]; })
166
166
  }])[0];