export async function loadWohnhaus() { const ui = document.querySelector(".building-ui"); ui.innerHTML = `
Helm
Schulter
Amulett
Handschuhe
Waffe
Gürtel
Schild
Ring
Ring
Stiefel

Inventar

`; loadInventory(); loadEquipment(); } async function loadEquipment() { const res = await fetch("/api/equipment"); const equipment = await res.json(); equipment.forEach((item) => { const slot = document.querySelector('.slot[data-slot="' + item.slot + '"]'); if (!slot) return; const label = slot.querySelector(".slot-label"); slot.innerHTML = ``; if (label) { slot.appendChild(label); } slot.classList.add("has-item"); }); } async function loadInventory() { const res = await fetch("/api/inventory"); const items = await res.json(); const grid = document.getElementById("inventory-grid"); let html = ""; items.forEach((item) => { const icon = item.icon || "/images/items/default.png"; html += `
`; }); grid.innerHTML = html; initDrag(); initDrop(); } function initEquip() { let draggedItem = null; document.querySelectorAll(".inventory-slot").forEach((item) => { item.addEventListener("dragstart", () => { draggedItem = item; }); }); document.querySelectorAll(".slot").forEach((slot) => { slot.addEventListener("dragover", (e) => { e.preventDefault(); }); slot.addEventListener("drop", (e) => { e.preventDefault(); const itemSlot = draggedItem.dataset.slot; const targetSlot = slot.dataset.slot; if (itemSlot !== targetSlot) return; slot.innerHTML = draggedItem.innerHTML; }); }); } function initDrag() { document.querySelectorAll(".inventory-slot").forEach((item) => { item.addEventListener("dragstart", (e) => { e.dataTransfer.setData("itemId", item.dataset.id); e.dataTransfer.setData("itemLevel", item.dataset.level); e.dataTransfer.setData("slot", item.dataset.slot); }); }); } async function saveEquipment(slot, itemId, itemLevelId) { await fetch("/api/equip", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ slot: slot, itemId: itemId, itemLevelId: itemLevelId, }), }); } function initDrop() { document.querySelectorAll(".slot").forEach((slot) => { slot.addEventListener("dragover", (e) => { e.preventDefault(); }); slot.addEventListener("drop", (e) => { e.preventDefault(); const itemId = e.dataTransfer.getData("itemId"); const itemLevel = e.dataTransfer.getData("itemLevel"); const itemSlot = e.dataTransfer.getData("slot"); const targetSlot = slot.dataset.slot; if (!itemSlot || itemSlot !== targetSlot) return; const item = document.querySelector( '.inventory-slot[data-id="' + itemId + '"]', ); item.remove(); const icon = item.querySelector("img").src; /* Wenn Slot schon Item hat */ const existingItem = slot.querySelector("img"); if (existingItem) { const inventory = document.getElementById("inventory-grid"); const newSlot = document.createElement("div"); newSlot.classList.add("inventory-slot"); newSlot.innerHTML = ``; inventory.appendChild(newSlot); } /* Neues Item setzen */ const label = slot.querySelector(".slot-label"); slot.innerHTML = ``; if (label) slot.appendChild(label); slot.classList.add("has-item"); saveEquipment(targetSlot, itemId, itemLevel); }); }); }