Files
bitburner-src/src/Gang/ui/RecruitButton.tsx
T
missymae#2783 8d3f2bd750 GANG: Updates to Docs, UI, API (#773)
API Changes:
Adds ns.gang.getRecruitsAvailable: Gets the number of additional gang members that can currently be recruited
Adds ns.gang.respectForNextRecruit: Gets the respect threshold for recruiting the next gang member
Adds ns.gang.renameMember: Renames a gang member

Plus many doc and ui improvements
2023-09-05 18:07:19 -04:00

45 lines
1.5 KiB
TypeScript

import React, { useState } from "react";
import { RecruitModal } from "./RecruitModal";
import { formatRespect } from "../../ui/formatNumber";
import { useGang } from "./Context";
import Typography from "@mui/material/Typography";
import Button from "@mui/material/Button";
import Box from "@mui/material/Box";
interface IProps {
onRecruit: () => void;
}
/** React Component for the recruitment button and text on the gang main page. */
export function RecruitButton(props: IProps): React.ReactElement {
const gang = useGang();
const [open, setOpen] = useState(false);
const recruitsAvailable = gang.getRecruitsAvailable();
if (!gang.canRecruitMember()) {
const respectNeeded = gang.respectForNextRecruit();
return (
<Box display="flex" alignItems="center" sx={{ mx: 1 }}>
<Button disabled>Recruit Gang Member</Button>
{respectNeeded === Infinity ? (
<Typography sx={{ ml: 1 }}>Maximum gang members already recruited</Typography>
) : (
<Typography sx={{ ml: 1 }}>{formatRespect(respectNeeded)} respect needed to recruit next member</Typography>
)}
</Box>
);
}
return (
<>
<Box display="flex" alignItems="center" sx={{ mx: 1 }}>
<Button onClick={() => setOpen(true)}>Recruit Gang Member</Button>
<Typography sx={{ ml: 1 }}>
Can recruit {recruitsAvailable} more gang member{recruitsAvailable === 1 ? "" : "s"}
</Typography>
</Box>
<RecruitModal open={open} onClose={() => setOpen(false)} onRecruit={props.onRecruit} />
</>
);
}