mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-10 09:43:54 +01:00
Update after merge
This commit is contained in:
parent
7347aac225
commit
ec53a80551
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
|
|
||||||
import { getNextNeurofluxLevel, hasAugmentationPrereqs, purchaseAugmentation } from "../../Faction/FactionHelpers";
|
import { hasAugmentationPrereqs, purchaseAugmentation } from "../../Faction/FactionHelpers";
|
||||||
import { PurchaseAugmentationModal } from "./PurchaseAugmentationModal";
|
import { PurchaseAugmentationModal } from "./PurchaseAugmentationModal";
|
||||||
|
|
||||||
import { Augmentations } from "../Augmentations";
|
import { Augmentations } from "../Augmentations";
|
||||||
@ -20,6 +20,7 @@ import { CheckBox, CheckBoxOutlineBlank, Verified, Info, Report, CheckCircle } f
|
|||||||
import { Augmentation as AugFormat } from "../../ui/React/Augmentation";
|
import { Augmentation as AugFormat } from "../../ui/React/Augmentation";
|
||||||
import { Paper, Button, Typography, Tooltip, Box, TableRow, Container, List, ListItem } from "@mui/material";
|
import { Paper, Button, Typography, Tooltip, Box, TableRow, Container, List, ListItem } from "@mui/material";
|
||||||
import { TableCell } from "../../ui/React/Table";
|
import { TableCell } from "../../ui/React/Table";
|
||||||
|
import { getNextNeuroFluxLevel } from "../../Augmentation/AugmentationHelpers";
|
||||||
import { Augmentation } from "../Augmentation";
|
import { Augmentation } from "../Augmentation";
|
||||||
|
|
||||||
// interface IReqProps {
|
// interface IReqProps {
|
||||||
@ -233,7 +234,7 @@ export function PurchaseableAugmentation(props: IPurchaseableAugProps): React.Re
|
|||||||
// Determine button txt
|
// Determine button txt
|
||||||
let btnTxt = aug.name;
|
let btnTxt = aug.name;
|
||||||
if (aug.name === AugmentationNames.NeuroFluxGovernor) {
|
if (aug.name === AugmentationNames.NeuroFluxGovernor) {
|
||||||
btnTxt += ` - Level ${getNextNeurofluxLevel()}`;
|
btnTxt += ` - Level ${getNextNeuroFluxLevel()}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
let tooltip = <></>;
|
let tooltip = <></>;
|
||||||
|
@ -1,170 +0,0 @@
|
|||||||
/**
|
|
||||||
* React component for displaying a single augmentation for purchase through
|
|
||||||
* the faction UI
|
|
||||||
*/
|
|
||||||
import React, { useState } from "react";
|
|
||||||
|
|
||||||
import { hasAugmentationPrereqs, purchaseAugmentation } from "../FactionHelpers";
|
|
||||||
import { PurchaseAugmentationModal } from "./PurchaseAugmentationModal";
|
|
||||||
|
|
||||||
import { Augmentations } from "../../Augmentation/Augmentations";
|
|
||||||
import { AugmentationNames } from "../../Augmentation/data/AugmentationNames";
|
|
||||||
import { Faction } from "../Faction";
|
|
||||||
import { IPlayer } from "../../PersonObjects/IPlayer";
|
|
||||||
import { Settings } from "../../Settings/Settings";
|
|
||||||
import { Money } from "../../ui/React/Money";
|
|
||||||
import { Reputation } from "../../ui/React/Reputation";
|
|
||||||
|
|
||||||
import { Augmentation as AugFormat } from "../../ui/React/Augmentation";
|
|
||||||
import Button from "@mui/material/Button";
|
|
||||||
import Typography from "@mui/material/Typography";
|
|
||||||
import Tooltip from "@mui/material/Tooltip";
|
|
||||||
import Box from "@mui/material/Box";
|
|
||||||
import { TableCell } from "../../ui/React/Table";
|
|
||||||
import TableRow from "@mui/material/TableRow";
|
|
||||||
import { getNextNeuroFluxLevel } from "../../Augmentation/AugmentationHelpers";
|
|
||||||
|
|
||||||
interface IReqProps {
|
|
||||||
augName: string;
|
|
||||||
p: IPlayer;
|
|
||||||
hasReq: boolean;
|
|
||||||
rep: number;
|
|
||||||
hasRep: boolean;
|
|
||||||
cost: number;
|
|
||||||
hasCost: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
function Requirements(props: IReqProps): React.ReactElement {
|
|
||||||
const aug = Augmentations[props.augName];
|
|
||||||
if (!props.hasReq) {
|
|
||||||
return (
|
|
||||||
<TableCell key={1} colSpan={2}>
|
|
||||||
<Typography color="error">
|
|
||||||
Requires{" "}
|
|
||||||
{aug.prereqs.map((aug, i) => (
|
|
||||||
<AugFormat key={i} name={aug} />
|
|
||||||
))}
|
|
||||||
</Typography>
|
|
||||||
</TableCell>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<React.Fragment key="f">
|
|
||||||
<TableCell key={1}>
|
|
||||||
<Typography>
|
|
||||||
<Money money={props.cost} player={props.p} />
|
|
||||||
</Typography>
|
|
||||||
</TableCell>
|
|
||||||
<TableCell key={2}>
|
|
||||||
<Typography color={props.hasRep ? "primary" : "error"}>
|
|
||||||
Requires <Reputation reputation={props.rep} /> faction reputation
|
|
||||||
</Typography>
|
|
||||||
</TableCell>
|
|
||||||
</React.Fragment>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IProps {
|
|
||||||
augName: string;
|
|
||||||
faction: Faction;
|
|
||||||
p: IPlayer;
|
|
||||||
rerender: () => void;
|
|
||||||
owned?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function PurchaseableAugmentation(props: IProps): React.ReactElement {
|
|
||||||
const [open, setOpen] = useState(false);
|
|
||||||
const aug = Augmentations[props.augName];
|
|
||||||
if (aug == null) throw new Error(`aug ${props.augName} does not exists`);
|
|
||||||
|
|
||||||
if (aug == null) {
|
|
||||||
console.error(
|
|
||||||
`Invalid Augmentation when trying to create PurchaseableAugmentation display element: ${props.augName}`,
|
|
||||||
);
|
|
||||||
return <></>;
|
|
||||||
}
|
|
||||||
|
|
||||||
const moneyCost = aug.baseCost;
|
|
||||||
const repCost = aug.baseRepRequirement;
|
|
||||||
const hasReq = hasAugmentationPrereqs(aug);
|
|
||||||
const hasRep = props.faction.playerReputation >= repCost;
|
|
||||||
const hasCost = aug.baseCost === 0 || props.p.money > aug.baseCost;
|
|
||||||
|
|
||||||
// Determine UI properties
|
|
||||||
const color: "error" | "primary" = !hasReq || !hasRep || !hasCost ? "error" : "primary";
|
|
||||||
|
|
||||||
// Determine button txt
|
|
||||||
let btnTxt = aug.name;
|
|
||||||
if (aug.name === AugmentationNames.NeuroFluxGovernor) {
|
|
||||||
btnTxt += ` - Level ${getNextNeuroFluxLevel()}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
let tooltip = <></>;
|
|
||||||
if (typeof aug.info === "string") {
|
|
||||||
tooltip = (
|
|
||||||
<>
|
|
||||||
<span>{aug.info}</span>
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
{aug.stats}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
} else
|
|
||||||
tooltip = (
|
|
||||||
<>
|
|
||||||
{aug.info}
|
|
||||||
<br />
|
|
||||||
<br />
|
|
||||||
{aug.stats}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
|
|
||||||
function handleClick(): void {
|
|
||||||
if (color === "error") return;
|
|
||||||
if (!Settings.SuppressBuyAugmentationConfirmation) {
|
|
||||||
setOpen(true);
|
|
||||||
} else {
|
|
||||||
purchaseAugmentation(aug, props.faction);
|
|
||||||
props.rerender();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
<TableRow>
|
|
||||||
{!props.owned && (
|
|
||||||
<TableCell key={0}>
|
|
||||||
<Button onClick={handleClick} color={color}>
|
|
||||||
Buy
|
|
||||||
</Button>
|
|
||||||
<PurchaseAugmentationModal
|
|
||||||
open={open}
|
|
||||||
onClose={() => setOpen(false)}
|
|
||||||
aug={aug}
|
|
||||||
faction={props.faction}
|
|
||||||
rerender={props.rerender}
|
|
||||||
/>
|
|
||||||
</TableCell>
|
|
||||||
)}
|
|
||||||
<TableCell key={1}>
|
|
||||||
<Box display="flex">
|
|
||||||
<Tooltip title={<Typography>{tooltip}</Typography>} placement="top">
|
|
||||||
<Typography>{btnTxt}</Typography>
|
|
||||||
</Tooltip>
|
|
||||||
</Box>
|
|
||||||
</TableCell>
|
|
||||||
{!props.owned && (
|
|
||||||
<Requirements
|
|
||||||
key={2}
|
|
||||||
augName={props.augName}
|
|
||||||
p={props.p}
|
|
||||||
cost={moneyCost}
|
|
||||||
rep={repCost}
|
|
||||||
hasReq={hasReq}
|
|
||||||
hasRep={hasRep}
|
|
||||||
hasCost={hasCost}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
</TableRow>
|
|
||||||
);
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user