@gamepark/odin 0.0.4 → 0.0.6

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.
@@ -2,6 +2,7 @@ import { CompetitiveScore, CustomMove, FillGapStrategy, MaterialGame, MaterialMo
2
2
  import { LocationType } from './material/LocationType';
3
3
  import { MaterialType } from './material/MaterialType';
4
4
  import { PlayerId } from './PlayerId';
5
+ import { ChangePlayerRule } from './rules/ChangePlayerRule';
5
6
  import { DealCardsRule } from './rules/DealCardsRule';
6
7
  import { EndOfRoundRule } from './rules/EndOfRoundRule';
7
8
  import { PickCardRule } from './rules/PickCardRule';
@@ -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
@@ -19,6 +19,7 @@ exports.OdinRules = void 0;
19
19
  var rules_api_1 = require("@gamepark/rules-api");
20
20
  var LocationType_1 = require("./material/LocationType");
21
21
  var MaterialType_1 = require("./material/MaterialType");
22
+ var ChangePlayerRule_1 = require("./rules/ChangePlayerRule");
22
23
  var CustomMoveType_1 = require("./rules/CustomMoveType");
23
24
  var DealCardsRule_1 = require("./rules/DealCardsRule");
24
25
  var EndOfRoundRule_1 = require("./rules/EndOfRoundRule");
@@ -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 = {},
@@ -0,0 +1,7 @@
1
+ import { MaterialMove } from '@gamepark/rules-api';
2
+ import { BasePlayerTurn } from './BasePlayerTurn';
3
+ export declare class ChangePlayerRule extends BasePlayerTurn {
4
+ onRuleStart(): MaterialMove<number, number, number, number>[];
5
+ get currentTable(): import("@gamepark/rules-api").Material<number, number, number>;
6
+ get nextTable(): import("@gamepark/rules-api").Material<number, number, number>;
7
+ }
@@ -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 LocationType_1 = require("../material/LocationType");
20
+ var MaterialType_1 = require("../material/MaterialType");
21
+ var BasePlayerTurn_1 = require("./BasePlayerTurn");
22
+ var RuleId_1 = require("./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
+ }(BasePlayerTurn_1.BasePlayerTurn));
62
+ exports.ChangePlayerRule = ChangePlayerRule;
@@ -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,22 +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(nextTable.moveItemsAtOnce({
94
- type: LocationType_1.LocationType.MiddleOfTable,
95
- id: LocationType_1.MiddleOfTable.Current
96
- }));
97
- }
98
- moves.push(this.startPlayerTurn(RuleId_1.RuleId.PlayCards, this.nextPlayer));
99
- return moves;
84
+ return [this.startRule(RuleId_1.RuleId.ChangePlayer)];
100
85
  };
101
86
  Object.defineProperty(PickCardRule.prototype, "currentTable", {
102
87
  get: function () {
@@ -105,13 +90,6 @@ var PickCardRule = (function (_super) {
105
90
  enumerable: false,
106
91
  configurable: true
107
92
  });
108
- Object.defineProperty(PickCardRule.prototype, "nextTable", {
109
- get: function () {
110
- return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.MiddleOfTable).locationId(LocationType_1.MiddleOfTable.Next);
111
- },
112
- enumerable: false,
113
- configurable: true
114
- });
115
93
  return PickCardRule;
116
94
  }(BasePlayerTurn_1.BasePlayerTurn));
117
95
  exports.PickCardRule = PickCardRule;
@@ -126,6 +126,9 @@ var PlayCardsRule = (function (_super) {
126
126
  return [];
127
127
  var moves = [];
128
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
+ }
129
132
  moves.push(this.startRule(RuleId_1.RuleId.PickCard));
130
133
  return moves;
131
134
  };
@@ -141,8 +144,7 @@ var PlayCardsRule = (function (_super) {
141
144
  type: LocationType_1.LocationType.Discard
142
145
  }));
143
146
  }
144
- moves.push(this.startPlayerTurn(RuleId_1.RuleId.PlayCards, next));
145
- return moves;
147
+ moves.push(this.startRule(RuleId_1.RuleId.ChangePlayer));
146
148
  }
147
149
  else {
148
150
  moves.push(this.startPlayerTurn(RuleId_1.RuleId.PlayCards, this.nextPlayer));
@@ -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 = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/odin",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "The rules of Odin adapted for Game Park",
5
5
  "sideEffects": false,
6
6
  "main": "dist/index.js",
@@ -29,5 +29,5 @@
29
29
  "i18next": "^22.0.3",
30
30
  "lodash": "^4.17.21"
31
31
  },
32
- "gitHead": "38007d787728748628e3c465b642d2792a852587"
32
+ "gitHead": "e9aee636e64b58b8e9f6f3c7ae87e5686f59ede5"
33
33
  }