SM4
This commit is contained in:
parent
2b93c82026
commit
1eba12ab85
BIN
public/images/items/beutel.png
Normal file
BIN
public/images/items/beutel.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.4 MiB |
@ -39,7 +39,6 @@ Geheimhandel
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
loadPages();
|
loadPages();
|
||||||
|
|
||||||
initMarketTabs();
|
initMarketTabs();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,40 +50,75 @@ async function loadPages() {
|
|||||||
|
|
||||||
let html = "";
|
let html = "";
|
||||||
|
|
||||||
for (let i = 1; i <= 8; i++) {
|
for (let i = 1; i <= data.maxPages; i++) {
|
||||||
if (data.ownedPages.includes(i)) {
|
|
||||||
html += `
|
|
||||||
<div class="market-page owned">
|
|
||||||
Seite ${i} ✔
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
} else {
|
|
||||||
const price = data.prices.find((p) => p.page === i);
|
const price = data.prices.find((p) => p.page === i);
|
||||||
|
|
||||||
if (price) {
|
if (data.ownedPages.includes(i)) {
|
||||||
html += `
|
html += `
|
||||||
<div class="market-page buy" data-page="${i}">
|
<div class="market-slot owned">
|
||||||
Seite ${i} Kaufen (${price.price} Gold)
|
|
||||||
|
<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>
|
</div>
|
||||||
`;
|
`;
|
||||||
} else {
|
} else {
|
||||||
html += `
|
html += `
|
||||||
<div class="market-page locked">
|
<div class="market-slot locked">
|
||||||
Seite ${i} 🔒
|
|
||||||
|
<img src="/images/items/beutel.png" class="bag-icon">
|
||||||
|
|
||||||
|
<div class="bag-status locked">
|
||||||
|
🔒
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
container.innerHTML = html;
|
container.innerHTML = html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Kaufen */
|
||||||
|
|
||||||
document.addEventListener("click", async (e) => {
|
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", {
|
const res = await fetch("/api/blackmarket/buy-page", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ page }),
|
||||||
});
|
});
|
||||||
|
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
@ -94,11 +128,11 @@ document.addEventListener("click", async (e) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
alert("Seite " + data.page + " freigeschaltet!");
|
|
||||||
|
|
||||||
loadPages();
|
loadPages();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* Tabs */
|
||||||
|
|
||||||
function initMarketTabs() {
|
function initMarketTabs() {
|
||||||
document.querySelectorAll(".market-tab").forEach((tab) => {
|
document.querySelectorAll(".market-tab").forEach((tab) => {
|
||||||
tab.addEventListener("click", () => {
|
tab.addEventListener("click", () => {
|
||||||
|
|||||||
@ -23,9 +23,18 @@ router.get("/pages", auth, async (req, res) => {
|
|||||||
ORDER BY page
|
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({
|
res.json({
|
||||||
ownedPages: owned.map((p) => p.page),
|
ownedPages: owned.map((p) => p.page),
|
||||||
prices: prices,
|
prices: prices,
|
||||||
|
maxPages: maxPages,
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user