adventskalender/shared/js/door-open.js aktualisiert
This commit is contained in:
@@ -1,10 +1,6 @@
|
||||
// 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
|
||||
*/
|
||||
// Ö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", () => {
|
||||
@@ -12,41 +8,54 @@ document.querySelectorAll(".door, .fluegel, .openfield").forEach(elem => {
|
||||
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}"]`);
|
||||
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}"]`);
|
||||
|
||||
// === 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;
|
||||
// 1) normale Tür
|
||||
if (elem.classList.contains("door")) {
|
||||
if (!door.classList.contains("open")) {
|
||||
door.classList.add("open");
|
||||
if (openfield) openfield.classList.add("open");
|
||||
}
|
||||
|
||||
door.classList.add("open");
|
||||
if (openfield) openfield.classList.add("open");
|
||||
|
||||
document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } }));
|
||||
notifyDayOpened(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");
|
||||
// 2) Flügeltür
|
||||
if (elem.classList.contains("fluegel")) {
|
||||
const beideOffen =
|
||||
flLeft?.classList.contains("rota") &&
|
||||
flRight?.classList.contains("rota");
|
||||
|
||||
if (bothOpen) {
|
||||
console.log(`Flügeltür ${day} erneut geöffnet`);
|
||||
document.dispatchEvent(new CustomEvent("doorOpened", { detail: { day } }));
|
||||
return;
|
||||
if (!beideOffen) {
|
||||
if (flLeft) flLeft.classList.add("rota");
|
||||
if (flRight) flRight.classList.add("rota");
|
||||
if (openfield) openfield.classList.add("open");
|
||||
}
|
||||
notifyDayOpened(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 } }));
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user