bitburner-src/src/Bladeburner/ui/ActionLevel.tsx

71 lines
2.2 KiB
TypeScript
Raw Normal View History

2021-09-27 23:09:48 +02:00
import React from "react";
import { Action } from "../Action";
import { Bladeburner } from "../Bladeburner";
2021-09-27 23:09:48 +02:00
import { BladeburnerConstants } from "../data/Constants";
import Typography from "@mui/material/Typography";
import Tooltip from "@mui/material/Tooltip";
import Box from "@mui/material/Box";
import IconButton from "@mui/material/IconButton";
import ArrowDropUpIcon from "@mui/icons-material/ArrowDropUp";
import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown";
interface IProps {
action: Action;
2021-09-27 23:09:48 +02:00
isActive: boolean;
bladeburner: Bladeburner;
2021-09-27 23:09:48 +02:00
rerender: () => void;
}
export function ActionLevel({ action, isActive, bladeburner, rerender }: IProps): React.ReactElement {
const canIncrease = action.level < action.maxLevel;
const canDecrease = action.level > 1;
function increaseLevel(): void {
if (!canIncrease) return;
++action.level;
2022-09-06 15:07:12 +02:00
if (isActive) bladeburner.startAction(bladeburner.action);
2021-09-27 23:09:48 +02:00
rerender();
}
function decreaseLevel(): void {
if (!canDecrease) return;
--action.level;
2022-09-06 15:07:12 +02:00
if (isActive) bladeburner.startAction(bladeburner.action);
2021-09-27 23:09:48 +02:00
rerender();
}
return (
<Box display="flex" flexDirection="row" alignItems="center">
<Box display="flex">
<Tooltip
title={
<Typography>
{action.getSuccessesNeededForNextLevel(BladeburnerConstants.ContractSuccessesPerLevel)} successes needed
for next level
</Typography>
}
>
<Typography>
Level: {action.level} / {action.maxLevel}
</Typography>
</Tooltip>
</Box>
2021-09-29 07:49:22 +02:00
<Tooltip title={isActive ? <Typography>WARNING: changing the level will restart the Operation</Typography> : ""}>
2021-10-14 23:35:22 +02:00
<span>
<IconButton disabled={!canIncrease} onClick={increaseLevel}>
<ArrowDropUpIcon />
</IconButton>
</span>
2021-09-27 23:09:48 +02:00
</Tooltip>
2021-09-29 07:49:22 +02:00
<Tooltip title={isActive ? <Typography>WARNING: changing the level will restart the Operation</Typography> : ""}>
2021-10-14 23:35:22 +02:00
<span>
<IconButton disabled={!canDecrease} onClick={decreaseLevel}>
<ArrowDropDownIcon />
</IconButton>
</span>
2021-09-27 23:09:48 +02:00
</Tooltip>
</Box>
);
}