@gamepark/rules-api 6.24.2 → 6.25.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.
- package/dist/Action.d.ts +7 -0
- package/dist/Bot.d.ts +21 -0
- package/dist/Bot.js +18 -2
- package/dist/Bot.js.map +1 -1
- package/dist/Competitive.d.ts +45 -0
- package/dist/Competitive.js +15 -0
- package/dist/Competitive.js.map +1 -1
- package/dist/Eliminations.d.ts +17 -0
- package/dist/Eliminations.js +5 -0
- package/dist/Eliminations.js.map +1 -1
- package/dist/GameSetup.d.ts +14 -0
- package/dist/HiddenInformation.d.ts +22 -0
- package/dist/HiddenInformation.js +5 -0
- package/dist/HiddenInformation.js.map +1 -1
- package/dist/LocalMovePreview.d.ts +14 -0
- package/dist/LocalMovePreview.js +5 -0
- package/dist/LocalMovePreview.js.map +1 -1
- package/dist/RandomMove.d.ts +20 -2
- package/dist/Rules.d.ts +119 -0
- package/dist/Rules.js +102 -1
- package/dist/Rules.js.map +1 -1
- package/dist/SecretInformation.d.ts +39 -0
- package/dist/SecretInformation.js +5 -0
- package/dist/SecretInformation.js.map +1 -1
- package/dist/TimeLimit.d.ts +22 -0
- package/dist/TimeLimit.js +5 -0
- package/dist/TimeLimit.js.map +1 -1
- package/dist/Undo.d.ts +18 -0
- package/dist/Undo.js +6 -0
- package/dist/Undo.js.map +1 -1
- package/dist/UnpredictableMove.d.ts +19 -0
- package/dist/UnpredictableMove.js +5 -0
- package/dist/UnpredictableMove.js.map +1 -1
- package/dist/material/HiddenMaterialRules.d.ts +49 -1
- package/dist/material/HiddenMaterialRules.js +56 -13
- package/dist/material/HiddenMaterialRules.js.map +1 -1
- package/dist/material/MaterialGame.d.ts +12 -0
- package/dist/material/MaterialGameSetup.d.ts +74 -0
- package/dist/material/MaterialGameSetup.js +68 -5
- package/dist/material/MaterialGameSetup.js.map +1 -1
- package/dist/material/MaterialRules.d.ts +133 -1
- package/dist/material/MaterialRules.js +131 -5
- package/dist/material/MaterialRules.js.map +1 -1
- package/dist/material/SecretMaterialRules.d.ts +31 -0
- package/dist/material/SecretMaterialRules.js +23 -1
- package/dist/material/SecretMaterialRules.js.map +1 -1
- package/dist/material/items/Material.d.ts +265 -5
- package/dist/material/items/Material.js +266 -7
- package/dist/material/items/Material.js.map +1 -1
- package/dist/material/items/MaterialDeck.d.ts +34 -1
- package/dist/material/items/MaterialDeck.js +36 -3
- package/dist/material/items/MaterialDeck.js.map +1 -1
- package/dist/material/items/MaterialItem.d.ts +12 -0
- package/dist/material/items/MaterialMoney.d.ts +81 -0
- package/dist/material/items/MaterialMoney.js +288 -0
- package/dist/material/items/MaterialMoney.js.map +1 -0
- package/dist/material/items/MaterialMutator.d.ts +39 -0
- package/dist/material/items/MaterialMutator.js +44 -5
- package/dist/material/items/MaterialMutator.js.map +1 -1
- package/dist/material/items/index.d.ts +2 -1
- package/dist/material/items/index.js +3 -1
- package/dist/material/items/index.js.map +1 -1
- package/dist/material/location/Location.d.ts +28 -0
- package/dist/material/location/Location.js +5 -0
- package/dist/material/location/Location.js.map +1 -1
- package/dist/material/location/LocationBuilder.js +1 -1
- package/dist/material/location/strategy/FillGapStrategy.d.ts +4 -0
- package/dist/material/location/strategy/FillGapStrategy.js +5 -1
- package/dist/material/location/strategy/FillGapStrategy.js.map +1 -1
- package/dist/material/location/strategy/LocationStrategy.d.ts +20 -0
- package/dist/material/location/strategy/PositiveSequenceStrategy.d.ts +4 -0
- package/dist/material/location/strategy/PositiveSequenceStrategy.js +5 -1
- package/dist/material/location/strategy/PositiveSequenceStrategy.js.map +1 -1
- package/dist/material/memory/GameMemory.d.ts +21 -0
- package/dist/material/memory/GameMemory.js +22 -1
- package/dist/material/memory/GameMemory.js.map +1 -1
- package/dist/material/memory/PlayerMemory.d.ts +22 -0
- package/dist/material/memory/PlayerMemory.js +23 -1
- package/dist/material/memory/PlayerMemory.js.map +1 -1
- package/dist/material/moves/CustomMove.d.ts +18 -0
- package/dist/material/moves/CustomMove.js +13 -0
- package/dist/material/moves/CustomMove.js.map +1 -1
- package/dist/material/moves/MaterialMove.d.ts +9 -0
- package/dist/material/moves/MaterialMoveBuilder.d.ts +36 -0
- package/dist/material/moves/MaterialMoveBuilder.js +36 -0
- package/dist/material/moves/MaterialMoveBuilder.js.map +1 -1
- package/dist/material/moves/MoveKind.d.ts +3 -0
- package/dist/material/moves/MoveKind.js +3 -0
- package/dist/material/moves/MoveKind.js.map +1 -1
- package/dist/material/moves/items/CreateItem.d.ts +13 -0
- package/dist/material/moves/items/CreateItem.js +10 -0
- package/dist/material/moves/items/CreateItem.js.map +1 -1
- package/dist/material/moves/items/CreateItemsAtOnce.d.ts +14 -0
- package/dist/material/moves/items/CreateItemsAtOnce.js +10 -0
- package/dist/material/moves/items/CreateItemsAtOnce.js.map +1 -1
- package/dist/material/moves/items/DeleteItem.d.ts +18 -0
- package/dist/material/moves/items/DeleteItem.js +11 -0
- package/dist/material/moves/items/DeleteItem.js.map +1 -1
- package/dist/material/moves/items/DeleteItemsAtOnce.d.ts +17 -0
- package/dist/material/moves/items/DeleteItemsAtOnce.js +10 -0
- package/dist/material/moves/items/DeleteItemsAtOnce.js.map +1 -1
- package/dist/material/moves/items/ItemMove.d.ts +12 -0
- package/dist/material/moves/items/ItemMoveType.d.ts +3 -0
- package/dist/material/moves/items/ItemMoveType.js +3 -0
- package/dist/material/moves/items/ItemMoveType.js.map +1 -1
- package/dist/material/moves/items/MoveItem.d.ts +20 -0
- package/dist/material/moves/items/MoveItem.js +11 -0
- package/dist/material/moves/items/MoveItem.js.map +1 -1
- package/dist/material/moves/items/MoveItemsAtOnce.d.ts +20 -0
- package/dist/material/moves/items/MoveItemsAtOnce.js +10 -0
- package/dist/material/moves/items/MoveItemsAtOnce.js.map +1 -1
- package/dist/material/moves/items/RollItem.d.ts +19 -0
- package/dist/material/moves/items/RollItem.js +10 -0
- package/dist/material/moves/items/RollItem.js.map +1 -1
- package/dist/material/moves/items/SelectItem.d.ts +20 -0
- package/dist/material/moves/items/SelectItem.js +11 -0
- package/dist/material/moves/items/SelectItem.js.map +1 -1
- package/dist/material/moves/items/Shuffle.d.ts +26 -0
- package/dist/material/moves/items/Shuffle.js +15 -0
- package/dist/material/moves/items/Shuffle.js.map +1 -1
- package/dist/material/moves/local/CloseTutorialPopup.d.ts +8 -0
- package/dist/material/moves/local/CloseTutorialPopup.js +5 -0
- package/dist/material/moves/local/CloseTutorialPopup.js.map +1 -1
- package/dist/material/moves/local/DisplayHelp.d.ts +18 -0
- package/dist/material/moves/local/DisplayHelp.js +3 -0
- package/dist/material/moves/local/DisplayHelp.js.map +1 -1
- package/dist/material/moves/local/DropItem.d.ts +9 -0
- package/dist/material/moves/local/LocalMove.d.ts +6 -0
- package/dist/material/moves/local/LocalMove.js +3 -0
- package/dist/material/moves/local/LocalMove.js.map +1 -1
- package/dist/material/moves/local/SetTutorialStep.d.ts +8 -0
- package/dist/material/moves/local/SetTutorialStep.js +5 -0
- package/dist/material/moves/local/SetTutorialStep.js.map +1 -1
- package/dist/material/rules/MaterialRulesPart.d.ts +76 -0
- package/dist/material/rules/MaterialRulesPart.js +75 -3
- package/dist/material/rules/MaterialRulesPart.js.map +1 -1
- package/dist/material/rules/PlayerTurnRule.d.ts +19 -0
- package/dist/material/rules/PlayerTurnRule.js +20 -1
- package/dist/material/rules/PlayerTurnRule.js.map +1 -1
- package/dist/material/rules/RuleStep.d.ts +3 -0
- package/dist/material/rules/SimultaneousRule.d.ts +25 -0
- package/dist/material/rules/SimultaneousRule.js +21 -1
- package/dist/material/rules/SimultaneousRule.js.map +1 -1
- package/dist/material/tutorial/TutorialState.d.ts +7 -0
- package/dist/options/OptionsValidationError.js +1 -1
- package/dist/options/PlayerEnumOption.js +3 -0
- package/dist/options/PlayerEnumOption.js.map +1 -1
- package/dist/utils/action-view.util.js +3 -1
- package/dist/utils/action-view.util.js.map +1 -1
- package/dist/utils/action.util.js +1 -1
- package/dist/utils/action.util.js.map +1 -1
- package/dist/utils/enum.util.d.ts +27 -0
- package/dist/utils/enum.util.js +24 -0
- package/dist/utils/enum.util.js.map +1 -1
- package/dist/utils/grid.squares.util.d.ts +26 -0
- package/dist/utils/grid.squares.util.js +26 -0
- package/dist/utils/grid.squares.util.js.map +1 -1
- package/dist/utils/grid.util.d.ts +8 -0
- package/dist/utils/grid.util.js +5 -0
- package/dist/utils/grid.util.js.map +1 -1
- package/dist/utils/listing.util.d.ts +12 -0
- package/dist/utils/listing.util.js +12 -0
- package/dist/utils/listing.util.js.map +1 -1
- package/dist/utils/money.util.d.ts +42 -4
- package/dist/utils/money.util.js +39 -1
- package/dist/utils/money.util.js.map +1 -1
- package/dist/utils/random.util.d.ts +6 -2
- package/dist/utils/random.util.js +6 -10
- package/dist/utils/random.util.js.map +1 -1
- package/package.json +1 -1
|
@@ -20,6 +20,7 @@ function getPlayersAvailableValues(spec, players) {
|
|
|
20
20
|
}
|
|
21
21
|
exports.getPlayersAvailableValues = getPlayersAvailableValues;
|
|
22
22
|
function generatePlayersOption(playersChoices, option) {
|
|
23
|
+
// Force to pick mandatory values
|
|
23
24
|
var mandatoryValues = getPlayersMandatoryValues(option, playersChoices.length);
|
|
24
25
|
for (var _i = 0, mandatoryValues_1 = mandatoryValues; _i < mandatoryValues_1.length; _i++) {
|
|
25
26
|
var mandatoryValue = mandatoryValues_1[_i];
|
|
@@ -29,6 +30,7 @@ function generatePlayersOption(playersChoices, option) {
|
|
|
29
30
|
playersChoices[index] = mandatoryValue;
|
|
30
31
|
}
|
|
31
32
|
}
|
|
33
|
+
// Remove invalid choices
|
|
32
34
|
var availableValues = getPlayersAvailableValues(option, playersChoices.length);
|
|
33
35
|
var _loop_1 = function (i) {
|
|
34
36
|
var choice = playersChoices[i];
|
|
@@ -52,6 +54,7 @@ function generatePlayersOption(playersChoices, option) {
|
|
|
52
54
|
_loop_1(i);
|
|
53
55
|
}
|
|
54
56
|
if (!option.optional) {
|
|
57
|
+
// Provide missing choices (different values if possible)
|
|
55
58
|
var remainingValues = (0, difference_1.default)(availableValues, playersChoices);
|
|
56
59
|
for (var i = 0; i < playersChoices.length; i++) {
|
|
57
60
|
if (playersChoices[i] === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlayerEnumOption.js","sourceRoot":"","sources":["../../src/options/PlayerEnumOption.ts"],"names":[],"mappings":";;;;;;AACA,iEAA0C;AAc1C,SAAgB,yBAAyB,CAAU,IAAyB,EAAE,OAAe;IAC3F,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACtD,CAAC;AAFD,8DAEC;AAED,SAAgB,yBAAyB,CAAU,IAAyB,EAAE,OAAe;IAC3F,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,IAAM,mBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;QACnD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,mBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAlC,CAAkC,CAAC,CAAA;IACxE,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;AACH,CAAC;AAPD,8DAOC;AAED,SAAgB,qBAAqB,CAAI,cAA4B,EAAE,MAA2B;
|
|
1
|
+
{"version":3,"file":"PlayerEnumOption.js","sourceRoot":"","sources":["../../src/options/PlayerEnumOption.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,16 +7,18 @@ var automatic_moves_util_1 = require("./automatic-moves.util");
|
|
|
7
7
|
var random_util_1 = require("./random.util");
|
|
8
8
|
function playActionWithViews(rules, move, playerId, recipients, id) {
|
|
9
9
|
if ((0, random_util_1.hasRandomMove)(rules)) {
|
|
10
|
-
move = rules.randomize(move);
|
|
10
|
+
move = rules.randomize(move, playerId);
|
|
11
11
|
}
|
|
12
12
|
var actionWithView = {
|
|
13
13
|
action: { id: id, playerId: playerId, move: move, consequences: [] },
|
|
14
14
|
views: []
|
|
15
15
|
};
|
|
16
|
+
// Prepare action view for each player
|
|
16
17
|
for (var _i = 0, recipients_1 = recipients; _i < recipients_1.length; _i++) {
|
|
17
18
|
var recipient = recipients_1[_i];
|
|
18
19
|
actionWithView.views.push({ recipient: recipient, action: { id: id, playerId: playerId, move: getMoveView(rules, move, recipient), consequences: [] } });
|
|
19
20
|
}
|
|
21
|
+
// Prepare action view for spectators
|
|
20
22
|
actionWithView.views.push({ action: { id: id, playerId: playerId, move: getMoveView(rules, move), consequences: [] } });
|
|
21
23
|
var consequences = rules.play(JSON.parse(JSON.stringify(move)));
|
|
22
24
|
(0, automatic_moves_util_1.applyAutomaticMoves)(rules, consequences, function (move) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-view.util.js","sourceRoot":"","sources":["../../src/utils/action-view.util.ts"],"names":[],"mappings":";;;AACA,0DAA8E;AAE9E,0DAA2D;AAC3D,+DAA4D;AAC5D,6CAA6C;AAY7C,SAAgB,mBAAmB,CACjC,KAA4E,EAAE,IAAU,EAAE,QAAkB,EAAE,UAAsB,EAAE,EAAW;IAGjJ,IAAI,IAAA,2BAAa,EAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"action-view.util.js","sourceRoot":"","sources":["../../src/utils/action-view.util.ts"],"names":[],"mappings":";;;AACA,0DAA8E;AAE9E,0DAA2D;AAC3D,+DAA4D;AAC5D,6CAA6C;AAY7C,SAAgB,mBAAmB,CACjC,KAA4E,EAAE,IAAU,EAAE,QAAkB,EAAE,UAAsB,EAAE,EAAW;IAGjJ,IAAI,IAAA,2BAAa,EAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED,IAAM,cAAc,GAA8C;QAChE,MAAM,EAAE,EAAE,EAAE,IAAA,EAAE,QAAQ,UAAA,EAAE,IAAI,MAAA,EAAE,YAAY,EAAE,EAAE,EAAE;QAChD,KAAK,EAAE,EAAE;KACV,CAAA;IAED,sCAAsC;IACtC,KAAwB,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU,EAAE,CAAC;QAAhC,IAAM,SAAS,mBAAA;QAClB,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,SAAS,WAAA,EAAE,MAAM,EAAE,EAAE,EAAE,IAAA,EAAE,QAAQ,UAAA,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IACjI,CAAC;IACD,qCAAqC;IACrC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAA,EAAE,QAAQ,UAAA,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAEzG,IAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAEjE,IAAA,0CAAmB,EAAC,KAAK,EAAE,YAAY,EAAE,UAAA,IAAI;QAC3C,cAAc,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,KAAmB,UAAoB,EAApB,KAAA,cAAc,CAAC,KAAK,EAApB,cAAoB,EAApB,IAAoB,EAAE,CAAC;YAArC,IAAM,IAAI,SAAA;YACb,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QACzE,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,cAAc,CAAA;AACvB,CAAC;AA9BD,kDA8BC;AAED,SAAgB,WAAW,CAAqC,KAAiC,EAAE,IAAU,EAAE,QAAmB;IAChI,IAAI,IAAA,wCAAoB,EAAqC,KAAK,CAAC,IAAI,KAAK,CAAC,iBAAiB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC5E,CAAC;SAAM,IAAI,IAAA,wCAAoB,EAA2B,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,IAAuB,CAAA;IAChC,CAAC;AACH,CAAC;AARD,kCAQC;AAMD,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAE,MAAuB,CAAC,OAAO,CAAC,CAAA;AACxD,CAAC;AAFD,wCAEC"}
|
|
@@ -5,7 +5,7 @@ var automatic_moves_util_1 = require("./automatic-moves.util");
|
|
|
5
5
|
var random_util_1 = require("./random.util");
|
|
6
6
|
function playAction(rules, move, playerId) {
|
|
7
7
|
if ((0, random_util_1.hasRandomMove)(rules)) {
|
|
8
|
-
move = rules.randomize(move);
|
|
8
|
+
move = rules.randomize(move, playerId);
|
|
9
9
|
}
|
|
10
10
|
var action = { playerId: playerId, move: move, consequences: [] };
|
|
11
11
|
var consequences = rules.play(JSON.parse(JSON.stringify(move)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.util.js","sourceRoot":"","sources":["../../src/utils/action.util.ts"],"names":[],"mappings":";;;AAEA,+DAA4D;AAC5D,6CAA6C;AAE7C,SAAgB,UAAU,CAAuB,KAAkC,EAAE,IAAU,EAAE,QAAkB;IACjH,IAAI,IAAA,2BAAa,EAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"action.util.js","sourceRoot":"","sources":["../../src/utils/action.util.ts"],"names":[],"mappings":";;;AAEA,+DAA4D;AAC5D,6CAA6C;AAE7C,SAAgB,UAAU,CAAuB,KAAkC,EAAE,IAAU,EAAE,QAAkB;IACjH,IAAI,IAAA,2BAAa,EAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED,IAAM,MAAM,GAA2B,EAAE,QAAQ,UAAA,EAAE,IAAI,MAAA,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;IAE3E,IAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAEjE,IAAA,0CAAmB,EAAC,KAAK,EAAE,YAAY,EAAE,UAAA,IAAI,IAAI,OAAA,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAA9B,CAA8B,CAAC,CAAA;IAEhF,OAAO,MAAM,CAAA;AACf,CAAC;AAZD,gCAYC;AAED,SAAgB,YAAY,CAAuB,KAAkC,EAAE,MAA8B;IACnH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnD,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,IAAI,IAAI,OAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAA5C,CAA4C,CAAC,CAAA;AACnF,CAAC;AAHD,oCAGC;AAED,SAAgB,aAAa,CAAuB,KAAkC,EAAE,OAAiC;IACvH,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM,IAAI,OAAA,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,EAA3B,CAA2B,CAAC,CAAA;AACxD,CAAC;AAFD,sCAEC"}
|
|
@@ -1,7 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic type for typescript enum objects
|
|
3
|
+
*/
|
|
1
4
|
export type Enum<E> = Record<keyof E, number | string> & {
|
|
2
5
|
[k: number]: string;
|
|
3
6
|
};
|
|
7
|
+
/**
|
|
8
|
+
* Get the keys of an enum at run time.
|
|
9
|
+
* Credits to https://github.com/tranvansang/enum-for
|
|
10
|
+
*
|
|
11
|
+
* @param enumType The enumeration
|
|
12
|
+
* @returns returns the list of the keys of the enum
|
|
13
|
+
*/
|
|
4
14
|
export declare function getEnumKeys<E extends Enum<E>>(enumType: E): Array<keyof E>;
|
|
15
|
+
/**
|
|
16
|
+
* Get the values of an enum at run time.
|
|
17
|
+
* Credits to https://github.com/tranvansang/enum-for
|
|
18
|
+
*
|
|
19
|
+
* @param enumType The enumeration
|
|
20
|
+
* @returns returns the list of the values of the enum
|
|
21
|
+
*/
|
|
5
22
|
export declare function getEnumValues<E extends Enum<E>>(enumType: E): Array<E[keyof E]>;
|
|
23
|
+
/**
|
|
24
|
+
* Get the entries of an enum at run time.
|
|
25
|
+
* Credits to https://github.com/tranvansang/enum-for
|
|
26
|
+
*
|
|
27
|
+
* @param enumType The enumeration
|
|
28
|
+
* @returns returns the list of the entries of the enum
|
|
29
|
+
*/
|
|
6
30
|
export declare function getEnumEntries<E extends Enum<E>>(enumType: E): Array<[keyof E, E[keyof E]]>;
|
|
31
|
+
/**
|
|
32
|
+
* @deprecated Use getEnumValues instead
|
|
33
|
+
*/
|
|
7
34
|
export declare function isEnumValue<T>(value: string | T): value is T;
|
package/dist/utils/enum.util.js
CHANGED
|
@@ -1,18 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isEnumValue = exports.getEnumEntries = exports.getEnumValues = exports.getEnumKeys = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Get the keys of an enum at run time.
|
|
6
|
+
* Credits to https://github.com/tranvansang/enum-for
|
|
7
|
+
*
|
|
8
|
+
* @param enumType The enumeration
|
|
9
|
+
* @returns returns the list of the keys of the enum
|
|
10
|
+
*/
|
|
4
11
|
function getEnumKeys(enumType) {
|
|
5
12
|
return Object.keys(enumType).filter(function (key) { return isNaN(Number(key)); });
|
|
6
13
|
}
|
|
7
14
|
exports.getEnumKeys = getEnumKeys;
|
|
15
|
+
/**
|
|
16
|
+
* Get the values of an enum at run time.
|
|
17
|
+
* Credits to https://github.com/tranvansang/enum-for
|
|
18
|
+
*
|
|
19
|
+
* @param enumType The enumeration
|
|
20
|
+
* @returns returns the list of the values of the enum
|
|
21
|
+
*/
|
|
8
22
|
function getEnumValues(enumType) {
|
|
9
23
|
return getEnumKeys(enumType).map(function (key) { return enumType[key]; });
|
|
10
24
|
}
|
|
11
25
|
exports.getEnumValues = getEnumValues;
|
|
26
|
+
/**
|
|
27
|
+
* Get the entries of an enum at run time.
|
|
28
|
+
* Credits to https://github.com/tranvansang/enum-for
|
|
29
|
+
*
|
|
30
|
+
* @param enumType The enumeration
|
|
31
|
+
* @returns returns the list of the entries of the enum
|
|
32
|
+
*/
|
|
12
33
|
function getEnumEntries(enumType) {
|
|
13
34
|
return getEnumKeys(enumType).map(function (key) { return [key, enumType[key]]; });
|
|
14
35
|
}
|
|
15
36
|
exports.getEnumEntries = getEnumEntries;
|
|
37
|
+
/**
|
|
38
|
+
* @deprecated Use getEnumValues instead
|
|
39
|
+
*/
|
|
16
40
|
function isEnumValue(value) {
|
|
17
41
|
return typeof value !== 'string';
|
|
18
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum.util.js","sourceRoot":"","sources":["../../src/utils/enum.util.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"enum.util.js","sourceRoot":"","sources":["../../src/utils/enum.util.ts"],"names":[],"mappings":";;;AAKA;;;;;;GAMG;AACH,SAAgB,WAAW,CAAoB,QAAW;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAlB,CAAkB,CAAmB,CAAA;AAClF,CAAC;AAFD,kCAEC;AAED;;;;;;GAMG;AACH,SAAgB,aAAa,CAAoB,QAAW;IAC1D,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,QAAQ,CAAC,GAAG,CAAC,EAAb,CAAa,CAAC,CAAA;AACxD,CAAC;AAFD,sCAEC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAoB,QAAW;IAC3D,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,EAApB,CAAoB,CAAC,CAAA;AAC/D,CAAC;AAFD,wCAEC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAI,KAAiB;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAA;AAClC,CAAC;AAFD,kCAEC"}
|
|
@@ -1,11 +1,37 @@
|
|
|
1
1
|
import { XYCoordinates } from './grid.util';
|
|
2
|
+
/**
|
|
3
|
+
* Check if two squares in a grid are orthogonally adjacent based on their coordinates
|
|
4
|
+
* @param square1 Coordinates of the first square
|
|
5
|
+
* @param square2 Coordinates of the second square
|
|
6
|
+
* @returns true if the squares are orthogonally adjacent
|
|
7
|
+
*/
|
|
2
8
|
export declare const areAdjacentSquares: (square1: Partial<XYCoordinates>, square2: Partial<XYCoordinates>) => boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Get the distance between 2 squares in a square-grid, ie the minimum number of steps you need to take to go from square 1 to square 2 following
|
|
11
|
+
* orthogonally adjacent squares
|
|
12
|
+
* @param square1 Coordinates of the first square
|
|
13
|
+
* @param square2 Coordinates of the second square
|
|
14
|
+
* @returns the distance between square1 and square2
|
|
15
|
+
*/
|
|
3
16
|
export declare const getDistanceBetweenSquares: (square1: XYCoordinates, square2: XYCoordinates) => number;
|
|
17
|
+
/**
|
|
18
|
+
* The direction (cardinal points) you can orient in a square grid
|
|
19
|
+
*/
|
|
4
20
|
export declare enum Direction {
|
|
5
21
|
North = 1,
|
|
6
22
|
South = 2,
|
|
7
23
|
East = 3,
|
|
8
24
|
West = 4
|
|
9
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* List of the 4 {@link Direction}s
|
|
28
|
+
*/
|
|
10
29
|
export declare const directions: Direction[];
|
|
30
|
+
/**
|
|
31
|
+
* Get the coordinates of the next square if you move in a square grid following a direction
|
|
32
|
+
* @param origin The coordinates of the square you start from
|
|
33
|
+
* @param direction The direction you move to
|
|
34
|
+
* @param distance The number of steps you move (A by default)
|
|
35
|
+
* @returns the coordinates of the destination square
|
|
36
|
+
*/
|
|
11
37
|
export declare const getSquareInDirection: (origin: Partial<XYCoordinates>, direction: Direction, distance?: number) => XYCoordinates;
|
|
@@ -3,14 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getSquareInDirection = exports.directions = exports.Direction = exports.getDistanceBetweenSquares = exports.areAdjacentSquares = void 0;
|
|
4
4
|
var enum_util_1 = require("./enum.util");
|
|
5
5
|
var grid_util_1 = require("./grid.util");
|
|
6
|
+
/**
|
|
7
|
+
* Check if two squares in a grid are orthogonally adjacent based on their coordinates
|
|
8
|
+
* @param square1 Coordinates of the first square
|
|
9
|
+
* @param square2 Coordinates of the second square
|
|
10
|
+
* @returns true if the squares are orthogonally adjacent
|
|
11
|
+
*/
|
|
6
12
|
var areAdjacentSquares = function (square1, square2) {
|
|
7
13
|
return (0, grid_util_1.isXYCoordinates)(square1) && (0, grid_util_1.isXYCoordinates)(square2) && (0, exports.getDistanceBetweenSquares)(square1, square2) === 1;
|
|
8
14
|
};
|
|
9
15
|
exports.areAdjacentSquares = areAdjacentSquares;
|
|
16
|
+
/**
|
|
17
|
+
* Get the distance between 2 squares in a square-grid, ie the minimum number of steps you need to take to go from square 1 to square 2 following
|
|
18
|
+
* orthogonally adjacent squares
|
|
19
|
+
* @param square1 Coordinates of the first square
|
|
20
|
+
* @param square2 Coordinates of the second square
|
|
21
|
+
* @returns the distance between square1 and square2
|
|
22
|
+
*/
|
|
10
23
|
var getDistanceBetweenSquares = function (square1, square2) {
|
|
11
24
|
return Math.abs(square1.x - square2.x) + Math.abs(square1.y - square2.y);
|
|
12
25
|
};
|
|
13
26
|
exports.getDistanceBetweenSquares = getDistanceBetweenSquares;
|
|
27
|
+
/**
|
|
28
|
+
* The direction (cardinal points) you can orient in a square grid
|
|
29
|
+
*/
|
|
14
30
|
var Direction;
|
|
15
31
|
(function (Direction) {
|
|
16
32
|
Direction[Direction["North"] = 1] = "North";
|
|
@@ -18,7 +34,17 @@ var Direction;
|
|
|
18
34
|
Direction[Direction["East"] = 3] = "East";
|
|
19
35
|
Direction[Direction["West"] = 4] = "West";
|
|
20
36
|
})(Direction || (exports.Direction = Direction = {}));
|
|
37
|
+
/**
|
|
38
|
+
* List of the 4 {@link Direction}s
|
|
39
|
+
*/
|
|
21
40
|
exports.directions = (0, enum_util_1.getEnumValues)(Direction);
|
|
41
|
+
/**
|
|
42
|
+
* Get the coordinates of the next square if you move in a square grid following a direction
|
|
43
|
+
* @param origin The coordinates of the square you start from
|
|
44
|
+
* @param direction The direction you move to
|
|
45
|
+
* @param distance The number of steps you move (A by default)
|
|
46
|
+
* @returns the coordinates of the destination square
|
|
47
|
+
*/
|
|
22
48
|
var getSquareInDirection = function (origin, direction, distance) {
|
|
23
49
|
if (distance === void 0) { distance = 1; }
|
|
24
50
|
if (origin.x === undefined || origin.y === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.squares.util.js","sourceRoot":"","sources":["../../src/utils/grid.squares.util.ts"],"names":[],"mappings":";;;AAAA,yCAA2C;AAC3C,yCAA4D;
|
|
1
|
+
{"version":3,"file":"grid.squares.util.js","sourceRoot":"","sources":["../../src/utils/grid.squares.util.ts"],"names":[],"mappings":";;;AAAA,yCAA2C;AAC3C,yCAA4D;AAE5D;;;;;GAKG;AACI,IAAM,kBAAkB,GAAG,UAAC,OAA+B,EAAE,OAA+B;IACjG,OAAA,IAAA,2BAAe,EAAC,OAAO,CAAC,IAAI,IAAA,2BAAe,EAAC,OAAO,CAAC,IAAI,IAAA,iCAAyB,EAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;AAAzG,CAAyG,CAAA;AAD9F,QAAA,kBAAkB,sBAC4E;AAE3G;;;;;;GAMG;AACI,IAAM,yBAAyB,GAAG,UAAC,OAAsB,EAAE,OAAsB;IACtF,OAAA,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;AAAjE,CAAiE,CAAA;AADtD,QAAA,yBAAyB,6BAC6B;AAEnE;;GAEG;AACH,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,2CAAS,CAAA;IAAE,2CAAK,CAAA;IAAE,yCAAI,CAAA;IAAE,yCAAI,CAAA;AAC9B,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB;AAED;;GAEG;AACU,QAAA,UAAU,GAAG,IAAA,yBAAa,EAAC,SAAS,CAAC,CAAA;AAElD;;;;;;GAMG;AACI,IAAM,oBAAoB,GAAG,UAAC,MAA8B,EAAE,SAAoB,EAAE,QAAY;IAAZ,yBAAA,EAAA,YAAY;IACrG,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC/G,OAAO;QACL,CAAC,EAAE,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrH,CAAC,EAAE,SAAS,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;KACxH,CAAA;AACH,CAAC,CAAA;AANY,QAAA,oBAAoB,wBAMhC"}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type for any object with XY number coordinates
|
|
3
|
+
*/
|
|
1
4
|
export type XYCoordinates = {
|
|
2
5
|
x: number;
|
|
3
6
|
y: number;
|
|
4
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* Type guard to know if we have an object with XY coordinates
|
|
10
|
+
* @param coordinates The object
|
|
11
|
+
* @returns true if coordinates is a {@link XYCoordinates}
|
|
12
|
+
*/
|
|
5
13
|
export declare const isXYCoordinates: (coordinates: any) => coordinates is XYCoordinates;
|
package/dist/utils/grid.util.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isXYCoordinates = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Type guard to know if we have an object with XY coordinates
|
|
6
|
+
* @param coordinates The object
|
|
7
|
+
* @returns true if coordinates is a {@link XYCoordinates}
|
|
8
|
+
*/
|
|
4
9
|
var isXYCoordinates = function (coordinates) {
|
|
5
10
|
return typeof coordinates === 'object' && typeof coordinates.x === 'number' && typeof coordinates.y === 'number';
|
|
6
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.util.js","sourceRoot":"","sources":["../../src/utils/grid.util.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"grid.util.js","sourceRoot":"","sources":["../../src/utils/grid.util.ts"],"names":[],"mappings":";;;AAQA;;;;GAIG;AACI,IAAM,eAAe,GAAG,UAAC,WAAgB;IAC9C,OAAO,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,WAAW,CAAC,CAAC,KAAK,QAAQ,CAAA;AAClH,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B"}
|
|
@@ -1,2 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A listing is a quantity of items indexed by they identifier
|
|
3
|
+
* Use this function to get a list of items where each item is included as much time as their listed quantity
|
|
4
|
+
* @param listing The listing
|
|
5
|
+
* @returns the list matching the listing
|
|
6
|
+
*/
|
|
1
7
|
export declare function listingToList<T extends number>(listing: Partial<Record<T, number>>): T[];
|
|
8
|
+
/**
|
|
9
|
+
* A listing is a quantity of items indexed by they identifier
|
|
10
|
+
* Use this function to get a listing based on a list with potential duplicates
|
|
11
|
+
* @param list The list
|
|
12
|
+
* @returns the listing matching the list
|
|
13
|
+
*/
|
|
2
14
|
export declare function listToListing<T extends number>(list: T[]): Partial<Record<T, number>>;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.listToListing = exports.listingToList = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A listing is a quantity of items indexed by they identifier
|
|
6
|
+
* Use this function to get a list of items where each item is included as much time as their listed quantity
|
|
7
|
+
* @param listing The listing
|
|
8
|
+
* @returns the list matching the listing
|
|
9
|
+
*/
|
|
4
10
|
function listingToList(listing) {
|
|
5
11
|
var list = [];
|
|
6
12
|
for (var key in listing) {
|
|
@@ -12,6 +18,12 @@ function listingToList(listing) {
|
|
|
12
18
|
return list;
|
|
13
19
|
}
|
|
14
20
|
exports.listingToList = listingToList;
|
|
21
|
+
/**
|
|
22
|
+
* A listing is a quantity of items indexed by they identifier
|
|
23
|
+
* Use this function to get a listing based on a list with potential duplicates
|
|
24
|
+
* @param list The list
|
|
25
|
+
* @returns the listing matching the list
|
|
26
|
+
*/
|
|
15
27
|
function listToListing(list) {
|
|
16
28
|
var listing = [];
|
|
17
29
|
for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listing.util.js","sourceRoot":"","sources":["../../src/utils/listing.util.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"listing.util.js","sourceRoot":"","sources":["../../src/utils/listing.util.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,aAAa,CAAmB,OAAmC;IACjF,IAAM,IAAI,GAAQ,EAAE,CAAA;IACpB,KAAK,IAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAM,CAAA;QACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AATD,sCASC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAmB,IAAS;IACvD,IAAM,OAAO,GAA+B,EAAE,CAAA;IAC9C,KAAgB,UAAI,EAAJ,aAAI,EAAJ,kBAAI,EAAJ,IAAI,EAAE,CAAC;QAAlB,IAAM,CAAC,aAAA;QACV,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAND,sCAMC"}
|
|
@@ -1,11 +1,49 @@
|
|
|
1
1
|
import { Location, Material, MaterialMove } from '../material';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* This class help manipulate any kind of money with arbitrary unit values, like a set of coins of values 1, 2, 5, 10 for instance.
|
|
4
|
+
* @deprecated use {@link MaterialMoney} instead
|
|
5
|
+
*/
|
|
6
|
+
export declare class Money<Unit extends number = number, P extends number = number, M extends number = number, L extends number = number> {
|
|
3
7
|
private units;
|
|
4
8
|
constructor(units: Unit[]);
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Count the total value of a material instance
|
|
11
|
+
* @param material The material to count
|
|
12
|
+
* @returns the sum of each item id multiplied by its quantity
|
|
13
|
+
*/
|
|
14
|
+
count(material: Material<P, M, L>): number;
|
|
15
|
+
/**
|
|
16
|
+
* Perform an operation of adding or removing an amount from a location by creating or deleting items
|
|
17
|
+
* @param material The material instance
|
|
18
|
+
* @param location The location to filter material onto, and to create new items in
|
|
19
|
+
* @param amount Amount to create or delete
|
|
20
|
+
* @returns the moves that need to be played to perform the operation
|
|
21
|
+
*/
|
|
22
|
+
createOrDelete(material: Material<P, M, L>, location: Location<P, L>, amount: number): MaterialMove<P, M, L>[];
|
|
23
|
+
/**
|
|
24
|
+
* Move an amount of money from a place to another place. It searches after the easiest way to do it, making money with the bank only if necessary.
|
|
25
|
+
* @param material Material instance for the money (needs to be unfiltered)
|
|
26
|
+
* @param origin Location to remove money from
|
|
27
|
+
* @param target Location to move money to
|
|
28
|
+
* @param amount Amount of money to transfer
|
|
29
|
+
* @returns the moves that need to be played to perform the operation
|
|
30
|
+
*/
|
|
31
|
+
moveAmount(material: Material<P, M, L>, origin: Location<P, L>, target: Location<P, L>, amount: number): MaterialMove<P, M, L>[];
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new record indexes by all units, with value equal to 0 for each unit
|
|
34
|
+
*/
|
|
8
35
|
get record(): Record<Unit, number>;
|
|
36
|
+
/**
|
|
37
|
+
* Return the best way to gain an amount, prioritizing the highest unit values
|
|
38
|
+
* @param amount Amount to gain, default 1
|
|
39
|
+
* @returns the record of coins to earn (only positive values)
|
|
40
|
+
*/
|
|
9
41
|
gain(amount?: number): Record<Unit, number>;
|
|
42
|
+
/**
|
|
43
|
+
* Return the best way to spend an amount of owned units, prioritizing the smallest unit values
|
|
44
|
+
* @param owned Amount of units owned before spending
|
|
45
|
+
* @param amount Amount to gain, default 1
|
|
46
|
+
* @returns the record of coins to give away and eventually take (positive and negative values)
|
|
47
|
+
*/
|
|
10
48
|
spend(owned: Record<Unit, number>, amount?: number): Record<Unit, number>;
|
|
11
49
|
}
|
package/dist/utils/money.util.js
CHANGED
|
@@ -9,14 +9,30 @@ var isEqual_1 = __importDefault(require("lodash/isEqual"));
|
|
|
9
9
|
var keyBy_1 = __importDefault(require("lodash/keyBy"));
|
|
10
10
|
var mapValues_1 = __importDefault(require("lodash/mapValues"));
|
|
11
11
|
var sumBy_1 = __importDefault(require("lodash/sumBy"));
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* This class help manipulate any kind of money with arbitrary unit values, like a set of coins of values 1, 2, 5, 10 for instance.
|
|
14
|
+
* @deprecated use {@link MaterialMoney} instead
|
|
15
|
+
*/
|
|
16
|
+
var Money = /** @class */ (function () {
|
|
13
17
|
function Money(units) {
|
|
14
18
|
this.units = units;
|
|
15
19
|
this.units.sort(function (a, b) { return a - b; });
|
|
16
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Count the total value of a material instance
|
|
23
|
+
* @param material The material to count
|
|
24
|
+
* @returns the sum of each item id multiplied by its quantity
|
|
25
|
+
*/
|
|
17
26
|
Money.prototype.count = function (material) {
|
|
18
27
|
return (0, sumBy_1.default)(material.getItems(), function (item) { var _a, _b; return ((_a = item.id) !== null && _a !== void 0 ? _a : 1) * ((_b = item.quantity) !== null && _b !== void 0 ? _b : 1); });
|
|
19
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Perform an operation of adding or removing an amount from a location by creating or deleting items
|
|
31
|
+
* @param material The material instance
|
|
32
|
+
* @param location The location to filter material onto, and to create new items in
|
|
33
|
+
* @param amount Amount to create or delete
|
|
34
|
+
* @returns the moves that need to be played to perform the operation
|
|
35
|
+
*/
|
|
20
36
|
Money.prototype.createOrDelete = function (material, location, amount) {
|
|
21
37
|
material = material.location(function (l) { return (0, isEqual_1.default)(l, location); });
|
|
22
38
|
var moves = [];
|
|
@@ -32,6 +48,14 @@ var Money = (function () {
|
|
|
32
48
|
}
|
|
33
49
|
return moves;
|
|
34
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* Move an amount of money from a place to another place. It searches after the easiest way to do it, making money with the bank only if necessary.
|
|
53
|
+
* @param material Material instance for the money (needs to be unfiltered)
|
|
54
|
+
* @param origin Location to remove money from
|
|
55
|
+
* @param target Location to move money to
|
|
56
|
+
* @param amount Amount of money to transfer
|
|
57
|
+
* @returns the moves that need to be played to perform the operation
|
|
58
|
+
*/
|
|
35
59
|
Money.prototype.moveAmount = function (material, origin, target, amount) {
|
|
36
60
|
if (!amount)
|
|
37
61
|
return [];
|
|
@@ -92,12 +116,20 @@ var Money = (function () {
|
|
|
92
116
|
return moves;
|
|
93
117
|
};
|
|
94
118
|
Object.defineProperty(Money.prototype, "record", {
|
|
119
|
+
/**
|
|
120
|
+
* Creates a new record indexes by all units, with value equal to 0 for each unit
|
|
121
|
+
*/
|
|
95
122
|
get: function () {
|
|
96
123
|
return (0, mapValues_1.default)((0, keyBy_1.default)(this.units), function (_) { return 0; });
|
|
97
124
|
},
|
|
98
125
|
enumerable: false,
|
|
99
126
|
configurable: true
|
|
100
127
|
});
|
|
128
|
+
/**
|
|
129
|
+
* Return the best way to gain an amount, prioritizing the highest unit values
|
|
130
|
+
* @param amount Amount to gain, default 1
|
|
131
|
+
* @returns the record of coins to earn (only positive values)
|
|
132
|
+
*/
|
|
101
133
|
Money.prototype.gain = function (amount) {
|
|
102
134
|
if (amount === void 0) { amount = 1; }
|
|
103
135
|
var gain = this.record;
|
|
@@ -107,6 +139,12 @@ var Money = (function () {
|
|
|
107
139
|
});
|
|
108
140
|
return gain;
|
|
109
141
|
};
|
|
142
|
+
/**
|
|
143
|
+
* Return the best way to spend an amount of owned units, prioritizing the smallest unit values
|
|
144
|
+
* @param owned Amount of units owned before spending
|
|
145
|
+
* @param amount Amount to gain, default 1
|
|
146
|
+
* @returns the record of coins to give away and eventually take (positive and negative values)
|
|
147
|
+
*/
|
|
110
148
|
Money.prototype.spend = function (owned, amount) {
|
|
111
149
|
if (amount === void 0) { amount = 1; }
|
|
112
150
|
var delta = (0, mapValues_1.default)(owned, function (_) { return 0; });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"money.util.js","sourceRoot":"","sources":["../../src/utils/money.util.ts"],"names":[],"mappings":";;;;;;AAAA,qEAA8C;AAC9C,2DAAoC;AACpC,uDAAgC;AAChC,+DAAwC;AACxC,uDAAgC;
|
|
1
|
+
{"version":3,"file":"money.util.js","sourceRoot":"","sources":["../../src/utils/money.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { RandomMove } from '../RandomMove';
|
|
2
2
|
import { Rules } from '../Rules';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Type guard for rules with Random moves
|
|
5
|
+
* @param rules The game's rules
|
|
6
|
+
* @return true if the rules implements {@link RandomMove} interface
|
|
7
|
+
*/
|
|
8
|
+
export declare function hasRandomMove<Game, Move, RandomizedMove, PlayerId>(rules: Rules<Game, Move, PlayerId>): rules is Rules<Game, Move> & RandomMove<Move, RandomizedMove, PlayerId>;
|
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.hasRandomMove = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Type guard for rules with Random moves
|
|
6
|
+
* @param rules The game's rules
|
|
7
|
+
* @return true if the rules implements {@link RandomMove} interface
|
|
8
|
+
*/
|
|
4
9
|
function hasRandomMove(rules) {
|
|
5
10
|
var test = rules;
|
|
6
11
|
return typeof test.randomize === 'function';
|
|
7
12
|
}
|
|
8
13
|
exports.hasRandomMove = hasRandomMove;
|
|
9
|
-
function randomizeMoves(rules, moves) {
|
|
10
|
-
if (hasRandomMove(rules)) {
|
|
11
|
-
return moves.map(function (move) { return rules.randomize(move); });
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
return moves;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.randomizeMoves = randomizeMoves;
|
|
18
14
|
//# sourceMappingURL=random.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"random.util.js","sourceRoot":"","sources":["../../src/utils/random.util.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"random.util.js","sourceRoot":"","sources":["../../src/utils/random.util.ts"],"names":[],"mappings":";;;AAGA;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,KAAkC;IAElC,IAAM,IAAI,GAAG,KAAuE,CAAA;IACpF,OAAO,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,CAAA;AAC7C,CAAC;AALD,sCAKC"}
|