bitburner-src/src/Locations/ui/CoresButton.tsx

43 lines
1.2 KiB
TypeScript
Raw Normal View History

2021-09-09 09:17:01 +02:00
import React from "react";
2021-09-25 21:34:12 +02:00
import Button from "@mui/material/Button";
import Tooltip from "@mui/material/Tooltip";
2021-09-05 01:09:30 +02:00
import { IPlayer } from "../../PersonObjects/IPlayer";
2021-09-05 01:09:30 +02:00
import { Money } from "../../ui/React/Money";
import { MathComponent } from "mathjax-react";
type IProps = {
2021-09-05 01:09:30 +02:00
p: IPlayer;
2021-09-07 23:26:49 +02:00
rerender: () => void;
2021-09-05 01:09:30 +02:00
};
export function CoresButton(props: IProps): React.ReactElement {
2021-09-05 01:09:30 +02:00
const homeComputer = props.p.getHomeComputer();
const maxCores = homeComputer.cpuCores >= 8;
if (maxCores) {
2021-09-25 21:34:12 +02:00
return <Button>Upgrade 'home' cores - MAX</Button>;
2021-09-05 01:09:30 +02:00
}
2021-09-05 01:09:30 +02:00
const cost = 1e9 * Math.pow(7.5, homeComputer.cpuCores);
2021-09-05 01:09:30 +02:00
function buy(): void {
if (maxCores) return;
if (!props.p.canAfford(cost)) return;
props.p.loseMoney(cost);
homeComputer.cpuCores++;
2021-09-07 23:26:49 +02:00
props.rerender();
2021-09-05 01:09:30 +02:00
}
2021-09-05 01:09:30 +02:00
return (
2021-09-25 21:34:12 +02:00
<Tooltip title={<MathComponent tex={String.raw`\large{cost = 10^9 \times 7.5 ^{\text{cores}}}`} />}>
2021-10-01 02:06:40 +02:00
<span>
<Button disabled={!props.p.canAfford(cost)} onClick={buy}>
Upgrade 'home' cores ({homeComputer.cpuCores} -&gt; {homeComputer.cpuCores + 1}) -&nbsp;
<Money money={cost} player={props.p} />
</Button>
</span>
2021-09-25 21:34:12 +02:00
</Tooltip>
2021-09-05 01:09:30 +02:00
);
}