diff --git a/templates/playerselect.html b/templates/playerselect.html
index de0c88a..e4c492c 100644
--- a/templates/playerselect.html
+++ b/templates/playerselect.html
@@ -65,8 +65,12 @@
{{ translations['singleplayer_desc'] if translations['singleplayer_desc'] else 'Play alone and test your knowledge.' }}
-
diff --git a/templates/quiz.html b/templates/quiz.html
index 2459b1e..b97cc1c 100644
--- a/templates/quiz.html
+++ b/templates/quiz.html
@@ -322,6 +322,7 @@ window.onload = function() {
label.style.display = '';
}
document.getElementById('startPosition').value = getOption('startPosition', 'start');
+ updateMultiplayerUI();
};
function onPlayDurationChange() {
@@ -358,6 +359,74 @@ function replayDuration() {
}, playDuration * 1000);
}
}
+
+function updateMultiplayerUI() {
+ const names = JSON.parse(localStorage.getItem('quizify_multiplayer_names') || "[]");
+ const scores = JSON.parse(localStorage.getItem('quizify_multiplayer_scores') || "[]");
+ const current = parseInt(localStorage.getItem('quizify_multiplayer_current') || "0");
+ if(names.length > 1) {
+ document.getElementById('multiplayerBar').style.display = '';
+ let html = '';
+ names.forEach((n,i) => {
+ html += `
${n}: ${scores[i]}`;
+ });
+ html += `
Am Zug: ${names[current]}`;
+ document.getElementById('multiplayerPlayers').innerHTML = html;
+ document.getElementById('answerInput').placeholder = "Antwort für " + names[current];
+ }
+}
+
+// Multiplayer: Nach jeder Antwort Punkte & Spieler wechseln
+const origCheckAnswer = checkAnswer;
+checkAnswer = function() {
+ const names = JSON.parse(localStorage.getItem('quizify_multiplayer_names') || "[]");
+ const scores = JSON.parse(localStorage.getItem('quizify_multiplayer_scores') || "[]");
+ const current = parseInt(localStorage.getItem('quizify_multiplayer_current') || "0");
+ const guess = document.getElementById('answerInput').value;
+ if (!guess) return;
+
+ fetch('/check_answer', {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({
+ guess: guess,
+ correct_answer: correctAnswer,
+ game_mode: currentGameMode,
+ playlist_id: "{{ playlist_id }}"
+ })
+ })
+ .then(response => response.json())
+ .then(data => {
+ const resultContainer = document.getElementById('resultContainer');
+ resultContainer.style.display = 'block';
+ if (data.correct) {
+ resultContainer.className = 'result-container correct';
+ resultContainer.innerHTML = `
${i18n.correct}
`;
+ scores[current] = (scores[current] || 0) + 1;
+ localStorage.setItem('quizify_multiplayer_scores', JSON.stringify(scores));
+ } else {
+ resultContainer.className = 'result-container incorrect';
+ resultContainer.innerHTML = `
${i18n.wrong}
+
${i18n.right_answer} ${data.correct_answer}
`;
+ }
+ // Song-Infos ergänzen (wie gehabt)
+ // ...
+ // Nächster Spieler
+ let next = (current + 1) % names.length;
+ localStorage.setItem('quizify_multiplayer_current', next);
+ updateMultiplayerUI();
+ document.getElementById('nextQuestionBtn').style.display = 'inline-block';
+ })
+ .catch(error => {
+ console.error('Error checking answer:', error);
+ });
+}
+
+// Beim Laden Multiplayer-UI anzeigen, falls aktiv
+window.onload = function() {
+ // ...dein bisheriger onload code...
+ updateMultiplayerUI();
+}
@@ -429,6 +498,43 @@ function replayDuration() {
{{ translations['tip_year'] }}
{% endif %}
+