diff --git a/src/DevMenu/ui/SourceFilesDev.tsx b/src/DevMenu/ui/SourceFilesDev.tsx index 6fad286b2..1104cabc6 100644 --- a/src/DevMenu/ui/SourceFilesDev.tsx +++ b/src/DevMenu/ui/SourceFilesDev.tsx @@ -8,10 +8,11 @@ import { Player } from "@player"; import { Sleeve } from "../../PersonObjects/Sleeve/Sleeve"; import { ButtonWithTooltip } from "../../ui/Components/ButtonWithTooltip"; import { MaxSleevesFromCovenant } from "../../PersonObjects/Sleeve/SleeveCovenantPurchases"; +import { validBitNodes } from "../../BitNode/Constants"; +import { DeleteServer, GetAllServers } from "../../Server/AllServers"; +import { HacknetServer } from "../../Hacknet/HacknetServer"; import { AutoExpandAccordion } from "../../ui/AutoExpand/AutoExpandAccordion"; -// Update as additional BitNodes get implemented -const validSFN = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]; const useStyles = makeStyles()({ group: { display: "inline-flex", @@ -29,7 +30,19 @@ export function SourceFilesDev({ parentRerender }: { parentRerender: () => void const setSF = useCallback( (sfN: number, sfLvl: number) => () => { if (sfN === 9) { - Player.hacknetNodes = []; + if (sfLvl === 0) { + // Make sure that Player.hacknetNodes contains only HackNode and there is no hacknet server in "AllServers". + Player.hacknetNodes = Player.hacknetNodes.filter((node) => typeof node !== "string"); + for (const server of GetAllServers()) { + if (!(server instanceof HacknetServer)) { + continue; + } + DeleteServer(server.hostname); + } + } else { + // Make sure that Player.hacknetNodes contains only the hostnames of hacknet servers. + Player.hacknetNodes = Player.hacknetNodes.filter((node) => typeof node === "string"); + } } if (sfLvl === 0) { Player.sourceFiles.delete(sfN); @@ -50,7 +63,7 @@ export function SourceFilesDev({ parentRerender }: { parentRerender: () => void [parentRerender], ); - const setAllSF = useCallback((sfLvl: number) => () => validSFN.forEach((sfN) => setSF(sfN, sfLvl)()), [setSF]); + const setAllSF = useCallback((sfLvl: number) => () => validBitNodes.forEach((sfN) => setSF(sfN, sfLvl)()), [setSF]); const clearExploits = () => (Player.exploits = []); const addSleeve = useCallback(() => { @@ -132,7 +145,7 @@ export function SourceFilesDev({ parentRerender }: { parentRerender: () => void - {[undefined, ...validSFN].map((sfN) => buttonRow(sfN))} + {[undefined, ...validBitNodes].map((sfN) => buttonRow(sfN))} diff --git a/src/Hacknet/HacknetHelpers.tsx b/src/Hacknet/HacknetHelpers.tsx index d60e4a6ab..4f5438d5b 100644 --- a/src/Hacknet/HacknetHelpers.tsx +++ b/src/Hacknet/HacknetHelpers.tsx @@ -383,7 +383,7 @@ function processAllHacknetNodeEarnings(numCycles: number): number { let total = 0; for (let i = 0; i < Player.hacknetNodes.length; ++i) { const node = Player.hacknetNodes[i]; - if (typeof node === "string") throw new Error("player node should not be ip string"); + if (typeof node === "string") throw new Error("player node should not be hostname string"); node.updateMoneyGainRate(Player.mults.hacknet_node_money); total += processSingleHacknetNodeEarnings(numCycles, node); } @@ -405,12 +405,12 @@ function processAllHacknetServerEarnings(numCycles: number): number { let hashes = 0; for (let i = 0; i < Player.hacknetNodes.length; ++i) { - // hacknetNodes array only contains the IP addresses of the servers. + // hacknetNodes array only contains the hostnames of the servers. // Also, update the hash rate before processing - const ip = Player.hacknetNodes[i]; - if (ip instanceof HacknetNode) throw new Error(`player nodes should not be HacknetNode`); - const hserver = GetServer(ip); - if (!(hserver instanceof HacknetServer)) throw new Error(`player nodes should not be Server`); + const hostname = Player.hacknetNodes[i]; + if (hostname instanceof HacknetNode) throw new Error(`player nodes should not be HacknetNode`); + const hserver = GetServer(hostname); + if (!(hserver instanceof HacknetServer)) throw new Error(`player nodes must be HacknetServer`); hserver.updateHashRate(Player.mults.hacknet_node_money); const h = hserver.process(numCycles); hashes += h; @@ -449,9 +449,9 @@ export function updateHashManagerCapacity(): void { Player.hashManager.updateCapacity(0); return; } - const ip = nodes[i]; - if (ip instanceof HacknetNode) throw new Error(`player nodes should be string but isn't`); - const h = GetServer(ip); + const hostname = nodes[i]; + if (hostname instanceof HacknetNode) throw new Error(`player nodes should not be HacknetNode`); + const h = GetServer(hostname); if (!(h instanceof HacknetServer)) { Player.hashManager.updateCapacity(0); return; diff --git a/src/Server/AllServers.ts b/src/Server/AllServers.ts index c44bf594b..0ccd5c7a5 100644 --- a/src/Server/AllServers.ts +++ b/src/Server/AllServers.ts @@ -111,9 +111,9 @@ export function createUniqueRandomIp(): IPAddress { // Safely add a Server to the AllServers map export function AddToAllServers(server: Server | HacknetServer): void { if (GetServer(server.hostname)) { - console.warn(`Hostname of the server thats being added: ${server.hostname}`); - console.warn(`The server that already has this IP is: ${AllServers[server.hostname].hostname}`); - throw new Error("Error: Trying to add a server with an existing IP"); + console.warn(`The hostname of the server that's being added is: ${server.hostname}`); + console.warn(`The server that already has this hostname is: ${AllServers[server.hostname].hostname}`); + throw new Error(`Error: Trying to add a server with an existing hostname. Hostname: ${server.hostname}.`); } AllServers[server.hostname] = server;