From cfb66c23dc72a1f581b1bb54a42e27735e307adb Mon Sep 17 00:00:00 2001 From: Dicken Date: Fri, 26 Jun 2026 16:17:25 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Hex=20Wars=20-=20Spieler=202=20kann=20Z?= =?UTF-8?q?=C3=BCge=20machen,=20Felsen=20immer=20sichtbar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/tools/gebietseroberung/routes.js | 3 ++- frontend/src/tools/gebietseroberung.jsx | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/src/tools/gebietseroberung/routes.js b/backend/src/tools/gebietseroberung/routes.js index beb1b95..ae8483f 100644 --- a/backend/src/tools/gebietseroberung/routes.js +++ b/backend/src/tools/gebietseroberung/routes.js @@ -160,7 +160,8 @@ function getGameForUser(id, requesterId) { // Grid maskieren: versteckte Gegner-Felder als 0 zeigen, Terrain nur wo sichtbar const maskedGrid = grid.map((row,r) => row.map((cell,c) => visible[r][c] ? cell : (cell === requesterId ? cell : 0))); - const maskedTerrain = terrain.map((row,r) => row.map((cell,c) => visible[r][c] ? cell : -1)); // -1 = Nebel + // Felsen sind immer sichtbar (Frontend braucht sie für canClick) + const maskedTerrain = terrain.map((row,r) => row.map((cell,c) => (visible[r][c] || cell === T_ROCK) ? cell : -1)); return { ...game, grid: JSON.stringify(maskedGrid), terrain: JSON.stringify(maskedTerrain), fog: JSON.stringify(visible) }; } diff --git a/frontend/src/tools/gebietseroberung.jsx b/frontend/src/tools/gebietseroberung.jsx index fd0605a..a573c2a 100644 --- a/frontend/src/tools/gebietseroberung.jsx +++ b/frontend/src/tools/gebietseroberung.jsx @@ -167,8 +167,9 @@ function GameBoard({ game, myId, onMove, toast }) { const canClick = (r, c) => { if (!isMyTurn || game.status !== 'active') return false; if (grid[r][c] !== 0) return false; + // T_ROCK kommt vom Server auch im Nebel nicht — Felsen sind immer sichtbar + // T_FOG darf canClick NICHT blocken: Felder können klickbar aber noch im Nebel sein if (hasTerrain && terrain[r][c] === T_ROCK) return false; - if (hasTerrain && terrain[r][c] === T_FOG) return false; return isAdj(r, c); };