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

85 lines
2.2 KiB
TypeScript
Raw Normal View History

import { Clear, ExpandMore, Reply, ReplyAll } from "@mui/icons-material";
import {
Accordion,
AccordionDetails,
AccordionSummary,
Button,
IconButton,
MenuItem,
Select,
SelectChangeEvent,
2022-04-10 22:57:34 +02:00
Typography,
} from "@mui/material";
2021-09-14 02:37:35 +02:00
import React, { useState } from "react";
import { AugmentationNames } from "../../Augmentation/data/AugmentationNames";
import { IPlayer } from "../../PersonObjects/IPlayer";
2021-09-14 02:37:35 +02:00
interface IProps {
player: IPlayer;
}
export function Augmentations(props: IProps): React.ReactElement {
const [augmentation, setAugmentation] = useState("Augmented Targeting I");
2021-09-17 01:23:03 +02:00
function setAugmentationDropdown(event: SelectChangeEvent<string>): void {
setAugmentation(event.target.value);
2021-09-14 02:37:35 +02:00
}
function queueAug(): void {
props.player.queueAugmentation(augmentation);
}
function queueAllAugs(): void {
2021-10-28 05:19:19 +02:00
for (const augName of Object.values(AugmentationNames)) {
2021-09-14 02:37:35 +02:00
props.player.queueAugmentation(augName);
}
}
2021-09-16 20:43:39 +02:00
function clearAugs(): void {
props.player.augmentations = [];
}
function clearQueuedAugs(): void {
props.player.queuedAugmentations = [];
}
2021-09-14 02:37:35 +02:00
return (
2021-09-18 03:30:02 +02:00
<Accordion TransitionProps={{ unmountOnExit: true }}>
<AccordionSummary expandIcon={<ExpandMore />}>
2021-10-01 22:22:33 +02:00
<Typography>Augmentations</Typography>
2021-09-14 02:37:35 +02:00
</AccordionSummary>
<AccordionDetails>
<Select
onChange={setAugmentationDropdown}
value={augmentation}
startAdornment={
<>
<IconButton onClick={queueAllAugs} size="large">
<ReplyAll />
</IconButton>
<IconButton onClick={queueAug} size="large">
<Reply />
</IconButton>
</>
}
endAdornment={
<>
<IconButton onClick={clearAugs} size="large">
<Clear />
</IconButton>
</>
}
>
{Object.values(AugmentationNames).map((aug) => (
<MenuItem key={aug} value={aug}>
{aug}
</MenuItem>
))}
</Select>
<Button sx={{ display: "block" }} onClick={clearQueuedAugs}>
Clear Queued Augmentations
</Button>
2021-09-14 02:37:35 +02:00
</AccordionDetails>
</Accordion>
);
}