@gamepark/rules-api 6.0.3-alpha.0 → 6.0.5-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 (43) 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 +14 -13
  6. package/dist/material/HiddenMaterialRules.js +58 -51
  7. package/dist/material/HiddenMaterialRules.js.map +1 -1
  8. package/dist/material/MaterialGame.d.ts +2 -1
  9. package/dist/material/MaterialRules.d.ts +11 -9
  10. package/dist/material/MaterialRules.js +31 -21
  11. package/dist/material/MaterialRules.js.map +1 -1
  12. package/dist/material/SecretMaterialRules.d.ts +2 -2
  13. package/dist/material/SecretMaterialRules.js +1 -17
  14. package/dist/material/SecretMaterialRules.js.map +1 -1
  15. package/dist/material/items/Material.d.ts +2 -2
  16. package/dist/material/items/Material.js +5 -5
  17. package/dist/material/items/Material.js.map +1 -1
  18. package/dist/material/items/MaterialMutator.d.ts +5 -4
  19. package/dist/material/items/MaterialMutator.js +27 -15
  20. package/dist/material/items/MaterialMutator.js.map +1 -1
  21. package/dist/material/moves/local/DisplayRules.d.ts +32 -0
  22. package/dist/material/moves/local/DisplayRules.js +26 -0
  23. package/dist/material/moves/local/DisplayRules.js.map +1 -0
  24. package/dist/material/moves/local/DropItem.d.ts +13 -0
  25. package/dist/material/moves/local/DropItem.js +10 -0
  26. package/dist/material/moves/local/DropItem.js.map +1 -0
  27. package/dist/material/moves/local/LocalMove.d.ts +5 -3
  28. package/dist/material/moves/local/LocalMove.js +1 -0
  29. package/dist/material/moves/local/LocalMove.js.map +1 -1
  30. package/dist/material/moves/local/index.d.ts +2 -1
  31. package/dist/material/moves/local/index.js +2 -1
  32. package/dist/material/moves/local/index.js.map +1 -1
  33. package/dist/material/rules/MaterialRulesPart.d.ts +23 -0
  34. package/dist/material/rules/MaterialRulesPart.js +98 -0
  35. package/dist/material/rules/MaterialRulesPart.js.map +1 -0
  36. package/dist/material/rules/MaterialStepRules.d.ts +3 -2
  37. package/dist/material/rules/MaterialStepRules.js +4 -7
  38. package/dist/material/rules/MaterialStepRules.js.map +1 -1
  39. package/dist/material/rules/PlayerTurnRule.d.ts +2 -2
  40. package/dist/material/rules/PlayerTurnRule.js +2 -2
  41. package/dist/material/rules/index.d.ts +1 -1
  42. package/dist/material/rules/index.js +1 -1
  43. package/package.json +4 -8
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,22 @@
1
1
  import { IncompleteInformation } from '../IncompleteInformation';
2
2
  import { MaterialRules } from './MaterialRules';
3
3
  import { MaterialGame } from './MaterialGame';
4
- import { CreateItem, MaterialMove, MaterialRulesMoveRandomized, MoveItem } from './moves';
5
- import { MaterialItem } from './items';
4
+ import { MaterialMove, MaterialRulesMoveRandomized } from './moves';
5
+ import { ItemPosition, Material } from './items';
6
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
- abstract hidingStrategies: Partial<Record<M, Partial<Record<L, HidingStrategy<P, L>>>>>;
8
- getItemTypeHidingStrategies(type: M): Partial<Record<L, HidingStrategy<P, L>>> | undefined;
9
- isUnpredictableMove(move: MaterialMove<P, M, L>): boolean;
10
- randomize(move: MaterialMove<P, M, L>): MaterialMove<P, M, L> & MaterialRulesMoveRandomized<P, M, L>;
7
+ abstract get hidingStrategies(): Partial<Record<M, Partial<Record<L, HidingStrategy<P, L>>>>>;
8
+ material(type: M): Material<P, M, L>;
9
+ isUnpredictableMove(move: MaterialMove<P, M, L>, player: P): boolean;
10
+ protected moveBlocksUndo(move: MaterialMove<P, M, L>): boolean;
11
+ protected moveRevealsSomething(move: MaterialMove<P, M, L>): boolean;
11
12
  getView(player?: P): any;
12
- hideItem(type: M, item: MaterialItem<P, L>, player?: P): MaterialItem<P, L>;
13
+ private hideItem;
14
+ private getItemHiddenPaths;
13
15
  getMoveView(move: MaterialRulesMoveRandomized<P, M, L>, player?: P): MaterialMove<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>;
16
+ private getMoveItemView;
17
+ private getMoveItemRevealedPath;
18
+ private moveItemWillRevealSomething;
18
19
  private getShuffleItemsView;
19
20
  }
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">;
21
+ export declare type HidingStrategy<P extends number = number, L extends number = number> = (item: ItemPosition<P, L>) => string[];
22
+ export declare const hideItemId: HidingStrategy;
@@ -41,61 +41,67 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
41
41
  };
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
43
  exports.hideItemId = exports.HiddenMaterialRules = void 0;
44
- var lodash_mapvalues_1 = __importDefault(require("lodash.mapvalues"));
44
+ var 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
  }
53
- HiddenMaterialRules.prototype.getItemTypeHidingStrategies = function (type) {
54
- return this.hidingStrategies[type];
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
+ });
55
65
  };
