Files
stellar/client/src/components/Hud.tsx

61 lines
2.3 KiB
TypeScript
Raw Normal View History

2026-03-22 23:57:14 -05:00
import { type GameState } from "../game/types";
2026-03-22 23:33:24 -05:00
const objectives = [
2026-03-22 23:57:14 -05:00
"Reach mass 40 to stabilize your pull",
"Keep sweeping the field to chain dust pickups",
"Persist profile data in M3"
2026-03-22 23:33:24 -05:00
];
2026-03-22 23:57:14 -05:00
interface HudProps {
gameState: GameState;
}
export function Hud({ gameState }: HudProps) {
2026-03-22 23:33:24 -05:00
return (
<aside className="rounded-3xl border border-white/10 bg-white/5 p-5 shadow-2xl shadow-cyan-950/30 backdrop-blur">
<div className="mb-6">
<p className="text-xs uppercase tracking-[0.3em] text-glow/70">Mission Board</p>
2026-03-22 23:57:14 -05:00
<h2 className="mt-2 text-2xl font-semibold text-white">Sector Absorption</h2>
2026-03-22 23:33:24 -05:00
</div>
<dl className="grid grid-cols-2 gap-3 text-sm">
<div className="rounded-2xl bg-black/20 p-3">
<dt className="text-slate-400">Mass</dt>
2026-03-22 23:57:14 -05:00
<dd className="mt-1 text-xl font-semibold">{gameState.mass.toFixed(0)}</dd>
2026-03-22 23:33:24 -05:00
</div>
<div className="rounded-2xl bg-black/20 p-3">
<dt className="text-slate-400">Tier</dt>
2026-03-22 23:57:14 -05:00
<dd className="mt-1 text-xl font-semibold">{gameState.tier}</dd>
2026-03-22 23:33:24 -05:00
</div>
<div className="rounded-2xl bg-black/20 p-3">
<dt className="text-slate-400">Pull Radius</dt>
2026-03-22 23:57:14 -05:00
<dd className="mt-1 text-xl font-semibold">{gameState.pullRadius.toFixed(0)}m</dd>
</div>
<div className="rounded-2xl bg-black/20 p-3">
<dt className="text-slate-400">FPS</dt>
<dd className="mt-1 text-xl font-semibold">{gameState.fps.toFixed(0)}</dd>
</div>
<div className="rounded-2xl bg-black/20 p-3">
<dt className="text-slate-400">Consumed</dt>
<dd className="mt-1 text-xl font-semibold">{gameState.consumedDust}</dd>
2026-03-22 23:33:24 -05:00
</div>
<div className="rounded-2xl bg-black/20 p-3">
2026-03-22 23:57:14 -05:00
<dt className="text-slate-400">Dust Left</dt>
<dd className="mt-1 text-xl font-semibold">{gameState.dustRemaining}</dd>
2026-03-22 23:33:24 -05:00
</div>
</dl>
<div className="mt-6">
<p className="text-xs uppercase tracking-[0.3em] text-amber-300/70">Next Steps</p>
<ul className="mt-3 space-y-3 text-sm text-slate-200">
{objectives.map((objective) => (
<li key={objective} className="rounded-2xl border border-white/10 bg-black/20 px-4 py-3">
{objective}
</li>
))}
</ul>
</div>
</aside>
);
}