21 lines
904 B
TypeScript
21 lines
904 B
TypeScript
import { requireAuth } from '@/lib/auth';
|
|
import { tickNow } from '@/lib/sim/engine';
|
|
import { getStateSnapshot } from '@/lib/game/state';
|
|
|
|
// v1.1.0 (ISS-107): guarded — 401 without a live X-Flight-Session. The snapshot shape is
|
|
// unchanged; per-player snapshots are a later step (#112).
|
|
// v1.3.0 (ISS-110): `account` carries the SESSION player's economy row.
|
|
export async function GET(req: Request) {
|
|
const auth = await requireAuth(req);
|
|
if (!auth.ok) return auth.response;
|
|
try {
|
|
// Tick-on-read (v0.7.0): advance the sim clock before snapshotting so every
|
|
// read reflects current game time (expiry/finalize/spawn run inside the tick).
|
|
await tickNow();
|
|
return Response.json(await getStateSnapshot(auth.player.id));
|
|
} catch (err) {
|
|
console.error('failed to load game state', err);
|
|
return Response.json({ error: 'failed to load game state' }, { status: 500 });
|
|
}
|
|
}
|