From 628272e762c00fa0023ad8b39204d931160479c4 Mon Sep 17 00:00:00 2001 From: Dicken Date: Sun, 28 Jun 2026 14:53:42 +0200 Subject: [PATCH] fix: Hex Wars - Mine Legende, Kopf nach Explosion auf altes Feld --- backend/src/tools/gebietseroberung/routes.js | 22 ++++++++++++++++++++ frontend/src/tools/gebietseroberung.jsx | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/backend/src/tools/gebietseroberung/routes.js b/backend/src/tools/gebietseroberung/routes.js index 7fa98df..9363966 100644 --- a/backend/src/tools/gebietseroberung/routes.js +++ b/backend/src/tools/gebietseroberung/routes.js @@ -321,6 +321,28 @@ router.post('/:id/move', authenticate, (req, res) => { destroyedOwn = explosion.destroyedByOwner; destroyedOpp = explosion.destroyedByOpp; lastEvent = JSON.stringify({ type:'mine', player:me, row, col, blastCells, destroyedOwn, destroyedOpp }); + + // Kopf zurücksetzen: Mine-Feld gehört dem Spieler, aber Kopf soll auf das letzte + // noch existierende eigene Feld vor dem Mine-Zug zeigen. + // Der alte Kopf (myHR, myHC) wird durch explodeMine nicht zerstört (Explosion trifft Nachbarn), + // also ist er noch vorhanden — Kopf bleibt beim alten Kopf (vor dem Mine-Zug). + // Falls kein alter Kopf bekannt: suche nächstes eigenes Feld neben der Mine. + if (myHR !== null) { + // Alten Kopf wiederherstellen — Mine-Feld selbst ist kein guter Ausgangspunkt + if (game.owner_id === me) newOwnerHead = `${myHR},${myHC}`; + else newOppHead = `${myHR},${myHC}`; + } else { + // Fallback: nächstes eigenes Feld neben der Mine suchen + let fallbackHead = null; + for (const [dr,dc] of DIRS8) { + const nr=row+dr, nc=col+dc; + if (nr>=0&&nr=0&&nc - {[['⭐','Gold +3','#ffe66d'],['💣','Mine −3','#ff6b9d'],['🪨','Felsen','rgba(255,255,255,0.35)'],['🌫️','Nebel','rgba(255,255,255,0.25)']].map(([icon,label,color]) => ( + {[['⭐','Gold +3','#ffe66d'],['💣','Mine 💥','#ff6b9d'],['🪨','Felsen','rgba(255,255,255,0.35)'],['🌫️','Nebel','rgba(255,255,255,0.25)']].map(([icon,label,color]) => (
{icon} {label}