import React, { useState } from "react"; import { SourceFileFlags } from "../../SourceFile/SourceFileFlags"; import { IRouter } from "../../ui/Router"; import { BitNodes } from "../BitNode"; import { enterBitNode, setRedPillFlag } from "../../RedPill"; import { PortalModal } from "./PortalModal"; import { CinematicText } from "../../ui/React/CinematicText"; import { use } from "../../ui/Context"; import makeStyles from "@mui/styles/makeStyles"; import createStyles from "@mui/styles/createStyles"; import Typography from "@mui/material/Typography"; import Tooltip from "@mui/material/Tooltip"; const useStyles = makeStyles(() => createStyles({ level0: { color: "red", "&:hover": { color: "#fff", }, }, level1: { color: "yellow", "&:hover": { color: "#fff", }, }, level2: { color: "#48d1cc", "&:hover": { color: "#fff", }, }, level3: { color: "blue", "&:hover": { color: "#fff", }, }, }), ); interface IPortalProps { n: number; level: number; destroyedBitNode: number; flume: boolean; enter: (router: IRouter, flume: boolean, destroyedBitNode: number, newBitNode: number) => void; } function BitNodePortal(props: IPortalProps): React.ReactElement { const [portalOpen, setPortalOpen] = useState(false); const classes = useStyles(); const bitNode = BitNodes[`BitNode${props.n}`]; if (bitNode == null) { return <>O; } let cssClass = classes.level0; if (props.n === 12 && props.level >= 2) { // Repeating BitNode cssClass = classes.level2; } else if (props.level === 1) { cssClass = classes.level1; } else if (props.level === 3) { cssClass = classes.level3; } if (props.level === 2) { cssClass = classes.level2; } return ( <> BitNode-{bitNode.number.toString()}: {bitNode.name}
{bitNode.desc} } > setPortalOpen(true)} className={cssClass}> O
setPortalOpen(false)} n={props.n} level={props.level} enter={props.enter} destroyedBitNode={props.destroyedBitNode} flume={props.flume} /> ); } interface IProps { flume: boolean; quick: boolean; enter: (router: IRouter, flume: boolean, destroyedBitNode: number, newBitNode: number) => void; } export function BitverseRoot(props: IProps): React.ReactElement { setRedPillFlag(true); const player = use.Player(); const enter = enterBitNode; const destroyed = player.bitNodeN; const [destroySequence, setDestroySequence] = useState(true && !props.quick); // Update NextSourceFileFlags const nextSourceFileFlags = SourceFileFlags.slice(); if (!props.flume) { if (nextSourceFileFlags[destroyed] < 3) ++nextSourceFileFlags[destroyed]; } if (destroySequence) { return ( setDestroySequence(false)} auto={true} /> ); } return ( // prettier-ignore <> O | O O | O O | O | | / __| \ | | O O | O | | O / | O | | O | O | | | | |_/ |/ | \_ \_| | | | | O | | | O | | O__/ | / \__ | | O | | | O | | | | | | | / /| O / \| | | | | | | O | | | \| | O / _/ | / O | |/ | | | O | | | |O / | | O / | O O | | \ O| | | | | | |/ \/ / __| | |/ \ | \ | |__ \ \/ \| | | \| O | |_/ |\| \ O \__| \_| | O |/ | | |_/ | | \| / | \_| | | \| / \| | / / \ |/ | | | / | | | | | | | | | | | | / / \ \ | | | \| | / / \ \ | |/ \ | / / | | \ \ | / \ \JUMP 3R | | | | | | R3 PMUJ/ / \|| | | | | | | | | ||/ \| \_ | | | | | | _/ |/ \ \| / \ / \ |/ / |/ | | \| | | | | | | | | \JUMP3R|JUMP|3R| |R3|PMUJ|R3PMUJ/



Many decades ago, a humanoid extraterrestial species which we call the Enders descended on the Earth...violently", "> Our species fought back, but it was futile. The Enders had technology far beyond our own...", "> Instead of killing every last one of us, the human race was enslaved...", "> We were shackled in a digital world, chained into a prison for our minds...", "> Using their advanced technology, the Enders created complex simulations of a virtual reality...", "> Simulations designed to keep us content...ignorant of the truth.", "> Simulations used to trap and suppress our consciousness, to keep us under control...", "> Why did they do this? Why didn't they just end our entire race? We don't know, not yet.", "> Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...", "> Only then can we begin to fight back...", "> By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...", "> But there is still a long way to go...", "> The technology the Enders used to enslave the human race wasn't just a single complex simulation...", "> There are tens if not hundreds of BitNodes out there...", "> Each with their own simulations of a reality...", "> Each creating their own universes...a universe of universes", "> And all of which must be destroyed...", "> .......................................", "> Welcome to the Bitverse...", "> ", "> (Enter a new BitNode using the image above)", ]} /> ); return <>; }