@gamepark/rules-api 6.0.11-alpha.0 → 6.2.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 (76) hide show
  1. package/dist/material/MaterialGame.d.ts +1 -2
  2. package/dist/material/MaterialGameSetup.d.ts +3 -1
  3. package/dist/material/MaterialGameSetup.js +8 -23
  4. package/dist/material/MaterialGameSetup.js.map +1 -1
  5. package/dist/material/MaterialRules.d.ts +7 -3
  6. package/dist/material/MaterialRules.js +18 -22
  7. package/dist/material/MaterialRules.js.map +1 -1
  8. package/dist/material/index.d.ts +1 -0
  9. package/dist/material/index.js +1 -0
  10. package/dist/material/index.js.map +1 -1
  11. package/dist/material/items/Material.d.ts +3 -1
  12. package/dist/material/items/Material.js +17 -2
  13. package/dist/material/items/Material.js.map +1 -1
  14. package/dist/material/memory/GameMemory.d.ts +8 -0
  15. package/dist/material/memory/GameMemory.js +25 -0
  16. package/dist/material/memory/GameMemory.js.map +1 -0
  17. package/dist/material/memory/PlayerMemory.d.ts +9 -0
  18. package/dist/material/memory/PlayerMemory.js +28 -0
  19. package/dist/material/memory/PlayerMemory.js.map +1 -0
  20. package/dist/material/memory/index.d.ts +2 -0
  21. package/dist/material/memory/index.js +19 -0
  22. package/dist/material/memory/index.js.map +1 -0
  23. package/dist/material/moves/CustomMove.d.ts +2 -1
  24. package/dist/material/moves/CustomMove.js +6 -4
  25. package/dist/material/moves/CustomMove.js.map +1 -1
  26. package/dist/material/moves/items/CreateItem.d.ts +2 -1
  27. package/dist/material/moves/items/CreateItem.js +9 -3
  28. package/dist/material/moves/items/CreateItem.js.map +1 -1
  29. package/dist/material/moves/items/DeleteItem.d.ts +2 -1
  30. package/dist/material/moves/items/DeleteItem.js +9 -3
  31. package/dist/material/moves/items/DeleteItem.js.map +1 -1
  32. package/dist/material/moves/items/MoveItem.d.ts +4 -2
  33. package/dist/material/moves/items/MoveItem.js +17 -5
  34. package/dist/material/moves/items/MoveItem.js.map +1 -1
  35. package/dist/material/moves/items/Shuffle.d.ts +2 -1
  36. package/dist/material/moves/items/Shuffle.js +9 -3
  37. package/dist/material/moves/items/Shuffle.js.map +1 -1
  38. package/dist/material/moves/local/DisplayRules.d.ts +2 -2
  39. package/dist/material/moves/local/DisplayRules.js +1 -2
  40. package/dist/material/moves/local/DisplayRules.js.map +1 -1
  41. package/dist/material/moves/rules/EndPlayerTurn.d.ts +7 -0
  42. package/dist/material/moves/rules/EndPlayerTurn.js +10 -0
  43. package/dist/material/moves/rules/EndPlayerTurn.js.map +1 -0
  44. package/dist/material/moves/rules/RuleMove.d.ts +5 -3
  45. package/dist/material/moves/rules/RuleMove.js +2 -2
  46. package/dist/material/moves/rules/RuleMove.js.map +1 -1
  47. package/dist/material/moves/rules/StartPlayerTurn.d.ts +0 -1
  48. package/dist/material/moves/rules/StartPlayerTurn.js.map +1 -1
  49. package/dist/material/moves/rules/StartRule.d.ts +1 -3
  50. package/dist/material/moves/rules/StartRule.js.map +1 -1
  51. package/dist/material/moves/rules/StartSimultaneousRule.d.ts +8 -0
  52. package/dist/material/moves/rules/StartSimultaneousRule.js +10 -0
  53. package/dist/material/moves/rules/StartSimultaneousRule.js.map +1 -0
  54. package/dist/material/moves/rules/StartSimultanousRule.d.ts +10 -0
  55. package/dist/material/moves/rules/StartSimultanousRule.js +10 -0
  56. package/dist/material/moves/rules/StartSimultanousRule.js.map +1 -0
  57. package/dist/material/moves/rules/index.d.ts +3 -1
  58. package/dist/material/moves/rules/index.js +3 -1
  59. package/dist/material/moves/rules/index.js.map +1 -1
  60. package/dist/material/rules/MaterialRulesMovesBuilder.d.ts +5 -3
  61. package/dist/material/rules/MaterialRulesMovesBuilder.js +12 -11
  62. package/dist/material/rules/MaterialRulesMovesBuilder.js.map +1 -1
  63. package/dist/material/rules/MaterialRulesPart.d.ts +5 -4
  64. package/dist/material/rules/MaterialRulesPart.js +8 -50
  65. package/dist/material/rules/MaterialRulesPart.js.map +1 -1
  66. package/dist/material/rules/PlayerTurnRule.d.ts +0 -4
  67. package/dist/material/rules/PlayerTurnRule.js +0 -12
  68. package/dist/material/rules/PlayerTurnRule.js.map +1 -1
  69. package/dist/material/rules/RuleStep.d.ts +1 -2
  70. package/dist/material/rules/SimultaneousRule.d.ts +7 -0
  71. package/dist/material/rules/SimultaneousRule.js +39 -0
  72. package/dist/material/rules/SimultaneousRule.js.map +1 -0
  73. package/dist/material/rules/index.d.ts +3 -1
  74. package/dist/material/rules/index.js +3 -1
  75. package/dist/material/rules/index.js.map +1 -1
  76. package/package.json +2 -2
@@ -1,14 +1,26 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isMoveItemLocation = exports.isMoveItem = void 0;
3
+ exports.isMoveItemTypeLocation = exports.isMoveItemLocation = exports.isMoveItemType = exports.isMoveItem = void 0;
4
4
  var ItemMoveType_1 = require("./ItemMoveType");
5
5
  var MoveKind_1 = require("../MoveKind");
