DEVMENU: Reset hacknet server list properly when setting level of SF9 (#2177)

This commit is contained in:
catloversg
2025-07-12 02:57:38 +07:00
committed by GitHub
parent f182030385
commit 073dd43d94
3 changed files with 30 additions and 17 deletions

View File

@@ -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
<Button onClick={clearExploits}>Clear</Button>
</td>
</tr>
{[undefined, ...validSFN].map((sfN) => buttonRow(sfN))}
{[undefined, ...validBitNodes].map((sfN) => buttonRow(sfN))}
</tbody>
</table>
</AccordionDetails>

View File

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

View File

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