mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-29 20:37:05 +02:00
DEVMENU: Easier to add/remove sleeves (#908)
This commit is contained in:
@@ -23,11 +23,10 @@ import { Page } from "../../ui/Router";
|
||||
import { Bladeburner } from "../../Bladeburner/Bladeburner";
|
||||
import { GangConstants } from "../../Gang/data/Constants";
|
||||
import { checkForMessagesToSend } from "../../Message/MessageHelpers";
|
||||
import { ThemeEvents } from "../../Themes/ui/Theme";
|
||||
import { getEnumHelper } from "../../utils/EnumHelper";
|
||||
import { formatRam } from "../../ui/formatNumber";
|
||||
|
||||
export function General(): React.ReactElement {
|
||||
export function General({ parentRerender }: { parentRerender: () => void }): React.ReactElement {
|
||||
const rerender = useRerender(400);
|
||||
const [error, setError] = useState(false);
|
||||
const [corporationName, setCorporationName] = useState("");
|
||||
@@ -64,38 +63,32 @@ export function General(): React.ReactElement {
|
||||
// Corp functions
|
||||
const createCorporation = () => {
|
||||
Player.startCorporation(corporationName, false);
|
||||
// Rerender so the corp menu option will show up immediately on the devmenu page selection
|
||||
ThemeEvents.emit();
|
||||
parentRerender();
|
||||
};
|
||||
const destroyCorporation = () => {
|
||||
Player.corporation = null;
|
||||
// Rerender so the corp menu option will be removed immediately on the devmenu page selection
|
||||
ThemeEvents.emit();
|
||||
parentRerender();
|
||||
};
|
||||
|
||||
// Blade functions
|
||||
const joinBladeburner = () => {
|
||||
Player.bladeburner = new Bladeburner();
|
||||
// Rerender so the blade menu option will show up immediately on the devmenu page selection
|
||||
ThemeEvents.emit();
|
||||
parentRerender();
|
||||
};
|
||||
const leaveBladeburner = () => {
|
||||
Player.bladeburner = null;
|
||||
// Rerender so the blade menu option will be removed immediately on the devmenu page selection
|
||||
ThemeEvents.emit();
|
||||
parentRerender();
|
||||
};
|
||||
|
||||
// Gang functions
|
||||
const startGang = () => {
|
||||
const isHacking = gangFaction === FactionName.NiteSec || gangFaction === FactionName.TheBlackHand;
|
||||
Player.startGang(gangFaction, isHacking);
|
||||
// Rerender so the gang menu option will show up immediately on the devmenu page selection
|
||||
ThemeEvents.emit();
|
||||
parentRerender();
|
||||
};
|
||||
const stopGang = () => {
|
||||
Player.gang = null;
|
||||
// Rerender so the gang menu option will be removed immediately on the devmenu page selection
|
||||
ThemeEvents.emit();
|
||||
parentRerender();
|
||||
};
|
||||
const setGangFactionDropdown = (event: SelectChangeEvent) => {
|
||||
// Todo: Make this a more specific check when a GangName enumlike is added
|
||||
|
||||
@@ -71,6 +71,11 @@ export function SleevesDev(): React.ReactElement {
|
||||
<Button onClick={sleeveSyncClearAll}>Clear all</Button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<Typography>Total:</Typography>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colSpan={3}>
|
||||
<Adjuster
|
||||
|
||||
@@ -5,7 +5,9 @@ import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
|
||||
import { makeStyles } from "@mui/styles";
|
||||
|
||||
import { Player } from "@player";
|
||||
import { useRerender } from "../../ui/React/hooks";
|
||||
import { Sleeve } from "../../PersonObjects/Sleeve/Sleeve";
|
||||
import { ButtonWithTooltip } from "../../ui/Components/ButtonWithTooltip";
|
||||
import { MaxSleevesFromCovenant } from "../../PersonObjects/Sleeve/SleeveCovenantPurchases";
|
||||
|
||||
// Update as additional BitNodes get implemented
|
||||
const validSFN = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];
|
||||
@@ -16,11 +18,11 @@ const useStyles = makeStyles({
|
||||
},
|
||||
extraInfo: {
|
||||
marginLeft: "0.5em",
|
||||
marginRight: "0.5em",
|
||||
},
|
||||
});
|
||||
|
||||
export function SourceFilesDev(): React.ReactElement {
|
||||
const rerender = useRerender();
|
||||
export function SourceFilesDev({ parentRerender }: { parentRerender: () => void }): React.ReactElement {
|
||||
const classes = useStyles();
|
||||
|
||||
const setSF = useCallback(
|
||||
@@ -30,18 +32,34 @@ export function SourceFilesDev(): React.ReactElement {
|
||||
}
|
||||
if (sfLvl === 0) {
|
||||
Player.sourceFiles.delete(sfN);
|
||||
rerender();
|
||||
if (sfN === 10) Sleeve.recalculateNumOwned();
|
||||
parentRerender();
|
||||
return;
|
||||
}
|
||||
Player.sourceFiles.set(sfN, sfLvl);
|
||||
rerender();
|
||||
if (sfN === 10) Sleeve.recalculateNumOwned();
|
||||
parentRerender();
|
||||
},
|
||||
[rerender],
|
||||
[parentRerender],
|
||||
);
|
||||
|
||||
const setAllSF = useCallback((sfLvl: number) => () => validSFN.forEach((sfN) => setSF(sfN, sfLvl)()), [setSF]);
|
||||
const clearExploits = () => (Player.exploits = []);
|
||||
|
||||
const addSleeve = useCallback(() => {
|
||||
if (Player.sleevesFromCovenant >= 10) return;
|
||||
Player.sleevesFromCovenant += 1;
|
||||
Sleeve.recalculateNumOwned();
|
||||
parentRerender();
|
||||
}, [parentRerender]);
|
||||
|
||||
const removeSleeve = useCallback(() => {
|
||||
if (Player.sleevesFromCovenant <= 0) return;
|
||||
Player.sleevesFromCovenant -= 1;
|
||||
Sleeve.recalculateNumOwned();
|
||||
parentRerender();
|
||||
}, [parentRerender]);
|
||||
|
||||
const devLvls = [0, 1, 2, 3];
|
||||
|
||||
const buttonRow = (sfN?: number) => {
|
||||
@@ -66,6 +84,23 @@ export function SourceFilesDev(): React.ReactElement {
|
||||
</Button>
|
||||
))}
|
||||
{sfN && <Typography className={classes.extraInfo}>{`Level: ${level}`}</Typography>}
|
||||
{sfN === 10 && (
|
||||
<>
|
||||
<ButtonWithTooltip
|
||||
disabledTooltip={Player.sleevesFromCovenant <= 0 ? "Already at minimum" : ""}
|
||||
onClick={removeSleeve}
|
||||
>
|
||||
-1 sleeve
|
||||
</ButtonWithTooltip>
|
||||
<ButtonWithTooltip
|
||||
disabledTooltip={Player.sleevesFromCovenant >= MaxSleevesFromCovenant ? "Already at maximum" : ""}
|
||||
onClick={addSleeve}
|
||||
>
|
||||
+1 sleeve
|
||||
</ButtonWithTooltip>
|
||||
<Typography className={classes.extraInfo}>Extra sleeves: {Player.sleevesFromCovenant}</Typography>
|
||||
</>
|
||||
)}
|
||||
</ButtonGroup>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
Reference in New Issue
Block a user