Revert: Return to 611a94a envelope structure and remove parchment_texture.jpg without extra adaptations (v3.2)
This commit is contained in:
+59
-142
@@ -14,22 +14,25 @@ const UI_TEXT = {
|
||||
de: {
|
||||
pageTitle: "✨ Magisches Hogwarts-Escape-Quiz ✨",
|
||||
pageSubtitle: "10 knifflige Rätsel aus der Zauberwelt warten auf dich",
|
||||
senderLine: "Abs.: Hogwarts Schule für Hexerei und Zauberei",
|
||||
letterTitle: "Hogwarts-Schule",
|
||||
letterSubtitle: "für Hexerei und Zauberei",
|
||||
introDescClosed: "Ein verzauberter Pergamentbrief aus Hogwarts liegt vor dir.<br>Wähle deinen Schwierigkeitsgrad und brich das rote Zaubersiegel:",
|
||||
introDescOpened: "Lies die Botschaft der Schulleitung aufmerksam.<br>Sobald du bereit bist, besteige den Hogwarts-Express zur Prüfung:",
|
||||
envelopeLetter: "Hogwarts-Schule für Hexerei und Zauberei",
|
||||
envelopeRecipient: "An den ehrenwerten Zauberschüler",
|
||||
envelopeLocation: "Auf dem Prüfungspfad • Schloss Hogwarts",
|
||||
letterSchoolTitle: "Hogwarts-Schule für Hexerei und Zauberei",
|
||||
letterHeadmaster: "Schulleiter: Albus Dumbledore<br><span>(Großhexenmeister, Träger des Merlin-Ordens Erster Klasse)</span>",
|
||||
letterSalutation: "Liebe Hexe, lieber Zauberer,",
|
||||
letterParagraph1: "wir freuen uns, dir mitteilen zu dürfen, dass du zu den <strong>Magischen Z.A.G.-Prüfungen</strong> des Zaubereiministeriums zugelassen bist.",
|
||||
letterParagraph2: "Zehn anspruchsvolle Prüfungsfragen entscheiden über deinen Rang in den Chroniken von Hogwarts. Zeige deinen Scharfsinn und sichere bis zu <strong>1.000 Hauspunkte</strong> für dein Haus!",
|
||||
letterClosing: "Mit vorzüglicher Hochachtung,",
|
||||
letterSignature: "Minerva McGonagall",
|
||||
letterSignTitle: "Stellvertretende Schulleiterin",
|
||||
introDesc: "Ein verzauberter Pergamentbrief aus Hogwarts liegt vor dir.<br>Wähle deinen Schwierigkeitsgrad und brich das rote Zaubersiegel:",
|
||||
diffLabel: "Schwierigkeitsgrad wählen:",
|
||||
diffAll: "Alle gemischt",
|
||||
diffEasy: "Leicht",
|
||||
diffMed: "Mittel",
|
||||
diffHard: "Schwer",
|
||||
breakSealBtn: "📜 Siegel brechen & Brief öffnen",
|
||||
startQuizBtn: "🚂 Hogwarts-Express besteigen & Prüfung beginnen ➔",
|
||||
closeLetterBtn: "↩ Brief wieder schließen",
|
||||
startBtn: "📜 Siegel brechen & Brief öffnen",
|
||||
startBtnCasting: "✨ Zauberstab wird vorbereitet...",
|
||||
startBtnCasting: "✨ Zauber wird gewirkt...",
|
||||
pointsLabel: "🏆 Hauspunkte",
|
||||
questionLabel: "Frage",
|
||||
ofLabel: "von",
|
||||
@@ -50,22 +53,25 @@ const UI_TEXT = {
|
||||
en: {
|
||||
pageTitle: "✨ Magical Hogwarts Escape Quiz ✨",
|
||||
pageSubtitle: "10 tricky wizarding world puzzles await you",
|
||||
senderLine: "Sender: Hogwarts School of Witchcraft and Wizardry",
|
||||
letterTitle: "Hogwarts School",
|
||||
letterSubtitle: "of Witchcraft and Wizardry",
|
||||
introDescClosed: "An enchanted Hogwarts parchment letter lies before you.<br>Choose your difficulty and break the crimson magical seal:",
|
||||
introDescOpened: "Read the message from Hogwarts leadership carefully.<br>When you are ready, board the Hogwarts Express for your trial:",
|
||||
envelopeLetter: "Hogwarts School of Witchcraft and Wizardry",
|
||||
envelopeRecipient: "To the Esteemed Wizarding Student",
|
||||
envelopeLocation: "On the Path of Trials • Hogwarts Castle",
|
||||
letterSchoolTitle: "Hogwarts School of Witchcraft and Wizardry",
|
||||
letterHeadmaster: "Headmaster: Albus Dumbledore<br><span>(Order of Merlin, First Class, Grand Sorc.)</span>",
|
||||
letterSalutation: "Dear Witch or Wizard,",
|
||||
letterParagraph1: "we are pleased to inform you that you have been admitted to the <strong>Magical O.W.L. Examinations</strong> of the Ministry of Magic.",
|
||||
letterParagraph2: "Ten demanding examination questions will determine your rank in the Hogwarts archives. Show your wisdom and claim up to <strong>1,000 House Points</strong> for your house!",
|
||||
letterClosing: "Yours sincerely,",
|
||||
letterSignature: "Minerva McGonagall",
|
||||
letterSignTitle: "Deputy Headmistress",
|
||||
introDesc: "An enchanted Hogwarts parchment letter lies before you.<br>Choose your difficulty and break the crimson magical seal:",
|
||||
diffLabel: "Choose difficulty level:",
|
||||
diffAll: "All mixed",
|
||||
diffEasy: "Easy",
|
||||
diffMed: "Medium",
|
||||
diffHard: "Hard",
|
||||
breakSealBtn: "📜 Break Seal & Open Letter",
|
||||
startQuizBtn: "🚂 Board Hogwarts Express & Begin Trials ➔",
|
||||
closeLetterBtn: "↩ Close letter again",
|
||||
startBtn: "📜 Break Seal & Open Letter",
|
||||
startBtnCasting: "✨ Preparing wand...",
|
||||
startBtnCasting: "✨ Casting spell...",
|
||||
pointsLabel: "🏆 House Points",
|
||||
questionLabel: "Question",
|
||||
ofLabel: "of",
|
||||
@@ -152,39 +158,37 @@ function applyQuizTranslations(lang) {
|
||||
const hintHeading = document.getElementById("hintHeading");
|
||||
const answerInput = document.getElementById("answerInput");
|
||||
|
||||
const envSenderLine = document.getElementById("envSenderLine");
|
||||
const letterTitle = document.getElementById("letterTitle");
|
||||
const letterSubtitle = document.getElementById("letterSubtitle");
|
||||
const startQuizBtnInLetter = document.getElementById("startQuizBtnInLetter");
|
||||
const breakSealBtn = document.getElementById("breakSealBtn");
|
||||
const startQuizBtn = document.getElementById("startQuizBtn");
|
||||
const closeLetterBtn = document.getElementById("closeLetterBtn");
|
||||
const letterSchoolTitle = document.getElementById("letterSchoolTitle");
|
||||
const letterHeadmaster = document.getElementById("letterHeadmaster");
|
||||
const letterSalutation = document.getElementById("letterSalutation");
|
||||
const letterParagraph1 = document.getElementById("letterParagraph1");
|
||||
const letterParagraph2 = document.getElementById("letterParagraph2");
|
||||
const letterClosing = document.getElementById("letterClosing");
|
||||
const letterSignature = document.getElementById("letterSignature");
|
||||
const letterSignTitle = document.getElementById("letterSignTitle");
|
||||
|
||||
const envelopeRecipient = document.getElementById("envelopeRecipient");
|
||||
const envelopeLocation = document.getElementById("envelopeLocation");
|
||||
|
||||
if (pageTitle) pageTitle.innerText = t.pageTitle;
|
||||
if (pageSubtitle) pageSubtitle.innerText = t.pageSubtitle;
|
||||
if (envSenderLine && t.senderLine) envSenderLine.innerText = t.senderLine;
|
||||
if (letterTitle && t.letterTitle) letterTitle.innerText = t.letterTitle;
|
||||
if (letterSubtitle && t.letterSubtitle) letterSubtitle.innerText = t.letterSubtitle;
|
||||
if (startQuizBtnInLetter && t.startQuizBtn) startQuizBtnInLetter.innerText = t.startQuizBtn;
|
||||
|
||||
const envelope = document.getElementById("envelope");
|
||||
if (introDesc) {
|
||||
if (envelope && envelope.classList.contains("envelope-opened") && t.introDescOpened) {
|
||||
introDesc.innerHTML = t.introDescOpened;
|
||||
} else if (t.introDescClosed) {
|
||||
introDesc.innerHTML = t.introDescClosed;
|
||||
} else if (t.introDesc) {
|
||||
introDesc.innerHTML = t.introDesc;
|
||||
}
|
||||
}
|
||||
if (envelopeLetter) envelopeLetter.innerText = t.envelopeLetter;
|
||||
if (envelopeRecipient && t.envelopeRecipient) envelopeRecipient.innerText = t.envelopeRecipient;
|
||||
if (envelopeLocation && t.envelopeLocation) envelopeLocation.innerText = t.envelopeLocation;
|
||||
if (letterSchoolTitle && t.letterSchoolTitle) letterSchoolTitle.innerText = t.letterSchoolTitle;
|
||||
if (letterHeadmaster && t.letterHeadmaster) letterHeadmaster.innerHTML = t.letterHeadmaster;
|
||||
if (letterSalutation && t.letterSalutation) letterSalutation.innerText = t.letterSalutation;
|
||||
if (letterParagraph1 && t.letterParagraph1) letterParagraph1.innerHTML = t.letterParagraph1;
|
||||
if (letterParagraph2 && t.letterParagraph2) letterParagraph2.innerHTML = t.letterParagraph2;
|
||||
if (letterClosing && t.letterClosing) letterClosing.innerText = t.letterClosing;
|
||||
if (letterSignature && t.letterSignature) letterSignature.innerText = t.letterSignature;
|
||||
if (letterSignTitle && t.letterSignTitle) letterSignTitle.innerText = t.letterSignTitle;
|
||||
if (introDesc) introDesc.innerHTML = t.introDesc;
|
||||
if (diffLabel) diffLabel.innerText = t.diffLabel;
|
||||
if (diffAllText) diffAllText.innerText = t.diffAll;
|
||||
if (diffEasyText) diffEasyText.innerText = t.diffEasy;
|
||||
if (diffMedText) diffMedText.innerText = t.diffMed;
|
||||
if (diffHardText) diffHardText.innerText = t.diffHard;
|
||||
if (breakSealBtn && !breakSealBtn.disabled) breakSealBtn.innerText = t.breakSealBtn || t.startBtn;
|
||||
if (startQuizBtn && !startQuizBtn.disabled) startQuizBtn.innerText = t.startQuizBtn;
|
||||
if (closeLetterBtn) closeLetterBtn.innerText = t.closeLetterBtn;
|
||||
if (startBtn && !startBtn.disabled) startBtn.innerText = t.startBtn;
|
||||
if (checkBtn) checkBtn.innerText = t.checkBtn;
|
||||
if (hintBtn) hintBtn.innerText = t.hintBtn;
|
||||
@@ -249,14 +253,16 @@ function saveRecentQuestions(ids) {
|
||||
} catch(e) {}
|
||||
}
|
||||
|
||||
function breakSealAndOpenLetter() {
|
||||
async function startGame() {
|
||||
const envelope = document.getElementById("envelope");
|
||||
const scene = document.getElementById("envelopeScene");
|
||||
if (!envelope || envelope.classList.contains("envelope-opened")) return;
|
||||
const startBtn = document.getElementById("startBtn");
|
||||
const t = UI_TEXT[currentLang] || UI_TEXT.de;
|
||||
|
||||
playSound('magic');
|
||||
startBtn.disabled = true;
|
||||
startBtn.innerText = t.startBtnCasting;
|
||||
envelope.classList.add("envelope-opened");
|
||||
if (scene) scene.classList.add("envelope-opened");
|
||||
playSound('magic');
|
||||
sessionQuestionIds = [];
|
||||
|
||||
// Start background music if enabled or first click
|
||||
const bgm = document.getElementById("bgm");
|
||||
@@ -272,73 +278,6 @@ function breakSealAndOpenLetter() {
|
||||
}).catch(() => {});
|
||||
}
|
||||
|
||||
const breakSealBtn = document.getElementById("breakSealBtn");
|
||||
const startBtn = document.getElementById("startBtn");
|
||||
const letterActions = document.getElementById("letterActions");
|
||||
const introDesc = document.getElementById("introDesc");
|
||||
const t = UI_TEXT[currentLang] || UI_TEXT.de;
|
||||
|
||||
if (breakSealBtn) breakSealBtn.classList.add("hidden");
|
||||
if (startBtn) startBtn.classList.add("hidden");
|
||||
if (letterActions) {
|
||||
letterActions.classList.remove("hidden");
|
||||
letterActions.classList.add("fade-in-action");
|
||||
}
|
||||
if (introDesc && t.introDescOpened) {
|
||||
introDesc.innerHTML = t.introDescOpened;
|
||||
}
|
||||
}
|
||||
|
||||
function closeLetter() {
|
||||
const envelope = document.getElementById("envelope");
|
||||
const scene = document.getElementById("envelopeScene");
|
||||
if (!envelope) return;
|
||||
|
||||
envelope.classList.remove("envelope-opened");
|
||||
if (scene) scene.classList.remove("envelope-opened");
|
||||
|
||||
const breakSealBtn = document.getElementById("breakSealBtn");
|
||||
const startBtn = document.getElementById("startBtn");
|
||||
const letterActions = document.getElementById("letterActions");
|
||||
const introDesc = document.getElementById("introDesc");
|
||||
const startQuizBtn = document.getElementById("startQuizBtn");
|
||||
const startQuizBtnInLetter = document.getElementById("startQuizBtnInLetter");
|
||||
const t = UI_TEXT[currentLang] || UI_TEXT.de;
|
||||
|
||||
if (startQuizBtn) {
|
||||
startQuizBtn.disabled = false;
|
||||
startQuizBtn.innerText = t.startQuizBtn;
|
||||
}
|
||||
if (startQuizBtnInLetter) {
|
||||
startQuizBtnInLetter.disabled = false;
|
||||
startQuizBtnInLetter.innerText = t.startQuizBtn;
|
||||
}
|
||||
|
||||
if (letterActions) letterActions.classList.add("hidden");
|
||||
if (breakSealBtn) breakSealBtn.classList.remove("hidden");
|
||||
if (startBtn) startBtn.classList.remove("hidden");
|
||||
if (introDesc && t.introDescClosed) {
|
||||
introDesc.innerHTML = t.introDescClosed;
|
||||
}
|
||||
}
|
||||
|
||||
async function startQuizFromLetter() {
|
||||
const startQuizBtn = document.getElementById("startQuizBtn");
|
||||
const startQuizBtnInLetter = document.getElementById("startQuizBtnInLetter");
|
||||
const t = UI_TEXT[currentLang] || UI_TEXT.de;
|
||||
|
||||
if (startQuizBtn) {
|
||||
startQuizBtn.disabled = true;
|
||||
startQuizBtn.innerText = t.startBtnCasting;
|
||||
}
|
||||
if (startQuizBtnInLetter) {
|
||||
startQuizBtnInLetter.disabled = true;
|
||||
startQuizBtnInLetter.innerText = t.startBtnCasting;
|
||||
}
|
||||
|
||||
playSound('magic');
|
||||
sessionQuestionIds = [];
|
||||
|
||||
try {
|
||||
const recentIds = getRecentQuestionIds();
|
||||
const wrongIds = getWrongQuestionIds();
|
||||
@@ -365,40 +304,18 @@ async function startQuizFromLetter() {
|
||||
currentScore = data.score;
|
||||
attemptsUsed = data.attempts_used;
|
||||
|
||||
const introCard = document.getElementById("introCard");
|
||||
if (introCard) {
|
||||
introCard.style.transition = "opacity 0.4s ease, transform 0.4s ease";
|
||||
introCard.style.opacity = "0";
|
||||
introCard.style.transform = "scale(0.97)";
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
if (introCard) {
|
||||
introCard.classList.add("hidden");
|
||||
introCard.style.opacity = "";
|
||||
introCard.style.transform = "";
|
||||
}
|
||||
document.getElementById("introCard").classList.add("hidden");
|
||||
document.getElementById("gameCard").classList.remove("hidden");
|
||||
startTimer();
|
||||
renderQuestion(data);
|
||||
}, 400);
|
||||
}, 1800);
|
||||
|
||||
} catch (err) {
|
||||
alert(t.startError + err.message);
|
||||
if (startQuizBtn) {
|
||||
startQuizBtn.disabled = false;
|
||||
startQuizBtn.innerText = t.startQuizBtn;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback alias for startGame
|
||||
function startGame() {
|
||||
const envelope = document.getElementById("envelope");
|
||||
if (envelope && !envelope.classList.contains("envelope-opened")) {
|
||||
breakSealAndOpenLetter();
|
||||
} else {
|
||||
startQuizFromLetter();
|
||||
startBtn.disabled = false;
|
||||
startBtn.innerText = t.startBtn;
|
||||
envelope.classList.remove("envelope-opened");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user