@gamepark/odin 0.0.6 → 0.0.7

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;
package/dist/OdinRules.js CHANGED
@@ -62,7 +62,7 @@ var OdinRules = (function (_super) {
62
62
  this.memorize(Memory_1.Memory.HandSort, previousState.memory[Memory_1.Memory.HandSort]);
63
63
  };
64
64
  OdinRules.prototype.giveTime = function () {
65
- return 60;
65
+ return 30;
66
66
  };
67
67
  OdinRules.prototype.getScore = function (playerId) {
68
68
  return new ScoreHelper_1.ScoreHelper(this.game, playerId).score;
@@ -39,27 +39,13 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
39
39
  }
40
40
  return to.concat(ar || Array.prototype.slice.call(from));
41
41
  };
42
- var __values = (this && this.__values) || function(o) {
43
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
44
- if (m) return m.call(o);
45
- if (o && typeof o.length === "number") return {
46
- next: function () {
47
- if (o && i >= o.length) o = void 0;
48
- return { value: o && o[i++], done: !o };
49
- }
50
- };
51
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
52
- };
53
- var __importDefault = (this && this.__importDefault) || function (mod) {
54
- return (mod && mod.__esModule) ? mod : { "default": mod };
55
- };
56
42
  Object.defineProperty(exports, "__esModule", { value: true });
57
43
  exports.EndOfRoundRule = void 0;
58
44
  var rules_api_1 = require("@gamepark/rules-api");
59
- var sum_1 = __importDefault(require("lodash/sum"));
60
45
  var LocationType_1 = require("../material/LocationType");
61
46
  var MaterialType_1 = require("../material/MaterialType");
62
47
  var CustomMoveType_1 = require("./CustomMoveType");
48
+ var EndHelper_1 = require("./helper/EndHelper");
63
49
  var Memory_1 = require("./Memory");
64
50
  var RuleId_1 = require("./RuleId");
