Files
Bratonien-Adventskalender/adventskalender/shared/js/door-open.js

52 lines
1.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 } }));
}
});
});