A warp mouth is a wallable line — and the tunnel seals whole
Create Wall refused the board-edge openings: no far cell, so "walls must be created between two spaces". But bricking over a lettered opening is a classic play, and the far space is the tunnel itself. A warp mouth now counts as wallable — with the wall raised at BOTH mouths, since a tunnel has one passage: no walking in from the far board, no warp sight through a sealed pair, and tearing down either end reopens both. The client grows edge hitboxes at the perimeter mouths so the line is clickable at all. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
bed7d849eb
commit
766ec0a726
@@ -150,6 +150,19 @@
|
||||
boxes.push({ cell: c, side: "S", x: c.x * CELL + 4, y: (c.y + 1) * CELL - 6, w: CELL - 8, h: 12 });
|
||||
}
|
||||
}
|
||||
// Warp mouths sit on the perimeter, with no far cell: still wallable.
|
||||
const seen = new Set(boxes.map((b) => `${b.cell.x},${b.cell.y},${b.side}`));
|
||||
for (const w of view.board.warps) {
|
||||
const c = w.from.cell;
|
||||
const side = w.from.side;
|
||||
const k = `${c.x},${c.y},${side}`;
|
||||
if (seen.has(k)) continue;
|
||||
seen.add(k);
|
||||
if (side === "E") boxes.push({ cell: c, side, x: (c.x + 1) * CELL - 6, y: c.y * CELL + 4, w: 12, h: CELL - 8 });
|
||||
if (side === "W") boxes.push({ cell: c, side, x: c.x * CELL - 6, y: c.y * CELL + 4, w: 12, h: CELL - 8 });
|
||||
if (side === "S") boxes.push({ cell: c, side, x: c.x * CELL + 4, y: (c.y + 1) * CELL - 6, w: CELL - 8, h: 12 });
|
||||
if (side === "N") boxes.push({ cell: c, side, x: c.x * CELL + 4, y: c.y * CELL - 6, w: CELL - 8, h: 12 });
|
||||
}
|
||||
return boxes;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user