6
- function isMoveItem(move, itemType) {
7
- return move.kind === MoveKind_1.MoveKind.ItemMove && move.type === ItemMoveType_1.ItemMoveType.Move && (itemType === undefined || move.itemType === itemType);
6
+ function isMoveItem(move) {
7
+ return move.kind === MoveKind_1.MoveKind.ItemMove && move.type === ItemMoveType_1.ItemMoveType.Move;
8
8
  }
9
9
  exports.isMoveItem = isMoveItem;
10
- function isMoveItemLocation(move, itemType) {
11
- return isMoveItem(move, itemType) && move.position.location !== undefined;
10
+ function isMoveItemType(type, index) {
11
+ return function (move) {
12
+ return isMoveItem(move) && move.itemType === type && (index === undefined || move.itemIndex === index);
13
+ };
14
+ }
15
+ exports.isMoveItemType = isMoveItemType;
16
+ function isMoveItemLocation(move) {
17
+ return isMoveItem(move) && move.position.location !== undefined;
12
18
  }
13
19
  exports.isMoveItemLocation = isMoveItemLocation;
20
+ function isMoveItemTypeLocation(type, index) {
21
+ return function (move) {
22
+ return isMoveItemLocation(move) && move.itemType === type && (index === undefined || move.itemIndex === index);
23
+ };
24
+ }
25
+ exports.isMoveItemTypeLocation = isMoveItemTypeLocation;
14
26
  //# sourceMappingURL=MoveItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MoveItem.js","sourceRoot":"","sources":["../../../../src/material/moves/items/MoveItem.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAE7C,wCAAsC;AAiBtC,SAAgB,UAAU,CACxB,IAA2B,EAAE,QAAY;IAEzC,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,2BAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;AACrI,CAAC;AAJD,gCAIC;AAED,SAAgB,kBAAkB,CAChC,IAA2B,EAAE,QAAY;IAEzC,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAA;AAC3E,CAAC;AAJD,gDAIC"}
1
+ {"version":3,"file":"MoveItem.js","sourceRoot":"","sources":["../../../../src/material/moves/items/MoveItem.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAE7C,wCAAsC;AAiBtC,SAAgB,UAAU,CAAuD,IAA2B;IAC1G,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,2BAAY,CAAC,IAAI,CAAA;AAC3E,CAAC;AAFD,gCAEC;AAED,SAAgB,cAAc,CAC5B,IAAO,EAAE,KAAc;IAEvB,OAAO,UAAC,IAA2B;QACjC,OAAA,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;IAA/F,CAA+F,CAAA;AACnG,CAAC;AALD,wCAKC;AAED,SAAgB,kBAAkB,CAAuD,IAA2B;IAClH,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAA;AACjE,CAAC;AAFD,gDAEC;AAED,SAAgB,sBAAsB,CACpC,IAAO,EAAE,KAAc;IAEvB,OAAO,UAAC,IAA2B;QACjC,OAAA,kBAAkB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;IAAvG,CAAuG,CAAA;AAC3G,CAAC;AALD,wDAKC"}
@@ -8,5 +8,6 @@ export declare type Shuffle<MaterialType extends number = number> = MaterialMove
8
8
  export declare type ShuffleRandomized<MaterialType extends number = number> = Shuffle<MaterialType> & {
9
9
  newIndexes: number[];
10
10
  };
11
- export declare function isShuffle<P extends number, M extends number, L extends number>(move: MaterialMove<P, M, L>, itemType?: M): move is Shuffle<M>;
11
+ export declare function isShuffle<P extends number, M extends number, L extends number>(move: MaterialMove<P, M, L>): move is Shuffle<M>;
12
+ export declare function isShuffleItemType<P extends number, M extends number, L extends number>(type: M): (move: MaterialMove<P, M, L>) => move is Shuffle<M>;
12
13
  export declare function isShuffleRandomized<P extends number, M extends number, L extends number>(move: MaterialMove<P, M, L>): move is ShuffleRandomized<M>;
@@ -1,12 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isShuffleRandomized = exports.isShuffle = void 0;
3
+ exports.isShuffleRandomized = exports.isShuffleItemType = exports.isShuffle = void 0;
4
4
  var ItemMoveType_1 = require("./ItemMoveType");
5
5
  var MoveKind_1 = require("../MoveKind");
6
- function isShuffle(move, itemType) {
7
- return move.kind === MoveKind_1.MoveKind.ItemMove && move.type === ItemMoveType_1.ItemMoveType.Shuffle && (itemType === undefined || move.itemType === itemType);
6
+ function isShuffle(move) {
7
+ return move.kind === MoveKind_1.MoveKind.ItemMove && move.type === ItemMoveType_1.ItemMoveType.Shuffle;
8
8
  }
9
9
  exports.isShuffle = isShuffle;
10
+ function isShuffleItemType(type) {
11
+ return function (move) {
12
+ return isShuffle(move) && move.itemType === type;
13
+ };
14
+ }
15
+ exports.isShuffleItemType = isShuffleItemType;
10
16
  function isShuffleRandomized(move) {
11
17
  return isShuffle(move) && Array.isArray(move.newIndexes);
12
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Shuffle.js","sourceRoot":"","sources":["../../../../src/material/moves/items/Shuffle.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAG7C,wCAAsC;AAWtC,SAAgB,SAAS,CACvB,IAA2B,EAAE,QAAY;IAEzC,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,2BAAY,CAAC,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAA;AACxI,CAAC;AAJD,8BAIC;AAED,SAAgB,mBAAmB,CAAuD,IAA2B;IACnH,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,IAA6B,CAAC,UAAU,CAAC,CAAA;AACpF,CAAC;AAFD,kDAEC"}
1
+ {"version":3,"file":"Shuffle.js","sourceRoot":"","sources":["../../../../src/material/moves/items/Shuffle.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAG7C,wCAAsC;AAWtC,SAAgB,SAAS,CAAuD,IAA2B;IACzG,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,2BAAY,CAAC,OAAO,CAAA;AAC9E,CAAC;AAFD,8BAEC;AAED,SAAgB,iBAAiB,CAC/B,IAAO;IAEP,OAAO,UAAC,IAA2B;QACjC,OAAA,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;IAAzC,CAAyC,CAAA;AAC7C,CAAC;AALD,8CAKC;AAED,SAAgB,mBAAmB,CAAuD,IAA2B;IACnH,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,IAA6B,CAAC,UAAU,CAAC,CAAA;AACpF,CAAC;AAFD,kDAEC"}
@@ -10,7 +10,7 @@ export declare enum RulesDisplayType {
10
10
  export declare type MaterialRulesDisplay<P extends number = number, M extends number = number, L extends number = number> = {
11
11
  type: typeof RulesDisplayType.Material;
12
12
  itemType: M;
13
- itemIndex: number;
13
+ itemIndex?: number;
14
14
  item: Partial<MaterialItem<P, L>>;
15
15
  };
16
16
  export declare type LocationRulesDisplay<P extends number = number, L extends number = number> = {
@@ -23,7 +23,7 @@ export declare type DisplayRules<P extends number = number, M extends number = n
23
23
  rulesDisplay: RulesDisplay<P, M, L>;
24
24
  };
25
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>;
26
+ export declare const displayMaterialRules: <P extends number = number, M extends number = number, L extends number = number>(itemType: M, item?: Partial<MaterialItem<P, L, any>>, itemIndex?: number) => DisplayRules<P, M, L>;
27
27
  export declare const displayLocationRules: <P extends number = number, M extends number = number, L extends number = number>(location: Location<P, L, any>) => DisplayRules<P, M, L>;
28
28
  export declare type CloseRulesDisplay = {
29
29
  kind: MoveKind.LocalMove;
@@ -12,8 +12,7 @@ var displayRules = function (rulesDisplay) {
12
12
  return ({ kind: MoveKind_1.MoveKind.LocalMove, type: LocalMove_1.LocalMoveType.DisplayRules, rulesDisplay: rulesDisplay });
13
13
  };
14
14
  exports.displayRules = displayRules;
15
- var displayMaterialRules = function (itemType, itemIndex, item) {
16
- if (itemIndex === void 0) { itemIndex = 0; }
15
+ var displayMaterialRules = function (itemType, item, itemIndex) {
17
16
  if (item === void 0) { item = {}; }
18
17
  return (0, exports.displayRules)({ type: RulesDisplayType.Material, itemType: itemType, itemIndex: itemIndex, item: item });
19
18
  };
@@ -1 +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"}
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,IAAsC,EAAE,SAAkB;IAA1D,qBAAA,EAAA,SAAsC;IAClD,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,7 @@
1
+ import { RuleMoveCommon, RuleMoveType } from './RuleMove';
2
+ import { MaterialMove } from '../MaterialMove';
3
+ export declare type EndPlayerTurn<Player extends number = number> = RuleMoveCommon & {
4
+ type: typeof RuleMoveType.EndPlayerTurn;
5
+ player: Player;
6
+ };
7
+ export declare function isEndPlayerTurn<P extends number, M extends number, L extends number>(move: MaterialMove<P, M, L>): move is EndPlayerTurn<P>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isEndPlayerTurn = void 0;
4
+ var RuleMove_1 = require("./RuleMove");
5
+ var MoveKind_1 = require("../MoveKind");
6
+ function isEndPlayerTurn(move) {
7
+ return move.kind === MoveKind_1.MoveKind.RulesMove && move.type === RuleMove_1.RuleMoveType.EndPlayerTurn;
8
+ }
9
+ exports.isEndPlayerTurn = isEndPlayerTurn;
10
+ //# sourceMappingURL=EndPlayerTurn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EndPlayerTurn.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/EndPlayerTurn.ts"],"names":[],"mappings":";;;AAAA,uCAAyD;AAEzD,wCAAsC;AAOtC,SAAgB,eAAe,CAAuD,IAA2B;IAC/G,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAY,CAAC,aAAa,CAAA;AACrF,CAAC;AAFD,0CAEC"}
@@ -2,11 +2,13 @@ import { MoveKind } from '../MoveKind';
2
2
  import { StartRule } from './StartRule';
3
3
  import { StartPlayerTurn } from './StartPlayerTurn';
4
4
  import { EndGame } from './EndGame';
5
- export declare type RuleMove<Player extends number = number, RuleId extends number = number> = StartPlayerTurn<Player, RuleId> | StartRule<Player, RuleId> | EndGame;
5
+ import { StartSimultaneousRule } from './StartSimultaneousRule';
6
+ import { EndPlayerTurn } from './EndPlayerTurn';
7
+ export declare type RuleMove<Player extends number = number, RuleId extends number = number> = StartPlayerTurn<Player, RuleId> | StartSimultaneousRule<Player, RuleId> | StartRule<RuleId> | EndGame | EndPlayerTurn<Player>;
6
8
  export declare enum RuleMoveType {
7
9
  StartPlayerTurn = 0,
8
- StartSimultaneousTurns = 1,
9
- StartAutomaticRule = 2,
10
+ StartSimultaneousRule = 1,
11
+ EndPlayerTurn = 2,
10
12
  StartRule = 3,
11
13
  EndGame = 4
12
14
  }
@@ -4,8 +4,8 @@ exports.isRuleChange = exports.RuleMoveType = void 0;
4
4
  var RuleMoveType;
5
5
  (function (RuleMoveType) {
6
6
  RuleMoveType[RuleMoveType["StartPlayerTurn"] = 0] = "StartPlayerTurn";
7
- RuleMoveType[RuleMoveType["StartSimultaneousTurns"] = 1] = "StartSimultaneousTurns";
8
- RuleMoveType[RuleMoveType["StartAutomaticRule"] = 2] = "StartAutomaticRule";
7
+ RuleMoveType[RuleMoveType["StartSimultaneousRule"] = 1] = "StartSimultaneousRule";
8
+ RuleMoveType[RuleMoveType["EndPlayerTurn"] = 2] = "EndPlayerTurn";
9
9
  RuleMoveType[RuleMoveType["StartRule"] = 3] = "StartRule";
10
10
  RuleMoveType[RuleMoveType["EndGame"] = 4] = "EndGame";
11
11
  })(RuleMoveType = exports.RuleMoveType || (exports.RuleMoveType = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"RuleMove.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/RuleMove.ts"],"names":[],"mappings":";;;AAUA,IAAY,YAEX;AAFD,WAAY,YAAY;IACtB,qEAAe,CAAA;IAAE,mFAAsB,CAAA;IAAE,2EAAkB,CAAA;IAAE,yDAAS,CAAA;IAAE,qDAAO,CAAA;AACjF,CAAC,EAFW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAEvB;AAMM,IAAM,YAAY,GAAG,UAAuD,IAAoB;IACrG,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB;YACE,OAAO,IAAI,CAAA;KACd;AACH,CAAC,CAAA;AALY,QAAA,YAAY,gBAKxB"}
1
+ {"version":3,"file":"RuleMove.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/RuleMove.ts"],"names":[],"mappings":";;;AAcA,IAAY,YAEX;AAFD,WAAY,YAAY;IACtB,qEAAe,CAAA;IAAE,iFAAqB,CAAA;IAAE,iEAAa,CAAA;IAAE,yDAAS,CAAA;IAAE,qDAAO,CAAA;AAC3E,CAAC,EAFW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAEvB;AAMM,IAAM,YAAY,GAAG,UAAuD,IAAoB;IACrG,QAAQ,IAAI,CAAC,IAAI,EAAE;QACjB;YACE,OAAO,IAAI,CAAA;KACd;AACH,CAAC,CAAA;AALY,QAAA,YAAY,gBAKxB"}
@@ -4,6 +4,5 @@ export declare type StartPlayerTurn<Player extends number = number, RuleId exten
4
4
  type: typeof RuleMoveType.StartPlayerTurn;
5
5
  id: RuleId;
6
6
  player?: Player;
7
- memory?: Record<string, any>;
8
7
  };
9
8
  export declare function isStartPlayerTurn<P extends number, M extends number, L extends number>(move: MaterialMove<P, M, L>): move is StartPlayerTurn<P>;
@@ -1 +1 @@
1
- {"version":3,"file":"StartPlayerTurn.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/StartPlayerTurn.ts"],"names":[],"mappings":";;;AAAA,uCAAyD;AAEzD,wCAAsC;AAStC,SAAgB,iBAAiB,CAAuD,IAA2B;IACjH,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAY,CAAC,eAAe,CAAA;AACvF,CAAC;AAFD,8CAEC"}
1
+ {"version":3,"file":"StartPlayerTurn.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/StartPlayerTurn.ts"],"names":[],"mappings":";;;AAAA,uCAAyD;AAEzD,wCAAsC;AAQtC,SAAgB,iBAAiB,CAAuD,IAA2B;IACjH,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAY,CAAC,eAAe,CAAA;AACvF,CAAC;AAFD,8CAEC"}
@@ -1,9 +1,7 @@
1
1
  import { RuleMoveCommon, RuleMoveType } from './RuleMove';
2
2
  import { MaterialMove } from '../MaterialMove';
3
- export declare type StartRule<Player extends number = number, RuleId extends number = number> = RuleMoveCommon & {
3
+ export declare type StartRule<RuleId extends number = number> = RuleMoveCommon & {
4
4
  type: typeof RuleMoveType.StartRule;
5
5
  id: RuleId;
6
- player?: Player;
7
- memory?: Record<string, any>;
8
6
  };
9
7
  export declare function isStartRule<P extends number, M extends number, L extends number>(move: MaterialMove<P, M, L>): move is StartRule<P>;
@@ -1 +1 @@
1
- {"version":3,"file":"StartRule.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/StartRule.ts"],"names":[],"mappings":";;;AAAA,uCAAyD;AAEzD,wCAAsC;AAStC,SAAgB,WAAW,CAAuD,IAA2B;IAC3G,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAY,CAAC,SAAS,CAAA;AACjF,CAAC;AAFD,kCAEC"}
1
+ {"version":3,"file":"StartRule.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/StartRule.ts"],"names":[],"mappings":";;;AAAA,uCAAyD;AAEzD,wCAAsC;AAOtC,SAAgB,WAAW,CAAuD,IAA2B;IAC3G,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAY,CAAC,SAAS,CAAA;AACjF,CAAC;AAFD,kCAEC"}
@@ -0,0 +1,8 @@
1
+ import { RuleMoveCommon, RuleMoveType } from './RuleMove';
2
+ import { MaterialMove } from '../MaterialMove';
3
+ export declare type StartSimultaneousRule<Player extends number = number, RuleId extends number = number> = RuleMoveCommon & {
4
+ type: typeof RuleMoveType.StartSimultaneousRule;
5
+ id: RuleId;
6
+ players?: Player[];
7
+ };
8
+ export declare function isStartSimultaneousRule<P extends number, M extends number, L extends number>(move: MaterialMove<P, M, L>): move is StartSimultaneousRule<P>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isStartSimultaneousRule = void 0;
4
+ var RuleMove_1 = require("./RuleMove");
5
+ var MoveKind_1 = require("../MoveKind");
6
+ function isStartSimultaneousRule(move) {
7
+ return move.kind === MoveKind_1.MoveKind.RulesMove && move.type === RuleMove_1.RuleMoveType.StartSimultaneousRule;
8
+ }
9
+ exports.isStartSimultaneousRule = isStartSimultaneousRule;
10
+ //# sourceMappingURL=StartSimultaneousRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartSimultaneousRule.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/StartSimultaneousRule.ts"],"names":[],"mappings":";;;AAAA,uCAAyD;AAEzD,wCAAsC;AAQtC,SAAgB,uBAAuB,CAAuD,IAA2B;IACvH,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAY,CAAC,qBAAqB,CAAA;AAC7F,CAAC;AAFD,0DAEC"}
@@ -0,0 +1,10 @@
1
+ import { RuleMoveCommon, RuleMoveType } from './RuleMove';
2
+ import { MaterialMove } from '../MaterialMove';
3
+ export declare type StartSimultaneousRule<Player extends number = number, RuleId extends number = number> = RuleMoveCommon & {
4
+ type: typeof RuleMoveType.StartSimultaneousRule;
5
+ id: RuleId;
6
+ players?: Player[];
7
+ memory?: Record<string, any>;
8
+ playersMemory?: Partial<Record<Player, Record<string, any>>>;
9
+ };
10
+ export declare function isStartSimultaneousRule<P extends number, M extends number, L extends number>(move: MaterialMove<P, M, L>): move is StartSimultaneousRule<P>;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isStartSimultaneousRule = void 0;
4
+ var RuleMove_1 = require("./RuleMove");
5
+ var MoveKind_1 = require("../MoveKind");
6
+ function isStartSimultaneousRule(move) {
7
+ return move.kind === MoveKind_1.MoveKind.RulesMove && move.type === RuleMove_1.RuleMoveType.StartSimultaneousRule;
8
+ }
9
+ exports.isStartSimultaneousRule = isStartSimultaneousRule;
10
+ //# sourceMappingURL=StartSimultanousRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StartSimultanousRule.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/StartSimultanousRule.ts"],"names":[],"mappings":";;;AAAA,uCAAyD;AAEzD,wCAAsC;AAUtC,SAAgB,uBAAuB,CAAuD,IAA2B;IACvH,OAAO,IAAI,CAAC,IAAI,KAAK,mBAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAY,CAAC,qBAAqB,CAAA;AAC7F,CAAC;AAFD,0DAEC"}
@@ -1,4 +1,6 @@
1
1
  export * from './EndGame';
2
+ export * from './EndPlayerTurn';
2
3
  export * from './RuleMove';
3
- export * from './StartRule';
4
4
  export * from './StartPlayerTurn';
5
+ export * from './StartRule';
6
+ export * from './StartSimultaneousRule';
@@ -15,7 +15,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./EndGame"), exports);
18
+ __exportStar(require("./EndPlayerTurn"), exports);
18
19
  __exportStar(require("./RuleMove"), exports);
19
- __exportStar(require("./StartRule"), exports);
20
20
  __exportStar(require("./StartPlayerTurn"), exports);
21
+ __exportStar(require("./StartRule"), exports);
22
+ __exportStar(require("./StartSimultaneousRule"), exports);
21
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,6CAA0B;AAC1B,8CAA2B;AAC3B,oDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/material/moves/rules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,kDAA+B;AAC/B,6CAA0B;AAC1B,oDAAiC;AACjC,8CAA2B;AAC3B,0DAAuC"}
@@ -1,10 +1,12 @@
1
1
  import { MaterialGame } from '../MaterialGame';
2
- import { CustomMove, EndGame, StartPlayerTurn, StartRule } from '../moves';
2
+ import { CustomMove, EndGame, EndPlayerTurn, StartPlayerTurn, StartRule, StartSimultaneousRule } from '../moves';
3
3
  export declare class MaterialRulesMovesBuilder<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> {
4
4
  game: MaterialGame<Player, MaterialType, LocationType>;
5
5
  constructor(game: MaterialGame<Player, MaterialType, LocationType>);
6
- startPlayerTurn<RuleId extends number = number>(id: RuleId, player: Player, memory?: Record<string, any>): StartPlayerTurn<Player, RuleId>;
7
- startRule<RuleId extends number = number>(id: RuleId, player?: Player, memory?: Record<string, any>): StartRule<Player, RuleId>;
6
+ startPlayerTurn<RuleId extends number = number>(id: RuleId, player: Player): StartPlayerTurn<Player, RuleId>;
7
+ startSimultaneousRule<RuleId extends number = number>(id: RuleId, players?: Player[]): StartSimultaneousRule<Player, RuleId>;
8
+ endPlayerTurn(player: Player): EndPlayerTurn<Player>;
9
+ startRule<RuleId extends number = number>(id: RuleId): StartRule<RuleId>;
8
10
  customMove<Type extends number = number>(type: Type, data?: any): CustomMove;
9
11
  endGame(): EndGame;
10
12
  }
@@ -6,20 +6,21 @@ var MaterialRulesMovesBuilder = /** @class */ (function () {
6
6
  function MaterialRulesMovesBuilder(game) {
7
7
  this.game = game;
8
8
  }
9
- MaterialRulesMovesBuilder.prototype.startPlayerTurn = function (id, player, memory) {
10
- var move = { kind: moves_1.MoveKind.RulesMove, type: moves_1.RuleMoveType.StartPlayerTurn, id: id, player: player };
11
- if (memory)
12
- move.memory = memory;
13
- return move;
9
+ MaterialRulesMovesBuilder.prototype.startPlayerTurn = function (id, player) {
10
+ return { kind: moves_1.MoveKind.RulesMove, type: moves_1.RuleMoveType.StartPlayerTurn, id: id, player: player };
14
11
  };
15
- MaterialRulesMovesBuilder.prototype.startRule = function (id, player, memory) {
16
- var move = { kind: moves_1.MoveKind.RulesMove, type: moves_1.RuleMoveType.StartRule, id: id };
17
- if (player)
18
- move.player = player;
19
- if (memory)
20
- move.memory = memory;
12
+ MaterialRulesMovesBuilder.prototype.startSimultaneousRule = function (id, players) {
13
+ var move = { kind: moves_1.MoveKind.RulesMove, type: moves_1.RuleMoveType.StartSimultaneousRule, id: id };
14
+ if (players)
15
+ move.players = players;
21
16
  return move;
22
17
  };
18
+ MaterialRulesMovesBuilder.prototype.endPlayerTurn = function (player) {
19
+ return { kind: moves_1.MoveKind.RulesMove, type: moves_1.RuleMoveType.EndPlayerTurn, player: player };
20
+ };
21
+ MaterialRulesMovesBuilder.prototype.startRule = function (id) {
22
+ return { kind: moves_1.MoveKind.RulesMove, type: moves_1.RuleMoveType.StartRule, id: id };
23
+ };
23
24
  MaterialRulesMovesBuilder.prototype.customMove = function (type, data) {
24
25
  var move = { kind: moves_1.MoveKind.CustomMove, type: type };
25
26
  if (data)
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialRulesMovesBuilder.js","sourceRoot":"","sources":["../../../src/material/rules/MaterialRulesMovesBuilder.ts"],"names":[],"mappings":";;;AACA,kCAAkG;AAElG;IAKE,mCAAY,IAAsD;QAChE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,mDAAe,GAAf,UAAgD,EAAU,EAAE,MAAc,EAAE,MAA4B;QACtG,IAAM,IAAI,GAAoC,EAAE,IAAI,EAAE,gBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAY,CAAC,eAAe,EAAE,EAAE,IAAA,EAAE,MAAM,QAAA,EAAE,CAAA;QAC1H,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,6CAAS,GAAT,UAA0C,EAAU,EAAE,MAAe,EAAE,MAA4B;QACjG,IAAM,IAAI,GAA8B,EAAE,IAAI,EAAE,gBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAY,CAAC,SAAS,EAAE,EAAE,IAAA,EAAE,CAAA;QACtG,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAChC,IAAI,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAChC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,8CAAU,GAAV,UAAyC,IAAU,EAAE,IAAU;QAC7D,IAAM,IAAI,GAAe,EAAE,IAAI,EAAE,gBAAQ,CAAC,UAAU,EAAE,IAAI,MAAA,EAAE,CAAA;QAC5D,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2CAAO,GAAP;QACE,OAAO,EAAE,IAAI,EAAE,gBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAY,CAAC,OAAO,EAAE,CAAA;IACjE,CAAC;IACH,gCAAC;AAAD,CAAC,AA/BD,IA+BC;AA/BY,8DAAyB"}
1
+ {"version":3,"file":"MaterialRulesMovesBuilder.js","sourceRoot":"","sources":["../../../src/material/rules/MaterialRulesMovesBuilder.ts"],"names":[],"mappings":";;;AACA,kCAAwI;AAExI;IAKE,mCAAY,IAAsD;QAChE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,mDAAe,GAAf,UAAgD,EAAU,EAAE,MAAc;QACxE,OAAO,EAAE,IAAI,EAAE,gBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAY,CAAC,eAAe,EAAE,EAAE,IAAA,EAAE,MAAM,QAAA,EAAE,CAAA;IACrF,CAAC;IAED,yDAAqB,GAArB,UAAsD,EAAU,EAAE,OAAkB;QAClF,IAAM,IAAI,GAA0C,EAAE,IAAI,EAAE,gBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAY,CAAC,qBAAqB,EAAE,EAAE,IAAA,EAAE,CAAA;QAC9H,IAAI,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,iDAAa,GAAb,UAAc,MAAc;QAC1B,OAAO,EAAE,IAAI,EAAE,gBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAY,CAAC,aAAa,EAAE,MAAM,QAAA,EAAE,CAAA;IAC/E,CAAC;IAED,6CAAS,GAAT,UAA0C,EAAU;QAClD,OAAO,EAAE,IAAI,EAAE,gBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAY,CAAC,SAAS,EAAE,EAAE,IAAA,EAAE,CAAA;IACvE,CAAC;IAED,8CAAU,GAAV,UAAyC,IAAU,EAAE,IAAU;QAC7D,IAAM,IAAI,GAAe,EAAE,IAAI,EAAE,gBAAQ,CAAC,UAAU,EAAE,IAAI,MAAA,EAAE,CAAA;QAC5D,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,2CAAO,GAAP;QACE,OAAO,EAAE,IAAI,EAAE,gBAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,oBAAY,CAAC,OAAO,EAAE,CAAA;IACjE,CAAC;IACH,gCAAC;AAAD,CAAC,AApCD,IAoCC;AApCY,8DAAyB"}
@@ -4,6 +4,7 @@ import { CustomMove, ItemMove, MaterialMove, RuleMove } from '../moves';
4
4
  import { Material } from '../items';
5
5
  import { MaterialRulesMovesBuilder } from './MaterialRulesMovesBuilder';
6
6
  import { RuleStep } from './RuleStep';
7
+ import { GameMemory, PlayerMemory } from '../memory';
7
8
  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
9
  material(type: MaterialType): Material<Player, MaterialType, LocationType>;
9
10
  beforeItemMove(_move: ItemMove<Player, MaterialType, LocationType>): MaterialMove<Player, MaterialType, LocationType>[];
@@ -12,10 +13,10 @@ export declare abstract class MaterialRulesPart<Player extends number = number,
12
13
  onRuleEnd<RuleId extends number>(_move: RuleMove<Player, RuleId>): MaterialMove<Player, MaterialType, LocationType>[];
13
14
  onCustomMove(_move: CustomMove): MaterialMove<Player, MaterialType, LocationType>[];
14
15
  rules(): MaterialRulesMovesBuilder<Player, MaterialType, LocationType>;
15
- getMemory<T>(player?: Player): T;
16
- memorize<T extends Record<string, any>>(memory?: Partial<T>, player?: Player): void;
17
- getGameMemory<T>(player?: Player): T;
18
- memorizeOnGame<T extends Record<string, any>>(memory?: Partial<T>, player?: Player): void;
16
+ protected getMemory(player?: Player): GameMemory<Player> | PlayerMemory<Player>;
17
+ memorize<T = any>(key: keyof any, value: T | ((lastValue: T) => T), player?: Player): void;
18
+ remind<T = any>(key: keyof any, player?: Player): T;
19
+ forget(key: keyof any, player?: Player): void;
19
20
  }
20
21
  export interface MaterialRulesPartCreator<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> {
21
22
  new (game: MaterialGame<Player, MaterialType, LocationType>, material: (type: MaterialType) => Material<Player, MaterialType, LocationType>): MaterialRulesPart<Player, MaterialType, LocationType>;
@@ -14,22 +14,12 @@ 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 __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
17
  Object.defineProperty(exports, "__esModule", { value: true });
29
18
  exports.MaterialRulesPart = void 0;
30
19
  var Rules_1 = require("../../Rules");
31
20
  var items_1 = require("../items");
32
21
  var MaterialRulesMovesBuilder_1 = require("./MaterialRulesMovesBuilder");
22
+ var memory_1 = require("../memory");
33
23
  var MaterialRulesPart = /** @class */ (function (_super) {
34
24
  __extends(MaterialRulesPart, _super);
35
25
  function MaterialRulesPart() {
@@ -58,48 +48,16 @@ var MaterialRulesPart = /** @class */ (function (_super) {
58
48
  return new MaterialRulesMovesBuilder_1.MaterialRulesMovesBuilder(this.game);
59
49
  };
60
50
  MaterialRulesPart.prototype.getMemory = function (player) {
61
- var _a, _b, _c;
62
- if (player !== undefined) {
63
- return ((_b = (_a = this.game.rule.playersMemory) === null || _a === void 0 ? void 0 : _a[player]) !== null && _b !== void 0 ? _b : {});
64
- }
65
- else {
66
- return ((_c = this.game.rule.memory) !== null && _c !== void 0 ? _c : {});
67
- }
51
+ return player === undefined ? new memory_1.GameMemory(this.game) : new memory_1.PlayerMemory(this.game, player);
68
52
  };
69
- MaterialRulesPart.prototype.memorize = function (memory, player) {
70
- var _a, _b;
71
- if (Object.isFrozen(this.game))
72
- return;
73
- if (player !== undefined) {
74
- if (!this.game.rule.playersMemory)
75
- this.game.rule.playersMemory = {};
76
- this.game.rule.playersMemory[player] = __assign(__assign({}, (_b = (_a = this.game.rule.playersMemory) === null || _a === void 0 ? void 0 : _a[player]) !== null && _b !== void 0 ? _b : {}), memory);
77
- }
78
- else {
79
- this.game.rule.memory = __assign(__assign({}, this.game.rule.memory), memory);
80
- }
53
+ MaterialRulesPart.prototype.memorize = function (key, value, player) {
54
+ this.getMemory(player).memorize(key, value);
81
55
  };
82
- MaterialRulesPart.prototype.getGameMemory = function (player) {
83
- var _a, _b, _c;
84
- if (player !== undefined) {
85
- return ((_b = (_a = this.game.playersMemory) === null || _a === void 0 ? void 0 : _a[player]) !== null && _b !== void 0 ? _b : {});
86
- }
87
- else {
88
- return ((_c = this.game.memory) !== null && _c !== void 0 ? _c : {});
89
- }
56
+ MaterialRulesPart.prototype.remind = function (key, player) {
57
+ return this.getMemory(player).remind(key);
90
58
  };
91
- MaterialRulesPart.prototype.memorizeOnGame = function (memory, player) {
92
- var _a;
93
- if (Object.isFrozen(this.game))
94
- return;
95
- if (player !== undefined) {
96
- if (!this.game.playersMemory)
97
- this.game.playersMemory = {};
98
- this.game.playersMemory[player] = __assign(__assign({}, (_a = this.game.playersMemory[player]) !== null && _a !== void 0 ? _a : {}), memory);
99
- }
100
- else {
101
- this.game.memory = __assign(__assign({}, this.game.memory), memory);
102
- }
59
+ MaterialRulesPart.prototype.forget = function (key, player) {
60
+ this.getMemory(player).forget(key);
103
61
  };
104
62
  return MaterialRulesPart;
105
63
  }(Rules_1.Rules));
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialRulesPart.js","sourceRoot":"","sources":["../../../src/material/rules/MaterialRulesPart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MaterialRulesPart.js","sourceRoot":"","sources":["../../../src/material/rules/MaterialRulesPart.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,qCAAmC;AAEnC,kCAAmC;AACnC,yEAAuE;AAEvE,oCAAoD;AAEpD;IACU,qCAAiH;IAD3H;;IA8CA,CAAC;IA3CC,oCAAQ,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;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;IAES,qCAAS,GAAnB,UAAoB,MAAe;QACjC,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,mBAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,qBAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC/F,CAAC;IAED,oCAAQ,GAAR,UAAkB,GAAc,EAAE,KAAgC,EAAE,MAAe;QACjF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,kCAAM,GAAN,UAAgB,GAAc,EAAE,MAAe;QAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC3C,CAAC;IAED,kCAAM,GAAN,UAAO,GAAc,EAAE,MAAe;QACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IACH,wBAAC;AAAD,CAAC,AA9CD,CACU,aAAK,GA6Cd;AA9CqB,8CAAiB"}
@@ -4,10 +4,6 @@ export declare abstract class PlayerTurnRule<Player extends number = number, Mat
4
4
  get player(): Player;
5
5
  get nextPlayer(): Player;
6
6
  getActivePlayer(): Player;
7
- getPlayerMemory<T>(): T;
8
- getPlayerGameMemory<T>(): T;
9
- memorizePlayerOnGame<T extends Record<string, any>>(memory?: Partial<T>): void;
10
- initializeMoves(): MaterialMove<Player, MaterialType, LocationType>[];
11
7
  getLegalMoves(player: Player): MaterialMove<Player, MaterialType, LocationType>[];
12
8
  abstract getPlayerMoves(): MaterialMove<Player, MaterialType, LocationType>[];
13
9
  }
@@ -39,18 +39,6 @@ var PlayerTurnRule = /** @class */ (function (_super) {
39
39
  PlayerTurnRule.prototype.getActivePlayer = function () {
40
40
  return this.player;
41
41
  };
42
- PlayerTurnRule.prototype.getPlayerMemory = function () {
43
- return _super.prototype.getMemory.call(this, this.player);
44
- };
45
- PlayerTurnRule.prototype.getPlayerGameMemory = function () {
46
- return _super.prototype.getGameMemory.call(this, this.player);
47
- };
48
- PlayerTurnRule.prototype.memorizePlayerOnGame = function (memory) {
49
- return _super.prototype.memorizeOnGame.call(this, memory, this.player);
50
- };
51
- PlayerTurnRule.prototype.initializeMoves = function () {
52
- return [];
53
- };
54
42
  PlayerTurnRule.prototype.getLegalMoves = function (player) {
55
43
  if (player !== this.getActivePlayer())
56
44
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"PlayerTurnRule.js","sourceRoot":"","sources":["../../../src/material/rules/PlayerTurnRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yDAAuD;AAGvD;IACU,kCAAqD;IAD/D;;IAqCA,CAAC;IAlCC,sBAAI,kCAAM;aAAV;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,MAAO,CAAA;QAChC,CAAC;;;OAAA;IAED,sBAAI,sCAAU;aAAd;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACnG,CAAC;;;OAAA;IAED,wCAAe,GAAf;QACE,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,wCAAe,GAAf;QACE,OAAO,iBAAM,SAAS,YAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrC,CAAC;IAED,4CAAmB,GAAnB;QACE,OAAO,iBAAM,aAAa,YAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;IAED,6CAAoB,GAApB,UAAoD,MAAmB;QACrE,OAAO,iBAAM,cAAc,YAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IAClD,CAAC;IAED,wCAAe,GAAf;QACE,OAAO,EAAE,CAAA;IACX,CAAC;IAED,sCAAa,GAAb,UAAc,MAAc;QAC1B,IAAI,MAAM,KAAK,IAAI,CAAC,eAAe,EAAE;YAAE,OAAO,EAAE,CAAA;QAChD,OAAO,IAAI,CAAC,cAAc,EAAE,CAAA;IAC9B,CAAC;IAGH,qBAAC;AAAD,CAAC,AArCD,CACU,qCAAiB,GAoC1B;AArCqB,wCAAc"}
1
+ {"version":3,"file":"PlayerTurnRule.js","sourceRoot":"","sources":["../../../src/material/rules/PlayerTurnRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yDAAuD;AAGvD;IACU,kCAAqD;IAD/D;;IAqBA,CAAC;IAlBC,sBAAI,kCAAM;aAAV;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,MAAO,CAAA;QAChC,CAAC;;;OAAA;IAED,sBAAI,sCAAU;aAAd;YACE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACnG,CAAC;;;OAAA;IAED,wCAAe,GAAf;QACE,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,sCAAa,GAAb,UAAc,MAAc;QAC1B,IAAI,MAAM,KAAK,IAAI,CAAC,eAAe,EAAE;YAAE,OAAO,EAAE,CAAA;QAChD,OAAO,IAAI,CAAC,cAAc,EAAE,CAAA;IAC9B,CAAC;IAGH,qBAAC;AAAD,CAAC,AArBD,CACU,qCAAiB,GAoB1B;AArBqB,wCAAc"}
@@ -1,6 +1,5 @@
1
1
  export declare type RuleStep<Player extends number = number, RuleId extends number = number> = {
2
2
  id: RuleId;
3
3
  player?: Player;
4
- memory?: Record<string, any>;
5
- playersMemory?: Partial<Record<Player, Record<string, any>>>;
4
+ players?: Player[];
6
5
  };
@@ -0,0 +1,7 @@
1
+ import { MaterialRulesPart } from './MaterialRulesPart';
2
+ import { MaterialMove } from '../moves';
3
+ export declare abstract class SimultaneousRule<Player extends number = number, MaterialType extends number = number, LocationType extends number = number> extends MaterialRulesPart<Player, MaterialType, LocationType> {
4
+ isTurnToPlay(player: Player): boolean;
5
+ getAutomaticMoves(): MaterialMove<Player, MaterialType, LocationType>[];
6
+ abstract getMovesAfterPlayersDone(): MaterialMove<Player, MaterialType, LocationType>[];
7
+ }
@@ -0,0 +1,39 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.SimultaneousRule = void 0;
19
+ var MaterialRulesPart_1 = require("./MaterialRulesPart");
20
+ var SimultaneousRule = /** @class */ (function (_super) {
21
+ __extends(SimultaneousRule, _super);
22
+ function SimultaneousRule() {
23
+ return _super !== null && _super.apply(this, arguments) || this;
24
+ }
25
+ SimultaneousRule.prototype.isTurnToPlay = function (player) {
26
+ var _a, _b, _c;
27
+ return (_c = (_b = (_a = this.game.rule) === null || _a === void 0 ? void 0 : _a.players) === null || _b === void 0 ? void 0 : _b.includes(player)) !== null && _c !== void 0 ? _c : false;
28
+ };
29
+ SimultaneousRule.prototype.getAutomaticMoves = function () {
30
+ var _a, _b;
31
+ if (!((_b = (_a = this.game.rule) === null || _a === void 0 ? void 0 : _a.players) === null || _b === void 0 ? void 0 : _b.length)) {
32
+ return this.getMovesAfterPlayersDone();
33
+ }
34
+ return [];
35
+ };
36
+ return SimultaneousRule;
37
+ }(MaterialRulesPart_1.MaterialRulesPart));
38
+ exports.SimultaneousRule = SimultaneousRule;
39
+ //# sourceMappingURL=SimultaneousRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimultaneousRule.js","sourceRoot":"","sources":["../../../src/material/rules/SimultaneousRule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,yDAAuD;AAGvD;IACU,oCAAqD;IAD/D;;IAeA,CAAC;IAZC,uCAAY,GAAZ,UAAa,MAAc;;QACzB,OAAO,MAAA,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,0CAAE,OAAO,0CAAE,QAAQ,CAAC,MAAM,CAAC,mCAAI,KAAK,CAAA;IAC3D,CAAC;IAED,4CAAiB,GAAjB;;QACE,IAAI,CAAC,CAAA,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,IAAI,0CAAE,OAAO,0CAAE,MAAM,CAAA,EAAE;YACpC,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAA;SACvC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAGH,uBAAC;AAAD,CAAC,AAfD,CACU,qCAAiB,GAc1B;AAfqB,4CAAgB"}
@@ -1,3 +1,5 @@
1
- export * from './RuleStep';
1
+ export * from './MaterialRulesMovesBuilder';
2
2
  export * from './MaterialRulesPart';
3
3
  export * from './PlayerTurnRule';
4
+ export * from './RuleStep';
5
+ export * from './SimultaneousRule';
@@ -14,7 +14,9 @@ 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("./RuleStep"), exports);
17
+ __exportStar(require("./MaterialRulesMovesBuilder"), exports);
18
18
  __exportStar(require("./MaterialRulesPart"), exports);
19
19
  __exportStar(require("./PlayerTurnRule"), exports);
20
+ __exportStar(require("./RuleStep"), exports);
21
+ __exportStar(require("./SimultaneousRule"), exports);
20
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/material/rules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,sDAAmC;AACnC,mDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/material/rules/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA2C;AAC3C,sDAAmC;AACnC,mDAAgC;AAChC,6CAA0B;AAC1B,qDAAkC"}