bitburner-src/src/DevMenu/ui/General.tsx

135 lines
4.2 KiB
TypeScript
Raw Normal View History

import React, { useEffect, useState } from "react";
2021-09-14 02:37:35 +02:00
2021-09-17 01:23:03 +02:00
import Accordion from "@mui/material/Accordion";
import AccordionSummary from "@mui/material/AccordionSummary";
import AccordionDetails from "@mui/material/AccordionDetails";
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
2021-09-14 02:37:35 +02:00
2021-10-01 22:22:33 +02:00
import Typography from "@mui/material/Typography";
2021-09-17 01:23:03 +02:00
import Button from "@mui/material/Button";
2021-09-14 02:37:35 +02:00
import { Money } from "../../ui/React/Money";
import { Player } from "@player";
2022-09-06 15:07:12 +02:00
import { Router } from "../../ui/GameRoot";
import { MenuItem, SelectChangeEvent, TextField, Select } from "@mui/material";
import { Bladeburner } from "../../Bladeburner/Bladeburner";
import { GangConstants } from "../../Gang/data/Constants";
import { FactionNames } from "../../Faction/data/FactionNames";
import { checkForMessagesToSend } from "../../Message/MessageHelpers";
2021-09-14 02:37:35 +02:00
2022-09-06 15:07:12 +02:00
export function General(): React.ReactElement {
const [error, setError] = useState(false);
const [corporationName, setCorporationName] = useState("");
const [gangFaction, setGangFaction] = useState("");
2021-09-14 02:37:35 +02:00
function addMoney(n: number) {
return function () {
2022-09-06 15:07:12 +02:00
Player.gainMoney(n, "other");
2021-09-14 02:37:35 +02:00
};
}
function upgradeRam(): void {
2022-09-06 15:07:12 +02:00
Player.getHomeComputer().maxRam *= 2;
2021-09-14 02:37:35 +02:00
}
function quickB1tFlum3(): void {
2022-09-06 15:07:12 +02:00
Router.toBitVerse(true, true);
2021-09-14 02:37:35 +02:00
}
function b1tflum3(): void {
2022-09-06 15:07:12 +02:00
Router.toBitVerse(true, false);
2021-09-14 02:37:35 +02:00
}
function quickHackW0r1dD43m0n(): void {
2022-09-06 15:07:12 +02:00
Router.toBitVerse(false, true);
2021-09-14 02:37:35 +02:00
}
function hackW0r1dD43m0n(): void {
2022-09-06 15:07:12 +02:00
Router.toBitVerse(false, false);
2021-09-14 02:37:35 +02:00
}
function createCorporation(): void {
2022-09-06 15:07:12 +02:00
Player.startCorporation(corporationName);
}
function joinBladeburner(): void {
2022-09-06 15:07:12 +02:00
Player.bladeburner = new Bladeburner();
}
function startGang(): void {
const isHacking = gangFaction === FactionNames.NiteSec || gangFaction === FactionNames.TheBlackHand;
2022-09-06 15:07:12 +02:00
Player.startGang(gangFaction, isHacking);
}
function setGangFactionDropdown(event: SelectChangeEvent<string>): void {
setGangFaction(event.target.value);
}
2022-04-14 08:35:30 +02:00
function checkMessages(): void {
checkForMessagesToSend();
}
useEffect(() => {
if (error) throw new ReferenceError("Manually thrown error");
}, [error]);
2021-09-14 02:37:35 +02:00
return (
2021-09-18 03:30:02 +02:00
<Accordion TransitionProps={{ unmountOnExit: true }}>
2021-09-14 02:37:35 +02:00
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
2021-10-01 22:22:33 +02:00
<Typography>General</Typography>
2021-09-14 02:37:35 +02:00
</AccordionSummary>
<AccordionDetails>
2021-10-01 19:08:37 +02:00
<Button onClick={addMoney(1e6)}>
<pre>
+ <Money money={1e6} />
</pre>
</Button>
<Button onClick={addMoney(1e9)}>
<pre>
+ <Money money={1e9} />
</pre>
</Button>
<Button onClick={addMoney(1e12)}>
<pre>
+ <Money money={1e12} />
</pre>
</Button>
<Button onClick={addMoney(1e15)}>
<pre>
+ <Money money={1000e12} />
</pre>
</Button>
<Button onClick={addMoney(Infinity)}>
<pre>
+ <Money money={Infinity} />
</pre>
</Button>
<Button onClick={upgradeRam}>+ RAM</Button>
<br />
<Typography>Corporation Name:</Typography>
<TextField value={corporationName} onChange={(x) => setCorporationName(x.target.value)} />
<Button onClick={createCorporation}>Create Corporation</Button>
<br />
<Typography>Gang Faction:</Typography>
<Select value={gangFaction} onChange={setGangFactionDropdown}>
{GangConstants.Names.map((factionName) => (
<MenuItem key={factionName} value={factionName}>
{factionName}
</MenuItem>
))}
</Select>
<Button onClick={startGang}>Start Gang</Button>
<br />
<Button onClick={joinBladeburner}>Join BladeBurner</Button>
<br />
2021-10-01 19:08:37 +02:00
<Button onClick={quickB1tFlum3}>Quick b1t_flum3.exe</Button>
<Button onClick={b1tflum3}>Run b1t_flum3.exe</Button>
<Button onClick={quickHackW0r1dD43m0n}>Quick w0rld_d34m0n</Button>
<Button onClick={hackW0r1dD43m0n}>Hack w0rld_d34m0n</Button>
<Button onClick={() => setError(true)}>Throw Error</Button>
<Button onClick={checkMessages}>Check Messages</Button>
2021-09-14 02:37:35 +02:00
</AccordionDetails>
</Accordion>
);
}