@gamepark/odin 0.0.3 → 0.0.5

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.
@@ -0,0 +1,6 @@
1
+ import { MaterialMove, PlayerTurnRule } from '@gamepark/rules-api';
2
+ export declare class ChangePlayerRule extends PlayerTurnRule {
3
+ onRuleStart(): MaterialMove<number, number, number, number>[];
4
+ get currentTable(): import("@gamepark/rules-api").Material<number, number, number>;
5
+ get nextTable(): import("@gamepark/rules-api").Material<number, number, number>;
6
+ }
@@ -0,0 +1,62 @@
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.ChangePlayerRule = void 0;
19
+ var rules_api_1 = require("@gamepark/rules-api");
20
+ var LocationType_1 = require("./material/LocationType");
21
+ var MaterialType_1 = require("./material/MaterialType");
22
+ var RuleId_1 = require("./rules/RuleId");
23
+ var ChangePlayerRule = (function (_super) {
24
+ __extends(ChangePlayerRule, _super);
25
+ function ChangePlayerRule() {
26
+ return _super !== null && _super.apply(this, arguments) || this;
27
+ }
28
+ ChangePlayerRule.prototype.onRuleStart = function () {
29
+ var moves = [];
30
+ var currentTable = this.currentTable;
31
+ if (currentTable.length) {
32
+ moves.push(this.currentTable.moveItemsAtOnce({
33
+ type: LocationType_1.LocationType.Discard
34
+ }));
35
+ }
36
+ var nextTable = this.nextTable;
37
+ if (nextTable.length) {
38
+ moves.push(nextTable.moveItemsAtOnce({
39
+ type: LocationType_1.LocationType.MiddleOfTable,
40
+ id: LocationType_1.MiddleOfTable.Current
41
+ }));
42
+ }
43
+ moves.push(this.startPlayerTurn(RuleId_1.RuleId.PlayCards, this.nextPlayer));
44
+ return moves;
45
+ };
46
+ Object.defineProperty(ChangePlayerRule.prototype, "currentTable", {
47
+ get: function () {
48
+ return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.MiddleOfTable).locationId(LocationType_1.MiddleOfTable.Current);
49
+ },
50
+ enumerable: false,
51
+ configurable: true
52
+ });
53
+ Object.defineProperty(ChangePlayerRule.prototype, "nextTable", {
54
+ get: function () {
55
+ return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.MiddleOfTable).locationId(LocationType_1.MiddleOfTable.Next);
56
+ },
57
+ enumerable: false,
58
+ configurable: true
59
+ });
60
+ return ChangePlayerRule;
61
+ }(rules_api_1.PlayerTurnRule));
62
+ exports.ChangePlayerRule = ChangePlayerRule;
@@ -1,4 +1,5 @@
1
1
  import { CompetitiveScore, CustomMove, FillGapStrategy, MaterialGame, MaterialMove, PlayMoveContext, PositiveSequenceStrategy, SecretMaterialRules, TimeLimit } from '@gamepark/rules-api';
2
+ import { ChangePlayerRule } from './ChangePlayerRule';
2
3
  import { LocationType } from './material/LocationType';
3
4
  import { MaterialType } from './material/MaterialType';
4
5
  import { PlayerId } from './PlayerId';
@@ -11,6 +12,7 @@ export declare class OdinRules extends SecretMaterialRules<PlayerId, MaterialTyp
11
12
  1: typeof PlayCardsRule;
12
13
  4: typeof DealCardsRule;
13
14
  2: typeof PickCardRule;
15
+ 5: typeof ChangePlayerRule;
14
16
  3: typeof EndOfRoundRule;
15
17
  };
