mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-19 07:48:37 +02:00
commit1
This commit is contained in:
@@ -21,7 +21,7 @@ import {
|
||||
purchaseHacknet,
|
||||
} from "../HacknetHelpers";
|
||||
|
||||
import { IPlayer } from "../../PersonObjects/IPlayer";
|
||||
import { Player } from "../../Player";
|
||||
import { GetServer } from "../../Server/AllServers";
|
||||
|
||||
import Typography from "@mui/material/Typography";
|
||||
@@ -29,11 +29,7 @@ import Grid from "@mui/material/Grid";
|
||||
import Button from "@mui/material/Button";
|
||||
import { Box } from "@mui/material";
|
||||
|
||||
interface IProps {
|
||||
player: IPlayer;
|
||||
}
|
||||
|
||||
export function HacknetRoot(props: IProps): React.ReactElement {
|
||||
export function HacknetRoot(): React.ReactElement {
|
||||
const [open, setOpen] = useState(false);
|
||||
const setRerender = useState(false)[1];
|
||||
function rerender(): void {
|
||||
@@ -47,9 +43,9 @@ export function HacknetRoot(props: IProps): React.ReactElement {
|
||||
}, []);
|
||||
|
||||
let totalProduction = 0;
|
||||
for (let i = 0; i < props.player.hacknetNodes.length; ++i) {
|
||||
const node = props.player.hacknetNodes[i];
|
||||
if (hasHacknetServers(props.player)) {
|
||||
for (let i = 0; i < Player.hacknetNodes.length; ++i) {
|
||||
const node = Player.hacknetNodes[i];
|
||||
if (hasHacknetServers()) {
|
||||
if (node instanceof HacknetNode) throw new Error("node was hacknet node"); // should never happen
|
||||
const hserver = GetServer(node);
|
||||
if (!(hserver instanceof HacknetServer)) throw new Error("node was not hacknet server"); // should never happen
|
||||
@@ -65,16 +61,16 @@ export function HacknetRoot(props: IProps): React.ReactElement {
|
||||
}
|
||||
|
||||
function handlePurchaseButtonClick(): void {
|
||||
purchaseHacknet(props.player);
|
||||
purchaseHacknet();
|
||||
rerender();
|
||||
}
|
||||
|
||||
// Cost to purchase a new Hacknet Node
|
||||
let purchaseCost;
|
||||
if (hasHacknetServers(props.player)) {
|
||||
purchaseCost = getCostOfNextHacknetServer(props.player);
|
||||
if (hasHacknetServers()) {
|
||||
purchaseCost = getCostOfNextHacknetServer();
|
||||
} else {
|
||||
purchaseCost = getCostOfNextHacknetNode(props.player);
|
||||
purchaseCost = getCostOfNextHacknetNode();
|
||||
}
|
||||
|
||||
// onClick event handlers for purchase multiplier buttons
|
||||
@@ -86,8 +82,8 @@ export function HacknetRoot(props: IProps): React.ReactElement {
|
||||
];
|
||||
|
||||
// HacknetNode components
|
||||
const nodes = props.player.hacknetNodes.map((node: string | HacknetNode) => {
|
||||
if (hasHacknetServers(props.player)) {
|
||||
const nodes = Player.hacknetNodes.map((node: string | HacknetNode) => {
|
||||
if (hasHacknetServers()) {
|
||||
if (node instanceof HacknetNode) throw new Error("node was hacknet node"); // should never happen
|
||||
const hserver = GetServer(node);
|
||||
if (hserver == null) {
|
||||
@@ -96,7 +92,6 @@ export function HacknetRoot(props: IProps): React.ReactElement {
|
||||
if (!(hserver instanceof HacknetServer)) throw new Error("node was not hacknet server"); // should never happen
|
||||
return (
|
||||
<HacknetServerElem
|
||||
player={props.player}
|
||||
key={hserver.hostname}
|
||||
node={hserver}
|
||||
purchaseMultiplier={purchaseMultiplier}
|
||||
@@ -106,21 +101,15 @@ export function HacknetRoot(props: IProps): React.ReactElement {
|
||||
} else {
|
||||
if (typeof node === "string") throw new Error("node was ip string"); // should never happen
|
||||
return (
|
||||
<HacknetNodeElem
|
||||
player={props.player}
|
||||
key={node.name}
|
||||
node={node}
|
||||
purchaseMultiplier={purchaseMultiplier}
|
||||
rerender={rerender}
|
||||
/>
|
||||
<HacknetNodeElem key={node.name} node={node} purchaseMultiplier={purchaseMultiplier} rerender={rerender} />
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
return (
|
||||
<>
|
||||
<Typography variant="h4">Hacknet {hasHacknetServers(props.player) ? "Servers" : "Nodes"}</Typography>
|
||||
<GeneralInfo hasHacknetServers={hasHacknetServers(props.player)} />
|
||||
<Typography variant="h4">Hacknet {hasHacknetServers() ? "Servers" : "Nodes"}</Typography>
|
||||
<GeneralInfo hasHacknetServers={hasHacknetServers()} />
|
||||
|
||||
<PurchaseButton cost={purchaseCost} multiplier={purchaseMultiplier} onClick={handlePurchaseButtonClick} />
|
||||
|
||||
@@ -128,14 +117,14 @@ export function HacknetRoot(props: IProps): React.ReactElement {
|
||||
|
||||
<Grid container spacing={2}>
|
||||
<Grid item xs={6}>
|
||||
<PlayerInfo totalProduction={totalProduction} player={props.player} />
|
||||
<PlayerInfo totalProduction={totalProduction} />
|
||||
</Grid>
|
||||
<Grid item xs={6}>
|
||||
<MultiplierButtons onClicks={purchaseMultiplierOnClicks} purchaseMultiplier={purchaseMultiplier} />
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
{hasHacknetServers(props.player) && <Button onClick={() => setOpen(true)}>Spend Hashes on Upgrades</Button>}
|
||||
{hasHacknetServers() && <Button onClick={() => setOpen(true)}>Spend Hashes on Upgrades</Button>}
|
||||
|
||||
<Box sx={{ display: "grid", width: "fit-content", gridTemplateColumns: "repeat(3, 1fr)" }}>{nodes}</Box>
|
||||
<HashUpgradeModal open={open} onClose={() => setOpen(false)} />
|
||||
|
||||
Reference in New Issue
Block a user