This commit is contained in:
Cay 2026-03-14 14:35:13 +00:00
parent 2b93c82026
commit 1eba12ab85
3 changed files with 60 additions and 17 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View File

@ -39,7 +39,6 @@ Geheimhandel
`;
loadPages();
initMarketTabs();
}
@ -51,40 +50,75 @@ async function loadPages() {
let html = "";
for (let i = 1; i <= 8; i++) {
for (let i = 1; i <= data.maxPages; i++) {
const price = data.prices.find((p) => p.page === i);
if (data.ownedPages.includes(i)) {
html += `
<div class="market-page owned">
Seite ${i}
<div class="market-slot owned">
<img src="/images/items/beutel.png" class="bag-icon">
<div class="bag-status owned">
</div>
</div>
`;
} else if (price) {
html += `
<div class="market-slot buy" data-page="${i}">
<img src="/images/items/beutel.png" class="bag-icon">
<div class="bag-price">
${price.price} <span class="gold-icon">🪙</span>
</div>
<button class="buy-button">
Kaufen
</button>
</div>
`;
} else {
const price = data.prices.find((p) => p.page === i);
html += `
<div class="market-slot locked">
<img src="/images/items/beutel.png" class="bag-icon">
<div class="bag-status locked">
🔒
</div>
if (price) {
html += `
<div class="market-page buy" data-page="${i}">
Seite ${i} Kaufen (${price.price} Gold)
</div>
`;
} else {
html += `
<div class="market-page locked">
Seite ${i} 🔒
</div>
`;
}
}
}
container.innerHTML = html;
}
/* Kaufen */
document.addEventListener("click", async (e) => {
if (!e.target.classList.contains("buy")) return;
const button = e.target.closest(".buy-button");
if (!button) return;
const slot = button.closest(".market-slot");
const page = slot.dataset.page;
const res = await fetch("/api/blackmarket/buy-page", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ page }),
});
const data = await res.json();
@ -94,11 +128,11 @@ document.addEventListener("click", async (e) => {
return;
}
alert("Seite " + data.page + " freigeschaltet!");
loadPages();
});
/* Tabs */
function initMarketTabs() {
document.querySelectorAll(".market-tab").forEach((tab) => {
tab.addEventListener("click", () => {

View File

@ -23,9 +23,18 @@ router.get("/pages", auth, async (req, res) => {
ORDER BY page
`);
const [[config]] = await db.query(`
SELECT config_value
FROM game_config
WHERE config_key = 'inventory_max_pages'
`);
const maxPages = config ? config.config_value : 8;
res.json({
ownedPages: owned.map((p) => p.page),
prices: prices,
maxPages: maxPages,
});
} catch (err) {
console.error(err);