mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2026-04-18 23:38:35 +02:00
commit1
This commit is contained in:
@@ -4,7 +4,8 @@ import { find } from "lodash";
|
||||
import { Box, Typography, Button, Container, Paper } from "@mui/material";
|
||||
import { Check, Lock, Create } from "@mui/icons-material";
|
||||
|
||||
import { use } from "../../ui/Context";
|
||||
import { Router } from "../../ui/GameRoot";
|
||||
import { Player } from "../../Player";
|
||||
import { Settings } from "../../Settings/Settings";
|
||||
|
||||
import { Programs } from "../Programs";
|
||||
@@ -13,8 +14,6 @@ import { CreateProgramWork } from "../../Work/CreateProgramWork";
|
||||
export const ProgramsSeen: string[] = [];
|
||||
|
||||
export function ProgramsRoot(): React.ReactElement {
|
||||
const player = use.Player();
|
||||
const router = use.Router();
|
||||
const setRerender = useState(false)[1];
|
||||
function rerender(): void {
|
||||
setRerender((old) => !old);
|
||||
@@ -25,13 +24,13 @@ export function ProgramsRoot(): React.ReactElement {
|
||||
const create = prog.create;
|
||||
if (create === null) return false;
|
||||
if (prog.name === "b1t_flum3.exe") {
|
||||
return create.req(player);
|
||||
return create.req();
|
||||
}
|
||||
return true;
|
||||
})
|
||||
.sort((a, b) => {
|
||||
if (player.hasProgram(a.name)) return 1;
|
||||
if (player.hasProgram(b.name)) return -1;
|
||||
if (Player.hasProgram(a.name)) return 1;
|
||||
if (Player.hasProgram(b.name)) return -1;
|
||||
return (a.create?.level ?? 0) - (b.create?.level ?? 0);
|
||||
});
|
||||
|
||||
@@ -48,11 +47,11 @@ export function ProgramsRoot(): React.ReactElement {
|
||||
}, []);
|
||||
|
||||
const getHackingLevelRemaining = (lvl: number): number => {
|
||||
return Math.ceil(Math.max(lvl - (player.skills.hacking + player.skills.intelligence / 2), 0));
|
||||
return Math.ceil(Math.max(lvl - (Player.skills.hacking + Player.skills.intelligence / 2), 0));
|
||||
};
|
||||
|
||||
const getProgCompletion = (name: string): number => {
|
||||
const programFile = find(player.getHomeComputer().programs, (p) => {
|
||||
const programFile = find(Player.getHomeComputer().programs, (p) => {
|
||||
return p.startsWith(name) && p.endsWith("%-INC");
|
||||
});
|
||||
if (!programFile) return -1;
|
||||
@@ -84,31 +83,31 @@ export function ProgramsRoot(): React.ReactElement {
|
||||
return (
|
||||
<Box
|
||||
component={Paper}
|
||||
sx={{ p: 1, opacity: player.hasProgram(program.name) ? 0.75 : 1 }}
|
||||
sx={{ p: 1, opacity: Player.hasProgram(program.name) ? 0.75 : 1 }}
|
||||
key={program.name}
|
||||
>
|
||||
<>
|
||||
<Typography variant="h6" sx={{ display: "flex", alignItems: "center", flexWrap: "wrap" }}>
|
||||
{(player.hasProgram(program.name) && <Check sx={{ mr: 1 }} />) ||
|
||||
(create.req(player) && <Create sx={{ mr: 1 }} />) || <Lock sx={{ mr: 1 }} />}
|
||||
{(Player.hasProgram(program.name) && <Check sx={{ mr: 1 }} />) ||
|
||||
(create.req() && <Create sx={{ mr: 1 }} />) || <Lock sx={{ mr: 1 }} />}
|
||||
{program.name}
|
||||
</Typography>
|
||||
{!player.hasProgram(program.name) && create.req(player) && (
|
||||
{!Player.hasProgram(program.name) && create.req() && (
|
||||
<Button
|
||||
sx={{ my: 1, width: "100%" }}
|
||||
onClick={(event) => {
|
||||
if (!event.isTrusted) return;
|
||||
player.startWork(
|
||||
new CreateProgramWork({ player: player, singularity: false, programName: program.name }),
|
||||
Player.startWork(
|
||||
new CreateProgramWork({singularity: false, programName: program.name }),
|
||||
);
|
||||
player.startFocusing();
|
||||
router.toWork();
|
||||
Player.startFocusing();
|
||||
Router.toWork();
|
||||
}}
|
||||
>
|
||||
Create program
|
||||
</Button>
|
||||
)}
|
||||
{player.hasProgram(program.name) || getHackingLevelRemaining(create.level) === 0 || (
|
||||
{Player.hasProgram(program.name) || getHackingLevelRemaining(create.level) === 0 || (
|
||||
<Typography color={Settings.theme.hack}>
|
||||
<b>Unlocks in:</b> {getHackingLevelRemaining(create.level)} hacking levels
|
||||
</Typography>
|
||||
|
||||
Reference in New Issue
Block a user