diff --git a/src/SaveObject.tsx b/src/SaveObject.tsx index 50fa95485..1abfb5e61 100755 --- a/src/SaveObject.tsx +++ b/src/SaveObject.tsx @@ -11,7 +11,7 @@ import { loadSpecialServerIps, SpecialServerIps } from "./Server/SpecialServerIp import { SourceFileFlags } from "./SourceFile/SourceFileFlags"; import { loadStockMarket, StockMarket } from "./StockMarket/StockMarket"; -import { createStatusText } from "./ui/createStatusText"; +import { GameSavedEvents } from "./ui/React/Snackbar"; import { setTimeoutRef } from "./utils/SetTimeoutRef"; import * as ExportBonus from "./ExportBonus"; @@ -79,7 +79,7 @@ class BitburnerSaveObject { const saveString = this.getSaveString(); save(saveString) - .then(() => createStatusText("Game saved!")) + .then(() => GameSavedEvents.emit()) .catch((err) => console.error(err)); } diff --git a/src/index.html b/src/index.html index a66f84005..c39dc38ab 100644 --- a/src/index.html +++ b/src/index.html @@ -40,11 +40,6 @@
- - -
-

-
diff --git a/src/ui/GameRoot.tsx b/src/ui/GameRoot.tsx index a74225b49..b0410614f 100644 --- a/src/ui/GameRoot.tsx +++ b/src/ui/GameRoot.tsx @@ -66,6 +66,7 @@ import { CharacterOverview } from "./React/CharacterOverview"; import { BladeburnerCinematic } from "../Bladeburner/ui/BladeburnerCinematic"; import { workerScripts } from "../Netscript/WorkerScripts"; import { Unclickable } from "../Exploits/Unclickable"; +import { Snackbar } from "./React/Snackbar"; import { enterBitNode } from "../RedPill"; import { Context } from "./Context"; @@ -392,6 +393,7 @@ export function GameRoot({ player, engine, terminal }: IProps): React.ReactEleme )} + ); diff --git a/src/ui/React/Snackbar.tsx b/src/ui/React/Snackbar.tsx new file mode 100644 index 000000000..c73e58d23 --- /dev/null +++ b/src/ui/React/Snackbar.tsx @@ -0,0 +1,29 @@ +import React, { useState, useEffect } from "react"; + +import { Snackbar as S } from "@mui/material"; +import { EventEmitter } from "../../utils/EventEmitter"; +import Typography from "@mui/material/Typography"; +import Paper from "@mui/material/Paper"; + +export const GameSavedEvents = new EventEmitter<[]>(); + +export function Snackbar(): React.ReactElement { + const [open, setOpen] = useState(false); + + useEffect(() => GameSavedEvents.subscribe(() => setOpen(true))); + return ( + setOpen(false)} + > + + Game Saved! + + + ); +}