Private
Public Access
1
0

feat: Adding economic system to do scoring

This commit is contained in:
gauvainboiche
2026-03-30 11:28:47 +02:00
parent b19fb262a4
commit c0f66d8cc0
16 changed files with 1303 additions and 145 deletions

View File

@@ -9,6 +9,8 @@ import {
getTeamCooldown,
upsertTeamCooldown,
getScores,
getEconScores,
addEconScore,
} from "../db/gameDb.js";
import { computeCell, rowToCellPayload } from "../helpers/cell.js";
@@ -43,6 +45,7 @@ router.get("/config", async (req, res) => {
seedPeriodEndsAtUtc: ws.seedPeriodEndsAtUtc,
seedPeriodStartsAtUtc: ws.seedPeriodStartsAtUtc,
teamCooldownRemaining,
resourceWorth: cfg.resourceWorth ?? { common: {}, rare: {} },
});
} catch (e) {
console.error(e);
@@ -134,6 +137,49 @@ router.post("/cell/reveal", async (req, res) => {
}
});
// POST /api/admin/verify
router.post("/admin/verify", (req, res) => {
const password = String(req.body?.password ?? "");
const adminPwd = process.env.ADMIN_PASSWORD;
if (!adminPwd) {
return res.status(503).json({ ok: false, error: "not_configured" });
}
if (password && password === adminPwd) {
return res.json({ ok: true });
}
return res.status(401).json({ ok: false, error: "invalid_password" });
});
// GET /api/econ-scores
router.get("/econ-scores", async (_req, res) => {
try {
const worldSeed = await ensureSeedEpoch();
const scores = await getEconScores(worldSeed);
res.json(scores);
} catch (e) {
console.error(e);
res.status(500).json({ error: "database_error" });
}
});
// POST /api/econ-scores/tick body: { seed, blue, red }
router.post("/econ-scores/tick", async (req, res) => {
const seed = String(req.body?.seed ?? "");
const blue = Number(req.body?.blue ?? 0);
const red = Number(req.body?.red ?? 0);
try {
const worldSeed = await ensureSeedEpoch();
if (seed !== worldSeed) return res.status(410).json({ error: "seed_expired", worldSeed });
await addEconScore(worldSeed, "blue", blue);
await addEconScore(worldSeed, "red", red);
const scores = await getEconScores(worldSeed);
res.json(scores);
} catch (e) {
console.error(e);
res.status(500).json({ error: "database_error" });
}
});
// GET /api/scores
router.get("/scores", async (_req, res) => {
try {