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); };