65
51
  var EndOfRoundRule = (function (_super) {
@@ -76,33 +62,7 @@ var EndOfRoundRule = (function (_super) {
76
62
  return moves;
77
63
  };
78
64
  EndOfRoundRule.prototype.onRoundEnd = function () {
79
- var e_1, _a;
80
- var ended = false;
81
- var _loop_1 = function (player) {
82
- var hand = this_1.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.Hand).player(player);
83
- this_1.memorize(Memory_1.Memory.PlayerScore, function (s) {
84
- if (s === void 0) { s = []; }
85
- return __spreadArray(__spreadArray([], __read(s), false), [hand.length], false);
86
- }, player);
87
- var score = (0, sum_1.default)(this_1.remind(Memory_1.Memory.PlayerScore, player));
88
- if (!ended && score >= 15)
89
- ended = true;
90
- };
91
- var this_1 = this;
92
- try {
93
- for (var _b = __values(this.game.players), _c = _b.next(); !_c.done; _c = _b.next()) {
94
- var player = _c.value;
95
- _loop_1(player);
96
- }
97
- }
98
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
99
- finally {
100
- try {
101
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
102
- }
103
- finally { if (e_1) throw e_1.error; }
104
- }
105
- if (!ended) {
65
+ if (!new EndHelper_1.EndHelper(this.game).isEnded) {
106
66
  this.memorize(Memory_1.Memory.Round, function (r) {
107
67
  return r + 1;
108
68
  });
@@ -57,6 +57,11 @@ var PickCardRule = (function (_super) {
57
57
  return [this.startRule(RuleId_1.RuleId.EndOfRound)];
58
58
  }
59
59
  var moves = [this.customMove(CustomMoveType_1.CustomMoveType.TurnTempo)];
60
+ var playerMoves = this.getPlayerMoves();
61
+ if (playerMoves.length === 1 && (0, rules_api_1.isMoveItemType)(MaterialType_1.MaterialType.Card)(playerMoves[0]) && playerMoves[0].location.type === LocationType_1.LocationType.Hand) {
62
+ moves.push(playerMoves[0]);
63
+ return moves;
64
+ }
60
65
  if (this.getPlayerMoves().length)
61
66
  return moves;
62
67
  moves.push.apply(moves, __spreadArray([], __read(this.goToNextRule()), false));
@@ -2,14 +2,15 @@ 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
+ onRuleStart(): CustomMove<number>[];
5
6
  getPlayerMoves(): MaterialMove<number, number, number, number>[];
7
+ getAvailableMoves(): MaterialMove<number, number, number, number>[];
6
8
  get tableValue(): number;
7
9
  onCustomMove(move: CustomMove): MaterialMove<number, number, number, number>[];
8
10
  afterItemMove(move: ItemMove): MaterialMove<number, number, number, number>[];
9
11
  goToNextPlayer(): MaterialMove<number, number, number, number>[];
10
12
  get firstPlayer(): number;
11
13
  get table(): import("@gamepark/rules-api").Material<number, number, number>;
12
- get nextTable(): import("@gamepark/rules-api").Material<number, number, number>;
13
14
  get playableCards(): import("@gamepark/rules-api").Material<number, number, number>;
14
15
  get hand(): import("@gamepark/rules-api").Material<number, number, number>;
15
16
  kCombinations<T>(arr: T[], k: number): T[][];
@@ -73,7 +73,19 @@ var PlayCardsRule = (function (_super) {
73
73
  function PlayCardsRule() {
74
74
  return _super !== null && _super.apply(this, arguments) || this;
75
75
  }
76
+ PlayCardsRule.prototype.onRuleStart = function () {
77
+ var table = this.table;
78
+ var tableSize = table.length;
79
+ var hand = this.playableCards;
80
+ if (hand.length < tableSize) {
81
+ return [this.customMove(CustomMoveType_1.CustomMoveType.Pass)];
82
+ }
83
+ return [];
84
+ };
76
85
  PlayCardsRule.prototype.getPlayerMoves = function () {
86
+ return this.getAvailableMoves();
87
+ };
88
+ PlayCardsRule.prototype.getAvailableMoves = function () {
77
89
  var playableCards = this.playableCards;
78
90
  var table = this.table;
79
91
  var tableSize = table.length;
@@ -165,13 +177,6 @@ var PlayCardsRule = (function (_super) {
165
177
  enumerable: false,
166
178
  configurable: true
167
179
  });
168
- Object.defineProperty(PlayCardsRule.prototype, "nextTable", {
169
- get: function () {
170
- return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.MiddleOfTable).locationId(LocationType_1.MiddleOfTable.Next);
171
- },
172
- enumerable: false,
173
- configurable: true
174
- });
175
180
  Object.defineProperty(PlayCardsRule.prototype, "playableCards", {
176
181
  get: function () {
177
182
  var _this = this;
@@ -0,0 +1,4 @@
1
+ import { MaterialRulesPart } from '@gamepark/rules-api';
2
+ export declare class EndHelper extends MaterialRulesPart {
3
+ get isEnded(): boolean;
4
+ }
@@ -0,0 +1,103 @@
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 __read = (this && this.__read) || function (o, n) {
18
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
19
+ if (!m) return o;
20
+ var i = m.call(o), r, ar = [], e;
21
+ try {
22
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
23
+ }
24
+ catch (error) { e = { error: error }; }
25
+ finally {
26
+ try {
27
+ if (r && !r.done && (m = i["return"])) m.call(i);
28
+ }
29
+ finally { if (e) throw e.error; }
30
+ }
31
+ return ar;
32
+ };
33
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
34
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
35
+ if (ar || !(i in from)) {
36
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
37
+ ar[i] = from[i];
38
+ }
39
+ }
40
+ return to.concat(ar || Array.prototype.slice.call(from));
41
+ };
42
+ var __values = (this && this.__values) || function(o) {
43
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
44
+ if (m) return m.call(o);
45
+ if (o && typeof o.length === "number") return {
46
+ next: function () {
47
+ if (o && i >= o.length) o = void 0;
48
+ return { value: o && o[i++], done: !o };
49
+ }
50
+ };
51
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
52
+ };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.EndHelper = void 0;
58
+ var rules_api_1 = require("@gamepark/rules-api");
59
+ var sum_1 = __importDefault(require("lodash/sum"));
60
+ var LocationType_1 = require("../../material/LocationType");
61
+ var MaterialType_1 = require("../../material/MaterialType");
62
+ var Memory_1 = require("../Memory");
63
+ var EndHelper = (function (_super) {
64
+ __extends(EndHelper, _super);
65
+ function EndHelper() {
66
+ return _super !== null && _super.apply(this, arguments) || this;
67
+ }
68
+ Object.defineProperty(EndHelper.prototype, "isEnded", {
69
+ get: function () {
70
+ var e_1, _a;
71
+ var ended = false;
72
+ var _loop_1 = function (player) {
73
+ var hand = this_1.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.Hand).player(player);
74
+ this_1.memorize(Memory_1.Memory.PlayerScore, function (s) {
75
+ if (s === void 0) { s = []; }
76
+ return __spreadArray(__spreadArray([], __read(s), false), [hand.length], false);
77
+ }, player);
78
+ var score = (0, sum_1.default)(this_1.remind(Memory_1.Memory.PlayerScore, player));
79
+ if (!ended && score >= 15)
80
+ ended = true;
81
+ };
82
+ var this_1 = this;
83
+ try {
84
+ for (var _b = __values(this.game.players), _c = _b.next(); !_c.done; _c = _b.next()) {
85
+ var player = _c.value;
86
+ _loop_1(player);
87
+ }
88
+ }
89
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
90
+ finally {
91
+ try {
92
+ if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
93
+ }
94
+ finally { if (e_1) throw e_1.error; }
95
+ }
96
+ return ended;
97
+ },
98
+ enumerable: false,
99
+ configurable: true
100
+ });
101
+ return EndHelper;
102
+ }(rules_api_1.MaterialRulesPart));
103
+ exports.EndHelper = EndHelper;
@@ -6,5 +6,4 @@ export declare class ScoreHelper extends MaterialRulesPart {
6
6
  isWinningRound(round: number): boolean;
7
7
  get score(): number;
8
8
  getRoundScore(round: number): number | undefined;
9
- get isWinning(): boolean;
10
9
  }
@@ -21,8 +21,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.ScoreHelper = void 0;
22
22
  var rules_api_1 = require("@gamepark/rules-api");
23
23
  var sum_1 = __importDefault(require("lodash/sum"));
24
- var LocationType_1 = require("../../material/LocationType");
25
- var MaterialType_1 = require("../../material/MaterialType");
26
24
  var Memory_1 = require("../Memory");
27
25
  var ScoreHelper = (function (_super) {
28
26
  __extends(ScoreHelper, _super);
@@ -45,13 +43,6 @@ var ScoreHelper = (function (_super) {
45
43
  var _a;
46
44
  return (_a = this.remind(Memory_1.Memory.PlayerScore, this.player)) === null || _a === void 0 ? void 0 : _a[round - 1];
47
45
  };
48
- Object.defineProperty(ScoreHelper.prototype, "isWinning", {
49
- get: function () {
50
- return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.Hand).player(this.player).length === 0;
51
- },
52
- enumerable: false,
53
- configurable: true
54
- });
55
46
  return ScoreHelper;
56
47
  }(rules_api_1.MaterialRulesPart));
57
48
  exports.ScoreHelper = ScoreHelper;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gamepark/odin",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
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.8",
27
+ "@gamepark/rules-api": "~6.38.5",
28
28
  "@types/lodash": "^4.17.7",
29
29
  "i18next": "^22.0.3",
30
30
  "lodash": "^4.17.21"
31
31
  },
32
- "gitHead": "e9aee636e64b58b8e9f6f3c7ae87e5686f59ede5"
32
+ "gitHead": "8633d0fca555c2e0b391a4c64476d32e062b9763"
33
33
  }