This commit is contained in:
Snarling
2022-09-06 09:07:12 -04:00
parent cc2246213f
commit 83d357e758
203 changed files with 2263 additions and 3018 deletions

View File

@@ -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>