@gamepark/odin 0.0.2 → 0.0.4
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.
- package/dist/OdinRules.d.ts +2 -3
- package/dist/OdinRules.js +1 -1
- package/dist/rules/CustomMoveType.d.ts +2 -1
- package/dist/rules/CustomMoveType.js +1 -0
- package/dist/rules/DealCardsRule.d.ts +2 -0
- package/dist/rules/DealCardsRule.js +6 -0
- package/dist/rules/PickCardRule.d.ts +1 -0
- package/dist/rules/PickCardRule.js +42 -3
- package/dist/rules/PlayCardsRule.d.ts +2 -3
- package/dist/rules/PlayCardsRule.js +30 -54
- package/dist/rules/helper/ScoreHelper.d.ts +1 -1
- package/dist/rules/helper/ScoreHelper.js +2 -1
- package/dist/rules/helper/SortHelper.d.ts +4 -0
- package/dist/rules/helper/SortHelper.js +35 -0
- package/package.json +3 -3
package/dist/OdinRules.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { CustomMove, MaterialGame, MaterialMove, PlayMoveContext, PositiveSequenceStrategy, SecretMaterialRules, TimeLimit } from '@gamepark/rules-api';
|
|
2
|
-
import { CompetitiveScore } from '../../../rules-api';
|
|
1
|
+
import { CompetitiveScore, CustomMove, FillGapStrategy, MaterialGame, MaterialMove, PlayMoveContext, PositiveSequenceStrategy, SecretMaterialRules, TimeLimit } from '@gamepark/rules-api';
|
|
3
2
|
import { LocationType } from './material/LocationType';
|
|
4
3
|
import { MaterialType } from './material/MaterialType';
|
|
5
4
|
import { PlayerId } from './PlayerId';
|
|
@@ -24,7 +23,7 @@ export declare class OdinRules extends SecretMaterialRules<PlayerId, MaterialTyp
|
|
|
24
23
|
1: {
|
|
25
24
|
2: PositiveSequenceStrategy<number, number, number>;
|
|
26
25
|
1: PositiveSequenceStrategy<number, number, number>;
|
|
27
|
-
3:
|
|
26
|
+
3: FillGapStrategy<number, number, number>;
|
|
28
27
|
4: PositiveSequenceStrategy<number, number, number>;
|
|
29
28
|
};
|
|
30
29
|
};
|
package/dist/OdinRules.js
CHANGED
|
@@ -48,7 +48,7 @@ var OdinRules = (function (_super) {
|
|
|
48
48
|
_d[MaterialType_1.MaterialType.Card] = (_e = {},
|
|
49
49
|
_e[LocationType_1.LocationType.Hand] = new rules_api_1.PositiveSequenceStrategy(),
|
|
50
50
|
_e[LocationType_1.LocationType.Deck] = new rules_api_1.PositiveSequenceStrategy(),
|
|
51
|
-
_e[LocationType_1.LocationType.MiddleOfTable] = new rules_api_1.
|
|
51
|
+
_e[LocationType_1.LocationType.MiddleOfTable] = new rules_api_1.FillGapStrategy(),
|
|
52
52
|
_e[LocationType_1.LocationType.Discard] = new rules_api_1.PositiveSequenceStrategy(),
|
|
53
53
|
_e),
|
|
54
54
|
_d);
|
|
@@ -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 = {}));
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ItemMove, MaterialMove, MaterialRulesPart } from '@gamepark/rules-api';
|
|
2
|
+
import { PlayerId } from '../PlayerId';
|
|
2
3
|
export declare class DealCardsRule extends MaterialRulesPart {
|
|
3
4
|
onRuleStart(): MaterialMove<number, number, number, number>[];
|
|
4
5
|
afterItemMove(move: ItemMove): MaterialMove[];
|
|
5
6
|
dealToPlayersAndGo(): MaterialMove[];
|
|
7
|
+
getPlayerHand(player: PlayerId): import("@gamepark/rules-api").Material<number, number, number>;
|
|
6
8
|
get deck(): import("@gamepark/rules-api").MaterialDeck<number, number, number>;
|
|
7
9
|
get discard(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
8
10
|
}
|
|
@@ -88,6 +88,9 @@ var DealCardsRule = (function (_super) {
|
|
|
88
88
|
try {
|
|
89
89
|
for (var _b = (e_1 = void 0, __values(this.game.players)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
90
90
|
var player = _c.value;
|
|
91
|
+
var hand = this.getPlayerHand(player);
|
|
92
|
+
if (hand.length + i >= 9)
|
|
93
|
+
continue;
|
|
91
94
|
moves.push.apply(moves, __spreadArray([], __read(deck.deal({
|
|
92
95
|
type: LocationType_1.LocationType.Hand,
|
|
93
96
|
player: player
|
|
@@ -105,6 +108,9 @@ var DealCardsRule = (function (_super) {
|
|
|
105
108
|
moves.push(this.startPlayerTurn(RuleId_1.RuleId.PlayCards, this.remind(Memory_1.Memory.FirstPlayer)));
|
|
106
109
|
return moves;
|
|
107
110
|
};
|
|
111
|
+
DealCardsRule.prototype.getPlayerHand = function (player) {
|
|
112
|
+
return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.Hand).player(player);
|
|
113
|
+
};
|
|
108
114
|
Object.defineProperty(DealCardsRule.prototype, "deck", {
|
|
109
115
|
get: function () {
|
|
110
116
|
return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.Deck).deck();
|
|
@@ -2,6 +2,7 @@ import { MaterialMove, MoveItem } from '@gamepark/rules-api';
|
|
|
2
2
|
import { BasePlayerTurn } from './BasePlayerTurn';
|
|
3
3
|
export declare class PickCardRule extends BasePlayerTurn {
|
|
4
4
|
onRuleStart(): MaterialMove<number, number, number, number>[];
|
|
5
|
+
get isEndOfRound(): boolean;
|
|
5
6
|
getPlayerMoves(): MaterialMove[];
|
|
6
7
|
afterItemMove(move: MoveItem): MaterialMove<number, number, number, number>[];
|
|
7
8
|
goToNextRule(): MaterialMove<number, number, number, number>[];
|
|
@@ -14,12 +14,38 @@ 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 __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
|
+
};
|
|
17
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
43
|
exports.PickCardRule = void 0;
|
|
19
44
|
var rules_api_1 = require("@gamepark/rules-api");
|
|
20
45
|
var LocationType_1 = require("../material/LocationType");
|
|
21
46
|
var MaterialType_1 = require("../material/MaterialType");
|
|
22
47
|
var BasePlayerTurn_1 = require("./BasePlayerTurn");
|
|
48
|
+
var CustomMoveType_1 = require("./CustomMoveType");
|
|
23
49
|
var RuleId_1 = require("./RuleId");
|
|
24
50
|
var PickCardRule = (function (_super) {
|
|
25
51
|
__extends(PickCardRule, _super);
|
|
@@ -27,10 +53,22 @@ var PickCardRule = (function (_super) {
|
|
|
27
53
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
28
54
|
}
|
|
29
55
|
PickCardRule.prototype.onRuleStart = function () {
|
|
56
|
+
if (this.isEndOfRound) {
|
|
57
|
+
return [this.customMove(CustomMoveType_1.CustomMoveType.TurnTempo, true), this.startRule(RuleId_1.RuleId.EndOfRound)];
|
|
58
|
+
}
|
|
59
|
+
var moves = [this.customMove(CustomMoveType_1.CustomMoveType.TurnTempo)];
|
|
30
60
|
if (this.getPlayerMoves().length)
|
|
31
|
-
return
|
|
32
|
-
|
|
61
|
+
return moves;
|
|
62
|
+
moves.push.apply(moves, __spreadArray([], __read(this.goToNextRule()), false));
|
|
63
|
+
return moves;
|
|
33
64
|
};
|
|
65
|
+
Object.defineProperty(PickCardRule.prototype, "isEndOfRound", {
|
|
66
|
+
get: function () {
|
|
67
|
+
return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.Hand).player(this.player).length === 0;
|
|
68
|
+
},
|
|
69
|
+
enumerable: false,
|
|
70
|
+
configurable: true
|
|
71
|
+
});
|
|
34
72
|
PickCardRule.prototype.getPlayerMoves = function () {
|
|
35
73
|
return this.currentTable.moveItems({
|
|
36
74
|
type: LocationType_1.LocationType.Hand,
|
|
@@ -52,7 +90,8 @@ var PickCardRule = (function (_super) {
|
|
|
52
90
|
}
|
|
53
91
|
var nextTable = this.nextTable;
|
|
54
92
|
if (nextTable.length) {
|
|
55
|
-
moves.push(
|
|
93
|
+
moves.push(nextTable.moveItemsAtOnce({
|
|
94
|
+
type: LocationType_1.LocationType.MiddleOfTable,
|
|
56
95
|
id: LocationType_1.MiddleOfTable.Current
|
|
57
96
|
}));
|
|
58
97
|
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { CustomMove, ItemMove,
|
|
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
|
-
afterPlaceCards(): MaterialMove<number, number, number, number>[];
|
|
12
10
|
get firstPlayer(): number;
|
|
13
11
|
get table(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
12
|
+
get nextTable(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
14
13
|
get playableCards(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
15
14
|
get hand(): import("@gamepark/rules-api").Material<number, number, number>;
|
|
16
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
|
-
return (_a =
|
|
87
|
+
return (_a = playableCards
|
|
87
88
|
.id(function (id) { return c.includes(id); }))
|
|
88
|
-
.sort.apply(_a, __spreadArray([], __read(
|
|
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
|
});
|
|
@@ -93,9 +94,9 @@ var PlayCardsRule = (function (_super) {
|
|
|
93
94
|
}
|
|
94
95
|
moves.push.apply(moves, __spreadArray([], __read(combinations.map(function (c) {
|
|
95
96
|
var _a;
|
|
96
|
-
return (_a =
|
|
97
|
+
return (_a = playableCards
|
|
97
98
|
.id(function (id) { return c.includes(id); }))
|
|
98
|
-
.sort.apply(_a, __spreadArray([], __read(
|
|
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;
|
|
@@ -123,23 +117,16 @@ var PlayCardsRule = (function (_super) {
|
|
|
123
117
|
PlayCardsRule.prototype.onCustomMove = function (move) {
|
|
124
118
|
if (!(0, rules_api_1.isCustomMoveType)(CustomMoveType_1.CustomMoveType.Pass)(move))
|
|
125
119
|
return [];
|
|
126
|
-
var moves =
|
|
120
|
+
var moves = [];
|
|
127
121
|
moves.push.apply(moves, __spreadArray([], __read(this.goToNextPlayer()), false));
|
|
128
122
|
return moves;
|
|
129
123
|
};
|
|
130
124
|
PlayCardsRule.prototype.afterItemMove = function (move) {
|
|
131
125
|
if (!(0, rules_api_1.isMoveItemTypeAtOnce)(MaterialType_1.MaterialType.Card)(move) || move.location.type !== LocationType_1.LocationType.MiddleOfTable)
|
|
132
126
|
return [];
|
|
133
|
-
var moves =
|
|
127
|
+
var moves = [];
|
|
134
128
|
this.memorize(Memory_1.Memory.LastPlayerThatPlay, this.player);
|
|
135
|
-
|
|
136
|
-
moves.push(this.customMove(CustomMoveType_1.CustomMoveType.TurnTempo, isEndOfRound));
|
|
137
|
-
if (this.hand.length === 0) {
|
|
138
|
-
moves.push(this.startRule(RuleId_1.RuleId.EndOfRound));
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
moves.push(this.startRule(RuleId_1.RuleId.PickCard));
|
|
142
|
-
}
|
|
129
|
+
moves.push(this.startRule(RuleId_1.RuleId.PickCard));
|
|
143
130
|
return moves;
|
|
144
131
|
};
|
|
145
132
|
PlayCardsRule.prototype.goToNextPlayer = function () {
|
|
@@ -162,25 +149,6 @@ var PlayCardsRule = (function (_super) {
|
|
|
162
149
|
}
|
|
163
150
|
return moves;
|
|
164
151
|
};
|
|
165
|
-
PlayCardsRule.prototype.afterPlaceCards = function () {
|
|
166
|
-
var e_1, _a;
|
|
167
|
-
var moves = [];
|
|
168
|
-
var selected = this.material(MaterialType_1.MaterialType.Card).selected().getItems();
|
|
169
|
-
try {
|
|
170
|
-
for (var selected_1 = __values(selected), selected_1_1 = selected_1.next(); !selected_1_1.done; selected_1_1 = selected_1.next()) {
|
|
171
|
-
var item = selected_1_1.value;
|
|
172
|
-
delete item.selected;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
176
|
-
finally {
|
|
177
|
-
try {
|
|
178
|
-
if (selected_1_1 && !selected_1_1.done && (_a = selected_1.return)) _a.call(selected_1);
|
|
179
|
-
}
|
|
180
|
-
finally { if (e_1) throw e_1.error; }
|
|
181
|
-
}
|
|
182
|
-
return moves;
|
|
183
|
-
};
|
|
184
152
|
Object.defineProperty(PlayCardsRule.prototype, "firstPlayer", {
|
|
185
153
|
get: function () {
|
|
186
154
|
return this.remind(Memory_1.Memory.FirstPlayer);
|
|
@@ -195,9 +163,17 @@ var PlayCardsRule = (function (_super) {
|
|
|
195
163
|
enumerable: false,
|
|
196
164
|
configurable: true
|
|
197
165
|
});
|
|
166
|
+
Object.defineProperty(PlayCardsRule.prototype, "nextTable", {
|
|
167
|
+
get: function () {
|
|
168
|
+
return this.material(MaterialType_1.MaterialType.Card).location(LocationType_1.LocationType.MiddleOfTable).locationId(LocationType_1.MiddleOfTable.Next);
|
|
169
|
+
},
|
|
170
|
+
enumerable: false,
|
|
171
|
+
configurable: true
|
|
172
|
+
});
|
|
198
173
|
Object.defineProperty(PlayCardsRule.prototype, "playableCards", {
|
|
199
174
|
get: function () {
|
|
200
|
-
|
|
175
|
+
var _this = this;
|
|
176
|
+
return this.material(MaterialType_1.MaterialType.Card).location(function (l) { return (l.type === LocationType_1.LocationType.Hand && l.player === _this.player) || (l.type === LocationType_1.LocationType.MiddleOfTable && l.id === LocationType_1.MiddleOfTable.Next); });
|
|
201
177
|
},
|
|
202
178
|
enumerable: false,
|
|
203
179
|
configurable: true
|
|
@@ -224,7 +200,7 @@ var PlayCardsRule = (function (_super) {
|
|
|
224
200
|
return parseInt(values.join(''), 10);
|
|
225
201
|
};
|
|
226
202
|
PlayCardsRule.prototype.getPlayableCombinations = function (hand, tableCount, tableValue) {
|
|
227
|
-
var
|
|
203
|
+
var e_1, _a, e_2, _b, e_3, _c, e_4, _d;
|
|
228
204
|
var results = [];
|
|
229
205
|
var byColor = (0, groupBy_1.default)(hand, function (card) { return card % 10; });
|
|
230
206
|
var byValue = (0, groupBy_1.default)(hand, function (card) { return Math.floor(card / 10); });
|
|
@@ -232,54 +208,54 @@ var PlayCardsRule = (function (_super) {
|
|
|
232
208
|
for (var _e = __values([byColor, byValue]), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
233
209
|
var group = _f.value;
|
|
234
210
|
try {
|
|
235
|
-
for (var _g = (
|
|
211
|
+
for (var _g = (e_2 = void 0, __values(Object.values(group))), _h = _g.next(); !_h.done; _h = _g.next()) {
|
|
236
212
|
var cards = _h.value;
|
|
237
213
|
try {
|
|
238
|
-
for (var _j = (
|
|
214
|
+
for (var _j = (e_3 = void 0, __values([tableCount, tableCount + 1])), _k = _j.next(); !_k.done; _k = _j.next()) {
|
|
239
215
|
var count = _k.value;
|
|
240
216
|
if (cards.length >= count) {
|
|
241
217
|
try {
|
|
242
|
-
for (var _l = (
|
|
218
|
+
for (var _l = (e_4 = void 0, __values(this.kCombinations(cards, count))), _m = _l.next(); !_m.done; _m = _l.next()) {
|
|
243
219
|
var comb = _m.value;
|
|
244
220
|
if (this.concatCardValue(comb) > tableValue) {
|
|
245
221
|
results.push(comb);
|
|
246
222
|
}
|
|
247
223
|
}
|
|
248
224
|
}
|
|
249
|
-
catch (
|
|
225
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
250
226
|
finally {
|
|
251
227
|
try {
|
|
252
228
|
if (_m && !_m.done && (_d = _l.return)) _d.call(_l);
|
|
253
229
|
}
|
|
254
|
-
finally { if (
|
|
230
|
+
finally { if (e_4) throw e_4.error; }
|
|
255
231
|
}
|
|
256
232
|
}
|
|
257
233
|
}
|
|
258
234
|
}
|
|
259
|
-
catch (
|
|
235
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
260
236
|
finally {
|
|
261
237
|
try {
|
|
262
238
|
if (_k && !_k.done && (_c = _j.return)) _c.call(_j);
|
|
263
239
|
}
|
|
264
|
-
finally { if (
|
|
240
|
+
finally { if (e_3) throw e_3.error; }
|
|
265
241
|
}
|
|
266
242
|
}
|
|
267
243
|
}
|
|
268
|
-
catch (
|
|
244
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
269
245
|
finally {
|
|
270
246
|
try {
|
|
271
247
|
if (_h && !_h.done && (_b = _g.return)) _b.call(_g);
|
|
272
248
|
}
|
|
273
|
-
finally { if (
|
|
249
|
+
finally { if (e_2) throw e_2.error; }
|
|
274
250
|
}
|
|
275
251
|
}
|
|
276
252
|
}
|
|
277
|
-
catch (
|
|
253
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
278
254
|
finally {
|
|
279
255
|
try {
|
|
280
256
|
if (_f && !_f.done && (_a = _e.return)) _a.call(_e);
|
|
281
257
|
}
|
|
282
|
-
finally { if (
|
|
258
|
+
finally { if (e_1) throw e_1.error; }
|
|
283
259
|
}
|
|
284
260
|
var unique = (0, uniqWith_1.default)(results, function (a, b) { return (0, isEqual_1.default)((0, orderBy_1.default)(a), (0, orderBy_1.default)(b)); });
|
|
285
261
|
return unique;
|
|
@@ -5,6 +5,6 @@ export declare class ScoreHelper extends MaterialRulesPart {
|
|
|
5
5
|
constructor(game: MaterialGame, player: PlayerId);
|
|
6
6
|
isWinningRound(round: number): boolean;
|
|
7
7
|
get score(): number;
|
|
8
|
-
getRoundScore(round: number): number;
|
|
8
|
+
getRoundScore(round: number): number | undefined;
|
|
9
9
|
get isWinning(): boolean;
|
|
10
10
|
}
|
|
@@ -42,7 +42,8 @@ var ScoreHelper = (function (_super) {
|
|
|
42
42
|
configurable: true
|
|
43
43
|
});
|
|
44
44
|
ScoreHelper.prototype.getRoundScore = function (round) {
|
|
45
|
-
|
|
45
|
+
var _a;
|
|
46
|
+
return (_a = this.remind(Memory_1.Memory.PlayerScore, this.player)) === null || _a === void 0 ? void 0 : _a[round - 1];
|
|
46
47
|
};
|
|
47
48
|
Object.defineProperty(ScoreHelper.prototype, "isWinning", {
|
|
48
49
|
get: function () {
|
|
@@ -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
|
+
"version": "0.0.4",
|
|
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.
|
|
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": "
|
|
32
|
+
"gitHead": "38007d787728748628e3c465b642d2792a852587"
|
|
33
33
|
}
|