add score screen

This commit is contained in:
Brian Beck 2026-03-14 17:12:37 -07:00
parent 9c64e59971
commit d9c18334b2
56 changed files with 1660 additions and 817 deletions

View file

@ -102,6 +102,10 @@ const ServerBrowser = createLazy(
"ServerBrowser",
() => import("@/src/components/ServerBrowser"),
);
const ScoreScreen = createLazy(
"ScoreScreen",
() => import("@/src/components/ScoreScreen"),
);
export function MapInspector() {
const [currentMission, setCurrentMission] = useMissionQueryState();
@ -111,6 +115,7 @@ export function MapInspector() {
const { missionName, missionType } = currentMission;
const [mapInfoOpen, setMapInfoOpen] = useState(false);
const [serverBrowserOpen, setServerBrowserOpen] = useState(false);
const [scoreScreenOpen, setScoreScreenOpen] = useState(false);
const [choosingMap, setChoosingMap] = useState(false);
const [missionLoadingProgress, setMissionLoadingProgress] = useState(0);
const [showLoadingIndicator, setShowLoadingIndicator] = useState(true);
@ -276,6 +281,9 @@ export function MapInspector() {
missionName={missionName}
missionType={missionType}
onOpenMapInfo={() => setMapInfoOpen(true)}
onOpenScoreScreen={
hasStreamData ? () => setScoreScreenOpen(true) : undefined
}
onOpenServerBrowser={
features.live ? () => setServerBrowserOpen(true) : undefined
}
@ -300,7 +308,11 @@ export function MapInspector() {
<div className={styles.Content}>
<div className={styles.ThreeView}>
<ThreeCanvas
dpr={mapInfoOpen || serverBrowserOpen ? 0.25 : undefined}
dpr={
mapInfoOpen || serverBrowserOpen || scoreScreenOpen
? 0.25
: undefined
}
onCreated={(state) => {
cameraRef.current = state.camera;
invalidateRef.current = state.invalidate;
@ -342,7 +354,7 @@ export function MapInspector() {
</TickProvider>
</ThreeCanvas>
</div>
{hasStreamData ? (
{hasStreamData && !scoreScreenOpen ? (
<Suspense>
<PlayerHUD />
</Suspense>
@ -386,6 +398,13 @@ export function MapInspector() {
</Suspense>
</ViewTransition>
) : null}
{scoreScreenOpen ? (
<ViewTransition>
<Suspense>
<ScoreScreen onClose={() => setScoreScreenOpen(false)} />
</Suspense>
</ViewTransition>
) : null}
</RecordingProvider>
</main>
);