Private
Public Access
1
0
Files
star-wars-wild-space/server/index.js

49 lines
1.6 KiB
JavaScript

import "dotenv/config";
import { loadConfigFile, getConfig } from "./configLoader.js";
import { initGameSchema, ensureSeedEpoch } from "./db/gameDb.js";
import { initUsersSchema } from "./db/usersDb.js";
import app from "./app.js";
import { startEconTick } from "./econTick.js";
const PORT = Number(process.env.PORT ?? 8080);
// ── Config-file poll ──────────────────────────────────────────────────────────
// Periodically re-reads game.settings.json and checks for a seed-epoch change.
function scheduleConfigPoll() {
loadConfigFile();
const ms = Math.max(5_000, getConfig().configReloadIntervalSeconds * 1_000);
setTimeout(async () => {
try {
loadConfigFile();
await ensureSeedEpoch();
} catch (e) {
console.error("[config poll]", e.message);
}
scheduleConfigPoll();
}, ms);
}
// ── Boot ──────────────────────────────────────────────────────────────────────
async function main() {
loadConfigFile();
await initGameSchema();
await initUsersSchema();
await ensureSeedEpoch();
app.listen(PORT, () => {
const cfg = getConfig();
console.log(
`[server] Listening on :${PORT} cooldown=${cfg.clickCooldownSeconds}s wipe=${cfg.databaseWipeoutIntervalSeconds}s`
);
});
scheduleConfigPoll();
startEconTick();
}
main().catch((e) => {
console.error(e);
process.exit(1);
});