import React, { useState, useEffect } from "react"; import CircularProgress from "@mui/material/CircularProgress"; import Typography from "@mui/material/Typography"; import Grid from "@mui/material/Grid"; import Box from "@mui/material/Box"; import { Theme } from "@mui/material/styles"; import makeStyles from "@mui/styles/makeStyles"; import createStyles from "@mui/styles/createStyles"; import { Terminal } from "../Terminal"; import { load } from "../db"; import { Player } from "../Player"; import { Engine } from "../engine"; import { GameRoot } from "./GameRoot"; import { CONSTANTS } from "../Constants"; const useStyles = makeStyles((theme: Theme) => createStyles({ root: { backgroundColor: theme.colors.backgroundprimary, }, }), ); export function LoadingScreen(): React.ReactElement { const classes = useStyles(); const [show, setShow] = useState(false); const [loaded, setLoaded] = useState(false); useEffect(() => { const id = setTimeout(() => { if (!loaded) setShow(true); }, 2000); return () => clearTimeout(id); }); useEffect(() => { async function doLoad(): Promise { await load() .then((saveString) => { Engine.load(saveString); setLoaded(true); }) .catch((reason) => { console.error(reason); Engine.load(""); setLoaded(true); }); } doLoad(); }, []); return ( {loaded ? ( ) : ( Loading Bitburner v{CONSTANTS.Version} {show && ( If the game fails to load, consider killing all scripts )} )} ); }