@gamepark/rules-api 7.0.0-beta.0 → 7.0.0-beta.2
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.js +1 -2
- package/dist/Bot.js +15 -37
- package/dist/Bot.js.map +1 -1
- package/dist/Competitive.js +3 -8
- package/dist/Competitive.js.map +1 -1
- package/dist/Eliminations.js +2 -5
- package/dist/Eliminations.js.map +1 -1
- package/dist/GameSetup.js +1 -2
- package/dist/HiddenInformation.js +2 -5
- package/dist/HiddenInformation.js.map +1 -1
- package/dist/LocalMovePreview.js +1 -4
- package/dist/LocalMovePreview.js.map +1 -1
- package/dist/RandomMove.js +1 -2
- package/dist/Rules.js +49 -56
- package/dist/Rules.js.map +1 -1
- package/dist/SecretInformation.js +2 -5
- package/dist/SecretInformation.js.map +1 -1
- package/dist/TimeLimit.js +1 -4
- package/dist/TimeLimit.js.map +1 -1
- package/dist/Undo.js +2 -5
- package/dist/Undo.js.map +1 -1
- package/dist/UnpredictableMove.js +1 -5
- package/dist/UnpredictableMove.js.map +1 -1
- package/dist/index.js +16 -32
- package/dist/index.js.map +1 -1
- package/dist/material/HiddenMaterialRules.js +125 -180
- package/dist/material/HiddenMaterialRules.js.map +1 -1
- package/dist/material/MaterialGame.js +1 -2
- package/dist/material/MaterialGameSetup.js +52 -70
- package/dist/material/MaterialGameSetup.js.map +1 -1
- package/dist/material/MaterialRules.js +186 -250
- package/dist/material/MaterialRules.js.map +1 -1
- package/dist/material/SecretMaterialRules.js +9 -35
- package/dist/material/SecretMaterialRules.js.map +1 -1
- package/dist/material/index.js +11 -27
- package/dist/material/index.js.map +1 -1
- package/dist/material/items/Material.js +177 -262
- package/dist/material/items/Material.js.map +1 -1
- package/dist/material/items/MaterialDeck.js +10 -36
- package/dist/material/items/MaterialDeck.js.map +1 -1
- package/dist/material/items/MaterialItem.js +1 -2
- package/dist/material/items/MaterialMoney.js +89 -141
- package/dist/material/items/MaterialMoney.js.map +1 -1
- package/dist/material/items/MaterialMutator.js +108 -145
- package/dist/material/items/MaterialMutator.js.map +1 -1
- package/dist/material/items/index.js +5 -21
- package/dist/material/items/index.js.map +1 -1
- package/dist/material/location/Location.js +1 -14
- package/dist/material/location/Location.js.map +1 -1
- package/dist/material/location/LocationBuilder.js +26 -41
- package/dist/material/location/LocationBuilder.js.map +1 -1
- package/dist/material/location/index.js +3 -19
- package/dist/material/location/index.js.map +1 -1
- package/dist/material/location/strategy/FillGapStrategy.js +9 -16
- package/dist/material/location/strategy/FillGapStrategy.js.map +1 -1
- package/dist/material/location/strategy/LocationStrategy.js +1 -2
- package/dist/material/location/strategy/PositiveSequenceStrategy.js +26 -35
- package/dist/material/location/strategy/PositiveSequenceStrategy.js.map +1 -1
- package/dist/material/location/strategy/StackingStrategy.js +15 -22
- package/dist/material/location/strategy/StackingStrategy.js.map +1 -1
- package/dist/material/location/strategy/index.js +5 -23
- package/dist/material/location/strategy/index.js.map +1 -1
- package/dist/material/memory/GameMemory.js +10 -14
- package/dist/material/memory/GameMemory.js.map +1 -1
- package/dist/material/memory/PlayerMemory.js +13 -18
- package/dist/material/memory/PlayerMemory.js.map +1 -1
- package/dist/material/memory/index.js +2 -18
- package/dist/material/memory/index.js.map +1 -1
- package/dist/material/moves/CustomMove.js +4 -9
- package/dist/material/moves/CustomMove.js.map +1 -1
- package/dist/material/moves/MaterialMove.js +1 -2
- package/dist/material/moves/MaterialMoveBuilder.js +16 -32
- package/dist/material/moves/MaterialMoveBuilder.js.map +1 -1
- package/dist/material/moves/MoveKind.js +2 -5
- package/dist/material/moves/MoveKind.js.map +1 -1
- package/dist/material/moves/index.js +7 -23
- package/dist/material/moves/index.js.map +1 -1
- package/dist/material/moves/items/CreateItem.js +6 -12
- package/dist/material/moves/items/CreateItem.js.map +1 -1
- package/dist/material/moves/items/CreateItemsAtOnce.js +6 -12
- package/dist/material/moves/items/CreateItemsAtOnce.js.map +1 -1
- package/dist/material/moves/items/DeleteItem.js +6 -12
- package/dist/material/moves/items/DeleteItem.js.map +1 -1
- package/dist/material/moves/items/DeleteItemsAtOnce.js +6 -12
- package/dist/material/moves/items/DeleteItemsAtOnce.js.map +1 -1
- package/dist/material/moves/items/ItemMove.js +1 -2
- package/dist/material/moves/items/ItemMoveType.js +2 -5
- package/dist/material/moves/items/ItemMoveType.js.map +1 -1
- package/dist/material/moves/items/MoveItem.js +6 -12
- package/dist/material/moves/items/MoveItem.js.map +1 -1
- package/dist/material/moves/items/MoveItemsAtOnce.js +6 -12
- package/dist/material/moves/items/MoveItemsAtOnce.js.map +1 -1
- package/dist/material/moves/items/RollItem.js +6 -12
- package/dist/material/moves/items/RollItem.js.map +1 -1
- package/dist/material/moves/items/SelectItem.js +6 -12
- package/dist/material/moves/items/SelectItem.js.map +1 -1
- package/dist/material/moves/items/Shuffle.js +7 -14
- package/dist/material/moves/items/Shuffle.js.map +1 -1
- package/dist/material/moves/items/index.js +11 -27
- package/dist/material/moves/items/index.js.map +1 -1
- package/dist/material/moves/local/CloseTutorialPopup.js +4 -7
- package/dist/material/moves/local/CloseTutorialPopup.js.map +1 -1
- package/dist/material/moves/local/DisplayHelp.js +2 -5
- package/dist/material/moves/local/DisplayHelp.js.map +1 -1
- package/dist/material/moves/local/DropItem.js +1 -2
- package/dist/material/moves/local/LocalMove.js +2 -5
- package/dist/material/moves/local/LocalMove.js.map +1 -1
- package/dist/material/moves/local/SetTutorialStep.js +4 -7
- package/dist/material/moves/local/SetTutorialStep.js.map +1 -1
- package/dist/material/moves/local/index.js +5 -21
- package/dist/material/moves/local/index.js.map +1 -1
- package/dist/material/moves/rules/EndGame.js +4 -7
- package/dist/material/moves/rules/EndGame.js.map +1 -1
- package/dist/material/moves/rules/EndPlayerTurn.js +4 -7
- package/dist/material/moves/rules/EndPlayerTurn.js.map +1 -1
- package/dist/material/moves/rules/RuleMove.js +3 -7
- package/dist/material/moves/rules/RuleMove.js.map +1 -1
- package/dist/material/moves/rules/StartPlayerTurn.js +4 -7
- package/dist/material/moves/rules/StartPlayerTurn.js.map +1 -1
- package/dist/material/moves/rules/StartRule.js +4 -7
- package/dist/material/moves/rules/StartRule.js.map +1 -1
- package/dist/material/moves/rules/StartSimultaneousRule.js +4 -7
- package/dist/material/moves/rules/StartSimultaneousRule.js.map +1 -1
- package/dist/material/moves/rules/index.js +6 -22
- package/dist/material/moves/rules/index.js.map +1 -1
- package/dist/material/rules/MaterialRulesPart.js +38 -63
- package/dist/material/rules/MaterialRulesPart.js.map +1 -1
- package/dist/material/rules/PlayerTurnRule.js +20 -52
- package/dist/material/rules/PlayerTurnRule.js.map +1 -1
- package/dist/material/rules/RuleStep.js +1 -2
- package/dist/material/rules/SimultaneousRule.js +19 -51
- package/dist/material/rules/SimultaneousRule.js.map +1 -1
- package/dist/material/rules/index.js +4 -20
- package/dist/material/rules/index.js.map +1 -1
- package/dist/material/tutorial/TutorialState.js +1 -2
- package/dist/material/tutorial/index.js +1 -17
- package/dist/material/tutorial/index.js.map +1 -1
- package/dist/options/EnumArrayOption.js +3 -6
- package/dist/options/EnumArrayOption.js.map +1 -1
- package/dist/options/EnumOption.js +1 -4
- package/dist/options/EnumOption.js.map +1 -1
- package/dist/options/Option.js +1 -2
- package/dist/options/OptionSpecOf.js +1 -2
- package/dist/options/OptionsSpec.js +1 -2
- package/dist/options/OptionsValidationError.js +6 -28
- package/dist/options/OptionsValidationError.js.map +1 -1
- package/dist/options/PlayerEnumOption.js +19 -29
- package/dist/options/PlayerEnumOption.js.map +1 -1
- package/dist/options/PlayersOptionsSpec.js +1 -2
- package/dist/options/WithIdOption.js +1 -2
- package/dist/options/WithPlayerOptionsSpec.js +1 -4
- package/dist/options/WithPlayerOptionsSpec.js.map +1 -1
- package/dist/options/WithPlayersOptions.js +1 -2
- package/dist/options/index.js +12 -28
- package/dist/options/index.js.map +1 -1
- package/dist/options/isWithPlayerIdOptions.js +3 -6
- package/dist/options/isWithPlayerIdOptions.js.map +1 -1
- package/dist/utils/action-view.util.js +18 -25
- package/dist/utils/action-view.util.js.map +1 -1
- package/dist/utils/action.util.js +11 -16
- package/dist/utils/action.util.js.map +1 -1
- package/dist/utils/adjacent-groups.util.js +33 -41
- package/dist/utils/adjacent-groups.util.js.map +1 -1
- package/dist/utils/automatic-moves.util.js +10 -15
- package/dist/utils/automatic-moves.util.js.map +1 -1
- package/dist/utils/enum.util.js +7 -13
- package/dist/utils/enum.util.js.map +1 -1
- package/dist/utils/game-view.util.js +5 -8
- package/dist/utils/game-view.util.js.map +1 -1
- package/dist/utils/grid.hex.util.js +36 -88
- package/dist/utils/grid.hex.util.js.map +1 -1
- package/dist/utils/grid.squares.util.js +8 -19
- package/dist/utils/grid.squares.util.js.map +1 -1
- package/dist/utils/grid.util.js +1 -5
- package/dist/utils/grid.util.js.map +1 -1
- package/dist/utils/index.js +16 -32
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/listing.util.js +8 -13
- package/dist/utils/listing.util.js.map +1 -1
- package/dist/utils/loops.util.js +3 -6
- package/dist/utils/loops.util.js.map +1 -1
- package/dist/utils/money.util.js +54 -73
- package/dist/utils/money.util.js.map +1 -1
- package/dist/utils/neighbors.util.js +6 -10
- package/dist/utils/neighbors.util.js.map +1 -1
- package/dist/utils/polyhex.util.js +36 -56
- package/dist/utils/polyhex.util.js.map +1 -1
- package/dist/utils/random.util.js +2 -5
- package/dist/utils/random.util.js.map +1 -1
- package/dist/utils/rank.util.js +9 -13
- package/dist/utils/rank.util.js.map +1 -1
- package/package.json +43 -37
- package/dist/ApplyAutomaticMoves.d.ts +0 -2
- package/dist/ApplyAutomaticMoves.js +0 -25
- package/dist/ApplyAutomaticMoves.js.map +0 -1
- package/dist/DefaultGameSetup.d.ts +0 -7
- package/dist/DefaultGameSetup.js +0 -15
- package/dist/DefaultGameSetup.js.map +0 -1
- package/dist/Dummy.d.ts +0 -7
- package/dist/Dummy.js +0 -27
- package/dist/Dummy.js.map +0 -1
- package/dist/GameSetupCreator.d.ts +0 -4
- package/dist/GameSetupCreator.js +0 -3
- package/dist/GameSetupCreator.js.map +0 -1
- package/dist/IncompleteInformation.d.ts +0 -14
- package/dist/IncompleteInformation.js +0 -38
- package/dist/IncompleteInformation.js.map +0 -1
- package/dist/LoopWithFuse.d.ts +0 -4
- package/dist/LoopWithFuse.js +0 -15
- package/dist/LoopWithFuse.js.map +0 -1
- package/dist/Robot.d.ts +0 -1
- package/dist/Robot.js +0 -3
- package/dist/Robot.js.map +0 -1
- package/dist/RulesCreator.d.ts +0 -7
- package/dist/RulesCreator.js +0 -3
- package/dist/RulesCreator.js.map +0 -1
- package/dist/material/location/strategy/StakingStrategy.d.ts +0 -12
- package/dist/material/location/strategy/StakingStrategy.js +0 -32
- package/dist/material/location/strategy/StakingStrategy.js.map +0 -1
- package/dist/material/moves/items/ItemMovesBuilder.d.ts +0 -8
- package/dist/material/moves/items/ItemMovesBuilder.js +0 -34
- package/dist/material/moves/items/ItemMovesBuilder.js.map +0 -1
- package/dist/material/rules/MaterialMoveBuilder.d.ts +0 -9
- package/dist/material/rules/MaterialMoveBuilder.js +0 -28
- package/dist/material/rules/MaterialMoveBuilder.js.map +0 -1
- package/dist/material/rules/MaterialRulesMovesBuilder.d.ts +0 -12
- package/dist/material/rules/MaterialRulesMovesBuilder.js +0 -36
- package/dist/material/rules/MaterialRulesMovesBuilder.js.map +0 -1
- package/dist/setup/DefaultGameSetup.d.ts +0 -7
- package/dist/setup/DefaultGameSetup.js +0 -15
- package/dist/setup/DefaultGameSetup.js.map +0 -1
- package/dist/setup/GameSetup.d.ts +0 -3
- package/dist/setup/GameSetup.js +0 -3
- package/dist/setup/GameSetup.js.map +0 -1
- package/dist/setup/GameSetupCreator.d.ts +0 -4
- package/dist/setup/GameSetupCreator.js +0 -3
- package/dist/setup/GameSetupCreator.js.map +0 -1
- package/dist/setup/index.d.ts +0 -2
- package/dist/setup/index.js +0 -19
- package/dist/setup/index.js.map +0 -1
- package/dist/utils/EnumUtils.d.ts +0 -1
- package/dist/utils/EnumUtils.js +0 -8
- package/dist/utils/EnumUtils.js.map +0 -1
- package/dist/utils/coordinates.util.d.ts +0 -5
- package/dist/utils/coordinates.util.js +0 -16
- package/dist/utils/coordinates.util.js.map +0 -1
- package/dist/utils/isDeadEndMove.util.d.ts +0 -2
- package/dist/utils/isDeadEndMove.util.js +0 -19
- package/dist/utils/isDeadEndMove.util.js.map +0 -1
|
@@ -1,37 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var grid_hex_util_1 = require("./grid.hex.util");
|
|
5
|
-
function getPreviousAdjacentCoordinates(_a, hexGridSystem) {
|
|
6
|
-
var x = _a.x, y = _a.y;
|
|
7
|
-
var adjacentCoordinates = [];
|
|
1
|
+
import { HexGridSystem } from './grid.hex.util';
|
|
2
|
+
function getPreviousAdjacentCoordinates({ x, y }, hexGridSystem) {
|
|
3
|
+
const adjacentCoordinates = [];
|
|
8
4
|
if (hexGridSystem === undefined) {
|
|
9
5
|
if (x > 0)
|
|
10
|
-
adjacentCoordinates.push({ x: x - 1, y
|
|
6
|
+
adjacentCoordinates.push({ x: x - 1, y });
|
|
11
7
|
if (y > 0)
|
|
12
|
-
adjacentCoordinates.push({ x
|
|
8
|
+
adjacentCoordinates.push({ x, y: y - 1 });
|
|
13
9
|
return adjacentCoordinates;
|
|
14
10
|
}
|
|
15
11
|
switch (hexGridSystem) {
|
|
16
|
-
case
|
|
12
|
+
case HexGridSystem.Axial:
|
|
17
13
|
if (x > 0)
|
|
18
|
-
adjacentCoordinates.push({ x: x - 1, y
|
|
14
|
+
adjacentCoordinates.push({ x: x - 1, y });
|
|
19
15
|
if (y > 0)
|
|
20
|
-
adjacentCoordinates.push({ x
|
|
16
|
+
adjacentCoordinates.push({ x, y: y - 1 }, { x: x + 1, y: y - 1 });
|
|
21
17
|
return adjacentCoordinates;
|
|
22
|
-
case
|
|
23
|
-
case
|
|
18
|
+
case HexGridSystem.OddQ:
|
|
19
|
+
case HexGridSystem.EvenQ:
|
|
24
20
|
if (x > 0)
|
|
25
|
-
adjacentCoordinates.push({ x: x - 1, y
|
|
21
|
+
adjacentCoordinates.push({ x: x - 1, y });
|
|
26
22
|
if (y > 0) {
|
|
27
|
-
if (hexGridSystem === (x % 2 ?
|
|
28
|
-
adjacentCoordinates.push({ x
|
|
23
|
+
if (hexGridSystem === (x % 2 ? HexGridSystem.OddQ : HexGridSystem.EvenQ)) {
|
|
24
|
+
adjacentCoordinates.push({ x, y: y - 1 });
|
|
29
25
|
}
|
|
30
26
|
else {
|
|
31
27
|
if (x > 0) {
|
|
32
28
|
adjacentCoordinates.push({ x: x - 1, y: y - 1 });
|
|
33
29
|
}
|
|
34
|
-
adjacentCoordinates.push({ x
|
|
30
|
+
adjacentCoordinates.push({ x, y: y - 1 }, { x: x + 1, y: y - 1 });
|
|
35
31
|
}
|
|
36
32
|
}
|
|
37
33
|
return adjacentCoordinates;
|
|
@@ -39,44 +35,40 @@ function getPreviousAdjacentCoordinates(_a, hexGridSystem) {
|
|
|
39
35
|
throw new Error('Not implemented');
|
|
40
36
|
}
|
|
41
37
|
}
|
|
42
|
-
function createAdjacentGroups(map, options) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
var groups = [];
|
|
47
|
-
for (var y = 0; y < map.length; y++) {
|
|
38
|
+
export function createAdjacentGroups(map, options) {
|
|
39
|
+
const isEmpty = options?.isEmpty ?? ((value) => !value);
|
|
40
|
+
const groups = [];
|
|
41
|
+
for (let y = 0; y < map.length; y++) {
|
|
48
42
|
groups.push([]);
|
|
49
|
-
for (
|
|
50
|
-
|
|
43
|
+
for (let x = 0; x < map[y].length; x++) {
|
|
44
|
+
const value = map[y][x];
|
|
51
45
|
if (isEmpty(value)) {
|
|
52
46
|
groups[y][x] = { values: [], coordinates: [] };
|
|
53
47
|
}
|
|
54
48
|
else {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
for (
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
adjacentGroups.push(groups[y_1][x_1]);
|
|
49
|
+
const previousAdjacentCoordinates = getPreviousAdjacentCoordinates({ x, y }, options?.hexGridSystem);
|
|
50
|
+
const adjacentGroups = [];
|
|
51
|
+
for (const { x, y } of previousAdjacentCoordinates) {
|
|
52
|
+
if (groups[y]?.[x]?.values.length && !adjacentGroups.includes(groups[y][x])) {
|
|
53
|
+
adjacentGroups.push(groups[y][x]);
|
|
61
54
|
}
|
|
62
55
|
}
|
|
63
56
|
if (!adjacentGroups.length) {
|
|
64
|
-
groups[y][x] = { values: [value], coordinates: [{ x
|
|
57
|
+
groups[y][x] = { values: [value], coordinates: [{ x, y }] };
|
|
65
58
|
}
|
|
66
59
|
else if (adjacentGroups.length === 1) {
|
|
67
60
|
adjacentGroups[0].values.push(value);
|
|
68
|
-
adjacentGroups[0].coordinates.push({ x
|
|
61
|
+
adjacentGroups[0].coordinates.push({ x, y });
|
|
69
62
|
groups[y][x] = adjacentGroups[0];
|
|
70
63
|
}
|
|
71
64
|
else {
|
|
72
|
-
|
|
65
|
+
const fusionGroup = { values: [value], coordinates: [{ x, y }] };
|
|
73
66
|
groups[y][x] = fusionGroup;
|
|
74
|
-
for (
|
|
75
|
-
|
|
76
|
-
for (
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
groups[y_2][x_2] = fusionGroup;
|
|
67
|
+
for (let i = 0; i < adjacentGroups.length; i++) {
|
|
68
|
+
fusionGroup.values.push(...adjacentGroups[i].values);
|
|
69
|
+
for (const { x, y } of adjacentGroups[i].coordinates) {
|
|
70
|
+
fusionGroup.coordinates.push({ x, y });
|
|
71
|
+
groups[y][x] = fusionGroup;
|
|
80
72
|
}
|
|
81
73
|
}
|
|
82
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adjacent-groups.util.js","sourceRoot":"","sources":["../../src/utils/adjacent-groups.util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adjacent-groups.util.js","sourceRoot":"","sources":["../../src/utils/adjacent-groups.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var random_util_1 = require("./random.util");
|
|
6
|
-
function applyAutomaticMoves(rules, moves, preprocessMove) {
|
|
7
|
-
if (moves === void 0) { moves = []; }
|
|
8
|
-
(0, loops_util_1.loopWithFuse)(function () {
|
|
9
|
-
var _a;
|
|
1
|
+
import { loopWithFuse } from './loops.util';
|
|
2
|
+
import { hasRandomMove } from './random.util';
|
|
3
|
+
export function applyAutomaticMoves(rules, moves = [], preprocessMove) {
|
|
4
|
+
loopWithFuse(() => {
|
|
10
5
|
if (moves.length === 0 && rules.getAutomaticMoves) {
|
|
11
|
-
moves.push
|
|
6
|
+
moves.push(...rules.getAutomaticMoves());
|
|
12
7
|
}
|
|
13
|
-
|
|
8
|
+
const move = moves.shift();
|
|
14
9
|
if (!move)
|
|
15
10
|
return false;
|
|
16
|
-
|
|
11
|
+
const randomizedMove = hasRandomMove(rules) ? rules.randomize(move) : move;
|
|
17
12
|
if (preprocessMove)
|
|
18
13
|
preprocessMove(randomizedMove);
|
|
19
|
-
|
|
20
|
-
moves.unshift
|
|
14
|
+
const consequences = rules.play(JSON.parse(JSON.stringify(randomizedMove))) ?? [];
|
|
15
|
+
moves.unshift(...consequences);
|
|
21
16
|
return true;
|
|
22
|
-
}, { errorFn:
|
|
17
|
+
}, { errorFn: () => new Error(`Infinite loop detected while applying move consequences: ${JSON.stringify(moves)})`) });
|
|
23
18
|
}
|
|
24
19
|
//# sourceMappingURL=automatic-moves.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automatic-moves.util.js","sourceRoot":"","sources":["../../src/utils/automatic-moves.util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"automatic-moves.util.js","sourceRoot":"","sources":["../../src/utils/automatic-moves.util.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,UAAU,mBAAmB,CAAuB,KAAkC,EAAE,QAAgB,EAAE,EAAE,cAAqC;IACrJ,YAAY,CAAC,GAAG,EAAE;QAChB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAA;QAC1C,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAA;QACvB,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QAC1E,IAAI,cAAc;YAAE,cAAc,CAAC,cAAc,CAAC,CAAA;QAClD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACjF,KAAK,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,4DAA4D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACxH,CAAC"}
|
package/dist/utils/enum.util.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getEnumKeys = getEnumKeys;
|
|
4
|
-
exports.getEnumValues = getEnumValues;
|
|
5
|
-
exports.getEnumEntries = getEnumEntries;
|
|
6
|
-
exports.isEnumValue = isEnumValue;
|
|
7
1
|
/**
|
|
8
2
|
* Get the keys of an enum at run time.
|
|
9
3
|
* Credits to https://github.com/tranvansang/enum-for
|
|
@@ -11,8 +5,8 @@ exports.isEnumValue = isEnumValue;
|
|
|
11
5
|
* @param enumType The enumeration
|
|
12
6
|
* @returns returns the list of the keys of the enum
|
|
13
7
|
*/
|
|
14
|
-
function getEnumKeys(enumType) {
|
|
15
|
-
return Object.keys(enumType).filter(
|
|
8
|
+
export function getEnumKeys(enumType) {
|
|
9
|
+
return Object.keys(enumType).filter(key => isNaN(Number(key)));
|
|
16
10
|
}
|
|
17
11
|
/**
|
|
18
12
|
* Get the values of an enum at run time.
|
|
@@ -21,8 +15,8 @@ function getEnumKeys(enumType) {
|
|
|
21
15
|
* @param enumType The enumeration
|
|
22
16
|
* @returns returns the list of the values of the enum
|
|
23
17
|
*/
|
|
24
|
-
function getEnumValues(enumType) {
|
|
25
|
-
return getEnumKeys(enumType).map(
|
|
18
|
+
export function getEnumValues(enumType) {
|
|
19
|
+
return getEnumKeys(enumType).map(key => enumType[key]);
|
|
26
20
|
}
|
|
27
21
|
/**
|
|
28
22
|
* Get the entries of an enum at run time.
|
|
@@ -31,13 +25,13 @@ function getEnumValues(enumType) {
|
|
|
31
25
|
* @param enumType The enumeration
|
|
32
26
|
* @returns returns the list of the entries of the enum
|
|
33
27
|
*/
|
|
34
|
-
function getEnumEntries(enumType) {
|
|
35
|
-
return getEnumKeys(enumType).map(
|
|
28
|
+
export function getEnumEntries(enumType) {
|
|
29
|
+
return getEnumKeys(enumType).map(key => [key, enumType[key]]);
|
|
36
30
|
}
|
|
37
31
|
/**
|
|
38
32
|
* @deprecated Use getEnumValues instead
|
|
39
33
|
*/
|
|
40
|
-
function isEnumValue(value) {
|
|
34
|
+
export function isEnumValue(value) {
|
|
41
35
|
return typeof value !== 'string';
|
|
42
36
|
}
|
|
43
37
|
//# sourceMappingURL=enum.util.js.map
|
|
@@ -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,MAAM,UAAU,WAAW,CAAoB,QAAW;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAmB,CAAA;AAClF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAoB,QAAW;IAC1D,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAoB,QAAW;IAC3D,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAI,KAAiB;IAC9C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAA;AAClC,CAAC"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var SecretInformation_1 = require("../SecretInformation");
|
|
6
|
-
function getGameView(rules, playerId) {
|
|
7
|
-
if ((0, SecretInformation_1.hasSecretInformation)(rules) && playerId !== undefined) {
|
|
1
|
+
import { hasHiddenInformation } from '../HiddenInformation';
|
|
2
|
+
import { hasSecretInformation } from '../SecretInformation';
|
|
3
|
+
export function getGameView(rules, playerId) {
|
|
4
|
+
if (hasSecretInformation(rules) && playerId !== undefined) {
|
|
8
5
|
return rules.getPlayerView(playerId);
|
|
9
6
|
}
|
|
10
|
-
else if (
|
|
7
|
+
else if (hasHiddenInformation(rules)) {
|
|
11
8
|
return rules.getView();
|
|
12
9
|
}
|
|
13
10
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"game-view.util.js","sourceRoot":"","sources":["../../src/utils/game-view.util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"game-view.util.js","sourceRoot":"","sources":["../../src/utils/game-view.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE3D,MAAM,UAAU,WAAW,CAA2B,KAAiC,EAAE,QAAmB;IAC1G,IAAI,oBAAoB,CAA+B,KAAK,CAAC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACxF,OAAO,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtC,CAAC;SAAM,IAAI,oBAAoB,CAAW,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC,OAAO,EAAE,CAAA;IACxB,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC,IAAuB,CAAA;IACtC,CAAC;AACH,CAAC"}
|
|
@@ -1,106 +1,63 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.axialToEvenR = exports.evenRToAxial = exports.axialToOddR = exports.oddRToAxial = exports.axialToEvenQ = exports.evenQToAxial = exports.axialToOddQ = exports.oddQToAxial = exports.HexGridSystem = void 0;
|
|
4
|
-
exports.hexToAxial = hexToAxial;
|
|
5
|
-
exports.hexFromAxial = hexFromAxial;
|
|
6
|
-
exports.hexRotate = hexRotate;
|
|
7
|
-
exports.getDistanceBetweenHex = getDistanceBetweenHex;
|
|
8
|
-
exports.getHexagonsAtDistance = getHexagonsAtDistance;
|
|
9
|
-
exports.hexTranslate = hexTranslate;
|
|
10
|
-
exports.getPolyhexSpaces = getPolyhexSpaces;
|
|
11
|
-
exports.getAdjacentHexagons = getAdjacentHexagons;
|
|
12
1
|
/**
|
|
13
2
|
* The different coordinates systems available to describe a Hexagonal Grid.
|
|
14
3
|
* See https://www.redblobgames.com/grids/hexagons/#coordinates
|
|
15
4
|
*/
|
|
16
|
-
var HexGridSystem;
|
|
5
|
+
export var HexGridSystem;
|
|
17
6
|
(function (HexGridSystem) {
|
|
18
7
|
HexGridSystem[HexGridSystem["Axial"] = 0] = "Axial";
|
|
19
8
|
HexGridSystem[HexGridSystem["OddQ"] = 1] = "OddQ";
|
|
20
9
|
HexGridSystem[HexGridSystem["EvenQ"] = 2] = "EvenQ";
|
|
21
10
|
HexGridSystem[HexGridSystem["OddR"] = 3] = "OddR";
|
|
22
11
|
HexGridSystem[HexGridSystem["EvenR"] = 4] = "EvenR";
|
|
23
|
-
})(HexGridSystem || (
|
|
12
|
+
})(HexGridSystem || (HexGridSystem = {}));
|
|
24
13
|
/**
|
|
25
14
|
* Converts {@link HexGridSystem.OddQ} coordinates into {@link HexGridSystem.Axial} coordinates
|
|
26
15
|
*/
|
|
27
|
-
|
|
28
|
-
var x = _a.x, y = _a.y;
|
|
29
|
-
return ({ x: x, y: y - (x - (x & 1)) / 2 });
|
|
30
|
-
};
|
|
31
|
-
exports.oddQToAxial = oddQToAxial;
|
|
16
|
+
export const oddQToAxial = ({ x, y }) => ({ x, y: y - (x - (x & 1)) / 2 });
|
|
32
17
|
/**
|
|
33
18
|
* Converts {@link HexGridSystem.Axial} coordinates into {@link HexGridSystem.OddQ} coordinates
|
|
34
19
|
*/
|
|
35
|
-
|
|
36
|
-
var x = _a.x, y = _a.y;
|
|
37
|
-
return ({ x: x, y: y + (x - (x & 1)) / 2 });
|
|
38
|
-
};
|
|
39
|
-
exports.axialToOddQ = axialToOddQ;
|
|
20
|
+
export const axialToOddQ = ({ x, y }) => ({ x, y: y + (x - (x & 1)) / 2 });
|
|
40
21
|
/**
|
|
41
22
|
* Converts {@link HexGridSystem.EvenQ} coordinates into {@link HexGridSystem.Axial} coordinates
|
|
42
23
|
*/
|
|
43
|
-
|
|
44
|
-
var x = _a.x, y = _a.y;
|
|
45
|
-
return ({ x: x, y: y - (x + (x & 1)) / 2 });
|
|
46
|
-
};
|
|
47
|
-
exports.evenQToAxial = evenQToAxial;
|
|
24
|
+
export const evenQToAxial = ({ x, y }) => ({ x, y: y - (x + (x & 1)) / 2 });
|
|
48
25
|
/**
|
|
49
26
|
* Converts {@link HexGridSystem.Axial} coordinates into {@link HexGridSystem.EvenQ} coordinates
|
|
50
27
|
*/
|
|
51
|
-
|
|
52
|
-
var x = _a.x, y = _a.y;
|
|
53
|
-
return ({ x: x, y: y + (x + (x & 1)) / 2 });
|
|
54
|
-
};
|
|
55
|
-
exports.axialToEvenQ = axialToEvenQ;
|
|
28
|
+
export const axialToEvenQ = ({ x, y }) => ({ x, y: y + (x + (x & 1)) / 2 });
|
|
56
29
|
/**
|
|
57
30
|
* Converts {@link HexGridSystem.OddR} coordinates into {@link HexGridSystem.Axial} coordinates
|
|
58
31
|
*/
|
|
59
|
-
|
|
60
|
-
var x = _a.x, y = _a.y;
|
|
61
|
-
return ({ y: y, x: x - (y - (y & 1)) / 2 });
|
|
62
|
-
};
|
|
63
|
-
exports.oddRToAxial = oddRToAxial;
|
|
32
|
+
export const oddRToAxial = ({ x, y }) => ({ y, x: x - (y - (y & 1)) / 2 });
|
|
64
33
|
/**
|
|
65
34
|
* Converts {@link HexGridSystem.Axial} coordinates into {@link HexGridSystem.OddR} coordinates
|
|
66
35
|
*/
|
|
67
|
-
|
|
68
|
-
var x = _a.x, y = _a.y;
|
|
69
|
-
return ({ y: y, x: x + (y - (y & 1)) / 2 });
|
|
70
|
-
};
|
|
71
|
-
exports.axialToOddR = axialToOddR;
|
|
36
|
+
export const axialToOddR = ({ x, y }) => ({ y, x: x + (y - (y & 1)) / 2 });
|
|
72
37
|
/**
|
|
73
38
|
* Converts {@link HexGridSystem.EvenR} coordinates into {@link HexGridSystem.Axial} coordinates
|
|
74
39
|
*/
|
|
75
|
-
|
|
76
|
-
var x = _a.x, y = _a.y;
|
|
77
|
-
return ({ y: y, x: x - (y + (y & 1)) / 2 });
|
|
78
|
-
};
|
|
79
|
-
exports.evenRToAxial = evenRToAxial;
|
|
40
|
+
export const evenRToAxial = ({ x, y }) => ({ y, x: x - (y + (y & 1)) / 2 });
|
|
80
41
|
/**
|
|
81
42
|
* Converts {@link HexGridSystem.Axial} coordinates into {@link HexGridSystem.EvenR} coordinates
|
|
82
43
|
*/
|
|
83
|
-
|
|
84
|
-
var x = _a.x, y = _a.y;
|
|
85
|
-
return ({ y: y, x: x + (y + (y & 1)) / 2 });
|
|
86
|
-
};
|
|
87
|
-
exports.axialToEvenR = axialToEvenR;
|
|
44
|
+
export const axialToEvenR = ({ x, y }) => ({ y, x: x + (y + (y & 1)) / 2 });
|
|
88
45
|
/**
|
|
89
46
|
* Convert any {@link HexGridSystem} coordinates to {@link HexGridSystem.Axial}
|
|
90
47
|
* @param hex Coordinates to convert
|
|
91
48
|
* @param system System of the coordinates
|
|
92
49
|
* @return Coordinates in {@link HexGridSystem.Axial}
|
|
93
50
|
*/
|
|
94
|
-
function hexToAxial(hex, system) {
|
|
51
|
+
export function hexToAxial(hex, system) {
|
|
95
52
|
switch (system) {
|
|
96
53
|
case HexGridSystem.OddQ:
|
|
97
|
-
return
|
|
54
|
+
return oddQToAxial(hex);
|
|
98
55
|
case HexGridSystem.EvenQ:
|
|
99
|
-
return
|
|
56
|
+
return evenQToAxial(hex);
|
|
100
57
|
case HexGridSystem.OddR:
|
|
101
|
-
return
|
|
58
|
+
return oddRToAxial(hex);
|
|
102
59
|
case HexGridSystem.EvenR:
|
|
103
|
-
return
|
|
60
|
+
return evenRToAxial(hex);
|
|
104
61
|
default:
|
|
105
62
|
return hex;
|
|
106
63
|
}
|
|
@@ -111,16 +68,16 @@ function hexToAxial(hex, system) {
|
|
|
111
68
|
* @param system Destination coordinates system
|
|
112
69
|
* @return Coordinates converted in the description system
|
|
113
70
|
*/
|
|
114
|
-
function hexFromAxial(hex, system) {
|
|
71
|
+
export function hexFromAxial(hex, system) {
|
|
115
72
|
switch (system) {
|
|
116
73
|
case HexGridSystem.OddQ:
|
|
117
|
-
return
|
|
74
|
+
return axialToOddQ(hex);
|
|
118
75
|
case HexGridSystem.EvenQ:
|
|
119
|
-
return
|
|
76
|
+
return axialToEvenQ(hex);
|
|
120
77
|
case HexGridSystem.OddR:
|
|
121
|
-
return
|
|
78
|
+
return axialToOddR(hex);
|
|
122
79
|
case HexGridSystem.EvenR:
|
|
123
|
-
return
|
|
80
|
+
return axialToEvenR(hex);
|
|
124
81
|
default:
|
|
125
82
|
return hex;
|
|
126
83
|
}
|
|
@@ -132,9 +89,7 @@ function hexFromAxial(hex, system) {
|
|
|
132
89
|
* @param system The coordinates system used
|
|
133
90
|
* @return the rotated vector
|
|
134
91
|
*/
|
|
135
|
-
function hexRotate(vector, rotation, system) {
|
|
136
|
-
if (rotation === void 0) { rotation = 0; }
|
|
137
|
-
if (system === void 0) { system = HexGridSystem.Axial; }
|
|
92
|
+
export function hexRotate(vector, rotation = 0, system = HexGridSystem.Axial) {
|
|
138
93
|
if (system !== HexGridSystem.Axial)
|
|
139
94
|
return hexFromAxial(hexRotate(hexToAxial(vector, system), rotation), system);
|
|
140
95
|
switch (rotation % 6) {
|
|
@@ -161,8 +116,7 @@ function hexRotate(vector, rotation, system) {
|
|
|
161
116
|
* @param system The coordinates system used
|
|
162
117
|
* @return the distance between the hexagons
|
|
163
118
|
*/
|
|
164
|
-
function getDistanceBetweenHex(hex1, hex2, system) {
|
|
165
|
-
if (system === void 0) { system = HexGridSystem.Axial; }
|
|
119
|
+
export function getDistanceBetweenHex(hex1, hex2, system = HexGridSystem.Axial) {
|
|
166
120
|
if (system !== HexGridSystem.Axial) {
|
|
167
121
|
return getDistanceBetweenHex(hexToAxial(hex1, system), hexToAxial(hex2, system));
|
|
168
122
|
}
|
|
@@ -175,19 +129,17 @@ function getDistanceBetweenHex(hex1, hex2, system) {
|
|
|
175
129
|
* @param system The coordinates system used
|
|
176
130
|
* @return the list of the hexagons found at distance from given hex
|
|
177
131
|
*/
|
|
178
|
-
function getHexagonsAtDistance(hex, distance, system) {
|
|
179
|
-
if (system === void 0) { system = HexGridSystem.Axial; }
|
|
132
|
+
export function getHexagonsAtDistance(hex, distance, system = HexGridSystem.Axial) {
|
|
180
133
|
if (system !== HexGridSystem.Axial) {
|
|
181
|
-
return getHexagonsAtDistance(hexToAxial(hex, system), distance, HexGridSystem.Axial).map(
|
|
134
|
+
return getHexagonsAtDistance(hexToAxial(hex, system), distance, HexGridSystem.Axial).map((hex) => hexFromAxial(hex, system));
|
|
182
135
|
}
|
|
183
136
|
if (distance <= 0)
|
|
184
137
|
return [hex];
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
for (
|
|
189
|
-
|
|
190
|
-
for (var j = 0; j < distance; j++) {
|
|
138
|
+
const result = [];
|
|
139
|
+
let currentHex = { x: hex.x - distance, y: hex.y };
|
|
140
|
+
const vectors = [{ x: 1, y: -1 }, { x: 1, y: 0 }, { x: 0, y: 1 }, { x: -1, y: 1 }, { x: -1, y: 0 }, { x: 0, y: -1 }];
|
|
141
|
+
for (const vector of vectors) {
|
|
142
|
+
for (let j = 0; j < distance; j++) {
|
|
191
143
|
result.push(currentHex);
|
|
192
144
|
currentHex = hexTranslate(currentHex, vector);
|
|
193
145
|
}
|
|
@@ -201,8 +153,7 @@ function getHexagonsAtDistance(hex, distance, system) {
|
|
|
201
153
|
* @param system The coordinates system used
|
|
202
154
|
* @return The coordinates of the hexagon after the translation
|
|
203
155
|
*/
|
|
204
|
-
function hexTranslate(hex, vector, system) {
|
|
205
|
-
if (system === void 0) { system = HexGridSystem.Axial; }
|
|
156
|
+
export function hexTranslate(hex, vector, system = HexGridSystem.Axial) {
|
|
206
157
|
if (system !== HexGridSystem.Axial)
|
|
207
158
|
return hexFromAxial(hexTranslate(hexToAxial(hex, system), hexToAxial(vector, system)), system);
|
|
208
159
|
return ({ x: hex.x + vector.x, y: hex.y + vector.y });
|
|
@@ -214,23 +165,20 @@ function hexTranslate(hex, vector, system) {
|
|
|
214
165
|
* @param system The coordinates system used for the polyhex description and the location
|
|
215
166
|
* @return coordinates in the grid covered when the polyhex has this location
|
|
216
167
|
*/
|
|
217
|
-
function getPolyhexSpaces(polyhex, location, system) {
|
|
218
|
-
|
|
219
|
-
if (system === void 0) { system = HexGridSystem.Axial; }
|
|
220
|
-
var vector = { x: (_a = location.x) !== null && _a !== void 0 ? _a : 0, y: (_b = location.y) !== null && _b !== void 0 ? _b : 0 };
|
|
168
|
+
export function getPolyhexSpaces(polyhex, location, system = HexGridSystem.Axial) {
|
|
169
|
+
const vector = { x: location.x ?? 0, y: location.y ?? 0 };
|
|
221
170
|
return polyhex
|
|
222
|
-
.map(
|
|
223
|
-
.map(
|
|
171
|
+
.map(hex => hexRotate(hex, location.rotation ?? 0, system))
|
|
172
|
+
.map(hex => hexTranslate(hex, vector, system));
|
|
224
173
|
}
|
|
225
174
|
/**
|
|
226
175
|
* Get the coordinates of the 6 hexagons adjacent to a given hexagon.
|
|
227
176
|
* @param hex Coordinates of the hexagon
|
|
228
177
|
* @param system Coordinates system
|
|
229
178
|
*/
|
|
230
|
-
function getAdjacentHexagons(hex, system) {
|
|
231
|
-
if (system === void 0) { system = HexGridSystem.Axial; }
|
|
179
|
+
export function getAdjacentHexagons(hex, system = HexGridSystem.Axial) {
|
|
232
180
|
if (system !== HexGridSystem.Axial) {
|
|
233
|
-
return getAdjacentHexagons(hexToAxial(hex, system)).map((
|
|
181
|
+
return getAdjacentHexagons(hexToAxial(hex, system)).map(((hex) => hexFromAxial(hex, system)));
|
|
234
182
|
}
|
|
235
183
|
return [
|
|
236
184
|
{ x: hex.x + 1, y: hex.y },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.hex.util.js","sourceRoot":"","sources":["../../src/utils/grid.hex.util.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"grid.hex.util.js","sourceRoot":"","sources":["../../src/utils/grid.hex.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.getSquareInDirection = exports.directions = exports.Direction = exports.getDistanceBetweenSquares = exports.areAdjacentSquares = void 0;
|
|
4
|
-
var enum_util_1 = require("./enum.util");
|
|
5
|
-
var grid_util_1 = require("./grid.util");
|
|
1
|
+
import { getEnumValues } from './enum.util';
|
|
2
|
+
import { isXYCoordinates } from './grid.util';
|
|
6
3
|
/**
|
|
7
4
|
* Check if two squares in a grid are orthogonally adjacent based on their coordinates
|
|
8
5
|
* @param square1 Coordinates of the first square
|
|
9
6
|
* @param square2 Coordinates of the second square
|
|
10
7
|
* @returns true if the squares are orthogonally adjacent
|
|
11
8
|
*/
|
|
12
|
-
|
|
13
|
-
return (0, grid_util_1.isXYCoordinates)(square1) && (0, grid_util_1.isXYCoordinates)(square2) && (0, exports.getDistanceBetweenSquares)(square1, square2) === 1;
|
|
14
|
-
};
|
|
15
|
-
exports.areAdjacentSquares = areAdjacentSquares;
|
|
9
|
+
export const areAdjacentSquares = (square1, square2) => isXYCoordinates(square1) && isXYCoordinates(square2) && getDistanceBetweenSquares(square1, square2) === 1;
|
|
16
10
|
/**
|
|
17
11
|
* 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
12
|
* orthogonally adjacent squares
|
|
@@ -20,24 +14,21 @@ exports.areAdjacentSquares = areAdjacentSquares;
|
|
|
20
14
|
* @param square2 Coordinates of the second square
|
|
21
15
|
* @returns the distance between square1 and square2
|
|
22
16
|
*/
|
|
23
|
-
|
|
24
|
-
return Math.abs(square1.x - square2.x) + Math.abs(square1.y - square2.y);
|
|
25
|
-
};
|
|
26
|
-
exports.getDistanceBetweenSquares = getDistanceBetweenSquares;
|
|
17
|
+
export const getDistanceBetweenSquares = (square1, square2) => Math.abs(square1.x - square2.x) + Math.abs(square1.y - square2.y);
|
|
27
18
|
/**
|
|
28
19
|
* The direction (cardinal points) you can orient in a square grid
|
|
29
20
|
*/
|
|
30
|
-
var Direction;
|
|
21
|
+
export var Direction;
|
|
31
22
|
(function (Direction) {
|
|
32
23
|
Direction[Direction["North"] = 1] = "North";
|
|
33
24
|
Direction[Direction["South"] = 2] = "South";
|
|
34
25
|
Direction[Direction["East"] = 3] = "East";
|
|
35
26
|
Direction[Direction["West"] = 4] = "West";
|
|
36
|
-
})(Direction || (
|
|
27
|
+
})(Direction || (Direction = {}));
|
|
37
28
|
/**
|
|
38
29
|
* List of the 4 {@link Direction}s
|
|
39
30
|
*/
|
|
40
|
-
|
|
31
|
+
export const directions = getEnumValues(Direction);
|
|
41
32
|
/**
|
|
42
33
|
* Get the coordinates of the next square if you move in a square grid following a direction
|
|
43
34
|
* @param origin The coordinates of the square you start from
|
|
@@ -45,8 +36,7 @@ exports.directions = (0, enum_util_1.getEnumValues)(Direction);
|
|
|
45
36
|
* @param distance The number of steps you move (A by default)
|
|
46
37
|
* @returns the coordinates of the destination square
|
|
47
38
|
*/
|
|
48
|
-
|
|
49
|
-
if (distance === void 0) { distance = 1; }
|
|
39
|
+
export const getSquareInDirection = (origin, direction, distance = 1) => {
|
|
50
40
|
if (origin.x === undefined || origin.y === undefined)
|
|
51
41
|
throw new Error('Missing x or y to getSquareInDirection');
|
|
52
42
|
return {
|
|
@@ -54,5 +44,4 @@ var getSquareInDirection = function (origin, direction, distance) {
|
|
|
54
44
|
y: direction === Direction.North ? origin.y - distance : direction === Direction.South ? origin.y + distance : origin.y
|
|
55
45
|
};
|
|
56
46
|
};
|
|
57
|
-
exports.getSquareInDirection = getSquareInDirection;
|
|
58
47
|
//# sourceMappingURL=grid.squares.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.squares.util.js","sourceRoot":"","sources":["../../src/utils/grid.squares.util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grid.squares.util.js","sourceRoot":"","sources":["../../src/utils/grid.squares.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAA;AAE5D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAA+B,EAAE,OAA+B,EAAW,EAAE,CAC9G,eAAe,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;AAE3G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,OAAsB,EAAE,OAAsB,EAAU,EAAE,CAClG,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,CAAA;AAEnE;;GAEG;AACH,MAAM,CAAN,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,2CAAS,CAAA;IAAE,2CAAK,CAAA;IAAE,yCAAI,CAAA;IAAE,yCAAI,CAAA;AAC9B,CAAC,EAFW,SAAS,KAAT,SAAS,QAEpB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAA8B,EAAE,SAAoB,EAAE,QAAQ,GAAG,CAAC,EAAiB,EAAE;IACxH,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"}
|