@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 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 adjacentTiles = isAdjacent(
5451
- kingdom,
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
- const hasValidAdjacentTiles = hasValidAdjacent(adjacentTiles, [
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, firstPosition, secondPosition) => {
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 === firstPosition.x && y === firstPosition.y || x === secondPosition.x && y === secondPosition.y;
5496
- const adjacentTiles = [];
5497
- for (const pos of [firstPosition, secondPosition]) {
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 = pos.x + offset.x;
5500
- const ny = pos.y + offset.y;
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
- adjacentTiles.push(tile.value);
5496
+ pairs.push({ neighbor: tile.value, own: own.tile });
5505
5497
  }
5506
5498
  }
5507
5499
  }
5508
- return adjacentTiles;
5500
+ return pairs;
5509
5501
  };
5510
- var hasValidAdjacent = (adjacentTiles, tiles) => {
5511
- return adjacentTiles.some((adjacentTile) => {
5512
- return tiles.some((tile) => {
5513
- return tile.type === adjacentTile.type || adjacentTile.type === "castle";
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;