67 lines
2.0 KiB
JavaScript
67 lines
2.0 KiB
JavaScript
// shared/js/door-open.js
|
|
// Öffnet Türen, Flügel und Openfields
|
|
// und sagt den anderen Skripten Bescheid (Popup, Save)
|
|
|
|
document.querySelectorAll(".door, .fluegel, .openfield").forEach(elem => {
|
|
elem.addEventListener("click", () => {
|
|
const day = elem.dataset.day;
|
|
if (!day) return;
|
|
|
|
// 🔒 Tages-Sperre prüfen
|
|
if (typeof isDoorUnlocked === "function" && !isDoorUnlocked(day)) {
|
|
console.log(`Türchen ${day} ist noch gesperrt.`);
|
|
return;
|
|
}
|
|
|
|
const openfield = document.querySelector(`.openfield[data-day="${day}"]`);
|
|
const door = document.querySelector(`.door[data-day="${day}"]`);
|
|
const flLeft = document.querySelector(`.fluegel.left[data-day="${day}"]`);
|
|
const flRight = document.querySelector(`.fluegel.right[data-day="${day}"]`);
|
|
|
|
// 1) normale Tür
|
|
if (elem.classList.contains("door")) {
|
|
if (!door.classList.contains("open")) {
|
|
door.classList.add("open");
|
|
if (openfield) openfield.classList.add("open");
|
|
}
|
|
notifyDayOpened(day);
|
|
return;
|
|
}
|
|
|
|
// 2) Flügeltür
|
|
if (elem.classList.contains("fluegel")) {
|
|
const beideOffen =
|
|
flLeft?.classList.contains("rota") &&
|
|
flRight?.classList.contains("rota");
|
|
|
|
if (!beideOffen) {
|
|
if (flLeft) flLeft.classList.add("rota");
|
|
if (flRight) flRight.classList.add("rota");
|
|
if (openfield) openfield.classList.add("open");
|
|
}
|
|
notifyDayOpened(day);
|
|
return;
|
|
}
|
|
|
|
// 3) openfield (erneut öffnen / nur Popup)
|
|
if (elem.classList.contains("openfield")) {
|
|
notifyDayOpened(day);
|
|
return;
|
|
}
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Sagt allen anderen Skripten: „Tag X wurde geöffnet“
|
|
* popup.js kann window.openPopup(day) bereitstellen
|
|
* save-progress.js hört auf das CustomEvent
|
|
*/
|
|
function notifyDayOpened(day) {
|
|
// fürs Speichern
|
|
document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } }));
|
|
|
|
// fürs Popup (deine vorhandene popup.js)
|
|
if (typeof window.openPopup === "function") {
|
|
window.openPopup(day);
|
|
}
|
|
} |