16
18
  hidingStrategies: {
package/dist/OdinRules.js CHANGED
@@ -17,6 +17,7 @@ var __extends = (this && this.__extends) || (function () {
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.OdinRules = void 0;
19
19
  var rules_api_1 = require("@gamepark/rules-api");
20
+ var ChangePlayerRule_1 = require("./ChangePlayerRule");
20
21
  var LocationType_1 = require("./material/LocationType");
21
22
  var MaterialType_1 = require("./material/MaterialType");
22
23
  var CustomMoveType_1 = require("./rules/CustomMoveType");
@@ -36,6 +37,7 @@ var OdinRules = (function (_super) {
36
37
  _a[RuleId_1.RuleId.PlayCards] = PlayCardsRule_1.PlayCardsRule,
37
38
  _a[RuleId_1.RuleId.DealCards] = DealCardsRule_1.DealCardsRule,
38
39
  _a[RuleId_1.RuleId.PickCard] = PickCardRule_1.PickCardRule,
40
+ _a[RuleId_1.RuleId.ChangePlayer] = ChangePlayerRule_1.ChangePlayerRule,
39
41
  _a[RuleId_1.RuleId.EndOfRound] = EndOfRoundRule_1.EndOfRoundRule,
40
42
  _a);
41
43
  _this.hidingStrategies = (_b = {},
@@ -1,5 +1,6 @@
1
1
  export declare enum CustomMoveType {
2
2
  Pass = 1,
3
3
  TurnTempo = 2,
4
- SortHand = 3
4
+ SortHand = 3,
5
+ PlaceAllCards = 4
5
6
  }
@@ -6,4 +6,5 @@ var CustomMoveType;
6
6
  CustomMoveType[CustomMoveType["Pass"] = 1] = "Pass";
7
7
  CustomMoveType[CustomMoveType["TurnTempo"] = 2] = "TurnTempo";
8
8
  CustomMoveType[CustomMoveType["SortHand"] = 3] = "SortHand";
9
+ CustomMoveType[CustomMoveType["PlaceAllCards"] = 4] = "PlaceAllCards";
9
10
  })(CustomMoveType = exports.CustomMoveType || (exports.CustomMoveType = {}));
@@ -59,6 +59,7 @@ var rules_api_1 = require("@gamepark/rules-api");
59
59
  var sum_1 = __importDefault(require("lodash/sum"));
60
60
  var LocationType_1 = require("../material/LocationType");
61
61
  var MaterialType_1 = require("../material/MaterialType");
62
+ var CustomMoveType_1 = require("./CustomMoveType");
62
63
  var Memory_1 = require("./Memory");
63
64
  var RuleId_1 = require("./RuleId");
64
65
  var EndOfRoundRule = (function (_super) {
@@ -67,8 +68,9 @@ var EndOfRoundRule = (function (_super) {
67
68
  return _super !== null && _super.apply(this, arguments) || this;
68
69
  }
69
70
  EndOfRoundRule.prototype.onRuleStart = function () {
70
- var moves = this.onRoundEnd();
71
- if (!moves.length) {
71
+ var moves = [this.customMove(CustomMoveType_1.CustomMoveType.TurnTempo, true)];
72
+ moves.push.apply(moves, __spreadArray([], __read(this.onRoundEnd()), false));
73
+ if (moves.length === 1) {
72
74
  moves.push.apply(moves, __spreadArray([], __read(this.groupToDeckMove), false));
73
75
  }
74
76
  return moves;
@@ -1,11 +1,11 @@
1
1
  import { MaterialMove, MoveItem } from '@gamepark/rules-api';
2
2
  import { BasePlayerTurn } from './BasePlayerTurn';
3
+ import { RuleId } from './RuleId';
3
4
  export declare class PickCardRule extends BasePlayerTurn {
4
5
  onRuleStart(): MaterialMove<number, number, number, number>[];
5
6
  get isEndOfRound(): boolean;
6
7
  getPlayerMoves(): MaterialMove[];
7
- afterItemMove(move: MoveItem): MaterialMove<number, number, number, number>[];
8
- goToNextRule(): MaterialMove<number, number, number, number>[];
8
+ afterItemMove(move: MoveItem): import("@gamepark/rules-api").StartRule<RuleId.ChangePlayer>[];
9
+ goToNextRule(): import("@gamepark/rules-api").StartRule<RuleId.ChangePlayer>[];
9
10
  get currentTable(): import("@gamepark/rules-api").Material<number, number, number>;
10
- get nextTable(): import("@gamepark/rules-api").Material<number, number, number>;
11
11
  }
@@ -54,7 +54,7 @@ var PickCardRule = (function (_super) {
54
54
  }
55
55
  PickCardRule.prototype.onRuleStart = function () {
56
56
  if (this.isEndOfRound) {
57
- return [this.customMove(CustomMoveType_1.CustomMoveType.TurnTempo, true), this.startRule(RuleId_1.RuleId.EndOfRound)];
57
+ return [this.startRule(RuleId_1.RuleId.EndOfRound)];
58
58
  }
59
59
  var moves = [this.customMove(CustomMoveType_1.CustomMoveType.TurnTempo)];
60
60
  if (this.getPlayerMoves().length)
@@ -81,21 +81,7 @@ var PickCardRule = (function (_super) {
81
81
  return this.goToNextRule();
82
82
  };
83
83
  PickCardRule.prototype.goToNextRule = function () {
84
- var moves = [];
85
- var currentTable = this.currentTable;
86
- if (currentTable.length) {
87
- moves.push(this.currentTable.moveItemsAtOnce({
88
- type: LocationType_1.LocationType.Discard
89
- }));
90
- }
91
- var nextTable = this.nextTable;
92
- if (nextTable.length) {
93
- moves.push(this.nextTable.moveItemsAtOnce({
94
- id: LocationType_1.MiddleOfTable.Current
95
- }));
96
- }
97
- moves.push(this.startPlayerTurn(RuleId_1.RuleId.PlayCards, this.nextPlayer));
98
- return moves;
84
+ return [this.startRule(RuleId_1.RuleId.ChangePlayer)];
99
85
  };
100
86
  Object.defineProperty(PickCardRule.prototype, "currentTable", {
101
87
  get: function () {
@@ -104,13 +90,6 @@ var PickCardRule = (function (_super) {
104
90
  enumerable: false,
105
91
  configurable: true
106
92
  });
107
- Object.defineProperty(PickCardRule.prototype, "nextTable", {
108
- get: function () {
109
- return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.MiddleOfTable).locationId(LocationType_1.MiddleOfTable.Next);
110
- },
111
- enumerable: false,
112
- configurable: true
113
- });
114
93
  return PickCardRule;
115
94
  }(BasePlayerTurn_1.BasePlayerTurn));
116
95
  exports.PickCardRule = PickCardRule;
@@ -1,15 +1,15 @@
1
- import { CustomMove, ItemMove, MaterialItem, MaterialMove } from '@gamepark/rules-api';
1
+ import { CustomMove, ItemMove, MaterialMove } from '@gamepark/rules-api';
2
2
  import { Card } from '../material/Card';
3
3
  import { BasePlayerTurn } from './BasePlayerTurn';
4
4
  export declare class PlayCardsRule extends BasePlayerTurn {
5
5
  getPlayerMoves(): MaterialMove<number, number, number, number>[];
6
- get sort(): ((item: MaterialItem) => number)[];
7
6
  get tableValue(): number;
8
7
  onCustomMove(move: CustomMove): MaterialMove<number, number, number, number>[];
9
8
  afterItemMove(move: ItemMove): MaterialMove<number, number, number, number>[];
10
9
  goToNextPlayer(): MaterialMove<number, number, number, number>[];
11
10
  get firstPlayer(): number;
12
11
  get table(): import("@gamepark/rules-api").Material<number, number, number>;
12
+ get nextTable(): import("@gamepark/rules-api").Material<number, number, number>;
13
13
  get playableCards(): import("@gamepark/rules-api").Material<number, number, number>;
14
14
  get hand(): import("@gamepark/rules-api").Material<number, number, number>;
15
15
  kCombinations<T>(arr: T[], k: number): T[][];
@@ -65,6 +65,7 @@ var LocationType_1 = require("../material/LocationType");
65
65
  var MaterialType_1 = require("../material/MaterialType");
66
66
  var BasePlayerTurn_1 = require("./BasePlayerTurn");
67
67
  var CustomMoveType_1 = require("./CustomMoveType");
68
+ var SortHelper_1 = require("./helper/SortHelper");
68
69
  var Memory_1 = require("./Memory");
69
70
  var RuleId_1 = require("./RuleId");
70
71
  var PlayCardsRule = (function (_super) {
@@ -73,19 +74,19 @@ var PlayCardsRule = (function (_super) {
73
74
  return _super !== null && _super.apply(this, arguments) || this;
74
75
  }
75
76
  PlayCardsRule.prototype.getPlayerMoves = function () {
76
- var _this = this;
77
77
  var playableCards = this.playableCards;
78
78
  var table = this.table;
79
79
  var tableSize = table.length;
80
80
  var moves = [];
81
81
  var combinations = this.getPlayableCombinations(playableCards.getItems().map(function (item) { return item.id; }), tableSize, this.tableValue);
82
82
  var allHandCombination = this.getPlayableCombinations(playableCards.getItems().map(function (item) { return item.id; }), playableCards.length, this.tableValue);
83
+ var sortHelper = new SortHelper_1.SortHelper(this.game);
83
84
  if (allHandCombination.length) {
84
85
  moves.push.apply(moves, __spreadArray([], __read(allHandCombination.map(function (c) {
85
86
  var _a;
86
87
  return (_a = playableCards
87
88
  .id(function (id) { return c.includes(id); }))
88
- .sort.apply(_a, __spreadArray([], __read(_this.sort), false)).moveItemsAtOnce({
89
+ .sort.apply(_a, __spreadArray([], __read(sortHelper.sortByValue), false)).moveItemsAtOnce({
89
90
  type: LocationType_1.LocationType.MiddleOfTable,
90
91
  id: LocationType_1.MiddleOfTable.Next
91
92
  });
@@ -95,7 +96,7 @@ var PlayCardsRule = (function (_super) {
95
96
  var _a;
96
97
  return (_a = playableCards
97
98
  .id(function (id) { return c.includes(id); }))
98
- .sort.apply(_a, __spreadArray([], __read(_this.sort), false)).moveItemsAtOnce({
99
+ .sort.apply(_a, __spreadArray([], __read(sortHelper.sortByValue), false)).moveItemsAtOnce({
99
100
  type: LocationType_1.LocationType.MiddleOfTable,
100
101
  id: LocationType_1.MiddleOfTable.Next
101
102
  });
@@ -105,13 +106,6 @@ var PlayCardsRule = (function (_super) {
105
106
  }
106
107
  return moves;
107
108
  };
108
- Object.defineProperty(PlayCardsRule.prototype, "sort", {
109
- get: function () {
110
- return [function (item) { return -(0, Card_1.getCardValue)(item.id); }, function (item) { return (0, Card_1.getCardColor)(item.id); }];
111
- },
112
- enumerable: false,
113
- configurable: true
114
- });
115
109
  Object.defineProperty(PlayCardsRule.prototype, "tableValue", {
116
110
  get: function () {
117
111
  var table = this.table;
@@ -132,6 +126,9 @@ var PlayCardsRule = (function (_super) {
132
126
  return [];
133
127
  var moves = [];
134
128
  this.memorize(Memory_1.Memory.LastPlayerThatPlay, this.player);
129
+ if (this.hand.length > 0) {
130
+ moves.push(this.customMove(CustomMoveType_1.CustomMoveType.TurnTempo));
131
+ }
135
132
  moves.push(this.startRule(RuleId_1.RuleId.PickCard));
136
133
  return moves;
137
134
  };
@@ -169,6 +166,13 @@ var PlayCardsRule = (function (_super) {
169
166
  enumerable: false,
170
167
  configurable: true
171
168
  });
169
+ Object.defineProperty(PlayCardsRule.prototype, "nextTable", {
170
+ get: function () {
171
+ return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.MiddleOfTable).locationId(LocationType_1.MiddleOfTable.Next);
172
+ },
173
+ enumerable: false,
174
+ configurable: true
175
+ });
172
176
  Object.defineProperty(PlayCardsRule.prototype, "playableCards", {
173
177
  get: function () {
174
178
  var _this = this;
@@ -2,5 +2,6 @@ export declare enum RuleId {
2
2
  PlayCards = 1,
3
3
  PickCard = 2,
4
4
  EndOfRound = 3,
5
- DealCards = 4
5
+ DealCards = 4,
6
+ ChangePlayer = 5
6
7
  }
@@ -7,4 +7,5 @@ var RuleId;
7
7
  RuleId[RuleId["PickCard"] = 2] = "PickCard";
8
8
  RuleId[RuleId["EndOfRound"] = 3] = "EndOfRound";
9
9
  RuleId[RuleId["DealCards"] = 4] = "DealCards";
10
+ RuleId[RuleId["ChangePlayer"] = 5] = "ChangePlayer";
10
11
  })(RuleId = exports.RuleId || (exports.RuleId = {}));
@@ -0,0 +1,4 @@
1
+ import { MaterialItem, MaterialRulesPart } from '@gamepark/rules-api';
2
+ export declare class SortHelper extends MaterialRulesPart {
3
+ get sortByValue(): ((item: MaterialItem) => number)[];
4
+ }
@@ -0,0 +1,35 @@
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.SortHelper = void 0;
19
+ var rules_api_1 = require("@gamepark/rules-api");
20
+ var Card_1 = require("../../material/Card");
21
+ var SortHelper = (function (_super) {
22
+ __extends(SortHelper, _super);
23
+ function SortHelper() {
24
+ return _super !== null && _super.apply(this, arguments) || this;
25
+ }
26
+ Object.defineProperty(SortHelper.prototype, "sortByValue", {
27
+ get: function () {
28
+ return [function (item) { return -(0, Card_1.getCardValue)(item.id); }, function (item) { return (0, Card_1.getCardColor)(item.id); }];
29
+ },
30
+ enumerable: false,
31
+ configurable: true
32
+ });
33
+ return SortHelper;
34
+ }(rules_api_1.MaterialRulesPart));
35
+ exports.SortHelper = SortHelper;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/odin",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "The rules of Odin adapted for Game Park",
5
5
  "sideEffects": false,
6
6
  "main": "dist/index.js",
@@ -24,10 +24,10 @@
24
24
  "lodash": ">=4.17"
25
25
  },
26
26
  "devDependencies": {
27
- "@gamepark/rules-api": "~6.37.1",
27
+ "@gamepark/rules-api": "~6.37.8",
28
28
  "@types/lodash": "^4.17.7",
29
29
  "i18next": "^22.0.3",
30
30
  "lodash": "^4.17.21"
31
31
  },
32
- "gitHead": "3be3270b6e561e6289b862d21400ea93358b5459"
32
+ "gitHead": "511bef61747cf286673e33a1b5d89db59b2c9795"
33
33
  }