@pompidup/kingdomino-engine 3.5.0 → 3.5.1
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/index.js +15 -25
- package/dist/index.js.map +1 -1
- package/dist/index.universal.js +15 -25
- package/dist/wasm-bridge.js +15 -25
- package/package.json +1 -1
package/dist/index.universal.js
CHANGED
|
@@ -5447,19 +5447,11 @@ var placeDomino = (kingdom, position, rotation, domino, maxKingdomSize = MAX_KIN
|
|
|
5447
5447
|
)) {
|
|
5448
5448
|
return err(ErrorCode.PLACEMENT_EXCEEDS_KINGDOM_SIZE);
|
|
5449
5449
|
}
|
|
5450
|
-
const
|
|
5451
|
-
|
|
5452
|
-
firstTile.position,
|
|
5453
|
-
secondTile.position
|
|
5454
|
-
);
|
|
5455
|
-
if (adjacentTiles.length === 0) {
|
|
5450
|
+
const adjacentPairs = isAdjacent(kingdom, firstTile, secondTile);
|
|
5451
|
+
if (adjacentPairs.length === 0) {
|
|
5456
5452
|
return err(ErrorCode.PLACEMENT_NOT_ADJACENT);
|
|
5457
5453
|
}
|
|
5458
|
-
|
|
5459
|
-
firstTile.tile,
|
|
5460
|
-
secondTile.tile
|
|
5461
|
-
]);
|
|
5462
|
-
if (!hasValidAdjacentTiles) {
|
|
5454
|
+
if (!hasValidAdjacent(adjacentPairs)) {
|
|
5463
5455
|
return err(ErrorCode.PLACEMENT_INVALID_TERRAIN);
|
|
5464
5456
|
}
|
|
5465
5457
|
return ok(placeTiles(kingdom, [firstTile, secondTile]));
|
|
@@ -5485,34 +5477,32 @@ var isFreePlace = (kingdom, firstPosition, secondPosition) => {
|
|
|
5485
5477
|
}
|
|
5486
5478
|
return ok(true);
|
|
5487
5479
|
};
|
|
5488
|
-
var isAdjacent = (kingdom,
|
|
5480
|
+
var isAdjacent = (kingdom, firstTile, secondTile) => {
|
|
5489
5481
|
const offsets = [
|
|
5490
5482
|
{ x: -1, y: 0 },
|
|
5491
5483
|
{ x: 1, y: 0 },
|
|
5492
5484
|
{ x: 0, y: -1 },
|
|
5493
5485
|
{ x: 0, y: 1 }
|
|
5494
5486
|
];
|
|
5495
|
-
const isOwnPosition = (x, y) => x ===
|
|
5496
|
-
const
|
|
5497
|
-
for (const
|
|
5487
|
+
const isOwnPosition = (x, y) => x === firstTile.position.x && y === firstTile.position.y || x === secondTile.position.x && y === secondTile.position.y;
|
|
5488
|
+
const pairs = [];
|
|
5489
|
+
for (const own of [firstTile, secondTile]) {
|
|
5498
5490
|
for (const offset of offsets) {
|
|
5499
|
-
const nx =
|
|
5500
|
-
const ny =
|
|
5491
|
+
const nx = own.position.x + offset.x;
|
|
5492
|
+
const ny = own.position.y + offset.y;
|
|
5501
5493
|
if (isOwnPosition(nx, ny)) continue;
|
|
5502
5494
|
const tile = getTile(kingdom, { x: nx, y: ny });
|
|
5503
5495
|
if (isOk(tile) && tile.value.type !== "empty") {
|
|
5504
|
-
|
|
5496
|
+
pairs.push({ neighbor: tile.value, own: own.tile });
|
|
5505
5497
|
}
|
|
5506
5498
|
}
|
|
5507
5499
|
}
|
|
5508
|
-
return
|
|
5500
|
+
return pairs;
|
|
5509
5501
|
};
|
|
5510
|
-
var hasValidAdjacent = (
|
|
5511
|
-
return
|
|
5512
|
-
|
|
5513
|
-
|
|
5514
|
-
});
|
|
5515
|
-
});
|
|
5502
|
+
var hasValidAdjacent = (pairs) => {
|
|
5503
|
+
return pairs.some(
|
|
5504
|
+
({ neighbor, own }) => neighbor.type === "castle" || neighbor.type === own.type
|
|
5505
|
+
);
|
|
5516
5506
|
};
|
|
5517
5507
|
var checkCastleIsInMiddle = (kingdom) => {
|
|
5518
5508
|
let castleX;
|
package/dist/wasm-bridge.js
CHANGED
|
@@ -5362,19 +5362,11 @@ var placeDomino = (kingdom, position, rotation, domino, maxKingdomSize = MAX_KIN
|
|
|
5362
5362
|
)) {
|
|
5363
5363
|
return err(ErrorCode.PLACEMENT_EXCEEDS_KINGDOM_SIZE);
|
|
5364
5364
|
}
|
|
5365
|
-
const
|
|
5366
|
-
|
|
5367
|
-
firstTile.position,
|
|
5368
|
-
secondTile.position
|
|
5369
|
-
);
|
|
5370
|
-
if (adjacentTiles.length === 0) {
|
|
5365
|
+
const adjacentPairs = isAdjacent(kingdom, firstTile, secondTile);
|
|
5366
|
+
if (adjacentPairs.length === 0) {
|
|
5371
5367
|
return err(ErrorCode.PLACEMENT_NOT_ADJACENT);
|
|
5372
5368
|
}
|
|
5373
|
-
|
|
5374
|
-
firstTile.tile,
|
|
5375
|
-
secondTile.tile
|
|
5376
|
-
]);
|
|
5377
|
-
if (!hasValidAdjacentTiles) {
|
|
5369
|
+
if (!hasValidAdjacent(adjacentPairs)) {
|
|
5378
5370
|
return err(ErrorCode.PLACEMENT_INVALID_TERRAIN);
|
|
5379
5371
|
}
|
|
5380
5372
|
return ok(placeTiles(kingdom, [firstTile, secondTile]));
|
|
@@ -5400,34 +5392,32 @@ var isFreePlace = (kingdom, firstPosition, secondPosition) => {
|
|
|
5400
5392
|
}
|
|
5401
5393
|
return ok(true);
|
|
5402
5394
|
};
|
|
5403
|
-
var isAdjacent = (kingdom,
|
|
5395
|
+
var isAdjacent = (kingdom, firstTile, secondTile) => {
|
|
5404
5396
|
const offsets = [
|
|
5405
5397
|
{ x: -1, y: 0 },
|
|
5406
5398
|
{ x: 1, y: 0 },
|
|
5407
5399
|
{ x: 0, y: -1 },
|
|
5408
5400
|
{ x: 0, y: 1 }
|
|
5409
5401
|
];
|
|
5410
|
-
const isOwnPosition = (x, y) => x ===
|
|
5411
|
-
const
|
|
5412
|
-
for (const
|
|
5402
|
+
const isOwnPosition = (x, y) => x === firstTile.position.x && y === firstTile.position.y || x === secondTile.position.x && y === secondTile.position.y;
|
|
5403
|
+
const pairs = [];
|
|
5404
|
+
for (const own of [firstTile, secondTile]) {
|
|
5413
5405
|
for (const offset of offsets) {
|
|
5414
|
-
const nx =
|
|
5415
|
-
const ny =
|
|
5406
|
+
const nx = own.position.x + offset.x;
|
|
5407
|
+
const ny = own.position.y + offset.y;
|
|
5416
5408
|
if (isOwnPosition(nx, ny)) continue;
|
|
5417
5409
|
const tile = getTile(kingdom, { x: nx, y: ny });
|
|
5418
5410
|
if (isOk(tile) && tile.value.type !== "empty") {
|
|
5419
|
-
|
|
5411
|
+
pairs.push({ neighbor: tile.value, own: own.tile });
|
|
5420
5412
|
}
|
|
5421
5413
|
}
|
|
5422
5414
|
}
|
|
5423
|
-
return
|
|
5415
|
+
return pairs;
|
|
5424
5416
|
};
|
|
5425
|
-
var hasValidAdjacent = (
|
|
5426
|
-
return
|
|
5427
|
-
|
|
5428
|
-
|
|
5429
|
-
});
|
|
5430
|
-
});
|
|
5417
|
+
var hasValidAdjacent = (pairs) => {
|
|
5418
|
+
return pairs.some(
|
|
5419
|
+
({ neighbor, own }) => neighbor.type === "castle" || neighbor.type === own.type
|
|
5420
|
+
);
|
|
5431
5421
|
};
|
|
5432
5422
|
var checkCastleIsInMiddle = (kingdom) => {
|
|
5433
5423
|
let castleX;
|