This commit is contained in:
cay 2026-04-12 11:55:34 +01:00
parent 65b0d29595
commit 74ad10c95e

View File

@ -572,12 +572,9 @@
updateTimerUI(turnSecsLeft, activeName); updateTimerUI(turnSecsLeft, activeName);
if (turnSecsLeft <= 0) { if (turnSecsLeft <= 0) {
clearInterval(turnTimerInt); clearInterval(turnTimerInt);
// Nur der aktive Spieler sendet end_turn // Nur der aktive Spieler beendet den Zug
if (isMyTurn) { if (isMyTurn) {
tickHandCooldowns(); endMyTurn();
drawNextCard();
setTurnState(false);
socket.emit("end_turn", { matchId, slot: mySlot });
} }
} }
}, 1000); }, 1000);
@ -623,28 +620,19 @@
const btn = document.getElementById("end-turn-btn"); const btn = document.getElementById("end-turn-btn");
if (!btn) return; if (!btn) return;
// Alle Handkarten sofort neu rendern damit Draggable + Badge korrekt sind
handCardIds.forEach((id) => renderHandSlot(id));
if (myTurn) { if (myTurn) {
btn.disabled = false; btn.disabled = false;
btn.textContent = "Zug beenden"; btn.textContent = "Zug beenden";
btn.style.opacity = "1"; btn.style.opacity = "1";
document.getElementById("turn-indicator")?.remove(); document.getElementById("turn-indicator")?.remove();
// Draggable für bereite Karten aktivieren
setTimeout(() => handCardIds.forEach((id) => renderHandSlot(id)), 50);
// Timer für beide Spieler sichtbar starten
startTurnTimer(activeName || "Du"); startTurnTimer(activeName || "Du");
} else { } else {
btn.disabled = true; btn.disabled = true;
btn.style.opacity = "0.4"; btn.style.opacity = "0.4";
// Draggable sofort deaktivieren
handCardIds.forEach((id) => {
const s = document.getElementById(id);
if (s) {
s.draggable = false;
delete s.dataset.cardSlotId;
}
});
showTurnIndicator(activeName); showTurnIndicator(activeName);
// Timer für Gegner-Countdown auch anzeigen
startTurnTimer(activeName || "Gegner"); startTurnTimer(activeName || "Gegner");
} }
} }
@ -676,15 +664,20 @@
} }
/* ── Zug beenden: per Button oder Timer-Ablauf ── */ /* ── Zug beenden: per Button oder Timer-Ablauf ── */
document.getElementById("end-turn-btn")?.addEventListener("click", () => { function endMyTurn() {
if (!isMyTurn) return; if (!isMyTurn) return;
clearInterval(turnTimerInt); clearInterval(turnTimerInt);
stopTurnTimer(); stopTurnTimer();
tickHandCooldowns(); // ERST isMyTurn=false setzen, DANN Karten updaten
drawNextCard(); // so werden die neuen/aktualisierten Karten gleich korrekt (ohne Badge/Draggable) gerendert
setTurnState(false); setTurnState(false);
tickHandCooldowns(); // CDs runtercountent und Slots neu rendern (isMyTurn ist jetzt false)
drawNextCard(); // neue Karte ziehen und Slot rendern (isMyTurn ist jetzt false)
socket.emit("end_turn", { matchId, slot: mySlot }); socket.emit("end_turn", { matchId, slot: mySlot });
// Server antwortet mit turn_change → dann wird setTurnState erneut aufgerufen }
document.getElementById("end-turn-btn")?.addEventListener("click", () => {
endMyTurn();
}); });
/* ── Hilfsfunktion: Karte mit Stats in einen Slot rendern ── */ /* ── Hilfsfunktion: Karte mit Stats in einen Slot rendern ── */
function renderCardInSlot(slot, card) { function renderCardInSlot(slot, card) {