Compare commits
No commits in common. "07c5c5efa710ceeb87cd4102d81d62f554508237" and "a8bb5f90e5a60f53f555584507c24e9c5e90bee1" have entirely different histories.
07c5c5efa7
...
a8bb5f90e5
@ -505,13 +505,6 @@ body {
|
|||||||
transform: scale(1.1);
|
transform: scale(1.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#inv-left:disabled,
|
|
||||||
#inv-right:disabled {
|
|
||||||
opacity: 0.25;
|
|
||||||
cursor: not-allowed;
|
|
||||||
transform: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#inventory-nav {
|
#inventory-nav {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
let inventoryPage = 0;
|
let inventoryPage = 0;
|
||||||
const slotsPerPage = 32;
|
const slotsPerPage = 32;
|
||||||
let inventoryItems = [];
|
let inventoryItems = [];
|
||||||
let totalInventoryPages = 1;
|
|
||||||
|
|
||||||
export async function loadWohnhaus() {
|
export async function loadWohnhaus() {
|
||||||
const ui = document.querySelector(".building-ui");
|
const ui = document.querySelector(".building-ui");
|
||||||
@ -63,16 +62,9 @@ export async function loadWohnhaus() {
|
|||||||
<button id="inv-right">►</button>
|
<button id="inv-right">►</button>
|
||||||
</div>`;
|
</div>`;
|
||||||
|
|
||||||
// Variablen zurücksetzen beim Öffnen
|
|
||||||
inventoryPage = 0;
|
|
||||||
totalInventoryPages = 1;
|
|
||||||
inventoryItems = [];
|
|
||||||
|
|
||||||
// Buttons zuerst initialisieren
|
|
||||||
initInventoryButtons();
|
|
||||||
|
|
||||||
await loadInventory();
|
await loadInventory();
|
||||||
await loadEquipment();
|
await loadEquipment();
|
||||||
|
initInventoryButtons();
|
||||||
initDrag();
|
initDrag();
|
||||||
initSlotDrag();
|
initSlotDrag();
|
||||||
initDrop();
|
initDrop();
|
||||||
@ -84,9 +76,7 @@ export async function loadWohnhaus() {
|
|||||||
================================ */
|
================================ */
|
||||||
|
|
||||||
function updateAvatarOverlay(slotName, iconSrc) {
|
function updateAvatarOverlay(slotName, iconSrc) {
|
||||||
const overlay = document.querySelector(
|
const overlay = document.querySelector(`.avatar-overlay[data-slot="${slotName}"]`);
|
||||||
`.avatar-overlay[data-slot="${slotName}"]`,
|
|
||||||
);
|
|
||||||
if (!overlay) return;
|
if (!overlay) return;
|
||||||
|
|
||||||
const img = overlay.querySelector("img");
|
const img = overlay.querySelector("img");
|
||||||
@ -96,9 +86,7 @@ function updateAvatarOverlay(slotName, iconSrc) {
|
|||||||
overlay.classList.add("visible");
|
overlay.classList.add("visible");
|
||||||
} else {
|
} else {
|
||||||
overlay.classList.remove("visible");
|
overlay.classList.remove("visible");
|
||||||
setTimeout(() => {
|
setTimeout(() => { img.src = ""; }, 250);
|
||||||
img.src = "";
|
|
||||||
}, 250);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -108,11 +96,7 @@ function updateAvatarOverlay(slotName, iconSrc) {
|
|||||||
|
|
||||||
async function loadInventory() {
|
async function loadInventory() {
|
||||||
const res = await fetch("/api/inventory");
|
const res = await fetch("/api/inventory");
|
||||||
const data = await res.json();
|
inventoryItems = await res.json();
|
||||||
|
|
||||||
inventoryItems = data.items;
|
|
||||||
totalInventoryPages = data.totalPages;
|
|
||||||
|
|
||||||
renderInventory();
|
renderInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,15 +131,9 @@ function renderInventory() {
|
|||||||
|
|
||||||
grid.innerHTML = html;
|
grid.innerHTML = html;
|
||||||
|
|
||||||
|
const totalPages = Math.max(1, Math.ceil(inventoryItems.length / slotsPerPage));
|
||||||
document.getElementById("inventory-page").innerText =
|
document.getElementById("inventory-page").innerText =
|
||||||
"Seite " + (inventoryPage + 1) + " / " + totalInventoryPages;
|
"Seite " + (inventoryPage + 1) + " / " + totalPages;
|
||||||
|
|
||||||
// Buttons aktivieren/deaktivieren
|
|
||||||
const btnLeft = document.getElementById("inv-left");
|
|
||||||
const btnRight = document.getElementById("inv-right");
|
|
||||||
|
|
||||||
if (btnLeft) btnLeft.disabled = inventoryPage === 0;
|
|
||||||
if (btnRight) btnRight.disabled = inventoryPage >= totalInventoryPages - 1;
|
|
||||||
|
|
||||||
initDrag();
|
initDrag();
|
||||||
}
|
}
|
||||||
@ -173,7 +151,8 @@ function initInventoryButtons() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
document.getElementById("inv-right").onclick = () => {
|
document.getElementById("inv-right").onclick = () => {
|
||||||
if (inventoryPage < totalInventoryPages - 1) {
|
const totalPages = Math.max(1, Math.ceil(inventoryItems.length / slotsPerPage));
|
||||||
|
if (inventoryPage < totalPages - 1) {
|
||||||
inventoryPage++;
|
inventoryPage++;
|
||||||
renderInventory();
|
renderInventory();
|
||||||
}
|
}
|
||||||
@ -249,10 +228,10 @@ function initDrop() {
|
|||||||
slot.addEventListener("drop", (e) => {
|
slot.addEventListener("drop", (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
const itemId = e.dataTransfer.getData("itemId");
|
const itemId = e.dataTransfer.getData("itemId");
|
||||||
const itemLevel = e.dataTransfer.getData("itemLevel");
|
const itemLevel = e.dataTransfer.getData("itemLevel");
|
||||||
const itemSlot = e.dataTransfer.getData("slot");
|
const itemSlot = e.dataTransfer.getData("slot");
|
||||||
const source = e.dataTransfer.getData("source");
|
const source = e.dataTransfer.getData("source");
|
||||||
const targetSlot = slot.dataset.slot;
|
const targetSlot = slot.dataset.slot;
|
||||||
|
|
||||||
if (!itemSlot || itemSlot !== targetSlot) return;
|
if (!itemSlot || itemSlot !== targetSlot) return;
|
||||||
@ -260,17 +239,13 @@ function initDrop() {
|
|||||||
let icon;
|
let icon;
|
||||||
|
|
||||||
if (source === "inventory") {
|
if (source === "inventory") {
|
||||||
const inventoryItem = document.querySelector(
|
const inventoryItem = document.querySelector('.inventory-slot[data-id="' + itemId + '"]');
|
||||||
'.inventory-slot[data-id="' + itemId + '"]',
|
|
||||||
);
|
|
||||||
if (!inventoryItem) return;
|
if (!inventoryItem) return;
|
||||||
icon = inventoryItem.querySelector("img").src;
|
icon = inventoryItem.querySelector("img").src;
|
||||||
inventoryItem.classList.add("empty");
|
inventoryItem.classList.add("empty");
|
||||||
inventoryItem.innerHTML = "";
|
inventoryItem.innerHTML = "";
|
||||||
} else {
|
} else {
|
||||||
const slotItem = document.querySelector(
|
const slotItem = document.querySelector('.slot[data-slot="' + itemSlot + '"] img');
|
||||||
'.slot[data-slot="' + itemSlot + '"] img',
|
|
||||||
);
|
|
||||||
if (!slotItem) return;
|
if (!slotItem) return;
|
||||||
icon = slotItem.src;
|
icon = slotItem.src;
|
||||||
}
|
}
|
||||||
@ -302,12 +277,12 @@ function initInventoryDrop() {
|
|||||||
grid.addEventListener("drop", (e) => {
|
grid.addEventListener("drop", (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
const source = e.dataTransfer.getData("source");
|
const source = e.dataTransfer.getData("source");
|
||||||
if (source !== "slot") return;
|
if (source !== "slot") return;
|
||||||
|
|
||||||
const itemId = e.dataTransfer.getData("itemId");
|
const itemId = e.dataTransfer.getData("itemId");
|
||||||
const itemLevel = e.dataTransfer.getData("itemLevel");
|
const itemLevel = e.dataTransfer.getData("itemLevel");
|
||||||
const slotName = e.dataTransfer.getData("slot");
|
const slotName = e.dataTransfer.getData("slot");
|
||||||
|
|
||||||
const slot = document.querySelector('.slot[data-slot="' + slotName + '"]');
|
const slot = document.querySelector('.slot[data-slot="' + slotName + '"]');
|
||||||
if (!slot) return;
|
if (!slot) return;
|
||||||
@ -348,4 +323,4 @@ async function saveEquipment(slot, itemId, itemLevelId) {
|
|||||||
headers: { "Content-Type": "application/json" },
|
headers: { "Content-Type": "application/json" },
|
||||||
body: JSON.stringify({ slot, itemId, itemLevelId }),
|
body: JSON.stringify({ slot, itemId, itemLevelId }),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -24,16 +24,7 @@ WHERE user_inventory.user_id=?
|
|||||||
[userId],
|
[userId],
|
||||||
);
|
);
|
||||||
|
|
||||||
// Gekaufte Seiten laden
|
res.json(items);
|
||||||
const [ownedPages] = await db.query(
|
|
||||||
`SELECT COUNT(*) as total FROM user_inventory_pages WHERE user_id = ?`,
|
|
||||||
[userId],
|
|
||||||
);
|
|
||||||
|
|
||||||
// Seite 1 ist immer kostenlos
|
|
||||||
const totalPages = Math.max(1, ownedPages[0].total);
|
|
||||||
|
|
||||||
res.json({ items, totalPages });
|
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Inventory Fehler:", err);
|
console.error("Inventory Fehler:", err);
|
||||||
res.status(500).json({ error: "DB Fehler" });
|
res.status(500).json({ error: "DB Fehler" });
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user