52 lines
1.9 KiB
JavaScript
52 lines
1.9 KiB
JavaScript
// shared/js/door-open.js
|
||
/**
|
||
* Bratonien Adventskalender – Türöffnung (2025)
|
||
* ---------------------------------------------
|
||
* Öffnet normale Türen (.door) und Doppelflügeltüren (.fluegel)
|
||
* und triggert das Event für save-progress.js
|
||
*/
|
||
|
||
document.querySelectorAll(".door, .fluegel, .openfield").forEach(elem => {
|
||
elem.addEventListener("click", () => {
|
||
const day = elem.dataset.day;
|
||
if (!day) return;
|
||
|
||
const openfield = document.querySelector(`.openfield[data-day="${day}"]`);
|
||
const door = document.querySelector(`.door[data-day="${day}"]`);
|
||
const left = document.querySelector(`.fluegel.left[data-day="${day}"]`);
|
||
const right = document.querySelector(`.fluegel.right[data-day="${day}"]`);
|
||
|
||
// === EINZELTÜR-LOGIK ===
|
||
if (elem.classList.contains("door") || (openfield && door && elem === openfield)) {
|
||
if (door.classList.contains("open")) {
|
||
console.log(`Tür ${day} erneut geöffnet`);
|
||
document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } }));
|
||
return;
|
||
}
|
||
|
||
door.classList.add("open");
|
||
if (openfield) openfield.classList.add("open");
|
||
|
||
document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } }));
|
||
return;
|
||
}
|
||
|
||
// === DOPPELFLÜGEL-LOGIK ===
|
||
if (elem.classList.contains("fluegel") || (openfield && left && right && elem === openfield)) {
|
||
const bothOpen =
|
||
left?.classList.contains("rota") && right?.classList.contains("rota");
|
||
|
||
if (bothOpen) {
|
||
console.log(`Flügeltür ${day} erneut geöffnet`);
|
||
document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } }));
|
||
return;
|
||
}
|
||
|
||
if (left) left.classList.add("rota");
|
||
if (right) right.classList.add("rota");
|
||
if (openfield) openfield.classList.add("open");
|
||
|
||
document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } }));
|
||
}
|
||
});
|
||
}); |