import React from "react"; import Accordion from "@material-ui/core/Accordion"; import AccordionSummary from "@material-ui/core/AccordionSummary"; import AccordionDetails from "@material-ui/core/AccordionDetails"; import ExpandMoreIcon from "@material-ui/icons/ExpandMore"; import Button from "@material-ui/core/Button"; import { PlayerOwnedSourceFile } from "../../SourceFile/PlayerOwnedSourceFile"; import { IPlayer } from "../../PersonObjects/IPlayer"; import ButtonGroup from "@material-ui/core/ButtonGroup"; // Update as additional BitNodes get implemented const validSFN = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; interface IProps { player: IPlayer; } export function SourceFiles(props: IProps): React.ReactElement { function setSF(sfN: number, sfLvl: number) { return function () { if (sfLvl === 0) { props.player.sourceFiles = props.player.sourceFiles.filter((sf) => sf.n !== sfN); return; } if (!props.player.sourceFiles.some((sf) => sf.n === sfN)) { props.player.sourceFiles.push(new PlayerOwnedSourceFile(sfN, sfLvl)); return; } for (let i = 0; i < props.player.sourceFiles.length; i++) { if (props.player.sourceFiles[i].n === sfN) { props.player.sourceFiles[i].lvl = sfLvl; } } }; } function setAllSF(sfLvl: number) { return () => { for (let i = 0; i < validSFN.length; i++) { setSF(validSFN[i], sfLvl)(); } }; } function clearExploits(): void { props.player.exploits = []; } return ( }>

Source-Files

{validSFN.map((i) => ( ))}
Exploits:
All:
SF-{i}:
); }