56
- HiddenMaterialRules.prototype.isUnpredictableMove = function (move) {
57
- if (_super.prototype.isUnpredictableMove.call(this, move))
58
- return true;
59
- if (move.kind !== moves_1.MoveKind.ItemMove)
60
- return false;
61
- if (move.type === moves_1.ItemMoveType.Move) {
62
- return move.reveal !== undefined;
66
+ HiddenMaterialRules.prototype.isUnpredictableMove = function (move, player) {
67
+ if ((0, moves_1.isMoveItem)(move)) {
68
+ return this.moveItemWillRevealSomething(move, player);
63
69
  }
64
- return false;
65
- };
66
- HiddenMaterialRules.prototype.randomize = function (move) {
67
- if (move.kind === moves_1.MoveKind.ItemMove && move.type === moves_1.ItemMoveType.Move) {
68
- if (this.hidingStrategies /* TODO: can be undefined during setup because setup is called by constructor */) {
69
- for (var _i = 0, _a = this.game.players; _i < _a.length; _i++) {
70
- var player = _a[_i];
71
- var moveView = this.getMoveItemView(move, player);
72
- if (moveView.reveal) {
73
- // We flag the move in order to know that it revealed something to someone, which means it cannot be undone
74
- return _super.prototype.randomize.call(this, __assign(__assign({}, move), { reveal: true }));
75
- }
76
- }
77
- }
70
+ else {
71
+ return _super.prototype.isUnpredictableMove.call(this, move, player);
78
72
  }
79
- return _super.prototype.randomize.call(this, move);
73
+ };
74
+ HiddenMaterialRules.prototype.moveBlocksUndo = function (move) {
75
+ return _super.prototype.moveBlocksUndo.call(this, move) || this.moveRevealsSomething(move);
76
+ };
77
+ HiddenMaterialRules.prototype.moveRevealsSomething = function (move) {
78
+ return (0, moves_1.isMoveItem)(move) && !!move.reveal;
80
79
  };
81
80
  HiddenMaterialRules.prototype.getView = function (player) {
82
81
  var _this = this;
83
- return __assign(__assign({}, this.game), { items: (0, lodash_mapvalues_1.default)(this.game.items, function (items, stringType) {
82
+ return __assign(__assign({}, this.game), { items: (0, mapvalues_1.default)(this.game.items, function (items, stringType) {
84
83
  var itemsType = parseInt(stringType);
85
- var hidingStrategies = _this.getItemTypeHidingStrategies(itemsType);
84
+ var hidingStrategies = _this.hidingStrategies[itemsType];
86
85
  if (!hidingStrategies || !items)
87
86
  return items;
88
87
  return items.map(function (item) { return _this.hideItem(itemsType, item, player); });
89
88
  }) });
90
89
  };
91
90
  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)
91
+ var paths = this.getItemHiddenPaths(type, item, player);
92
+ if (!paths.length)
97
93
  return item;
98
- return strategy(item, player);
94
+ var hiddenItem = JSON.parse(JSON.stringify(item));
95
+ for (var _i = 0, paths_1 = paths; _i < paths_1.length; _i++) {
96
+ var path = paths_1[_i];
97
+ (0, unset_1.default)(hiddenItem, path);
98
+ }
99
+ return hiddenItem;
100
+ };
101
+ HiddenMaterialRules.prototype.getItemHiddenPaths = function (type, item, player) {
102
+ var _a;
103
+ var hidingStrategy = (_a = this.hidingStrategies[type]) === null || _a === void 0 ? void 0 : _a[item.location.type];
104
+ return hidingStrategy ? hidingStrategy(item, player) : [];
99
105
  };
100
106
  HiddenMaterialRules.prototype.getMoveView = function (move, player) {
101
107
  if (move.kind === moves_1.MoveKind.ItemMove && move.itemType in this.hidingStrategies) {
@@ -103,7 +109,7 @@ var HiddenMaterialRules = /** @class */ (function (_super) {
103
109
  case moves_1.ItemMoveType.Move:
104
110
  return this.getMoveItemView(move, player);
105
111
  case moves_1.ItemMoveType.Create:
106
- return this.getCreateItemsView(move, player);
112
+ return __assign(__assign({}, move), { item: this.hideItem(move.itemType, move.item, player) });
107
113
  case moves_1.ItemMoveType.Shuffle:
108
114
  return this.getShuffleItemsView(move, player);
109
115
  }
@@ -111,21 +117,25 @@ var HiddenMaterialRules = /** @class */ (function (_super) {
111
117
  return move;
112
118
  };
113
119
  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;
120
+ var revealedPaths = this.getMoveItemRevealedPath(move, player);
121
+ if (!revealedPaths.length)
122
+ return move;
123
+ var item = this.material(move.itemType).getItem(move.itemIndex);
124
+ var moveView = __assign(__assign({}, move), { reveal: {} });
125
+ for (var _i = 0, revealedPaths_1 = revealedPaths; _i < revealedPaths_1.length; _i++) {
126
+ var path = revealedPaths_1[_i];
127
+ (0, set_1.default)(moveView.reveal, path, (0, get_1.default)(item, path));
128
+ }
129
+ return moveView;
122
130
  };
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;
131
+ HiddenMaterialRules.prototype.getMoveItemRevealedPath = function (move, player) {
132
+ var item = this.material(move.itemType).getItem(move.itemIndex);
133
+ var hiddenPathsBefore = this.getItemHiddenPaths(move.itemType, item, player);
134
+ var hiddenPathsAfter = this.getItemHiddenPaths(move.itemType, __assign(__assign({}, item), move.position), player);
135
+ return (0, difference_1.default)(hiddenPathsBefore, hiddenPathsAfter);
126
136
  };
127
- HiddenMaterialRules.prototype.getCreateItemsView = function (move, player) {
128
- return __assign(__assign({}, move), { item: this.hideItem(move.itemType, move.item, player) });
137
+ HiddenMaterialRules.prototype.moveItemWillRevealSomething = function (move, player) {
138
+ return this.getMoveItemRevealedPath(move, player).length > 0;
129
139
  };
130
140
  HiddenMaterialRules.prototype.getShuffleItemsView = function (move, _player) {
131
141
  // TODO: if shuffling a player's hand, the player should see the result and get the new indexes
@@ -135,9 +145,6 @@ var HiddenMaterialRules = /** @class */ (function (_super) {
135
145
  return HiddenMaterialRules;
136
146
  }(MaterialRules_1.MaterialRules));
137
147
  exports.HiddenMaterialRules = HiddenMaterialRules;
138
- var hideItemId = function (item) {
139
- var id = item.id, hiddenItem = __rest(item, ["id"]);
140
- return hiddenItem;
141
- };
148
+ var hideItemId = function () { return ['id']; };
142
149
  exports.hideItemId = hideItemId;
143
150
  //# sourceMappingURL=HiddenMaterialRules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HiddenMaterialRules.js","sourceRoot":"","sources":["../../src/material/HiddenMaterialRules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HiddenMaterialRules.js","sourceRoot":"","sources":["../../src/material/HiddenMaterialRules.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { MaterialItem } from './items';
2
2
  import { RuleStep } from './rules';
3
- import { RulesDisplay } from './moves';
3
+ import { DisplayedItem, RulesDisplay } from './moves';
4
4
  export declare type MaterialGame<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> = {
5
5
  players: Player[];
6
6
  items: Partial<Record<MaterialType, MaterialItem<Player, LocationType>[]>>;
@@ -8,4 +8,5 @@ export declare type MaterialGame<Player extends number = number, MaterialType ex
8
8
  memory?: Record<string, any>;
9
9
  playersMemory?: Partial<Record<Player, Record<string, any>>>;
10
10
  rulesDisplay?: RulesDisplay<Player, MaterialType, LocationType>;
11
+ droppedItem?: DisplayedItem<MaterialType>;
11
12
  };
@@ -3,7 +3,7 @@ import { Rules } from '../Rules';
3
3
  import { MaterialMove, MaterialRulesMoveRandomized } from './moves';
4
4
  import { Material, MaterialItem } from './items';
5
5
  import { RandomMove } from '../RandomMove';
6
- import { MaterialRulesStepCreator, MaterialStepRules } from './rules';
6
+ import { MaterialRulesPartCreator, MaterialRulesPart } from './rules';
7
7
  import { LocationStrategy } from './location';
8
8
  import { Undo } from '../Undo';
9
9
  import { Action } from '../Action';
@@ -14,20 +14,22 @@ export declare abstract class MaterialRules<Player extends number = number, Mate
14
14
  setupMaterial(type: MaterialType): Material<Player, MaterialType, LocationType>;
15
15
  material(type: MaterialType): Material<Player, MaterialType, LocationType>;
16
16
  abstract setup(options: any): void;
17
- abstract get rulesSteps(): Record<number, MaterialRulesStepCreator<Player, MaterialType, LocationType>>;
18
- getLocationsStrategies(): Partial<Record<MaterialType, Partial<Record<LocationType, LocationStrategy<Player, MaterialType, LocationType>>>>>;
17
+ abstract get rules(): Record<number, MaterialRulesPartCreator<Player, MaterialType, LocationType>>;
18
+ get locationsStrategies(): Partial<Record<MaterialType, Partial<Record<LocationType, LocationStrategy<Player, MaterialType, LocationType>>>>>;
19
19
  get players(): Player[];
20
20
  getMemory<T>(player?: Player): T;
21
- delegate(): MaterialStepRules<Player, MaterialType, LocationType> | undefined;
21
+ delegate(): MaterialRulesPart<Player, MaterialType, LocationType> | undefined;
22
22
  start<RuleId extends number = number>(id: RuleId, player?: Player, memory?: Record<string, any>): void;
23
23
  randomize(move: MaterialMove<Player, MaterialType, LocationType>): MaterialMove<Player, MaterialType, LocationType> & MaterialRulesMoveRandomized<Player, MaterialType, LocationType>;
24
24
  play(move: MaterialMove<Player, MaterialType, LocationType> & MaterialRulesMoveRandomized<Player, MaterialType, LocationType>): MaterialMove<Player, MaterialType, LocationType>[];
25
25
  isMoveTrigger(move: MaterialMove<Player, MaterialType, LocationType>, predicate: (move: MaterialMove<Player, MaterialType, LocationType>) => boolean): boolean;
26
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>): boolean;
27
+ protected actionBlocksUndo(action: Action<MaterialMove<Player, MaterialType, LocationType>, Player>): boolean;
28
+ protected actionActivatesPlayer(action: Action<MaterialMove<Player, MaterialType, LocationType>, Player>): boolean;
29
+ protected moveBlocksUndo(move: MaterialMove<Player, MaterialType, LocationType>): boolean;
30
+ protected moveActivatesPlayer(move: MaterialMove<Player, MaterialType, LocationType>): boolean;
31
+ isUnpredictableMove(move: MaterialMove<Player, MaterialType, LocationType>, _player: Player): boolean;
32
+ protected isRandomMove(move: MaterialMove<Player, MaterialType, LocationType>): boolean;
32
33
  restoreLocalMoves(game: MaterialGame<Player, MaterialType, LocationType>): void;
34
+ isOver(playerIds?: Player[]): boolean;
33
35
  }
@@ -32,7 +32,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
32
32
  exports.MaterialRules = void 0;
33
33
  var Rules_1 = require("../Rules");
34
34
  var moves_1 = require("./moves");
35
- var lodash_shuffle_1 = __importDefault(require("lodash.shuffle"));
35
+ var shuffle_1 = __importDefault(require("lodash/shuffle"));
36
36
  var items_1 = require("./items");
37
37
  var MaterialRules = /** @class */ (function (_super) {
38
38
  __extends(MaterialRules, _super);
@@ -60,9 +60,13 @@ var MaterialRules = /** @class */ (function (_super) {
60
60
  var _a;
61
61
  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; }));
62
62
  };
63
- MaterialRules.prototype.getLocationsStrategies = function () {
64
- return {};
65
- };
63
+ Object.defineProperty(MaterialRules.prototype, "locationsStrategies", {
64
+ get: function () {
65
+ return {};
66
+ },
67
+ enumerable: false,
68
+ configurable: true
69
+ });
66
70
  Object.defineProperty(MaterialRules.prototype, "players", {
67
71
  get: function () {
68
72
  return this.game.players;
@@ -76,10 +80,11 @@ var MaterialRules = /** @class */ (function (_super) {
76
80
  return __assign(__assign({}, this.game.memory), playerMemory);
77
81
  };
78
82
  MaterialRules.prototype.delegate = function () {
83
+ var _this = this;
79
84
  if (!this.game.rule)
80
85
  return;
81
- var RulesStep = this.rulesSteps[this.game.rule.id];
82
- return new RulesStep(this.game);
86
+ var RulesStep = this.rules[this.game.rule.id];
87
+ return new RulesStep(this.game, function (type) { return _this.material(type); });
83
88
  };
84
89
  MaterialRules.prototype.start = function (id, player, memory) {
85
90
  this.game.rule = { id: id, player: player, memory: memory };
@@ -88,7 +93,7 @@ var MaterialRules = /** @class */ (function (_super) {
88
93
  if (move.kind === moves_1.MoveKind.ItemMove) {
89
94
  switch (move.type) {
90
95
  case moves_1.ItemMoveType.Shuffle:
91
- return __assign(__assign({}, move), { newIndexes: (0, lodash_shuffle_1.default)(move.indexes) });
96
+ return __assign(__assign({}, move), { newIndexes: (0, shuffle_1.default)(move.indexes) });
92
97
  }
93
98
  }
94
99
  return move;
@@ -104,8 +109,12 @@ var MaterialRules = /** @class */ (function (_super) {
104
109
  }
105
110
  if (!this.game.items[move.itemType])
106
111
  this.game.items[move.itemType] = [];
107
- var mutator = new items_1.MaterialMutator(move.itemType, this.game.items[move.itemType], this.getLocationsStrategies()[move.itemType]);
112
+ var mutator = new items_1.MaterialMutator(move.itemType, this.game.items[move.itemType], this.locationsStrategies[move.itemType]);
108
113
  mutator.applyMove(move);
114
+ if (this.game.droppedItem && ((0, moves_1.isMoveItem)(move) || (0, moves_1.isDeleteItem)(move))
115
+ && this.game.droppedItem.type === move.itemType && move.itemIndex === this.game.droppedItem.index) {
116
+ delete this.game.droppedItem;
117
+ }
109
118
  if (delegate) {
110
119
  consequences.push.apply(consequences, delegate.afterItemMove(move));
111
120
  }
@@ -142,6 +151,9 @@ var MaterialRules = /** @class */ (function (_super) {
142
151
  case moves_1.LocalMoveType.CloseRulesDisplay:
143
152
  delete this.game.rulesDisplay;
144
153
  break;
154
+ case moves_1.LocalMoveType.DropItem:
155
+ this.game.droppedItem = move.item;
156
+ break;
145
157
  }
146
158
  }
147
159
  return consequences;
@@ -176,25 +188,23 @@ var MaterialRules = /** @class */ (function (_super) {
176
188
  return this.moveActivatesPlayer(action.move);
177
189
  };
178
190
  MaterialRules.prototype.moveBlocksUndo = function (move) {
179
- return this.moveActivatesPlayer(move) || this.isUnpredictableMove(move);
191
+ return this.moveActivatesPlayer(move) || this.isRandomMove(move);
180
192
  };
181
193
  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.ItemMove)
186
- return false;
187
- switch (move.type) {
188
- case moves_1.ItemMoveType.Shuffle:
189
- // case MaterialMoveType.ThrowDice:
190
- return true;
191
- default:
192
- return false;
193
- }
194
+ return (0, moves_1.isStartPlayerTurn)(move); // TODO: add StartSimultaneousTurns when implemented
195
+ };
196
+ MaterialRules.prototype.isUnpredictableMove = function (move, _player) {
197
+ return this.isRandomMove(move);
198
+ };
199
+ MaterialRules.prototype.isRandomMove = function (move) {
200
+ return (0, moves_1.isShuffle)(move); // TODO: || isThrowDice(move)
194
201
  };
195
202
  MaterialRules.prototype.restoreLocalMoves = function (game) {
196
203
  this.game.rulesDisplay = game.rulesDisplay;
197
204
  };
205
+ MaterialRules.prototype.isOver = function (playerIds) {
206
+ return _super.prototype.isOver.call(this, playerIds !== null && playerIds !== void 0 ? playerIds : this.game.players);
207
+ };
198
208
  return MaterialRules;
199
209
  }(Rules_1.Rules));
200
210
  exports.MaterialRules = MaterialRules;
@@ -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":"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"}
@@ -8,5 +8,5 @@ export declare abstract class SecretMaterialRules<Player extends number = number
8
8
  getPlayerView(player: Player): MaterialGame<Player, MaterialType, LocationType>;
9
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"}
@@ -5,8 +5,8 @@ declare type ItemEntry<P extends number = number, L extends number = number> = [
5
5
  export declare class Material<P extends number = number, M extends number = number, L extends number = number> {
6
6
  private readonly type;
7
7
  private readonly entries;
8
- private readonly play?;
9
- constructor(type: M, items: ItemEntry<P, L>[], play?: (move: MaterialMove<P, M, L>) => void);
8
+ private readonly processMove?;
9
+ constructor(type: M, items: ItemEntry<P, L>[], processMove?: (move: MaterialMove<P, M, L>) => void);
10
10
  private new;
11
11
  getItems(): MaterialItem<P, L>[];
12
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;
@@ -1 +1 @@
1
- {"version":3,"file":"Material.js","sourceRoot":"","sources":["../../../src/material/items/Material.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Material.js","sourceRoot":"","sources":["../../../src/material/items/Material.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,21 @@
1
1
  import { MaterialItem } from './index';
2
2
  import { LocationStrategy } from '../location';
3
- import { MaterialMoveRandomized, MoveItem } from '../moves';
3
+ import { CreateItem, MaterialMoveRandomized, MoveItem } from '../moves';
4
4
  export declare class MaterialMutator<P extends number = number, M extends number = number, L extends number = number> {
5
5
  readonly type: M;
6
6
  items: MaterialItem<P, L>[];
7
7
  locationsStrategies: Partial<Record<L, LocationStrategy<P, M, L>>>;
8
8
  constructor(type: M, items: MaterialItem<P, L>[], locationsStrategies?: Partial<Record<L, LocationStrategy<P, M, L>>>);
9
9
  applyMove(move: MaterialMoveRandomized<P, M, L>): void;
10
- findMergeItem(newItem: MaterialItem<P, L>): MaterialItem<P, L> | undefined;
10
+ private findMergeIndex;
11
11
  private addItem;
12
12
  private applyAddItemStrategy;
13
13
  private removeItem;
14
14
  private applyRemoveItemStrategy;
15
- private create;
16
- private move;
15
+ create(move: CreateItem<P, M, L>): number;
16
+ move(move: MoveItem<P, M, L>): number;
17
17
  getItemAfterMove(move: MoveItem<P, M, L>): MaterialItem<P, L>;
18
18
  private delete;
19
19
  private shuffle;
20
20
  }
21
+ export declare const itemsCanMerge: ({ quantity: q1, ...data1 }: MaterialItem, { quantity: quantityB, ...data2 }: MaterialItem) => boolean;
@@ -25,10 +25,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  return (mod && mod.__esModule) ? mod : { "default": mod };
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
- exports.MaterialMutator = void 0;
28
+ exports.itemsCanMerge = exports.MaterialMutator = void 0;
29
29
  var index_1 = require("./index");
30
30
  var fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
31
31
  var moves_1 = require("../moves");
32
+ var merge_1 = __importDefault(require("lodash/merge"));
32
33
  var MaterialMutator = /** @class */ (function () {
33
34
  function MaterialMutator(type, items, locationsStrategies) {
34
35
  if (locationsStrategies === void 0) { locationsStrategies = {}; }
@@ -52,21 +53,19 @@ var MaterialMutator = /** @class */ (function () {
52
53
  break;
53
54
  }
54
55
  };
55
- MaterialMutator.prototype.findMergeItem = function (newItem) {
56
- return this.items.find(function (item) {
57
- var itemQuantity = item.quantity, itemWithoutQuantity = __rest(item, ["quantity"]);
58
- var newItemQuantity = newItem.quantity, newItemWithoutQuantity = __rest(newItem, ["quantity"]);
59
- return (0, fast_deep_equal_1.default)(itemWithoutQuantity, newItemWithoutQuantity);
60
- });
56
+ MaterialMutator.prototype.findMergeIndex = function (newItem) {
57
+ return this.items.findIndex(function (item) { return (0, exports.itemsCanMerge)(item, newItem); });
61
58
  };
62
59
  MaterialMutator.prototype.addItem = function (item) {
63
60
  this.applyAddItemStrategy(item);
64
61
  var availableIndex = this.items.findIndex(function (item) { return item.quantity === 0; });
65
62
  if (availableIndex !== -1) {
66
63
  this.items[availableIndex] = item;
64
+ return availableIndex;
67
65
  }
68
66
  else {
69
67
  this.items.push(item);
68
+ return this.items.length - 1;
70
69
  }
71
70
  };
72
71
  MaterialMutator.prototype.applyAddItemStrategy = function (item) {
@@ -99,12 +98,14 @@ var MaterialMutator = /** @class */ (function () {
99
98
  };
100
99
  MaterialMutator.prototype.create = function (move) {
101
100
  var _a, _b;
102
- var mergeItem = this.findMergeItem(move.item);
103
- if (mergeItem) {
101
+ var mergeIndex = this.findMergeIndex(move.item);
102
+ if (mergeIndex !== -1) {
103
+ var mergeItem = this.items[mergeIndex];
104
104
  mergeItem.quantity = ((_a = mergeItem.quantity) !== null && _a !== void 0 ? _a : 1) + ((_b = move.item.quantity) !== null && _b !== void 0 ? _b : 1);
105
+ return mergeIndex;
105
106
  }
106
107
  else {
107
- this.addItem(move.item);
108
+ return this.addItem(move.item);
108
109
  }
109
110
  };
110
111
  MaterialMutator.prototype.move = function (move) {
@@ -112,25 +113,30 @@ var MaterialMutator = /** @class */ (function () {
112
113
  var quantity = (_a = move.quantity) !== null && _a !== void 0 ? _a : 1;
113
114
  var sourceItem = this.items[move.itemIndex];
114
115
  var itemAfterMove = this.getItemAfterMove(move);
115
- var mergeItem = this.findMergeItem(itemAfterMove);
116
- if (mergeItem) {
116
+ var mergeIndex = this.findMergeIndex(itemAfterMove);
117
+ if (mergeIndex !== -1) {
118
+ var mergeItem = this.items[mergeIndex];
117
119
  mergeItem.quantity = ((_b = mergeItem.quantity) !== null && _b !== void 0 ? _b : 1) + quantity;
118
120
  this.removeItem(sourceItem, quantity);
121
+ return mergeIndex;
119
122
  }
120
123
  else if (sourceItem.quantity && sourceItem.quantity > quantity) {
121
124
  sourceItem.quantity -= quantity;
122
- this.addItem(itemAfterMove);
125
+ return this.addItem(itemAfterMove);
123
126
  }
124
127
  else {
125
128
  this.applyAddItemStrategy(itemAfterMove);
126
129
  this.items[move.itemIndex] = itemAfterMove;
127
130
  this.applyRemoveItemStrategy(sourceItem);
131
+ return move.itemIndex;
128
132
  }
129
133
  };
130
134
  MaterialMutator.prototype.getItemAfterMove = function (move) {
131
135
  var _a = this.items[move.itemIndex], quantity = _a.quantity, rotation = _a.rotation, itemData = __rest(_a, ["quantity", "rotation"]);
132
- var reveal = typeof move.reveal === 'object' ? move.reveal : {};
133
- var item = __assign(__assign(__assign({}, itemData), move.position), reveal);
136
+ var item = __assign(__assign({}, itemData), JSON.parse(JSON.stringify(move.position)));
137
+ if (typeof move.reveal === 'object') {
138
+ (0, merge_1.default)(item, move.reveal);
139
+ }
134
140
  if (move.quantity)
135
141
  item.quantity = move.quantity;
136
142
  return item;
@@ -148,4 +154,10 @@ var MaterialMutator = /** @class */ (function () {
148
154
  return MaterialMutator;
149
155
  }());
150
156
  exports.MaterialMutator = MaterialMutator;
157
+ var itemsCanMerge = function (_a, _b) {
158
+ var q1 = _a.quantity, data1 = __rest(_a, ["quantity"]);
159
+ var quantityB = _b.quantity, data2 = __rest(_b, ["quantity"]);
160
+ return (0, fast_deep_equal_1.default)(data1, data2);
161
+ };
162
+ exports.itemsCanMerge = itemsCanMerge;
151
163
  //# sourceMappingURL=MaterialMutator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialMutator.js","sourceRoot":"","sources":["../../../src/material/items/MaterialMutator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MaterialMutator.js","sourceRoot":"","sources":["../../../src/material/items/MaterialMutator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { LocalMoveType } from './LocalMove';
2
+ import { MoveKind } from '../MoveKind';
3
+ import { MaterialItem } from '../../items';
4
+ import { Location } from '../../location';
5
+ export declare type RulesDisplay<P extends number = number, M extends number = number, L extends number = number> = MaterialRulesDisplay<P, M, L> | LocationRulesDisplay<P, L>;
6
+ export declare enum RulesDisplayType {
7
+ Material = 1,
8
+ Location = 2
9
+ }
10
+ export declare type MaterialRulesDisplay<P extends number = number, M extends number = number, L extends number = number> = {
11
+ type: typeof RulesDisplayType.Material;
12
+ itemType: M;
13
+ itemIndex: number;
14
+ item: Partial<MaterialItem<P, L>>;
15
+ };
16
+ export declare type LocationRulesDisplay<P extends number = number, L extends number = number> = {
17
+ type: typeof RulesDisplayType.Location;
18
+ location: Location<P, L>;
19
+ };
20
+ export declare type DisplayRules<P extends number = number, M extends number = number, L extends number = number> = {
21
+ kind: MoveKind.LocalMove;
22
+ type: typeof LocalMoveType.DisplayRules;
23
+ rulesDisplay: RulesDisplay<P, M, L>;
24
+ };
25
+ export declare const displayRules: <P extends number = number, M extends number = number, L extends number = number>(rulesDisplay: RulesDisplay<P, M, L>) => DisplayRules<P, M, L>;
26
+ export declare const displayMaterialRules: <P extends number = number, M extends number = number, L extends number = number>(itemType: M, itemIndex?: number, item?: Partial<MaterialItem<P, L, any>>) => DisplayRules<P, M, L>;
27
+ export declare const displayLocationRules: <P extends number = number, M extends number = number, L extends number = number>(location: Location<P, L, any, number>) => DisplayRules<P, M, L>;
28
+ export declare type CloseRulesDisplay = {
29
+ kind: MoveKind.LocalMove;
30
+ type: typeof LocalMoveType.CloseRulesDisplay;
31
+ };
32
+ export declare const closeRulesDisplay: CloseRulesDisplay;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.closeRulesDisplay = exports.displayLocationRules = exports.displayMaterialRules = exports.displayRules = exports.RulesDisplayType = void 0;
4
+ var LocalMove_1 = require("./LocalMove");
5
+ var MoveKind_1 = require("../MoveKind");
6
+ var RulesDisplayType;
7
+ (function (RulesDisplayType) {
8
+ RulesDisplayType[RulesDisplayType["Material"] = 1] = "Material";
9
+ RulesDisplayType[RulesDisplayType["Location"] = 2] = "Location";
10
+ })(RulesDisplayType = exports.RulesDisplayType || (exports.RulesDisplayType = {}));
11
+ var displayRules = function (rulesDisplay) {
12
+ return ({ kind: MoveKind_1.MoveKind.LocalMove, type: LocalMove_1.LocalMoveType.DisplayRules, rulesDisplay: rulesDisplay });
13
+ };
14
+ exports.displayRules = displayRules;
15
+ var displayMaterialRules = function (itemType, itemIndex, item) {
16
+ if (itemIndex === void 0) { itemIndex = 0; }
17
+ if (item === void 0) { item = {}; }
18
+ return (0, exports.displayRules)({ type: RulesDisplayType.Material, itemType: itemType, itemIndex: itemIndex, item: item });
19
+ };
20
+ exports.displayMaterialRules = displayMaterialRules;
21
+ var displayLocationRules = function (location) {
22
+ return (0, exports.displayRules)({ type: RulesDisplayType.Location, location: location });
23
+ };
24
+ exports.displayLocationRules = displayLocationRules;
25
+ exports.closeRulesDisplay = { kind: MoveKind_1.MoveKind.LocalMove, type: LocalMove_1.LocalMoveType.CloseRulesDisplay };
26
+ //# sourceMappingURL=DisplayRules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DisplayRules.js","sourceRoot":"","sources":["../../../../src/material/moves/local/DisplayRules.ts"],"names":[],"mappings":";;;AAAA,yCAA2C;AAC3C,wCAAsC;AAQtC,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,+DAAY,CAAA;IAAE,+DAAQ,CAAA;AACxB,CAAC,EAFW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAE3B;AAoBM,IAAM,YAAY,GAAG,UAC3B,YAAmC;IAClC,OAAA,CAAC,EAAE,IAAI,EAAE,mBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAa,CAAC,YAAY,EAAE,YAAY,cAAA,EAAE,CAAC;AAA9E,CAA8E,CAAA;AAFnE,QAAA,YAAY,gBAEuD;AAEzE,IAAM,oBAAoB,GAAG,UACnC,QAAW,EAAE,SAAqB,EAAE,IAAsC;IAA7D,0BAAA,EAAA,aAAqB;IAAE,qBAAA,EAAA,SAAsC;IACzE,OAAA,IAAA,oBAAY,EAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,UAAA,EAAE,SAAS,WAAA,EAAE,IAAI,MAAA,EAAE,CAAC;AAA5E,CAA4E,CAAA;AAFjE,QAAA,oBAAoB,wBAE6C;AAEvE,IAAM,oBAAoB,GAAG,UACnC,QAAwB;IACvB,OAAA,IAAA,oBAAY,EAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,UAAA,EAAE,CAAC;AAA3D,CAA2D,CAAA;AAFhD,QAAA,oBAAoB,wBAE4B;AAOhD,QAAA,iBAAiB,GAAsB,EAAE,IAAI,EAAE,mBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAa,CAAC,iBAAiB,EAAE,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { MoveKind } from '../MoveKind';
2
+ import { LocalMoveType } from './LocalMove';
3
+ export declare type DropItem<M extends number = number> = {
4
+ kind: MoveKind.LocalMove;
5
+ type: typeof LocalMoveType.DropItem;
6
+ item: DisplayedItem<M>;
7
+ };
8
+ export declare type DisplayedItem<M extends number = number> = {
9
+ type: M;
10
+ index: number;
11
+ displayIndex: number;
12
+ };
13
+ export declare function dropItemMove<M extends number = number>(type: M, index: number, displayIndex: number): DropItem<M>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dropItemMove = void 0;
4
+ var MoveKind_1 = require("../MoveKind");
5
+ var LocalMove_1 = require("./LocalMove");
6
+ function dropItemMove(type, index, displayIndex) {
7
+ return { kind: MoveKind_1.MoveKind.LocalMove, type: LocalMove_1.LocalMoveType.DropItem, item: { type: type, index: index, displayIndex: displayIndex } };
8
+ }
9
+ exports.dropItemMove = dropItemMove;
10
+ //# sourceMappingURL=DropItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropItem.js","sourceRoot":"","sources":["../../../../src/material/moves/local/DropItem.ts"],"names":[],"mappings":";;;AAAA,wCAAsC;AACtC,yCAA2C;AAc3C,SAAgB,YAAY,CAA4B,IAAO,EAAE,KAAa,EAAE,YAAoB;IAClG,OAAO,EAAE,IAAI,EAAE,mBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,yBAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,IAAI,MAAA,EAAE,KAAK,OAAA,EAAE,YAAY,cAAA,EAAE,EAAE,CAAA;AACxG,CAAC;AAFD,oCAEC"}
@@ -1,6 +1,8 @@
1
- import { CloseRulesDisplay, DisplayRules } from './RulesDisplay';
2
- export declare type LocalMove<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> = DisplayRules<Player, MaterialType, LocationType> | CloseRulesDisplay;
1
+ import { CloseRulesDisplay, DisplayRules } from './DisplayRules';
2
+ import { DropItem } from './DropItem';
3
+ export declare type LocalMove<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> = DisplayRules<Player, MaterialType, LocationType> | CloseRulesDisplay | DropItem<MaterialType>;
3
4
  export declare enum LocalMoveType {
4
5
  DisplayRules = 0,
5
- CloseRulesDisplay = 1
6
+ CloseRulesDisplay = 1,
7
+ DropItem = 2
6
8
  }
@@ -5,5 +5,6 @@ var LocalMoveType;
5
5
  (function (LocalMoveType) {
6
6
  LocalMoveType[LocalMoveType["DisplayRules"] = 0] = "DisplayRules";
7
7
  LocalMoveType[LocalMoveType["CloseRulesDisplay"] = 1] = "CloseRulesDisplay";
8
+ LocalMoveType[LocalMoveType["DropItem"] = 2] = "DropItem";
8
9
  })(LocalMoveType = exports.LocalMoveType || (exports.LocalMoveType = {}));
9
10
  //# sourceMappingURL=LocalMove.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalMove.js","sourceRoot":"","sources":["../../../../src/material/moves/local/LocalMove.ts"],"names":[],"mappings":";;;AAMA,IAAY,aAEX;AAFD,WAAY,aAAa;IACvB,iEAAY,CAAA;IAAE,2EAAiB,CAAA;AACjC,CAAC,EAFW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAExB"}
1
+ {"version":3,"file":"LocalMove.js","sourceRoot":"","sources":["../../../../src/material/moves/local/LocalMove.ts"],"names":[],"mappings":";;;AAQA,IAAY,aAEX;AAFD,WAAY,aAAa;IACvB,iEAAY,CAAA;IAAE,2EAAiB,CAAA;IAAE,yDAAQ,CAAA;AAC3C,CAAC,EAFW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAExB"}
@@ -1,2 +1,3 @@
1
+ export * from './DisplayRules';
2
+ export * from './DropItem';
1
3
  export * from './LocalMove';
2
- export * from './RulesDisplay';
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./DisplayRules"), exports);
18
+ __exportStar(require("./DropItem"), exports);
17
19
  __exportStar(require("./LocalMove"), exports);
18
- __exportStar(require("./RulesDisplay"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/material/moves/local/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,iDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/material/moves/local/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B;AAC9B,6CAA0B;AAC1B,8CAA2B"}
@@ -0,0 +1,23 @@
1
+ import { MaterialGame } from '../MaterialGame';
2
+ import { Rules } from '../../Rules';
3
+ import { CustomMove, ItemMove, MaterialMove, RuleMove } from '../moves';
4
+ import { Material } from '../items';
5
+ import { MaterialRulesMovesBuilder } from './MaterialRulesMovesBuilder';
6
+ import { RuleStep } from './RuleStep';
7
+ export declare abstract class MaterialRulesPart<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> extends Rules<MaterialGame<Player, MaterialType, LocationType>, MaterialMove<Player, MaterialType, LocationType>, Player> {
8
+ readonly material: (type: MaterialType) => Material<Player, MaterialType, LocationType>;
9
+ constructor(game: MaterialGame<Player, MaterialType, LocationType>, material: (type: MaterialType) => Material<Player, MaterialType, LocationType>);
10
+ beforeItemMove(_move: ItemMove<Player, MaterialType, LocationType>): MaterialMove<Player, MaterialType, LocationType>[];
11
+ afterItemMove(_move: ItemMove<Player, MaterialType, LocationType>): MaterialMove<Player, MaterialType, LocationType>[];
12
+ onRuleStart<RuleId extends number>(_move: RuleMove<Player, RuleId>, _previousRule?: RuleStep): MaterialMove<Player, MaterialType, LocationType>[];
13
+ onRuleEnd<RuleId extends number>(_move: RuleMove<Player, RuleId>): MaterialMove<Player, MaterialType, LocationType>[];
14
+ onCustomMove(_move: CustomMove): MaterialMove<Player, MaterialType, LocationType>[];
15
+ rules(): MaterialRulesMovesBuilder<Player, MaterialType, LocationType>;
16
+ getMemory<T>(player?: Player): T;
17
+ memorize<T extends Record<string, any>>(memory?: T, player?: Player): void;
18
+ getGameMemory<T>(player?: Player): T;
19
+ memorizeOnGame(memory?: Record<string, any>, player?: Player): void;
20
+ }
21
+ export interface MaterialRulesPartCreator<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> {
22
+ new (game: MaterialGame<Player, MaterialType, LocationType>, material: (type: MaterialType) => Material<Player, MaterialType, LocationType>): MaterialRulesPart<Player, MaterialType, LocationType>;
23
+ }
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.MaterialRulesPart = void 0;
30
+ var Rules_1 = require("../../Rules");
31
+ var MaterialRulesMovesBuilder_1 = require("./MaterialRulesMovesBuilder");
32
+ var MaterialRulesPart = /** @class */ (function (_super) {
33
+ __extends(MaterialRulesPart, _super);
34
+ function MaterialRulesPart(game, material) {
35
+ var _this = _super.call(this, game) || this;
36
+ _this.material = material;
37
+ return _this;
38
+ }
39
+ MaterialRulesPart.prototype.beforeItemMove = function (_move) {
40
+ return [];
41
+ };
42
+ MaterialRulesPart.prototype.afterItemMove = function (_move) {
43
+ return [];
44
+ };
45
+ MaterialRulesPart.prototype.onRuleStart = function (_move, _previousRule) {
46
+ return [];
47
+ };
48
+ MaterialRulesPart.prototype.onRuleEnd = function (_move) {
49
+ return [];
50
+ };
51
+ MaterialRulesPart.prototype.onCustomMove = function (_move) {
52
+ return [];
53
+ };
54
+ MaterialRulesPart.prototype.rules = function () {
55
+ return new MaterialRulesMovesBuilder_1.MaterialRulesMovesBuilder(this.game);
56
+ };
57
+ MaterialRulesPart.prototype.getMemory = function (player) {
58
+ var _a, _b, _c;
59
+ if (player !== undefined) {
60
+ return ((_b = (_a = this.game.rule.playersMemory) === null || _a === void 0 ? void 0 : _a[player]) !== null && _b !== void 0 ? _b : {});
61
+ }
62
+ else {
63
+ return ((_c = this.game.rule.memory) !== null && _c !== void 0 ? _c : {});
64
+ }
65
+ };
66
+ MaterialRulesPart.prototype.memorize = function (memory, player) {
67
+ if (player !== undefined) {
68
+ if (!this.game.rule.playersMemory)
69
+ this.game.rule.playersMemory = {};
70
+ this.game.rule.playersMemory[player] = __assign(__assign({}, this.game.rule.playersMemory[player]), memory);
71
+ }
72
+ else {
73
+ this.game.rule.memory = __assign(__assign({}, this.game.rule.memory), memory);
74
+ }
75
+ };
76
+ MaterialRulesPart.prototype.getGameMemory = function (player) {
77
+ var _a, _b, _c;
78
+ if (player !== undefined) {
79
+ return ((_b = (_a = this.game.playersMemory) === null || _a === void 0 ? void 0 : _a[player]) !== null && _b !== void 0 ? _b : {});
80
+ }
81
+ else {
82
+ return ((_c = this.game.memory) !== null && _c !== void 0 ? _c : {});
83
+ }
84
+ };
85
+ MaterialRulesPart.prototype.memorizeOnGame = function (memory, player) {
86
+ if (player !== undefined) {
87
+ if (!this.game.playersMemory)
88
+ this.game.playersMemory = {};
89
+ this.game.playersMemory[player] = __assign(__assign({}, this.game.playersMemory[player]), memory);
90
+ }
91
+ else {
92
+ this.game.memory = __assign(__assign({}, this.game.memory), memory);
93
+ }
94
+ };
95
+ return MaterialRulesPart;
96
+ }(Rules_1.Rules));
97
+ exports.MaterialRulesPart = MaterialRulesPart;
98
+ //# sourceMappingURL=MaterialRulesPart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MaterialRulesPart.js","sourceRoot":"","sources":["../../../src/material/rules/MaterialRulesPart.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAAmC;AAGnC,yEAAuE;AAGvE;IACU,qCAAiH;IAIzH,2BAAY,IAAsD,EAAE,QAA8E;QAAlJ,YACE,kBAAM,IAAI,CAAC,SAEZ;QADC,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;;IAC1B,CAAC;IAED,0CAAc,GAAd,UAAe,KAAmD;QAChE,OAAO,EAAE,CAAA;IACX,CAAC;IAED,yCAAa,GAAb,UAAc,KAAmD;QAC/D,OAAO,EAAE,CAAA;IACX,CAAC;IAED,uCAAW,GAAX,UAAmC,KAA+B,EAAE,aAAwB;QAC1F,OAAO,EAAE,CAAA;IACX,CAAC;IAED,qCAAS,GAAT,UAAiC,KAA+B;QAC9D,OAAO,EAAE,CAAA;IACX,CAAC;IAED,wCAAY,GAAZ,UAAa,KAAiB;QAC5B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,iCAAK,GAAL;QACE,OAAO,IAAI,qDAAyB,CAAqC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrF,CAAC;IAED,qCAAS,GAAT,UAAa,MAAe;;QAC1B,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa,0CAAG,MAAM,CAAC,mCAAI,EAAE,CAAM,CAAA;SAC5D;aAAM;YACL,OAAO,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,MAAM,mCAAI,EAAE,CAAM,CAAA;SAC3C;IACH,CAAC;IAED,oCAAQ,GAAR,UAAwC,MAAU,EAAE,MAAe;QACjE,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa,GAAG,EAAE,CAAA;YACtE,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa,CAAC,MAAM,CAAC,yBAAQ,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAK,MAAM,CAAE,CAAA;SAChG;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,MAAM,yBAAQ,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,MAAM,GAAK,MAAM,CAAE,CAAA;SAClE;IACH,CAAC;IAED,yCAAa,GAAb,UAAiB,MAAe;;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,aAAa,0CAAG,MAAM,CAAC,mCAAI,EAAE,CAAM,CAAA;SACtD;aAAM;YACL,OAAO,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAM,CAAA;SACrC;IACH,CAAC;IAED,0CAAc,GAAd,UAAe,MAA4B,EAAE,MAAe;QAC1D,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;YAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,yBAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAK,MAAM,CAAE,CAAA;SACpF;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,MAAM,yBAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAK,MAAM,CAAE,CAAA;SACtD;IACH,CAAC;IAEH,wBAAC;AAAD,CAAC,AApED,CACU,aAAK,GAmEd;AApEqB,8CAAiB"}
@@ -5,7 +5,8 @@ import { Material } from '../items';
5
5
  import { MaterialRulesMovesBuilder } from './MaterialRulesMovesBuilder';
6
6
  import { RuleStep } from './RuleStep';
7
7
  export declare abstract class MaterialStepRules<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> extends Rules<MaterialGame<Player, MaterialType, LocationType>, MaterialMove<Player, MaterialType, LocationType>, Player> {
8
- material(type: MaterialType): Material<Player, MaterialType, LocationType>;
8
+ readonly material: (type: MaterialType) => Material<Player, MaterialType, LocationType>;
9
+ constructor(game: MaterialGame<Player, MaterialType, LocationType>, material: (type: MaterialType) => Material<Player, MaterialType, LocationType>);
9
10
  beforeItemMove(_move: ItemMove<Player, MaterialType, LocationType>): MaterialMove<Player, MaterialType, LocationType>[];
10
11
  afterItemMove(_move: ItemMove<Player, MaterialType, LocationType>): MaterialMove<Player, MaterialType, LocationType>[];
11
12
  onRuleStart<RuleId extends number>(_move: RuleMove<Player, RuleId>, _previousRule?: RuleStep): MaterialMove<Player, MaterialType, LocationType>[];
@@ -18,5 +19,5 @@ export declare abstract class MaterialStepRules<Player extends number = number,
18
19
  memorizeOnGame(memory?: Record<string, any>, player?: Player): void;
19
20
  }
20
21
  export interface MaterialRulesStepCreator<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> {
21
- new (state: MaterialGame<Player, MaterialType, LocationType>): MaterialStepRules<Player, MaterialType, LocationType>;
22
+ new (game: MaterialGame<Player, MaterialType, LocationType>, material: (type: MaterialType) => Material<Player, MaterialType, LocationType>): MaterialStepRules<Player, MaterialType, LocationType>;
22
23
  }
@@ -28,17 +28,14 @@ var __assign = (this && this.__assign) || function () {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.MaterialStepRules = void 0;
30
30
  var Rules_1 = require("../../Rules");
31
- var items_1 = require("../items");
32
31
  var MaterialRulesMovesBuilder_1 = require("./MaterialRulesMovesBuilder");
33
32
  var MaterialStepRules = /** @class */ (function (_super) {
34
33
  __extends(MaterialStepRules, _super);
35
- function MaterialStepRules() {
36
- return _super !== null && _super.apply(this, arguments) || this;
34
+ function MaterialStepRules(game, material) {
35
+ var _this = _super.call(this, game) || this;
36
+ _this.material = material;
37
+ return _this;
37
38
  }
38
- MaterialStepRules.prototype.material = function (type) {
39
- var _a;
40
- 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; }));
41
- };
42
39
  MaterialStepRules.prototype.beforeItemMove = function (_move) {
43
40
  return [];
44
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialStepRules.js","sourceRoot":"","sources":["../../../src/material/rules/MaterialStepRules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MaterialStepRules.js","sourceRoot":"","sources":["../../../src/material/rules/MaterialStepRules.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,qCAAmC;AAGnC,yEAAuE;AAGvE;IACU,qCAAiH;IAIzH,2BAAY,IAAsD,EAAE,QAA8E;QAAlJ,YACE,kBAAM,IAAI,CAAC,SAEZ;QADC,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;;IAC1B,CAAC;IAED,0CAAc,GAAd,UAAe,KAAmD;QAChE,OAAO,EAAE,CAAA;IACX,CAAC;IAED,yCAAa,GAAb,UAAc,KAAmD;QAC/D,OAAO,EAAE,CAAA;IACX,CAAC;IAED,uCAAW,GAAX,UAAmC,KAA+B,EAAE,aAAwB;QAC1F,OAAO,EAAE,CAAA;IACX,CAAC;IAED,qCAAS,GAAT,UAAiC,KAA+B;QAC9D,OAAO,EAAE,CAAA;IACX,CAAC;IAED,wCAAY,GAAZ,UAAa,KAAiB;QAC5B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,iCAAK,GAAL;QACE,OAAO,IAAI,qDAAyB,CAAqC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrF,CAAC;IAED,qCAAS,GAAT,UAAa,MAAe;;QAC1B,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa,0CAAG,MAAM,CAAC,mCAAI,EAAE,CAAM,CAAA;SAC5D;aAAM;YACL,OAAO,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,MAAM,mCAAI,EAAE,CAAM,CAAA;SAC3C;IACH,CAAC;IAED,oCAAQ,GAAR,UAAwC,MAAU,EAAE,MAAe;QACjE,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa,GAAG,EAAE,CAAA;YACtE,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa,CAAC,MAAM,CAAC,yBAAQ,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,aAAa,CAAC,MAAM,CAAC,GAAK,MAAM,CAAE,CAAA;SAChG;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,MAAM,yBAAQ,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,MAAM,GAAK,MAAM,CAAE,CAAA;SAClE;IACH,CAAC;IAED,yCAAa,GAAb,UAAiB,MAAe;;QAC9B,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,OAAO,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,aAAa,0CAAG,MAAM,CAAC,mCAAI,EAAE,CAAM,CAAA;SACtD;aAAM;YACL,OAAO,CAAC,MAAA,IAAI,CAAC,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAM,CAAA;SACrC;IACH,CAAC;IAED,0CAAc,GAAd,UAAe,MAA4B,EAAE,MAAe;QAC1D,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;YAC1D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,yBAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAK,MAAM,CAAE,CAAA;SACpF;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,MAAM,yBAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,GAAK,MAAM,CAAE,CAAA;SACtD;IACH,CAAC;IAEH,wBAAC;AAAD,CAAC,AApED,CACU,aAAK,GAmEd;AApEqB,8CAAiB"}
@@ -1,6 +1,6 @@
1
- import { MaterialStepRules } from './MaterialStepRules';
1
+ import { MaterialRulesPart } from './MaterialRulesPart';
2
2
  import { MaterialMove } from '../moves';
3
- export declare abstract class PlayerTurnRule<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> extends MaterialStepRules<Player, MaterialType, LocationType> {
3
+ export declare abstract class PlayerTurnRule<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> extends MaterialRulesPart<Player, MaterialType, LocationType> {
4
4
  get player(): Player;
5
5
  get nextPlayer(): Player;
6
6
  getActivePlayer(): Player;
@@ -16,7 +16,7 @@ var __extends = (this && this.__extends) || (function () {
16
16
  })();
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.PlayerTurnRule = void 0;
19
- var MaterialStepRules_1 = require("./MaterialStepRules");
19
+ var MaterialRulesPart_1 = require("./MaterialRulesPart");
20
20
  var PlayerTurnRule = /** @class */ (function (_super) {
21
21
  __extends(PlayerTurnRule, _super);
22
22
  function PlayerTurnRule() {
@@ -48,6 +48,6 @@ var PlayerTurnRule = /** @class */ (function (_super) {
48
48
  return this.getPlayerMoves();
49
49
  };
50
50
  return PlayerTurnRule;
51
- }(MaterialStepRules_1.MaterialStepRules));
51
+ }(MaterialRulesPart_1.MaterialRulesPart));
52
52
  exports.PlayerTurnRule = PlayerTurnRule;
53
53
  //# sourceMappingURL=PlayerTurnRule.js.map
@@ -1,3 +1,3 @@
1
1
  export * from './RuleStep';
2
- export * from './MaterialStepRules';
2
+ export * from './MaterialRulesPart';
3
3
  export * from './PlayerTurnRule';
@@ -15,6 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./RuleStep"), exports);
18
- __exportStar(require("./MaterialStepRules"), exports);
18
+ __exportStar(require("./MaterialRulesPart"), exports);
19
19
  __exportStar(require("./PlayerTurnRule"), exports);
20
20
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/rules-api",
3
- "version": "6.0.3-alpha.0",
3
+ "version": "6.0.5-alpha.0",
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",
@@ -20,18 +20,14 @@
20
20
  "license": "ISC",
21
21
  "dependencies": {
22
22
  "fast-deep-equal": "^3.1.3",
23
- "lodash.mapvalues": "^4.6.0",
24
- "lodash.maxby": "^4.6.0",
25
- "lodash.minby": "^4.6.0"
23
+ "lodash": "^4.17.21"
26
24
  },
27
25
  "publishConfig": {
28
26
  "access": "public"
29
27
  },
30
28
  "devDependencies": {
31
- "@types/lodash.mapvalues": "^4.6.7",
32
- "@types/lodash.maxby": "^4.6.7",
33
- "@types/lodash.minby": "^4.6.7",
29
+ "@types/lodash": "^4.14.195",
34
30
  "i18next": ">=21.3.0"
35
31
  },
36
- "gitHead": "fc7c68a0eb428039109277a2c84f0ed71e3719ac"
32
+ "gitHead": "89ecbf9433f9832b1ade8404140bea3440364b84"
37
33
  }